亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

報(bào)頭處理引擎的制作方法

文檔序號:7899223閱讀:341來源:國知局
專利名稱:報(bào)頭處理引擎的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種處理分組報(bào)頭的報(bào)頭處理引擎。
背景技術(shù)
現(xiàn)代數(shù)據(jù)分組網(wǎng)絡(luò)中的計(jì)算機(jī)系統(tǒng)通常根據(jù)在網(wǎng)絡(luò)的全部層中運(yùn)行的多個(gè)不同 的協(xié)議,從管理數(shù)據(jù)流業(yè)務(wù)質(zhì)量的協(xié)議,到確定數(shù)據(jù)分組邏輯結(jié)構(gòu)的協(xié)議,再到確定網(wǎng)絡(luò)結(jié) 構(gòu)上的全形式數(shù)據(jù)分組的物理信令的協(xié)議,來交換數(shù)據(jù)。因此一個(gè)典型的網(wǎng)絡(luò)數(shù)據(jù)分組在 計(jì)算機(jī)系統(tǒng)中形成數(shù)據(jù)分組時(shí)會具有嵌套式的多個(gè)報(bào)頭。通常數(shù)據(jù)分組在開放系統(tǒng)互聯(lián) (OSI)模型的第2至5層的每一層包括一個(gè)或更多個(gè)報(bào)頭。例如,通過建立了邏輯VLAN的以太網(wǎng)傳輸?shù)腡CP/IP數(shù)據(jù)分組會具有與以下所示 相近的嵌套報(bào)頭結(jié)構(gòu)以太網(wǎng) /VLAN/IP/TCP另外,分組可在以上結(jié)構(gòu)中包括第5層報(bào)頭,例如NetBIOS報(bào)頭。數(shù)據(jù)分組的報(bào)頭把處理該數(shù)據(jù)分組的計(jì)算機(jī)系統(tǒng)需要的全部信息告訴該計(jì)算機(jī) 系統(tǒng),以便計(jì)算機(jī)系統(tǒng)將數(shù)據(jù)分組中的有效載荷數(shù)據(jù)正確地路由到其目的地,并且對數(shù)據(jù) 分組的發(fā)送方進(jìn)行適當(dāng)?shù)捻憫?yīng)。沒有了分組報(bào)頭,有效載荷數(shù)據(jù)就單單是一串沒有任何上 下文的比特序列,計(jì)算機(jī)系統(tǒng)不知道怎樣處理數(shù)據(jù)。因此,計(jì)算機(jī)系統(tǒng)接收數(shù)據(jù)分組時(shí),必 須處理數(shù)據(jù)分組的報(bào)頭以便確定對數(shù)據(jù)分組做何處理。通常,一些報(bào)頭處理在終端系統(tǒng)的軟件中完成,一些報(bào)頭處理在硬件中完成。軟件 處理通常遵循分層協(xié)議棧模型,連續(xù)的報(bào)頭被依次剝離和處理。相反的,硬件處理只處理一 部分報(bào)頭,或者將報(bào)頭的組合作為單獨(dú)的實(shí)體來處理,以便執(zhí)行要求的操作。硬件中的報(bào)頭 處理對于路由分組數(shù)據(jù)、加快分組傳遞或者操縱分組報(bào)頭特別有用。硬件中的報(bào)頭處理通常在網(wǎng)絡(luò)接口設(shè)備中進(jìn)行。各個(gè)數(shù)據(jù)分組被接收后,網(wǎng)絡(luò)接 口設(shè)備解析數(shù)據(jù)分組的報(bào)頭并執(zhí)行以下操作執(zhí)行校驗(yàn)和,取出數(shù)據(jù)并使用報(bào)頭中的地址 數(shù)據(jù)查找數(shù)據(jù)分組的期望目的地。所執(zhí)行的操作通常取決于數(shù)據(jù)分組中出現(xiàn)的報(bào)頭的類 型。因?yàn)橥ǔR髮Ω鱾€(gè)數(shù)據(jù)分組執(zhí)行多個(gè)操作,并且每秒鐘有數(shù)以百萬計(jì)的數(shù)據(jù)分組通 過網(wǎng)絡(luò)到達(dá)計(jì)算機(jī)系統(tǒng),所以確保報(bào)頭能被高效地、盡可能快地處理是非常重要的。常規(guī)的報(bào)頭處理硬件使用專用處理器來解析數(shù)據(jù)分組中的報(bào)頭并執(zhí)行各個(gè)報(bào)頭 被識別出時(shí)所需的處理。這樣的處理器在硬件需要執(zhí)行大量操作時(shí)是高效的,但是在相同 處理器按需要的順序執(zhí)行各個(gè)操作時(shí)經(jīng)常浪費(fèi)處理器周期。例如,處理器必須從分組緩存 中讀取報(bào)頭數(shù)據(jù),識別各個(gè)數(shù)據(jù)分組中的報(bào)頭,在網(wǎng)絡(luò)接口設(shè)備處的轉(zhuǎn)發(fā)表中請求查找操 作,并調(diào)用網(wǎng)絡(luò)接口設(shè)備中的哈希計(jì)算單元。更進(jìn)一步,處理器的指令集必須足夠大以便支 持處理器預(yù)期執(zhí)行的操作的范圍。這將導(dǎo)致使用復(fù)雜的處理器來執(zhí)行實(shí)質(zhì)上一連串的重復(fù) 的簡單操作。這樣的處理器能量利用率低,這是用在刀鋒式服務(wù)器(blade servers)和數(shù) 據(jù)存儲場(data farms)中的網(wǎng)絡(luò)接口設(shè)備的焦點(diǎn)問題。更進(jìn)一步,使用典型的分層協(xié)議棧模型將報(bào)頭處理實(shí)現(xiàn)在硬件或固件中效率非常低下,要求硬件被配置為恒定地處理一系列報(bào)頭的一連串若-則-否則邏輯。因此,需要用于解決上述問題的網(wǎng)絡(luò)接口設(shè)備的改進(jìn)的報(bào)頭處理引擎。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一個(gè)報(bào)頭處理引擎,用于具有存儲各自包括一個(gè) 或更多個(gè)報(bào)頭的一個(gè)或更多個(gè)數(shù)據(jù)分組的緩存的網(wǎng)絡(luò)接口設(shè)備。該報(bào)頭處理引擎包括命 令存儲器;報(bào)頭識別器,被配置為解析存儲在緩存中的數(shù)據(jù)分組的報(bào)頭,以便識別數(shù)據(jù)分組 中每個(gè)報(bào)頭的類型和位置;構(gòu)造器單元,具有對數(shù)據(jù)分組的報(bào)頭讀取權(quán);以及包括一個(gè)執(zhí) 行流水線的處理器;該報(bào)頭識別器進(jìn)一步被配置為對每個(gè)報(bào)頭(a)根據(jù)報(bào)頭的類型選擇 存儲在命令存儲器中的一個(gè)或更多個(gè)命令;并且(b)為構(gòu)造器單元形成一個(gè)或更多個(gè)標(biāo)識 被選擇的命令和數(shù)據(jù)分組中報(bào)頭的位置的消息;如果構(gòu)造器單元執(zhí)行這些為數(shù)據(jù)分組的報(bào) 頭選擇的命令,將共同地使得構(gòu)造器單元產(chǎn)生一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)可操作用于使得 處理器在無需訪問緩存中的數(shù)據(jù)分組的情況下對數(shù)據(jù)分組的報(bào)頭實(shí)施處理;并且構(gòu)造器單 元被配置為接收消息并執(zhí)行從中識別的命令。優(yōu)選地,報(bào)頭處理引擎進(jìn)一步包括一個(gè)處理器可訪問的共享存儲器,構(gòu)造器單元 被配置為將數(shù)據(jù)結(jié)構(gòu)寫入該共享存儲器。優(yōu)選地,數(shù)據(jù)結(jié)構(gòu)識別處理器要執(zhí)行的指令集,處 理器被配置為訪問數(shù)據(jù)結(jié)構(gòu)并執(zhí)行從中識別出的指令以便對數(shù)據(jù)分組報(bào)頭實(shí)施處理。相適 應(yīng)的,數(shù)據(jù)結(jié)構(gòu)包括報(bào)頭的一個(gè)或更多個(gè)部分。優(yōu)選地,數(shù)據(jù)結(jié)構(gòu)只包括執(zhí)行一個(gè)或更多個(gè) 所述指令所需要的那些報(bào)頭部分。優(yōu)選地,數(shù)據(jù)結(jié)構(gòu)包括一個(gè)用于唯一地表示數(shù)據(jù)分組報(bào)頭次序的分組分類標(biāo)識 符,該分組分類標(biāo)識符識別被處理器執(zhí)行的所述指令集。優(yōu)選地,分組分類標(biāo)識符表示處 理器的指令存儲器中的一個(gè)存儲器地址,并且處理器被配置為,當(dāng)讀取分組分類標(biāo)識符時(shí) 訪問該存儲器地址并開始執(zhí)行存儲在該存儲器地址上的指令。優(yōu)選地,構(gòu)造器單元被配置 為通過形成對數(shù)據(jù)分組報(bào)頭的特定次序的表示并將該表示傳遞給一個(gè)僅其可用輸出對應(yīng) 有效的報(bào)頭次序的壓縮引擎來產(chǎn)生分組分類標(biāo)識符,該壓縮引擎的輸出即為分組分類標(biāo)識 符。優(yōu)選地,共享存儲器被配置為保存多個(gè)數(shù)據(jù)結(jié)構(gòu),每個(gè)數(shù)據(jù)結(jié)構(gòu)對應(yīng)于不同數(shù)據(jù) 分組。優(yōu)選地,共享存儲器被配置為允許構(gòu)造器單元和處理器對不同數(shù)據(jù)結(jié)構(gòu)進(jìn)行并發(fā)訪 問,處理器對構(gòu)造器單元完成的數(shù)據(jù)結(jié)構(gòu)進(jìn)行專有訪問。優(yōu)選地,處理器被配置為,在開始執(zhí)行一個(gè)或更多個(gè)使得處理器調(diào)用不共享處理 器的執(zhí)行流水線的功能單元的預(yù)定指令時(shí),通過以下步驟切換執(zhí)行線程在與進(jìn)行調(diào)用有 關(guān)的數(shù)據(jù)分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中存儲該處理器的執(zhí)行流水線的狀態(tài);將共享存儲器中存儲 的不同數(shù)據(jù)結(jié)構(gòu)的狀態(tài)加載到該處理器的執(zhí)行流水線;以及執(zhí)行在不同數(shù)據(jù)結(jié)構(gòu)識別出的 指令集。優(yōu)選地,處理器被配置為將響應(yīng)于對功能單元的調(diào)用而返回的數(shù)據(jù)寫入處理器的 一個(gè)選定寄存器中,使得處理器下一次加載與進(jìn)行調(diào)用有關(guān)的數(shù)據(jù)分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中 存儲的狀態(tài)時(shí),所述數(shù)據(jù)對執(zhí)行流水線是可用的。優(yōu)選地,處理器被配置為,在調(diào)用一個(gè)功 能單元時(shí),為響應(yīng)于該調(diào)用而返回的數(shù)據(jù)所寫入的選定寄存器設(shè)置一個(gè)標(biāo)記,此標(biāo)記防止 處理器在此標(biāo)記被清除之前將該寄存器用于另一個(gè)調(diào)用。合適的是,處理器被配置為,從選定的寄存器讀取數(shù)據(jù)時(shí),清除所述標(biāo)記以便處理器能夠選擇該寄存器用于后續(xù)的調(diào)用。合 適的是,至少一個(gè)預(yù)定指令的執(zhí)行會使得處理器調(diào)用查找引擎或哈希引擎。優(yōu)選地,處理器 被配置為響應(yīng)于所述指令將處理器各自的輸出寫入各個(gè)數(shù)據(jù)結(jié)構(gòu)中。數(shù)據(jù)分組可以是通過網(wǎng)絡(luò)接收的數(shù)據(jù)分組,網(wǎng)絡(luò)接口設(shè)備被支持一個(gè)或更多個(gè)操 作系統(tǒng)的數(shù)據(jù)處理系統(tǒng)所支持,處理器被配置為響應(yīng)于所述指令,將標(biāo)識數(shù)據(jù)處理系統(tǒng)的 接收順序的數(shù)據(jù)提供給網(wǎng)絡(luò)接口設(shè)備,所述數(shù)據(jù)處理系統(tǒng)至少寫入了一部分接收到的數(shù)據(jù) 分組。網(wǎng)絡(luò)接口設(shè)備可以包括一個(gè)在此描述的報(bào)頭處理引擎,該報(bào)頭處理引擎被配置 為,在處理器完成對數(shù)據(jù)分組報(bào)頭的處理時(shí),使得處理器的至少一部分輸出對于被配置為 至少部分依賴處理器的輸出來處理保存在緩存中的數(shù)據(jù)分組的分組處理引擎是可用的。數(shù)據(jù)分組可以是通過網(wǎng)絡(luò)傳輸?shù)牟糠值匦纬傻臄?shù)據(jù)分組,網(wǎng)絡(luò)接口設(shè)備被支持一 個(gè)或更多個(gè)操作系統(tǒng)的數(shù)據(jù)處理系統(tǒng)所支持,處理器被配置為響應(yīng)于所述指令處理該部分 地形成的數(shù)據(jù)分組以便完成該數(shù)據(jù)分組。合適的是,處理器被配置為通過執(zhí)行一個(gè)或更多個(gè)以下操作來完成數(shù)據(jù)分組如 果數(shù)據(jù)分組屬于需要按照預(yù)定的服務(wù)質(zhì)量協(xié)議級別進(jìn)行傳輸?shù)臄?shù)據(jù)流,則將合適的服務(wù)質(zhì) 量參數(shù)寫入數(shù)據(jù)分組中以便數(shù)據(jù)分組能夠被按照預(yù)定水平來處理;如果數(shù)據(jù)分組將通過虛 擬LAN來傳輸,則將合適的虛擬LAN參數(shù)寫入數(shù)據(jù)分組中以便數(shù)據(jù)分組能夠在虛擬LAN中 被路由;以及如果數(shù)據(jù)分組從網(wǎng)絡(luò)接口設(shè)備的虛擬接口始發(fā),則進(jìn)行分組過濾以確保數(shù)據(jù) 分組只在數(shù)據(jù)分組的目的地址是虛擬接口允許訪問的網(wǎng)絡(luò)端點(diǎn)時(shí)被傳輸?shù)骄W(wǎng)絡(luò)中。優(yōu)選地,數(shù)據(jù)分組的每個(gè)報(bào)頭包括遵照網(wǎng)絡(luò)數(shù)據(jù)協(xié)議格式化的數(shù)據(jù)比特集,各數(shù) 據(jù)比特集位于數(shù)據(jù)分組的嵌套報(bào)頭、數(shù)據(jù)分組的頁腳或者數(shù)據(jù)分組的其它任意點(diǎn)處。根據(jù)本發(fā)明的第二方面,提供了一種報(bào)頭處理引擎,用于對各自具有多個(gè)報(bào)頭的 一系列數(shù)據(jù)分組進(jìn)行報(bào)頭處理,該報(bào)頭處理引擎包括報(bào)頭識別器,被配置為解析數(shù)據(jù)分組 序列中各個(gè)數(shù)據(jù)分組的報(bào)頭,并且為每個(gè)數(shù)據(jù)分組形成一個(gè)或更多個(gè)指示數(shù)據(jù)分組中每個(gè) 報(bào)頭的類型和位置的消息,該報(bào)頭識別器被配置為依次解析數(shù)據(jù)分組;以及處理器,被配置 為按照為數(shù)據(jù)分組形成的一個(gè)或更多個(gè)消息來處理序列中每個(gè)數(shù)據(jù)分組的報(bào)頭,并依次輸 出處理后的數(shù)據(jù)分組;其中報(bào)頭識別器和處理器被配置為并行操作以便允許處理器對不在 該序列中的數(shù)據(jù)分組進(jìn)行報(bào)頭處理。優(yōu)選地,報(bào)頭識別器和處理器這樣操作在處理器處理數(shù)據(jù)分組序列的一個(gè)數(shù)據(jù) 分組時(shí),報(bào)頭識別器解析序列中的另一個(gè)數(shù)據(jù)分組。優(yōu)選地,報(bào)頭識別器被配置為依次解析 數(shù)據(jù)分組的報(bào)頭,并在識別數(shù)據(jù)分組的每個(gè)報(bào)頭的類型和位置時(shí)為處理器形成包括數(shù)據(jù)分 組的報(bào)頭類型和位置的消息。優(yōu)選地,報(bào)頭識別器被配置為通過檢測數(shù)據(jù)分組報(bào)頭中的一個(gè)或更多個(gè)預(yù)定的比 特序列來識別數(shù)據(jù)分組中每個(gè)報(bào)頭的位置。合適的是,該預(yù)定的比特序列指示報(bào)頭的開始 或結(jié)尾。合適的是,報(bào)頭識別器可操作用于通過檢測表示報(bào)頭類型的一個(gè)或更多個(gè)預(yù)定值 來識別數(shù)據(jù)分組中的報(bào)頭的類型。合適的是,報(bào)頭識別器可操作用于使用數(shù)據(jù)分組報(bào)頭的 位置來識別數(shù)據(jù)分組報(bào)頭的類型。處理器可被配置為,根據(jù)由為一個(gè)特定數(shù)據(jù)分組而形成的一個(gè)或更多個(gè)消息識別 出的報(bào)頭類型,選擇存儲在處理器的指令存儲器中的指令集并且使用選定的指令集來處理該數(shù)據(jù)分組。另選的是,報(bào)頭識別器被配置為根據(jù)由為一個(gè)特定數(shù)據(jù)分組而形成的一個(gè)或 更多個(gè)消息識別出的報(bào)頭類型,選擇存儲在處理器的指令存儲器中的指令集并且使得處理 器使用選定的指令集來處理該數(shù)據(jù)分組。根據(jù)本發(fā)明的第三個(gè)方面,提供一種報(bào)頭處理引擎,用于對存儲在緩存中的數(shù)據(jù) 分組的序列進(jìn)行報(bào)頭處理,每個(gè)數(shù)據(jù)分組都具有多個(gè)報(bào)頭,并且該報(bào)頭處理引擎包括包括 一個(gè)執(zhí)行流水線的處理器;預(yù)處理器單元,被配置為解析存儲在緩存中的數(shù)據(jù)分組的報(bào)頭, 并且根據(jù)數(shù)據(jù)分組的報(bào)頭類型形成標(biāo)識指令集的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)可操作用于使得處 理器在無需訪問緩存中的數(shù)據(jù)分組的情況下對數(shù)據(jù)分組的報(bào)頭實(shí)施處理;其中處理器被配 置為訪問該數(shù)據(jù)結(jié)構(gòu)并執(zhí)行所述指令集以便處理數(shù)據(jù)分組的報(bào)頭。優(yōu)選地,報(bào)頭處理引擎進(jìn)一步包括處理器可訪問的共享存儲器,預(yù)處理器單元被 配置為將數(shù)據(jù)結(jié)構(gòu)寫入該共享存儲器。合適的是,該數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)分組報(bào)頭的一個(gè)或 更多個(gè)部分。優(yōu)選地,該數(shù)據(jù)結(jié)構(gòu)只包括一個(gè)或更多個(gè)所述指令需要的報(bào)頭部分。優(yōu)選地,預(yù)處理器單元被配置為根據(jù)數(shù)據(jù)分組報(bào)頭的類型選擇指令集。優(yōu)選地,處 理器支持指令存儲器并且所述指令集被存儲在該指令存儲器中由數(shù)據(jù)結(jié)構(gòu)標(biāo)識的位置。優(yōu)選地,預(yù)處理器單元被配置為產(chǎn)生用于唯一表示數(shù)據(jù)分組報(bào)頭的類型的分組分 類標(biāo)識符,該分組分類標(biāo)識符被包含在數(shù)據(jù)結(jié)構(gòu)中并且識別被處理器執(zhí)行的所述指令集。 優(yōu)選地,分組分類標(biāo)識符表示處理器的指令存儲器中的存儲器地址,處理器被配置為通過 讀取分組分類標(biāo)識符來訪問該存儲器地址并開始執(zhí)行存儲在該存儲器地址上的指令。優(yōu)選 地,預(yù)處理器單元被配置為通過形成對數(shù)據(jù)分組報(bào)頭的特定次序的表示并將該表示傳遞給 一個(gè)僅其可用輸出對應(yīng)于有效的報(bào)頭次序的壓縮引擎來產(chǎn)生分組分類標(biāo)識符,該壓縮引擎 的輸出即為分組分類標(biāo)識符。優(yōu)選地,共享存儲器被配置為保存多個(gè)數(shù)據(jù)結(jié)構(gòu),每個(gè)數(shù)據(jù)結(jié)構(gòu)對應(yīng)于不同數(shù)據(jù) 分組的報(bào)頭。優(yōu)選地,共享存儲器被配置為允許預(yù)處理器單元和處理器對不同數(shù)據(jù)結(jié)構(gòu)進(jìn) 行并發(fā)訪問,處理器對預(yù)處理器單元完成的數(shù)據(jù)結(jié)構(gòu)具有專有訪問權(quán)。優(yōu)選地,處理器被配置為,在開始執(zhí)行一個(gè)或更多個(gè)使得處理器調(diào)用不共享處理 器的執(zhí)行流水線的功能單元的預(yù)定指令時(shí),在與進(jìn)行調(diào)用有關(guān)的數(shù)據(jù)分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu) 中存儲該處理器的執(zhí)行流水線的狀態(tài),將共享存儲器中存儲的不同數(shù)據(jù)結(jié)構(gòu)的狀態(tài)加載到 該處理器的執(zhí)行流水線。優(yōu)選地,處理器被配置為將響應(yīng)于對功能單元的調(diào)用而返回的數(shù)據(jù)寫入處理器的 一個(gè)選定的寄存器中,使得處理器下一次加載與進(jìn)行調(diào)用有關(guān)的數(shù)據(jù)分組對應(yīng)的數(shù)據(jù)結(jié)構(gòu) 中存儲的狀態(tài)時(shí),所述數(shù)據(jù)對執(zhí)行流水線是可用的。優(yōu)選地,處理器被配置為,在調(diào)用功能 單元時(shí),為響應(yīng)于調(diào)用而返回的數(shù)據(jù)所寫入的選定寄存器設(shè)置一個(gè)標(biāo)記,此標(biāo)記防止處理 器將該寄存器用于另一個(gè)調(diào)用。優(yōu)選地,處理器被配置為,從選定的寄存器讀取數(shù)據(jù)時(shí),清 除所述標(biāo)記以便處理器能夠選擇該寄存器用于后續(xù)調(diào)用。合適的是,至少一個(gè)預(yù)定指令的執(zhí)行會使得處理器調(diào)用一個(gè)查找引擎、哈希引擎、 校驗(yàn)和或CRC計(jì)算引擎、加密引擎或者以上提到的各種引擎的任意組合。優(yōu)選地,處理器被配置為響應(yīng)于所述指令將處理器執(zhí)行的處理的各個(gè)輸出寫入每 個(gè)數(shù)據(jù)結(jié)構(gòu)中。根據(jù)本發(fā)明的第四個(gè)方面,提供了一種被配置為處理網(wǎng)絡(luò)數(shù)據(jù)分組的處理器,該處理器包括存儲多個(gè)指令序列的指令存儲器;用于存儲多個(gè)指令索引和處理器的狀態(tài)集 的處理器存儲器,每個(gè)指令索引標(biāo)識存儲在指令存儲器中的一個(gè)指令序列,每個(gè)狀態(tài)集對 應(yīng)于一個(gè)指令索引;執(zhí)行流水線,該執(zhí)行流水線可操作用于執(zhí)行由使用存儲在處理器存儲 器中的對應(yīng)狀態(tài)集的指令索引標(biāo)識的指令序列,一個(gè)指令序列和其對應(yīng)的狀態(tài)限定用于處 理特定網(wǎng)絡(luò)數(shù)據(jù)分組的執(zhí)行線程;處理器被配置為可操作用于在通過執(zhí)行由第一指令索引 標(biāo)識的一個(gè)指令序列來處理第一網(wǎng)絡(luò)數(shù)據(jù)分組時(shí),切換執(zhí)行線程以便處理第二網(wǎng)絡(luò)數(shù)據(jù)分 組,具體步驟為將執(zhí)行流水線的狀態(tài)寫入處理器存儲器的第一狀態(tài)集中;將第二狀態(tài)集 從處理器存儲器加載到執(zhí)行流水線中;執(zhí)行由第二狀態(tài)集對應(yīng)的指令索引標(biāo)識的第二指令 序列;其中處理器被配置為在按照指令順序開始執(zhí)行一個(gè)或更多個(gè)預(yù)定指令時(shí)執(zhí)行線程切 換。優(yōu)選地,第一狀態(tài)集包括一個(gè)指示,用于指示第一指令序列中執(zhí)行開始的位置。優(yōu)選地,預(yù)定指令的執(zhí)行使得處理器調(diào)用一個(gè)不能共享處理器的執(zhí)行流水線的功 能單元,在處理器中該功能單元是可被支持的。優(yōu)選地,處理器進(jìn)一步包括多個(gè)寄存器,處理器被配置為將響應(yīng)于對功能單元的 調(diào)用而返回的數(shù)據(jù)寫入選定的寄存器中。優(yōu)選地,處理器被配置為在處理器存儲器中限定的多個(gè)執(zhí)行線程之間循環(huán)切換, 并依次切換回由第一狀態(tài)集和第一指令序列所限定的執(zhí)行線程將執(zhí)行流水線的狀態(tài)寫入 處理器存儲器中與正在執(zhí)行流水線中執(zhí)行的指令序列相對應(yīng)的狀態(tài)集中;將第一狀態(tài)集加 載到執(zhí)行流水線中;繼續(xù)執(zhí)行第一指令序列。根據(jù)本發(fā)明的第五個(gè)方面,提供了一種在被配置用于處理網(wǎng)絡(luò)數(shù)據(jù)分組的處理器 的執(zhí)行線程之間進(jìn)行切換的方法,該處理器包括執(zhí)行流水線,存儲多個(gè)指令序列的指令存 儲器,存儲第一和第二指令索引和對應(yīng)的第一和第二處理器狀態(tài)集的處理器存儲器,每個(gè) 指令索引標(biāo)識一個(gè)存儲在指令存儲器中的指令序列,每個(gè)指令序列和其對應(yīng)的狀態(tài)限定用 于處理特定網(wǎng)絡(luò)數(shù)據(jù)分組的執(zhí)行線程;該方法包括在通過在執(zhí)行流水線中執(zhí)行由第一指 令索引標(biāo)識的一個(gè)指令序列來處理第一網(wǎng)絡(luò)數(shù)據(jù)分組時(shí),暫停執(zhí)行流水線的執(zhí)行;將執(zhí)行 流水線的狀態(tài)寫入處理器存儲器的第一狀態(tài)集中;將第二狀態(tài)集從處理器存儲器加載到執(zhí) 行流水線中;在執(zhí)行流水線中執(zhí)行由第二指令索引標(biāo)識的指令序列以便實(shí)施對第二網(wǎng)絡(luò)數(shù) 據(jù)分組的處理。


