專利名稱:為分組處理確定時鐘信號的方法和系統(tǒng)的制作方法
本申請涉及以下同時待審查的申請“網(wǎng)絡(luò)協(xié)議引擎”,律師案卷號42.P14732;和“跟蹤亂序分組”,律師案卷號42.P14792。這些申請是與本申請同一天遞交的,并且署名相同的發(fā)明人。
附錄參考本申請包括微碼指令的附錄Appendix A。作者保留這一材料的適用版權(quán)。
背景技術(shù):
網(wǎng)絡(luò)使得計算機和其他電子設(shè)備能夠交換各種數(shù)據(jù),例如電子郵件消息、網(wǎng)頁、音頻數(shù)據(jù)、視頻數(shù)據(jù)等等。在通過網(wǎng)絡(luò)傳輸之前,數(shù)據(jù)一般被分配到一組分組(packet)中。接收方在收到這些分組后可以將數(shù)據(jù)重新組裝回其原始的形式。
除了被發(fā)送的數(shù)據(jù)(“有效載荷”)外,分組還包括“頭部(header)”信息。網(wǎng)絡(luò)協(xié)議可以定義存儲在頭部中的信息、分組的結(jié)構(gòu)以及過程應(yīng)當(dāng)如何處理分組。
不同的網(wǎng)絡(luò)協(xié)議處理網(wǎng)絡(luò)通信的不同方面。很多網(wǎng)絡(luò)通信模型將這些協(xié)議組織成不同的層。例如,傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)模型和開放軟件機構(gòu)(OSI)模型一類的模型定義了“物理層”,該層處理物理介質(zhì)上的比特級(bit-level)傳輸;“鏈路層”,該層處理在物理連接上提供可靠的數(shù)據(jù)通信的下層細節(jié);“網(wǎng)絡(luò)層”,例如因特網(wǎng)協(xié)議,該層可以處理在尋找穿過網(wǎng)絡(luò)連接源和目的地的路徑時所涉及的任務(wù);以及“傳輸層”,該層可以協(xié)調(diào)源設(shè)備和目的地設(shè)備之間的通信,同時使“應(yīng)用層”程序與網(wǎng)絡(luò)通信的復(fù)雜性隔離。
一種不同的網(wǎng)絡(luò)通信模型——異步傳輸模式(ATM)模型被用在ATM網(wǎng)絡(luò)中。ATM模型也定義了物理層,但是定義了ATM和ATM適配層(AAL)兩層來取代TCP/IP模型和OSI模型中的網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
一般而言,為了在網(wǎng)絡(luò)上發(fā)送數(shù)據(jù),針對不同的通信層要生成不同的頭部。例如,在TCP/IP中,傳輸層處理通過向應(yīng)用提供的一組數(shù)據(jù)添加傳輸層頭部而生成傳輸層分組(有時稱為“段”);網(wǎng)絡(luò)層處理接著通過向傳輸層分組添加網(wǎng)絡(luò)層頭部而生成網(wǎng)絡(luò)層分組(例如IP分組);鏈路層處理接著通過向網(wǎng)絡(luò)分組添加鏈路層頭部而生成鏈路層分組(也稱為“幀”);諸如此類。這一過程被稱為封裝(encapsulation)。打個比方,封裝的過程很像把信封一個又一個地套在一起。
在分組穿過網(wǎng)絡(luò)后,接收方可以拆封(de-encapsulate)分組(例如,“打開”信封)。例如,接收方的鏈路層處理可以驗證所接收的幀,并且將封入的網(wǎng)絡(luò)層分組傳遞給網(wǎng)絡(luò)層處理。網(wǎng)絡(luò)層處理可以使用網(wǎng)絡(luò)頭部來驗證分組的正確遞送,并且將封入的傳輸段傳遞給傳輸層處理。最終,傳輸層處理可以基于傳輸頭部來處理傳輸分組,并將得到的數(shù)據(jù)傳遞給應(yīng)用。
如上所述,發(fā)送方和接收方都要完成一定量的處理來處置分組。此外,網(wǎng)絡(luò)連接的速度持續(xù)快速增長。例如,每秒能夠傳送10吉比特(gigabit)甚至更快的網(wǎng)絡(luò)連接可能很快普及。網(wǎng)絡(luò)連接速度的增長向提供這些連接的設(shè)備提出了重要的設(shè)計問題。即,在這樣的速度下,設(shè)備可能很容易被巨大的網(wǎng)絡(luò)流量壓倒。
圖1是基于分組數(shù)據(jù)確定時鐘信號的系統(tǒng)的圖。
圖2是基于分組數(shù)據(jù)確定時鐘信號的過程的流程圖。
圖3是基于分組數(shù)據(jù)提供時鐘信號的機制的示意圖。
圖4是以基于分組數(shù)據(jù)的時鐘信號為特征的網(wǎng)絡(luò)協(xié)議引擎的圖。
圖5是網(wǎng)絡(luò)協(xié)議引擎的示意圖。
圖6是網(wǎng)絡(luò)協(xié)議引擎的處理器的示意圖。
圖7是用于編程網(wǎng)絡(luò)協(xié)議操作的指令集的圖表。
圖8是TCP(傳輸控制協(xié)議)狀態(tài)機的圖。
圖9-13圖示了跟蹤亂序分組的方案的操作。
圖14是跟蹤亂序分組的過程的流程圖。
圖15-16是跟蹤亂序分組的系統(tǒng)的示意圖,所述系統(tǒng)包括內(nèi)容可尋址存儲器。
具體實施例方式
網(wǎng)絡(luò)連接的速度正在不斷加快。例如,達到甚至超過每秒10吉比特的連接可能很快就會普及。為了跟上網(wǎng)絡(luò)速度的增長,正在設(shè)計的一些系統(tǒng)以不斷加快的時鐘速度(例如具有更高頻率的時鐘信號)來運行。時鐘信號在一定程度上決定了數(shù)字系統(tǒng)在一段時間內(nèi)可以做多少事情。不幸的是,以高頻時鐘信號運行系統(tǒng)組件既消耗了大量功率,又可能產(chǎn)生熱量,這些熱量可能潛在改變對溫度敏感的硅的行為。
圖1描繪了一種基于一種或多種分組104特性來調(diào)整提供給分組處理邏輯108的時鐘信號的方法。通過識別時鐘信號可被減慢(例如頻率降低)的時間段,該方法潛在地可能節(jié)省功率并且減少發(fā)熱。潛在地,使用這種方法可以減輕對昂貴的冷卻系統(tǒng)的需要,這些冷卻系統(tǒng)可能占據(jù)了寶貴的設(shè)備資源(real estate)。
更詳細地,圖1描繪了分組104通過網(wǎng)絡(luò)102連接而到達。一般而言,分組包括有效載荷和至少一個頭部,有效載荷就是想要發(fā)送的數(shù)據(jù),而頭部描述了不同的分組特性。根據(jù)正在使用的網(wǎng)絡(luò)協(xié)議,分組可以具有多種形式,例如IP分組、TCP段、ATM單元、HDLC(高層數(shù)據(jù)鏈路控制)幀、協(xié)議數(shù)據(jù)單位片段等等。
如圖所示,分組104由分組處理邏輯108來處理??梢允褂枚喾N技術(shù)來實現(xiàn)邏輯108,例如ASIC(專用集成電路)、FPGA(現(xiàn)場可編程門陣列)和/或數(shù)字邏輯門的組合等實現(xiàn)方式。分組處理邏輯108也可以由執(zhí)行分組處理指令的處理器來提供。
如圖所示,分組處理邏輯108從時鐘定標(biāo)器(scaler)106接收時鐘信號。時鐘定標(biāo)器106基于一個或多個接收分組104中的數(shù)據(jù)來確定時鐘信號的頻率。例如,時鐘定標(biāo)器106可以使用存儲在分組104的頭部中的多種信息,例如分組大小、有效載荷大小、服務(wù)質(zhì)量、優(yōu)先級等。此外,用總體特性取代單個分組的特性來調(diào)整時鐘頻率(例如,接收到的分組的平均大小)。
可以用多種硬件、固件和/或軟件來實現(xiàn)時鐘信號的確定。例如,可以寫入程序來實現(xiàn)圖2中所示的過程120。如圖所示,在接收到分組數(shù)據(jù)(122)后,過程120可以確定(124)分組處理邏輯的時鐘信號,并且生成(126)所確定的時鐘信號。例如,程序可以將時鐘信號標(biāo)識符存儲在由時鐘信號源訪問的寄存器中。
可替換地,如圖3所示,可以用硬件來實現(xiàn)定標(biāo)邏輯106。如圖所示,定標(biāo)系統(tǒng)106接收分組數(shù)據(jù),并且相應(yīng)地調(diào)整輸出時鐘信號的頻率。如圖所示,該方案使用分頻器130a-130b來提供一定范圍的可用頻率(例如,32x、16x、8x和4x)。不同頻率的信號被饋入多路復(fù)用器134,以基于一種或多種分組特性進行選擇。例如,選擇器134可以以一個幅度比較器為特征,該幅度比較器基于分組大小(或者其他分組特性)與預(yù)先計算出的不同閾值的比較結(jié)果而生成多路復(fù)用器132的選擇信號。舉例來說,系統(tǒng)128可以為多達64字節(jié)大小的分組選擇32x的頻率,為64和88字節(jié)之間大小的分組選擇16x的頻率,為88和126字節(jié)之間大小的分組選擇8x的頻率,為126和236字節(jié)之間大小的分組選擇4x的頻率。下面將更詳細地討論對這些示例性范圍的確定,但是頻率選擇的基礎(chǔ)和用來提供頻率的機制可能變化很大。雖然圖3僅僅圖示了四種不同的時鐘信號,但是其他實現(xiàn)方式可以將n個時鐘信號饋入到n:1多路復(fù)用器132中。此外,雖然圖3描繪了特定的硬件配置,但是多種其他設(shè)計也可以類似地調(diào)整輸出時鐘信號。
為了圖示上述頻率定標(biāo)計數(shù)的一種潛在應(yīng)用,圖4描繪了網(wǎng)絡(luò)協(xié)議“去負載(off-load)”引擎206的一個實施例。簡要地說,類似于數(shù)學(xué)協(xié)處理器可以幫助中央處理單元(CPU)進行不同的計算,去負載引擎206至少可以部分地減少由于執(zhí)行不同的網(wǎng)絡(luò)協(xié)議操作而經(jīng)常施加在主機上的網(wǎng)絡(luò)通信負荷。例如,引擎206可被配置來執(zhí)行用于傳輸層協(xié)議(例如TCP和用戶數(shù)據(jù)報協(xié)議(UDP))、網(wǎng)絡(luò)層協(xié)議(例如IP)和應(yīng)用層協(xié)議(例如套接口編程)的操作。類似地,在ATM網(wǎng)絡(luò)中,引擎206可被配置來提供ATM層或AAL層操作。引擎206還可以被配置來提供其他協(xié)議操作,例如與因特網(wǎng)控制消息協(xié)議(ICMP)有關(guān)的操作。
除了通過處置協(xié)議操作而節(jié)省主機處理器資源外,所示出的引擎206還可以提供“線速(wire-speed)”處理,甚至是針對非??斓倪B接,例如每秒10吉比特的連接和每秒40吉比特的連接。換言之,引擎206一般可以在另一個分組到達之前完成對一個分組的處理。通過跟上高速連接的腳步,引擎206可以潛在地避免或減小與排隊大量積壓分組相關(guān)聯(lián)的開銷和復(fù)雜度。
所示出的示例系統(tǒng)206包括接口208,用于接收在主機和網(wǎng)絡(luò)202之間傳播的數(shù)據(jù)。對于向外輸出的數(shù)據(jù),系統(tǒng)206的接口208接收來自主機的數(shù)據(jù)并生成分組,以例如經(jīng)由提供網(wǎng)絡(luò)連接(例如以太網(wǎng)連接或無線連接)的PHY和媒體訪問控制(MAC)設(shè)備(未示出)進行網(wǎng)絡(luò)傳輸。對于接收的分組(例如經(jīng)由PHY和MAC到達的分組),引擎206的接口208可以將分組處理的結(jié)果傳遞給主機。例如,系統(tǒng)206可以經(jīng)由小型計算機系統(tǒng)接口(SCSI)或外設(shè)部件互連(PCI)類總線(例如PCI-X總線系統(tǒng))與主機通信。
除了接口208之外,引擎206還包括實現(xiàn)協(xié)議操作的處理邏輯210。與接口208一樣,可以使用多種技術(shù)來設(shè)計邏輯210。例如,邏輯210可被設(shè)計為硬連線ASIC(專用集成電路)、FPGA(現(xiàn)場可編程門陣列)和/或數(shù)字邏輯門的另外組合。
如圖所示,數(shù)字邏輯210還可以利用處理器212(例如微控制器或微處理器)和存儲設(shè)備216(例如ROM(只讀存儲器)或RAM(隨機訪問存儲器))來實現(xiàn),所述存儲設(shè)備216用于存儲處理器212可以執(zhí)行來實現(xiàn)網(wǎng)絡(luò)協(xié)議操作的指令?;谥噶畹囊?06提供了高度的靈活性。例如,當(dāng)網(wǎng)絡(luò)協(xié)議經(jīng)受改變或者被替換時,可以通過替換指令而不是替換引擎206自身來更新引擎206。例如,主機可以通過例如在該主機啟動時,將指令從主板上的外部閃存或ROM載入到存儲設(shè)備216中而對引擎206進行更新。
由于對一個給定的分組可以執(zhí)行很多指令,因此為了以線速運行,提供給引擎206的時鐘可能是一個非常快的頻率,要遠大于跟上網(wǎng)絡(luò)連接所需的頻率。前面說過,這樣可能會導(dǎo)致多種問題,包括增大的功率需求和潛在的熱積聚。
作為施加給引擎206的組件的單一時鐘信號的替換方案,圖4描繪了一種“多頻率”方法,其中以不同的頻率為不同的引擎206組件提供時鐘。作為一個實施例,可以用對應(yīng)于網(wǎng)絡(luò)連接速度的頻率“1x”來為不同的接口108(208)組件提供時鐘。由于處理邏輯210可被編程來執(zhí)行多條指令,以針對給定的分組實現(xiàn)適當(dāng)?shù)木W(wǎng)絡(luò)協(xié)議操作,所以可以用比接口208組件更快的頻率為不同的處理邏輯210組件提供時鐘。例如,可以用接口208時鐘頻率的“k”倍為一個或多個處理邏輯210組件提供時鐘,其中“k”大到足以提供足夠的時間使處理器完成執(zhí)行用于分組的指令,而不落后于線速。應(yīng)當(dāng)注意,并非處理引擎110(210)和接口108(208)模塊內(nèi)的所有組件都需要運行在同一時鐘頻率下。
舉一個實施例,對于接口208的數(shù)據(jù)寬度為16位的引擎206而言,為了實現(xiàn)每秒10吉比特的速度,接口208的時鐘頻率應(yīng)當(dāng)為625MHz(例如,[每周期16位]×[每秒625,000,000周期]=每秒10,000,000,000位)。假設(shè)接收的是64字節(jié)的分組(例如,僅有IP和TCP頭部、幀校驗序列以及硬件源地址和目的地地址的分組),將花費16位/625MHz接口208一共32個周期來接收分組的所有位。潛在地,分組間的間隙可以在下一分組到達之前提供額外的時間。如果一組多達n條的指令被用來處理分組,并且每個周期可以執(zhí)行不同的指令,那么處理模塊210的時鐘頻率可以是k·(625MHz),其中k=n條指令/32個周期。為了實現(xiàn)方便,k的值可以上舍入(rounded up)到一個整數(shù)值或者一個2n的值,但這些都不是很嚴(yán)格的要求。
以上實施例考慮了最壞的情形(例如,非常小的分組)。然而,在實際當(dāng)中,大多數(shù)的分組(約95%的分組)以更大的分組大小為特征,并且給予引擎206更多的時間來處理。因此,引擎206調(diào)整(106)時鐘信號,提供給處理邏輯210組件基于一種或多種分組特性而改變的頻率。舉例來說,對于更大的分組,引擎206在下一個分組到達之前有更多的時間來處理所述分組,因而可以降低頻率而不會落后于線速。同樣,對于小一些的分組,可以提高頻率。因此,時鐘定標(biāo)器106可以接收標(biāo)識分組大小的數(shù)據(jù)(例如在IP分組頭部中的長度字段),并且相應(yīng)地定標(biāo)時鐘頻率的大小。
對于所示的示例引擎206,可以確定處理邏輯的時鐘信號頻率,使得它滿足以下公式[(分組大小/數(shù)據(jù)寬度)/接口時鐘頻率]>=(接口時鐘周期/接口時鐘頻率)+(指令的最大數(shù)量/處理時鐘頻率)。
處理時鐘信號頻率可以上舍入到接口時鐘信號頻率的整數(shù)倍,或者上舍入到等于2n的某個整數(shù)倍,但這僅是為了實現(xiàn)方便,并不一定嚴(yán)格如此。
為了節(jié)省處理時間,可以針對不同的分組特性預(yù)先計算不同的處理時鐘信號頻率。例如,定標(biāo)器126可以訪問基于一定范圍的分組大小標(biāo)識出某一具體時鐘信號的數(shù)據(jù)。
使定標(biāo)邏輯126在物理上靠近頻率源可以減少功耗。此外,在全球時鐘分布點處調(diào)整時鐘既可以節(jié)約功率又可以減少提供時鐘分發(fā)的邏輯需要。
此外,針對不同的進入分組“在傳輸過程中(on the fly)”自適應(yīng)定標(biāo)時鐘頻率,這樣做可以通過降低在處理較大分組時的工作頻率而減小功率。繼而這又可以導(dǎo)致運行中的系統(tǒng)溫度降低,從而可以避免硅“熱點”的產(chǎn)生和/或昂貴的冷卻系統(tǒng)。
圖5描繪了系統(tǒng)206的示例實現(xiàn)方案??傮w上看,在這個實現(xiàn)方式中,系統(tǒng)206將不同連接的上下文數(shù)據(jù)存儲在存儲器224中。例如,對于TCP協(xié)議,這一數(shù)據(jù)被稱為TCB(傳輸控制塊)數(shù)據(jù)。對于給定的分組,系統(tǒng)206在存儲器224中查找對應(yīng)的上下文數(shù)據(jù),并使這一數(shù)據(jù)可用于處理器212,在這個實施例中是經(jīng)由工作寄存器226而對處理器212可用。使用所述上下文數(shù)據(jù),處理器212執(zhí)行一組適當(dāng)?shù)膮f(xié)議實現(xiàn)指令214??赡苡商幚砥?12修改的上下文數(shù)據(jù)然后被返回到上下文數(shù)據(jù)存儲器224。
更詳細地說,所示出的系統(tǒng)206包括輸入定序器220,其解析接收分組的頭部(例如TCP/IP分組的TCP和IP頭部)并暫時緩沖解析后的數(shù)據(jù)。輸入定序器206還可以發(fā)起將分組的有效載荷存儲在主機可訪問的存儲器中(例如經(jīng)由DMA(直接存儲器訪問))。
如上所述,系統(tǒng)206針對不同的網(wǎng)絡(luò)連接將上下文數(shù)據(jù)存儲在存儲器224中。為了快速地檢索一個給定分組的上下文數(shù)據(jù)224,所描繪的系統(tǒng)206包括了內(nèi)容可尋址存儲器222(CAM),該存儲器為通過分組的IP源地址和目的地地址以及源和目的地端口的組合而標(biāo)識出的不同連接存儲不同的連接標(biāo)識符(例如索引號)。就象數(shù)據(jù)庫可以基于關(guān)鍵字(key)來檢索記錄一樣,CAM可以基于內(nèi)容值快速地檢索所存儲的數(shù)據(jù)。因此,基于由輸入定序器220解析的分組數(shù)據(jù),CAM 222可以快速地檢索出連接標(biāo)識符,并將這一標(biāo)識符提供給上下文數(shù)據(jù)存儲器224。接著,對應(yīng)于所述標(biāo)識符的連接數(shù)據(jù)被傳輸?shù)焦ぷ骷拇嫫?26,以供處理器212使用。
如果分組代表了新連接的開始(例如CAM搜索連接失敗),那么工作寄存器226被初始化(例如,設(shè)置為TCP中的“LISTEN”狀態(tài)),并且例如使用LRU(最近使用)算法或者其他分配方案將CAM 222和上下文數(shù)據(jù)存儲器224的條目分配給所述連接。
可以選擇連接系統(tǒng)206的不同組件的數(shù)據(jù)線的數(shù)量,以允許數(shù)據(jù)在單個時鐘周期內(nèi)在所連接的組件212-218之間傳輸。例如,如果某一連接的上下文數(shù)據(jù)包括n位的數(shù)據(jù),那么系統(tǒng)206可被設(shè)計為使得連接數(shù)據(jù)存儲器224可以向工作寄存器226提供n條線的數(shù)據(jù)。
因此,所示出的示例實現(xiàn)方式最多使用三個處理周期將連接數(shù)據(jù)載入工作寄存器226一個周期查詢CAM 222;一個周期訪問連接數(shù)據(jù)224;以及一個周期載入工作寄存器226。這一設(shè)計既可以節(jié)省處理時間,又可以節(jié)約對存儲器結(jié)構(gòu)222、224的功耗性訪問。
在檢索出用于某一分組的連接數(shù)據(jù)后,系統(tǒng)206可以對該分組執(zhí)行協(xié)議操作,例如讓處理器212執(zhí)行存儲在存儲器216中的協(xié)議實現(xiàn)指令。當(dāng)不使用處理器212以節(jié)省功率時,可以將處理器212編程為“空閑”。在接收到“喚醒”信號(例如當(dāng)檢索出或正在檢索連接上下文時從輸入定序器220接收到該信號)后,處理器212可以確定當(dāng)前連接的狀態(tài),并且識別用于處置這一狀態(tài)的指令的起始地址。然后,處理器212執(zhí)行從該起始地址開始的指令。根據(jù)這些指令,處理器212可以更改上下文數(shù)據(jù)(例如通過更改工作寄存器226),在發(fā)送緩沖器228中組裝消息以進行接下來的網(wǎng)絡(luò)傳輸,和/或可以使經(jīng)過處理的分組數(shù)據(jù)對主機(未示出)可用。
由于不同的組件212-218可以接收不同的時鐘信號,因此被稱為“同步器”(未示出)的設(shè)備可被用來實現(xiàn)各組件之間(例如在連接數(shù)據(jù)存儲器224和工作寄存器226之間)的通信。
不同的時鐘信號可被路由到引擎206內(nèi)的不同組件。例如,輸入定序器220可以接收“1x”的時鐘信號,處理器212接收“kx”的時鐘信號,而連接數(shù)據(jù)存儲器224和CAM 224(222)根據(jù)實現(xiàn)方式可以接收“1x”或“kx”的時鐘信號。
圖6更詳細地描繪了處理器212。如圖所示,處理器212可以包括ALU(算術(shù)邏輯單元)232,其解碼并執(zhí)行被載入到指令寄存器234中的微碼指令。除了分支指令和起始地址初始化之外,指令214可以依次連續(xù)地從存儲器214被載入(236)到指令寄存器234中。指令214可以指定對存儲了解析后的分組數(shù)據(jù)的接收緩沖器230、工作寄存器226、發(fā)送緩沖器228和/或主機內(nèi)存(未示出)的訪問(例如讀或?qū)懺L問)。所述指令還可以指定對暫存(scratch)存儲器、雜項(miscellaneous)寄存器(例如dubbed R0、cond和statusok寄存器)、移位寄存器等等(未示出)的訪問。為了編程方便,可以向發(fā)送緩沖器228和工作寄存器226的不同字段分配標(biāo)簽以在指令中使用。此外,例如針對不同的連接狀態(tài)可以定義各種常數(shù)。例如,“LOAD TCB[state],LISTEN”指示處理器212將當(dāng)前工作寄存器226中的上下文的狀態(tài)改變?yōu)椤癓ISTEN”狀態(tài)。
圖7描繪了一個微碼指令集的實施例,該指令集可被用于編程處理器來執(zhí)行協(xié)議操作。如圖所示,所述指令集包括以下操作在系統(tǒng)內(nèi)移動數(shù)據(jù)(例如LOAD和MOV),執(zhí)行算術(shù)和布爾運算(例如AND、OR、NOT、ADD、SUB),比較數(shù)據(jù)(例如CMP和EQUAL)、操縱數(shù)據(jù)(例如SHL(左移))以及提供程序內(nèi)的分支轉(zhuǎn)移(例如BREQZ(如果前面運算的結(jié)果等于0則有條件地分支轉(zhuǎn)移)、BRNEQZ(如果前面運算的結(jié)果不等于0則有條件地分支轉(zhuǎn)移)和JMP(無條件跳轉(zhuǎn)))。
所述指令集還包括專門為利用引擎206資源來實現(xiàn)協(xié)議操作而定制的多種操作。這些指令包括用于清除CAM中用于某一連接的條目的操作(例如,CAM1CLR)和用于在工作寄存器226和連接數(shù)據(jù)存儲設(shè)備224之間為某一連接傳輸數(shù)據(jù)的操作(例如TCBWR)。其他實現(xiàn)方式還可以包括以下指令向存儲與連接相關(guān)聯(lián)的數(shù)據(jù)的CAM讀寫標(biāo)識符信息的指令(例如,CAM1READ key→index)和CAM1WRITE key→index)和讀連接數(shù)據(jù)224的指令(例如,TCBRD key→destination)??商鎿Q地,這些指令可被實現(xiàn)為硬連線數(shù)字邏輯。
雖然有可能缺少傳統(tǒng)的通用CPU可提供的很多指令(例如處理器212可能不具有用于浮點運算的指令),但是所述指令集為開發(fā)者提供了對適用于網(wǎng)絡(luò)協(xié)議實現(xiàn)的引擎206資源的簡易訪問。程序員可以使用所述微碼指令直接對協(xié)議操作進行編程?;蛘?,程序員可以使用多種代碼開發(fā)工具(例如編譯器或匯編程序)。
如上所述,引擎206指令實現(xiàn)了多種網(wǎng)絡(luò)協(xié)議的操作。例如,引擎206可以實現(xiàn)諸如TCP的傳輸層協(xié)議的操作。在RFC(征求意見稿)793、1122和1323中可以找到完整的TCP規(guī)范以及可選的擴展。
簡要地說,TCP向應(yīng)用提供了以連接為導(dǎo)向的服務(wù)。即,就像接聽電話時假定電話公司將做好一切工作一樣,TCP向應(yīng)用提供了簡單的原語,例如用于建立連接的原語(例如CONNECT和CLOSE)和用于傳輸數(shù)據(jù)的原語(例如SEND和RECEIVE)。TCP透明地處置通信問題,例如數(shù)據(jù)重傳、擁塞和流控制。
為了向應(yīng)用提供這些服務(wù),TCP對被稱為段的分組進行操作。TCP段包括TCP頭部,后面跟著一個或多個數(shù)據(jù)字節(jié)。接收方可以由接收到的段重新組裝數(shù)據(jù)。段可能不是以正確的順序到達它們的目的地,即使也有可能按正確的順序到達(if at all)。例如,不同的段在穿過網(wǎng)絡(luò)時可能經(jīng)過特殊的路徑(very paths)。因此,TCP向所傳輸?shù)拿總€數(shù)據(jù)字節(jié)分配一個序列號。由于每個字節(jié)都被排序,因此每個字節(jié)都可以被確認(rèn)來證實成功的傳輸。確認(rèn)機制是累積性的,使得對某一特定序列號的確認(rèn)可以指示出一直到那個序列號的所有字節(jié)都已被成功傳遞。
排序方案為TCP提供了管理連接的強有力的工具。例如,TCP可以使用被稱為“滑動窗”的技術(shù)來確定發(fā)送方何時應(yīng)當(dāng)重傳一個段。在“滑動窗”方案中,發(fā)送方在發(fā)射一個段后啟動定時器。接收方在接收到后發(fā)回一個確認(rèn)段,該段具有與接收方預(yù)期接收的下一序列號相等的確認(rèn)號。如果發(fā)送方的定時器在發(fā)射字節(jié)的確認(rèn)到達之前期滿,則發(fā)送方再次發(fā)射所述段。所述排序方案也使得發(fā)送方和接收方能夠基于網(wǎng)絡(luò)性能以及發(fā)送方和接收方的能力來動態(tài)地協(xié)商用于調(diào)節(jié)被發(fā)送給接收方的數(shù)據(jù)量的窗大小。
除了排序信息外,TCP頭部包括一組標(biāo)志,它們使得發(fā)送方和接收方能夠?qū)B接進行控制。這些標(biāo)志包括SYN(同步)位、ACK(確認(rèn))位、FIN(結(jié)束)位、RST(復(fù)位)位。包括SYN位“1”和ACK位“0”的消息(SYN消息)代表對連接的請求。包括SYN位“1”和ACK位“1”的應(yīng)答消息(SYN+ACK消息)代表請求的接受。包括FIN位“1”的消息指示了發(fā)送方想要釋放連接。最后,RST位為“1”的消息標(biāo)識出由于某些原因(例如無效段或連接請求拒絕)應(yīng)當(dāng)被終止的連接。
圖8描繪了代表在TCP連接的建立和釋放過程中的不同階段的狀態(tài)圖。該圖描繪了不同的狀態(tài)240-260以及在這些狀態(tài)240-260之間的轉(zhuǎn)移(用帶箭頭的線來表示)。用對應(yīng)的事件/操作名稱來標(biāo)記各次轉(zhuǎn)移,所述事件/操作名稱標(biāo)識出移動到下一狀態(tài)240-260所需的事件和響應(yīng)。例如,在接收到SYN消息并且以SYN+ACK消息作出響應(yīng)后,連接從LISTEN狀態(tài)242移動到SYN RCVD狀態(tài)244。
在圖8的狀態(tài)圖中,用實線轉(zhuǎn)移示出了發(fā)送方(請求連接的TCP實體)的典型路徑,而用虛線轉(zhuǎn)移示出了接收方的典型路徑。為了圖示狀態(tài)機的操作,接收方一般從CLOSED狀態(tài)240開始,該狀態(tài)指示了沒有任何連接當(dāng)前是活動的或者是未決的。在移動到LISTEN狀態(tài)242等待連接請求后,接收方將接收到請求連接的SYN消息,并將用SYN+ACK消息來確認(rèn)SYN消息,并且進入SYNRCVD狀態(tài)244。在接收到SYN+ACK消息的確認(rèn)后,連接進入ESTABLISHED狀態(tài)248,該狀態(tài)對應(yīng)于正常的進行中的數(shù)據(jù)傳輸。ESTABLISHED狀態(tài)248可以持續(xù)一段時間。最終,假設(shè)沒有復(fù)位消息到達并且沒有錯誤發(fā)生,那么服務(wù)器將接收并確認(rèn)FIN消息,并且進入CLOSE WAIT狀態(tài)250。在發(fā)出自己的FIN并進入LAST ACK狀態(tài)260后,服務(wù)器將接收其FIN的確認(rèn),最后返回初始的CLOSED 240狀態(tài)。
此外,狀態(tài)圖也管理著TCP發(fā)送方的狀態(tài)。發(fā)送方路徑和接收方路徑共享上述很多相同的狀態(tài)。然而,發(fā)送方還可以在請求連接后進入SYN SENT狀態(tài)246,在請求釋放連接后進入FIN WAIT 1狀態(tài)252,在從服務(wù)器接收到釋放連接的同意后進入FIN WAIT 2狀態(tài)256,在客戶端和服務(wù)器同時請求釋放的情況下進入CLOSING狀態(tài)254,在先前發(fā)射的連接段期滿的情況下進入TIMED WAIT狀態(tài)258。
引擎206協(xié)議指令可以實現(xiàn)上述屬于RFC的很多TCP操作,即使不是所有操作。例如,所述指令可以包括用于選項處理、窗管理、流控制、擁塞控制、ACK消息生成和驗證、數(shù)據(jù)分段、特殊標(biāo)志處理(例如設(shè)置及讀取URGENT和PUSH標(biāo)志)、校驗和計算等等的過程。協(xié)議指令還可以包括與TCP相關(guān)的其他操作,例如安全支持、隨機數(shù)生成、基于TCP的RDMA(遠程直接存儲器訪問)等等。
在配置為提供TCP操作的引擎206中,連接數(shù)據(jù)可以包括264位的信息,其中包括PUSH(用微碼標(biāo)簽“TCB[pushseq]”來標(biāo)識)、FIN(“TCB[finseq]”)和URGENT(“TCB[rupseq]”)序列號各占32位,還包括下一預(yù)期段號(“TCB[rnext]”)、當(dāng)前通告窗的序列號(“TCB[cwin]”)、最后未確認(rèn)序列號的序列號(“TCB[suna]”)和將成為下一個的下一段的序列號(“TCB[snext]”)。剩余位存儲各種TCB狀態(tài)標(biāo)志(“TCB[flags]”)、TCP段代碼(“TCB[code]”)、狀態(tài)(“TCB[tcbstate]”)和錯誤標(biāo)志(“TCB[error]”)。
為了圖示被編程來提供TCP配置操作的引擎206,Appendix A給出了用于TCP接收方的源微碼的一個例子。簡要地說,例程TCPRST檢查TCP ACK位,初始化發(fā)送緩沖器,并且初始化發(fā)送消息ACK號。例程TCPACKIN處理進入的ACK消息,并且檢查ACK是不是無效的或者復(fù)制物。TCPACKOUT基于所接收和預(yù)期的序列號,響應(yīng)于一個進入消息而生成ACK消息。TCPSEQ確定進入數(shù)據(jù)的首序列號和尾序列號,計算進入數(shù)據(jù)的大小,并且檢查進入的序列號是否有效以及是否位于接收窗內(nèi)。TCPINITCB初始化工作寄存器中的TCB字段。TCPINITWIN利用窗信息來初始化工作寄存器。TCPSENDWIN計算可包括到發(fā)送消息中的窗長度。最后,TCBDATAPROC檢查進入的標(biāo)志,處理“urgent”、“push”和“finish”標(biāo)志,響應(yīng)于消息來設(shè)置標(biāo)志,并且將數(shù)據(jù)轉(zhuǎn)發(fā)給應(yīng)用或用戶。
引擎206執(zhí)行的另一項操作可以是分組重排序。例如,就像很多網(wǎng)絡(luò)協(xié)議一樣,TCP不假定TCP分組(“段”)將會按順序到達。為了正確地重新組裝分組,接收方可以跟蹤所接收的尾序列號,并且等待接收到分配給下一序列號的字節(jié)。亂序到達的分組可以被緩沖,直到介于其間的字節(jié)到達。一旦所等待的字節(jié)到達,則潛在地可以從緩沖的數(shù)據(jù)中快速地檢索出序列中的下面字節(jié)。
圖9-13圖示了可由系統(tǒng)206實現(xiàn)的、跟蹤亂序分組的方案的操作。該方案允許在不使用傳統(tǒng)排序算法的情況下對分組進行快速的“在傳輸過程中”的排序。如圖所示,可以使用另一組內(nèi)容可尋址存儲器來實現(xiàn)所述方案,雖然這不是必要的。因此,使用這一技術(shù)的系統(tǒng)206可以包括兩組不同的內(nèi)容可尋址存儲器——用來檢索連接上下文數(shù)據(jù)的內(nèi)容可尋址存儲器222和用來跟蹤亂序分組的內(nèi)容可尋址存儲器。為了圖示說明,在TCP實現(xiàn)方案的環(huán)境中討論圖9-13。然而,該方案可廣泛適用于多種分組重排序方案,例如編號分組(例如,協(xié)議數(shù)據(jù)單位片段)等等。
簡要地說,當(dāng)分組到達時,跟蹤子系統(tǒng)300確定所接收的分組是否符合順序。如果不是,則子系統(tǒng)300提請存儲器識別一串與新到達的分組鄰接的、相鄰的先前接收的亂序分組,并且可以修改存儲在存儲器中的數(shù)據(jù),以將新接收的分組添加到預(yù)先存在的串中。當(dāng)分組按序到達時,系統(tǒng)可以訪問存儲器,以快速地識別出一串跟在新接收的分組之后的、相鄰的先前接收的分組。
更具體地說,如圖9所示,協(xié)議304(例如,TCP)將一組數(shù)據(jù)劃分成若干通過網(wǎng)絡(luò)308傳輸?shù)姆纸M306a-306d。在所示的實施例中,原始的數(shù)據(jù)組302中的15字節(jié)被分配在各個分組306a-306d中。例如,分組306d包括分配有序列號“1”到“3”的字節(jié)。
如圖所示,跟蹤子系統(tǒng)300包括內(nèi)容可尋址存儲器310、312,該系統(tǒng)存儲著有關(guān)多串先前接收的相鄰亂序分組的信息。存儲器310存儲由一個或多個亂序分組組成的相鄰串的首序列號以及該串的長度。因此,當(dāng)一個新的分組(這個分組在預(yù)先存在的串開始的地方結(jié)束)到達時,該新的分組可被添加到所述預(yù)先存在的串的頂部。同樣,存儲器312還存儲由一個或多個分組組成的一個相鄰分組串的末尾(尾序列號+1)以及該串的長度。因此,當(dāng)一個新的分組(這個分組在先前存在的串的末尾處開始)到達時,該新的分組可被附加到所述先前存在的串的末尾,以形成一個更長串的相鄰分組。為了圖示這些操作,圖10-13描繪了當(dāng)分組306a-306d到達時所發(fā)生的一系列示例操作。
如圖10所示,分組306b到達,其運送序列號從“8”到“12”的字節(jié)。假設(shè)接收設(shè)備300目前正在等待序列號“1”,則分組306b已算是亂序到達。因此,如圖所示,設(shè)備300通過修改存儲在其內(nèi)容可尋址存儲器310、312中的數(shù)據(jù)來跟蹤亂序分組306b。由于在這個實施例中尚未存在任何串,所以分組306b不與先前接收的分組串鄰接。因此,設(shè)備300存儲起始序列號“8”以及該分組中的字節(jié)數(shù)“4”。設(shè)備300還存儲所述分組的末尾的標(biāo)識。在所示的實施例中,設(shè)備300通過給所接收分組的尾序列號加1(例如,12+1=13)而存儲結(jié)束邊界。除了在內(nèi)容可尋址存儲器310、312中修改或添加條目外,設(shè)備300還可以存儲所述分組或者對該分組的引用311b(例如指針),以反映分組的相對順序。這實現(xiàn)了在分組最終被發(fā)送給應(yīng)用時對分組的快速檢索。
如圖11所示,設(shè)備300接下來接收到分組306a,該分組運送著從“13”到“15”的字節(jié)。再一次,設(shè)備300還是在等待序列號“1”。因此,分組306a也是亂序到達的。設(shè)備300檢查存儲器310、312,以確定所接收的分組306a是否與先前存儲的任何分組串鄰接。在這種情況下,新到達的分組306a并非結(jié)束在先前串開始的地方,而是開始于先前串結(jié)束的地方。換言之,分組306a與分組306b的“底部”鄰接。如圖所示,設(shè)備300通過增加預(yù)先存在的串的長度并且相應(yīng)地修改它的首序列號數(shù)據(jù)和尾序列號數(shù)據(jù),從而可以將分組306a合并到內(nèi)容可尋址存儲器數(shù)據(jù)中的所述串中。因此,雖然新串的長度從“4”增加到“7”,但是該新串的首序列號仍保持為“8”,不過該串的末尾序列號從“13”增加到“16”,以反映新接收的分組306a的字節(jié)。設(shè)備300還存儲新的分組311a或者對該新分組的引用,以反映分組的相對順序。
如圖12所示,設(shè)備300接下來接收運送字節(jié)“4”到“7”的分組306c。由于這個分組306c不包括下一預(yù)期序列號“1”,所以設(shè)備300重復(fù)上述過程。即,設(shè)備300確定新接收的分組306c適合放在橫跨分組306b、306a的分組串之上。因此,設(shè)備300修改存儲在內(nèi)容可尋址存儲器310、312中的數(shù)據(jù),以將該串新的起始序列號“4”以及該串新的長度數(shù)據(jù)“11”包括進來。設(shè)備300再次存儲分組311c數(shù)據(jù)或者引用,以反映分組310c的相對順序。
如圖13所示,設(shè)備300最后接收到分組306d,其中包括下一預(yù)期序列號“1”。設(shè)備300可以立即將這一分組306d傳輸給某一應(yīng)用。設(shè)備300還可以檢查其內(nèi)容可尋址存儲器310,以確認(rèn)其他的分組串是否也可被發(fā)送給所述應(yīng)用。在這種情況下,所接收的分組306d與已橫跨分組306a-306c的分組串鄰接。因此,設(shè)備300可以立即以正確的順序?qū)⒋臃纸M中的數(shù)據(jù)轉(zhuǎn)發(fā)給所述應(yīng)用。
圖9-13所示的系列示例突出了本方案的幾個方面。首先,本方案可以防止亂序分組被丟棄以及由發(fā)送方重傳。這可以提高整體吞吐率。本方案還使用非常少的內(nèi)容可尋址存儲器操作來處置亂序分組,節(jié)約了時間和功率。此外,當(dāng)分組按照正確順序到達時,單個內(nèi)容可尋址存儲器操作就可以識別出也可被發(fā)送給應(yīng)用的一系列相鄰分組。
圖14描繪了用于實現(xiàn)上述方案的過程320的流程圖。如圖所示,在接收(322)分組后,過程320確定(324)該分組是否符合順序(例如,該分組是否包括下一預(yù)期序列號或者下一預(yù)期分組號)。如果不是,過程320確定(332)所接收分組的末尾是否與現(xiàn)存分組串的起始處鄰接。如果是的,則過程320可以修改(334)存儲在內(nèi)容可尋址存儲器中的數(shù)據(jù),以反映更大的、合并后的分組串,這個分組串從所接收分組處開始,在先前存在的分組串的末尾處結(jié)束。過程320還確定(336)所接收分組的起始處是否與現(xiàn)存分組串的末尾鄰接。如果是的,則過程320可以修改(338)存儲在內(nèi)容可尋址存儲器中的數(shù)據(jù),以反映以所接收分組結(jié)束的、更大的合并后分組串。
潛在地,所接收的分組可以在兩端與預(yù)先存在的分組串鄰接。換言之,新接收的分組填補了兩個串之間的一個洞。由于過程320對所接收分組的起始邊界332和結(jié)束邊界336都要檢查,所以新接收的分組可能使得過程320將兩個不同的串連接到一起,成為單條串。
如圖所示,如果所接收的分組不與某個分組串鄰接,那么過程320將數(shù)據(jù)存儲(340)在內(nèi)容可尋址存儲器中以形成一條新的分組串,這條新的分組串至少在一開始僅包括所接收的分組。
如果所接收的分組是符合順序的,則過程320可以查詢(326)內(nèi)容可尋址存儲器,以識別出跟在所接收分組之后的鄰接分組串。如果這樣一個串存在,則過程320可以將新接收的分組與毗鄰分組串中的其他分組的數(shù)據(jù)一起輸出給某個應(yīng)用。
可以使用硬件、固件和/或軟件來實現(xiàn)這個過程。例如,圖15和圖16描繪了一種硬件實現(xiàn)方式。如這些圖所示,所述實現(xiàn)方式以兩個內(nèi)容可尋址存儲器360、362為特征——其中存儲器360將亂序分組串的首序列號作為關(guān)鍵字(key)來存儲,而另一個存儲器362將所述串的尾序列號+1作為關(guān)鍵字來存儲。如圖所示,CAM 360、362還存儲串的長度。其他實現(xiàn)方式可以使用單個CAM或者可以使用其他數(shù)據(jù)存儲技術(shù)。
潛在地,相同的CAM可被用來跟蹤很多不同連接的分組。在這些情況中,可以將連接ID附加到每個CAM條目上,作為分辨用于不同連接的條目的關(guān)鍵字的一部分。合并CAM中的分組信息,這樣就可以用更小的CAM實現(xiàn)對更多連接的處理。
如圖15所示,所述實現(xiàn)方式包括存儲起始序列號350、結(jié)束序列號352和數(shù)據(jù)長度354的寄存器。圖4中所示的處理器212可以訪問這些寄存器350、352和354,以將分組數(shù)據(jù)載入到跟蹤子系統(tǒng)300。處理器212還可以請求下一預(yù)期序列號,以包括在被發(fā)回發(fā)送方的確認(rèn)消息中。
如圖所示,所述實現(xiàn)方式基于以下控制信號進行操作,這些控制信號包括用于從CAM360、362讀的控制信號(CAMREAD)、用于寫CAM 360、362條目的控制信號(CAMWRITE)和清除CAM 360、362條目的控制信號(CAMCLR)。如圖15所示,硬件可被配置為當(dāng)寄存器350、352和354載入數(shù)據(jù)時同時將寄存器值寫入CAM 360、362。如圖16所示,對于給定的起始序列號或末尾序列號的“命中(hit)”,電路將“seglen”寄存器設(shè)置為匹配CAM條目的長度。電路(未示出)還可以在成功的CAM 360、362讀操作后設(shè)置“seqfirst”350寄存器和“seqlast”352寄存器的值。所述電路還可以提供一個“CamIndex”信號,該信號標(biāo)識CAM 360、362中的特定“命中”條目。
子系統(tǒng)300可以具有用于實現(xiàn)上述過程的附加電路(未示出)。例如,子系統(tǒng)可以具有它自己的獨立控制器或者數(shù)字邏輯門,它們執(zhí)行實現(xiàn)跟蹤方案的指令??商鎿Q地,處理器212可以包括用于所述方案的指令。潛在地,處理器212指令集(圖7)可被擴展為包括對正在重排序的CAM 360、362進行訪問的命令。這樣的指令可以包括向正在重排序的CAM 360、362寫數(shù)據(jù)的指令(例如CAM2FirstWR key←data for CAM 310和CAM2LastWR key←data for CAM 312);從CAM讀數(shù)據(jù)的指令(例如,CAM2FirstRD key→data和CAM2LastRD key→data);清除CAM條目的指令(例如CAM2CLR index),和/或如果查找失敗則生成條件值的指令(例如CAM2EMPTY→cond)。
再有,多種實現(xiàn)方式可以使用上述技術(shù)中的一種或多種。例如,時鐘定標(biāo)器126可被設(shè)計為向芯片、芯片組或主板內(nèi)的組件提供時鐘信號。此外,定標(biāo)器106可被集成到諸如網(wǎng)絡(luò)適配器、NIC(網(wǎng)卡)或MAC(媒體訪問控制)設(shè)備的組件中。潛在地,這里所描述的技術(shù)還可以用在微處理器中。
可以使用多種硬件和/或軟件配置來實現(xiàn)這里所描述的技術(shù)的各個方面。例如,可以用計算機程序來實現(xiàn)所述技術(shù)。這些程序可被存儲在計算機可讀介質(zhì)上,并且包括用于編程處理器的指令。
其他實施方案也在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用在分組處理中的方法,所述方法包括接收至少一個分組的至少一部分;以及基于所述至少一個分組的所述至少一部分,確定提供給處理所述至少一個分組的處理邏輯的時鐘信號。
2.如權(quán)利要求1所述的方法,其中,所述確定時鐘信號的步驟包括基于包括在所述至少一個分組的頭部中的數(shù)據(jù)來確定所述時鐘信號。
3.如權(quán)利要求2所述的方法,其中,所述數(shù)據(jù)包括所述分組頭部中的長度字段。
4.如權(quán)利要求1所述的方法,其中所述確定時鐘信號的步驟包括基于分組和有效載荷中的至少一個的大小來確定所述時鐘信號。
5.如權(quán)利要求4所述的方法,其中所述確定時鐘信號的步驟包括作出確定,使得較大的大小對應(yīng)于較高頻率的時鐘信號。
6.如權(quán)利要求4所述的方法,其中所述確定時鐘信號的步驟包括訪問針對不同組的一個或多個大小標(biāo)識出不同時鐘信號的數(shù)據(jù)。
7.如權(quán)利要求1所述的方法,其中所述確定時鐘信號的步驟包括基于所述處理邏輯用來處理所述分組的處理周期的數(shù)量來確定時鐘信號。
8.如權(quán)利要求1所述的方法,其中所述確定時鐘信號的步驟包括至少基于以下指示符之一來作出確定服務(wù)質(zhì)量的指示符和優(yōu)先級的指示符。
9.如權(quán)利要求1所述的方法,還包括將與所確定的時鐘信號相對應(yīng)的選擇信號饋給多路復(fù)用器。
10.如權(quán)利要求1所述的方法,還包括提供所確定的時鐘信號。
11.如權(quán)利要求1所述的方法,還包括在以第一時鐘頻率來提供時鐘的接口處接收所述至少一個分組的至少一部分;并且其中所述確定時鐘信號的步驟包括確定不同于所述第一時鐘頻率的時鐘信號。
12.如權(quán)利要求11所述的方法,其中所述第一時鐘頻率包括對應(yīng)于每秒10吉比特連接的頻率。
13.如權(quán)利要求11所述的方法,其中所確定的時鐘信號的頻率是所述第一時鐘頻率的整數(shù)倍。
14.如權(quán)利要求1所述的方法,其中所述處理邏輯包括網(wǎng)絡(luò)協(xié)議去負載引擎。
15.如權(quán)利要求14所述的方法,其中所述網(wǎng)絡(luò)協(xié)議去負載引擎包括算術(shù)邏輯單元以及存儲算術(shù)邏輯單元指令的至少一個存儲器。
16.一種位于計算機可讀介質(zhì)上的的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品用在分組處理中,所述程序包括使得處理器完成以下步驟的指令接收至少一個分組的至少一部分;以及基于所述至少一個分組的所述至少一部分,確定提供給處理所述至少一個分組的處理邏輯的時鐘信號。
17.如權(quán)利要求16所述的程序,其中使得所述處理器確定時鐘信號的指令包括使得所述處理器基于包括在所述至少一個分組的頭部中的數(shù)據(jù)來確定所述時鐘信號的指令。
18.如權(quán)利要求17所述的程序,其中所述數(shù)據(jù)包括所述分組頭部中的長度字段。
19.如權(quán)利要求16所述的程序,其中使得所述處理器確定時鐘信號的指令包括使得所述處理器基于分組和有效載荷中的至少一個的大小來確定所述時鐘信號的指令。
20.如權(quán)利要求19所述的程序,其中使得所述處理器確定時鐘信號的指令包括使得所述處理器確定所述時鐘信號,使得較大的大小對應(yīng)于較高頻率的時鐘信號的指令。
21.如權(quán)利要求20所述的程序,其中使得所述處理器確定時鐘信號的指令包括使得所述處理器訪問針對不同組的一個或多個大小標(biāo)識出不同時鐘信號的數(shù)據(jù)的指令。
22.如權(quán)利要求16所述的程序,其中使得所述處理器確定時鐘信號的指令包括使得所述處理器基于所述處理邏輯用來處理所述分組的處理周期的數(shù)量來確定時鐘信號的指令。
23.如權(quán)利要求16所述的程序,其中使得所述處理器確定時鐘信號的指令包括使得所述處理器至少基于以下指示符之一來確定所述時鐘信號的指令,所述指示符包括服務(wù)質(zhì)量的指示符和優(yōu)先級的指示符。
24.如權(quán)利要求22所述的程序,其中使得所述處理器確定時鐘信號的指令包括使得所述處理器確定一個與被提供給接收分組位的接口的時鐘信號具有不同頻率的時鐘信號的指令。
25.如權(quán)利要求24所述的程序,其中所確定的時鐘信號的頻率是所述第一時鐘信號頻率的整數(shù)倍。
26.如權(quán)利要求16所述的程序,其中所述處理邏輯包括網(wǎng)絡(luò)協(xié)議去負載引擎。
27.一種系統(tǒng),包括接收至少一個分組的至少一部分的第一組數(shù)字邏輯;以及基于所述至少一個分組的所述至少一部分,確定提供給處理所述至少一個分組的處理邏輯的時鐘信號的第二組數(shù)字邏輯。
28.如權(quán)利要求27所述的系統(tǒng),其中確定時鐘信號的所述第二組數(shù)字邏輯包括基于包括在分組頭部中的數(shù)據(jù)來確定所述時鐘信號的數(shù)字邏輯。
29.如權(quán)利要求28所述的系統(tǒng),其中,所述數(shù)據(jù)包括所述分組頭部中的長度字段。
30.如權(quán)利要求27所述的系統(tǒng),其中確定時鐘信號的所述第二組數(shù)字邏輯包括基于分組和有效載荷中的至少一個的大小來確定所述時鐘信號的數(shù)字邏輯。
31.如權(quán)利要求30所述的系統(tǒng),其中確定時鐘信號的所述第二組數(shù)字邏輯包括確定所述時鐘信號,使得較大的大小對應(yīng)于較高頻率的時鐘信號的數(shù)字邏輯。
32.如權(quán)利要求27所述的系統(tǒng),其中確定時鐘信號的所述第二組數(shù)字邏輯包括訪問針對不同組的一個或多個大小標(biāo)識出不同時鐘信號的數(shù)據(jù)的數(shù)字邏輯。
33.如權(quán)利要求27所述的系統(tǒng),其中確定時鐘信號的所述第二組數(shù)字邏輯包括基于所述處理邏輯用來處理所述分組的處理周期的數(shù)量來確定時鐘信號的數(shù)字邏輯。
34.如權(quán)利要求27所述的系統(tǒng),其中確定時鐘信號的所述第二組數(shù)字邏輯包括至少基于以下指示符之一來確定所述時鐘信號的數(shù)字邏輯,所述指示符包括服務(wù)質(zhì)量的指示符和優(yōu)先級的指示符。
35.如權(quán)利要求27所述的系統(tǒng),所述第二組數(shù)字邏輯包括將與所確定的時鐘信號相對應(yīng)的選擇信號饋給多路復(fù)用器的數(shù)字邏輯。
36.如權(quán)利要求27所述的系統(tǒng),其中所述第二組數(shù)字邏輯還包括提供所確定的時鐘信號的數(shù)字邏輯。
37.如權(quán)利要求27所述的系統(tǒng),其中所述第二組數(shù)字邏輯包括訪問針對分組特性標(biāo)識出時鐘信號頻率的數(shù)據(jù)的邏輯。
38.如權(quán)利要求27所述的系統(tǒng),還包括其中所述第一組數(shù)字邏輯以第一時鐘頻率來提供時鐘;以及其中確定時鐘信號的所述第二組數(shù)字邏輯包括確定不同于所述第一時鐘頻率的時鐘信號的數(shù)字邏輯。
39.如權(quán)利要求38所述的系統(tǒng),其中所述第一時鐘頻率包括對應(yīng)于每秒10吉比特連接的頻率。
40.如權(quán)利要求39所述的系統(tǒng),其中所確定的時鐘信號的頻率是所述第一時鐘頻率的整數(shù)倍。
41.如權(quán)利要求27所述的系統(tǒng),其中所述處理邏輯包括網(wǎng)絡(luò)協(xié)議去負載引擎。
42.一種系統(tǒng),包括至少一個主機處理器;以太網(wǎng)媒體訪問控制(MAC)設(shè)備;至少一個TCP(傳輸控制協(xié)議)去負載引擎,該引擎接收由所述MAC設(shè)備接收到的分組的至少一部分,并且為所述至少一個主機處理所述分組,所述引擎經(jīng)由外設(shè)部件互連(PCI)類型的總線耦合到所述主機;以及數(shù)字邏輯,該數(shù)字邏輯基于所述至少一個分組的所述至少一部分來確定提供給所述TCP去負載引擎的至少一部分的時鐘信號。
43.如權(quán)利要求42所述的系統(tǒng),其中所述至少一個主機包括本地通用中央處理單元(CPU)。
44.如權(quán)利要求42所述的系統(tǒng),其中,確定時鐘信號的所述數(shù)字邏輯包括基于包括在所述分組的因特網(wǎng)協(xié)議頭部中的數(shù)據(jù)來確定所述時鐘信號的數(shù)字邏輯。
45.如權(quán)利要求44所述的系統(tǒng),其中所述數(shù)據(jù)包括所述因特網(wǎng)協(xié)議分組頭部中的分組長度字段。
46.如權(quán)利要求42所述的系統(tǒng),其中所述去負載引擎包括第一組一個或多個內(nèi)容可尋址存儲器和第二組一個或多個內(nèi)容可尋址存儲器,所述第一組存儲器存儲用于不同TCP連接的數(shù)據(jù),所述第二組存儲器存儲用于亂序到達的TCP分組的數(shù)據(jù)。
47.如權(quán)利要求42所述的系統(tǒng),其中所述數(shù)字邏輯包括幅度比較器,其被饋予代表至少一個分組的至少一種特性的數(shù)據(jù);以及耦合到所述幅度比較器的多路復(fù)用器,該多路復(fù)用器被饋予一組具有不同頻率的時鐘信號,來自所述幅度比較器的信號選擇由所述多路復(fù)用器輸出的時鐘信號。
全文摘要
總的來說,本公開在一個方面描述了一種用于分組處理中的方法。所述方法可以包括接收至少一個分組的至少一部分,基于所述至少一個分組的所述至少一部分來確定提供給處理所述至少一個分組的處理邏輯的時鐘信號。
文檔編號H04J3/06GK1695363SQ03824962
公開日2005年11月9日 申請日期2003年9月3日 優(yōu)先權(quán)日2002年9月3日
發(fā)明者斯利拉姆·范加爾, 亞丁·霍斯科特, 尼丁·博卡, 許建平, 瓦姍莎·厄拉根特拉, 謝克哈·博卡 申請人:英特爾公司