專利名稱:高速數(shù)據(jù)交換接口的數(shù)據(jù)緩存器及其數(shù)據(jù)緩存控制方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)通信技術(shù)領(lǐng)域,涉及數(shù)據(jù)緩存,特別是一種用于高速交換 接口的數(shù)據(jù)緩存器及其數(shù)據(jù)緩存控制方法,用于網(wǎng)絡(luò)處理器與鏈路層設(shè)備的數(shù)據(jù)交 換。
背景技術(shù):
隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,互聯(lián)網(wǎng)的數(shù)據(jù)流量呈現(xiàn)幾何級(jí)數(shù)的增長(zhǎng),網(wǎng)絡(luò)帶寬 從幾年前的2Gbps已增長(zhǎng)到現(xiàn)在的40Gbps,這對(duì)交換機(jī)和路由器數(shù)據(jù)處理能力的要 求越來越高,另外,為適應(yīng)不同的工作環(huán)境和網(wǎng)絡(luò)服務(wù)質(zhì)量QoS的要求,還要求網(wǎng) 絡(luò)交換設(shè)備具備更加靈活的可編程性和可擴(kuò)展性,因此網(wǎng)絡(luò)處理器由于兼具高靈活 性和高性能己經(jīng)逐漸代替了傳統(tǒng)的通用處理器和專用集成電路而廣泛應(yīng)用于網(wǎng)絡(luò)交 換設(shè)備中。
圖1為典型的網(wǎng)絡(luò)處理器結(jié)構(gòu)圖,圖1中的數(shù)據(jù)交換接口完成網(wǎng)絡(luò)數(shù)據(jù)包的接 收和發(fā)送功能,在網(wǎng)絡(luò)處理器轉(zhuǎn)發(fā)數(shù)據(jù)包的過程中,數(shù)據(jù)包的接收和發(fā)送占據(jù)了大 量的時(shí)間,因此合理的設(shè)計(jì)數(shù)據(jù)交換接口部件可以有效的提高網(wǎng)絡(luò)處理器的性能。 數(shù)據(jù)交換接口在包處理引擎和網(wǎng)絡(luò)處理器外部的OSI低層次設(shè)備之間傳遞數(shù)據(jù)包。 一方面,包處理引擎通常工作在較高的頻率以處理大量的數(shù)據(jù)包,而外部設(shè)備通常 以較低的頻率運(yùn)行;另一方面,網(wǎng)絡(luò)數(shù)據(jù)包具有突發(fā)性的特點(diǎn),所以數(shù)據(jù)交換接口 的一個(gè)重要的功能就是異步時(shí)鐘域之間的數(shù)據(jù)緩沖。
目前用于異步時(shí)鐘域數(shù)據(jù)接口的緩沖方法,主要是基于異步FIFO技術(shù)。異步 FIFO是采用雙端口 RAM,讀寫時(shí)鐘分別位于不同的時(shí)鐘域,按照先入先出的順序 寫入和讀出數(shù)據(jù)。在面向網(wǎng)絡(luò)數(shù)據(jù)包的緩沖時(shí),異步FIFO結(jié)構(gòu)存在以下缺陷.
1. FIFO緩沖器的數(shù)據(jù)存取嚴(yán)格按照先入先出的順序,數(shù)據(jù)必須按照寫入的順 序被讀出,而網(wǎng)絡(luò)處理器通常采用多個(gè)并行處理核心或線程處理多個(gè)端口的數(shù)據(jù)包 轉(zhuǎn)發(fā),這種嚴(yán)格的順序要求限制了并行處理系統(tǒng)面向多端口處理的靈活性;
2. FIFO的存儲(chǔ)狀態(tài)是半透明的,外界只能通過空滿標(biāo)志或者半滿半空等信號(hào) 來獲得FIFO的棊本存儲(chǔ)狀態(tài),且這些標(biāo)志的產(chǎn)生需要很復(fù)雜的邏輯電路,諸如格雷碼轉(zhuǎn)換、地址比較運(yùn)算等。
3.網(wǎng)絡(luò)處理器對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的處理通常以塊傳輸?shù)姆绞竭M(jìn)行,比如執(zhí)行一次接 收需要接收64字節(jié)的網(wǎng)絡(luò)數(shù)據(jù),這種塊傳輸能夠適應(yīng)IP數(shù)據(jù)包的特點(diǎn),而FIFO 的存取單位與RAM的數(shù)據(jù)寬度相同, 一個(gè)數(shù)據(jù)存儲(chǔ)單元只能是32位或64位這種 較小的長(zhǎng)度,不利于支持塊傳輸。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)傳統(tǒng)的基于異步FIFO緩沖器的數(shù)據(jù)緩存在用于網(wǎng)絡(luò) 處理器數(shù)據(jù)交換接口時(shí)存在的不足,提供一種高速數(shù)據(jù)交換接口的數(shù)據(jù)緩存器及其 數(shù)據(jù)緩存控制方法,以使得數(shù)據(jù)在緩存中的寫入和讀取具有較高的靈活性,更加適 用于多線程多處理器并行處理的要求和更好的支持多端口的數(shù)據(jù)交換,且在無需復(fù) 雜的空滿標(biāo)志產(chǎn)生邏輯的條件下實(shí)現(xiàn)存儲(chǔ)狀態(tài)的全透明,同時(shí)適應(yīng)IP數(shù)據(jù)包的結(jié)構(gòu) 特點(diǎn)和滿足塊傳輸?shù)囊蟆?br>
為實(shí)現(xiàn)上述目的,本發(fā)明提供的高速接口數(shù)據(jù)緩存器,包括數(shù)據(jù)存儲(chǔ)單元、
緩存讀寫控制單元、位寬轉(zhuǎn)換單元,控制和狀態(tài)寄存器單元,該緩存讀寫控制單元 與控制和狀態(tài)寄存器單元雙向連接,并向數(shù)據(jù)存儲(chǔ)單元提供控制信號(hào),該數(shù)據(jù)存儲(chǔ)
單元的數(shù)據(jù)寫入和讀出通過位寬轉(zhuǎn)換單元后連接到外部數(shù)據(jù)總線,其中
數(shù)據(jù)存儲(chǔ)單元,采用兩塊位寬為64比特的雙端口靜態(tài)隨機(jī)存儲(chǔ)器SRAM構(gòu) 成,兩塊SRAM存儲(chǔ)器分別作為接收緩存器和發(fā)送緩存器;
位寬轉(zhuǎn)換單元,包括第一位寬轉(zhuǎn)換模塊,位于發(fā)送緩存器的數(shù)據(jù)寫入端口, 用于將數(shù)據(jù)由內(nèi)部總線的32位位寬轉(zhuǎn)換為發(fā)送緩存器的64位位寬;第二位寬轉(zhuǎn)換 模塊,位于發(fā)送緩存器的數(shù)據(jù)讀出端口,用于將數(shù)據(jù)由發(fā)送緩存器的64位位寬轉(zhuǎn)換 為外部數(shù)據(jù)總線位寬;第三位寬轉(zhuǎn)換模塊,位于接收緩存器的數(shù)據(jù)讀出端口,用于 將數(shù)據(jù)由接收緩存器的64位位寬轉(zhuǎn)換為內(nèi)部總線的32位位寬;第四位寬轉(zhuǎn)換模塊, 位于接收緩存器的數(shù)據(jù)寫入端口,用于將數(shù)據(jù)由外部數(shù)據(jù)總線位寬轉(zhuǎn)換為接收緩存 器的64位位寬。.
控制狀態(tài)寄存器單元,包括發(fā)送標(biāo)志狀態(tài)寄存器、接收控制寄存器和接收 狀態(tài)寄存器,該發(fā)送標(biāo)志狀態(tài)寄存器用于存儲(chǔ)發(fā)送緩存器各個(gè)單元的數(shù)據(jù)有效標(biāo)志, 該接收控制寄存器用于接受包處理引擎的寫接收緩存器指令,產(chǎn)生接收數(shù)據(jù)的控制 信息,該接收狀態(tài)寄存器用于保存數(shù)據(jù)接收的狀態(tài)信息。
所述的每塊SRAM存儲(chǔ)器均進(jìn)行單元?jiǎng)澐?,每個(gè)單元具有80字節(jié)的存儲(chǔ)
6空間;每個(gè)單元的存儲(chǔ)空間中有64字節(jié)用來存放常規(guī)的網(wǎng)絡(luò)數(shù)據(jù)包,另外16字節(jié) 用來存放控制信息、狀態(tài)信息和擴(kuò)展數(shù)據(jù)。為實(shí)現(xiàn)上述目的,本發(fā)明提供的高速接口數(shù)據(jù)緩存控制方法,包括如下步驟a. 接收控制寄存器獲得包處理引擎發(fā)出的數(shù)據(jù)接收控制信息,接收緩存寫控 制模塊在該控制信息的控制下從外部數(shù)據(jù)總線接收數(shù)據(jù)并存入接收緩存器,并將 接收信息寫入接收狀態(tài)寄存器;b. 包處理引擎讀取接收狀態(tài)寄存器,根據(jù)讀取的信息發(fā)出讀接收緩存器指 令,接收緩存讀控制模塊得到指令后將數(shù)據(jù)從接收緩存器讀出并發(fā)送給包處理引 擎sc. 包處理引擎對(duì)接收到的數(shù)據(jù)進(jìn)行査找表匹配、包頭改寫的處理,讀取發(fā)送 標(biāo)志狀態(tài)寄存器用以查找空閑的發(fā)送緩存器單元,之后向發(fā)送緩存器寫控制模塊 發(fā)出寫發(fā)送緩存器指令,發(fā)送緩存器寫控制模塊將包處理引擎的發(fā)送控制信息和待發(fā)送數(shù)據(jù)寫入發(fā)送緩存器,并更新發(fā)送標(biāo)志狀態(tài)寄存器;d. 發(fā)送緩存讀控制模塊根據(jù)其自增指針的位置,在指針?biāo)赴l(fā)送緩存器單元 數(shù)據(jù)有效的情況下,按照發(fā)送緩存器單元中發(fā)送控制信息字段的要求將數(shù)據(jù)發(fā)送 到外部數(shù)據(jù)總線,并更新發(fā)送標(biāo)志狀態(tài)寄存器。本發(fā)明具有以下優(yōu)點(diǎn)1) 本發(fā)明由于將SRAM存儲(chǔ)器構(gòu)造成單元的形式,每個(gè)單元的數(shù)據(jù)量與網(wǎng)絡(luò)處理器執(zhí)行一次塊傳輸?shù)臄?shù)據(jù)量相匹配,同時(shí)也與IP數(shù)據(jù)包的64字節(jié)最小長(zhǎng)度相 匹配,另外每個(gè)單元還能夠存儲(chǔ)擴(kuò)展數(shù)據(jù)和控制信息,增加了數(shù)據(jù)傳輸?shù)撵`活性;2) 本發(fā)明由于設(shè)置緩存器中單元的數(shù)量遠(yuǎn)小于SRAM存儲(chǔ)器的地址數(shù)量,因 而能夠?yàn)槊總€(gè)單元設(shè)置一個(gè)標(biāo)志位,進(jìn)一步使得數(shù)據(jù)緩存器的存儲(chǔ)狀態(tài)對(duì)于包處理 引擎完全透明,無需異步FIFO的空滿標(biāo)志產(chǎn)生邏輯就提供更詳細(xì)的緩存器存儲(chǔ)狀 態(tài);3) 本發(fā)明由于采用除發(fā)送緩存器的讀取采用自增指針外,寫發(fā)送緩存器、讀接 收緩存器和寫接收緩存器操作均是通過顯式的給定單元號(hào)來執(zhí)行,因而在并行處理 器處理多端口數(shù)據(jù)的環(huán)境下,大大增加了數(shù)據(jù)交換的靈活性;4) 本發(fā)明由于采用在發(fā)送緩存器單元的IO個(gè)字節(jié)存儲(chǔ)空間中,除8個(gè)字節(jié)的 常規(guī)數(shù)據(jù)和l個(gè)字節(jié)的擴(kuò)展數(shù)據(jù)外,還有l(wèi)個(gè)空閑字節(jié),將其加以有效利用,用來 存儲(chǔ)發(fā)送控制信息,避免在使用控制寄存器在異步時(shí)鐘域傳送信息時(shí)產(chǎn)生的亞穩(wěn)態(tài)問題,且省略了一組控制寄存器,進(jìn)而省略了一段指令改寫寄存器的延遲,不但提 高了電路可靠性,而且提高了數(shù)據(jù)發(fā)送效率。5)本發(fā)明由于采用位寬轉(zhuǎn)換裝置,使得該緩存實(shí)現(xiàn)方案能夠支持多種位寬的總 線數(shù)據(jù)傳輸,為網(wǎng)絡(luò)處理器支持多種外部設(shè)備提供了保障。
圖1為典型的網(wǎng)絡(luò)處理器結(jié)構(gòu)圖;圖2為本發(fā)明的數(shù)據(jù)緩存器框圖;圖3為本發(fā)明的數(shù)據(jù)緩存器結(jié)構(gòu)示意4為本發(fā)明的緩存器單元?jiǎng)澐纸Y(jié)構(gòu)示意圖;圖5為本發(fā)明的數(shù)據(jù)緩存控制過程圖。
具體實(shí)施方式
參照?qǐng)D2和圖3,本發(fā)明的數(shù)據(jù)緩存器主要由數(shù)據(jù)存儲(chǔ)單元、緩存讀寫控制單元、位寬轉(zhuǎn)換單元,控制狀態(tài)寄存器單元組成。其中所述的數(shù)據(jù)存儲(chǔ)單元,由SRAM存儲(chǔ)器構(gòu)成,SRAM讀寫位寬為64位,有效 地址數(shù)量為320,尋址空間為0x000到0xl3F,需要9位的地址總線,實(shí)現(xiàn)20Kb的 有效存儲(chǔ)容量。對(duì)SRAM存儲(chǔ)器進(jìn)行單元?jiǎng)澐郑瑢?20個(gè)有效地址抽象劃分為32 個(gè)單元,每單元可存儲(chǔ)10個(gè)四字,即80字節(jié)的數(shù)據(jù),對(duì)于發(fā)送緩存器和接收緩存 器,單元內(nèi)容略有不同,圖4給出了發(fā)送和接收緩存器中單元的劃分結(jié)構(gòu)。對(duì)于發(fā) 送緩存器,每個(gè)單元的第一個(gè)四字為發(fā)送控制信息字段,該字段的內(nèi)容指示發(fā)送緩 存讀控制模塊如何發(fā)送本單元的數(shù)據(jù),其具體含義第63位表示是否跳過本單元而 準(zhǔn)備發(fā)送下一單元;57-62位用來聲明發(fā)送目標(biāo)設(shè)備號(hào);54-56位用來聲明有效的四 字64位數(shù),即指示發(fā)送緩存讀控制模塊產(chǎn)生幾組讀地址;53位用來聲明是否有擴(kuò) 展數(shù)據(jù)需要發(fā)送;50-52位用來聲明最后一個(gè)有效四字中的有效字節(jié)數(shù);49位為包 結(jié)束標(biāo)志位,如果該位置位則說明這一單元的數(shù)據(jù)位于一個(gè)數(shù)據(jù)包的結(jié)尾部分,48 位為包起始標(biāo)志;0-46位為保留位。發(fā)送控制信息字段之后是8個(gè)四字的常規(guī)數(shù)據(jù) 字段,最后一個(gè)四字作為擴(kuò)展數(shù)據(jù)字段,用于在特殊情況下發(fā)送一個(gè)額外的四字?jǐn)?shù) 據(jù)。對(duì)于接收緩存器,由于無需在單元起始位置保留控制信息字段,所以單元中的 存儲(chǔ)順序是8個(gè)常規(guī)數(shù)據(jù)字段和1個(gè)擴(kuò)展數(shù)據(jù)字段,最后一個(gè)四字的空間用來存放 狀態(tài)信息,用于接收特定的接收源設(shè)備提供的狀態(tài)信息。以包處理引擎的角度看, 接收和發(fā)送緩存器是一個(gè)含有32個(gè)數(shù)據(jù)單元的存儲(chǔ)器,所有的指令操作都是基于單8元的操作,所有的數(shù)據(jù)傳輸都是基于單元的塊傳輸,緩存讀寫控制單元接受這些基 于單元的指令,實(shí)現(xiàn)由單元操作到具體的讀寫操作的過渡。所述的緩存讀寫控制單元由發(fā)送緩存寫控制、發(fā)送緩存讀控制、接收緩存寫控 制和接收緩存讀控制四個(gè)模塊組成。該發(fā)送緩存寫控制模塊,工作在網(wǎng)絡(luò)處理器核 心頻率時(shí)鐘頻率下,接受包處理引擎的寫發(fā)送緩存器指令,寫發(fā)送緩存器指令中包 含了發(fā)送緩存器的目標(biāo)單元號(hào)和有效四字?jǐn)?shù)量,發(fā)送緩存寫控制模塊將目標(biāo)單元號(hào) 譯碼,產(chǎn)生正確的地址,再由計(jì)數(shù)邏輯控制地址產(chǎn)生的數(shù)量,同時(shí)置位發(fā)送緩存器 的寫使能信號(hào),使待發(fā)送數(shù)據(jù)按順序?qū)懭氚l(fā)送緩存器。由于內(nèi)部數(shù)據(jù)總線位寬為32 位,所以位寬轉(zhuǎn)換裝置需要兩個(gè)時(shí)鐘周期將兩組32位的數(shù)據(jù)轉(zhuǎn)換位64位,因而每 個(gè)寫地址的保持時(shí)間為兩個(gè)時(shí)鐘周期。完成單元寫入后,發(fā)送緩存寫控制模塊將已 寫單元號(hào)發(fā)送給發(fā)送標(biāo)志狀態(tài)寄存器使對(duì)應(yīng)單元的標(biāo)志位置位。該發(fā)送緩存讀控制 模塊,工作在網(wǎng)絡(luò)處理器外部數(shù)據(jù)總線時(shí)鐘頻率下,該模塊無需接受指令控制,而 是擁有一個(gè)自增的循環(huán)指針指向發(fā)送緩存器單元。當(dāng)指針指向一個(gè)新的單元時(shí),譯 碼器自動(dòng)將單元號(hào)譯碼,生成該單元發(fā)送控制信息字段的讀地址,發(fā)送控制信息被 讀出并存入一組內(nèi)部寄存器。單元指針同時(shí)也被輸出到發(fā)送標(biāo)志狀態(tài)寄存器,進(jìn)而 可以從發(fā)送標(biāo)志狀態(tài)寄存器讀取當(dāng)前指針單元的數(shù)據(jù)有效狀態(tài),如果狀態(tài)為有效, 則發(fā)送緩存讀控制模塊啟動(dòng)數(shù)據(jù)發(fā)送,關(guān)閉內(nèi)部寄存器的寫使能開關(guān),使得發(fā)送控 制信息被鎖存,控制后續(xù)讀地址的產(chǎn)生,發(fā)送控制信息同時(shí)也控制接口邏輯單元產(chǎn) 生正確的外部設(shè)備選通信號(hào),實(shí)現(xiàn)數(shù)據(jù)發(fā)送。單元數(shù)據(jù)發(fā)送完畢后,向發(fā)送標(biāo)志狀 態(tài)寄存器發(fā)出清零信號(hào),則當(dāng)前指針指向的單元標(biāo)志位被清零,之后指針加一,開 始新一輪的發(fā)送過程。該接收緩存寫控制模塊,工作在網(wǎng)絡(luò)處理器外部數(shù)據(jù)總線時(shí) 鐘頻率下,由接收控制寄存器控制,接收控制寄存器提供了接收緩存器單元號(hào)與接 收四字?jǐn)?shù)量等信息,接收緩存寫控制模塊根據(jù)接收控制寄存器產(chǎn)生接收緩存的寫地 址和寫使能信號(hào)。在單元寫入完畢后,接收緩存寫控制模塊將接收狀態(tài)信息寫入接 收狀態(tài)寄存器,其內(nèi)容將在后面詳述。該接收緩存讀控制模塊,工作在網(wǎng)絡(luò)處理器 核心頻率下,接受包處理引擎的讀接收緩存器指令,讀接收緩存器指令中包含了接 收緩存器的源單元號(hào)和有效四字?jǐn)?shù)量,接收緩存讀控制模塊將單元號(hào)譯碼,產(chǎn)生正 確的地址,再由計(jì)數(shù)邏輯控制地址產(chǎn)生的數(shù)量,使接收數(shù)據(jù)按順序送入內(nèi)部數(shù)據(jù)總 線。由于內(nèi)部數(shù)據(jù)總線位寬為32位,所以位寬轉(zhuǎn)換裝置需要兩個(gè)周期可以將兩組 32位的數(shù)據(jù)轉(zhuǎn)換為64位,因而每個(gè)寫地址的保持時(shí)間為兩個(gè)時(shí)鐘周期。所述的控制與狀態(tài)寄存器由發(fā)送標(biāo)志狀態(tài)寄存器、接收控制寄存器和接收狀態(tài) 寄存器組成。該發(fā)送標(biāo)志狀態(tài)寄存器有效位32位,分別對(duì)應(yīng)了發(fā)送緩存器的32個(gè) 數(shù)據(jù)單元,該寄存器的功能主要有接受發(fā)送緩存寫控制模塊的置位信號(hào),該信號(hào) 由5位地址線和1位選通線組成,置位時(shí)選通線產(chǎn)生一個(gè)周期的正脈沖,使被地址 線選定的寄存器標(biāo)志位置位;接受發(fā)送緩存讀控制模塊的指針信號(hào),輸出指針指向 的寄存器標(biāo)志位的值;接受發(fā)送緩存讀控制模塊的清零信號(hào),使指針?biāo)傅臉?biāo)志位 清零。該接收控制寄存器有效位7位,由包處理引擎直接改寫,其中0-4位為接收 緩存器單元號(hào),第5位聲明是否接收擴(kuò)展數(shù)據(jù),第6位聲明是否接收狀態(tài)信息。該 寄存器在被讀取后清空,等待下一次控制信息的寫入。該接收狀態(tài)寄存器有效位為 18位,由接收緩存寫控制模塊改寫,其中0-4位為接收緩存器單元號(hào),5-7位為有 效四字?jǐn)?shù)量,第8位聲明是否有擴(kuò)展數(shù)據(jù),第9位聲明是否有狀態(tài)信息,10-15位 為接收源設(shè)備號(hào),16位為數(shù)據(jù)包起始標(biāo)志,17位為數(shù)據(jù)包結(jié)束標(biāo)志。該寄存器的作 用是向包處理引擎提交數(shù)據(jù)接收狀態(tài),所以需要被包處理引擎讀取,由于接收緩存 寫控制模塊在每次接收完成后都會(huì)無條件更新該寄存器,所以包處理引擎必須按照 一定的周期定時(shí)的讀取接收狀態(tài)寄存器才能保證沒有信息丟失,寄存器在被讀取之 后清空。
所述的位寬轉(zhuǎn)換單元,由第一位寬轉(zhuǎn)換模塊、第二位寬轉(zhuǎn)換模塊、第三位寬轉(zhuǎn) 換模塊和第四位寬轉(zhuǎn)換模塊組成,該第一位寬轉(zhuǎn)換模塊位于發(fā)送緩存器的數(shù)據(jù)寫入 端口,提供32位數(shù)據(jù)轉(zhuǎn)64位的功能,花費(fèi)兩個(gè)周期將內(nèi)部總線的兩個(gè)32位數(shù)據(jù)串 聯(lián)組成64位數(shù)據(jù),送入發(fā)送緩存器;該第二位寬轉(zhuǎn)換模塊位于發(fā)送緩存器的數(shù)據(jù)讀 出端口,在外部設(shè)備的數(shù)據(jù)總線位寬為32位時(shí),該轉(zhuǎn)換器實(shí)現(xiàn)64位數(shù)據(jù)轉(zhuǎn)32位的 功能,從發(fā)送緩存器讀取的數(shù)據(jù)在轉(zhuǎn)換器中暫存兩個(gè)時(shí)鐘周期,分兩次以32位的位 寬發(fā)送到外部數(shù)據(jù)總線,高位在先,低位在后。在外部設(shè)備的數(shù)據(jù)總線位寬位64 位時(shí),該轉(zhuǎn)換器不執(zhí)行轉(zhuǎn)換功能,僅相當(dāng)于一級(jí)寄存器;該第三位寬轉(zhuǎn)換模塊位于 接收緩存器的數(shù)據(jù)寫入端口,在外部設(shè)備的數(shù)據(jù)總線位寬為32位時(shí),該轉(zhuǎn)換器實(shí)現(xiàn) 32位數(shù)據(jù)轉(zhuǎn)64位的功能,外部數(shù)據(jù)總線的數(shù)據(jù)分兩次組合成64位的數(shù)據(jù)后送入接 收緩存器。在外部設(shè)備的數(shù)據(jù)總線位寬為64位時(shí),該轉(zhuǎn)換器不執(zhí)行轉(zhuǎn)換功能,僅相 當(dāng)于一級(jí)寄存器;該第四位寬轉(zhuǎn)換模塊位于接收緩存器的數(shù)據(jù)讀出端口,提供64 位數(shù)據(jù)轉(zhuǎn)32位的功能,將1組64位數(shù)據(jù)分兩個(gè)時(shí)鐘周期按照高位在前低位在后的 順序送入內(nèi)部數(shù)據(jù)總線。
10參照?qǐng)D5,本發(fā)明的數(shù)據(jù)緩存控制包括如下過程
過程1,當(dāng)接收緩存寫控制模塊處于空閑時(shí),數(shù)據(jù)緩存器處于接收就緒狀態(tài), 隨時(shí)執(zhí)行新的數(shù)據(jù)接收;
過程2,包處理引擎查看內(nèi)部寄存器中保存的接收緩存器存儲(chǔ)狀態(tài),選擇空閑 的接收緩存器單元,向接收控制寄存器中寫入接收控制信息。接收緩存寫控制模塊 檢測(cè)接收控制寄存器中是否有新的接收控制信息,若是接收控制寄存器的所有位均 為零,則沒有控制信息,若不為零,就表示接收控制寄存器收到了新的寫接收緩存 器指令,接收緩存寫控制模塊讀取控制信息,準(zhǔn)備執(zhí)行數(shù)據(jù)接收;
過程3,接收緩存寫控制模塊按照接收控制寄存器中的控制信息開始數(shù)據(jù)接收, 首先在將控制信息讀回后清空接收控制寄存器,之后根據(jù)接收控制信息中的單元號(hào) 執(zhí)行譯碼,產(chǎn)生對(duì)應(yīng)單元的數(shù)據(jù)字段地址,并置位接收緩存器的寫使能信號(hào),產(chǎn)生 的地址個(gè)數(shù)根據(jù)接收控制寄存器中的信息確定。在完成這一單元的數(shù)據(jù)寫入后,接 收緩存寫控制模塊將本次接收的情況寫入接收狀態(tài)寄存器,至此,接收緩存寫控制 模塊完成一次完整操作,進(jìn)入接收就緒狀態(tài)等待下一次接收;
過程4,包處理引擎每隔一定的周期就檢查接收狀態(tài)寄存器,如果發(fā)現(xiàn)接收狀 態(tài)寄存器非零,就表示有新的數(shù)據(jù)已被放在接收緩存器中等待讀取,則包處理引擎
將接收狀態(tài)寄存器中的狀態(tài)信息取回,之后清空該寄存器;
.過程5,包處理引擎根據(jù)讀回的接收狀態(tài)信息發(fā)出讀接收緩存器指令,指令加 載到接收緩存讀控制模塊,接收緩存讀控制模塊解析指令內(nèi)容,產(chǎn)生連續(xù)的接收緩 存器讀地址,將數(shù)據(jù)讀入內(nèi)部數(shù)據(jù)總線,發(fā)送給包處理引擎。包處理引擎收到數(shù)據(jù) 后更新其保存接收緩存器存儲(chǔ)狀態(tài)的內(nèi)部寄存器;
過程6,數(shù)據(jù)包在包處理引擎中經(jīng)過査找表匹配和包頭改寫處理,成為能夠進(jìn) 行發(fā)送的數(shù)據(jù)包;
過程7,已準(zhǔn)備好待發(fā)送數(shù)據(jù)后,包處理引擎查看發(fā)送標(biāo)志狀態(tài)寄存器以獲取 發(fā)送緩存器的數(shù)據(jù)存儲(chǔ)情況,選擇空閑的發(fā)送緩存器單元,向發(fā)送緩存寫控制模塊 發(fā)出寫發(fā)送緩存器指令;
過程8,發(fā)送緩存寫控制模塊接收寫發(fā)送緩存器指令,將指令中的發(fā)送緩存器 單元號(hào)譯碼,產(chǎn)生正確數(shù)量的寫地址,同時(shí)置位發(fā)送緩存器的寫使能信號(hào),將待發(fā) 送數(shù)據(jù)從內(nèi)部總線傳送到發(fā)送緩存器,在完成單元數(shù)據(jù)寫入后將發(fā)送標(biāo)志狀態(tài)寄存 器中的對(duì)應(yīng)標(biāo)志位置位;過程9,發(fā)送緩存讀控制模塊根據(jù)單元指針譯碼出所在單元的發(fā)送控制信息字 段地址,讀取發(fā)送控制信息;
過程10,發(fā)送緩存讀控制模塊檢查發(fā)送標(biāo)志狀態(tài)寄存器中指針?biāo)肝坏臄?shù)據(jù)有 效標(biāo)志,如果標(biāo)志位有效,則將發(fā)送控制信息鎖存到內(nèi)部寄存器,關(guān)閉內(nèi)部寄存器 寫使能,準(zhǔn)備數(shù)據(jù)發(fā)送,如果標(biāo)志位無效,則等待該標(biāo)志位變?yōu)橛行В?br>
過程11,發(fā)送緩存讀控制模塊根據(jù)讀到內(nèi)部寄存器中的發(fā)送控制信息產(chǎn)生連續(xù) 的發(fā)送緩存器讀地址,使數(shù)據(jù)被發(fā)送到外部數(shù)據(jù)總線;
過程12, 一個(gè)單元的數(shù)據(jù)發(fā)送完畢后,發(fā)送緩存讀控制模塊將發(fā)送標(biāo)志狀態(tài)寄 存器中指針?biāo)笜?biāo)志位清零,之后將指針加一,指向下一個(gè)發(fā)送緩存器單元,重復(fù) 以上過程。
1權(quán)利要求
1.一種高速接口數(shù)據(jù)緩存器,包括數(shù)據(jù)存儲(chǔ)單元、緩存讀寫控制單元、位寬轉(zhuǎn)換單元,控制和狀態(tài)寄存器單元,該緩存讀寫控制單元與控制和狀態(tài)寄存器單元雙向連接,并向數(shù)據(jù)存儲(chǔ)單元提供控制信號(hào),該數(shù)據(jù)存儲(chǔ)單元的數(shù)據(jù)寫入和讀出通過位寬轉(zhuǎn)換單元后連接到外部數(shù)據(jù)總線,其特征在于數(shù)據(jù)存儲(chǔ)單元,采用兩塊位寬為64比特的雙端口靜態(tài)隨機(jī)存儲(chǔ)器SRAM構(gòu)成,兩塊SRAM存儲(chǔ)器分別作為接收緩存器和發(fā)送緩存器;緩存讀寫控制單元,包含發(fā)送緩存寫控制模塊、發(fā)送緩存讀控制模塊、接收緩存寫控制模塊和接收緩存讀控制模塊,該發(fā)送緩存讀控制模塊中設(shè)有一個(gè)遞增讀指針指向發(fā)送緩存單元;位寬轉(zhuǎn)換單元,包括第一位寬轉(zhuǎn)換模塊,它位于發(fā)送緩存器的數(shù)據(jù)寫入端口,用于將數(shù)據(jù)由內(nèi)部總線的32位位寬轉(zhuǎn)換為發(fā)送緩存器的64位位寬;第二位寬轉(zhuǎn)換模塊,它位于發(fā)送緩存器的數(shù)據(jù)讀出端口,用于將數(shù)據(jù)由發(fā)送緩存器的64位位寬轉(zhuǎn)換為外部數(shù)據(jù)總線位寬;第三位寬轉(zhuǎn)換模塊,它位于接收緩存器的數(shù)據(jù)讀出端口,用于將數(shù)據(jù)由接收緩存器的64位位寬轉(zhuǎn)換為內(nèi)部總線的32位位寬;第四位寬轉(zhuǎn)換模塊,它位于接收緩存器的數(shù)據(jù)寫入端口,用于將數(shù)據(jù)由外部數(shù)據(jù)總線位寬轉(zhuǎn)換為接收緩存器的64位位寬;控制狀態(tài)寄存器單元,包括發(fā)送標(biāo)志狀態(tài)寄存器、接收控制寄存器和接收狀態(tài)寄存器,該發(fā)送標(biāo)志狀態(tài)寄存器用于存儲(chǔ)發(fā)送緩存器各個(gè)單元的數(shù)據(jù)有效標(biāo)志,該接收控制寄存器用于接受包處理引擎的寫接收緩存器指令,產(chǎn)生接收數(shù)據(jù)的控制信息,該接收狀態(tài)寄存器用于保存數(shù)據(jù)接收的狀態(tài)信息。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)緩存器,其特征在于每塊SRAM存儲(chǔ)器均 進(jìn)行單元?jiǎng)澐?,每個(gè)單元具有80字節(jié)的存儲(chǔ)空間。
3. 根據(jù)權(quán)利要求2所述的數(shù)據(jù)存儲(chǔ)單元,其特征在于每個(gè)單元的存儲(chǔ)空間 中有64字節(jié)用來存放常規(guī)的網(wǎng)絡(luò)數(shù)據(jù)包,另外16字節(jié)用來存放控制信息、狀 態(tài)信息和擴(kuò)展數(shù)據(jù)。
4. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)緩存器,其特征在于第二位寬轉(zhuǎn)換模塊和第 四位寬轉(zhuǎn)換模塊根據(jù)外部數(shù)據(jù)總線位寬設(shè)置不同的轉(zhuǎn)換位寬,用以支持32位 和64位的外部數(shù)據(jù)總線。
5. —種高速接口數(shù)據(jù)緩存控制方法,包含如下過程a. 接收控制寄存器獲得包處理引擎發(fā)出的數(shù)據(jù)接收控制信息,接收緩存寫 控制模塊在該控制信息的控制下從外部數(shù)據(jù)總線接收數(shù)據(jù)并存入接收緩存器, 并將接收信息寫入接收狀態(tài)寄存器;b. 包處理引擎讀取接收狀態(tài)寄存器,根據(jù)讀取的信息發(fā)出讀接收緩存器指 令,接收緩存讀控制模塊得到指令后將數(shù)據(jù)從接收緩存器讀出并發(fā)送給包處理 引擎;c. 包處理引擎對(duì)接收到的數(shù)據(jù)進(jìn)行査找表匹配、包頭改寫的處理,讀取發(fā) 送標(biāo)志狀態(tài)寄存器用以査找空閑的發(fā)送緩存器單元,之后向發(fā)送緩存器寫控制 模塊發(fā)出寫發(fā)送緩存器指令,發(fā)送緩存器寫控制模塊將包處理引擎的發(fā)送控制 信息和待發(fā)送數(shù)據(jù)寫入發(fā)送緩存器,并更新發(fā)送標(biāo)志狀態(tài)寄存器;d. 發(fā)送緩存器讀控制模塊根據(jù)其自增指針的位置,在指針?biāo)赴l(fā)送緩存器 單元數(shù)據(jù)有效的情況下,按照發(fā)送緩存器單元中發(fā)送控制信息字段的要求將數(shù) 據(jù)發(fā)送到外部數(shù)據(jù)總線,并更新發(fā)送標(biāo)志狀態(tài)寄存器。
6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)緩存控制方法,其特征在于包處理引擎所發(fā) 出的緩存器讀寫指令均是面向緩存器單元的塊傳輸操作,緩存讀寫控制單元執(zhí) 行塊傳輸指令時(shí),對(duì)數(shù)據(jù)存儲(chǔ)單元的控制是基于SRAM存儲(chǔ)器位寬的操作, 且包處理引擎定時(shí)的讀取接收狀態(tài)寄存器,以避免數(shù)據(jù)接收信息的丟失。
7. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)緩存控制方法,其特征在于接收緩存器的存 儲(chǔ)狀態(tài)由包處理引擎的內(nèi)部寄存器保持,包處理引擎在每次發(fā)出寫接收緩存器 和讀接收緩存器指令后更新該存儲(chǔ)狀態(tài)。
8. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)緩存控制方法,其特征在于發(fā)送緩存器的存 儲(chǔ)狀態(tài)由發(fā)送標(biāo)志狀態(tài)寄存器保持,發(fā)送緩存寫控制模塊在完成一個(gè)數(shù)據(jù)單元 的寫入后將發(fā)送標(biāo)志狀態(tài)寄存器中的對(duì)應(yīng)標(biāo)志位置位,發(fā)送緩存讀控制在完成 一個(gè)數(shù)據(jù)單元的讀出后將發(fā)送標(biāo)志狀態(tài)寄存器中的對(duì)應(yīng)標(biāo)志位清零。
9. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)緩存控制方法,其特征在于包處理引擎對(duì)于 發(fā)送緩存讀控制模塊的控制,是把控制信息寫入發(fā)送緩存每個(gè)單元的控制信息 字段,通過該控制信息字段控制發(fā)送緩存讀控制模塊讀取本單元的數(shù)據(jù),節(jié)省 一組控制寄存器的使用。
10. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)緩存控制方法,其特征在于發(fā)送緩存器的讀地址根據(jù)讀指針產(chǎn)生,在準(zhǔn)備發(fā)送時(shí),讀地址指向讀指針?biāo)竼卧目刂菩畔⒆侄?,發(fā)送緩存讀控制模塊獲取發(fā)送控制信息,同時(shí)査看發(fā)送標(biāo)志狀態(tài)寄存器對(duì)應(yīng)單元的數(shù)據(jù)有效標(biāo)志,如果數(shù)據(jù)有效,則執(zhí)行該單元的數(shù)據(jù)發(fā)送,發(fā)送完畢后將對(duì)應(yīng)的有效標(biāo)志清空并將讀指針加一;如果不存在有效數(shù)據(jù),發(fā)送緩存讀控制模塊將處于等待狀態(tài)直到有效標(biāo)志的出現(xiàn)。
全文摘要
本發(fā)明公開了一種高速接口數(shù)據(jù)緩存器及其數(shù)據(jù)緩存控制方法,該數(shù)據(jù)緩存器包括用于在異步時(shí)鐘域間緩沖數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)單元、用于控制數(shù)據(jù)存儲(chǔ)單元的讀寫操作的緩存讀寫控制單元、用于與緩存讀寫控制單元交換控制和狀態(tài)信息的控制狀態(tài)寄存器和用于在數(shù)據(jù)存儲(chǔ)單元位寬和總線位寬不相同時(shí)進(jìn)行位寬轉(zhuǎn)換的位寬轉(zhuǎn)換單元。該數(shù)據(jù)緩存控制過程是包處理引擎采用面向單元的方式向緩存讀寫控制單元發(fā)送讀寫指令;采用發(fā)送標(biāo)志狀態(tài)寄存器保存緩存器存儲(chǔ)狀態(tài);用緩存器數(shù)據(jù)本身來控制數(shù)據(jù)發(fā)送;使用自增指針來實(shí)現(xiàn)有序的數(shù)據(jù)發(fā)送。本發(fā)明具有控制靈活性強(qiáng)和數(shù)據(jù)傳輸效率高的優(yōu)點(diǎn),用于網(wǎng)絡(luò)處理器與數(shù)據(jù)鏈路層設(shè)備的多端口高速數(shù)據(jù)交換。
文檔編號(hào)G11C11/41GK101667451SQ200910023890
公開日2010年3月10日 申請(qǐng)日期2009年9月11日 優(yōu)先權(quán)日2009年9月11日
發(fā)明者宇 劉, 史江義, 康 李, 躍 郝, 馬佩軍 申請(qǐng)人:西安電子科技大學(xué)