現(xiàn)在通過舉例方式參照附圖來描述本發(fā)明,附圖中圖1是根據(jù)本發(fā)明配置的報(bào)頭處理引擎的示意圖。圖2是報(bào)頭處理引擎在網(wǎng)絡(luò)接口設(shè)備中的布置的概況。
具體實(shí)施例方式以下描述用于使本領(lǐng)域的任何技術(shù)人員能實(shí)現(xiàn)和使用本發(fā)明,并提供于一個(gè)特定 應(yīng)用環(huán)境中。對所公開的實(shí)施方式的各種修改對于本領(lǐng)域技術(shù)人員是很顯而易見的。在此限定的基本原理可以應(yīng)用于其它實(shí)施方式和應(yīng)用而不脫離本發(fā)明的精神和 范圍。因此,本發(fā)明不局限于展示的實(shí)施方式,而是達(dá)到與在此公開的原理和特征相一致的
12最大范圍。本發(fā)明旨在提供一種具有流水線結(jié)構(gòu)(pipelined architecture)的改進(jìn)的報(bào)頭 處理引擎。在此描述的報(bào)頭處理引擎提供了一種結(jié)構(gòu)裝置,該結(jié)構(gòu)裝置用于使用一個(gè)單獨(dú) 的標(biāo)識符來標(biāo)識數(shù)據(jù)分組的多種報(bào)頭層,并且該報(bào)頭處理引擎提供了一個(gè)具有對該數(shù)據(jù)分 組報(bào)頭進(jìn)行處理所需要的全部數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。報(bào)頭處理引擎可用于處理通過網(wǎng)絡(luò)在網(wǎng)絡(luò) 接口設(shè)備上接收到的數(shù)據(jù)分組的報(bào)頭,以便允許到來的數(shù)據(jù)分組被解構(gòu)。報(bào)頭處理引擎可 用于處理網(wǎng)絡(luò)接口設(shè)備準(zhǔn)備通過網(wǎng)絡(luò)進(jìn)行傳輸?shù)臄?shù)據(jù)分組的報(bào)頭,以便允許發(fā)出的數(shù)據(jù)分 組被適當(dāng)?shù)貥?gòu)造。典型地,報(bào)頭處理引擎可被配置為對與開放系統(tǒng)互聯(lián)(OSI)模型的第2 至5層中的任意層的網(wǎng)絡(luò)協(xié)議相關(guān)的分組報(bào)頭執(zhí)行處理。注意術(shù)語“報(bào)頭”在此用于指嵌入數(shù)據(jù)分組中的網(wǎng)絡(luò)或應(yīng)用協(xié)議數(shù)據(jù)結(jié)構(gòu)。報(bào)頭 可以是由數(shù)據(jù)分組中任意點(diǎn)的一組或一串特定比特表示的任何信息——例如,在此提及的 “報(bào)頭”可以是數(shù)據(jù)分組的嵌套報(bào)頭、數(shù)據(jù)分組的頁腳(例如,表示CRC)、或者處于數(shù)據(jù)分組 中的任意其它點(diǎn)(例如,嵌入的http URL)中的數(shù)據(jù)比特集(可以表示OSI層,例如TCP協(xié) 議數(shù)據(jù))。因此,數(shù)據(jù)分組的各個(gè)報(bào)頭是按照數(shù)據(jù)分組所遵循的特定網(wǎng)絡(luò)數(shù)據(jù)協(xié)議而格式化 的數(shù)據(jù)比特集。本領(lǐng)域技術(shù)人員可以認(rèn)識到,本發(fā)明不限于數(shù)據(jù)在數(shù)據(jù)分組中出現(xiàn)的位置, 本發(fā)明的原理可被應(yīng)用于網(wǎng)路數(shù)據(jù)分組中的任何數(shù)據(jù)以便實(shí)施必要的報(bào)頭處理(例如,分 組路由,協(xié)議執(zhí)行等)。根據(jù)本發(fā)明配置的報(bào)頭處理引擎(HPE) 112的概況如圖1所示。HPE包括報(bào)頭識別 器(HR) 101、報(bào)頭分割器(HS) 103和調(diào)度器(dispatcher) 107。報(bào)頭識別器和報(bào)頭分割器被 設(shè)置為讀取將被HPE處理的數(shù)據(jù)分組的報(bào)頭。HPE不需要數(shù)據(jù)分組的有效載荷數(shù)據(jù),因?yàn)榕c 分組報(bào)頭處理有關(guān)的全部信息都能在報(bào)頭中找到。根據(jù)有效載荷數(shù)據(jù)而計(jì)算的校驗(yàn)和以及 其它參數(shù)不由HPE處理——這些由網(wǎng)絡(luò)控制器內(nèi)的其它專用引擎來執(zhí)行。報(bào)頭識別器、報(bào)頭分割器和調(diào)度器由它們實(shí)現(xiàn)的功能來限定。HPE的各個(gè)組件可實(shí) 現(xiàn)為離散集成電路,或者兩個(gè)或更多個(gè)組件可以實(shí)現(xiàn)為單獨(dú)的集成電路。HPE可以實(shí)現(xiàn)為 大型集成電路的一部分,例如網(wǎng)路接口設(shè)備的控制器。報(bào)頭識別器和報(bào)頭分割器對需要被 HPE處理的部分或全部形成的數(shù)據(jù)分組的報(bào)頭進(jìn)行讀取訪問。這些數(shù)據(jù)分組通常是在網(wǎng)絡(luò) 接口設(shè)備的緩存器中通過網(wǎng)絡(luò)被接收,或者在準(zhǔn)備通過網(wǎng)絡(luò)傳輸?shù)倪^程中。根據(jù)本發(fā)明配 置的HPE可被用于網(wǎng)絡(luò)接口設(shè)備的發(fā)送和接收路徑之一或全部兩者。圖2示出了根據(jù)本發(fā)明配置的報(bào)頭處理引擎在網(wǎng)絡(luò)接口設(shè)備中的布置。網(wǎng)絡(luò)接口 設(shè)備202被設(shè)置為在網(wǎng)絡(luò)201和數(shù)據(jù)處理系統(tǒng)203(例如服務(wù)器或桌面計(jì)算機(jī))之間傳送 數(shù)據(jù)分組。在第一個(gè)例子中,設(shè)想情景為HPE實(shí)現(xiàn)在NIC 202的接收路徑上。這種情況下,NIC 包括接收緩存205,從網(wǎng)絡(luò)接收的數(shù)據(jù)分組在傳送給數(shù)據(jù)處理系統(tǒng)之前被存儲在該接收緩 存205中。為使接收到的數(shù)據(jù)分組能被正確地處理,網(wǎng)絡(luò)接口設(shè)備必須處理數(shù)據(jù)分組的報(bào) 頭。報(bào)頭攜帶著網(wǎng)絡(luò)接口設(shè)備需要以便了解如何處理各個(gè)分組的信息,包括,例如分發(fā)給 特定虛擬接口必需的路由信息、分組遵循的多種協(xié)議的參數(shù)、校驗(yàn)和等。接收緩存205中的分組可以被報(bào)頭處理引擎112訪問,以便HPE的報(bào)頭識別器101 和分割器103讀取已接收的數(shù)據(jù)分組的報(bào)頭(可能通過一個(gè)中間緩存)??刂破?04表示 NIC的處理功能并被配置為根據(jù)HPE的輸出來處理接收到的數(shù)據(jù)分組——例如,將有效載荷數(shù)據(jù)寫入數(shù)據(jù)處理系統(tǒng)的存儲器中的特定位置并將事件寫入事件隊(duì)列中。HPE可被配置為執(zhí)行對接收到的網(wǎng)絡(luò)數(shù)據(jù)分組進(jìn)行適當(dāng)處理所需要的多種報(bào)頭處 理。例如,HPE對報(bào)頭進(jìn)行的處理可以提供網(wǎng)絡(luò)接口設(shè)備需要的信息以便實(shí)施將接收到的 數(shù)據(jù)分組(或者至少是它們的有效載荷數(shù)據(jù))分發(fā)到合適的接收隊(duì)列中。通常這要求HPE 在指示IP地址和端口組合之間的對應(yīng)關(guān)系(以IP數(shù)據(jù)分組為例)的轉(zhuǎn)發(fā)表和接收隊(duì)列中 進(jìn)行一個(gè)或更多個(gè)查找。HPE進(jìn)行的處理也可以用于增強(qiáng)網(wǎng)絡(luò)協(xié)議。例如,實(shí)施防火墻或者防止拒絕服務(wù)攻
擊οHPE進(jìn)行的處理也可以包括修改接收到的數(shù)據(jù)分組的內(nèi)容,以便進(jìn)行例如網(wǎng)絡(luò)地 址轉(zhuǎn)換(NAT)的操作,從網(wǎng)絡(luò)地址到支持多訪客操作系統(tǒng)的虛擬系統(tǒng)所支持的地址空間的 轉(zhuǎn)換,或者用作網(wǎng)絡(luò)之間的交換機(jī)或橋接設(shè)備的網(wǎng)絡(luò)接口設(shè)備的網(wǎng)絡(luò)地址轉(zhuǎn)換,會要求這 樣的操作。在第二個(gè)例子中,設(shè)想情景為HPE實(shí)現(xiàn)在NIC 202的發(fā)送路徑中。這種情況下,NIC 包括發(fā)送緩存205,從數(shù)據(jù)處理系統(tǒng)接收的數(shù)據(jù)分組在傳送給網(wǎng)絡(luò)之前被存儲在該發(fā)送緩 存205中。NIC可以被配置為執(zhí)行在將數(shù)據(jù)分組傳送到網(wǎng)絡(luò)上之前需要進(jìn)行的任何報(bào)頭處 理。例如,NIC可以被配置為使用HPE 112對數(shù)據(jù)分組進(jìn)行過濾和協(xié)調(diào)以便傳輸?shù)骄W(wǎng)絡(luò)上。 只具有部分形成的報(bào)頭的任何數(shù)據(jù)分組在被傳輸?shù)骄W(wǎng)絡(luò)上之前必須由NIC完成。例如,如果NIC能夠安全地提供對虛擬系統(tǒng)的訪客操作系統(tǒng)的直接訪問,則NIC必 須檢查全部的出站流量以確保其只包含合法和非分裂的分組。換句話說,如果NIC支持與 訪客操作系統(tǒng)的直接通信(即,使用虛擬接口并且不通過管理程序或者等同物),則必須對 該訪客OS的通信進(jìn)行過濾以便確保訪客OS只與系統(tǒng)的特許模式實(shí)體(即內(nèi)核或者管理程 序)所允許訪問的網(wǎng)絡(luò)地址進(jìn)行通信。這有助于防止訪客OS攔截其它訪客OS或管理程序 的網(wǎng)絡(luò)連接時(shí)任何惡意代碼的運(yùn)行。為了實(shí)施分組過濾,NIC需要決定形成的數(shù)據(jù)分組是 發(fā)布在物理網(wǎng)絡(luò)中還是丟棄掉。因此HPE被配置為提供做出此決定所針對的數(shù)據(jù)。由于分 組過濾典型的是基于出站數(shù)據(jù)分組的源的標(biāo)識符,則通常包含來自訪客OS的各個(gè)數(shù)據(jù)分 組的報(bào)頭的源網(wǎng)絡(luò)地址。在特定的虛擬環(huán)境中,要求NIC用作最近的上行交換機(jī)的代理。這種情況下,HPE 可以被配置為提供可用于做出決定的信息,即確定出站數(shù)據(jù)分組是通過物理網(wǎng)絡(luò)進(jìn)行傳輸 還是回送給另一個(gè)本地操作系統(tǒng),或者都作為多播操作的一部分。HPE可以被進(jìn)一步配置為在傳輸數(shù)據(jù)分組之前對其進(jìn)行修改。例如,在運(yùn)行一個(gè)或 更多個(gè)VLAN的網(wǎng)絡(luò)中,HPE可以被配置為寫入或更新存儲在數(shù)據(jù)分組的報(bào)頭中的地址信息 或其它參數(shù),以確保數(shù)據(jù)分組通過合適的虛擬和物理網(wǎng)絡(luò)被路由。這就要求HPE執(zhí)行虛擬 網(wǎng)絡(luò)地址和物理網(wǎng)絡(luò)地址之間的地址轉(zhuǎn)換。因此,HPE可被配置為,使用通過在保持網(wǎng)絡(luò)的 VLAN信息的NIC的轉(zhuǎn)發(fā)表中進(jìn)行一個(gè)或更多個(gè)查找而建立的數(shù)據(jù),來更新VLAN報(bào)頭。在網(wǎng) 絡(luò)接口設(shè)備上完成VLAN報(bào)頭參數(shù)是本領(lǐng)域公知的,但是現(xiàn)有技術(shù)的設(shè)備不是使用此處描 述的HPE來執(zhí)行這種完成操作。通常,網(wǎng)絡(luò)接口設(shè)備不需要對VLAN報(bào)頭進(jìn)行復(fù)雜操作,除 非該網(wǎng)絡(luò)接口設(shè)備被用作外部交換機(jī)的代理。HPE也可以被配置為增強(qiáng)網(wǎng)絡(luò)接口設(shè)備支持的數(shù)據(jù)流的服務(wù)質(zhì)量(QoS)。例如, HPE可以被配置為增強(qiáng)特定流量類型、網(wǎng)絡(luò)端點(diǎn)或虛擬接口的QoS。這通常涉及HPE從它的報(bào)頭(例如,利用傳送請求所處的DMA信道,或者利用分組中的一些數(shù)據(jù),例如VLAN、MAC地 址或IP流量信息)中識別出數(shù)據(jù)分組屬于特定流量類型或虛擬接口,并根據(jù)存儲在網(wǎng)絡(luò)接 口設(shè)備(例如轉(zhuǎn)發(fā)表)中的參數(shù)將一個(gè)或更多個(gè)對應(yīng)的QoS參數(shù)寫入報(bào)頭中。因此,HPE 可被配置為識別屬于要求特定QoS級別的視頻流的數(shù)據(jù)分組,并將適當(dāng)?shù)腝oS參數(shù)寫入這 些數(shù)據(jù)分組中以便根據(jù)該QoS級別來處理數(shù)據(jù)分組。隨著在數(shù)據(jù)分組中嵌入QoS參數(shù),HPE 也優(yōu)選地用作QoS執(zhí)行點(diǎn)并且確保從NIC進(jìn)入網(wǎng)絡(luò)的分組符合要求的QoS級別。參照圖1,現(xiàn)在描述根據(jù)本發(fā)明配置的報(bào)頭處理引擎的操作。報(bào)頭識別器101執(zhí)行分組報(bào)頭處理的第一步,解析數(shù)據(jù)分組以便識別組成數(shù)據(jù)分 組報(bào)頭的多種報(bào)頭部分。報(bào)頭識別器讀取網(wǎng)絡(luò)分組102的報(bào)頭,其通常具有與網(wǎng)絡(luò)中使用 的多種網(wǎng)絡(luò)協(xié)議相關(guān)的若干層。例如,以太網(wǎng)數(shù)據(jù)分組可以包括以太網(wǎng)、VLAN、IPv4和TCP 報(bào)頭。報(bào)頭識別器例如通過以下方式來識別數(shù)據(jù)分組的復(fù)合報(bào)頭中存在的各單獨(dú)報(bào)頭查 找諸如復(fù)合報(bào)頭中字段的長度這樣的特征,復(fù)合報(bào)頭的格式和復(fù)合報(bào)頭中的特定標(biāo)志或數(shù) 據(jù)比特。報(bào)頭識別器101識別組成數(shù)據(jù)分組報(bào)頭的各個(gè)獨(dú)立報(bào)頭以及各個(gè)獨(dú)立報(bào)頭在數(shù) 據(jù)分組中出現(xiàn)的偏移。優(yōu)選地,報(bào)頭識別器實(shí)現(xiàn)為具有專用指令集的微處理器。該指令集足 夠大以滿足解析報(bào)頭處理引擎需要處理的多種報(bào)頭層的要求。但是,對于典型的支持TCP/ IP通信的以太網(wǎng)接口設(shè)備,總的指令位數(shù)只能為32比特那么小。報(bào)頭識別器解析數(shù)據(jù)分組 報(bào)頭時(shí),執(zhí)行指令以確定例如分組報(bào)頭中報(bào)頭層的長度、報(bào)頭層的類型、是否到達(dá)了報(bào)頭的 結(jié)尾以及報(bào)頭層在數(shù)據(jù)分組中的偏移。各個(gè)指令的輸出為分割器103定義一個(gè)命令,該命 令包括跳轉(zhuǎn)向量形式的指令,該指令是指分割器的指令存儲器115中的指令。形成該命令 的特定的分割器指令集取決于命令所處理的報(bào)頭的特定類型。一個(gè)或更多個(gè)命令指示分割 器如何處理目標(biāo)數(shù)據(jù)分組的嵌套報(bào)頭中的各個(gè)層。給定命令的參數(shù)通常將對應(yīng)報(bào)頭在數(shù)據(jù) 分組中的位置(即其偏移)和報(bào)頭的類型告知分割器。如果報(bào)頭識別器形成包括報(bào)頭類型和描述多種報(bào)頭在數(shù)據(jù)分組中的偏移的位置 信息的數(shù)據(jù)字(下文中的“parserjnfo”),將是有利的。隨著HR 101解析報(bào)頭,parser info字可以逐比特地建立起來。通過將此字提供給FIFO消息緩存,接收/發(fā)送(視情況而 定)數(shù)據(jù)路徑上的其它處理實(shí)體可以使用報(bào)頭識別器生成的信息。例如,支持HRE的網(wǎng)絡(luò) 接口設(shè)備中的校驗(yàn)和卸載引擎可使用由報(bào)頭識別器解析并形成parserjnfo字的信息。報(bào)頭分割器103通過鏈路108 (可以是簡單的FIFO緩存)從報(bào)頭識別器101接收 命令。分割器是具有存儲在存儲器115中的專用指令集的微處理器,分割器指令由從報(bào)頭 識別器接收到的命令中的跳轉(zhuǎn)矢量指向。響應(yīng)于各個(gè)命令,報(bào)頭分割器通過使用與命令一 起傳送的參數(shù)來執(zhí)行與該命令中的指令跳轉(zhuǎn)矢量對應(yīng)的指令集。分割器執(zhí)行的指令構(gòu)成寄 存器文件104,該寄存器文件104包括調(diào)度器107處理分組報(bào)頭所需的全部數(shù)據(jù)。寄存器文件包括分割器從數(shù)據(jù)分組報(bào)頭中讀取的數(shù)據(jù)和分割器根據(jù)數(shù)據(jù)分組報(bào) 頭的內(nèi)容產(chǎn)生的信息。為了處理數(shù)據(jù)分組報(bào)頭的特定層,調(diào)度器至少需要報(bào)頭數(shù)據(jù)的一部 分;對于這些層,來自報(bào)頭識別器的命令使得分割器對鏈路109上的數(shù)據(jù)分組執(zhí)行指令,該 指令讀取需要的數(shù)據(jù)并將其寫入寄存器文件。調(diào)度器還需要知道數(shù)據(jù)分組的結(jié)構(gòu);分割器 通過為數(shù)據(jù)分組在寄存器文件中寫入唯一地標(biāo)識數(shù)據(jù)分組的成分的分組分類標(biāo)識符來將 結(jié)構(gòu)信息傳遞給調(diào)度器。
分割器生成唯一地標(biāo)識報(bào)頭類型和其在數(shù)據(jù)分組報(bào)頭中的次序的分組分類標(biāo)識 符。優(yōu)選地,分割器在保存分割器執(zhí)行的指令結(jié)果的多個(gè)寄存器中,形成分組分類標(biāo)識符。 例如,以太網(wǎng)網(wǎng)卡的報(bào)頭處理引擎具有以下子類寄存器mac_class 1比特在分組具有多播目的MAC地址時(shí)設(shè)置eth_base_class 4比特標(biāo)識基本以太網(wǎng)報(bào)頭,例如以太網(wǎng),LLCeth_tag_class 4比特 標(biāo)識任何標(biāo)記的存在,例如VLAN,VNTagI3_class4比特標(biāo)識基本以太網(wǎng)之后的下面的協(xié)議,例如IPv4,IPv6,IPv4-fragment, IPv6-fragment, FCoE,ARPI4_class4比特標(biāo)識第4層協(xié)議,例如TCP,UDP當(dāng)分割器在報(bào)頭識別器生成的命令的控制下遍歷報(bào)頭時(shí),寄存器被設(shè)置。通過考慮以下示例,能更好地理解建立寄存器文件的方法。報(bào)頭識別器解析目標(biāo) 數(shù)據(jù)分組并識別基本以太網(wǎng)報(bào)頭。因此,報(bào)頭識別器生成向分割器指示被識別的報(bào)頭的類 型(基本以太網(wǎng))和偏移(其位置)的命令。分割器接收該命令并調(diào)用與指示基本以太網(wǎng) 報(bào)頭存在的命令對應(yīng)的指令集。這些指令使得分割器為數(shù)據(jù)分組將基本以太網(wǎng)報(bào)頭的預(yù)定 部分讀取到寄存器文件,并且將一個(gè)或更多個(gè)指示基本以太網(wǎng)報(bào)頭存在的值寫入分割器的 適當(dāng)寄存器,作為分組分類標(biāo)識符形成的步驟。一旦到達(dá)分組報(bào)頭的末尾,分割器將完整的 分組分類標(biāo)識符寫入寄存器文件中。通常,一個(gè)或更多個(gè)指令使得分組分類被寫入寄存器文件中,這些指令例如由以 下命令觸發(fā)來自報(bào)頭識別器的指示報(bào)頭末尾的命令,來自報(bào)頭識別器的指示必要地結(jié)束 數(shù)據(jù)分組報(bào)頭的報(bào)頭層的命令,或者來自報(bào)頭識別器的指示未被識別的報(bào)頭層的命令。如果需要分組分類標(biāo)識符能夠分辨分組報(bào)頭層的全部不同排列,則分組分類標(biāo)識 符將需要是很大的值。例如,為了分辨支持典型以太網(wǎng)網(wǎng)絡(luò)接口設(shè)備的分組報(bào)頭層的全部 排列,分組分類標(biāo)識符必須能夠編碼超過130000個(gè)不同的值。因此分割器被配置為生成只 分辨報(bào)頭層的有效排列的分組分類標(biāo)識符,是有利的。例如,單播/以太網(wǎng)/VLAN//IPv4/ TCP的分組組成是有效的,但單播/以太網(wǎng)/VLAN//IPV4-fragment/TCP的分組組成是無效 的。因此不需要為后者組成分配分組分類值,可以優(yōu)選地從分組分類標(biāo)識符的值域范圍中 排除其可能性。對于典型的以太網(wǎng)網(wǎng)絡(luò)接口設(shè)備,有效排列的數(shù)目大約為480,這表示需要 編碼的報(bào)頭排列的數(shù)量大大降低了。優(yōu)選地,一旦分割器形成分組組成的標(biāo)識符,就可以在 分割器上執(zhí)行分組分類壓縮。例如,當(dāng)從分割器的寄存器中讀取出分組組成標(biāo)識符并傳送 給寄存器文件時(shí),可執(zhí)行壓縮。優(yōu)選地,在分割器的寄存器輸出部分的使用組合邏輯的硬件 中執(zhí)行壓縮。最有利的是,處于壓縮形式的分組分類標(biāo)識符是包含可被執(zhí)行以便實(shí)施目標(biāo)數(shù)據(jù) 分組報(bào)頭的處理的指令集的調(diào)度器的指令存儲器116中的條目的文字引用。這使得調(diào)度器 可以直接訪問指令集,其通過讀取數(shù)據(jù)分組的分組分類標(biāo)識符來為特定數(shù)據(jù)分組執(zhí)行指令 集——不需要存儲器管理單元,并且在查找正確的指令集時(shí)不浪費(fèi)處理器周期。因?yàn)楦鱾€(gè) 分組分類標(biāo)識符對應(yīng)于指令存儲器中的條目,所以將分組分類標(biāo)識符壓縮并僅表示有效的 報(bào)頭組合是非常重要的如果分組分類標(biāo)識符沒有被壓縮,則指令存儲器將會是非常巨大 和浪費(fèi)以包含對應(yīng)于不可能出現(xiàn)的數(shù)據(jù)分組組成的無效分組分類標(biāo)識符的全部無用條目。優(yōu)選地,將完成的分組分類標(biāo)識符(已壓縮的或未壓縮的)也寫入合適的FIFO消息緩存中,以便允許接收/發(fā)送(視情況而定)數(shù)據(jù)路徑上的其它處理實(shí)體使用分割器生 成的信息。分組分類標(biāo)識符可以添加到以上描述的parserjnfo字中。寄存器文件中的分組分類標(biāo)識符為調(diào)度器識別至少一些指令,其在寄存器文件中 包含的數(shù)據(jù)上執(zhí)行以便實(shí)施對目標(biāo)數(shù)據(jù)分組報(bào)頭的處理。調(diào)度器將分組分類標(biāo)識符用作存 儲在其指令存儲器116中的指令集的跳轉(zhuǎn)向量。換句話說,分組分類標(biāo)識符將目標(biāo)數(shù)據(jù)分 組報(bào)頭的組成告知調(diào)度器,并在其指令存儲器中識別出要用于處理該組成的數(shù)據(jù)分組報(bào)頭 的預(yù)定指令集。重要的是,各個(gè)解析后的數(shù)據(jù)分組的寄存器文件由分割器來構(gòu)造,使得其標(biāo)識要 由調(diào)度器執(zhí)行的指令(執(zhí)行線程)的次序,并且各個(gè)解析后的數(shù)據(jù)分組的寄存器文件包括 執(zhí)行那些指令所需的分組報(bào)頭的任意部分。因此,各個(gè)寄存器文件包括調(diào)度器處理給定分 組分類的數(shù)據(jù)分組所需的全部數(shù)據(jù)。為了處理這些報(bào)頭,調(diào)度器不必訪問分組報(bào)頭。識別 給調(diào)度器的指令所需的全部信息與分組分類標(biāo)識符一起存在于寄存器文件中,該分組分類 標(biāo)識符標(biāo)識處理器執(zhí)行以便實(shí)施目標(biāo)分組報(bào)頭處理的指令的次序。因此,寄存器文件告知 調(diào)度器執(zhí)行哪些指令,并將執(zhí)行那些指令所需的全部信息提供給調(diào)度器。寄存器文件可包 含調(diào)度器執(zhí)行流水線的至少一些初始狀態(tài)。調(diào)度器處理器107通過鏈路110訪問寄存器文 件。調(diào)度器107使用分割器構(gòu)造的寄存器文件執(zhí)行報(bào)頭處理。通常要求報(bào)頭處理是 為了確保接收到的數(shù)據(jù)分組被適當(dāng)?shù)靥幚?ΗΡΕ實(shí)現(xiàn)在網(wǎng)絡(luò)接口設(shè)備的接收路徑上的情 況),或者確保用于傳輸?shù)臄?shù)據(jù)分組的報(bào)頭被適當(dāng)?shù)赝瓿刹⑶覕?shù)據(jù)分組在網(wǎng)絡(luò)上被正確地 路由(ΗΡΕ實(shí)現(xiàn)在網(wǎng)絡(luò)接口設(shè)備的發(fā)送路徑上的情況)。優(yōu)選地,調(diào)度器是具有專用指令集 的RISC處理器。為通過網(wǎng)絡(luò)接收的數(shù)據(jù)分組執(zhí)行的處理步驟可以包括在轉(zhuǎn)發(fā)表中執(zhí)行查 找,執(zhí)行網(wǎng)絡(luò)地址轉(zhuǎn)換,執(zhí)行接收側(cè)定標(biāo)(RSS),以及計(jì)算哈希值(可以在任何預(yù)先列出的 步驟中使用)。為通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)分組執(zhí)行的處理步驟可以包括在轉(zhuǎn)發(fā)表中執(zhí)行查 找,執(zhí)行網(wǎng)絡(luò)地址轉(zhuǎn)換,完成校驗(yàn)和或CRC值,以及計(jì)算哈希值(可以在任何預(yù)先列出的步 驟中使用)。因此,調(diào)度器包括例如連接到查找表(例如轉(zhuǎn)發(fā)表)的查找邏輯和哈希生成
ο為了同步報(bào)頭處理引擎的組件的操作,確保報(bào)頭識別器、分割器和調(diào)度器以高效 方式工作的控制器邏輯114非常有用。其它結(jié)構(gòu)也是可能的,但是使用中央控制器邏輯是 優(yōu)選的,因?yàn)槠浣档土?HPE組件的復(fù)雜性??刂破鞔_保當(dāng)前數(shù)據(jù)分組在適當(dāng)?shù)木彺嬷袑?bào) 頭識別器和分割器是可用的,直到這兩個(gè)組件完成了數(shù)據(jù)分組。并且,一旦分割器完成了寄 存器文件的構(gòu)造,則控制器將寄存器文件排隊(duì)送至調(diào)度器并且(如果使用了多個(gè)寄存器文 件)控制器向分割器分配新的寄存器文件用于下一個(gè)數(shù)據(jù)分組,使得在調(diào)度器處理當(dāng)前數(shù) 據(jù)分組的同時(shí),分割器可以開始為下一個(gè)數(shù)據(jù)分組構(gòu)造寄存器文件。控制器邏輯可附加地被配置為包含緩存,需要被HPE處理的至少一部分?jǐn)?shù)據(jù)分組 被寫入該緩存中。報(bào)頭識別器和分割器被配置為從緩存中讀取用于處理的當(dāng)前數(shù)據(jù)分組。 最優(yōu)選地,緩存是往復(fù)式(Ping-pang)緩存,其包括兩個(gè)部分第一部分,下一個(gè)需要處理 的數(shù)據(jù)分組在其中備份;以及第二部分,其保存報(bào)頭識別器和分割器訪問的當(dāng)前數(shù)據(jù)分組。 一旦報(bào)頭識別器和分割器都完成了當(dāng)前數(shù)據(jù)分組并且下一個(gè)數(shù)據(jù)分組加載到了緩存中,兩 個(gè)緩存部分進(jìn)行交換。使用控制器邏輯支持的緩存代替讓報(bào)頭識別器和分割器直接訪問接收/發(fā)送(視情況而定)緩存,降低了需要的邏輯的復(fù)雜性。如果存儲器支持多個(gè)寄存器文件(圖1中示出了三個(gè)104,105,106),將是有利 的。這出于兩個(gè)原因首先,這允許分割器103和調(diào)度器107對寄存器文件進(jìn)行并行操作, 即調(diào)度器可以加載一個(gè)寄存器文件,并因此在分割器構(gòu)造另一個(gè)寄存器文件的同時(shí)處理對 應(yīng)的分組報(bào)頭;其次,這允許調(diào)度器在存儲在寄存器文件中的狀態(tài)所表示的處理器線程之 間執(zhí)行上下文切換。該第二個(gè)益處對于隱藏報(bào)頭處理中固有的查找和哈希計(jì)算的延遲時(shí)間 是重要的。調(diào)度器執(zhí)行上下文切換的能力實(shí)質(zhì)上允許調(diào)度器執(zhí)行多線程處理。當(dāng)調(diào)度器處 理器切換寄存器文件時(shí),處理器實(shí)際上切換了執(zhí)行線程,因?yàn)楦鱾€(gè)執(zhí)行線程由存儲在寄存 器文件中的處理器狀態(tài)和指令來限定。優(yōu)選地,調(diào)度器被配置為當(dāng)處理器調(diào)用功能而導(dǎo)致 處理器等待時(shí)(即在一個(gè)或更多個(gè)處理器周期處于空閑),切換寄存器文件。以這種方式, 調(diào)度器可以同時(shí)處理多個(gè)線程(因此處理多個(gè)分組報(bào)頭)。如果處理器為當(dāng)前線程調(diào)用功 能而導(dǎo)致處理器等待時(shí),另一個(gè)寄存器文件還未準(zhǔn)備執(zhí)行,則處理器繼續(xù)執(zhí)行當(dāng)前線程。調(diào) 度器調(diào)用的功能可以包括計(jì)算單元(例如被配置用于計(jì)算哈希值的計(jì)算單元)和查找單元 (例如被配置用于在轉(zhuǎn)發(fā)表中查找條目的查找單元),換句話說,是那些不共享調(diào)度器的執(zhí) 行流水線的功能單元。當(dāng)調(diào)度器切換寄存器文件時(shí),處理器將其執(zhí)行流水線的當(dāng)前狀態(tài)寫入適當(dāng)?shù)募拇?器文件中以便保存該執(zhí)行線程。然后調(diào)度器處理器從另一個(gè)限定不同執(zhí)行線程的寄存器文 件(可以是新的寄存器文件,或者是先前在調(diào)度器被部分處理過的寄存器文件)中讀取狀 態(tài),并使用存儲在該另一個(gè)寄存器文件中的調(diào)度器的執(zhí)行流水線的任意狀態(tài)開始執(zhí)行該線 程。以這種方式,調(diào)度器可以從先前處理被中斷的那個(gè)點(diǎn)繼續(xù)處理不同數(shù)據(jù)分組的報(bào)頭。因 此,無論何時(shí)調(diào)度器不再處理執(zhí)行線程,該線程的狀態(tài)就被存儲在其對應(yīng)的寄存器文件中。 一旦導(dǎo)致處理器切換上下文的計(jì)算完成,將結(jié)果寫入適當(dāng)?shù)募拇嫫魑募?,使得?dāng)處理器 重新加載寄存器文件時(shí),可以繼續(xù)執(zhí)行對應(yīng)的線程。在此描述的特征允許調(diào)度器處理器在執(zhí)行線程之間切換,以有效地提供多線程性 能。這是因?yàn)橹噶钚蛄泻蛨?zhí)行指令序列時(shí)執(zhí)行流水線的狀態(tài)在各個(gè)時(shí)刻限定那些指令的執(zhí) 行線程。調(diào)度器可以通過在調(diào)度器中使用BUSY標(biāo)記來追蹤哪些功能單元在忙著執(zhí)行計(jì)算 或者查找(比方說)。因此,當(dāng)調(diào)度器調(diào)用功能單元時(shí),設(shè)置該單元的繁忙標(biāo)記以確保由該 單元執(zhí)行的操作結(jié)果不被重寫。更有利的是,功能單元分別支持流水線操作,并且具有多個(gè) BUSY標(biāo)記對應(yīng)于調(diào)度器處理器的寄存器中的多個(gè)不同輸出位置。這確保了這些功能單元被 高效使用。例如,調(diào)度器可以為功能單元設(shè)置四個(gè)BUSY標(biāo)記,它們對應(yīng)于四個(gè)調(diào)度器寄存 器。在線程執(zhí)行過程中,當(dāng)調(diào)度器調(diào)用該單元來執(zhí)行第一操作時(shí),其設(shè)置對應(yīng)于第一寄存器 的第一 BUSY標(biāo)記,其中該單元將第一操作的結(jié)果輸出到該第一寄存器中。同時(shí),調(diào)度器可 切換為執(zhí)行另一個(gè)線程,并且需要對同一個(gè)功能單元進(jìn)行第二次調(diào)用以執(zhí)行第二操作。因 為已設(shè)置第一 BUSY標(biāo)記,調(diào)度器不會重寫第一操作的結(jié)果。因此調(diào)度器將第二操作在該單 元排隊(duì)并設(shè)置對應(yīng)于第二寄存器的第二 BUSY標(biāo)記,其中該單元將第二操作的結(jié)果寫入到 該第二寄存器中。一旦各個(gè)操作都完成了,執(zhí)行單元將操作結(jié)果寫入相應(yīng)的寄存器中。調(diào)度器可以指示功能單元將各個(gè)查找操作的輸出寫入哪個(gè)寄存器中。另選地,調(diào)度器可以讓 功能單元以循環(huán)(round-robin)方式寫入其寄存器中。當(dāng)調(diào)度器再次加載進(jìn)行功能單元的調(diào)用的線程,并從相應(yīng)寄存器中讀取功能單元 的輸出時(shí),將該寄存器的BUSY標(biāo)記清除。查找單元的輸出可以在處理器執(zhí)行隨后的指令時(shí) 使用,或者查找單元的輸出可以按調(diào)度器中隨后執(zhí)行的指令的要求被寫入適當(dāng)?shù)募拇嫫魑?件中。以這種方式,調(diào)度器可與正在執(zhí)行的線程無關(guān)地同時(shí)追蹤功能單元的四個(gè)不同操作。優(yōu)選地,調(diào)度器支持使得其在由寄存器文件表示的可用處理器線程之間切換上下 文的指令。該指令可以在特定處理事件發(fā)生時(shí)被觸發(fā),例如需要時(shí)間來完成(即占用多個(gè) 處理器周期)因而需要調(diào)度器等待的那些事件。例如,該指令可以在調(diào)度器必須在轉(zhuǎn)發(fā)表 (或類似物)中執(zhí)行查找時(shí)被觸發(fā),或者調(diào)度器必須執(zhí)行哈希計(jì)算時(shí)被觸發(fā)。注意,特定計(jì) 算(例如預(yù)定類型的哈希計(jì)算)可以響應(yīng)于調(diào)度器的調(diào)用而以調(diào)度器的外部邏輯來處理。一旦線程執(zhí)行完成,還未存在于對應(yīng)寄存器文件中的任何處理結(jié)果被寫入寄存器 文件中。已完成的寄存器文件包括查找結(jié)果、分組字段、哈希值、以及位于實(shí)現(xiàn)報(bào)頭處理引 擎的網(wǎng)絡(luò)接口設(shè)備的接收/發(fā)送(視情況而定)路徑上的后續(xù)處理單元所需的其它信息。 因此已完成的寄存器文件告知網(wǎng)絡(luò)接口設(shè)備如何處理數(shù)據(jù)分組。對于接收到的數(shù)據(jù)分組, 其可以包括將分組的有效載荷數(shù)據(jù)寫入何處,分組是否有效(即其被正確地形成,其校驗(yàn) 和有效),在附接的數(shù)據(jù)處理系統(tǒng)的哪個(gè)處理器上引發(fā)中斷(如果使用了 RSS),等等。對于 準(zhǔn)備傳輸?shù)臄?shù)據(jù)分組,該信息可以包括數(shù)據(jù)分組要發(fā)送到的地址,包括在分組報(bào)頭中的哈 ?;蛐r?yàn)和信息,等等。寄存器文件(或至少后續(xù)的分組處理所需要的部分寄存器文件)不需要立即輸出 到消息FIFO(或其它數(shù)據(jù)結(jié)構(gòu))中,因?yàn)閷⒓拇嫫魑募?duì)列按照與各自的分組緩存中的數(shù) 據(jù)分組隊(duì)列相同的順序來保持是重要的。因此寄存器文件(或其所需要的部分)按此順序 從HPE輸出,使得接收/發(fā)送路徑上的后續(xù)處理單元可以使用HPE產(chǎn)生的相應(yīng)寄存器文件 信息直接地處理各個(gè)數(shù)據(jù)分組。因此,本發(fā)明提供了一種報(bào)頭處理引擎的改進(jìn)結(jié)構(gòu)。HPE的功能按照新的方式劃分 為三個(gè)組件報(bào)頭識別器,分割器和調(diào)度器。第一階段,報(bào)頭識別器識別目標(biāo)數(shù)據(jù)分組中有 哪些報(bào)頭以及這些報(bào)頭在數(shù)據(jù)分組中的偏移。這允許報(bào)頭識別器只將處理各個(gè)報(bào)頭層所需 的那些指令提供給分割器,并為調(diào)度器形成寄存器文件。接下來,寄存器文件將調(diào)度器處理 報(bào)頭所需的指令,隨同處理報(bào)頭時(shí)需要的報(bào)頭自身部分和唯一地標(biāo)識分組組成的分組分類 標(biāo)識符提供給調(diào)度器。因此調(diào)度器不需要訪問分組報(bào)頭,因而不需要在調(diào)度器進(jìn)行處理時(shí) 將分組報(bào)頭本身保存在緩存中。這種HPE結(jié)構(gòu)有幾個(gè)優(yōu)點(diǎn)1、通過將HPE的功能拆分為三個(gè)并行操作的組件,大大提高了 HPE的效率。這使 得包括該HPE的IC可以使用較低的時(shí)鐘頻率,從而節(jié)省功率并使得HPE可以使用較低級的 處理技術(shù)來實(shí)現(xiàn),由此降低了 HPE的制造成本。2、因?yàn)閷ㄕ{(diào)度器執(zhí)行報(bào)頭處理所需的全部信息的寄存器文件提供給了調(diào)度 器,所以在調(diào)度器中執(zhí)行的指令(固件代碼)可以是很確定的。這減少了 HPE操作的抖動, 因?yàn)樵谡{(diào)度器中處理各個(gè)數(shù)據(jù)分組所需的時(shí)間對于HPE處理的全部各種分組類型來說都 是基本恒定的。類似地,在報(bào)頭識別器和分割器中解析數(shù)據(jù)分組報(bào)頭的時(shí)間成本對于HPE處理的全部各種分組類型來說都是基本恒定的。3、此外,因?yàn)閷ㄕ{(diào)度器執(zhí)行報(bào)頭處理所需的全部信息的寄存器文件提供給調(diào) 度器,所以在順序的解析操作中調(diào)度器不必訪問目標(biāo)數(shù)據(jù)分組的報(bào)頭。這導(dǎo)致了與現(xiàn)有技 術(shù)中的報(bào)頭處理引擎相比,操作的延遲時(shí)間降低。現(xiàn)有技術(shù)的HPE以順序方式進(jìn)行報(bào)頭處 理,使得每當(dāng)調(diào)度器需要從目標(biāo)數(shù)據(jù)分組的報(bào)頭中讀取時(shí)其數(shù)據(jù)路徑流水線就得停頓。這 就要求其數(shù)據(jù)路徑流水線具有額外的復(fù)雜度以解決這種停頓。4、通過避免將數(shù)據(jù)分組的全部報(bào)頭復(fù)制到網(wǎng)絡(luò)接口設(shè)備的寄存器組中,該HPE的 存儲器要求比現(xiàn)有技術(shù)中的報(bào)頭處理引擎降低。這允許網(wǎng)絡(luò)接口設(shè)備支持更少量的存儲 器,使得根據(jù)本發(fā)明配置的網(wǎng)絡(luò)接口設(shè)備的設(shè)計(jì)的能耗和成本得以降低。因此,申請人公開了在此分別描述的各個(gè)獨(dú)立特征,以及兩個(gè)或更多個(gè)這些特征 的任意組合,這些特征或組合能夠基于本詳細(xì)說明作為一個(gè)整體根據(jù)本領(lǐng)域技術(shù)人員的公 知常識而實(shí)現(xiàn),而不考慮這些特征或特征的組合是否能解決在此公開的任何問題,并且不 局限于權(quán)利要求的范圍。申請人指出,本發(fā)明的各個(gè)方面由任何獨(dú)立特征或特征的組合構(gòu) 成??紤]上述描述,本領(lǐng)域技術(shù)人員顯然知道在本發(fā)明范圍內(nèi)可以做出各種修改。
權(quán)利要求
1.一種用于網(wǎng)絡(luò)接口設(shè)備的報(bào)頭處理引擎,所述網(wǎng)絡(luò)接口設(shè)備具有用于保存各具有一 個(gè)或更多個(gè)報(bào)頭的一個(gè)或更多個(gè)數(shù)據(jù)分組的緩存,所述報(bào)頭處理引擎包括命令存儲器;報(bào)頭識別器,其被配置為解析存儲在所述緩存中的數(shù)據(jù)分組的報(bào)頭,以識別所述數(shù)據(jù) 分組中各個(gè)報(bào)頭的類型和位置;構(gòu)造器單元,其對所述數(shù)據(jù)分組的報(bào)頭進(jìn)行讀取訪問;以及處理器,其包括執(zhí)行流水線;所述報(bào)頭識別器進(jìn)一步被配置為對各個(gè)報(bào)頭進(jìn)行以下操作(a)根據(jù)所述報(bào)頭的類型來選擇存儲在所述命令存儲器中的一個(gè)或更多個(gè)命令;和(b)為所述構(gòu)造器單元形成一個(gè)或更多個(gè)用于識別被選擇的命令和所述報(bào)頭在數(shù)據(jù)分 組中的位置的消息;如果所述構(gòu)造器單元執(zhí)行為所述數(shù)據(jù)分組的報(bào)頭而選擇的命令,則所述命令將共同地 使得所述構(gòu)造器單元產(chǎn)生一數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)能夠操作用于使得所述處理器在無需訪 問所述緩存中的數(shù)據(jù)分組的情況下對所述數(shù)據(jù)分組的報(bào)頭實(shí)施處理;并且所述構(gòu)造器單元被配置為接收所述消息并執(zhí)行其中識別的命令。
2.根據(jù)權(quán)利要求1所述的報(bào)頭處理引擎,該報(bào)頭處理引擎進(jìn)一步包括所述處理器可訪 問的共享存儲器,所述構(gòu)造器單元被配置為將所述數(shù)據(jù)結(jié)構(gòu)寫入該共享存儲器。
3.根據(jù)權(quán)利要求1或2所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)結(jié)構(gòu)標(biāo)識由所述處理器執(zhí) 行的指令集,所述處理器被配置為訪問所述數(shù)據(jù)結(jié)構(gòu)并執(zhí)行其中標(biāo)識的指令以對所述數(shù)據(jù) 分組的報(bào)頭實(shí)施處理。
4.根據(jù)前述權(quán)利要求中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)結(jié)構(gòu)包括所述 報(bào)頭的一個(gè)或更多個(gè)部分。
5.根據(jù)引用權(quán)利要求3時(shí)的權(quán)利要求4所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)結(jié)構(gòu)只包 括執(zhí)行一個(gè)或更多個(gè)所述指令所需要的那些報(bào)頭部分。
6.根據(jù)權(quán)利要求3-5中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)結(jié)構(gòu)包括用于 唯一地表示所述數(shù)據(jù)分組的報(bào)頭的序列的分組分類標(biāo)識符,該分組分類標(biāo)識符標(biāo)識供所述 處理器執(zhí)行的所述指令集。
7.根據(jù)權(quán)利要求6所述的報(bào)頭處理引擎,其中所述分組分類標(biāo)識符表示所述處理器的 指令存儲器中的存儲器地址,所述處理器被配置為在讀取所述分組分類標(biāo)識符時(shí)訪問該存 儲器地址并開始執(zhí)行存儲在該存儲器地址上的指令。
8.根據(jù)權(quán)利要求6或7所述的報(bào)頭處理引擎,其中所述構(gòu)造器單元被配置為通過形成 對所述數(shù)據(jù)分組的報(bào)頭的特定序列的表示并將該表示傳遞給僅其可用輸出對應(yīng)于有效的 報(bào)頭序列的壓縮引擎,來產(chǎn)生所述分組分類標(biāo)識符,所述壓縮引擎的輸出是所述分組分類 標(biāo)識符。
9.根據(jù)引用權(quán)利要求2時(shí)的權(quán)利要求3-8中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所 述共享存儲器被配置為保存多個(gè)數(shù)據(jù)結(jié)構(gòu),各個(gè)數(shù)據(jù)結(jié)構(gòu)對應(yīng)于不同的數(shù)據(jù)分組。
10.根據(jù)權(quán)利要求9所述的報(bào)頭處理引擎,其中所述共享存儲器被配置為使得所述構(gòu) 造器單元和所述處理器能夠同時(shí)訪問不同數(shù)據(jù)結(jié)構(gòu),所述處理器對由所述構(gòu)造器單元完成 的數(shù)據(jù)結(jié)構(gòu)進(jìn)行排他的訪問。
11.根據(jù)權(quán)利要求9或10所述的報(bào)頭處理引擎,其中所述處理器被配置為,在開始執(zhí)行 一個(gè)或更多個(gè)使得所述處理器調(diào)用不共享所述處理器的執(zhí)行流水線的功能單元的預(yù)定指 令時(shí),通過以下步驟來切換執(zhí)行線程在與進(jìn)行調(diào)用有關(guān)的數(shù)據(jù)分組相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中存儲所述處理器的執(zhí)行流水線的 狀態(tài);將所述共享存儲器中存儲的不同數(shù)據(jù)結(jié)構(gòu)的狀態(tài)加載到所述處理器的執(zhí)行流水線中;以及執(zhí)行在不同數(shù)據(jù)結(jié)構(gòu)標(biāo)識的指令集。
12.根據(jù)權(quán)利要求11所述的報(bào)頭處理引擎,其中所述處理器被配置為使得響應(yīng)于對功 能單元的調(diào)用而返回的數(shù)據(jù)被寫入所述處理器的選定的寄存器中,使得當(dāng)所述處理器下一 次加載與進(jìn)行調(diào)用有關(guān)的數(shù)據(jù)分組相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中存儲的狀態(tài)時(shí),所述數(shù)據(jù)對執(zhí)行流 水線是可用的。
13.根據(jù)權(quán)利要求12所述的報(bào)頭處理引擎,其中所述處理器被配置為,在調(diào)用功能單 元時(shí),為選定的寄存器設(shè)置標(biāo)記,響應(yīng)于該調(diào)用而返回的數(shù)據(jù)要被寫入到所述選定的寄存 器中,所述標(biāo)記防止所述處理器選擇該寄存器用于另一個(gè)調(diào)用直到所述標(biāo)記被清除。
14.根據(jù)權(quán)利要求13所述的報(bào)頭處理引擎,其中所述處理器被配置為,在從所述選定 的寄存器讀取數(shù)據(jù)時(shí),清除所述標(biāo)記以使得所述處理器能夠選擇該寄存器用于后續(xù)調(diào)用。
15.根據(jù)權(quán)利要求11-14中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中至少一個(gè)預(yù)定指令 當(dāng)被執(zhí)行時(shí)使得所述處理器調(diào)用查找引擎或哈希引擎。
16.根據(jù)權(quán)利要求9-15中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述處理器被配置為 響應(yīng)于所述指令將所述處理器的相應(yīng)輸出寫入各個(gè)數(shù)據(jù)結(jié)構(gòu)中。
17.根據(jù)權(quán)利要求3-16中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)分組是通過 網(wǎng)絡(luò)接收的數(shù)據(jù)分組,所述網(wǎng)絡(luò)接口設(shè)備被支持一個(gè)或更多個(gè)操作系統(tǒng)的數(shù)據(jù)處理系統(tǒng)所 支持,所述處理器被配置為響應(yīng)于所述指令將標(biāo)識要寫入至少一部分接收到的數(shù)據(jù)分組的 數(shù)據(jù)處理系統(tǒng)的接收隊(duì)列的數(shù)據(jù)提供給所述網(wǎng)絡(luò)接口設(shè)備。
18.—種網(wǎng)絡(luò)接口設(shè)備,該網(wǎng)絡(luò)接口設(shè)備包括根據(jù)權(quán)利要求17所述的報(bào)頭處理引擎, 該報(bào)頭處理引擎被配置為,在所述處理器完成數(shù)據(jù)分組的報(bào)頭的處理時(shí),使得所述處理器 的至少一部分輸出對于分組處理引擎是可用的,所述分組處理引擎被配置為至少部分地根 據(jù)所述處理器的輸出來處理保存在緩存中的數(shù)據(jù)分組。
19.根據(jù)權(quán)利要求3-16中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)分組是用于 通過網(wǎng)絡(luò)傳輸?shù)牟糠中纬傻臄?shù)據(jù)分組,所述網(wǎng)絡(luò)接口設(shè)備被支持一個(gè)或更多個(gè)操作系統(tǒng)的 數(shù)據(jù)處理系統(tǒng)所支持,所述處理器被配置為響應(yīng)于所述指令以完成所述數(shù)據(jù)分組的方式來 處理所述部分形成的數(shù)據(jù)分組的報(bào)頭。
20.根據(jù)權(quán)利要求19所述的報(bào)頭處理引擎,其中所述處理器被配置為通過執(zhí)行以下操 作中的一個(gè)或更多個(gè)來完成所述數(shù)據(jù)分組如果所述數(shù)據(jù)分組屬于要按照服務(wù)質(zhì)量協(xié)議的預(yù)定級別進(jìn)行傳輸?shù)臄?shù)據(jù)流,則將適當(dāng) 的服務(wù)質(zhì)量參數(shù)寫入所述數(shù)據(jù)分組中以使得所述數(shù)據(jù)分組按照該預(yù)定級別來處理;如果所述數(shù)據(jù)分組要通過虛擬LAN來傳輸,則將適當(dāng)?shù)奶摂MLAN參數(shù)寫入所述數(shù)據(jù)分 組中以使得通過該虛擬LAN來路由所述數(shù)據(jù)分組;以及如果所述數(shù)據(jù)分組從所述網(wǎng)絡(luò)接口設(shè)備的虛擬接口始發(fā),則執(zhí)行分組過濾以確保所述 數(shù)據(jù)分組只在所述數(shù)據(jù)分組的目的地址是該虛擬接口允許訪問的網(wǎng)絡(luò)端點(diǎn)時(shí)被傳輸?shù)骄W(wǎng) 絡(luò)中。
21.根據(jù)前述權(quán)利要求中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)分組的各個(gè) 報(bào)頭包括根據(jù)網(wǎng)絡(luò)數(shù)據(jù)協(xié)議而格式化的數(shù)據(jù)比特集,各個(gè)數(shù)據(jù)比特集位于所述數(shù)據(jù)分組的 嵌套報(bào)頭、所述數(shù)據(jù)分組的頁腳或者所述數(shù)據(jù)分組中的任意其它點(diǎn)中。
22.—種報(bào)頭處理引擎,用于對各具有多個(gè)報(bào)頭的數(shù)據(jù)分組的序列進(jìn)行報(bào)頭處理,該報(bào) 頭處理引擎包括報(bào)頭識別器,其被配置為解析數(shù)據(jù)分組的序列中各個(gè)數(shù)據(jù)分組的報(bào)頭,并且為各個(gè)數(shù) 據(jù)分組形成一個(gè)或更多個(gè)指示所述數(shù)據(jù)分組中各個(gè)報(bào)頭的類型和位置的消息,所述報(bào)頭識 別器被配置為依次解析數(shù)據(jù)分組;以及處理器,其被配置為根據(jù)為該數(shù)據(jù)分組而形成的一個(gè)或更多個(gè)消息來對序列中各個(gè)數(shù) 據(jù)分組執(zhí)行報(bào)頭處理,并在其輸出依次提供處理后的數(shù)據(jù)分組;其中所述報(bào)頭識別器和所述處理器被配置為并行操作以使得所述處理器不按次序地 對所述數(shù)據(jù)分組進(jìn)行報(bào)頭處理。
23.根據(jù)權(quán)利要求22所述的報(bào)頭處理引擎,其中所述報(bào)頭識別器和所述處理器操作為 使得在所述處理器處理數(shù)據(jù)分組的序列中的一個(gè)數(shù)據(jù)分組時(shí),所述報(bào)頭識別器解析所述序 列中的另一個(gè)數(shù)據(jù)分組。
24.根據(jù)權(quán)利要求22-23中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述報(bào)頭識別器被 配置為依次地解析所述數(shù)據(jù)分組的報(bào)頭,并在識別出所述數(shù)據(jù)分組中各個(gè)報(bào)頭的類型和位 置時(shí),為所述處理器形成包括該報(bào)頭的類型和該報(bào)頭在所述數(shù)據(jù)分組中的位置的消息。
25.根據(jù)權(quán)利要求22-24中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述報(bào)頭識別器被 配置為通過檢測所述數(shù)據(jù)分組的報(bào)頭中的一個(gè)或更多個(gè)預(yù)定的比特序列來識別各個(gè)報(bào)頭 在所述數(shù)據(jù)分組中的位置。
26.根據(jù)權(quán)利要求25所述的報(bào)頭處理引擎,其中所述預(yù)定的比特序列指示報(bào)頭的開始 或結(jié)尾。
27.根據(jù)權(quán)利要求22-26中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述報(bào)頭識別器能 夠操作用于通過檢測表示報(bào)頭類型的一個(gè)或更多個(gè)預(yù)定值來識別所述數(shù)據(jù)分組中的報(bào)頭 的類型。
28.根據(jù)權(quán)利要求22-27中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述報(bào)頭識別器能 夠操作用于使用所述報(bào)頭在所述數(shù)據(jù)分組中的位置來識別所述數(shù)據(jù)分組中的報(bào)頭的類型。
29.根據(jù)權(quán)利要求22-28中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述處理器被配置 為,根據(jù)為特定數(shù)據(jù)分組而形成的一個(gè)或更多個(gè)消息中識別的報(bào)頭類型,選擇存儲在所述 處理器的指令存儲器中的指令集并且使用選定的指令集來處理該數(shù)據(jù)分組。
30.根據(jù)權(quán)利要求22-28中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述報(bào)頭識別器被 配置為,根據(jù)為特定數(shù)據(jù)分組而形成的一個(gè)或更多個(gè)消息中識別的報(bào)頭類型,選擇存儲在 所述處理器的指令存儲器中的指令集并且使得所述處理器使用選定的指令集來處理該數(shù) 據(jù)分組。
31.一種報(bào)頭處理引擎,用于對存儲在緩存中的數(shù)據(jù)分組的序列進(jìn)行報(bào)頭處理,各個(gè)所述數(shù)據(jù)分組具有多個(gè)報(bào)頭,所述報(bào)頭處理引擎包括處理器,其具有執(zhí)行流水線;以及預(yù)處理器單元,其被配置為解析存儲在所述緩存中的數(shù)據(jù)分組的報(bào)頭,并且根據(jù)所述 數(shù)據(jù)分組中的報(bào)頭的類型形成標(biāo)識指令集的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)能夠操作以使得所述處 理器在無需訪問存儲在所述緩存中的數(shù)據(jù)分組的情況下對所述數(shù)據(jù)分組的報(bào)頭實(shí)施處理; 其中所述處理器被配置為訪問所述數(shù)據(jù)結(jié)構(gòu)并執(zhí)行所述指令集以處理所述數(shù)據(jù)分組的報(bào) 頭。
32.根據(jù)權(quán)利要求31所述的報(bào)頭處理引擎,該報(bào)頭處理引擎進(jìn)一步包括所述處理器可 訪問的共享存儲器,所述預(yù)處理器單元被配置為將所述數(shù)據(jù)結(jié)構(gòu)寫入該共享存儲器。
33.根據(jù)權(quán)利要求31或32所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)結(jié)構(gòu)包括所述數(shù)據(jù)分組 的報(bào)頭的一個(gè)或更多個(gè)部分。
34.根據(jù)權(quán)利要求33所述的報(bào)頭處理引擎,其中所述數(shù)據(jù)結(jié)構(gòu)只包括一個(gè)或更多個(gè)所 述指令所需要的那些報(bào)頭部分。
35.根據(jù)權(quán)利要求31-34中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述預(yù)處理器單元 被配置為根據(jù)所述數(shù)據(jù)分組中的報(bào)頭的類型來選擇指令集。
36.根據(jù)權(quán)利要求31-35中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述處理器支持指 令存儲器并且所述指令集被存儲在所述指令存儲器中的所述數(shù)據(jù)結(jié)構(gòu)中標(biāo)識的位置。
37.根據(jù)權(quán)利要求31-36中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述預(yù)處理器單元 被配置為產(chǎn)生分組分類標(biāo)識符,所述分組分類標(biāo)識符唯一地表示所述數(shù)據(jù)分組的報(bào)頭的類 型,所述分組分類標(biāo)識符被包括在所述數(shù)據(jù)結(jié)構(gòu)中并且標(biāo)識供所述處理器執(zhí)行的所述指令 集。
38.根據(jù)權(quán)利要求37所述的報(bào)頭處理引擎,其中所述分組分類標(biāo)識符表示所述處理器 的指令存儲器中的存儲器地址,并且所述處理器被配置為在讀取所述分組分類標(biāo)識符時(shí)訪 問所述存儲器地址并開始執(zhí)行存儲在所述存儲器地址處的指令。
39.根據(jù)權(quán)利要求37或38所述的報(bào)頭處理引擎,其中所述預(yù)處理器單元被配置為通過 形成對所述數(shù)據(jù)分組的報(bào)頭的特定序列的表示并將該表示傳遞到僅其可用輸出對應(yīng)于有 效的報(bào)頭序列的壓縮引擎,來產(chǎn)生所述分組分類標(biāo)識符,所述壓縮引擎的輸出是所述分組 分類標(biāo)識符。
40.根據(jù)引用權(quán)利要求32時(shí)的權(quán)利要求33-39中的任意一項(xiàng)所述的報(bào)頭處理引擎,其 中所述共享存儲器被配置為保存多個(gè)數(shù)據(jù)結(jié)構(gòu),各個(gè)數(shù)據(jù)結(jié)構(gòu)對應(yīng)于不同的數(shù)據(jù)分組的報(bào) 頭。
41.根據(jù)權(quán)利要求40所述的報(bào)頭處理引擎,其中所述共享存儲器被配置為使得所述預(yù) 處理器單元和所述處理器能夠同時(shí)訪問不同的數(shù)據(jù)結(jié)構(gòu),所述處理器對由所述預(yù)處理器單 元完成的數(shù)據(jù)結(jié)構(gòu)進(jìn)行排他的訪問。
42.根據(jù)權(quán)利要求40或41所述的報(bào)頭處理引擎,其中所述處理器被配置為,在開始執(zhí) 行一個(gè)或更多個(gè)使得所述處理器調(diào)用不共享所述處理器的執(zhí)行流水線的功能單元的預(yù)定 指令時(shí),在與進(jìn)行調(diào)用有關(guān)的數(shù)據(jù)分組相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中存儲所述處理器的執(zhí)行流水線 的狀態(tài),并且將所述共享存儲器中存儲的不同數(shù)據(jù)結(jié)構(gòu)的狀態(tài)加載到所述處理器的執(zhí)行流 水線中。
43.根據(jù)權(quán)利要求42所述的報(bào)頭處理引擎,其中所述處理器被配置為使得響應(yīng)于對功 能單元的調(diào)用而返回的數(shù)據(jù)被寫入所述處理器的選定的寄存器中,使得當(dāng)所述處理器下一 次加載與進(jìn)行調(diào)用有關(guān)的數(shù)據(jù)分組相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中存儲的狀態(tài)時(shí),所述數(shù)據(jù)對執(zhí)行流 水線是可用的。
44.根據(jù)權(quán)利要求43所述的報(bào)頭處理引擎,其中所述處理器被配置為,在調(diào)用功能單 元時(shí),為選定的寄存器設(shè)置標(biāo)記,響應(yīng)于該調(diào)用而返回的數(shù)據(jù)要寫入到所述選定的寄存器 中,所述標(biāo)記防止所述處理器選擇該寄存器用于另一個(gè)調(diào)用。
45.根據(jù)權(quán)利要求44所述的報(bào)頭處理引擎,其中所述處理器被配置為,在從選定的寄 存器讀取數(shù)據(jù)時(shí),清除所述標(biāo)記以使得所述處理器能夠選擇該寄存器用于后續(xù)調(diào)用。
46.根據(jù)權(quán)利要求42-45中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述預(yù)定指令中的 至少一個(gè)當(dāng)被執(zhí)行時(shí)使得所述處理器調(diào)用查找引擎、哈希引擎、校驗(yàn)和或CRC計(jì)算引擎、加 密引擎或者以任意順序設(shè)置的上述引擎的任意組合。
47.根據(jù)權(quán)利要求40-46中的任意一項(xiàng)所述的報(bào)頭處理引擎,其中所述處理器被配置 為響應(yīng)于所述指令將由所述處理器執(zhí)行的處理的相應(yīng)輸出寫入各個(gè)數(shù)據(jù)結(jié)構(gòu)中。
48.一種被配置為處理網(wǎng)絡(luò)數(shù)據(jù)分組的處理器,該處理器包括指令存儲器,其存儲多個(gè)指令序列;處理器存儲器,其用于存儲多個(gè)指令索引和處理器狀態(tài)集,各個(gè)指令索引標(biāo)識存儲在 所述指令存儲器中的指令序列,各個(gè)狀態(tài)集對應(yīng)于指令索引;以及執(zhí)行流水線,其能夠操作用于使用存儲在所述處理器存儲器中的對應(yīng)狀態(tài)集米執(zhí)行由 指令索引標(biāo)識的指令序列,指令序列及其對應(yīng)的狀態(tài)限定了用于處理特定網(wǎng)絡(luò)數(shù)據(jù)分組的 執(zhí)行線程;所述處理器被配置為能夠操作用于在通過執(zhí)行由第一指令索引標(biāo)識的指令序列來處 理第一網(wǎng)絡(luò)數(shù)據(jù)分組時(shí),通過以下步驟來切換執(zhí)行線程以處理第二網(wǎng)絡(luò)數(shù)據(jù)分組將所述執(zhí)行流水線的狀態(tài)寫入所述處理器存儲器的第一狀態(tài)集中;將第二狀態(tài)集從所述處理器存儲器加載到所述執(zhí)行流水線中;以及執(zhí)行由與所述第二狀態(tài)集對應(yīng)的指令索引標(biāo)識的第二指令序列;其中所述處理器被配置為在開始執(zhí)行指令序列中的一個(gè)或更多個(gè)預(yù)定指令時(shí)切換執(zhí) 行線程。
49.根據(jù)權(quán)利要求48所述的處理器,其中所述第一狀態(tài)集包括第一指令序列中直到已 進(jìn)行了執(zhí)行的位置的指示。
50.根據(jù)權(quán)利要求48或49所述的處理器,其中所述預(yù)定指令當(dāng)被執(zhí)行時(shí)使得所述處理 器調(diào)用不共享所述處理器的執(zhí)行流水線的功能單元。
51.根據(jù)權(quán)利要求50所述的處理器,其中在所述處理器中支持所述功能單元。
52.根據(jù)權(quán)利要求50或51所述的處理器,該處理器進(jìn)一步包括多個(gè)寄存器并被配置為 將使得響應(yīng)于對所述功能單元的調(diào)用而返回的數(shù)據(jù)被寫入選定的一個(gè)寄存器中。
53.根據(jù)權(quán)利要求48-52中的任意一項(xiàng)所述的處理器,該處理器被配置為以循環(huán)的方 式在所述處理器存儲器中限定的多個(gè)執(zhí)行線程之間進(jìn)行切換,并且所述處理器在隨后切換 回由所述第一狀態(tài)集和所述第一指令序列所限定的執(zhí)行線程時(shí),進(jìn)行以下操作將所述執(zhí)行流水線的狀態(tài)寫入所述處理器存儲器中與在所述執(zhí)行流水線中被執(zhí)行的指令序列相對應(yīng)的狀態(tài)集中;將所述第一狀態(tài)集加載到所述執(zhí)行流水線中;以及 繼續(xù)執(zhí)行所述第一指令序列。
54. 一種在處理器的執(zhí)行線程之間進(jìn)行切換的方法,所述處理器被配置用于處理網(wǎng)絡(luò) 數(shù)據(jù)分組并且具有執(zhí)行流水線、存儲多個(gè)指令序列的指令存儲器、以及存儲第一指令索引 和第二指令索引以及所述處理器的對應(yīng)的第一狀態(tài)集和第二狀態(tài)集的處理器存儲器,其中 各個(gè)指令索引標(biāo)識存儲在所述指令存儲器中的指令序列,各個(gè)指令序列及其對應(yīng)的狀態(tài)限 定了用于處理特定網(wǎng)絡(luò)數(shù)據(jù)分組的執(zhí)行線程,所述方法包括以下步驟在通過在所述執(zhí)行流水線上執(zhí)行由所述第一指令索引標(biāo)識的指令序列來處理第一網(wǎng) 絡(luò)數(shù)據(jù)分組期間,暫停所述執(zhí)行流水線上的執(zhí)行;將所述執(zhí)行流水線的狀態(tài)寫入所述處理器存儲器的第一狀態(tài)集中; 將第二狀態(tài)集從所述處理器存儲器加載到所述執(zhí)行流水線中;以及 在所述執(zhí)行流水線上執(zhí)行由所述第二指令索引標(biāo)識的指令序列以對第二網(wǎng)絡(luò)數(shù)據(jù)分 組實(shí)施處理。
全文摘要
本發(fā)明提供一種報(bào)頭處理引擎,用于具有保存各自包括一個(gè)或更多個(gè)報(bào)頭的一個(gè)或更多個(gè)數(shù)據(jù)分組的緩存的網(wǎng)絡(luò)接口設(shè)備,該報(bào)頭處理引擎包括命令存儲器;報(bào)頭識別器,被配置為解析存儲在緩存中的數(shù)據(jù)分組的報(bào)頭,以便識別數(shù)據(jù)分組中各報(bào)頭的類型和位置;構(gòu)造器單元,具有對數(shù)據(jù)分組的報(bào)頭讀取訪問權(quán);以及處理器,包括一個(gè)執(zhí)行流水線;該報(bào)頭識別器進(jìn)一步被配置為對每個(gè)報(bào)頭(a)根據(jù)報(bào)頭的類型選擇存儲在命令存儲器中的一個(gè)或更多個(gè)命令;并且(b)為構(gòu)造器單元形成一個(gè)或更多個(gè)標(biāo)識被選擇的命令和數(shù)據(jù)分組中報(bào)頭的位置的消息;如果構(gòu)造器單元執(zhí)行為數(shù)據(jù)分組的報(bào)頭選擇的命令,將共同地使得構(gòu)造器單元產(chǎn)生一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)可操作用于使得處理器在無需訪問緩存中的數(shù)據(jù)分組的情況下對數(shù)據(jù)分組的報(bào)頭實(shí)施處理;并且構(gòu)造器單元被配置為接收消息并執(zhí)行從中識別的命令。
文檔編號H04L29/06GK102104541SQ20101062507
公開日2011年6月22日 申請日期2010年12月21日 優(yōu)先權(quán)日2009年12月21日
發(fā)明者史蒂夫·波普, 大衛(wèi)·里多克, 德里克·羅伯茨, 迪米特里·凱塔萊夫 申請人:索樂弗萊爾通訊公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1