專利名稱:基于網(wǎng)絡(luò)處理器的流相關(guān)控制信息高速緩沖存儲器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是一種用于對數(shù)據(jù)包處理中的控制信息進(jìn)行緩存的機構(gòu),可以應(yīng)用于互聯(lián)網(wǎng)絡(luò)中的高速并且復(fù)雜的報文處理,屬于計算機技術(shù)領(lǐng)域。
背景技術(shù):
網(wǎng)絡(luò)處理器屬于專用處理器的一種,通常應(yīng)用于靈活高速的數(shù)據(jù)包處理。它結(jié)合了ASIC和通用CPU的優(yōu)勢,具有能夠縮短路由器開發(fā)周期和延長網(wǎng)絡(luò)設(shè)備生存期的優(yōu)點。一些廠商已經(jīng)陸續(xù)推出了各類網(wǎng)絡(luò)處理器產(chǎn)品。為了達(dá)到預(yù)期的目的,這些產(chǎn)品通常采用了很多方興未艾的新技術(shù)。比如,最為常見的做法就是將多個處理單元集成在同一個網(wǎng)絡(luò)處理器上,并且使用針對網(wǎng)絡(luò)應(yīng)用進(jìn)行了優(yōu)化的專用指令集。另外一個經(jīng)常采用的技術(shù)是將功能比較固定的操作用協(xié)處理器或?qū)S糜布硗瓿?,以減少軟件的開銷,大幅度地提升性能。由于網(wǎng)絡(luò)處理器需要處理大量的數(shù)據(jù)包,因此數(shù)據(jù)包的移動通常由專用的硬件完成。當(dāng)處理開始進(jìn)行的時候,所需要的數(shù)據(jù)包字段通常是已經(jīng)保存在專用寄存器堆中的,因此我們認(rèn)為對數(shù)據(jù)包字段的訪問是不存在訪問延遲的。但是,網(wǎng)絡(luò)應(yīng)用所需要的控制信息,比如流量統(tǒng)計信息、流的狀態(tài)信息等,由于所占據(jù)的空間較大,一般是保存在片外存儲器件中的。即便有些網(wǎng)絡(luò)處理器使用較為高速的SRAM作為控制信息存儲器,但是由多處理單元而導(dǎo)致的排隊使得訪問延遲與處理周期相比仍然非??捎^,在某些網(wǎng)絡(luò)處理器產(chǎn)品中甚至達(dá)到數(shù)百倍。因此,控制信息的訪問延遲隱藏仍然是網(wǎng)絡(luò)處理器中比較關(guān)鍵的技術(shù)。
多線程是網(wǎng)絡(luò)處理器廣泛采用的一種延遲隱藏技術(shù)。但是,目前許多復(fù)雜的網(wǎng)絡(luò)應(yīng)用使得數(shù)據(jù)包之間的并行性逐漸減弱,即后面的數(shù)據(jù)包的處理依賴于前面數(shù)據(jù)包處理的結(jié)果。這一現(xiàn)象在流統(tǒng)計、流量監(jiān)測等基于流的應(yīng)用中更為顯著。如果把數(shù)據(jù)包不加區(qū)別地分配給網(wǎng)絡(luò)處理器中的各個線程,就會導(dǎo)致復(fù)雜的同步;假如把相互之間存在依賴性的數(shù)據(jù)包分配給同一線程,又會大大降低數(shù)據(jù)包之間的并行性,尤其是在網(wǎng)絡(luò)處理器使用較為廣泛但是數(shù)據(jù)包之間并行性較低的邊緣級鏈路中,網(wǎng)絡(luò)處理器的性能會迅速地惡化[1]。此外,多線程還存在對存儲器帶寬要求較高的缺點。
Dionisios等人為網(wǎng)絡(luò)處理器設(shè)計了一種智能化的IO系統(tǒng),其數(shù)據(jù)包處理所需要的控制信息被直接寫入網(wǎng)絡(luò)處理器處理單元的寄存器堆中[2]。這種方法需要使用較為昂貴的SRAM作為網(wǎng)絡(luò)處理器外部的控制信息存儲器,所支持的數(shù)據(jù)量以及并發(fā)流的數(shù)目都很小,不能實現(xiàn)復(fù)雜的網(wǎng)絡(luò)應(yīng)用。
Huan Liu.A Trace Driven Study of Packet Level Parallelism.Proceedings of IEEEInternational Conference on Communications 2002,Vol.4,2002,pp.2191-2195. D.N.Pnevmatikatos,I.Sourdis and K.Vlachos.An Efficient,Low-Cost I/O Subsystemfor Network Processors.IEEE Design and Test of Computers,Vol.20,No.4,July/August 2003,pp.56-64.
發(fā)明內(nèi)容
本發(fā)明的目的在于,設(shè)計一種網(wǎng)絡(luò)處理器控制信息訪問延遲隱藏的機制,使它既能夠使用DRAM等大容量低成本的存儲器件來完成較為復(fù)雜的功能,又可以減少對網(wǎng)絡(luò)處理器存儲器帶寬的占用,同時還能兼顧網(wǎng)絡(luò)處理器對于性能確定性的需求。
對于大多數(shù)網(wǎng)絡(luò)應(yīng)用來說,屬于同一個流的數(shù)據(jù)包共享同樣的數(shù)據(jù)信息,如流的狀態(tài)信息、統(tǒng)計信息以及路由查找的結(jié)果等,稱為流相關(guān)控制信息。本發(fā)明就是為流相關(guān)控制信息專門設(shè)計的高速緩沖存儲器,稱為Flow-Cache。高速緩沖存儲器的使用,使得網(wǎng)絡(luò)處理器可以采用DRAM等大容量低成本的存儲器件作為網(wǎng)絡(luò)處理器的控制信息存儲器;并且當(dāng)剛處理過的流再次出現(xiàn)時,無需重復(fù)地讀入數(shù)據(jù),節(jié)省了存儲器帶寬。
網(wǎng)絡(luò)應(yīng)用通常以流分類開始,然后根據(jù)流分類的結(jié)果采取相應(yīng)的處理。而流分類由于其復(fù)雜性一般是由協(xié)處理器來完成的。假如我們將流相關(guān)控制信息限制在一個數(shù)據(jù)塊中(以犧牲少量的編程靈活性為代價),那么,在其他需要處理單元來完成的操作開始之前,該區(qū)域的起始地址就可以作為流分類的結(jié)果而獲得。通過設(shè)置適當(dāng)?shù)挠布沟脭?shù)據(jù)包的處理和流相關(guān)控制信息的預(yù)取流水進(jìn)行,就可以保證在處理單元開始對數(shù)據(jù)包進(jìn)行操作的時候,所需要的流相關(guān)控制信息已經(jīng)保存在Flow-Cache之中了,從而在Flow-Cache中不會發(fā)生缺失。
本發(fā)明的特征在于,分配給流相關(guān)控制信息的地址空間劃分為相同大小的塊,每個流對應(yīng)于一個塊,用來保存該流的控制信息,屬于該流的所有數(shù)據(jù)包共享該塊中的信息;Flow-Cache設(shè)置了兩個稱為BankA和Bank B的工作棧,每個工作棧中的緩存數(shù)據(jù)也組織為塊的形式;每個數(shù)據(jù)包所對應(yīng)的塊只位于Bank A和Bank B兩個工作棧中的一個,在處理單元在使用一個工作棧中的流相關(guān)控制信息進(jìn)行處理的時候,另外一個工作棧通過流分類器提供的預(yù)取地址為下一個數(shù)據(jù)包讀入相關(guān)的流相關(guān)控制信息;整個處理流程為當(dāng)數(shù)據(jù)包被網(wǎng)絡(luò)處理器接收時,先由流分類器進(jìn)行流分類,然后將所獲得的流相關(guān)控制信息的起始地址送到Flow-Cache的數(shù)據(jù)移動控制器;數(shù)據(jù)移動控制器檢查該流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache的Bank A和Bank B兩個工作棧的某一個中,如果沒有,則Flow-Cache中目前未被處理單元使用的那個工作棧中相應(yīng)的塊被選為被替換的塊,如果被替換的塊曾經(jīng)被處理單元修改,則先將被修改的內(nèi)容寫回控制信息存儲器;然后將所需要的流相關(guān)控制信息從控制信息存儲器中讀出;當(dāng)所需要的流相關(guān)控制信息被寫入到Flow-Cache后,處理單元切換到該工作棧,對數(shù)據(jù)包進(jìn)行處理;Flow-Cache的輸入信號包括來自處理核心的讀操作請求信號PEFC_RD、來自處理核心的寫操作請求信號PEFC_WR、來自處理核心的控制信息地址線PEFC_AD、來自處理核心的數(shù)據(jù)PEFC_DI、來自處理核心的狀態(tài)信號PE_SWCH,來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR、來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ,來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI以及來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK;Flow-Cache的輸出信號包括送往處理核心的數(shù)據(jù)FCPE_DO、送往處理核心的確認(rèn)信號FCPE_ACK,送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD、送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR、送往存儲器及I/O總線接口的地址線FCMS_AD和送往存儲器及I/O總線接口的數(shù)據(jù)FCMS_DO;假設(shè)網(wǎng)絡(luò)處理器以字節(jié)尋址,每個塊包含N=2s個字節(jié),且地址寬度為t+s位,則控制信息預(yù)取地址只需要該地址的高t位;設(shè)每個工作棧均保存M=2r個塊,則t位的控制信息預(yù)取地址中的低r位就稱為index部分,控制信息預(yù)取地址的高t-r位稱為a_tag部分;所述的工作棧Bank A和Bank B各自含有a、地址標(biāo)簽空間Tag RAM A和Tag RAM B,其中的數(shù)據(jù)稱為地址標(biāo)簽b_tag地址標(biāo)簽空間Tag RAM A的輸入信號包括地址信號輸入端與來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分相連,數(shù)據(jù)輸入端與CL_ADDR的a_tag部分相連,讀寫控制輸入端為來自多路選擇器3-A1的TagA_WR;地址標(biāo)簽空間Tag RAM A的輸出信號為TagA_DO;地址標(biāo)簽空間Tag RAM B的輸入信號包括地址信號輸入端與來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分相連,數(shù)據(jù)輸入端與CL_ADDR的a_tag部分相連,讀寫控制輸入端為來自多路選擇器3-B1的TagB_WR;地址標(biāo)簽空間Tag RAM B的輸出信號為TagB_DO;b、數(shù)據(jù)空間Data RAM A和Data RAM B數(shù)據(jù)空間Data RAM A的輸入信號包括地址信號輸入端與來自多路選擇器3-A6的DATA_AD的低r+s位相連,數(shù)據(jù)輸入端與來自多路選擇器3-A5的DATA_DI相連,讀寫控制輸入端為來自多路選擇器3-A7的DATA_WR;數(shù)據(jù)空間Data RAM A的輸出信號為DATA_DO;數(shù)據(jù)空間Data RAM B的輸入信號包括地址信號輸入端與來自多路選擇器3-B6的DATB_AD的低r+s位相連,數(shù)據(jù)輸入端與來自多路選擇器3-B5的DATB_DI相連,讀寫控制輸入端為來自多路選擇器3-B7的DATB_WR;數(shù)據(jù)空間Data RAM B的輸出信號為DATB_DO;c、修改狀態(tài)空間Dirty RAM A和Dirty RAM B,分別為數(shù)據(jù)空間Data RAM A和Data RAMB中的塊設(shè)置若干修改標(biāo)志位,稱為D;這里以每個塊設(shè)置一個標(biāo)志位為例,并且標(biāo)志位為“1”表示已經(jīng)被修改過,標(biāo)志位為“0”表示尚未被修改過修改狀態(tài)空間Dirty RAM A的輸入信號包括地址信號輸入端與來自多路選擇器3-A4的DTYA_AD的index部分相連,數(shù)據(jù)輸入端與來自多路選擇器3-A3的DTYA_DI相連,讀寫控制輸入端為來自多路選擇器3-A2的DTYA_WR;修改狀態(tài)空間Data RAM A的輸出信號為DTYA_DO;修改狀態(tài)空間Dirty RAM B的輸入信號包括地址信號輸入端與來自多路選擇器3-B4的DTYB_AD的index部分相連,數(shù)據(jù)輸入端與來自多路選擇器3-B3的DTYB_DI相連,讀寫控制輸入端為來自多路選擇器3-B2的DTYB_WR;修改狀態(tài)空間Data RAM B的輸出信號為DTYB_DO;所述的數(shù)據(jù)移動控制器,含有a、標(biāo)簽比較器3-1,設(shè)有來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR中的a_tag部分、和地址標(biāo)簽空間Tag RAM A的輸出數(shù)據(jù)線TagA_DO,作為其兩個輸入端;當(dāng)兩個輸入端的數(shù)據(jù)完全一致時,該標(biāo)簽比較器3-1輸出為“真”,表示所需的流相關(guān)控制信息已經(jīng)保存在工作棧Bank A中;b、標(biāo)簽比較器3-2,設(shè)有來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR中的a_tag部分、和地址標(biāo)簽空間Tag RAM B的輸出數(shù)據(jù)線TagB_DO,作為其兩個輸入端;當(dāng)兩個輸入端的數(shù)據(jù)完全一致時,該標(biāo)簽比較器3-2輸出為“真”,表示所需的流相關(guān)控制信息已經(jīng)保存在工作棧Bank B中;c、棧切換控制器3-3,用來控制兩個工作棧的狀態(tài),即是為當(dāng)前正在被處理的數(shù)據(jù)包向處理核心提供流相關(guān)控制信息,還是為下一個將要被處理的數(shù)據(jù)包從網(wǎng)絡(luò)處理器外部的控制信息存儲器中讀取相關(guān)的流相關(guān)控制信息;該棧切換控制器3-3設(shè)有兩個寄存器RC,即3-3-I,和RN,即3-3-II,分別用來保存當(dāng)前正在被處理核心使用的工作棧號和下一個數(shù)據(jù)包的處理所需使用的工作棧號;棧切換控制器3-3的輸入信號包括標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出信號,來自處理核心的狀態(tài)信號PE_SWCH和由有限狀態(tài)機3-4送往棧切換控制器3-3的地址評估信號FSM_EVL;輸出信號包括Bank A選擇信號SEL A和Bank B選擇信號SEL_B;當(dāng)SEL_A為“真”時,表示工作棧Bank A目前正在被處理核心使用;當(dāng)SEL_B為“真”時,表示工作棧Bank B目前正在被處理核心使用;因此,在任何時刻,SEL_A和SEL_B互為相反;當(dāng)由有限狀態(tài)機3-4送往棧切換控制器3-3的地址評估信號FSM_EVL變?yōu)橛行r,表示下一個數(shù)據(jù)包的處理所需的流相關(guān)控制信息的起始地址已經(jīng)由流分類器送達(dá)Flow-Cache,需要對該流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache中進(jìn)行判斷;此時,如果標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出均為“假”,則表示流相關(guān)控制信息在Flow-Cache中還不存在,因此需要將RN,即3-3-II的內(nèi)容變?yōu)楫?dāng)前未被處理核心使用的那個工作棧的棧號,表示在該工作棧中即將進(jìn)行數(shù)據(jù)的移動,并且當(dāng)處理核心開始處理下一個數(shù)據(jù)包時,會使用該工作棧;如果標(biāo)簽比較器3-1輸出為“真”,表示流相關(guān)控制信息已經(jīng)保存在工作棧Bank A中,需要將RN,即3-3-II的內(nèi)容置為Bank A的工作棧號;如果標(biāo)簽比較器3-2輸出為“真”,表示流相關(guān)控制信息已經(jīng)保存在工作棧Bank B中,則RN,即3-3-II的內(nèi)容需要置為Bank B的工作棧號;標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出均為“真”是一種非法狀態(tài),是不可能出現(xiàn)的;當(dāng)來自處理核心的狀態(tài)信號PE_SWCH變?yōu)橛行Ш?,表示處理核心結(jié)束了對當(dāng)前數(shù)據(jù)包的處理,開始轉(zhuǎn)入對下一個數(shù)據(jù)包的處理;此時,需要將寄存器RN,即3-3-II的內(nèi)容寫入寄存器RC,即3-3-I;如果寄存器RC,即3-3-I中記錄的是Bank A的工作棧號,則Bank A選擇信號SEL A輸出為“真”,Bank B選擇信號SEL_B輸出為“假”;如果寄存器RC,即3-3-I中記錄的是Bank B的工作棧號,則Bank B選擇信號SEL_B輸出為“真”,Bank A選擇信號SEL A輸出為“假”;d、或非門3-4-O,兩個輸入端與標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出端相連,輸出為MISS信號;如果標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出均為“假”,則表示流相關(guān)控制信息在Flow-Cache中還不存在,輸出信號MISS變?yōu)椤罢妗?;?biāo)簽比較器3-1和標(biāo)簽比較器3-2中任何一個的輸出為“真”,則表示流相關(guān)控制信息已經(jīng)存在于Flow-Cache中,輸出信號MISS變?yōu)椤凹佟?;?biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出均為“真”是一種非法狀態(tài),是不可能出現(xiàn)的;e、有限狀態(tài)機3-4,負(fù)責(zé)完成下一個數(shù)據(jù)包處理所需的流相關(guān)信息讀取和被替換信息的寫回操作;有限狀態(tài)機3-4的輸入信號包括來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ、來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK、由多路選擇器3-M4輸出的DIRTY信號、由多路選擇器3-M1輸出的Tag_DO信號、來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分、或非門3-4-O輸出的MISS信號;輸出信號包括送往棧切換控制器3-3的地址評估信號FSM EVL、送往存儲器及I/O總線接口的地址線FCMS_AD、送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD、送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR、送往多路選擇器3-A2和多路選擇器3-B2的DTY_WR信號、送往多路選擇器3-A7和多路選擇器3-B7的DAT_WR信號、送往多路選擇器3-A1和多路選擇器3-B1的Tag_WR信號;該狀態(tài)機假設(shè)工作棧內(nèi)所有的RAM,其讀寫控制輸入端變?yōu)椤?”時,為寫操作請求,變?yōu)椤?”時,為讀操作請求;并且在地址信號變?yōu)橛行Ш蟮囊粋€周期,數(shù)據(jù)輸出變?yōu)橛行?;有限狀態(tài)機3-4的狀態(tài)轉(zhuǎn)換流程如下I、空閑狀態(tài)4-1如果來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ變?yōu)橛行?,說明有新的數(shù)據(jù)包接受了流分類操作,需要對流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache中進(jìn)行判斷,進(jìn)入判定狀態(tài);否則,維持空閑狀態(tài);II、判定狀態(tài)4-2此時地址標(biāo)簽空間Tag RAM A和Tag RAM B中的數(shù)據(jù)均已經(jīng)讀出,標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出結(jié)果變?yōu)橛行?;將輸出信號FSM_EVL置為有效,指示棧切換控制器3-3進(jìn)行工作;如果MISS信號為“假”,返回空閑狀態(tài);如果MISS信號為“真”,并且DIRTY信號為“1”,表示被替換塊的內(nèi)容被處理核心修改過,需要寫回網(wǎng)絡(luò)處理器外的控制信息存儲器;將Tag_DO輸出為FCMS_AD信號的高t-r位,將FCMS_AD信號的低s位置為零,將來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分作為FCMS_AD信號的index部分輸出,進(jìn)入寫回狀態(tài);如果MISS信號為“真”,并且DIRTY信號為“0”,則直接將新的流相關(guān)控制信息讀入Flow-Cache;將來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR作為FCMS_AD信號的高t位輸出,進(jìn)入讀取狀態(tài);III、寫回狀態(tài)4-3將DAT_WR保持為讀請求狀態(tài);通過送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR發(fā)起寫操作請求;當(dāng)來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK返回為有效時,如果工作棧中的被替換塊中還存在尚未寫回的數(shù)據(jù),則將輸出信號FCMS_AD的內(nèi)容設(shè)置為指向下一個需要被寫回的數(shù)據(jù)的地址,通常情況下,數(shù)據(jù)總線的寬度為32位,當(dāng)網(wǎng)絡(luò)處理器以字節(jié)尋址時,將輸出信號FCMS_AD的值加4即可,然后通過送往存儲器及I/O總線接口的寫操作請求信號FCMS WR再次發(fā)起寫操作請求;重復(fù)該過程直到被替換塊內(nèi)所有的數(shù)據(jù)均已寫回,撤銷寫操作請求,進(jìn)入讀取狀態(tài);IV、讀取狀態(tài)4-4通過送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD發(fā)起讀操作請求;當(dāng)來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK返回為有效時,將DAT_WR置為寫請求;如果新的流相關(guān)控制信息尚未全部從網(wǎng)絡(luò)處理器外的控制信息存儲器中讀出,則將FCMS_AD的內(nèi)容指向下一個需要被讀取的數(shù)據(jù)的地址,通常情況下,數(shù)據(jù)總線的寬度為32位,當(dāng)網(wǎng)絡(luò)處理器以字節(jié)尋址時,將FCMS_AD的內(nèi)容加4即可,然后通過送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD發(fā)起讀操作請求;重復(fù)該過程直到新的流相關(guān)控制信息均已讀出并寫入Flow-Cache,撤銷讀操作請求;將Tag_WR和DTY_WR置為寫請求并維持一個周期,以保證新的地址標(biāo)簽信息和新的修改狀態(tài)信息寫入相應(yīng)的工作棧,進(jìn)入空閑狀態(tài);f、應(yīng)答器3-5,輸入信號來自處理核心的讀操作請求信號PEFC_RD、來自處理核心的寫操作請求信號PEFC_WR,輸出信號為送往處理核心的確認(rèn)信號FCPE_ACK;在PEFC_RD或者PEFC_WR信號變?yōu)橛行У囊粋€周期后,F(xiàn)CPE_ACK信號變?yōu)橛行Р⒕S持一個周期,表示數(shù)據(jù)已經(jīng)從Flow-Cache讀出或者寫入;g、18個多路選擇器,所有的多路選擇器均在選擇控制端為“真”時,選通第一輸入端的數(shù)據(jù)作為輸出;當(dāng)選擇控制端為“假”時,選通第二輸入端的數(shù)據(jù)作為輸出;I、多路選擇器3-A1,設(shè)有來自有限狀態(tài)機3-4的Tag_WR作為第一輸入端和“0”作為第二輸入端,SEL_B作為選擇控制端;輸出端與地址標(biāo)簽空間Tag RAM A的讀寫控制輸入端TagA_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,由于處理核心不使用地址標(biāo)簽空間Tag RAM A,因此,TagA_WR的輸出為“0”;II、多路選擇器3-B1,設(shè)有來自有限狀態(tài)機3-4的Tag_WR作為第一輸入端和“0”作為第二輸入端,SEL_A作為選擇控制端;輸出端與地址標(biāo)簽空間Tag RAM B的讀寫控制輸入端TagB_WR相連當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B;由于處理核心不使用地址標(biāo)簽空間Tag RAM B,因此,TagB_WR的輸出為“0”;III、多路選擇器3-A2,設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端,來自有限狀態(tài)機3-4的DTY_WR作為第二輸入端;SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的讀寫控制輸入端DTYA_WR相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM A的標(biāo)志位置為“1”,即接受PEFC_WR的控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4,即DTY_WR的控制,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,將修改狀態(tài)空間Dirty RAM A的標(biāo)志位清零;IV、多路選擇器3-B2,設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端,來自有限狀態(tài)機3-4的DTY_WR作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的讀寫控制輸入端DTYB_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM B的標(biāo)志位置為“1”,即接受PEFC_WR的控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4,即DTY_WR的控制,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,將修改狀態(tài)空間Dirty RAM B的標(biāo)志位清零;V、多路選擇器3-A3,設(shè)有“1”作為第一輸入端和“0”作為第二輸入端,SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的數(shù)據(jù)輸入端DTYA_DI相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM A的標(biāo)志位置為“1”;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出并寫入工作棧Bank A時,將修改狀態(tài)空間Dirty RAM A的標(biāo)志位清零;VI、多路選擇器3-B3,設(shè)有“1”作為第一輸入端和“0”作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的數(shù)據(jù)輸入端DTYB_DI相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank_B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM B的標(biāo)志位置為“1”;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出并寫入工作棧Bank B時,將修改狀態(tài)空間Dirty RAM B的標(biāo)志位清零;VII、多路選擇器3-A4,設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機3-4的FCMS_AD作為第二輸入端,SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的地址信號輸入端DTYA_AD相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧BankB,工作棧Bank A接受有限狀態(tài)機3-4的控制;VIII、多路選擇器3-B4,設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機3-4的FCMS_AD作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的地址信號輸入端DTYB_AD相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧BankA,工作棧Bank B接受有限狀態(tài)機3-4的控制;IX、多路選擇器3-A5,設(shè)有來自處理核心的數(shù)據(jù)PEFC_DI作為第一輸入端和來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的數(shù)據(jù)輸入端DATA_DI相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將來自處理核心的數(shù)據(jù)PEFC_DI寫入數(shù)據(jù)空間Data RAM A;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,需要寫入工作棧Bank A的數(shù)據(jù)空間Data RAM A中;X、多路選擇器3-B5,設(shè)有來自處理核心的數(shù)據(jù)PEFC_DI作為第一輸入端和來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的數(shù)據(jù)輸入端DATB_DI相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將來自處理核心的數(shù)據(jù)PEFC_DI寫入數(shù)據(jù)空間Data RAM B;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,需要寫入工作棧Bank B的數(shù)據(jù)空間Data RAM B中;XI、多路選擇器3-A6,設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機3-4的FCMS_AD作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的地址信號輸入端DATA_AD相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址PEFC_AD;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制;XII、多路選擇器3-B6,設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機3-4的FCMS_AD作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的地址信號輸入端DATB_AD相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址PEFC_AD;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制;XIII、多路選擇器3-A7,設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端和來自有限狀態(tài)機3-4的DAT_WR作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的讀寫控制輸入端DATA_WR相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,需要由處理核心對數(shù)據(jù)空間Data RAM A的讀寫進(jìn)行控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的讀寫控制;XIV、多路選擇器3-B7,設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端和來自有限狀態(tài)機3-4的DAT_WR作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的讀寫控制輸入端DATB_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank_B,需要由處理核心對數(shù)據(jù)空間Data RAM B的讀寫進(jìn)行控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的讀寫控制;XV、多路選擇器3-M1,設(shè)有地址標(biāo)簽空間Tag RAM A的輸出TagA_DO作為第一輸入端和地址標(biāo)簽空間Tag RAM B的輸出TagB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為Tag_DO,是有限狀態(tài)機3-4的一個輸入信號;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制,并提供地址標(biāo)簽的內(nèi)容;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制,并提供地址標(biāo)簽的內(nèi)容;XVI、多路選擇器3-M2,設(shè)有數(shù)據(jù)空間Data RAM A的輸出DATA_DO作為第一輸入端和數(shù)據(jù)空間Data RAM B的輸出DATB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為FCMS_DO,是由Flow-Cache送往存儲器及I/O總線接口的數(shù)據(jù);當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制,并向存儲器及I/O總線接口提供需要寫回控制信息存儲器的數(shù)據(jù);當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制,并向存儲器及I/O總線接口提供需要寫回控制信息存儲器的數(shù)據(jù);XVII、多路選擇器3-M3,設(shè)有數(shù)據(jù)空間Data RAM A的輸出DATA_DO作為第一輸入端和數(shù)據(jù)空間Data RAM B的輸出DATB_DO作為第二輸入端,SEL_A作為選擇控制端;輸出端為送往處理核心的數(shù)據(jù)FCPE_DO;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,由工作棧Bank A為處理核心提供需要的數(shù)據(jù);當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,由工作棧Bank B為處理核心提供需要的數(shù)據(jù);XVIII、多路選擇器3-M4,設(shè)有修改狀態(tài)空間Dirty RAM A的輸出DTYA_DO作為第一輸入端和修改狀態(tài)空間Dirty RAM B的輸出DTYB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為DIRTY,是有限狀態(tài)機3-4的一個輸入信號;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制,并提供數(shù)據(jù)空間的修改狀態(tài);當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制,并提供數(shù)據(jù)空間的修改狀態(tài)。
本發(fā)明充分利用了流相關(guān)控制信息訪問模式空間局部性好的特點,處理過程中不缺失的設(shè)計增加了網(wǎng)絡(luò)處理時間的確定性,可以比傳統(tǒng)cache更好地滿足網(wǎng)絡(luò)處理器對于實時性的需求。而流水線式的設(shè)計又利用了網(wǎng)絡(luò)處理各部分操作之間的并行性,使得實際可用的工作周期增加到一倍以上,極大地提高了網(wǎng)絡(luò)處理器的靈活性。在合適的系統(tǒng)配置下,只要適當(dāng)調(diào)整塊的大小,F(xiàn)low-Cache還可以在保證合適的靈活性的前提下,滿足最壞情況下(即最小包連續(xù)到達(dá))的線速處理。下表列出了處理單元工作頻率200MHz,存儲器總線位寬為32位,控制信息存儲器所使用的DDR SDRAM的工作周期為7.5納秒、延遲為8個周期的情況下,對于不同速率的鏈路以及不同的最小包長,F(xiàn)low-Cache所支持的塊的大小。注意到為了硬件設(shè)計的方便,塊的大小應(yīng)該是2的冪次,因此實際的塊的大小會比理論上可以支持的大小少一些。表中的訪問比例表示塊的大小與處理單元實際可以進(jìn)行的操作時間中最多可以訪問的字節(jié)數(shù)的比值。由于網(wǎng)絡(luò)處理更多地是進(jìn)行計算和對數(shù)據(jù)包字段以及數(shù)據(jù)包相關(guān)數(shù)據(jù)的訪問,對流相關(guān)控制信息的訪問只占很小一部分。因此,F(xiàn)low-Cache的設(shè)計足以滿足絕大多數(shù)網(wǎng)絡(luò)應(yīng)用的需要。如果一定要增加塊的大小,可以通過選用帶寬更高的存儲器件來實現(xiàn)。
圖1網(wǎng)絡(luò)處理器系統(tǒng)結(jié)構(gòu)。
圖2Flow-Cache的輸入信號、輸出信號和主要構(gòu)成模塊。
圖3Flow-Cache系統(tǒng)結(jié)構(gòu)。
圖4Flow-Cache中有限狀態(tài)機的狀態(tài)轉(zhuǎn)換圖。
具體實施例方式
本發(fā)明為基于網(wǎng)絡(luò)處理器的流相關(guān)控制信息高速緩沖存儲器,稱為Flow-Cache。其應(yīng)用的位置如圖1所示。為了說明方便起見,圖1只表示了單處理單元的網(wǎng)絡(luò)處理器結(jié)構(gòu)。處理單元由執(zhí)行運算的處理核心和提供控制信息的Flow-Cache構(gòu)成。除處理單元外,該網(wǎng)絡(luò)處理器中還有一組協(xié)處理器和若干硬件功能單元,用于完成流分類、校驗和計算以及流量管理等功能。數(shù)據(jù)包在位于片外的數(shù)據(jù)包緩沖存儲器中的存儲與移動由輸入/輸出接口、以及數(shù)據(jù)包緩存控制器完成。處理所需要的數(shù)據(jù)包字段也由數(shù)據(jù)包緩存控制器提取并送入處理單元中。處理單元可以訪問的存儲空間由片內(nèi)的Scratch Pad和片外的控制信息存儲器構(gòu)成。其中,Scratch Pad通常用于關(guān)鍵數(shù)據(jù)的保存,處理單元可能通過互聯(lián)機構(gòu)或者存儲器及I/O總線直接訪問;而片外控制信息存儲器一般由低速大容量的SDRAM等器件構(gòu)成,用于保存路由表等大型數(shù)據(jù)結(jié)構(gòu)。由于控制信息存儲器的訪問延遲與處理單元工作周期差距較大,處理單元不能直接訪問控制信息存儲器,必須通過Flow-Cache來進(jìn)行。
Flow-Cache的輸入信號、輸出信號和主要構(gòu)成模塊如圖2所示,F(xiàn)low-Cache與處理核心、流分類器和存儲器及I/O總線接口進(jìn)行交互。Flow-Cache的基本部分由兩個工作棧Bank A和Bank B以及數(shù)據(jù)移動控制器構(gòu)成,可以在滿足處理核心訪問需求的同時進(jìn)行控制信息存儲器進(jìn)行讀寫。處理核心對數(shù)據(jù)包的操作是連續(xù)進(jìn)行的,由于每個數(shù)據(jù)包所對應(yīng)的流相關(guān)控制信息只位于其中一個工作棧中,另外一個不對處理核心提供數(shù)據(jù)的工作棧在需要的時候為下一個數(shù)據(jù)包讀入相應(yīng)的流相關(guān)控制信息。為了存儲管理的方便,把分配給流相關(guān)控制信息的地址空間劃分為相同大小的塊(block)。每個流都對應(yīng)于一個塊,流相關(guān)控制信息就保存在這個塊中。每個工作棧中的數(shù)據(jù)緩存也組織為塊的形式。由于在處理核心的工作過程中不會發(fā)生缺失,F(xiàn)low-Cache中的地址比較機構(gòu)只用來檢查尚未被處理的包的相應(yīng)信息是否已經(jīng)存在于某個工作棧之中。
流分類器與處理單元是并行工作的,當(dāng)處理單元對某個數(shù)據(jù)包進(jìn)行操作的時候,流分類器就可以為新達(dá)到的包進(jìn)行分類。整個數(shù)據(jù)包的處理流程為當(dāng)新到達(dá)的數(shù)據(jù)包被網(wǎng)絡(luò)處理器接收時,先由流分類器進(jìn)行流分類,然后將所獲得的流相關(guān)控制信息的起始地址送到Flow-Cache的數(shù)據(jù)移動控制器;數(shù)據(jù)移動控制器檢查該流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache的Bank A和Bank B兩個工作棧中的某一個了,如果沒有的話,則Flow-Cache目前未被處理核心使用的那個工作棧中相應(yīng)的塊選為被替換的塊,如果它曾經(jīng)被處理核心修改,則將該塊的內(nèi)容寫回控制信息存儲器;然后將新的流相關(guān)控制信息從控制信息存儲器中讀出,并替換該塊的內(nèi)容;當(dāng)需要的流相關(guān)控制信息被寫入到Flow-Cache后,處理核心可以就切換到該工作棧,對數(shù)據(jù)包進(jìn)行處理。
Flow-Cache的輸入信號包括來自處理核心的讀操作請求信號PEFC_RD、來自處理核心的寫操作請求信號PEFC_WR、來自處理核心的控制信息地址線PEFC_AD、來自處理核心的數(shù)據(jù)PEFC_DI、來自處理核心的狀態(tài)信號PE_SWCH,來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR、來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ,來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI以及來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK;Flow-Cache的輸出信號包括送往處理核心的數(shù)據(jù)FCPE_DO、送往處理核心的確認(rèn)信號FCPE_ACK,送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD、送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR、送往存儲器及I/O總線接口的地址線FCMS_AD和送往存儲器及I/O總線接口的數(shù)據(jù)FCMS_DO。
Flow-Cache的系統(tǒng)結(jié)構(gòu)如圖3所示。假設(shè)網(wǎng)絡(luò)處理器以字節(jié)尋址,每個塊包含N=2s個字節(jié),且地址寬度為t+s位,則控制信息預(yù)取地址只需要該地址的高t位;設(shè)每個工作棧均保存M=2r個塊,則t位的控制信息預(yù)取地址中的低r位就稱為index部分,控制信息預(yù)取地址的高t-r位稱為a_tag部分;所述的工作棧Bank A和Bank B各自含有a、地址標(biāo)簽空間Tag RAM A和Tag RAM B,其中的數(shù)據(jù)稱為地址標(biāo)簽b_tag地址標(biāo)簽空間Tag RAM A的輸入信號包括地址信號輸入端與來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分相連,數(shù)據(jù)輸入端與CL_ADDR的a_tag部分相連,讀寫控制輸入端為來自多路選擇器3-A1的TagA_WR;地址標(biāo)簽空間Tag RAM A的輸出信號為TagA_DO;地址標(biāo)簽空間Tag RAM B的輸入信號包括地址信號輸入端與來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分相連,數(shù)據(jù)輸入端與CL_ADDR的a_tag部分相連,讀寫控制輸入端為來自多路選擇器3-B1的TagB_WR;地址標(biāo)簽空間Tag RAM B的輸出信號為TagB_DO;
b、數(shù)據(jù)空間Data RAM A和Data RAM B數(shù)據(jù)空間Data RAM A的輸入信號包括地址信號輸入端與來自多路選擇器3-A6的DATA AD的低r-s位相連,數(shù)據(jù)輸入端與來自多路選擇器3-A5的DATA_DI相連,讀寫控制輸入端為來自多路選擇器3-A7的DATA_WR;數(shù)據(jù)空間Data RAM A的輸出信號為DATA_DO;數(shù)據(jù)空間Data RAM B的輸入信號包括地址信號輸入端與來自多路選擇器3-B6的DATB AD的低t-s位相連,數(shù)據(jù)輸入端與來自多路選擇器3-B5的DATB_DI相連,讀寫控制輸入端為來自多路選擇器3-B7的DATB_WR;數(shù)據(jù)空間Data RAM B的輸出信號為DATB_DO;c、修改狀態(tài)空間Dirty RAM A和Dirty RAM B,分別為數(shù)據(jù)空間Data RAM A和Data RAMB中的塊設(shè)置若干修改標(biāo)志位,稱為D;這里以每個塊設(shè)置一個標(biāo)志位為例,并且標(biāo)志位為“1”表示已經(jīng)被修改過,標(biāo)志位為“0”表示尚未被修改過修改狀態(tài)空間Dirty RAM A的輸入信號包括地址信號輸入端與來自多路選擇器3-A4的DTYA_AD的index部分相連,數(shù)據(jù)輸入端與來自多路選擇器3-A3的DTYA_DI相連,讀寫控制輸入端為來自多路選擇器3-A2的DTYA_WR;修改狀態(tài)空間Data RAM A的輸出信號為DTYA_DO;修改狀態(tài)空間Dirty RAM B的輸入信號包括地址信號輸入端與來自多路選擇器3-B4的DTYB_AD的index部分相連,數(shù)據(jù)輸入端與來自多路選擇器3-B3的DTYB_DI相連,讀寫控制輸入端為來自多路選擇器3-B2的DTYB_WR;修改狀態(tài)空間Data RAM B的輸出信號為DTYB_DO;所述的數(shù)據(jù)移動控制器,含有a、標(biāo)簽比較器3-1,設(shè)有來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR中的a_tag部分、和地址標(biāo)簽空間Tag RAM A的輸出數(shù)據(jù)線TagA_DO,作為其兩個輸入端;當(dāng)兩個輸入端的數(shù)據(jù)完全一致時,該標(biāo)簽比較器3-1輸出為“真”,表示所需的流相關(guān)控制信息已經(jīng)保存在工作棧BankA中;b、標(biāo)簽比較器3-2,設(shè)有來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR中的a_tag部分、和地址標(biāo)簽空間Tag RAM B的輸出數(shù)據(jù)線TagB_DO,作為其兩個輸入端;當(dāng)兩個輸入端的數(shù)據(jù)完全一致時,該標(biāo)簽比較器3-2輸出為“真”,表示所需的流相關(guān)控制信息已經(jīng)保存在工作棧Bank_B中;c、棧切換控制器3-3,用來控制兩個工作棧的狀態(tài),即是為當(dāng)前正在被處理的數(shù)據(jù)包向處理核心提供流相關(guān)控制信息,還是為下一個將要被處理的數(shù)據(jù)包從網(wǎng)絡(luò)處理器外部的控制信息存儲器中讀取相關(guān)的流相關(guān)控制信息;該棧切換控制器3-3設(shè)有兩個寄存器RC,即3-3-I,和RN,即3-3-II,分別用來保存當(dāng)前正在被處理核心使用的工作棧號和下一個數(shù)據(jù)包的處理所需使用的工作棧號;棧切換控制器3-3的輸入信號包括標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出信號,來自處理核心的狀態(tài)信號PE_SWCH和由有限狀態(tài)機3-4送往棧切換控制器3-3的地址評估信號FSM_EVL;輸出信號包括Bank A選擇信號SEL_A和Bank B選擇信號SEL_B;當(dāng)SEL_A為“真”時,表示工作棧Bank A目前正在被處理核心使用;當(dāng)SEL_B為“真”時,表示工作棧Bank B目前正在被處理核心使用;因此,在任何時刻,SEL_A和SEL_B互為相反;當(dāng)由有限狀態(tài)機3-4送往棧切換控制器3-3的地址評估信號FSM_EVL變?yōu)橛行r,表示下一個數(shù)據(jù)包的處理所需的流相關(guān)控制信息的起始地址已經(jīng)由流分類器送達(dá)Flow-Cache,需要對該流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache中進(jìn)行判斷;此時,如果標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出均為“假”,則表示流相關(guān)控制信息在Flow-Cache中還不存在,因此需要將RN,即3-3-II的內(nèi)容變?yōu)楫?dāng)前未被處理核心使用的那個工作棧的棧號,表示在該工作棧中即將進(jìn)行數(shù)據(jù)的移動,并且當(dāng)處理核心開始處理下一個數(shù)據(jù)包時,會使用該工作棧;如果標(biāo)簽比較器3-1輸出為“真”,表示流相關(guān)控制信息已經(jīng)保存在工作棧Bank A中,需要將RN,即3-3-II的內(nèi)容置為Bank A的工作棧號;如果標(biāo)簽比較器3-2輸出為“真”,表示流相關(guān)控制信息已經(jīng)保存在工作棧Bank B中,則RN,即3-3-II的內(nèi)容需要置為Bank B的工作棧號;標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出均為“真”是一種非法狀態(tài),是不可能出現(xiàn)的;當(dāng)來自處理核心的狀態(tài)信號PE_SWCH變?yōu)橛行Ш?,表示處理核心結(jié)束了對當(dāng)前數(shù)據(jù)包的處理,開始轉(zhuǎn)入對下一個數(shù)據(jù)包的處理;此時,需要將寄存器RN,即3-3-II的內(nèi)容寫入寄存器RC,即3-3-I;如果寄存器RC,即3-3-I中記錄的是Bank A的工作棧號,則Bank A選擇信號SEL_A輸出為“真”,Bank B選擇信號SEL_B輸出為“假”;如果寄存器RC,即3-3-I中記錄的是Bank B的工作棧號,則Bank B選擇信號SEL_B輸出為“真”,Bank A選擇信號SEL_A輸出為“假”;d、或非門3-4-O,兩個輸入端與標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出端相連,輸出為MISS信號;如果標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出均為“假”,則表示流相關(guān)控制信息在Flow-Cache中還不存在,輸出信號MISS變?yōu)椤罢妗?;?biāo)簽比較器3-1和標(biāo)簽比較器3-2中任何一個的輸出為“真”,則表示流相關(guān)控制信息已經(jīng)存在于Flow-Cache中,輸出信號MISS變?yōu)椤凹佟?;?biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出均為“真”是一種非法狀態(tài),是不可能出現(xiàn)的;e、有限狀態(tài)機3-4,負(fù)責(zé)完成下一個數(shù)據(jù)包處理所需的流相關(guān)信息讀取和被替換信息的寫回操作;有限狀態(tài)機3-4的輸入信號包括來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ、來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK、由多路選擇器3-M4輸出的DIRTY信號、由多路選擇器3-M1輸出的Tag_DO信號、來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分、或非門3-4-O輸出的MISS信號;輸出信號包括送往棧切換控制器3-3的地址評估信號FSM EVL、送往存儲器及I/O總線接口的地址線FCMS_AD、送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD、送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR、送往多路選擇器3-A2和多路選擇器3-B2的DTY_WR信號、送往多路選擇器3-A7和多路選擇器3-B7的DAT_WR信號、送往多路選擇器3-A1和多路選擇器3-B1的Tag_WR信號;該狀態(tài)機假設(shè)工作棧內(nèi)所有的RAM,其讀寫控制輸入端變?yōu)椤?”時,為寫操作請求,變?yōu)椤?”時,為讀操作請求;并且在地址信號變?yōu)橛行Ш蟮囊粋€周期,數(shù)據(jù)輸出變?yōu)橛行?;有限狀態(tài)機3-4的狀態(tài)轉(zhuǎn)換圖如圖4所示,其流程如下I、空閑狀態(tài)4-1如果來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ變?yōu)橛行Вf明有新的數(shù)據(jù)包接受了流分類操作,需要對流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache中進(jìn)行判斷,進(jìn)入判定狀態(tài);否則,維持空閑狀態(tài);II、判定狀態(tài)4-2此時地址標(biāo)簽空間Tag RAM A和Tag RAM B中的數(shù)據(jù)均已經(jīng)讀出,標(biāo)簽比較器3-1和標(biāo)簽比較器3-2的輸出結(jié)果變?yōu)橛行В粚⑤敵鲂盘朏SM_EVL置為有效,指示棧切換控制器3-3進(jìn)行工作;如果MISS信號為“假”,返回空閑狀態(tài);如果MISS信號為“真”,并且DIRTY信號為“1”,表示被替換塊的內(nèi)容被處理核心修改過,需要寫回網(wǎng)絡(luò)處理器外的控制信息存儲器;將Tag_DO輸出為FCMS_AD信號的高t-r位,將FCMS_AD信號的低s位置為零,將來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分作為FCMS_AD信號的index部分輸出,進(jìn)入寫回狀態(tài);如果MISS信號為“真”,并且DIRTY信號為“0”,則直接將新的流相關(guān)控制信息讀入Flow-Cache;將來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR作為FCMS_AD信號的高t位輸出,進(jìn)入讀取狀態(tài);III、寫回狀態(tài)4-3將DAT_WR保持為讀請求狀態(tài);
通過送往存儲器及I/O總線接口的寫操作請求信號FCMS WR發(fā)起寫操作請求;當(dāng)來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK返回為有效時,如果工作棧中的被替換塊中還存在尚未寫回的數(shù)據(jù),則將輸出信號FCMS_AD的內(nèi)容設(shè)置為指向下一個需要被寫回的數(shù)據(jù)的地址,通常情況下,數(shù)據(jù)總線的寬度為32位,當(dāng)網(wǎng)絡(luò)處理器以字節(jié)尋址時,將輸出信號FCMS_AD的值加4即可,然后通過送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR再次發(fā)起寫操作請求;重復(fù)該過程直到被替換塊內(nèi)所有的數(shù)據(jù)均已寫回,撤銷寫操作請求,進(jìn)入讀取狀態(tài);IV、讀取狀態(tài)4-4通過送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD發(fā)起讀操作請求;當(dāng)來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK返回為有效時,將DAT_WR置為寫請求;如果新的流相關(guān)控制信息尚未全部從網(wǎng)絡(luò)處理器外的控制信息存儲器中讀出,則將FCMS_AD的內(nèi)容指向下一個需要被讀取的數(shù)據(jù)的地址,通常情況下,數(shù)據(jù)總線的寬度為32位,當(dāng)網(wǎng)絡(luò)處理器以字節(jié)尋址時,將FCMS_AD的內(nèi)容加4即可,然后通過送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD發(fā)起讀操作請求;重復(fù)該過程直到新的流相關(guān)控制信息均已讀出并寫入Flow-Cache,撤銷讀操作請求;將Tag_WR和DTY_WR置為寫請求并維持一個周期,以保證新的地址標(biāo)簽信息和新的修改狀態(tài)信息寫入相應(yīng)的工作棧,進(jìn)入空閑狀態(tài);f、應(yīng)答器3-5,輸入信號來自處理核心的讀操作請求信號PEFC_RD、來自處理核心的寫操作請求信號PEFC_WR,輸出信號為送往處理核心的確認(rèn)信號FCPE_ACK;在PEFC_RD或者PEFC_WR信號變?yōu)橛行У囊粋€周期后,F(xiàn)CPE_ACK信號變?yōu)橛行Р⒕S持一個周期,表示數(shù)據(jù)已經(jīng)從Flow-Cache讀出或者寫入;g、18個多路選擇器,所有的多路選擇器均在選擇控制端為“真”時,選通第一輸入端的數(shù)據(jù)作為輸出;當(dāng)選擇控制端為“假”時,選通第二輸入端的數(shù)據(jù)作為輸出;I、多路選擇器3-A1,設(shè)有來自有限狀態(tài)機3-4的Tag_WR作為第一輸入端和“0”作為第二輸入端,SEL_B作為選擇控制端;輸出端與地址標(biāo)簽空間Tag RAM A的讀寫控制輸入端TagA_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,由于處理核心不使用地址標(biāo)簽空間Tag RAM A,因此,TagA_WR的輸出為“0”;II、多路選擇器3-B1,設(shè)有來自有限狀態(tài)機3-4的Tag_WR作為第一輸入端和“0”作為第二輸入端,SEL_A作為選擇控制端;輸出端與地址標(biāo)簽空間Tag RAM B的讀寫控制輸入端TagB_WR相連當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B;由于處理核心不使用地址標(biāo)簽空間Tag RAM B,因此,TagB_WR的輸出為“0”;III、多路選擇器3-A2,設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端,來自有限狀態(tài)機3-4的DTY_WR作為第二輸入端;SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的讀寫控制輸入端DTYA_WR相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM A的標(biāo)志位置為“1”,即接受PEFC_WR的控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4,即DTY_WR的控制,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,將修改狀態(tài)空間Dirty RAM A的標(biāo)志位清零;IV、多路選擇器3-B2,設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端,來自有限狀態(tài)機3-4的DTY_WR作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的讀寫控制輸入端DTYB_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM B的標(biāo)志位置為“1”,即接受PEFC_WR的控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4,即DTY_WR的控制,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,將修改狀態(tài)空間Dirty RAM B的標(biāo)志位清零;V、多路選擇器3-A3,設(shè)有“1”作為第一輸入端和“0”作為第二輸入端,SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的數(shù)據(jù)輸入端DTYA_DI相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM A的標(biāo)志位置為“1”;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出并寫入工作棧Bank A時,將修改狀態(tài)空間Dirty RAM A的標(biāo)志位清零;VI、多路選擇器3-B3,設(shè)有“1”作為第一輸入端和“0”作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的數(shù)據(jù)輸入端DTYB_DI相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM B的標(biāo)志位置為“1”;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出并寫入工作棧Bank B時,將修改狀態(tài)空間Dirty RAM B的標(biāo)志位清零;VII、多路選擇器3-A4,設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機3-4的FCMS_AD作為第二輸入端,SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的地址信號輸入端DTYA_AD相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧BankB,工作棧Bank A接受有限狀態(tài)機3-4的控制;VIII、多路選擇器3-B4,設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機3-4的FCMS_AD作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的地址信號輸入端DTYB_AD相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧BankA,工作棧Bank B接受有限狀態(tài)機3-4的控制;IX、多路選擇器3-A5,設(shè)有來自處理核心的數(shù)據(jù)PEFC_DI作為第一輸入端和來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的數(shù)據(jù)輸入端DATA_DI相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將來自處理核心的數(shù)據(jù)PEFC_DI寫入數(shù)據(jù)空間Data RAM A;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,需要寫入工作棧Bank A的數(shù)據(jù)空間Data RAM A中;X、多路選擇器3-B5,設(shè)有來自處理核心的數(shù)據(jù)PEFC_DI作為第一輸入端和來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的數(shù)據(jù)輸入端DATB_DI相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將來自處理核心的數(shù)據(jù)PEFC_DI寫入數(shù)據(jù)空間Data RAM B;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,需要寫入工作棧Bank B的數(shù)據(jù)空間Data RAM B中;XI、多路選擇器3-A6,設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機3-4的FCMS_AD作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的地址信號輸入端DATA_AD相連;
當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址PEFC_AD;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制;XII、多路選擇器3-B6,設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機3-4的FCMS_AD作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的地址信號輸入端DATB_AD相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址PEFC_AD;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制;XIII、多路選擇器3-A7,設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端和來自有限狀態(tài)機3-4的DAT_WR作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的讀寫控制輸入端DATA_WR相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,需要由處理核心對數(shù)據(jù)空間Data RAM A的讀寫進(jìn)行控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的讀寫控制;XIV、多路選擇器3-B7,設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端和來自有限狀態(tài)機3-4的DAT_WR作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的讀寫控制輸入端DATB_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,需要由處理核心對數(shù)據(jù)空間Data RAM B的讀寫進(jìn)行控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的讀寫控制;XV、多路選擇器3-M1,設(shè)有地址標(biāo)簽空間Tag RAM A的輸出TagA_DO作為第一輸入端和地址標(biāo)簽空間Tag RAM B的輸出TagB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為Tag_DO,是有限狀態(tài)機3-4的一個輸入信號;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制,并提供地址標(biāo)簽的內(nèi)容;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制,并提供地址標(biāo)簽的內(nèi)容;XVI、多路選擇器3-M2,設(shè)有數(shù)據(jù)空間Data RAM A的輸出DATA_DO作為第一輸入端和數(shù)據(jù)空間Data RAM B的輸出DATB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為FCMS_DO,是由Flow-Cache送往存儲器及I/O總線接口的數(shù)據(jù);當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制,并向存儲器及I/O總線接口提供需要寫回控制信息存儲器的數(shù)據(jù);當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制,并向存儲器及I/O總線接口提供需要寫回控制信息存儲器的數(shù)據(jù);XVII、多路選擇器3-M3,設(shè)有數(shù)據(jù)空間Data RAMA的輸出DATA_DO作為第一輸入端和數(shù)據(jù)空間Data RAM B的輸出DATB_DO作為第二輸入端,SEL_A作為選擇控制端;輸出端為送往處理核心的數(shù)據(jù)FCPE_DO;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,由工作棧Bank A為處理核心提供需要的數(shù)據(jù);當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,由工作棧Bank B為處理核心提供需要的數(shù)據(jù);XVIII、多路選擇器3-M4,設(shè)有修改狀態(tài)空間Dirty RAM A的輸出DTYA_DO作為第一輸入端和修改狀態(tài)空間Dirty RAM B的輸出DTYB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為DIRTY,是有限狀態(tài)機3-4的一個輸入信號;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機3-4的控制,并提供數(shù)據(jù)空間的修改狀態(tài);當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機3-4的控制,并提供數(shù)據(jù)空間的修改狀態(tài)。
權(quán)利要求
1.基于網(wǎng)絡(luò)處理器的流相關(guān)控制信息高速緩沖存儲器,即Flow-Cache,其特征在于,分配給流相關(guān)控制信息的地址空間劃分為相同大小的塊,每個流對應(yīng)于一個塊,用來保存該流的控制信息,屬于該流的所有數(shù)據(jù)包共享該塊中的信息;Flow-Cache設(shè)置了兩個稱為BankA和Bank B的工作棧,每個工作棧中的緩存數(shù)據(jù)也組織為塊的形式;每個數(shù)據(jù)包所對應(yīng)的塊只位于Bank A和Bank B兩個工作棧中的一個,在處理單元在使用一個工作棧中的流相關(guān)控制信息進(jìn)行處理的時候,另外一個工作棧通過流分類器提供的預(yù)取地址為下一個數(shù)據(jù)包讀入相關(guān)的流相關(guān)控制信息;整個處理流程為當(dāng)數(shù)據(jù)包被網(wǎng)絡(luò)處理器接收時,先由流分類器進(jìn)行流分類,然后將所獲得的流相關(guān)控制信息的起始地址送到Flow-Cache的數(shù)據(jù)移動控制器;數(shù)據(jù)移動控制器檢查該流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache的Bank A和Bank B兩個工作棧的某一個中,如果沒有,則Flow-Cache中目前未被處理單元使用的那個工作棧中相應(yīng)的塊被選為被替換的塊,如果被替換的塊曾經(jīng)被處理單元修改,則先將被修改的內(nèi)容寫回控制信息存儲器;然后將所需要的流相關(guān)控制信息從控制信息存儲器中讀出;當(dāng)所需要的流相關(guān)控制信息被寫入到Flow-Cache后,處理單元切換到該工作棧,對數(shù)據(jù)包進(jìn)行處理;Flow-Cache的輸入信號包括來自處理核心的讀操作請求信號PEFC_RD、來自處理核心的寫操作請求信號PEFC_WR、來自處理核心的控制信息地址線PEFC_AD、來自處理核心的數(shù)據(jù)PEFC_DI、來自處理核心的狀態(tài)信號PE_SWCH,來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR、來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ,來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI以及來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK;Flow-Cache的輸出信號包括送往處理核心的數(shù)據(jù)FCPE_DO、送往處理核心的確認(rèn)信號FCPE_ACK,送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD、送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR、送往存儲器及I/O總線接口的地址線FCMS_AD和送往存儲器及I/O總線接口的數(shù)據(jù)FCMS_DO;假設(shè)網(wǎng)絡(luò)處理器以字節(jié)尋址,每個塊包含N=2s個字節(jié),且地址寬度為t+s位,則控制信息預(yù)取地址只需要該地址的高t位;設(shè)每個工作棧均保存M=2r個塊,則t位的控制信息預(yù)取地址中的低r位就稱為index部分,控制信息預(yù)取地址的高t-r位稱為a_tag部分;所述的工作棧Bank A和Bank B各自含有a、地址標(biāo)簽空間Tag RAM A和Tag RAM B,其中的數(shù)據(jù)稱為地址標(biāo)簽b_tag地址標(biāo)簽空間Tag RAM A的輸入信號包括地址信號輸入端與來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分相連,數(shù)據(jù)輸入端與CL_ADDR的a_tag部分相連,讀寫控制輸入端為來自多路選擇器(3-A1)的TagA_WR;地址標(biāo)簽空間Tag RAM A的輸出信號為TagA_DO;地址標(biāo)簽空間Tag RAM B的輸入信號包括地址信號輸入端與來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分相連,數(shù)據(jù)輸入端與CL_ADDR的a_tag部分相連,讀寫控制輸入端為來自多路選擇器(3-B1)的TagB_WR;地址標(biāo)簽空間Tag RAM B的輸出信號為TagB_DO;b、數(shù)據(jù)空間Data RAM A和Data RAM B數(shù)據(jù)空間Data RAM A的輸入信號包括地址信號輸入端與來自多路選擇器(3-A6)的DATA_AD的低r+s位相連,數(shù)據(jù)輸入端與來自多路選擇器(3-A5)的DATA_DI相連,讀寫控制輸入端為來自多路選擇器(3-A7)的DATA_WR;數(shù)據(jù)空間Data RAM A的輸出信號為DATA_DO;數(shù)據(jù)空間Data RAM B的輸入信號包括地址信號輸入端與來自多路選擇器(3-B6)的DATB_AD的低r+s位相連,數(shù)據(jù)輸入端與來自多路選擇器(3-B5)的DATB_DI相連,讀寫控制輸入端為來自多路選擇器(3-B7)的DATB_WR;數(shù)據(jù)空間Data RAM B的輸出信號為DATB_DO;c、修改狀態(tài)空間Dirty RAM A和Dirty RAM B,分別為數(shù)據(jù)空間Data RAM A和DataRAM B中的塊設(shè)置若干修改標(biāo)志位,稱為D;這里以每個塊設(shè)置一個標(biāo)志位為例,并且標(biāo)志位為“1”表示已經(jīng)被修改過,標(biāo)志位為“0”表示尚未被修改過修改狀態(tài)空間Dirty RAM A的輸入信號包括地址信號輸入端與來自多路選擇器(3-A4)的DTYA_AD的index部分相連,數(shù)據(jù)輸入端與來自多路選擇器(3-A3)的DTYA_DI相連,讀寫控制輸入端為來自多路選擇器(3-A2)的DTYA_WR;修改狀態(tài)空間Data RAM A的輸出信號為DTYA_DO;修改狀態(tài)空間Dirty RAM B的輸入信號包括地址信號輸入端與來自多路選擇器(3-B4)的DTYB_AD的index部分相連,數(shù)據(jù)輸入端與來自多路選擇器(3-B3)的DTYB_DI相連,讀寫控制輸入端為來自多路選擇器(3-B2)的DTYB_WR;修改狀態(tài)空間Data RAM B的輸出信號為DTYB_DO;所述的數(shù)據(jù)移動控制器,含有a、標(biāo)簽比較器(3-1),設(shè)有來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR中的a_tag部分、和地址標(biāo)簽空間Tag RAM A的輸出數(shù)據(jù)線TagA_DO,作為其兩個輸入端;當(dāng)兩個輸入端的數(shù)據(jù)完全一致時,該標(biāo)簽比較器(3-1)輸出為“真”,表示所需的流相關(guān)控制信息已經(jīng)保存在工作棧Bank A中;b、標(biāo)簽比較器(3-2),設(shè)有來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR中的a_tag部分、和地址標(biāo)簽空間Tag RAM B的輸出數(shù)據(jù)線TagB_DO,作為其兩個輸入端;當(dāng)兩個輸入端的數(shù)據(jù)完全一致時,該標(biāo)簽比較器(3-2)輸出為“真”,表示所需的流相關(guān)控制信息已經(jīng)保存在工作棧Bank B中;c、棧切換控制器(3-3),用來控制兩個工作棧的狀態(tài),即是為當(dāng)前正在被處理的數(shù)據(jù)包向處理核心提供流相關(guān)控制信息,還是為下一個將要被處理的數(shù)據(jù)包從網(wǎng)絡(luò)處理器外部的控制信息存儲器中讀取相關(guān)的流相關(guān)控制信息;該棧切換控制器(3-3)設(shè)有兩個寄存器RC(3-3-I)和RN(3-3-II),分別用來保存當(dāng)前正在被處理核心使用的工作棧號和下一個數(shù)據(jù)包的處理所需使用的工作棧號;棧切換控制器(3-3)的輸入信號包括標(biāo)簽比較器(3-1)和標(biāo)簽比較器(3-2)的輸出信號,來自處理核心的狀態(tài)信號PE_SWCH和由有限狀態(tài)機(3-4)送往棧切換控制器(3-3)的地址評估信號FSM_EVL;輸出信號包括Bank A選擇信號SEL_A和Bank B選擇信號SEL_B;當(dāng)SEL_A為“真”時,表示工作棧Bank A目前正在被處理核心使用;當(dāng)SEL_B為“真”時,表示工作棧Bank B目前正在被處理核心使用;因此,在任何時刻,SEL_A和SEL_B互為相反;當(dāng)由有限狀態(tài)機(3-4)送往棧切換控制器(3-3)的地址評估信號FSM_EVL變?yōu)橛行r,表示下一個數(shù)據(jù)包的處理所需的流相關(guān)控制信息的起始地址已經(jīng)由流分類器送達(dá)Flow-Cache,需要對該流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache中進(jìn)行判斷;此時,如果標(biāo)簽比較器(3-1)和標(biāo)簽比較器(3-2)的輸出均為“假”,則表示流相關(guān)控制信息在Flow-Cache中還不存在,因此需要將RN(3-3-II)的內(nèi)容變?yōu)楫?dāng)前未被處理核心使用的那個工作棧的棧號,表示在該工作棧中即將進(jìn)行數(shù)據(jù)的移動,并且當(dāng)處理核心開始處理下一個數(shù)據(jù)包時,會使用該工作棧;如果標(biāo)簽比較器(3-1)輸出為“真”,表示流相關(guān)控制信息已經(jīng)保存在工作棧Bank A中,需要將RN(3-3-II)的內(nèi)容置為Bank A的工作棧號;如果標(biāo)簽比較器(3-2)輸出為“真”,表示流相關(guān)控制信息已經(jīng)保存在工作棧Bank B中,則RN(3-3-II)的內(nèi)容需要置為Bank B的工作棧號;標(biāo)簽比較器(3-1)和標(biāo)簽比較器(3-2)的輸出均為“真”是一種非法狀態(tài),是不可能出現(xiàn)的;當(dāng)來自處理核心的狀態(tài)信號PE_SWCH變?yōu)橛行Ш?,表示處理核心結(jié)束了對當(dāng)前數(shù)據(jù)包的處理,開始轉(zhuǎn)入對下一個數(shù)據(jù)包的處理;此時,需要將寄存器RN(3-3-II)的內(nèi)容寫入寄存器RC(3-3-I);如果寄存器RC(3-3-I)中記錄的是Bank A的工作棧號,則Bank A選擇信號SEL_A輸出為“真”,Bank B選擇信號SEL_B輸出為“假”;如果寄存器RC(3-3-I)中記錄的是Bank B的工作棧號,則Bank B選擇信號SEL_B輸出為“真”,Bank A選擇信號SEL_A輸出為“假”;d、或非門(3-4-O),兩個輸入端與標(biāo)簽比較器(3-1)和標(biāo)簽比較器(3-2)的輸出端相連,輸出為MISS信號;如果標(biāo)簽比較器(3-1)和標(biāo)簽比較器(3-2)的輸出均為“假”,則表示流相關(guān)控制信息在Flow-Cache中還不存在,輸出信號MISS變?yōu)椤罢妗保粯?biāo)簽比較器(3-1)和標(biāo)簽比較器(3-2)中任何一個的輸出為“真”,則表示流相關(guān)控制信息已經(jīng)存在于Flow-Cache中,輸出信號MISS變?yōu)椤凹佟保粯?biāo)簽比較器(3-1)和標(biāo)簽比較器(3-2)的輸出均為“真”是一種非法狀態(tài),是不可能出現(xiàn)的;e、有限狀態(tài)機(3-4),負(fù)責(zé)完成下一個數(shù)據(jù)包處理所需的流相關(guān)信息讀取和被替換信息的寫回操作;有限狀態(tài)機(3-4)的輸入信號包括來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ、來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK、由多路選擇器(3-M4)輸出的DIRTY信號、由多路選擇器(3-M1)輸出的Tag_DO信號、來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分、或非門(3-4-O)輸出的MISS信號;輸出信號包括送往棧切換控制器(3-3)的地址評估信號FSM_EVL、送往存儲器及I/O總線接口的地址線FCMS_AD、送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD、送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR、送往多路選擇器(3-A2)和多路選擇器(3-B2)的DTY_WR信號、送往多路選擇器(3-A7)和多路選擇器(3-B7)的DAT_WR信號、送往多路選擇器(3-A1)和多路選擇器(3-B1)的Tag_WR信號;該狀態(tài)機假設(shè)工作棧內(nèi)所有的RAM,其讀寫控制輸入端變?yōu)椤?”時,為寫操作請求,變?yōu)椤?”時,為讀操作請求;并且在地址信號變?yōu)橛行Ш蟮囊粋€周期,數(shù)據(jù)輸出變?yōu)橛行?;有限狀態(tài)機(3-4)的狀態(tài)轉(zhuǎn)換流程如下I、空閑狀態(tài)(4-1)如果來自流分類器的流相關(guān)控制信息預(yù)取請求信號CL_RQ變?yōu)橛行?,說明有新的數(shù)據(jù)包接受了流分類操作,需要對流相關(guān)控制信息是否已經(jīng)保存在Flow-Cache中進(jìn)行判斷,進(jìn)入判定狀態(tài);否則,維持空閑狀態(tài);II、判定狀態(tài)(4-2)此時地址標(biāo)簽空間Tag RAM A和Tag RAM B中的數(shù)據(jù)均已經(jīng)讀出,標(biāo)簽比較器(3-1)和標(biāo)簽比較器(3-2)的輸出結(jié)果變?yōu)橛行?;將輸出信號FSM_EVL置為有效,指示棧切換控制器(3-3)進(jìn)行工作;如果MISS信號為“假”,返回空閑狀態(tài);如果MISS信號為“真”,并且DIRTY信號為“1”,表示被替換塊的內(nèi)容被處理核心修改過,需要寫回網(wǎng)絡(luò)處理器外的控制信息存儲器;將Tag_DO輸出為FCMS_AD信號的高t-r位,將FCMS_AD信號的低s位置為零,將來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR的index部分作為FCMS_AD信號的index部分輸出,進(jìn)入寫回狀態(tài);如果MISS信號為“真”,并且DIRTY信號為“0”,則直接將新的流相關(guān)控制信息讀入Flow-Cache;將來自流分類器的流相關(guān)控制信息預(yù)取地址線CL_ADDR作為FCMS_AD信號的高t位輸出,進(jìn)入讀取狀態(tài);III、寫回狀態(tài)(4-3)將DAT_WR保持為讀請求狀態(tài);通過送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR發(fā)起寫操作請求;當(dāng)來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK返回為有效時,如果工作棧中的被替換塊中還存在尚未寫回的數(shù)據(jù),則將輸出信號FCMS_AD的內(nèi)容設(shè)置為指向下一個需要被寫回的數(shù)據(jù)的地址,通常情況下,數(shù)據(jù)總線的寬度為32位,當(dāng)網(wǎng)絡(luò)處理器以字節(jié)尋址時,將輸出信號FCMS_AD的值加4即可,然后通過送往存儲器及I/O總線接口的寫操作請求信號FCMS_WR再次發(fā)起寫操作請求;重復(fù)該過程直到被替換塊內(nèi)所有的數(shù)據(jù)均已寫回,撤銷寫操作請求,進(jìn)入讀取狀態(tài);IV、讀取狀態(tài)(4-4)通過送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD發(fā)起讀操作請求;當(dāng)來自存儲器及I/O總線接口的確認(rèn)信號MSFC_ACK返回為有效時,將DAT_WR置為寫請求;如果新的流相關(guān)控制信息尚未全部從網(wǎng)絡(luò)處理器外的控制信息存儲器中讀出,則將FCMS_AD的內(nèi)容指向下一個需要被讀取的數(shù)據(jù)的地址,通常情況下,數(shù)據(jù)總線的寬度為32位,當(dāng)網(wǎng)絡(luò)處理器以字節(jié)尋址時,將FCMS_AD的內(nèi)容加4即可,然后通過送往存儲器及I/O總線接口的讀操作請求信號FCMS_RD發(fā)起讀操作請求;重復(fù)該過程直到新的流相關(guān)控制信息均已讀出并寫入Flow-Cache,撤銷讀操作請求;將Tag_WR和DTY_WR置為寫請求并維持一個周期,以保證新的地址標(biāo)簽信息和新的修改狀態(tài)信息寫入相應(yīng)的工作棧,進(jìn)入空閑狀態(tài);f、應(yīng)答器(3-5),輸入信號來自處理核心的讀操作請求信號PEFC_RD、來自處理核心的寫操作請求信號PEFC_WR,輸出信號為送往處理核心的確認(rèn)信號FCPE_ACK;在PEFC_RD或者PEFC_WR信號變?yōu)橛行У囊粋€周期后,F(xiàn)CPE_ACK信號變?yōu)橛行Р⒕S持一個周期,表示數(shù)據(jù)已經(jīng)從Flow-Cache讀出或者寫入;g、18個多路選擇器,所有的多路選擇器均在選擇控制端為“真”時,選通第一輸入端的數(shù)據(jù)作為輸出;當(dāng)選擇控制端為“假”時,選通第二輸入端的數(shù)據(jù)作為輸出;I、多路選擇器(3-A1),設(shè)有來自有限狀態(tài)機(3-4)的Tag_WR作為第一輸入端和“0”作為第二輸入端,SEL_B作為選擇控制端;輸出端與地址標(biāo)簽空間Tag RAMA的讀寫控制輸入端TagA_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機(3-4)的控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,由于處理核心不使用地址標(biāo)簽空間Tag RAM A,因此,TagA_WR的輸出為“0”;II、多路選擇器(3-B1),設(shè)有來自有限狀態(tài)機(3-4)的Tag_WR作為第一輸入端和“0”作為第二輸入端,SEL_A作為選擇控制端;輸出端與地址標(biāo)簽空間Tag RAM B的讀寫控制輸入端TagB_WR相連當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機(3-4)的控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B;由于處理核心不使用地址標(biāo)簽空間Tag RAM B,因此,TagB_WR的輸出為“0”;III、多路選擇器(3-A2),設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端,來自有限狀態(tài)機(3-4)的DTY_WR作為第二輸入端;SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的讀寫控制輸入端DTYA_WR相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM A的標(biāo)志位置為“1”,即接受PEFC_WR的控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機(3-4),即DTY_WR的控制,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,將修改狀態(tài)空間Dirty RAM A的標(biāo)志位清零;IV、多路選擇器(3-B2),設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端,來自有限狀態(tài)機(3-4)的DTY_WR作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的讀寫控制輸入端DTYB_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM B的標(biāo)志位置為“1”,即接受PEFC_WR的控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機(3-4),即DTY_WR的控制,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,將修改狀態(tài)空間Dirty RAM B的標(biāo)志位清零;V、多路選擇器(3-A3),設(shè)有“1”作為第一輸入端和“0”作為第二輸入端,SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的數(shù)據(jù)輸入端DTYA_DI相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM A的標(biāo)志位置為“1”;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出并寫入工作棧Bank A時,將修改狀態(tài)空間Dirty RAM A的標(biāo)志位清零;VI、多路選擇器(3-B3),設(shè)有“1”作為第一輸入端和“0”作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的數(shù)據(jù)輸入端DTYB_DI相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將修改狀態(tài)空間Dirty RAM B的標(biāo)志位置為“1”;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出并寫入工作棧Bank B時,將修改狀態(tài)空間Dirty RAM B的標(biāo)志位清零;VII、多路選擇器(3-A4),設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機(3-4)的FCMS_AD作為第二輸入端,SEL_A作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM A的地址信號輸入端DTYA_AD相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機(3-4)的控制;VIII、多路選擇器(3-B4),設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機(3-4)的FCMS_AD作為第二輸入端,SEL_B作為選擇控制端;輸出端與修改狀態(tài)空間Dirty RAM B的地址信號輸入端DTYB_AD相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機(3-4)的控制;IX、多路選擇器(3-A5),設(shè)有來自處理核心的數(shù)據(jù)PEFC_DI作為第一輸入端和來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的數(shù)據(jù)輸入端DATA_DI相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要將來自處理核心的數(shù)據(jù)PEFC_DI寫入數(shù)據(jù)空間Data RAM A;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,需要寫入工作棧Bank A的數(shù)據(jù)空間Data RAM A中;X、多路選擇器(3-B5),設(shè)有來自處理核心的數(shù)據(jù)PEFC_DI作為第一輸入端和來自存儲器及I/O總線接口的數(shù)據(jù)MSFC_DI作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的數(shù)據(jù)輸入端DATB_DI相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要將來自處理核心的數(shù)據(jù)PEFC_DI寫入數(shù)據(jù)空間Data RAM B;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,當(dāng)有新的流相關(guān)控制信息從控制信息存儲器中讀出時,需要寫入工作棧Bank B的數(shù)據(jù)空間Data RAM B中;XI、多路選擇器(3-A6),設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機(3-4)的FCMS_AD作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的地址信號輸入端DATA_AD相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址PEFC_AD;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機(3-4)的控制;XII、多路選擇器(3-B6),設(shè)有來自處理核心的控制信息地址線PEFC_AD作為第一輸入端和來自有限狀態(tài)機(3-4)的FCMS_AD作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的地址信號輸入端DATB_AD相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,當(dāng)處理核心進(jìn)行寫操作的時候,需要使用來自處理核心的地址PEFC_AD;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機(3-4)的控制;XIII、多路選擇器(3-A7),設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端和來自有限狀態(tài)機(3-4)的DAT_WR作為第二輸入端,SEL_A作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM A的讀寫控制輸入端DATA_WR相連;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,需要由處理核心對數(shù)據(jù)空間Data RAM A的讀寫進(jìn)行控制;當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機(3-4)的讀寫控制;XIV、多路選擇器(3-B7),設(shè)有來自處理核心的寫操作請求信號PEFC_WR作為第一輸入端和來自有限狀態(tài)機(3-4)的DAT_WR作為第二輸入端,SEL_B作為選擇控制端;輸出端與數(shù)據(jù)空間Data RAM B的讀寫控制輸入端DATB_WR相連;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,需要由處理核心對數(shù)據(jù)空間Data RAM B的讀寫進(jìn)行控制;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機(3-4)的讀寫控制;XV、多路選擇器(3-M1),設(shè)有地址標(biāo)簽空間Tag RAM A的輸出TagA_DO作為第一輸入端和地址標(biāo)簽空間Tag RAM B的輸出TagB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為Tag_DO,是有限狀態(tài)機(3-4)的一個輸入信號;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機(3-4)的控制,并提供地址標(biāo)簽的內(nèi)容;當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機(3-4)的控制,并提供地址標(biāo)簽的內(nèi)容;XVI、多路選擇器(3-M2),設(shè)有數(shù)據(jù)空間Data RAM A的輸出DATA_DO作為第一輸入端和數(shù)據(jù)空間Data RAM B的輸出DATB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為FCMS_DO,是由Flow-Cache送往存儲器及I/O總線接口的數(shù)據(jù);當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機(3-4)的控制,并向存儲器及I/O總線接口提供需要寫回控制信息存儲器的數(shù)據(jù);當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機(3-4)的控制,并向存儲器及I/O總線接口提供需要寫回控制信息存儲器的數(shù)據(jù);XVII、多路選擇器(3-M3),設(shè)有數(shù)據(jù)空間Data RAM A的輸出DATA_DO作為第一輸入端和數(shù)據(jù)空間Data RAM B的輸出DATB_DO作為第二輸入端,SEL_A作為選擇控制端;輸出端為送往處理核心的數(shù)據(jù)FCPE_DO;當(dāng)SEL_A為“真”時,表示處理核心正在使用工作棧Bank A,由工作棧Bank A為處理核心提供需要的數(shù)據(jù);當(dāng)SEL_A為“假”時,表示處理核心正在使用工作棧Bank B,由工作棧Bank B為處理核心提供需要的數(shù)據(jù);XVIII、多路選擇器(3-M4),設(shè)有修改狀態(tài)空間Dirty RAM A的輸出DTYA_DO作為第一輸入端和修改狀態(tài)空間Dirty RAM B的輸出DTYB_DO作為第二輸入端,SEL_B作為選擇控制端;輸出端為DIRTY,是有限狀態(tài)機(3-4)的一個輸入信號;當(dāng)SEL_B為“真”時,表示處理核心正在使用工作棧Bank B,工作棧Bank A接受有限狀態(tài)機(3-4)的控制,并提供數(shù)據(jù)空間的修改狀態(tài);當(dāng)SEL_B為“假”時,表示處理核心正在使用工作棧Bank A,工作棧Bank B接受有限狀態(tài)機(3-4)的控制,并提供數(shù)據(jù)空間的修改狀態(tài)。
全文摘要
基于網(wǎng)絡(luò)處理器的流相關(guān)控制信息高速緩沖存儲器屬于計算機技術(shù)領(lǐng)域,其特征在于地址空間被劃分為相同大小的塊,每個流對應(yīng)于一個塊,用來保存該流的控制信息;Flow-Cache設(shè)置了兩個稱為Bank A和Bank B的工作棧,工作棧中的緩存數(shù)據(jù)也組織為塊的形式;在處理單元在使用一個工作棧中的流相關(guān)控制信息進(jìn)行處理的時候,另外一個工作棧通過流分類器提供的預(yù)取地址為下一個數(shù)據(jù)包讀入相關(guān)的流相關(guān)控制信息;如果流相關(guān)控制信息被處理單元修改,當(dāng)發(fā)生替換時,需要將被修改的部分寫回控制信息存儲器。本發(fā)明能使用SDRAM等大容量低成本的存儲器件來完成較為復(fù)雜的網(wǎng)絡(luò)功能,減少對網(wǎng)絡(luò)處理器存儲器帶寬的占用,并兼顧網(wǎng)絡(luò)處理器對于性能確定性的需求。
文檔編號H04L12/56GK1812378SQ20061001142
公開日2006年8月2日 申請日期2006年3月3日 優(yōu)先權(quán)日2006年3月3日
發(fā)明者劉禎, 劉斌 申請人:清華大學(xué)