具有高效工作排隊(duì)的處理器的制造方法
【專利摘要】提交至協(xié)處理器的工作進(jìn)入通過(guò)多個(gè)輸入隊(duì)列之一,用于提供不同服務(wù)質(zhì)量等級(jí)。響應(yīng)于網(wǎng)絡(luò)服務(wù)處理器中缺乏處理資源,內(nèi)存中鏈表存儲(chǔ)該網(wǎng)絡(luò)服務(wù)處理器有待執(zhí)行的工作。響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中的處理資源的可獲得性,將該工作從這些內(nèi)存中鏈表移回至該網(wǎng)絡(luò)服務(wù)處理器。
【專利說(shuō)明】具有高效工作排隊(duì)的處理器
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)是于2011年10月17日提交的美國(guó)13/274,767號(hào)申請(qǐng)的繼續(xù)申請(qǐng)。
[0003]上述一個(gè)或多個(gè)申請(qǐng)的整體教導(dǎo)通過(guò)引用結(jié)合于此。
【背景技術(shù)】
[0004]在大多數(shù)操作系統(tǒng)中,輸入隊(duì)列用于處理資源的操作系統(tǒng)調(diào)度和分配中。輸入隊(duì)列通常包括一個(gè)有待執(zhí)行的工作集并且經(jīng)常進(jìn)行以下處理:清除從隊(duì)列的頭端傳出的工作并向隊(duì)列的尾端添加任何傳入工作。取決于操作系統(tǒng),可以使用各種技術(shù)處理輸入隊(duì)列中存儲(chǔ)的工作。例如,可以使用多種技術(shù),如先來(lái)先服務(wù)、循環(huán)調(diào)度、優(yōu)先級(jí)調(diào)度和自定義調(diào)度等。無(wú)論操作系統(tǒng)所使用的排隊(duì)和調(diào)度技術(shù)如何,當(dāng)有待執(zhí)行的工作在隊(duì)列中等待執(zhí)行時(shí),會(huì)發(fā)生排隊(duì)延遲。
【發(fā)明內(nèi)容】
[0005]根據(jù)某些實(shí)施例,網(wǎng)絡(luò)服務(wù)處理器包括執(zhí)行包括多個(gè)數(shù)據(jù)包處理操作的工作的多個(gè)網(wǎng)絡(luò)服務(wù)處理器元件和多個(gè)內(nèi)存中鏈表。每個(gè)單獨(dú)的數(shù)據(jù)包處理操作可以定義一份工作。響應(yīng)于這些網(wǎng)絡(luò)服務(wù)處理器元件中缺乏處理資源,這些內(nèi)存中鏈表存儲(chǔ)該網(wǎng)絡(luò)服務(wù)處理器元件有待執(zhí)行的工作。響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器元件中的處理資源的可獲得性,將該工作從這些內(nèi)存中鏈表移回至這些網(wǎng)絡(luò)服務(wù)處理器元件。
[0006]在一些實(shí)施例中,這些內(nèi)存中鏈表可以形成在網(wǎng)絡(luò)服務(wù)處理器內(nèi)存的獨(dú)立于對(duì)該有待執(zhí)行的工作進(jìn)行描述和處理的多個(gè)部分的一部分內(nèi)。這些內(nèi)存中鏈表可以包括一個(gè)動(dòng)態(tài)隨機(jī)存取內(nèi)存。該有待執(zhí)行的工作可以存儲(chǔ)在一個(gè)內(nèi)存中鏈表的輸入隊(duì)列中。該網(wǎng)絡(luò)服務(wù)處理器可以維持指向這些內(nèi)存中鏈表中的多個(gè)可用存儲(chǔ)位置的多個(gè)指針。該有待執(zhí)行的工作可以存儲(chǔ)在一個(gè)指針指示的一個(gè)可用存儲(chǔ)位置處。該網(wǎng)絡(luò)服務(wù)處理器將該有待執(zhí)行的工作存儲(chǔ)在該可用存儲(chǔ)位置的輸入隊(duì)列的尾部。該網(wǎng)絡(luò)服務(wù)處理器可以用該指針對(duì)指向該輸入隊(duì)列的尾部的一個(gè)第二指針進(jìn)行更新。
[0007]在某些實(shí)施例中,響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中的處理資源的可獲得性,該網(wǎng)絡(luò)服務(wù)處理器可以從一個(gè)可用的存儲(chǔ)位置檢索該有待執(zhí)行的工作。該網(wǎng)絡(luò)服務(wù)處理器可以從該可用的存儲(chǔ)位置的輸入隊(duì)列頭部檢索該有待執(zhí)行的工作。當(dāng)檢索到該有待執(zhí)行的工作時(shí),該網(wǎng)絡(luò)服務(wù)處理器可以釋放該指針。該網(wǎng)絡(luò)服務(wù)處理器可以用從所檢索到的工作獲得的一個(gè)新指針對(duì)指向該輸入隊(duì)列的頭部的一個(gè)第二指針進(jìn)行更新。
[0008]在一些實(shí)施例中,該網(wǎng)絡(luò)服務(wù)處理器可以在一個(gè)空閑池分配器中維持指向這些內(nèi)存中鏈表內(nèi)的多個(gè)可用存儲(chǔ)位置的多個(gè)指針。該空閑池分配器可以被維持在一個(gè)動(dòng)態(tài)隨機(jī)存取內(nèi)存中。響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中缺乏處理資源,該網(wǎng)絡(luò)服務(wù)處理器可以從該空閑池分配器獲得一個(gè)指向這些內(nèi)存中鏈表內(nèi)的一個(gè)可用存儲(chǔ)位置的指針。
[0009]在某些實(shí)施例中,在被存儲(chǔ)在一個(gè)內(nèi)存中鏈表之前,該網(wǎng)絡(luò)服務(wù)處理器有待執(zhí)行的工作可以被封裝到一個(gè)預(yù)先確定大小的緩沖區(qū)內(nèi)。當(dāng)被從這些內(nèi)存中鏈表移回到該網(wǎng)絡(luò)服務(wù)處理器時(shí),該網(wǎng)絡(luò)服務(wù)處理器有待執(zhí)行的工作可以被解封裝到多個(gè)單獨(dú)的數(shù)據(jù)包。
[0010]在一些實(shí)施例中,該網(wǎng)絡(luò)服務(wù)處理器可以針對(duì)每份工作維持一個(gè)工作隊(duì)列條目。該網(wǎng)絡(luò)服務(wù)處理器可以維持指向這些內(nèi)存中鏈表中的可用存儲(chǔ)空間的預(yù)先確定數(shù)量的指針。這些預(yù)先確定數(shù)量的指針可以是該網(wǎng)絡(luò)服務(wù)處理器維持的工作隊(duì)列條目的總數(shù)量的一個(gè)子集。
【專利附圖】
【附圖說(shuō)明】
[0011]根據(jù)本發(fā)明的示例性實(shí)施例的以下更具體的說(shuō)明,上述內(nèi)容將是明顯的,如在這些附圖中所展示的,其中貫穿這些不同的視圖的相同的參照字符是指相同的部分。這些圖不一定是按比例繪制,而是著重展示本發(fā)明的實(shí)施例。
[0012]圖1是一個(gè)網(wǎng)絡(luò)服務(wù)處理器的框圖。
[0013]圖2A為調(diào)度/同步及順序(SSO)模塊的圖示。
[0014]圖2B為調(diào)度/同步及順序(SSO)模塊的內(nèi)部架構(gòu)的圖示。
[0015]圖3展示了對(duì)工作隊(duì)列指針的格式要求。
[0016]圖4為可以與本發(fā)明一起使用的工作隊(duì)列條目緩沖區(qū)的圖示。
[0017]圖5為本發(fā)明的一個(gè)實(shí)施例的高級(jí)圖示。
【具體實(shí)施方式】
[0018]以下是對(duì)本發(fā)明的示例性實(shí)施例的說(shuō)明。
[0019]在詳細(xì)說(shuō)明本發(fā)明的示例實(shí)施例之前,下面緊接著描述了一種可以在其中執(zhí)行這些實(shí)施例的示例網(wǎng)絡(luò)安全處理器,以幫助讀者理解本發(fā)明的創(chuàng)造性特征。
[0020]圖1是一個(gè)框圖,展示了一個(gè)網(wǎng)絡(luò)服務(wù)處理器100。該網(wǎng)絡(luò)服務(wù)處理器100使用至少一個(gè)處理器內(nèi)核120提供高應(yīng)用性能。下述網(wǎng)絡(luò)服務(wù)處理器100的各元件在下文共同作為“網(wǎng)絡(luò)服務(wù)處理器元件”或“處理器元件”而被引用。
[0021]該網(wǎng)絡(luò)服務(wù)處理器100處理在所接收的數(shù)據(jù)包中封裝的開放系統(tǒng)互聯(lián)網(wǎng)絡(luò)L2-L7層協(xié)議。如本領(lǐng)域技術(shù)人員所熟知的,開放系統(tǒng)互聯(lián)(OSI)參考模型定義了七層網(wǎng)絡(luò)協(xié)議層(L1-7)。物理層(LI)表示將一臺(tái)設(shè)備連接到一個(gè)傳輸媒介的實(shí)際接口,包括電氣接口及物理接口。數(shù)據(jù)鏈路層(L2)執(zhí)行數(shù)據(jù)組幀。網(wǎng)絡(luò)層(L3)將數(shù)據(jù)格式化為數(shù)據(jù)包。傳輸層(L4)處理端到端的傳輸。會(huì)話層(L5)管理設(shè)備之間的通信,例如,無(wú)論通信是半雙工的還是全雙工的。表現(xiàn)層(L6)管理數(shù)據(jù)格式化及表現(xiàn),例如,語(yǔ)法、控制代碼、特殊圖形及字符集。應(yīng)用層(L7)允許多個(gè)用戶之間的通信,例如,文件傳送及電子郵件。
[0022]網(wǎng)絡(luò)服務(wù)處理器100可以為上層網(wǎng)絡(luò)協(xié)議(例如,L4-L7)調(diào)度和排列工作(數(shù)據(jù)包處理操作),并且允許在接收到的待執(zhí)行的數(shù)據(jù)包中進(jìn)行上層網(wǎng)絡(luò)協(xié)議的處理,以便以線速轉(zhuǎn)發(fā)數(shù)據(jù)包。線速是在傳輸和接收數(shù)據(jù)的網(wǎng)絡(luò)上傳送數(shù)據(jù)的速率。通過(guò)處理這些協(xié)議來(lái)以線速轉(zhuǎn)發(fā)這些數(shù)據(jù)包,該網(wǎng)絡(luò)服務(wù)處理器不會(huì)降低網(wǎng)絡(luò)數(shù)據(jù)傳送速率。
[0023]多個(gè)接口單元122接收到一個(gè)數(shù)據(jù)包以進(jìn)行處理。PCIe接口 124也可以接收一個(gè)數(shù)據(jù)包。這些接口單元122通過(guò)檢查所接收到的數(shù)據(jù)包中包括的L2網(wǎng)絡(luò)協(xié)議報(bào)頭中的各種字段來(lái)執(zhí)行所接收到的數(shù)據(jù)包的預(yù)處理,并且然后將該數(shù)據(jù)包轉(zhuǎn)發(fā)到一個(gè)數(shù)據(jù)包輸入單元126。至少一個(gè)接口單元122a可以從多個(gè)X附接單元接口(XAUI)、精簡(jiǎn)X附接單元接口(RXAUI)、或系列千兆媒體獨(dú)立接口(SGMII)接收數(shù)據(jù)包。至少一個(gè)接口單元122b可以從一個(gè)茵特拉肯接口(ILK)接收連接。
[0024]該數(shù)據(jù)包輸入單元126執(zhí)行所接收的數(shù)據(jù)包中包括的網(wǎng)絡(luò)協(xié)議頭(例如L3及L4頭)的進(jìn)一步的預(yù)處理。該預(yù)處理包括對(duì)于TCP/用戶數(shù)據(jù)報(bào)協(xié)議(UDP) (L3網(wǎng)絡(luò)協(xié)議)的校驗(yàn)和檢查。
[0025]一個(gè)空閑池分配器128維持多個(gè)指針池,以釋放2級(jí)高速緩存內(nèi)存130及外部DRAM108中的內(nèi)存。該數(shù)據(jù)包輸入單元126使用這些指針池中的一個(gè)來(lái)將所接收到的數(shù)據(jù)包數(shù)據(jù)存儲(chǔ)在2級(jí)高速緩存內(nèi)存130或外部DRAM108中,并且使用這些指針池中的另一個(gè)來(lái)為這些處理器內(nèi)核120分配工作隊(duì)列條目。
[0026]數(shù)據(jù)包輸入單元126然后將數(shù)據(jù)包數(shù)據(jù)寫入2級(jí)高速緩存130或外部DRAM108中的緩沖區(qū)中。優(yōu)選地,該數(shù)據(jù)包數(shù)據(jù)被以便于在這些處理器內(nèi)核120中的至少一個(gè)中執(zhí)行的高層軟件的格式寫入這些緩沖區(qū)中。因此,促進(jìn)了高級(jí)網(wǎng)絡(luò)協(xié)議的進(jìn)一步處理。
[0027]網(wǎng)絡(luò)服務(wù)處理器100還可包括一個(gè)或多個(gè)特定用途協(xié)處理器。當(dāng)包括在內(nèi)時(shí),這些協(xié)處理器將一些處理從這些內(nèi)核120中分流,由此使得該網(wǎng)絡(luò)服務(wù)處理器能夠?qū)崿F(xiàn)高通量數(shù)據(jù)包處理。例如,提供了一個(gè)壓縮/解壓縮協(xié)處理器132,專用于執(zhí)行所接收到的數(shù)據(jù)包的壓縮及解壓縮。協(xié)處理單元的其他實(shí)施例包括RAID/De-Dup單元162,這加快了磁盤存儲(chǔ)應(yīng)用程序的數(shù)據(jù)分塊及數(shù)據(jù)復(fù)制處理。
[0028]另一個(gè)協(xié)處理器是超級(jí)有限自動(dòng)機(jī)(HFA)單元160,該單元包括多個(gè)專用HFA線程引擎,這些引擎被適配成用于加快防病毒、入侵檢測(cè)系統(tǒng)及其他內(nèi)容處理應(yīng)用程序所必需的模式和/或特征匹配。使用一個(gè)HFA單元160,模式和/或特征匹配得到加快,例如被以超過(guò)每秒萬(wàn)兆比特的倍數(shù)的速率執(zhí)行。該HFA單元160在一些實(shí)施例中可包括確定型有限自動(dòng)機(jī)(DFA)、非確定型有限自動(dòng)機(jī)(NFA)、或HFA算法單元中的任一個(gè)。
[0029]一個(gè)I/O接口 136管理整體協(xié)議及仲裁并且提供一致的I/O劃分。該I/O接口136包括一個(gè)I/O橋138及一個(gè)獲取及添加單元140。該I/O橋包括兩個(gè)橋,一個(gè)I/O數(shù)據(jù)包橋(IOBP) 138a及一個(gè)I/O總線橋(IOBN) 138b。該I/O數(shù)據(jù)包橋138a被配置成用于管理整體協(xié)議及仲裁并且提供主要與數(shù)據(jù)包輸入及輸出相一致的I/O劃分。I/O總線橋138b被配置成用于管理整體協(xié)議及仲裁并且提供主要與該I/O總線相一致的I/O劃分。該獲取及添加單元140中的寄存器用來(lái)維持那些用于通過(guò)一個(gè)數(shù)據(jù)包輸出單元146轉(zhuǎn)發(fā)已處理的數(shù)據(jù)包的輸出隊(duì)列的長(zhǎng)度。該I/O橋138包括多個(gè)緩沖隊(duì)列,用于存儲(chǔ)有待在一個(gè)一致內(nèi)存互聯(lián)(CMI) 144、一個(gè)I/O總線142、該數(shù)據(jù)包輸入單元126及該數(shù)據(jù)包輸出單元146之間傳送的信息。
[0030]各種各樣的I/O接口(M10)116可包括多個(gè)輔助接口,如通用I/0(GP10)、閃存、IEEE802 二線管理接口(MDIO)、串行管理中斷(SMI)、通用異步收發(fā)兩用機(jī)(UART)、精簡(jiǎn)千兆比特媒體獨(dú)立接口(RGMII)、媒體獨(dú)立接口(MII)、二線串行接口(TWSI)及其他串行接□。
[0031]網(wǎng)絡(luò)服務(wù)提供者100還可包括一個(gè)支持MIPS EJTAG標(biāo)準(zhǔn)的聯(lián)合測(cè)試行動(dòng)組(“JTAG”)接口 123。根據(jù)JTAG及MIPS EJTAG標(biāo)準(zhǔn),該網(wǎng)絡(luò)服務(wù)提供者100內(nèi)的多個(gè)內(nèi)核將各自具有一個(gè)內(nèi)部測(cè)試訪問(wèn)端口( “TAP”)控制器。這允許對(duì)該網(wǎng)絡(luò)服務(wù)提供者100的多核調(diào)試支持。[0032]一個(gè)調(diào)度/同步及順序(SSO)模塊148為這些處理器內(nèi)核120排列并調(diào)度工作。通過(guò)將一個(gè)工作隊(duì)列條目加入到一個(gè)隊(duì)列來(lái)排列工作。例如,該數(shù)據(jù)包輸入單元126為每次數(shù)據(jù)包的到來(lái)添加一個(gè)工作隊(duì)列條目。一個(gè)定時(shí)器單元150用來(lái)為這些處理器內(nèi)核120
調(diào)度工作。
[0033]處理器內(nèi)核120從SSO模塊148請(qǐng)求工作。SSO模塊148為這些處理器內(nèi)核120的其中之一選擇(即,調(diào)度)工作,并且將一個(gè)指針?lè)祷氐皆摴ぷ麝?duì)列條目以向該處理器內(nèi)核120描述該項(xiàng)工作。
[0034]處理器內(nèi)核120依次包括指令高速緩存152、I級(jí)數(shù)據(jù)高速緩存154、及加密加速156。在一個(gè)實(shí)施例中,該網(wǎng)絡(luò)服務(wù)處理器100包括32個(gè)超標(biāo)量精簡(jiǎn)指令集計(jì)算機(jī)(RISC)型處理器內(nèi)核120。在一些實(shí)施例中,這些超標(biāo)量RISC型處理器內(nèi)核120各自包括MIPS643版處理器內(nèi)核的一個(gè)擴(kuò)展。在一個(gè)實(shí)施例中,這些超標(biāo)量RISC型處理器內(nèi)核120各自包括一個(gè)cnMIPS II處理器內(nèi)核。
[0035]2級(jí)高速緩存內(nèi)存130及外部DRAM108被所有的處理器內(nèi)核120及I/O協(xié)處理器設(shè)備共享。每個(gè)處理器內(nèi)核120由該CMI144偶聯(lián)到該2級(jí)高速緩存內(nèi)存130。該CMI144是用于這些處理器內(nèi)核100、該I/O接口 136和該2級(jí)高速緩存內(nèi)存130及控制器之間的所有內(nèi)存及I/O事務(wù)的通信信道。在一個(gè)實(shí)施例中,該CMI144可擴(kuò)展到32個(gè)處理器內(nèi)核120,通過(guò)完全寫入支持完全一致的-1級(jí)數(shù)據(jù)高速緩存154。優(yōu)選地,該CMI144被高度緩沖了區(qū)分I/O優(yōu)先級(jí)的能力。該CMI偶聯(lián)到一個(gè)軌跡控制單元164,該軌跡控制單元被配置成用于捕獲總線請(qǐng)求,這樣軟件隨后可以讀取該請(qǐng)求并且在該CMI上生成事件順序的軌跡。
[0036]2級(jí)高速緩存內(nèi)存控制器131維持內(nèi)存參考一致性。它針對(duì)每個(gè)填寫請(qǐng)求返回一個(gè)塊的最新副本,無(wú)論該塊是存儲(chǔ)在2級(jí)高速緩存內(nèi)存130中、在外部DRAM108中、還是在“飛行中”。它還針對(duì)每個(gè)處理器內(nèi)核120中的數(shù)據(jù)高速緩存154存儲(chǔ)了這些標(biāo)簽的復(fù)制本。它將高速緩存-塊-存儲(chǔ)請(qǐng)求的地址與這些數(shù)據(jù)-高速緩存標(biāo)簽比較,并且每當(dāng)一個(gè)存儲(chǔ)指令通過(guò)該I/O接口 136來(lái)自另一個(gè)處理器內(nèi)核或來(lái)自一個(gè)I/O組件時(shí)使一個(gè)數(shù)據(jù)-高速緩存標(biāo)簽對(duì)于一個(gè)處理器內(nèi)核120無(wú)效(兩個(gè)副本)。
[0037]在一些實(shí)施例中,多個(gè)DRAM控制器133支持高達(dá)128千兆字節(jié)的DRAM。在一個(gè)實(shí)施例中,該多個(gè)DRAM控制器包括四個(gè)DRAM控制器,這些DRAM控制器各自支持32千兆字節(jié)的DRAM。優(yōu)選地,每個(gè)DRAM控制器133支持到DRAM108的一個(gè)64比特接口。此外,DRAM控制器133可以支持優(yōu)選的協(xié)議,如DDR-1II協(xié)議。
[0038]在這些處理器內(nèi)核120處理一個(gè)數(shù)據(jù)包后,數(shù)據(jù)包輸出單元146從2級(jí)高速緩存內(nèi)存130、108中讀取該數(shù)據(jù)包數(shù)據(jù),執(zhí)行L4網(wǎng)絡(luò)協(xié)議后處理(例如,生成一個(gè)TCP/UDP校驗(yàn)和),通過(guò)這些接口單元122或PCIe接口 124轉(zhuǎn)發(fā)該數(shù)據(jù)包并且釋放該數(shù)據(jù)包使用的L2高速緩存內(nèi)存130/DRAM108。
[0039]這些DRAM控制器133管理發(fā)向/來(lái)自該DRAM108的飛行中事務(wù)(負(fù)載/存儲(chǔ))。在一些實(shí)施例中,這些DRAM控制器133包括四個(gè)DRAM控制器,該DRAM108包括四個(gè)DRAM內(nèi)存,并且每個(gè)DRAM控制器連接到一個(gè)DRAM內(nèi)存。DFA單元160在一個(gè)旁路高速緩存訪問(wèn)路徑135上直接偶聯(lián)到這些DRAM控制器133。該旁路高速緩存訪問(wèn)路徑135允許該HFA單元不使用2級(jí)高速緩存內(nèi)存130而直接從DRAM內(nèi)存108讀取,這可以提高HFA操作的效率。[0040]圖2A為調(diào)度/同步及順序(SSO)模塊148的圖示。調(diào)度/同步及順序(SSO)模塊148起到協(xié)處理器的作用,該協(xié)處理器提供多種重要的功能,如工作排隊(duì)、工作調(diào)度/去調(diào)度、以及工作的排序和同步。
[0041]每份工作由一個(gè)相關(guān)聯(lián)的工作隊(duì)列條目進(jìn)行描述,該工作隊(duì)列條目可以由或者硬件單元(即,圖1中所示的網(wǎng)絡(luò)服務(wù)處理器100的片上單元)或內(nèi)核軟件(即,由這些片上單元執(zhí)行的指令)創(chuàng)建。例如,在一些實(shí)施例中,集中式數(shù)據(jù)包輸入硬件創(chuàng)建一個(gè)工作隊(duì)列條目并針對(duì)每個(gè)數(shù)據(jù)包到來(lái)而提交工作。進(jìn)一步地,內(nèi)核軟件可以創(chuàng)建工作隊(duì)列條目并根據(jù)需要提交工作。
[0042]這些協(xié)處理器(參照?qǐng)D1早前描述的)可以提供不同等級(jí)的服務(wù)質(zhì)量(QOS)。確切地,可以使用多個(gè)輸入工作隊(duì)列并且可以使用不同的默認(rèn)值和優(yōu)先級(jí)將傳入的數(shù)據(jù)包分類到該多個(gè)輸入工作隊(duì)列之一中。進(jìn)一步地,為了提供所希望的服務(wù)質(zhì)量,可以在被緩沖和提交給內(nèi)核之前丟棄某些輸入數(shù)據(jù)包。例如,隨機(jī)早期丟棄(RED)算法或閾值算法來(lái)決定何時(shí)或是否丟棄輸入數(shù)據(jù)包。針對(duì)不同的服務(wù)質(zhì)量等級(jí),可以不同地對(duì)此丟棄機(jī)制進(jìn)行配置。
[0043]通過(guò)將一個(gè)工作條目加入到一個(gè)隊(duì)列來(lái)對(duì)每份工作進(jìn)行排隊(duì)。取決于所希望的服務(wù)質(zhì)量,可以使用不同的優(yōu)先級(jí)來(lái)輸出存儲(chǔ)在隊(duì)列中的工作。例如,可以使用排隊(duì)方案,如靜態(tài)優(yōu)先級(jí)和加權(quán)循環(huán)。
[0044]每份工作經(jīng)常流經(jīng)圖2A中所示的狀態(tài)210、220、230。確切地,每份工作首先在輸入隊(duì)列210中,進(jìn)入飛行220、并且最后不被調(diào)度或完成230。在任何給定時(shí)間,由于一份工作可以被調(diào)度至一個(gè)具體的處理器內(nèi)核120,調(diào)度項(xiàng)目的數(shù)量受到處理器內(nèi)核的數(shù)量的限制。正在執(zhí)行未調(diào)度工作或已經(jīng)完成其調(diào)度工作而還沒(méi)有請(qǐng)求新工作的處理器內(nèi)核可以被認(rèn)為是一個(gè)未調(diào)度內(nèi)核。調(diào)度工作是SSO飛行工作220的一個(gè)子集。任何內(nèi)核可以在任何點(diǎn)225處對(duì)已調(diào)度的項(xiàng)目進(jìn)行去調(diào)度。任何去調(diào)度的工作保持在飛行狀態(tài)下并且稍后被重新調(diào)度。
[0045]盡管SSO單元148大小有限,SSO單元148通過(guò)維持L2/DRAM(內(nèi)存中)鏈表和當(dāng)需要時(shí)溢流到L2/DRAM來(lái)維持一個(gè)無(wú)限輸入工作排隊(duì)的外觀。確切地,在沒(méi)有處理空間的情況下,SSO單元148將這些輸入隊(duì)列條目添加到網(wǎng)絡(luò)服務(wù)處理器100維持的一個(gè)L2/DRAM列表。如果當(dāng)添加工作時(shí)在SSO單元148中空間可用,SSO單元148立即內(nèi)部地緩沖該工作并避免內(nèi)存列表的開銷。如果SSO單元148將工作放在內(nèi)存列表內(nèi),空間一變得可用,其稍后自動(dòng)地按照原始添加該工作的順序?qū)⒃摴ぷ鲝腖2/DRAM移到SSO單元148內(nèi)。
[0046]如上所述,SSO單元148通過(guò)向隊(duì)列添加工作隊(duì)列條目來(lái)對(duì)每份工作進(jìn)行排隊(duì)。L2/DRAM中的此工作隊(duì)列條目是對(duì)每份工作進(jìn)行描述的主描述符。當(dāng)向隊(duì)列添加工作隊(duì)列條目時(shí)或當(dāng)將工作從內(nèi)存輸入隊(duì)列210移到SSO單元148中的SSO條目時(shí),SSO單元148可以讀取/寫入到包含該工作隊(duì)列條目的L2/DRAM位置。
[0047]典型地,SSO單元148只需要維持指向該工作隊(duì)列條目的一個(gè)工作隊(duì)列指針(WQP) 300 (稍后在圖2B和圖3中示出)。該工作隊(duì)列指針可以是指向合法工作隊(duì)列條目的L2/DRAM內(nèi)的64比特對(duì)齊指針。當(dāng)一個(gè)內(nèi)核可用于處理新工作時(shí),SSO單元148存儲(chǔ)該WQP并使用此指針。確切地,當(dāng)網(wǎng)絡(luò)服務(wù)處理器100的處理器元件針對(duì)現(xiàn)有工作隊(duì)列結(jié)構(gòu)添加輸入隊(duì)列條目210 (圖2A中所示的ADDWQ指令),SSO單元148讀到包含被指向的工作隊(duì)列條目的L2/DRAM位置。
[0048]圖2B為調(diào)度/同步及順序(SSO)單元148的內(nèi)部架構(gòu)的圖示。出于說(shuō)明目的,示出了五個(gè)假設(shè)內(nèi)核,然而,本發(fā)明的示例實(shí)施例可以利用不同數(shù)量的內(nèi)核。
[0049]如以上解釋的,SSO單元148條目可以在輸入隊(duì)列210中、在飛行狀態(tài)220下、附接到未調(diào)度狀態(tài)221下的內(nèi)核上、或在空閑列表222內(nèi)。SSO單元148的每個(gè)條目至少包含以下信息:
[0050]一個(gè)指向L2/DRAM (WQP)中的工作隊(duì)列條目的指針300
[0051]當(dāng)前標(biāo)簽301和標(biāo)簽類型
[0052]當(dāng)前組(稍后在圖3中示出)
[0053]將該條目鏈接到不同列表上的指針209
[0054]在圖2B中所示的示例中,SSO單元148架構(gòu)包括多個(gè)輸入隊(duì)列210。每個(gè)輸入隊(duì)列包括一個(gè)內(nèi)存列表和一個(gè)單元中列表。當(dāng)SSO單元148向該單元內(nèi)添加新工作時(shí),其分配一個(gè)內(nèi)部SSO單元條目233并用所需信息填寫條目233。一旦內(nèi)部SSO條目233被分配給一份工作,該工作保 持在SSO單元148內(nèi),同時(shí)其在輸入隊(duì)列210內(nèi)或在飛行狀態(tài)220下,直到其完成或不被調(diào)度。那個(gè)點(diǎn)后,SSO條目233不能溢流到L2/DRAM。內(nèi)核操作僅引起SSO條目233附接到具體的內(nèi)核/從其分離,并且在多個(gè)列表之間移動(dòng)。
[0055]一旦SSO單元148加載了一份工作,其不再讀取或?qū)懭隠2/DRAM中的工作隊(duì)列條目位置。僅當(dāng)工作在輸入隊(duì)列210中時(shí)才使用L2/DRAM中的工作隊(duì)列條目,但當(dāng)該工作在SSO單元148內(nèi)時(shí),絕不使用。當(dāng)工作隊(duì)列指針在SSO單元148內(nèi)時(shí),SSO單元148在所有點(diǎn)處都攜帶著該工作隊(duì)列指針,因?yàn)樵摴ぷ麝?duì)列指針間接地對(duì)需要執(zhí)行的實(shí)際工作進(jìn)行描述。
[0056]將飛行中的條目220組織在先進(jìn)先出(FIFO)順序列表224中,其中一個(gè)FIFO條目與每個(gè)唯一飛行中的標(biāo)簽和標(biāo)簽類型值組合相關(guān)聯(lián)。當(dāng)該SSO硬件或者從輸入隊(duì)列210調(diào)度工作或從未調(diào)度221內(nèi)核狀態(tài)切換時(shí),工作進(jìn)入FIFO列表224。
[0057]可以對(duì)SSO單元148中的內(nèi)核進(jìn)行調(diào)度以對(duì)未調(diào)度狀態(tài)221下的飛行中的條目220和或自由狀態(tài)222下的附接SSO條目233進(jìn)行處理。
[0058]圖3展示了對(duì)工作隊(duì)列指針300的格式要求。用“Q0S”、“Grp”、“TT”和“Tag”標(biāo)記的字段指示分別對(duì)應(yīng)于每份工作的服務(wù)質(zhì)量、組、標(biāo)簽類型、以及標(biāo)簽。該SSO硬件僅讀取QOS、Grp、TT字段以及如被用于硬件ADDWQ情況的SSO軟件適當(dāng)設(shè)置的這些字段。如以上注意到的,當(dāng)一個(gè)內(nèi)核可用于對(duì)工作進(jìn)行處理時(shí),該SSO硬件存儲(chǔ)工作隊(duì)列指針300并將指針300發(fā)送至該工作。
[0059]圖4為可以與本發(fā)明一起使用的工作隊(duì)列條目緩沖區(qū)的圖示。如上所述,提交至協(xié)處理器的工作進(jìn)入通過(guò)輸入隊(duì)列210 (圖2A中所示)并被相關(guān)聯(lián)工作隊(duì)列條目(WQE)描述。這些輸入工作排隊(duì)可以任意大。
[0060]在一些實(shí)施例中,可以用指向空L2聞速緩存行的指針的空閑列表對(duì)該網(wǎng)絡(luò)服務(wù)處理器進(jìn)行初始化。高速緩存行可以被安排在具有預(yù)先確定大小的包(bundle)內(nèi)。例如,
在一個(gè)實(shí)施例中,該軟件用多個(gè)S + 48 + roundup (?空閑指針對(duì)硬件進(jìn)行初始化,其
中與應(yīng)用程序可以使用的工作隊(duì)列條目一樣多N。[0061]這些空閑指針中的一些指針可以作為片上寄存器被存儲(chǔ)并且起到內(nèi)存中鏈表的頭指針和尾指針的作用。其他指針可以存儲(chǔ)在L2/DRAM中的空閑頁(yè)面分配器池(圖1中所示的FPA128)內(nèi)。
[0062]當(dāng)初始化時(shí),用于給定輸入隊(duì)列的內(nèi)存中鏈表是空的,并且每個(gè)輸入隊(duì)列的頭指針和尾指針相同。如果片上空間可用,該硬件立即內(nèi)部地緩沖該工作并避免該內(nèi)存中鏈表的開銷。在片上沒(méi)有空間可用的情況下,SSO單元148將工作引導(dǎo)至內(nèi)存中鏈表。確切地,如果片上空間不可用,SSO單元148從FPA128(圖1)預(yù)獲取一個(gè)空閑指針并將該工作隊(duì)列
條目(例如,WQE0、WQE1......)插入到一個(gè)內(nèi)部緩沖區(qū)中,同時(shí)按照隊(duì)列條目(例如,WQE0、
WQEl......)對(duì)連續(xù)的傳入工作項(xiàng)進(jìn)行封裝(壓縮)直到具有足夠數(shù)量的工作隊(duì)列條目來(lái)
形成用于存儲(chǔ)在L2/DRAM高速緩存行中的比特封裝包。SSO單元148將比特封裝包410、420、430(加上該空閑指針)存儲(chǔ)到該輸入隊(duì)列鏈表的尾部處的L2/DRAM。為了更快速的檢索,SSO單元148可以選擇僅將比特封裝包410、420、430存儲(chǔ)到L2。一旦存儲(chǔ)了比特封裝包410、420、430,用該空閑指針對(duì)包410、420、430的尾指針440進(jìn)行更新。外部輸入隊(duì)列中保持的條目形成工作隊(duì)列條目包410、420、430的鏈表。在某些實(shí)施例中,可以針對(duì)每個(gè)服務(wù)等級(jí)包括至少一個(gè)外部輸入隊(duì)列。在一個(gè)實(shí)施例中(圖4中所示),每個(gè)工作隊(duì)列條目包可以包含比特封裝到一個(gè)256字節(jié)的內(nèi)存塊中的26個(gè)工作隊(duì)列條目。
[0063]一旦片上處理空間可用,該硬件自動(dòng)地從L2/DRAM移回該工作以便按照原始添加該工作的順序進(jìn)行處理。確切地,該硬件從該L2/DRAM中的輸入隊(duì)列鏈表的頭指針450讀取比特封裝包410、420、430并同時(shí)解封裝和解壓縮包410、420、430。一旦解封裝了該包,SSO單元148就將頭指針450釋放到FPA128 (圖1所示)并用從該解封裝包410、420、430檢索的下一個(gè)指針對(duì)頭指針450進(jìn)行更新。
[0064]圖5為本發(fā)明的一個(gè)實(shí)施例的高級(jí)圖示。如圖5中所示,網(wǎng)絡(luò)服務(wù)處理器100包括執(zhí)行包括數(shù)據(jù)包處理操作的工作的多個(gè)獨(dú)立處理器內(nèi)核120和多個(gè)內(nèi)存中鏈表501,這些內(nèi)存中鏈表被安排成用于響應(yīng)于該處理器內(nèi)核中缺乏處理資源而存儲(chǔ)處理器內(nèi)核120有待執(zhí)行的工作。響應(yīng)于處理內(nèi)核中的處理資源的可獲得性,將工作從內(nèi)存中鏈表501移回至處理器內(nèi)核120。這些內(nèi)存中鏈表501可以形成在處理器內(nèi)核內(nèi)存120的獨(dú)立于對(duì)該有待執(zhí)行的工作進(jìn)行描述和處理的多個(gè)部分的一部分內(nèi)。
[0065]該有待執(zhí)行的工作存儲(chǔ)在一個(gè)內(nèi)存中鏈表501的一個(gè)輸入隊(duì)列(未不出)中。內(nèi)存中鏈表501可以存儲(chǔ)在動(dòng)態(tài)隨機(jī)存取內(nèi)存(DRAM) 108內(nèi)或L2高速緩存130內(nèi)。
[0066]如之前解釋的,網(wǎng)絡(luò)服務(wù)處理器100維持多個(gè)指針,這些指針通過(guò)空閑池分配器單元128分配、指向內(nèi)存中鏈表501中的多個(gè)可用的存儲(chǔ)位置。如果處理空間不可用,處理器100從FPA128預(yù)獲取一個(gè)空閑指針并將一個(gè)工作隊(duì)列條目插入到一個(gè)內(nèi)部緩沖區(qū)(未示出)。處理器100同時(shí)封裝多個(gè)連續(xù)的工作隊(duì)列條目,直到預(yù)先確定大小的工作隊(duì)列條目的封裝包具有足夠的工作隊(duì)列條目。一旦形成,該封裝包存儲(chǔ)在L2高速緩存130 (或DRAM108)中的內(nèi)存中鏈表501的尾部處。一旦存儲(chǔ)了該封裝包,用該空閑指針對(duì)該包的尾指針進(jìn)行更新。
[0067]一旦處理資源變得可獲得,網(wǎng)絡(luò)服務(wù)處理器100就從內(nèi)存中鏈表501的頭部檢索有待執(zhí)行的工作并釋放指向所檢索到的工作的指針。也用從所檢索到的工作獲得的新指針對(duì)指向內(nèi)存中鏈表501的頭部的指針進(jìn)行更新。[0068]雖然本發(fā)明參考其示例性的實(shí)施例已經(jīng)進(jìn)行了具體顯示和描述,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解的是,在不偏離由所附權(quán)利要求書所包括的本發(fā)明的范圍下,可以在其中做出在形式和細(xì)節(jié)方面的多種改變。
【權(quán)利要求】
1.一種網(wǎng)絡(luò)服務(wù)處理器,包括: 多個(gè)網(wǎng)絡(luò)服務(wù)處理器元件,這些元件執(zhí)行包括多個(gè)數(shù)據(jù)包處理操作的工作;以及 多個(gè)內(nèi)存中鏈表,被安排成用于響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中缺乏處理資源而存儲(chǔ)這些網(wǎng)絡(luò)服務(wù)處理器元件有待執(zhí)行的工作,并且響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中的處理資源的可獲得性,將該工作從這些內(nèi)存中鏈表移回至該網(wǎng)絡(luò)服務(wù)處理器。
2.如權(quán)利要求1所述的網(wǎng)絡(luò)服務(wù)處理器,其中,這些內(nèi)存中鏈表可以形成在網(wǎng)絡(luò)服務(wù)處理器內(nèi)存的獨(dú)立于對(duì)該有待執(zhí)行的工作進(jìn)行描述和處理的多個(gè)部分的一個(gè)部分內(nèi)。
3.如權(quán)利要求1所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該有待執(zhí)行的工作存儲(chǔ)在一個(gè)內(nèi)存中鏈表的一個(gè)輸入隊(duì)列中。
4.如權(quán)利要求1所述的網(wǎng)絡(luò)服務(wù)處理器,其中,這些內(nèi)存中鏈表包括動(dòng)態(tài)隨機(jī)存取內(nèi)存。
5.如權(quán)利要求1所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器可以維持指向這些內(nèi)存中鏈表中的多個(gè)可用存儲(chǔ)位置的多個(gè)指針。
6.如權(quán)利要求5所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器將該有待執(zhí)行的工作存儲(chǔ)在一個(gè)指針指示的一個(gè)可用存儲(chǔ)位置。
7.如權(quán)利要求6所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器將該有待執(zhí)行的工作存儲(chǔ)在該可用存儲(chǔ)位置的一個(gè)輸入隊(duì)列的尾部。
8.如權(quán)利要求7所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器可以用該指針對(duì)指向該輸入隊(duì)列的尾部的一個(gè)第二指針進(jìn)行更新。
9.如權(quán)利要求5所述的網(wǎng)絡(luò)服務(wù)處理器,其中,響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中的處理資源的可獲得性,該網(wǎng)絡(luò)服務(wù)處理器從一個(gè)可用的存儲(chǔ)位置檢索該有待執(zhí)行的工作。
10.如權(quán)利要求9所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器從該可用存儲(chǔ)位置的一個(gè)輸入隊(duì)列的頭部檢索該有待執(zhí)行的工作。
11.如權(quán)利要求10所述的網(wǎng)絡(luò)服務(wù)處理器,其中,當(dāng)檢索到該有待執(zhí)行的工作時(shí),該網(wǎng)絡(luò)服務(wù)處理器釋放該指針。
12.如權(quán)利要求10所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器用從所檢索到的工作獲得的一個(gè)新指針對(duì)指向該輸入隊(duì)列的頭部的一個(gè)第二指針進(jìn)行更新。
13.如權(quán)利要求1所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器可以在一個(gè)空閑池分配器中維持指向這些內(nèi)存中鏈表內(nèi)的可用存儲(chǔ)位置的多個(gè)指針。
14.如權(quán)利要求13所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該空閑池分配器被維持在一個(gè)動(dòng)態(tài)隨機(jī)存取內(nèi)存中。
15.如權(quán)利要求13所述的網(wǎng)絡(luò)服務(wù)處理器,其中,響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中缺乏處理資源,該網(wǎng)絡(luò)服務(wù)處理器可以從該空閑池分配器獲得一個(gè)指向這些內(nèi)存中鏈表內(nèi)的一個(gè)可用存儲(chǔ)位置的指針。
16.如權(quán)利要求1所述的網(wǎng)絡(luò)服務(wù)處理器,其中,在被存儲(chǔ)在一個(gè)內(nèi)存中鏈表之前,該網(wǎng)絡(luò)服務(wù)處理器有待執(zhí)行的工作可以被封裝到一個(gè)預(yù)先確定大小的緩沖區(qū)內(nèi)。
17.如權(quán)利要求1所述的網(wǎng)絡(luò)服務(wù)處理器,其中,當(dāng)被從這些內(nèi)存中鏈表移回到該網(wǎng)絡(luò)服務(wù)處理器時(shí),該網(wǎng)絡(luò)服務(wù)處理器有待執(zhí)行的工作可以被解封裝到多個(gè)單獨(dú)的數(shù)據(jù)包。
18.如權(quán)利要求1所述的網(wǎng)絡(luò)服務(wù)處理器,其中,每個(gè)單獨(dú)的數(shù)據(jù)包處理操作限定一份工作。
19.如權(quán) 利要求18所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器針對(duì)每份工作維持一個(gè)工作隊(duì)列條目。
20.如權(quán)利要求19所述的網(wǎng)絡(luò)服務(wù)處理器,其中,該網(wǎng)絡(luò)服務(wù)處理器維持指向這些內(nèi)存中鏈表中的可用存儲(chǔ)空間的預(yù)先確定數(shù)量的指針,這些預(yù)先確定數(shù)量的指針是該網(wǎng)絡(luò)服務(wù)處理器維持的工作隊(duì)列條目的總數(shù)量的一個(gè)子集。
21.—種方法,包括: 響應(yīng)于一個(gè)網(wǎng)絡(luò)服務(wù)處理器中缺乏處理資源而維持多個(gè)內(nèi)存中鏈表,這些內(nèi)存中鏈表被安排成用于存儲(chǔ)該網(wǎng)絡(luò)服務(wù)處理器有待執(zhí)行的工作;以及 響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中的處理資源的可獲得性,將該網(wǎng)絡(luò)服務(wù)處理器有待執(zhí)行的工作從這些內(nèi)存中鏈表移回至該網(wǎng)絡(luò)服務(wù)處理器。
22.如權(quán)利要求21所述的方法,進(jìn)一步包括在網(wǎng)絡(luò)服務(wù)處理器內(nèi)存的獨(dú)立于對(duì)該有待執(zhí)行的工作進(jìn)行描述和處理的多個(gè)部分的一個(gè)部分內(nèi)形成這些內(nèi)存中鏈表。
23.如權(quán)利要求21所述的方法,進(jìn)一步包括將該有待執(zhí)行的工作存儲(chǔ)在一個(gè)內(nèi)存中鏈表的一個(gè)輸入隊(duì)列中。
24.如權(quán)利要求21所述的方法,其中,這些內(nèi)存中鏈表包括動(dòng)態(tài)隨機(jī)存取內(nèi)存。
25.如權(quán)利要求21所述的方法,進(jìn)一步包括在該網(wǎng)絡(luò)服務(wù)處理器中維持指向這些內(nèi)存中鏈表中的多個(gè)可用存儲(chǔ)位置的多個(gè)指針。
26.如權(quán)利要求21所述的方法,進(jìn)一步包括將該有待執(zhí)行的工作存儲(chǔ)在一個(gè)指針指示的一個(gè)可用存儲(chǔ)位置處。
27.如權(quán)利要求26所述的方法,進(jìn)一步包括將該有待執(zhí)行的工作存儲(chǔ)在該可用存儲(chǔ)位置的一個(gè)輸入隊(duì)列的尾部。
28.如權(quán)利要求27所述的方法,進(jìn)一步包括用該指針對(duì)指向該輸入隊(duì)列的尾部的一個(gè)第二指針進(jìn)行更新。
29.如權(quán)利要求25所述的方法,進(jìn)一步包括響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中的處理資源的可獲得性,從一個(gè)可用的存儲(chǔ)位置檢索該有待執(zhí)行的工作。
30.如權(quán)利要求29所述的方法,進(jìn)一步包括從該可用存儲(chǔ)位置的一個(gè)輸入隊(duì)列的頭部檢索該有待執(zhí)行的工作。
31.如權(quán)利要求30所述的方法,進(jìn)一步包括當(dāng)檢索到該有待執(zhí)行的工作時(shí),釋放該指針。
32.如權(quán)利要求30所述的方法,進(jìn)一步包括用從所檢索到的工作獲得的一個(gè)新指針對(duì)指向該輸入隊(duì)列的頭部的一個(gè)第二指針進(jìn)行更新。
33.如權(quán)利要求21所述的方法,進(jìn)一步包括在一個(gè)空閑池分配器中維持指向這些內(nèi)存中鏈表中的可用存儲(chǔ)位置的多個(gè)指針。
34.如權(quán)利要求33述的方法,進(jìn)一步包括在一個(gè)動(dòng)態(tài)隨機(jī)存取內(nèi)存中維持該空閑池分配器。
35.如權(quán)利要求33述的方法,進(jìn)一步包括響應(yīng)于該網(wǎng)絡(luò)服務(wù)處理器中缺乏處理資源而從該空閑池分配器獲得一個(gè)指向這些內(nèi)存中鏈表內(nèi)的一個(gè)可用存儲(chǔ)位置的指針。
36.如權(quán)利要求21述的方法,進(jìn)一步包括在被存儲(chǔ)在一個(gè)內(nèi)存中鏈表之前,將該有待執(zhí)行的工作封裝到一個(gè)預(yù)先確定大小的緩沖區(qū)內(nèi)。
37.如權(quán)利要求21述的方法,進(jìn)一步包括當(dāng)被從這些內(nèi)存中鏈表移回到該網(wǎng)絡(luò)服務(wù)處理器時(shí),將該有待執(zhí)行的工作解封裝到多個(gè)單獨(dú)的數(shù)據(jù)包。
38.如權(quán)利要求21所述的方法,其中,每個(gè)單獨(dú)的數(shù)據(jù)包處理操作限定一份工作。
39.如權(quán)利要求38所述的方法,進(jìn)一步包括針對(duì)每份工作維持一個(gè)工作隊(duì)列條目。
40.如權(quán)利要求39所述的方法,進(jìn)一步包括維持指向這些內(nèi)存中鏈表中的可用存儲(chǔ)空間的預(yù)先確定數(shù)量的指針,這些預(yù)先確定數(shù)量的指針是該網(wǎng)絡(luò)服務(wù)處理器維持的工作隊(duì)列條目的總數(shù)量的一個(gè)子集。
【文檔編號(hào)】G06F9/50GK103946803SQ201280056472
【公開日】2014年7月23日 申請(qǐng)日期:2012年9月19日 優(yōu)先權(quán)日:2011年10月17日
【發(fā)明者】R·E·凱斯勒, A·馬赫施瓦利, R·桑祖恩 申請(qǐng)人:凱為公司