專利名稱:用于多核處理器的存儲(chǔ)指令排序的制作方法
相關(guān)申請(qǐng)本申請(qǐng)是申請(qǐng)于2004年11月30日,申請(qǐng)?zhí)枮?1/002,728的美國(guó)申請(qǐng)的繼續(xù),該申請(qǐng)要求申請(qǐng)于2004年9月10日,申請(qǐng)?zhí)枮?0/609,211美國(guó)臨時(shí)申請(qǐng)的利益。以上申請(qǐng)的全部教導(dǎo)在此被并入本文作為參考。
背景技術(shù):
廉線技術(shù)主要用在精簡(jiǎn)指令集系統(tǒng)計(jì)算(RISC)處理器中,把指令處理分成一系列的廉線階段。因?yàn)橹噶钔ㄟ^(guò)指令廉線,所以每一個(gè)階段執(zhí)行不同的功能。多個(gè)指令可以在同一時(shí)間被執(zhí)行,其中每個(gè)指令在廉線的不同階段被執(zhí)行。指令以時(shí)鐘步率提前通過(guò)廉線階段,而這個(gè)速率取決于廉線中最慢的階段。相比于非廉線處理器,新的指令能夠開(kāi)始于每一個(gè)時(shí)鐘周期,而在非廉線處理器中,只有在完成前一個(gè)指令后才能執(zhí)行新的指令。處理器的處理能力取決于以下功能(i)廉線階段時(shí)鐘速度;(ii)正常操作時(shí)廉線的利用率或“效率”;(iii)廉線延遲的數(shù)量。超標(biāo)量體系結(jié)構(gòu)RISC處理器采用同步傳輸多個(gè)指令和并行劃分為多個(gè)執(zhí)行單元來(lái)增加其處理能力。
指令廉線可能由于資源限制和相互指令數(shù)據(jù)的依賴性而延遲。當(dāng)后面的指令需要前面的指令生成的結(jié)果才能被執(zhí)行,而前面的指令卻沒(méi)有完成時(shí),相互指令數(shù)據(jù)依賴性導(dǎo)致延遲。所述的后面發(fā)布的指令因此在廉線中被延遲,直到前面的指令的結(jié)果有效。不充足的存儲(chǔ)數(shù)據(jù)緩沖區(qū)也可以導(dǎo)致延遲。因?yàn)橐恢滦源鎯?chǔ)總線可能是高廉線的,可以把地址、數(shù)據(jù)和提交操作分開(kāi),所以存儲(chǔ)排序在多核的高速緩存/系統(tǒng)里是非常復(fù)雜的。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的原理,用于對(duì)在處理器中執(zhí)行的存儲(chǔ)指令進(jìn)行排序的系統(tǒng)和方法將指令廉線延遲降低到最小。
處理器包括寫緩沖區(qū),該寫緩沖區(qū)具有多個(gè)寫緩沖項(xiàng)用于存儲(chǔ)將被存儲(chǔ)在外部存儲(chǔ)器中的數(shù)據(jù),以及系統(tǒng)接口。這個(gè)系統(tǒng)接口包括排序序列和排序序列邏輯。存儲(chǔ)在寫緩沖區(qū)內(nèi)的數(shù)據(jù)經(jīng)過(guò)排序序列中的排序序列項(xiàng)被發(fā)送到外部存儲(chǔ)器。當(dāng)檢測(cè)到存儲(chǔ)排序指令的執(zhí)行時(shí),排序序列邏輯保證被排序序列中的排序序列項(xiàng)標(biāo)識(shí)的寫緩沖地址在用于隨后發(fā)布的存儲(chǔ)指令的地址之前被發(fā)送到外部存儲(chǔ)器。排序序列邏輯通過(guò)監(jiān)控從用于每個(gè)寫緩沖地址的外部存儲(chǔ)器中返回的標(biāo)識(shí)符保證寫緩沖區(qū)地址被發(fā)送。
當(dāng)存儲(chǔ)排序指令執(zhí)行時(shí),在寫緩沖區(qū)就會(huì)有有效的寫緩沖項(xiàng)和在排序序列里有排序序列項(xiàng)。當(dāng)在寫緩沖區(qū)中檢測(cè)到有效寫緩沖區(qū)項(xiàng)時(shí),系統(tǒng)接口就分配排序序列項(xiàng),并在排序序列項(xiàng)中標(biāo)識(shí)有效寫緩沖項(xiàng)。一旦檢測(cè)到在寫緩沖區(qū)內(nèi)沒(méi)有有效的寫緩沖區(qū)項(xiàng)以及在排序序列中至少一個(gè)排序序列項(xiàng)時(shí),則系統(tǒng)接口在最后的排序序列項(xiàng)中設(shè)置存儲(chǔ)排序指令執(zhí)行標(biāo)識(shí)符。當(dāng)在寫緩沖區(qū)內(nèi)沒(méi)有檢測(cè)到有效的寫緩沖項(xiàng)時(shí),以及在排序序列里沒(méi)有檢測(cè)到排序序列項(xiàng)排序時(shí),系統(tǒng)接口就會(huì)分配排序序列項(xiàng),并在已分配的排序序列項(xiàng)里設(shè)置存儲(chǔ)排序指令執(zhí)行標(biāo)識(shí)符。
寫緩沖區(qū)有N個(gè)寫緩沖項(xiàng),排序序列有N+1個(gè)排序序列項(xiàng)。因?yàn)樵谂判蛐蛄欣锏捻?xiàng)的數(shù)量是大于在寫緩沖區(qū)里的項(xiàng)的數(shù)量的,所以當(dāng)排序指令被執(zhí)行時(shí),排序序列項(xiàng)是有效的,借此可以消除存儲(chǔ)排序指令的延遲。在一個(gè)實(shí)施方案中,N是16。這個(gè)寫緩沖項(xiàng)可能包含用于存儲(chǔ)將被存儲(chǔ)在外部存儲(chǔ)的數(shù)據(jù)的緩沖區(qū),以及具有與緩沖區(qū)中的每個(gè)字節(jié)相對(duì)應(yīng)的位的掩碼。排序序列項(xiàng)可能包括存儲(chǔ)指令執(zhí)行標(biāo)識(shí)符和具有相對(duì)于每個(gè)寫緩沖項(xiàng)的位的排序掩碼。
結(jié)合接下來(lái)對(duì)附圖中所舉例說(shuō)明的本發(fā)明優(yōu)選的實(shí)施方案更加具體的描述,本發(fā)明前面所述的和其它的目的、特征以及優(yōu)勢(shì)將會(huì)更加的清楚。在附圖中相同的參考數(shù)字在整個(gè)附圖中都指代相同的部件。附圖并不是按照比例所繪制的,其重點(diǎn)在于示出本發(fā)明的原理。
圖1是根據(jù)本發(fā)明的原理的具有指令集的精簡(jiǎn)指令集計(jì)算機(jī)(RISC)處理器的方塊圖,該指令集包括用于排序存儲(chǔ)指令的存儲(chǔ)器排序指令。圖2示出圖1里的寫緩沖區(qū)內(nèi)的寫緩沖項(xiàng)。
圖3示出在處理器內(nèi)核中系統(tǒng)接口中的控制邏輯的方框圖,用于將存儲(chǔ)在寫緩沖項(xiàng)內(nèi)的數(shù)據(jù)通過(guò)一致性存儲(chǔ)器總線發(fā)送到外部存儲(chǔ)器。
圖4排序排序是圖2中所示的排序序列中的排序序列項(xiàng)中的方框圖。
圖5是在執(zhí)行SYNCW指令后,在排序序列控制邏輯中執(zhí)行的用于排序存儲(chǔ)指令的方法流程圖。
圖6示出在圖5中所示的一致性存儲(chǔ)器總線上的存儲(chǔ)操作。
圖7是安全應(yīng)用的方框圖,其包括具有圖1中所示的至少一個(gè)RISC處理器的網(wǎng)絡(luò)服務(wù)處理器。以及圖8是圖7中所示的網(wǎng)絡(luò)服務(wù)處理器700的方框圖。
具體實(shí)施例方式
本發(fā)明優(yōu)選的實(shí)施方案的描述如下處理器是解釋和執(zhí)行指令的中心處理單元(CPU)。圖1是根據(jù)本發(fā)明的原理的具有指令集的精簡(jiǎn)指令集計(jì)算機(jī)(1RISC)處理器100的方塊圖,該指令集包括根據(jù)本發(fā)明的原理用于排序存儲(chǔ)指令的指令。
處理器100包括執(zhí)行單元102和指令分配單元104、指令讀取單元106、加載/存儲(chǔ)單元118、存儲(chǔ)管理單元108(MMU)、系統(tǒng)接口110、寫緩沖區(qū)122以及安全加速器124。處理器內(nèi)核也包括允許調(diào)試操作被執(zhí)行的EJTAG接口120。系統(tǒng)接口110控制對(duì)外部存儲(chǔ)器的訪問(wèn),即,處理器外部的存儲(chǔ)器,如二級(jí)(L2)高速緩沖存儲(chǔ)器。
執(zhí)行單元102包括乘法單元114和至少一個(gè)寄存器存儲(chǔ)器116。乘法單元114是具有64位的直接寄存器乘法器。指令讀取單元106包括指令高速緩沖存儲(chǔ)器126。加載/存儲(chǔ)單元118包括數(shù)據(jù)高速緩沖存儲(chǔ)器128。數(shù)據(jù)高速緩沖存儲(chǔ)器240的其中一部分可以被當(dāng)作本地的高速暫存存儲(chǔ)器和/或本地存儲(chǔ)器130被保存。在一個(gè)實(shí)施方案中,指令高速緩沖存儲(chǔ)器126是32K字節(jié)的,數(shù)據(jù)高速緩沖存儲(chǔ)器128是8K字節(jié),寫緩沖區(qū)122是2K字節(jié)。存儲(chǔ)器管理單元108包括地址轉(zhuǎn)換后備緩沖器(TLB)112。
在一個(gè)實(shí)施方案中,處理器100包括加密加速模塊(安全加速器)124,該模塊包括密碼加速器用于三次數(shù)據(jù)加密標(biāo)準(zhǔn)(3DES)、高級(jí)加密標(biāo)準(zhǔn)(AES)、安全散列算法(SHA-I)和信息-摘要算法#5(MD5)。這個(gè)加密模塊124通過(guò)把在執(zhí)行單元102中的主寄存器存儲(chǔ)器116移進(jìn)和移出的方式進(jìn)行通信。RSA和密鑰交換協(xié)議(DH)算法在乘法單元114中被執(zhí)行。
超標(biāo)量體系結(jié)構(gòu)的處理器具有超標(biāo)量體系結(jié)構(gòu)指令廉線,其通過(guò)允許同步發(fā)出多個(gè)指令以及并行地分配到多個(gè)執(zhí)行單元從而允許在每個(gè)時(shí)鐘周期內(nèi)運(yùn)行多個(gè)指令。RISC型處理器100具有指令集的結(jié)構(gòu),而這個(gè)結(jié)構(gòu)定義RISC型處理器的編程界面的程序。僅僅加載和存儲(chǔ)指令訪問(wèn)外部存儲(chǔ)器,也就是說(shuō)處理器100以外的存儲(chǔ)器。在一個(gè)實(shí)施方案中,外部的存儲(chǔ)器通過(guò)一致性存儲(chǔ)總線134被訪問(wèn)。所有其他的指令對(duì)存儲(chǔ)在處理器100中的寄存器存儲(chǔ)器116中的數(shù)據(jù)進(jìn)行操作。在一個(gè)實(shí)施方案中,處理器是超標(biāo)量體系結(jié)構(gòu)雙向發(fā)布處理器。
指令廉線被分為多個(gè)階段,每個(gè)階段需要一個(gè)時(shí)鐘周期完成。因此在5階段廉線里,它需要花費(fèi)5個(gè)時(shí)鐘周期來(lái)處理每個(gè)指令,并且5個(gè)指令可以與再任何給定的時(shí)鐘周期中廉線的不同階段被處理器處理的每個(gè)指令同時(shí)被處理。典型地,5階段的廉線包括如下階段讀取、解碼、執(zhí)行、存儲(chǔ)和回復(fù)。
在讀取階段,指令讀取單元106在由存儲(chǔ)在程序計(jì)數(shù)器中的存儲(chǔ)地址所標(biāo)識(shí)的指令高速緩沖器128上從指令高速緩沖器126中讀取指令。在解碼階段,在讀取階段所讀取的指令被指令分配單元104所解碼,同時(shí)為了發(fā)布的連續(xù),下一個(gè)將要讀取的指令的地址被計(jì)算。在指令執(zhí)行階段,整數(shù)執(zhí)行單元102依據(jù)指令的類型執(zhí)行操作。例如,整數(shù)執(zhí)行單元102開(kāi)始算法和邏輯操作用于寄存器到寄存器指令,然后計(jì)算出加載或存儲(chǔ)操作的實(shí)際地址或者確定用于分支指令的分支條件是否正確。在存儲(chǔ)階段,數(shù)據(jù)被加載/存儲(chǔ)單元118所排列,并將其轉(zhuǎn)移到外部存儲(chǔ)器的目的地。在回復(fù)階段,寄存器到寄存器的結(jié)果或加載的指令被回復(fù)到存儲(chǔ)器116。
系統(tǒng)接口110經(jīng)過(guò)一致性存儲(chǔ)總線被耦合到外部存儲(chǔ)器上。在一個(gè)實(shí)施方案中,一致性存儲(chǔ)總線有384位,并且有4種分開(kāi)的總線尋址/命令總線、存儲(chǔ)數(shù)據(jù)總線、提交/響應(yīng)控制總線和填充數(shù)據(jù)總線。所有的存儲(chǔ)數(shù)據(jù)都借助寫緩沖區(qū)中的寫緩沖項(xiàng),越過(guò)一致性存儲(chǔ)總線132,被發(fā)送到外部存儲(chǔ)區(qū)。在一個(gè)實(shí)施方案中,寫緩沖區(qū)有16個(gè)寫緩沖項(xiàng)。
存儲(chǔ)的數(shù)據(jù)從加載/存儲(chǔ)單元118到寫緩沖區(qū)122,并且經(jīng)過(guò)系統(tǒng)接口110從緩沖區(qū)122到外部存儲(chǔ)器。處理器100生成存儲(chǔ)到外部存儲(chǔ)器的數(shù)據(jù)的速度比系統(tǒng)接口110寫數(shù)據(jù)到外部存儲(chǔ)器要快。
寫緩沖區(qū)122也可以被用來(lái)通過(guò)一致性存儲(chǔ)總線132將待存儲(chǔ)在外部存儲(chǔ)器中的數(shù)據(jù)合計(jì)到定位的高速緩沖器區(qū)以將速度最小化,以這個(gè)速度,數(shù)據(jù)可以被寫入外部存儲(chǔ)器中。而且,寫緩沖區(qū)也可以把多個(gè)存儲(chǔ)操作合并在外部存儲(chǔ)器中的相同的位置,從而導(dǎo)致單一的向外部存儲(chǔ)器的寫操作。寫緩沖區(qū)122的寫合并操作能夠?qū)е孪蛲獠看鎯?chǔ)器的寫順序不同于存儲(chǔ)指令的執(zhí)行的順序。
在正常操作中,呈現(xiàn)給處理器100之外的觀察者的加載和存儲(chǔ)存儲(chǔ)器存取的順序沒(méi)有被體系結(jié)構(gòu)所具體化。指令集包含用于排序存儲(chǔ)指令的指令,而這個(gè)指令在本文中所涉及的是SYNCW指令。在其他即將進(jìn)行的存儲(chǔ)指令可見(jiàn)之前,SYNCW指令強(qiáng)制先前的已經(jīng)被發(fā)布的存儲(chǔ)指令在處理器100之外是可見(jiàn)的。例如如下指令順序ST DATASYNCWST FLAGSYNCW包含兩個(gè)SYNCW指令。SYNCW指令確保了數(shù)據(jù)存儲(chǔ)指令(STDATA)和存儲(chǔ)標(biāo)記指令(ST FLAG),即在ST DATA指令之后的SYNCW指令確保了ST DATA的存儲(chǔ)數(shù)據(jù)指令在處理器之外是可見(jiàn);即,在ST FLAG指令之前在一致性存儲(chǔ)總線132上被發(fā)送。在ST FLAG指令之后的SYNCW指令也確保了在任何后續(xù)存儲(chǔ)的數(shù)據(jù)在處理器之外是可見(jiàn)的之前,ST FLAG在處理器之外是可見(jiàn)的。
通常需要這種同步類型用以確保在FLAG變量被更新之前在外部存儲(chǔ)器中的數(shù)據(jù)緩沖區(qū)被更新,并且在來(lái)自任何后續(xù)存儲(chǔ)指令中的數(shù)據(jù)是可見(jiàn)的之前,強(qiáng)制FLAG變量更新盡快成為可見(jiàn)的。
圖2介紹了圖1里的寫緩沖區(qū)122的寫緩沖項(xiàng)200。該寫緩沖項(xiàng)200包括用于存儲(chǔ)待存儲(chǔ)在外部存儲(chǔ)器中的數(shù)據(jù)的相鄰塊的緩沖區(qū)202。。寫緩沖項(xiàng)200也包括掩碼欄204,該掩碼欄204具有與緩沖區(qū)202中的每一個(gè)字節(jié)相對(duì)應(yīng)的位。在位掩碼204里的每一位的狀態(tài)可以指示出緩沖區(qū)202中相應(yīng)的字節(jié)是否正在存儲(chǔ)將被寫入到外部存儲(chǔ)器中的數(shù)據(jù)。在寫緩沖項(xiàng)內(nèi)的高速緩沖模塊地址區(qū)域210存有被存儲(chǔ)在緩沖區(qū)202內(nèi)的128字節(jié)高速緩沖模塊的外部存儲(chǔ)器中的起始地址。寫緩沖項(xiàng)200也包含狀態(tài)位206和有效位208當(dāng)緩沖區(qū)202正在存儲(chǔ)將被寫入外部存儲(chǔ)器中的數(shù)據(jù)時(shí),有效位208被置位,以及當(dāng)存儲(chǔ)在緩沖區(qū)202中的數(shù)據(jù)被寫到外部存儲(chǔ)之后該位就被清零。在一個(gè)實(shí)施方案中,緩沖區(qū)可以存儲(chǔ)128字節(jié)連續(xù)的數(shù)據(jù)塊,掩碼具有128位每一個(gè)位對(duì)應(yīng)于緩沖區(qū)內(nèi)的每一個(gè)字節(jié)。。
寫緩沖區(qū)122是合并的寫緩沖區(qū),將數(shù)據(jù)存儲(chǔ)到由存儲(chǔ)在寫緩沖項(xiàng)200中的高速緩沖模塊地址210中的地址所表示的高速緩沖模塊中的個(gè)別的存儲(chǔ)指令分解為單個(gè)到外部存儲(chǔ)器的寫操作。
狀態(tài)位206的狀態(tài)指示出來(lái)自后續(xù)執(zhí)行的存儲(chǔ)指令中的數(shù)據(jù)是否可以并入緩沖項(xiàng)200或者是否存儲(chǔ)在寫緩沖項(xiàng)200內(nèi)的緩沖區(qū)202里中的數(shù)據(jù)正處在被寫到外部存儲(chǔ)器的過(guò)程中。當(dāng)來(lái)自于存儲(chǔ)指令的數(shù)據(jù)被并入已有的寫緩沖項(xiàng)200時(shí),在寫緩沖項(xiàng)里的掩碼204和緩沖區(qū)202就會(huì)相應(yīng)地更新。
對(duì)應(yīng)存儲(chǔ)指令的將被存儲(chǔ)到外部存儲(chǔ)器中的數(shù)據(jù)或者加入或者并入有效的寫緩沖項(xiàng)或者根據(jù)數(shù)據(jù)被存儲(chǔ)的外部存儲(chǔ)器中的地址分配新的寫緩沖項(xiàng)。在存儲(chǔ)指令里的地址同存儲(chǔ)在所有當(dāng)前有效的寫緩沖項(xiàng)200中的高速緩沖區(qū)地址區(qū)域210中的地址做比較。如果要被存儲(chǔ)的數(shù)據(jù)能被并入已經(jīng)被存儲(chǔ)在有效寫緩沖項(xiàng)200中的緩沖區(qū)202中的高速緩沖區(qū)中,則緩沖區(qū)202和掩碼204就可以相應(yīng)地被更新。
如果同有效的寫緩沖項(xiàng)是不可以合并的,那么寫緩沖項(xiàng)就從無(wú)效的寫緩沖項(xiàng)集里被分配出來(lái)(帶有效位的緩沖項(xiàng)被清零)。分配完畢后,寫緩沖項(xiàng)200中的狀態(tài)位206就被置位。例如,如果在緩沖項(xiàng)中的高速緩沖區(qū)地址是0x1000,待存儲(chǔ)在地址0x1010的字節(jié)被定位在開(kāi)始于0x1000的128字節(jié)高速緩沖模塊中,并可以被存儲(chǔ)在寫緩沖項(xiàng)的存儲(chǔ)區(qū)域內(nèi);即,存儲(chǔ)數(shù)據(jù)被加入到寫緩沖項(xiàng)。到高速緩沖模塊中的0x1000地址的后續(xù)存儲(chǔ)指令覆蓋已經(jīng)被存儲(chǔ)在寫緩沖項(xiàng)中的高速緩沖模塊中的數(shù)據(jù),即,并入到有效的寫緩沖項(xiàng)。
將被寫入外部存儲(chǔ)器的存儲(chǔ)指令(存儲(chǔ)值)的結(jié)構(gòu)可以在處理器100將該結(jié)果寫到外部存儲(chǔ)器之前的一段時(shí)間位于寫緩沖區(qū)的寫緩沖項(xiàng)200中。
圖3是處理器內(nèi)核的系統(tǒng)接口110中的控制邏輯把存儲(chǔ)在寫緩沖項(xiàng)200里的數(shù)據(jù)通過(guò)一致性存儲(chǔ)總線132送到外部存儲(chǔ)器的方框圖。寫緩沖區(qū)122的一部分的寫緩沖區(qū)的地址寄存器312在圖3中同樣被示出。
存儲(chǔ)在寫緩沖區(qū)122的寫緩沖項(xiàng)200中的全部數(shù)據(jù)按照排序序列300通過(guò)項(xiàng)314被發(fā)送到外部存儲(chǔ)器。這個(gè)排序序列是一個(gè)先進(jìn)先出(FIFO)序列。每次寫緩沖項(xiàng)200內(nèi)的狀態(tài)位206清零,指示存儲(chǔ)在寫緩沖項(xiàng)中的緩沖區(qū)202中的數(shù)據(jù)將被寫入外部存儲(chǔ)器中,則排序序列300內(nèi)的項(xiàng)314被分配。例如,從上一次存儲(chǔ)的數(shù)據(jù)寫入外部存儲(chǔ)器時(shí)預(yù)先確定次數(shù)的CPU循環(huán)周期過(guò)去時(shí),或者SYNCW指令執(zhí)行后,在寫緩沖項(xiàng)200內(nèi)的狀態(tài)位206可以被清零。每一個(gè)排序序列項(xiàng)314標(biāo)識(shí)一個(gè)或多個(gè)存儲(chǔ)將被寫到外部存儲(chǔ)器的數(shù)據(jù)的寫緩沖項(xiàng)200。計(jì)數(shù)區(qū)域326存儲(chǔ)排序序列項(xiàng)數(shù)量的計(jì)數(shù)。
圖4是圖2中所示的排序序列300內(nèi)其中一個(gè)排序序列項(xiàng)314的方框圖。排序序列項(xiàng)314包含寫緩沖項(xiàng)掩碼400和SYNCW區(qū)402。寫緩沖項(xiàng)掩碼400包含與寫緩沖區(qū)122內(nèi)的每個(gè)寫緩沖項(xiàng)相對(duì)應(yīng)的位。寫緩沖項(xiàng)掩碼400中的每個(gè)位的狀態(tài)都指示出寫緩沖區(qū)122內(nèi)相應(yīng)的寫緩沖項(xiàng)200是否通過(guò)排序序列項(xiàng)314被寫入到外部存儲(chǔ)器中。SYNCW區(qū)域402是單獨(dú)的位,它的狀態(tài)用來(lái)指示SYNCW指令是否已被執(zhí)行。
處理器100在它刪除第一排序序列項(xiàng)之前并且在它以下一個(gè)排序序列項(xiàng)發(fā)送由寫緩沖項(xiàng)掩碼400標(biāo)識(shí)的任何寫緩沖項(xiàng)200之前,以第一排序序列項(xiàng)314將由寫緩沖項(xiàng)掩碼400所標(biāo)識(shí)的全部寫緩沖項(xiàng)200發(fā)送到外部存儲(chǔ)器。舉例來(lái)說(shuō),在一個(gè)實(shí)施方案中,有N個(gè)寫緩沖區(qū)項(xiàng)200,排序序列300里的每一個(gè)排序序列項(xiàng)314有識(shí)別寫緩沖項(xiàng)的N位的寫緩沖項(xiàng)掩碼(向量)400。在排序序列300里有M=N+1個(gè)排序序列項(xiàng)314,所以當(dāng)排序序列300不會(huì)溢出,SYNCW指令的執(zhí)行不會(huì)中止。在作為替代的實(shí)施方案中,排序序列300里的排序序列項(xiàng)314的數(shù)量可能會(huì)少一些,這種情況下,如果排序序列300滿了,SYNCW指令的執(zhí)行可能會(huì)中止。
再回到圖3,存儲(chǔ)將要被寫到外部存儲(chǔ)器的寫緩沖項(xiàng)200通過(guò)多路器308和排序序列控制邏輯306被加到排序序列300中。系統(tǒng)接口110包括一致性總線仲裁邏輯304和確認(rèn)計(jì)數(shù)器320,該確認(rèn)計(jì)數(shù)器302控制存儲(chǔ)數(shù)據(jù)通過(guò)一致性存儲(chǔ)器總線到外部存儲(chǔ)器的傳送。確認(rèn)計(jì)數(shù)器302保持對(duì)外部存儲(chǔ)器的存儲(chǔ)操作的完成的追蹤。當(dāng)確認(rèn)計(jì)數(shù)器為0時(shí),先前的存儲(chǔ)在系統(tǒng)中均是可見(jiàn)的。
正如結(jié)合圖4所討論的,每一個(gè)排序序列項(xiàng)314包括掩碼域400和SYNCW位402。在所示的實(shí)施方案中,有16個(gè)寫緩沖項(xiàng)(N=16)和17個(gè)排序序列項(xiàng)(M=N+1)。多路器308既可選擇16寫緩沖區(qū)狀態(tài)位316(其中每個(gè)狀態(tài)位206來(lái)自每一個(gè)寫緩沖項(xiàng)200),又可選擇具有與單一項(xiàng)318相應(yīng)的位的16位向量。被選擇的16狀態(tài)位322被轉(zhuǎn)寄到排序序列控制邏輯306,并被存儲(chǔ)到排序序列300中的排序序列項(xiàng)314中。排序序列控制邏輯306通過(guò)添加/刪除控制信號(hào)來(lái)添加和刪除排序序列中的排序序列項(xiàng)。舉例來(lái)說(shuō),排序序列的實(shí)現(xiàn)如同分解先進(jìn)現(xiàn)出(FIFO),新的項(xiàng)添加到序列的一端,被處理的項(xiàng)出自序列的另一端(隊(duì)頭)。
排序序列如同本領(lǐng)域技術(shù)人員所熟知的那樣,只具有一個(gè)寫緩沖項(xiàng)的排序序列項(xiàng)314可以為很多不同的條件所創(chuàng)建,舉例來(lái)說(shuō),用于寫緩沖溢出狀況或者超時(shí)狀況。關(guān)于創(chuàng)建帶有僅一個(gè)寫緩沖區(qū)項(xiàng)的排序序列項(xiàng)的條件超出本文的討論范圍。
在每一個(gè)排序序列項(xiàng)中的SYNCW位402如圖顯示,從排序序列300里的排序序列項(xiàng)314中的其它領(lǐng)域中分離出來(lái)。每一個(gè)排序序列項(xiàng)314中的SYNCW位402也被轉(zhuǎn)寄給排序序列控制邏輯306。
當(dāng)SYNCW位在排序序列300的報(bào)頭內(nèi)的排序序列項(xiàng)314中被置位,排序序列邏輯確保由排序序列項(xiàng)所標(biāo)識(shí)的寫緩沖地址在后續(xù)發(fā)布的存儲(chǔ)指令的地址之前,按照排序序列被發(fā)送到外部存儲(chǔ)器中,所述的這些地址在任何后續(xù)地址被發(fā)送之前被提交。排序序列控制邏輯306向一致性總線仲裁邏輯304發(fā)出發(fā)送請(qǐng)求324,用以將存儲(chǔ)在由排序序列項(xiàng)314中的掩碼位400所標(biāo)識(shí)的下一個(gè)寫緩沖項(xiàng)200中緩沖區(qū)202中的高速緩沖模塊地址發(fā)送到一致性總線仲裁邏輯304。。一致性總線仲裁邏輯304將在一致性總線地址總線上的請(qǐng)求發(fā)布給外部存儲(chǔ)器。
在一個(gè)實(shí)施方案中,當(dāng)前排序序列項(xiàng)314中的寫緩沖區(qū)項(xiàng)掩碼位400也先于已存在的第一個(gè)置位邏輯312,來(lái)選擇存儲(chǔ)在當(dāng)前正在被處理的寫緩沖區(qū)項(xiàng)204中的高速緩存模塊地址。存儲(chǔ)在對(duì)應(yīng)于排序序列項(xiàng)314中的掩碼400中的第一置位位的寫緩沖項(xiàng)200中的高速緩存塊地址域210中的高速緩存模塊地址在寫緩沖地址域312中被選擇,并在一致性總線地址總線322上被發(fā)送。
在第一寫緩沖區(qū)項(xiàng)204中的高速緩存塊地址通過(guò)一致性存儲(chǔ)器總線被傳送到外部存儲(chǔ)器之后,排序序列控制邏輯306對(duì)與當(dāng)前的排序序列項(xiàng)314中的寫緩沖區(qū)項(xiàng)204相對(duì)應(yīng)的寫緩沖區(qū)掩碼104中的位進(jìn)行清零。
所有的被排序序列項(xiàng)314中的寫緩沖區(qū)項(xiàng)掩碼位400所標(biāo)識(shí)的寫緩沖區(qū)地址200,通過(guò)連貫存儲(chǔ)器總線,在刪除序列項(xiàng)314和處理下一個(gè)排序序列項(xiàng)314中的寫緩沖區(qū)項(xiàng)204之前,被發(fā)送到外部存儲(chǔ)器。排序序列項(xiàng)在所有掩碼位被發(fā)送之后,或者(a)SYNCW位被刪除或,(b)確認(rèn)計(jì)數(shù)器為0之后,可被刪除。在存儲(chǔ)在寫緩沖區(qū)項(xiàng)200中的數(shù)據(jù)被寫入到外部存儲(chǔ)器之后,有效位208被清零,標(biāo)志著寫緩沖區(qū)項(xiàng)200是空閑的,可以被分配。
SYNCW指令的執(zhí)行通過(guò)強(qiáng)制有效的寫緩沖區(qū)項(xiàng)中的所有存儲(chǔ)的完成來(lái)實(shí)現(xiàn)存儲(chǔ)指令的排序,即存儲(chǔ)數(shù)據(jù)在隨后的存儲(chǔ)地址被發(fā)送到外部存儲(chǔ)器之前被傳遞到外部寄存器中。如果沒(méi)有SYNCW指令被執(zhí)行,每一個(gè)排序序列項(xiàng)中的SYNCW位被清零。
有些存儲(chǔ)器排序指令執(zhí)行由于沒(méi)有完成在先存儲(chǔ)指令或?qū)懢彌_區(qū)中不充足的緩沖區(qū),可以延遲指令執(zhí)行。在本發(fā)明中,因?yàn)轭A(yù)緩沖存儲(chǔ)(以及SYNCW)總是可以進(jìn)入唯一的排序的序列,所以存儲(chǔ)器排序指令的執(zhí)行不會(huì)被延遲(如果M=N+1),也就是說(shuō),分配在排序序列300中的排序序列項(xiàng)314。
只要SYNCW指令執(zhí)行,SYNCW就被維持,并且創(chuàng)建新的排序序列項(xiàng)。當(dāng)新的排序序列沒(méi)有被創(chuàng)建時(shí),最新現(xiàn)有的排序序列項(xiàng)中的SYNCW位可能需要被置位以確保相對(duì)于隨后的存儲(chǔ)的在先存儲(chǔ)的順序。執(zhí)行單元102和裝載/存儲(chǔ)單元118共同檢測(cè)SYNCW指令的執(zhí)行并且維持SYNCW。
SYNCW指令的執(zhí)行導(dǎo)致對(duì)排序序列項(xiàng)314中的SYNCW402位的置位。當(dāng)SYNCW位402在排序序列項(xiàng)中被置位時(shí),排序序列項(xiàng)只有在滿足所有以下條件才會(huì)被刪除(1)包含在排序序列項(xiàng)(被寫緩沖區(qū)項(xiàng)掩碼400所識(shí)別的)中的寫緩沖區(qū)項(xiàng)200的所有地址被發(fā)送到外部存儲(chǔ)器中;(2)被這個(gè)或其它排序序列項(xiàng)發(fā)送到系統(tǒng)中的所有地址均是可見(jiàn)的,也就是說(shuō),確認(rèn)計(jì)數(shù)器302為0。
圖5是舉例說(shuō)明執(zhí)行在排序序列控制邏輯306中的,在SYNCW指令執(zhí)行之后用于排序存儲(chǔ)指令的方法。本流程圖與附圖3相結(jié)合作以說(shuō)明。
在步驟500,寫緩沖區(qū)控制邏輯306監(jiān)控SYNCW指令的執(zhí)行。如果檢測(cè)到SYNCW指令的執(zhí)行,進(jìn)程繼續(xù)到步驟502。
在步驟502,寫緩沖區(qū)控制邏輯306檢查是否有有效的寫緩沖項(xiàng),也就是說(shuō),帶有有效位206的寫緩沖區(qū)中的寫緩沖項(xiàng)置位。如果是這樣,進(jìn)程繼續(xù)執(zhí)行到步驟504,如果不是,進(jìn)程繼續(xù)到步驟512。
在步驟504,在寫緩沖區(qū)中有有效的寫緩沖項(xiàng)。進(jìn)程繼續(xù)執(zhí)行步驟504。
排序序列項(xiàng)314被分配到排序序列300中。進(jìn)程繼續(xù)執(zhí)行步驟506。
在步驟506,與寫緩沖區(qū)122中的所有有效的寫緩沖項(xiàng)200相對(duì)應(yīng)的被分配的排序序列項(xiàng)312中的寫緩沖項(xiàng)掩碼位400被置位。進(jìn)程繼續(xù)執(zhí)行到步驟508。
在步驟508,包含在被分配的排序序列項(xiàng)314中的寫緩沖項(xiàng)通過(guò)清零每一個(gè)寫緩沖項(xiàng)200中的有效位208而使無(wú)效。每一個(gè)寫緩沖項(xiàng)200中的有效位208保持置位直到存儲(chǔ)在寫緩沖項(xiàng)200中的緩沖區(qū)202中的數(shù)據(jù)被寫入到外部存儲(chǔ)器。
在步驟510,SYNCW位402在被分配的排序序列項(xiàng)200中被置位。進(jìn)程繼續(xù)到步驟500以等待下一條將被執(zhí)行的SYNCW指令。
在步驟512,在寫緩沖區(qū)122中沒(méi)有有效的寫緩沖項(xiàng)200,寫緩沖區(qū)控制邏輯306檢查在排序序列300中是否有排序序列項(xiàng)314。如果有,進(jìn)程繼續(xù)到步驟514,如果沒(méi)有,進(jìn)程繼續(xù)到步驟516。
在步驟514,在寫緩沖區(qū)122中沒(méi)有有效的寫緩沖項(xiàng)200,并且在排序序列300中有至少一個(gè)排序序列項(xiàng)314。沒(méi)有排序序列項(xiàng)被分配,取而代之的是,被分配在排序序列300中的最后一個(gè)排序序列項(xiàng)314中的SYNCW位402。進(jìn)程繼續(xù)到步驟500,等待下一條將被執(zhí)行的SYNCW指令。
在步驟516,在寫緩沖區(qū)122中沒(méi)有有效的寫緩沖項(xiàng)200,并且在排序序列300中沒(méi)有排序序列項(xiàng)314。排序序列項(xiàng)314被分配。因?yàn)闆](méi)有具有將被存儲(chǔ)在外部存儲(chǔ)器中的數(shù)據(jù)的有效寫緩沖區(qū)200,因此沒(méi)有寫緩沖項(xiàng)掩碼位400被置位。進(jìn)程繼續(xù)到步驟510,對(duì)在被分配的排序序列項(xiàng)中的SYNCW位402置位。
圖6說(shuō)明了在圖1所示的一致性存儲(chǔ)器總線132上的存儲(chǔ)操作。一致性存儲(chǔ)總線包括添加(ADD)總線,存儲(chǔ)(STORE)總線,確認(rèn)(COMMIT)總線和填充(FILL)總線。與ADD總線和COMMIT總線的接口如圖3中所示。ADD總線傳輸?shù)刂泛涂刂菩畔?lái)開(kāi)始一致性存儲(chǔ)器總線事務(wù)處理。STORE總線傳輸與事務(wù)處理相關(guān)的存儲(chǔ)數(shù)據(jù)。COMMIT總線傳輸控制信息,所述的控制信息開(kāi)始來(lái)自外部存儲(chǔ)器的事務(wù)處理響應(yīng)。FILL總線將高速緩存塊從外部存儲(chǔ)器傳輸?shù)教幚砥鳌?br>
一致性總線仲裁邏輯304控制存儲(chǔ)操作。一旦收到來(lái)自排序序列控制邏輯306的發(fā)送請(qǐng)求324,就會(huì)開(kāi)始存儲(chǔ)操作。存儲(chǔ)在寫緩沖項(xiàng)中的高速緩存塊800的地址從ADD總線上的寫緩沖地址文件312中被發(fā)送,以及確認(rèn)計(jì)數(shù)器302增加。ADD總線周期也發(fā)送在STORE總線周期中所需要的128位(八倍長(zhǎng)字)傳輸?shù)臄?shù)量。
當(dāng)STORE總線可用并且用于數(shù)據(jù)的外部存儲(chǔ)器的緩存區(qū)空間可用時(shí),則STORE總線傳輸被預(yù)期的延遲。處理器驅(qū)動(dòng)存儲(chǔ)數(shù)據(jù)到STORE總線。在所示的實(shí)施例中,每一個(gè)STORE總線周期傳輸?shù)?6字節(jié)(128位)完整的存儲(chǔ)需要五個(gè)STORE總線周期。STORE總線周期的數(shù)量范圍從一到八,傳輸存儲(chǔ)在寫緩沖項(xiàng)200中的緩沖區(qū)202中的全部的128字節(jié)的高速緩存塊。外部存儲(chǔ)器控制器緩沖ADD和STORE總線信息,并維護(hù)到外部存儲(chǔ)器的寫操作。從COMMIT總線上所收到的確認(rèn)標(biāo)識(shí)320指出存儲(chǔ)器控制器已經(jīng)收到并排序地址,也就是說(shuō),地址已被發(fā)送到外部存儲(chǔ)器。
在從COMMIT總線收到的確認(rèn)指示320之后,確認(rèn)計(jì)數(shù)器302減少。確認(rèn)標(biāo)識(shí)320指出存儲(chǔ)數(shù)據(jù)對(duì)一致性存儲(chǔ)器總線132的所有用戶都是可見(jiàn)的。確認(rèn)標(biāo)識(shí)320可能在現(xiàn)行的存儲(chǔ)操作完全結(jié)束前被發(fā)送。舉例來(lái)說(shuō),假定任何隨后的一致性存儲(chǔ)器總線操作可以看到更新的存儲(chǔ)信息,外部存儲(chǔ)器控制器將確認(rèn)標(biāo)識(shí)320通過(guò)COMMIT總線發(fā)送到處理器用于存儲(chǔ)操作,即使數(shù)據(jù)并沒(méi)有被寫到外部存儲(chǔ)器。
排序序列控制邏輯306一旦檢測(cè)到確認(rèn)計(jì)數(shù)器等于0時(shí),即,先前的存儲(chǔ)周期已經(jīng)完成,可以請(qǐng)求一致性總線仲裁邏輯在一致性存儲(chǔ)器總線上開(kāi)始另一個(gè)存儲(chǔ)周期。
存儲(chǔ)器排序指令在很多高性能的存儲(chǔ)器系統(tǒng)中是很有必要的,因?yàn)橹噶畹膱?zhí)行的無(wú)次序的。具體地,高性能存儲(chǔ)器排序指令對(duì)高信息包處理性能是很重要的,因?yàn)楹芏嗖僮骺梢酝ㄟ^(guò)信息包處理應(yīng)用程序保持在正在處理中。
圖7是包括網(wǎng)絡(luò)服務(wù)處理器700的安全應(yīng)用軟件702的方框圖,其中所述的網(wǎng)絡(luò)服務(wù)處理器700包括附圖1中所示的至少一個(gè)處理器。
安全應(yīng)用軟件102是單獨(dú)的系統(tǒng),它可以將以太網(wǎng)端口上收到信息包轉(zhuǎn)換到另一個(gè)以太網(wǎng)端口并且在轉(zhuǎn)寄信息包之前對(duì)收到信息包執(zhí)行多個(gè)安全功能。例如,安全應(yīng)用702可以被用來(lái)對(duì)廣域網(wǎng)上接收到的信息包在將被處理的信息包轉(zhuǎn)寄給局域網(wǎng)上之前進(jìn)行安全處理。
網(wǎng)絡(luò)服務(wù)處理器700包含硬件信息包處理、緩沖作用、工作調(diào)度、有序化、同步化、對(duì)加速所有信息包處理任務(wù)的一致性支持。網(wǎng)絡(luò)服務(wù)處理器700處理封裝在接收到的信息包中的開(kāi)放系統(tǒng)互連網(wǎng)絡(luò)的L2-L7層協(xié)議。
網(wǎng)絡(luò)服務(wù)處理器700通過(guò)物理界面PHY704a、704b從以太網(wǎng)端口(Gig E)接收信息包,對(duì)接收到的信息包執(zhí)行L2-L7網(wǎng)絡(luò)協(xié)議處理,并通過(guò)物理界面704a、704b或PCI總線706轉(zhuǎn)寄處理的信息包。網(wǎng)絡(luò)協(xié)議的處理可以包含對(duì)網(wǎng)絡(luò)安全協(xié)議的處理,如防火墻、防火墻的應(yīng)用、包括IP安全(IPSEC)和/或安全套接字層的虛擬專用網(wǎng)絡(luò)(VPN)、入侵偵查系統(tǒng)(IDS)和反病毒(AV)。
在網(wǎng)絡(luò)處理器700內(nèi)的動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)控制器控制到外部DRAM708的訪問(wèn),該DRAM708是與網(wǎng)絡(luò)服務(wù)處理器700耦合的。DRAM708在網(wǎng)絡(luò)服務(wù)處理器700的外部。DRAM708存儲(chǔ)從PHY界面704a、706b或外部設(shè)備互連擴(kuò)展(PCI-X)接口706的所接收到的數(shù)據(jù)信息包用于由網(wǎng)絡(luò)服務(wù)處理器700的處理。
網(wǎng)絡(luò)服務(wù)處理器700包含另外一個(gè)用來(lái)控制低延時(shí)DRAM718的存儲(chǔ)控制器。低延時(shí)DRAM718是用在網(wǎng)絡(luò)服務(wù)和網(wǎng)絡(luò)安全上的,所述的網(wǎng)絡(luò)服務(wù)和網(wǎng)絡(luò)安全允許快速查找和包含入侵檢測(cè)系統(tǒng)(IDS)或反病毒軟件所要求的模塊匹配。
圖8是圖7中所示的網(wǎng)絡(luò)服務(wù)處理器700的方塊圖。網(wǎng)絡(luò)處理器700通過(guò)采用最少一個(gè)處理器內(nèi)核(圖1所示)的方式來(lái)呈現(xiàn)其高執(zhí)行性能。網(wǎng)絡(luò)應(yīng)用可以被分為為數(shù)據(jù)平面和控制平面操作。數(shù)據(jù)平面操作包括用于轉(zhuǎn)寄信息包的信息包操作??刂破矫娌僮靼瑥?fù)雜的高層協(xié)議部分的處理,如網(wǎng)絡(luò)協(xié)議安全性(EPsec)、傳輸控制協(xié)議(TCP)和加密套接字協(xié)議層(SSL)。數(shù)據(jù)平面操作可以包含這些復(fù)雜的高層協(xié)議其它部分的處理。每一個(gè)處理器內(nèi)核100可以實(shí)現(xiàn)完全的操作系統(tǒng),即執(zhí)行控制平面處理或者運(yùn)行調(diào)諧的數(shù)據(jù)平面的代碼,這些都是執(zhí)行數(shù)據(jù)平面處理。例如,所有的處理器內(nèi)核都能運(yùn)行調(diào)諧的數(shù)據(jù)平面的代碼,全部的處理器內(nèi)核每一個(gè)可以執(zhí)行全部的操作系統(tǒng)或者一些處理器內(nèi)容可以執(zhí)行操作系統(tǒng)而剩下的處理器內(nèi)容運(yùn)行數(shù)據(jù)平面代碼。
SYNCW指令典型地被用在并行程序中,這些程序有能夠在不同的處理器中同時(shí)執(zhí)行的多個(gè)指令流。順序(在其中存儲(chǔ)指令的結(jié)果被其它的處理器所觀測(cè))確定在并行程序中可靠地共享數(shù)據(jù)的必要的動(dòng)作。
被一個(gè)處理器所執(zhí)行的存儲(chǔ)指令的結(jié)果被其它處理器不按照程序順序而觀測(cè),因此并行程序采取明確的動(dòng)作以可靠共享數(shù)據(jù)。在程序的關(guān)鍵處,發(fā)生于指令流的結(jié)果一定在所有處理器內(nèi)以相同順序出現(xiàn)的。在SYNCW指令被執(zhí)行之后的任何存儲(chǔ)的結(jié)果之前,SYNCW指令允許在SYNCW指令的執(zhí)行之前的所有存儲(chǔ)的結(jié)果對(duì)所有的處理器都是能夠看得見(jiàn)的。當(dāng)SYNCW指令被執(zhí)行時(shí),SYNCW指令就會(huì)按照其存儲(chǔ)指令的嚴(yán)格順序來(lái)執(zhí)行。
如下表1的代碼段示出SYNCW指令是如何在單獨(dú)的寫和讀處理器的指令流之間來(lái)協(xié)調(diào)共享數(shù)據(jù)的使用的。
寫L1 R2,1SYNCWSW R2,F(xiàn)LAGSYNCW讀LI R2,11:LW R1,F(xiàn)LAGBNE R2.R1,1NOPLW R1,DATA表1
標(biāo)記(FLAG)被指令流使用來(lái)確定共享數(shù)據(jù)項(xiàng)DATA是否是有效的。第一個(gè)被復(fù)寫器執(zhí)行的SYNCW強(qiáng)制數(shù)據(jù)的存儲(chǔ)在FLAG完成之前被執(zhí)行到外部存儲(chǔ)器。第二個(gè)被復(fù)寫器執(zhí)行的SYNCW確保了存儲(chǔ)標(biāo)記在它被處理器內(nèi)核識(shí)別之前是不在寫緩沖區(qū)逗留的。
通過(guò)SPI-4.2或RGM II界面,信息包被接收用于GMX/SPX單元810a,810b處理。通過(guò)PCI界面也可以收到數(shù)據(jù)包。GMX/SPX單元通過(guò)檢查包括在接收的信息包中的L2網(wǎng)絡(luò)協(xié)議包頭各種區(qū)域執(zhí)行收到的信息包的預(yù)處理,然后把該信息包轉(zhuǎn)寄到信息包輸入單元814。
信息包輸入單元814對(duì)包含在信息包里的協(xié)議報(bào)頭(L3,L4)執(zhí)行進(jìn)一步的預(yù)處理。預(yù)處理包含對(duì)TCP和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)(L3網(wǎng)絡(luò)協(xié)議)的校驗(yàn)和檢查。
空閑庫(kù)分配器(FPA)836維持著指向二級(jí)高速緩沖區(qū)812內(nèi)的自由存儲(chǔ)區(qū)和DRAM的指針。輸入信息包處理單元814使用指針庫(kù)中的一個(gè)以將接收的信息包數(shù)據(jù)存儲(chǔ)在二級(jí)高速緩沖存儲(chǔ)器或DRAM中,以及使用指針庫(kù)的另一個(gè)庫(kù)分配用于處理器內(nèi)核的工作序列項(xiàng)。
然后信息包輸入單元814以一種格式將信息包數(shù)據(jù)寫入到二級(jí)高速緩沖區(qū)812或者DRAM中的緩沖區(qū)中,所述的格式便于執(zhí)行在至少一個(gè)處理器內(nèi)核100中的更高層軟件用于更高級(jí)的網(wǎng)絡(luò)協(xié)議的進(jìn)一步處理。
網(wǎng)絡(luò)服務(wù)處理器100也包含了卸載處理器內(nèi)核100的應(yīng)用程序?qū)S寐?lián)合處理器,以致網(wǎng)絡(luò)服務(wù)處理器達(dá)到高處理能力。壓縮/解壓聯(lián)合處理器808則致力于處理對(duì)收到的數(shù)據(jù)包進(jìn)行解壓和壓縮。DFA模塊844包括專用的DFA發(fā)動(dòng)機(jī)以加速用于反病毒(AV),侵入檢測(cè)系統(tǒng)(IDS)和其它處理應(yīng)用的模式和標(biāo)記達(dá)到4Gbps。
I/O橋(IOB)832管理所有的協(xié)議及仲裁,并提供一致性I/O的劃分。IOB 832包含橋838和提取和增加單元(FAU)840。在FAU840內(nèi)的寄存器被用作維持輸出序列的長(zhǎng)度,而該輸出序列通過(guò)信息包輸出單元818被用來(lái)轉(zhuǎn)寄處理過(guò)的信息包。橋838包括用于存儲(chǔ)將在I/O總線、一致性存儲(chǔ)器總線、信息包輸入單元814和信息包輸出單元818之間傳輸?shù)男畔⒌木彌_序列。
信息包順序/工作(POW)模塊828為處理器100內(nèi)核做排序和調(diào)度工作。工作就是通過(guò)增加工作序列項(xiàng)到序列里被排序。例如,為了每一個(gè)數(shù)據(jù)包的通過(guò),通過(guò)信息包輸入單元814增加工作序列項(xiàng)。計(jì)時(shí)單元842用來(lái)為處理器內(nèi)核完成調(diào)度的功能。
處理器內(nèi)核100從POW模塊828得到工作。POW模塊828為處理器內(nèi)核100選擇(即,調(diào)度)工作,并返回指向工作序列項(xiàng)的指針來(lái)描述給處理器內(nèi)核100的工作。
處理器內(nèi)核100包含指令高速緩沖區(qū)126、一級(jí)數(shù)據(jù)高速緩沖區(qū)128和密碼加速器124。在一個(gè)實(shí)施方案中,網(wǎng)絡(luò)服務(wù)處理器100包含16個(gè)RISC(精簡(jiǎn)指令集計(jì)算機(jī))型處理器內(nèi)核。在一個(gè)實(shí)施方案中,每一個(gè)超標(biāo)量體系結(jié)構(gòu)的RISC型處理器內(nèi)核都是MIPS64版雙核處理器內(nèi)核的擴(kuò)展。
二級(jí)高速緩沖區(qū)812和DRAM存儲(chǔ)器都是對(duì)所有的處理器內(nèi)核100和I/O聯(lián)合處理器設(shè)備共享的。每一個(gè)處理器內(nèi)核100通過(guò)一致性存儲(chǔ)總線132耦合到二級(jí)高速緩沖區(qū)812上。該一致性存儲(chǔ)總線132對(duì)所有的存儲(chǔ)器以及處理器內(nèi)核100、I/O橋(IOB832)、二級(jí)高速緩沖區(qū)和控制器812之間的I/O事務(wù)處理都是通訊信道。在一個(gè)實(shí)施方案中,存儲(chǔ)總線132對(duì)與支持全部一級(jí)數(shù)據(jù)高速緩沖區(qū)128寫功能的16位的處理器內(nèi)核來(lái)說(shuō)是可以升級(jí)的,有高速的緩沖速度,也能優(yōu)化I/O。
二級(jí)高速緩沖存儲(chǔ)控制器812維持著存儲(chǔ)器基準(zhǔn)的一致性。它對(duì)每一個(gè)添寫要求返回最新的模塊拷貝,反應(yīng)了是存儲(chǔ)在二級(jí)高速緩存還是DRAM還是正在傳輸過(guò)程中。它同樣存儲(chǔ)了每一個(gè)處理器內(nèi)核100內(nèi)的數(shù)據(jù)高速緩沖區(qū)128的標(biāo)簽的復(fù)件。它把數(shù)據(jù)緩沖區(qū)標(biāo)簽同高速緩沖模塊存儲(chǔ)所需的地址進(jìn)行比較,同時(shí)當(dāng)存儲(chǔ)指令從另外的處理器內(nèi)核或I/O組件發(fā)出并經(jīng)過(guò)IOB832時(shí),它就會(huì)使數(shù)據(jù)緩沖標(biāo)簽失效。當(dāng)完成對(duì)數(shù)據(jù)包的處理之后,PKO818就會(huì)從存儲(chǔ)區(qū)讀取數(shù)據(jù)包的數(shù)據(jù),用L4網(wǎng)絡(luò)協(xié)議進(jìn)行再處理(如產(chǎn)生一個(gè)TCP/UDP求和驗(yàn)證),然后通過(guò)GMX/SPC單元810a,810b往前移位,最后釋放在數(shù)據(jù)包采用的L2緩存/DRAM。
本發(fā)明已經(jīng)為被包括在安全應(yīng)用中的處理器內(nèi)核作以描述。然而,本發(fā)明并沒(méi)有限制在安全應(yīng)用中的處理器內(nèi)核。本發(fā)明應(yīng)用在廉線處理器中的存儲(chǔ)指令的排序。雖然本發(fā)明結(jié)合其優(yōu)選的實(shí)施方案已經(jīng)被具體地顯示和描述,但是本領(lǐng)域技術(shù)人員能夠理解的是,任何形式上和細(xì)節(jié)上的各種各樣的變化都沒(méi)有超出權(quán)利要求書所限定的本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種處理器,包括寫緩沖區(qū),該寫緩沖區(qū)具有用于把將被存儲(chǔ)的數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)區(qū)的多個(gè)寫緩沖項(xiàng);系統(tǒng)接口,該系統(tǒng)接口包括排序序列、排序排序存儲(chǔ)在寫緩沖區(qū)內(nèi)的數(shù)據(jù)經(jīng)過(guò)排序序列中的排序序列項(xiàng)被發(fā)送到外部存儲(chǔ)器;排序序列邏輯,該排序序列邏輯一旦檢測(cè)到存儲(chǔ)排序指令的執(zhí)行,則確保由排序序列中的排序序列項(xiàng)所標(biāo)識(shí)的寫緩沖區(qū)地址在用于隨后發(fā)布的存儲(chǔ)指令的地址之前被發(fā)送到外部存儲(chǔ)器。
2.根據(jù)權(quán)利要求1的處理器,其中排序序列邏輯通過(guò)監(jiān)控從用于每個(gè)寫緩沖區(qū)地址的外部存儲(chǔ)器中返回的確認(rèn)標(biāo)識(shí)符確保寫緩沖區(qū)地址被發(fā)送。
3.根據(jù)權(quán)利要求1的處理器,一旦在寫緩沖區(qū)中檢測(cè)到有效寫緩沖項(xiàng),系統(tǒng)接口分配排序序列項(xiàng)并在排序序列項(xiàng)中識(shí)別有效寫緩沖項(xiàng)。
4.根據(jù)權(quán)利要求1的處理器,其中一旦在寫緩沖區(qū)中沒(méi)有檢測(cè)到有效寫緩沖項(xiàng)以及在排序序列中至少一個(gè)排序序列項(xiàng),系統(tǒng)接口在最后排序序列項(xiàng)中設(shè)置存儲(chǔ)排序指令執(zhí)行標(biāo)識(shí)。
5.根據(jù)權(quán)利要求1的處理器,一旦檢測(cè)到在寫緩沖區(qū)中沒(méi)有有效的寫緩沖項(xiàng)以及在排序序列中沒(méi)有排序序列項(xiàng),系統(tǒng)接口分配排序序列項(xiàng)并在分配的排序序列項(xiàng)中設(shè)置存儲(chǔ)排序指令執(zhí)行標(biāo)識(shí)。
6.根據(jù)權(quán)利要求1的處理器,寫緩沖區(qū)有N個(gè)寫緩沖項(xiàng),并且排序序列有N+1個(gè)排序序列項(xiàng)。
7.根據(jù)權(quán)利要求5的處理器,其中N=16。
8.根據(jù)權(quán)利要求1的處理器,寫緩沖項(xiàng)包括用于存儲(chǔ)將被存儲(chǔ)到外部存儲(chǔ)器中的數(shù)據(jù)的緩沖區(qū)以及具有與緩沖區(qū)中的每一個(gè)字節(jié)相對(duì)應(yīng)的位的掩碼。
9.根據(jù)權(quán)利要求1的處理器,排序序列項(xiàng)包括存儲(chǔ)排序指令執(zhí)行標(biāo)識(shí)符和具有與每個(gè)寫緩沖項(xiàng)相對(duì)應(yīng)的位的排序掩碼。
10.一種用于在處理器中排序存儲(chǔ)數(shù)據(jù)的方法將待存儲(chǔ)到外部存儲(chǔ)器中的數(shù)據(jù)存儲(chǔ)到寫緩沖區(qū)中的寫緩沖項(xiàng)中;借助排序序列內(nèi)的排序序列項(xiàng)把存儲(chǔ)在緩沖區(qū)內(nèi)的數(shù)據(jù)發(fā)送到外部存儲(chǔ)器;一旦檢測(cè)到存儲(chǔ)排序指令的執(zhí)行,則確保由排序序列中的排序序列項(xiàng)所標(biāo)識(shí)的寫緩沖地址在后續(xù)被發(fā)布的存儲(chǔ)指令之前發(fā)送到外部存儲(chǔ)器。
11.根據(jù)權(quán)利要求10的方法,確保包括監(jiān)控從外部存儲(chǔ)器返回的用于每個(gè)寫緩沖地址的確認(rèn)指示符。
12.根據(jù)權(quán)利要求10的方法,進(jìn)一步包括一旦檢測(cè)到寫緩沖區(qū)中有效的寫緩沖項(xiàng),則分配排序序列項(xiàng)并在排序序列項(xiàng)標(biāo)識(shí)有效寫緩沖項(xiàng)。
13.根據(jù)權(quán)利要求10的方法,進(jìn)一步包括一旦檢測(cè)到在寫緩沖區(qū)中沒(méi)有有效寫緩沖項(xiàng)以及在排序序列中至少一個(gè)排序序列項(xiàng),則在最后的序列項(xiàng)中設(shè)置存儲(chǔ)排序指令標(biāo)識(shí)符。
14.根據(jù)權(quán)利要求10的方法,進(jìn)一步包括一旦檢測(cè)到在寫緩沖區(qū)中沒(méi)有有效的寫緩沖項(xiàng)以及在排序序列中沒(méi)有排序序列項(xiàng),則分配排序序列項(xiàng)并在分配的排序序列項(xiàng)中設(shè)置存儲(chǔ)排序指令執(zhí)行標(biāo)識(shí)符。
15.根據(jù)權(quán)利要求10的方法,其中寫緩沖項(xiàng)包括用于存儲(chǔ)將被存儲(chǔ)在外部存儲(chǔ)器中的數(shù)據(jù)的緩沖區(qū)以及具有與緩沖區(qū)中每個(gè)字節(jié)相對(duì)應(yīng)的位的掩碼。
16.根據(jù)權(quán)利要求10的方法,其中排序序列項(xiàng)包括存儲(chǔ)排序指令執(zhí)行標(biāo)識(shí)符以及具有與每個(gè)寫緩沖項(xiàng)相對(duì)應(yīng)的位的排序掩碼。
17.根據(jù)權(quán)利要求10的方法,其中寫緩沖區(qū)具有N個(gè)寫緩沖項(xiàng),以及排序序列具有N+1個(gè)排序序列項(xiàng)。
18.根據(jù)權(quán)利要求17的方法,其中N=16。
19.一種處理器,其包括寫緩沖區(qū),該寫緩沖區(qū)具有用于存儲(chǔ)待存儲(chǔ)到外部存儲(chǔ)器中的數(shù)據(jù)的多個(gè)寫緩沖項(xiàng);用于將待存儲(chǔ)到寫緩沖區(qū)中的數(shù)據(jù)借助排序序列中的排序序列項(xiàng)發(fā)送到外部存儲(chǔ)器的裝置;一旦檢測(cè)到存儲(chǔ)排序指令的執(zhí)行,用于確保由排序序列中的排序序列項(xiàng)所標(biāo)識(shí)的寫緩沖地址在用于后續(xù)發(fā)布的存儲(chǔ)指令的地址之前被發(fā)送到外部存儲(chǔ)器的裝置。
20.一種網(wǎng)絡(luò)服務(wù)處理器,其包括高速緩沖存儲(chǔ)區(qū);以及至少一個(gè)處理器內(nèi)核,該處理器內(nèi)核包含寫緩沖區(qū),該寫緩沖區(qū)具有用于存儲(chǔ)將被存儲(chǔ)到高速緩沖存儲(chǔ)區(qū)中的數(shù)據(jù)的多個(gè)寫緩沖項(xiàng);系統(tǒng)接口,所述的系統(tǒng)接口包括排序序列,存儲(chǔ)在寫緩沖區(qū)的數(shù)據(jù)經(jīng)過(guò)排序序列內(nèi)的排序序列項(xiàng)被發(fā)送到高速緩沖存儲(chǔ)器;排序序列邏輯,該排序序列邏輯一旦檢測(cè)到存儲(chǔ)排序指令的執(zhí)行則確保由排序序列中的排序序列項(xiàng)所標(biāo)識(shí)的寫緩沖區(qū)地址在用于后續(xù)發(fā)布的存儲(chǔ)指令的地址之前被發(fā)送到高速緩沖存儲(chǔ)器。
全文摘要
提供一種用于在廉線處理器中最小化延遲的方法和裝置。通過(guò)將存儲(chǔ)數(shù)據(jù)經(jīng)過(guò)排序序列發(fā)送到外部存儲(chǔ)器,使無(wú)序指令調(diào)度程序中的指令被有序地執(zhí)行,而且不需要延遲廉線。
文檔編號(hào)G06F9/38GK101040256SQ200580034606
公開(kāi)日2007年9月19日 申請(qǐng)日期2005年9月1日 優(yōu)先權(quán)日2004年9月10日
發(fā)明者大衛(wèi)·H·阿舍爾, 理查德·E·科斯勒, 李彥志 申請(qǐng)人:卡威姆網(wǎng)絡(luò)有限公司