專利名稱:數(shù)據(jù)報(bào)文存取控制裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)控制技術(shù),特別涉及適用于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的一種數(shù)據(jù)報(bào) 文存取控制裝置、以及適用于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的 一種數(shù)據(jù)報(bào)文存取控制方法。
背景技術(shù):
現(xiàn)今的網(wǎng)絡(luò)設(shè)備大多都是基于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的,即數(shù)據(jù)報(bào)文進(jìn)入網(wǎng)絡(luò)設(shè) 備后首先存儲(chǔ),然后由網(wǎng)絡(luò)設(shè)備進(jìn)行例如"下一跳查找"等操作后,再讀取 存儲(chǔ)的數(shù)據(jù)報(bào)文并轉(zhuǎn)發(fā)。
一般來(lái)說(shuō), 一個(gè)需要轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)文在網(wǎng)絡(luò)設(shè)備中可能被存取多次,那 么網(wǎng)絡(luò)設(shè)備存取數(shù)據(jù)報(bào)文的效率就會(huì)在很大程度上影響數(shù)據(jù)報(bào)文傳輸?shù)男?率。例如,數(shù)據(jù)報(bào)文首先存儲(chǔ)在入方向線卡板上等待路由轉(zhuǎn)發(fā)查找,然后讀 出該數(shù)據(jù)報(bào)文并通過(guò)背板交換網(wǎng)發(fā)送到出方向線卡板上,這樣,該數(shù)據(jù)報(bào)文
再存儲(chǔ)在出方向線卡板上等待QoS調(diào)度,滿足QoS要求的數(shù)據(jù)報(bào)文被讀出 并發(fā)送出去。因此,為了提高數(shù)據(jù)報(bào)文的傳輸效率,就需要網(wǎng)絡(luò)設(shè)備對(duì)數(shù)據(jù) 報(bào)文的存取滿足如下要求
1) 、網(wǎng)絡(luò)設(shè)備內(nèi)部的數(shù)據(jù)報(bào)文存儲(chǔ)容量應(yīng)大于等于RTTxRbit, RTT (round trip time )為線卡板上的線路環(huán)回時(shí)間、R為線卡板上的線路速率,
假設(shè)RTT約為200ms,對(duì)于1個(gè)10Gbit接口的網(wǎng)絡(luò)設(shè)備來(lái)說(shuō),需要具有 10Gbit/sx0.2s共2Gbit的存+者容量;
2) 、網(wǎng)絡(luò)設(shè)備中需要具備用于存取數(shù)據(jù)報(bào)文的高帶寬,假設(shè)1個(gè)10Gbit 接口的網(wǎng)絡(luò)設(shè)備對(duì)每個(gè)數(shù)據(jù)報(bào)文需要進(jìn)行兩次存取,則該網(wǎng)絡(luò)設(shè)備需要 20Gbit帶寬的存取能力。
實(shí)際應(yīng)用中,網(wǎng)絡(luò)設(shè)備中的數(shù)據(jù)報(bào)文處理芯片通常為專用集成電路(Application Specific Integrated Circuit, ASIC )或(Field Programmable Gate Arrey, FPGA )芯片,其存儲(chǔ)容量不足以滿足數(shù)據(jù)報(bào)文所需的存儲(chǔ)容量,因 而為了滿足上述要求,參見圖1,現(xiàn)有基于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的網(wǎng)絡(luò)設(shè)備中,通 常將帶寬較高、存儲(chǔ)容量較大的隨機(jī)存儲(chǔ)器(RAM)外接于每塊線卡板的 數(shù)據(jù)報(bào)文處理芯片。參見圖2,數(shù)據(jù)報(bào)文處理芯片內(nèi)部設(shè)置有控制邏輯,該 控制邏輯可利用先進(jìn)先出存儲(chǔ)器(FIFO)的隊(duì)列管理機(jī)制,將數(shù)據(jù)報(bào)文處理 芯片接收到的數(shù)據(jù)報(bào)文依次存入至RAM中、并將RAM中的數(shù)據(jù)報(bào)文順序 讀取后供數(shù)據(jù)報(bào)文處理芯片發(fā)出。
在眾多類型的RAM中,第2代雙倍數(shù)據(jù)速率(Double Data Rate 2, DDR2 )同步動(dòng)態(tài)隨才幾接入存卡者器(Synchronous Dynamic Random Access Memory, SDRAM)和第3代雙倍數(shù)據(jù)速率(Double Data Rate 3, DDR3 ) SDRAM由于容量更大、速度更高、價(jià)格更便宜,因而常被選用。
然而,即^f更選用容量更大、速度更高的DDR2 SDRAM或DDR3 SDRAM 來(lái)存放數(shù)據(jù)報(bào)文,但由于DDR2 SDRAM和DDR3 SDRAM本身的某些特性 會(huì)限制^:據(jù)才艮文的連續(xù)讀寫才喿作。例如訪問(wèn)DDR2 SDRAM同一存儲(chǔ)體
(BANK)的不同行(ROW)時(shí),在連續(xù)兩行激活(ACT)命令之間的延時(shí), 從而使DDR2 SDRAM的總線空閑;訪問(wèn)DDR2 SDRAM任意BANK的任意 行時(shí),對(duì)該行的讀操作和預(yù)充電(precharge)操作等,也會(huì)使DDR2 SDRAM 的總線空閑。
而現(xiàn)有存取數(shù)據(jù)報(bào)文的控制邏輯并未考慮到如何回避上述限制對(duì)數(shù)據(jù) 報(bào)文存取效率的影響,而是采用對(duì)DDR2 SDRAM和DDR3 SDRAM的隨機(jī) 讀寫操作,因而無(wú)法滿足存取數(shù)據(jù)報(bào)文高帶寬的要求。
參見圖3,以突發(fā)(burst)模式下讀數(shù)據(jù)報(bào)文為例,控制邏輯從外接 DDR2 SDRAM中同一 BANK的不同行內(nèi)讀取連續(xù)的數(shù)據(jù)報(bào)文
在T0時(shí)鐘周期,向外接DDR2 SDRAM發(fā)送ACT命令激活、用以激活 外接DDR2 SDRAM中該BANK內(nèi)的對(duì)應(yīng)行;
在Tl時(shí)鐘周期,向外接DDR2 SDRAM發(fā)送RD命令,外接DDR2
8SDRAM開始對(duì)該BANK內(nèi)對(duì)應(yīng)行顆粒進(jìn)行讀才喿作;
在T2 T3時(shí)鐘周期,外接DDR2 SDRAM繼續(xù)對(duì)該BANK內(nèi)對(duì)應(yīng)行顆 粒的讀操作;
在T4時(shí)鐘周期,等待外接DDR2 SDRAM進(jìn)行precharge操作、用以關(guān) 閉該-f??;
在T5 T6時(shí)鐘周期內(nèi),外接DDR2 SDRAM通過(guò)總線輸出讀取的數(shù)據(jù)報(bào)
文;
在T7時(shí)鐘周期內(nèi),等待連續(xù)兩行ACT命令之間的延時(shí);
在T8時(shí)鐘周期內(nèi)才能夠再次向外接DDR2 SDRAM發(fā)送ACT命令激 活、用以激活外接DDR2 SDRAM中該BANK內(nèi)下 一行。
在上述過(guò)程中,T0 T7共8個(gè)時(shí)鐘周期內(nèi),DDR2 SDRAM的總線只有 T5 T6這2個(gè)時(shí)鐘周期被占用,即對(duì)于連續(xù)讀#:作的總線利用率只有25% 、 連續(xù)寫操作的總線利用率同理。而且,讀寫操作間的切換,還會(huì)隨不同DDR2 SDRAM的特性導(dǎo)致總線空閑不同數(shù)量的時(shí)鐘周期,即讀寫操作交替進(jìn)行時(shí) 的總線利用率更低。此外,TO時(shí)鐘周期激活對(duì)應(yīng)行后,由于預(yù)先設(shè)置的DDR2 SDRAM參數(shù)tRCD而延時(shí)0個(gè)時(shí)鐘周期即可在Tl時(shí)鐘周期內(nèi)對(duì)該行顆粒進(jìn) 行讀操作,并由于參數(shù)AL和CL而延時(shí)4個(gè)時(shí)鐘周期通過(guò)DDR2 SDRAM 的總線讀出。實(shí)際應(yīng)用中,TO時(shí)鐘周期激活對(duì)應(yīng)4亍后,也有可能由于DDR2 SDRAM總線速率高而通過(guò)設(shè)置參數(shù)tRCD來(lái)延時(shí)至少1個(gè)時(shí)鐘周期再對(duì)該 行顆粒進(jìn)行讀操作,或通過(guò)設(shè)置參數(shù)AL、 CL來(lái)進(jìn)一步延長(zhǎng)總線讀出數(shù)據(jù)的 延時(shí),那么此時(shí)的總線利用率就會(huì)進(jìn)一步降低,寫操作同理。
可見,現(xiàn)有基于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的網(wǎng)絡(luò)設(shè)備雖然能夠利用RAM來(lái)滿足數(shù) 據(jù)報(bào)文存儲(chǔ)容量大的要求,但其控制邏輯無(wú)法滿足存取數(shù)據(jù)報(bào)文高帶寬的要 求,從而影響存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制下的數(shù)據(jù)報(bào)文存取效率。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了 一種適用于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的數(shù)據(jù)報(bào)文存取控制裝置、以及一種適用于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的數(shù)據(jù)報(bào)文存取控制方法,能夠提高存 儲(chǔ)轉(zhuǎn)發(fā)機(jī)制下的報(bào)文傳輸效率。
本發(fā)明提供的一種適用于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的數(shù)據(jù)報(bào)文存取控制裝置,包
括
入方向管理模塊,內(nèi)部設(shè)有若干入方向隊(duì)列; 出方向管理才莫塊,內(nèi)部設(shè)有若干出方向隊(duì)列;
存儲(chǔ)器控制模塊,可將任一入方向隊(duì)列的數(shù)據(jù)報(bào)文存放至外部隨機(jī)存儲(chǔ) 器內(nèi)的對(duì)應(yīng)外部隊(duì)列中,可從外部隨機(jī)存儲(chǔ)器內(nèi)的對(duì)應(yīng)外部隊(duì)列中讀取應(yīng)存 放至任一 出方向隊(duì)列的數(shù)據(jù)報(bào)文;
透?jìng)鱂IFO,可將任一入方向隊(duì)列中的數(shù)據(jù)才艮文緩存后向?qū)?yīng)出方向隊(duì) 列傳遞;
入方向控制模塊,在有入方向隊(duì)列非空時(shí),如果對(duì)應(yīng)外部隊(duì)列中有數(shù)據(jù) 報(bào)文、且非滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊;如 果對(duì)應(yīng)外部隊(duì)列為空、且透?jìng)鱂IFO和對(duì)應(yīng)出方向隊(duì)列均非滿,則將該入方 向隊(duì)列中的數(shù)據(jù)才艮文寫入至透?jìng)鱂IFO;如果透?jìng)鱂IFO或?qū)?yīng)出方向隊(duì)列將 滿或已滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊;否則, 暫不針對(duì)該入方向隊(duì)列進(jìn)行讀寫操作;
出方向控制才莫塊,在透?jìng)鱂IFO非空時(shí),/人透?jìng)鱂IFO讀取數(shù)據(jù)報(bào)文并 存放至對(duì)應(yīng)出方向隊(duì)列;在透?jìng)鱂IFO為空時(shí),如果有出方向隊(duì)列非滿、且 外部隨機(jī)存儲(chǔ)器中對(duì)應(yīng)外部隊(duì)列非空,則向存儲(chǔ)器控制模塊請(qǐng)求從外部存儲(chǔ) 器中的對(duì)應(yīng)外部隊(duì)列讀取數(shù)據(jù)報(bào)文、并存放至該出方向隊(duì)列;否則,暫不針 對(duì)該非滿出方向隊(duì)列進(jìn)行讀寫操作。
入方向管理模塊中進(jìn)一步設(shè)有多路輸入、 一路輸出的入方向選擇器,入 方向選擇器的每一路輸入連接一個(gè)入方向隊(duì)列、 一路輸出連接至入方向控制 模塊;
入方向控制模塊進(jìn)一步向入方向選擇器的控制端輸出一入方向輪尋控 制信號(hào),用于以輪尋方式控制入方向選擇器連接入方向隊(duì)列的每一路輸入依次與入方向選擇器的一路輸出導(dǎo)通;
出方向管理模塊中進(jìn)一步設(shè)有一路輸入、多路輸出的出方向選擇器,出 方向選擇器的每一路輸出連接一個(gè)出方向隊(duì)列、一5^輸入連接自出方向控制 模塊;
出方向控制模塊進(jìn)一步向出方向選擇器的控制端輸出一出方向輪尋控 制信號(hào),用于以輪尋方式控制出方向選擇器連接出方向隊(duì)列的每一路輸出與 出方向選擇器的一路輸入導(dǎo)通。
每一入方向隊(duì)列進(jìn)一步向入方向控制模塊輸出表示該入方向隊(duì)列空滿 狀態(tài)的狀態(tài)信號(hào),以供入方向控制模塊判斷是否有入方向隊(duì)列非空;
每一 出方向隊(duì)列進(jìn)一步向出方向控制模塊和入方向控制模塊輸出表示 該出方向隊(duì)列空滿狀態(tài)的狀態(tài)信號(hào),以供出方向控制模塊判斷是否有出方向 隊(duì)列非滿、入方向控制模塊判斷對(duì)應(yīng)出方向隊(duì)列是否非滿。
入方向控制模塊進(jìn)一步維護(hù)一外部存儲(chǔ)器寫指針列表、并進(jìn)一步通過(guò)一 寫數(shù)據(jù)輸出隊(duì)列、以及一寫地址輸出隊(duì)列與存儲(chǔ)器控制模塊相連;入方向控 制模塊將數(shù)據(jù)報(bào)文存放至寫數(shù)據(jù)輸出隊(duì)列,同時(shí)將外部存儲(chǔ)器寫指針列表 中,與該數(shù)據(jù)報(bào)文所屬入方向隊(duì)列對(duì)應(yīng)的當(dāng)前寫指針存放至寫地址輸出隊(duì) 列、并更新該寫指針;
出方向控制模塊進(jìn)一步維護(hù)一外部存儲(chǔ)器讀指針列表、并進(jìn)一步通過(guò)一 讀數(shù)據(jù)輸入隊(duì)列、以及一讀地址輸出隊(duì)列與存儲(chǔ)器控制模塊相連;出方向控 制模塊將外部存儲(chǔ)器讀指針列表中,與非滿狀態(tài)出方向隊(duì)列對(duì)應(yīng)的讀指針存 放至讀地址輸出隊(duì)列,然后從讀數(shù)據(jù)輸入隊(duì)列中讀取對(duì)應(yīng)的數(shù)據(jù)報(bào)文、并更 新該對(duì)應(yīng)的讀指針;
且,入方向控制模塊和出方向控制模塊依據(jù)外部存儲(chǔ)器寫指針列表和外 部存儲(chǔ)器讀指針列表,判斷外部隨機(jī)存儲(chǔ)器中的各外部隊(duì)列的空滿狀態(tài)。
存儲(chǔ)器控制模塊以信元Cell為單位向外部隨機(jī)存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì)
列寫入數(shù)據(jù)報(bào)文、同一 Cell的各部分寫入至不同BANK、每部分位于一個(gè)
BANK中的同一行,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔順序向每個(gè)Cell各部分所在BANK的一行發(fā)送激活命令和包含預(yù)充電命令的寫命令、用以消除向 外部隨機(jī)存儲(chǔ)器寫入各部分之間的總線等待時(shí)間;
存儲(chǔ)器控制模塊以Cell為單位從外部隨機(jī)存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì)列中 讀取數(shù)據(jù)報(bào)文,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔順序向每個(gè)Cell各部分所在 BANK的一行發(fā)送激活命令和包含預(yù)充電命令的讀命令、用以消除從外部隨 機(jī)存儲(chǔ)器讀出各部分之間的總線等待時(shí)間。
一個(gè)Cell小于等于一行的容量與BANK數(shù)量的乘積、且大于等于對(duì)一 個(gè)BANK的讀寫訪問(wèn)時(shí)間與該BANK的預(yù)充電時(shí)間內(nèi)所能夠讀寫的最大數(shù)
據(jù)量;
所述預(yù)設(shè)間隔小于等于 一行數(shù)據(jù)占用的外接隨機(jī)存儲(chǔ)器的總線周期長(zhǎng)度。
本發(fā)明提供的 一種適用于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的數(shù)據(jù)報(bào)文存取控制方法,該方 法可將芯片接收的數(shù)據(jù)報(bào)文寫入至外接隨機(jī)存儲(chǔ)器,還可從外接隨機(jī)存儲(chǔ)器 中請(qǐng)求讀取數(shù)據(jù)報(bào)文至芯片、并從芯片發(fā)出,
在芯片內(nèi)設(shè)置若干入方向隊(duì)列、及對(duì)應(yīng)的若干出方向隊(duì)列,還在芯片內(nèi)
設(shè)置可在片內(nèi)傳輸數(shù)據(jù)報(bào)文的透?jìng)鱂IFO; 且,該數(shù)據(jù)報(bào)文存取控制方法包括
入方向控制模塊,在有入方向隊(duì)列非空時(shí),如果對(duì)應(yīng)外部隊(duì)列中有數(shù)據(jù) 報(bào)文、且非滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊;如 果對(duì)應(yīng)外部隊(duì)列為空、且透?jìng)鱂IFO和對(duì)應(yīng)出方向隊(duì)列均非滿,則將該入方 向隊(duì)列中的數(shù)據(jù)才艮文寫入至透?jìng)鱂IFO;如果透?jìng)鱂IFO或?qū)?yīng)出方向隊(duì)列將 滿或已滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊;否則, 暫針對(duì)該入方向隊(duì)列進(jìn)行讀寫操作;
在透?jìng)鱂IFO非空時(shí),從透?jìng)鱂IFO讀取數(shù)據(jù)才艮文并存放至對(duì)應(yīng)出方向 隊(duì)列;在透?jìng)鱂IFO為空時(shí),如果有出方向隊(duì)列非滿、且外接隨機(jī)存儲(chǔ)器中
該出方向隊(duì)列;否則,暫不針對(duì)該非滿出方向隊(duì)列進(jìn)行讀寫操作。該數(shù)據(jù)報(bào)文存取控制方法進(jìn)一步輪尋每一入方向隊(duì)列和每一出方向隊(duì)列。
每一入方向隊(duì)列進(jìn)一步產(chǎn)生表示該入方向隊(duì)列空滿狀態(tài)的狀態(tài)信號(hào),用
以判斷是否有入方向隊(duì)列非空;
每 一 出方向隊(duì)列進(jìn) 一 步產(chǎn)生表示該出方向隊(duì)列空滿狀態(tài)的狀態(tài)信號(hào),用 以判斷是否有出方向隊(duì)列非滿。
進(jìn)一步設(shè)置一外部存儲(chǔ)器寫指針列表和一外部存儲(chǔ)器讀指針列表;
該數(shù)據(jù)報(bào)文存取控制方法進(jìn)一步將待存放至外接隨機(jī)存儲(chǔ)器內(nèi)對(duì)應(yīng)外 部隊(duì)列的數(shù)據(jù)報(bào)文,存放至預(yù)先在芯片內(nèi)設(shè)置的寫數(shù)據(jù)輸出隊(duì)列,同時(shí)將外 部存儲(chǔ)器寫指針列表中,與該數(shù)據(jù)報(bào)文所屬入方向隊(duì)列對(duì)應(yīng)的當(dāng)前寫指針存 放至預(yù)先在芯片內(nèi)設(shè)置的寫地址輸出隊(duì)列、并更新該寫指針;
該數(shù)據(jù)報(bào)文存取控制方法還進(jìn)一步將預(yù)先在芯片內(nèi)設(shè)置的外部存儲(chǔ)器 讀指針列表中,與非滿狀態(tài)出方向隊(duì)列對(duì)應(yīng)的讀指針存放至預(yù)先在芯片內(nèi)設(shè) 置的讀地址輸出隊(duì)列,然后從讀數(shù)據(jù)輸入隊(duì)列中讀取對(duì)應(yīng)的數(shù)據(jù)報(bào)文、并更 新該對(duì)應(yīng)的讀指針;
且,該數(shù)據(jù)報(bào)文存取控制方法依據(jù)外部存儲(chǔ)器寫指針列表和外部存儲(chǔ)器 讀指針列表,判斷外接隨機(jī)存儲(chǔ)器中的各外部隊(duì)列的空滿狀態(tài)。
該數(shù)據(jù)報(bào)文存取控制方法以信元Cell為單位向外部隨機(jī)存儲(chǔ)器中的對(duì) 應(yīng)外部隊(duì)列寫入數(shù)據(jù)報(bào)文、同一 Cell的各部分寫入至不同BANK、每部分 位于一個(gè)BANK中的同一行,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔順序向每個(gè)Cell 各部分所在BANK的一行發(fā)送激活命令和包含預(yù)充電命令的寫命令、用以 消除向外部隨機(jī)存儲(chǔ)器寫入各部分之間的總線等待時(shí)間;
該數(shù)據(jù)報(bào)文存取控制方法還以Cell為單位從外部隨機(jī)存儲(chǔ)器中的對(duì)應(yīng) 外部隊(duì)列中讀取數(shù)據(jù)報(bào)文,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔順序向每個(gè)Cell 各部分所在BANK的一行發(fā)送激活命令和包含預(yù)充電命令的讀命令、用以 消除從外部隨機(jī)存儲(chǔ)器讀出各部分之間的總線等待時(shí)間。
一個(gè)Cell小于等于一行的容量與BANK數(shù)量的乘積、且大于等于對(duì)一
13個(gè)BANK的讀寫訪問(wèn)時(shí)間與該BANK的預(yù)充電時(shí)間內(nèi)所能夠讀寫的最大凝: 據(jù)量;
所述預(yù)設(shè)間隔小于等于 一行數(shù)據(jù)占用的外接隨機(jī)存儲(chǔ)器的總線周期長(zhǎng)度。
由上述技術(shù)方案可見,本發(fā)明利用一透?jìng)鱂IFO,該透?jìng)鱂IFO作為小數(shù) 據(jù)量的一級(jí)緩存,而外接RAM則僅用作大數(shù)據(jù)量的二級(jí)緩存,這樣,由于 有部分?jǐn)?shù)據(jù)報(bào)文在片內(nèi)存取、而非所有數(shù)據(jù)報(bào)文均通過(guò)外接RAM實(shí)現(xiàn)存取, 因而減少了外接RAM總線利用率低對(duì)數(shù)據(jù)報(bào)文的傳輸效率的影響,從而提 高數(shù)據(jù)報(bào)文傳輸效率。
可選地,本發(fā)明還可以單元Cell為單位對(duì)外4妄RAM進(jìn)行數(shù)據(jù)才艮文的讀 寫操作,并將每個(gè)Cell分為若干部分、每一部分順序?qū)懭胫敛煌珺ANK的 任一行中,并在對(duì)外接RAM讀寫數(shù)據(jù)報(bào)文時(shí),以預(yù)設(shè)間隔連續(xù)向每個(gè)Cell 各部分所在BANK發(fā)送激活命令和包含預(yù)充電命令的讀命令,從而消除從 前述隨機(jī)存儲(chǔ)器讀取每個(gè)Cell各部分之間的等待時(shí)間,進(jìn)而提高外接RAM 總線利用率、進(jìn)一步提高數(shù)據(jù)報(bào)文傳輸效率。
圖1為現(xiàn)有基于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制的網(wǎng)絡(luò)設(shè)備中的線卡板結(jié)構(gòu)示意圖2為現(xiàn)有如圖1所示線卡板中FIFO隊(duì)列管理機(jī)制的示意圖3為現(xiàn)有控制邏輯讀取外接RAM的時(shí)序圖4為本發(fā)明實(shí)施例中數(shù)據(jù)報(bào)文存取控制裝置的結(jié)構(gòu)示意圖5為本發(fā)明實(shí)施例中數(shù)據(jù)報(bào)文存取控制邏輯的邏輯結(jié)構(gòu)示意圖6為本發(fā)明實(shí)施例中數(shù)據(jù)報(bào)文存取控制的 一 實(shí)例示意圖7a 圖7b為本發(fā)明實(shí)施例中數(shù)據(jù)報(bào)文存取控制的另一實(shí)例示意圖8為本發(fā)明實(shí)施例中對(duì)外接RAM讀操作實(shí)例的時(shí)序圖9a 圖9b為本發(fā)明實(shí)施例中對(duì)外接RAM讀寫操作切換的時(shí)序圖10a 圖10b為本發(fā)明實(shí)施例中數(shù)據(jù)報(bào)文存取控制方法的流程示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉 實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
在本實(shí)施例中,考慮到數(shù)據(jù)報(bào)文處理芯片通常為ASIC或FPGA芯片、 該芯片內(nèi)又通常會(huì)設(shè)有可任意配置的RAM資源,因而為了使得數(shù)據(jù)報(bào)文傳 輸效率盡可能少地受數(shù)據(jù)報(bào)文處理外接RAM的影響,利用數(shù)據(jù)報(bào)文處理芯 片內(nèi)的RAM資源實(shí)現(xiàn)一透?jìng)鱂IFO,該透?jìng)鱂IFO用作小數(shù)據(jù)量的一級(jí)緩存, 而數(shù)據(jù)報(bào)文處理芯片外接的RAM則用作大數(shù)據(jù)量的二級(jí)緩存。
其中,上述透?jìng)鱂IFO的作用,可看作是將經(jīng)由外接RAM總線的數(shù)據(jù) 報(bào)文傳輸路徑旁路(Bypass),因而本文中也可稱該透?jìng)鱂IFO為Bypass FIFO。
圖4為本發(fā)明實(shí)施例中數(shù)據(jù)報(bào)文存取控制裝置的結(jié)構(gòu)示意圖。如圖4所 示,以外接RAM為DDR2 SDRAM為例,本實(shí)施例中的數(shù)據(jù)報(bào)文處理芯片 作為數(shù)據(jù)報(bào)文存取控制裝置,具體包括
入方向管理(Ingress Queue Uni, IQU)模塊,內(nèi)部設(shè)有若干入方向隊(duì) 列IQ1 IQ255,每個(gè)入方向隊(duì)列IQi可存放接收自數(shù)據(jù)報(bào)文存取控制裝置外 部的同 一報(bào)文流中若干數(shù)據(jù)報(bào)文;
出方向管理(Engress Queue Uni, EQU)模塊,內(nèi)部設(shè)有若干出方向隊(duì) 列EQ1 EQ255,每個(gè)出方向隊(duì)列EQi可存放來(lái)自對(duì)應(yīng)入方向隊(duì)列的同一報(bào) 文流中若干數(shù)據(jù)報(bào)文、等待發(fā)送至報(bào)文存取控制裝置外部;
其中,i為大于等于l、且小于等于255的正整數(shù),當(dāng)然,每種隊(duì)列的 總數(shù)也可不限于255個(gè)、而是可以更多;
存儲(chǔ)器控制模塊(DDR2 SDRAM Controller),基于現(xiàn)有FIFO隊(duì)列管 理機(jī)制對(duì)外接DDR2 SDRAM進(jìn)行數(shù)據(jù)報(bào)文的讀寫操作;具體說(shuō),存儲(chǔ)器控 制模塊可將任一入方向隊(duì)列IQi的數(shù)據(jù)報(bào)文存放至外接DDR2 SDRAM內(nèi)的 對(duì)應(yīng)外部隊(duì)列Qi中,并可/人外4妄DDR2 SDRAM內(nèi)的對(duì)應(yīng)外部隊(duì)列Qi中讀取應(yīng)存放至任一出方向隊(duì)列EQi的數(shù)據(jù)報(bào)文;
透?jìng)鱂IFO、或稱為Bypass FIFO,可將任一入方向隊(duì)列IQi中的數(shù)據(jù)報(bào) 文緩存后、向?qū)?yīng)出方向隊(duì)列EQi傳遞;
以及入方向控制(Ingress Control )才莫塊和出方向4空制才莫塊(Egress Control)。
入方向控制模塊在有入方向隊(duì)列IQi非空時(shí),先判斷外接DDR2 SDRAM 中的對(duì)應(yīng)外部隊(duì)列Qi中是否已存有數(shù)據(jù)報(bào)文;
如果外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列Qi已存有數(shù)據(jù)報(bào)文、且非 滿,則表示該入方向隊(duì)列IQi所對(duì)應(yīng)的才艮文流中已有數(shù)據(jù)報(bào)文存放至對(duì)應(yīng)外 部隊(duì)列Qi、且該對(duì)應(yīng)外部隊(duì)列能夠繼續(xù)存入數(shù)據(jù)報(bào)文,因而為了保證該入 方向隊(duì)列IQi所對(duì)應(yīng)的才艮文流中各lt據(jù)才艮文間的順序不變,將該入方向隊(duì)列 IQi中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊,以使IQi中的數(shù)據(jù)報(bào)文經(jīng)IQi、外 接DDR2 SDRAM中的Qi、 EQi的二級(jí)緩存路徑傳輸;需要說(shuō)明的是,本文 所述的"非滿",是指未到達(dá)"將滿(afull)"或"已滿(full)"狀態(tài);
如果外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列Qi為空,則再判斷Bypass FIFO及對(duì)應(yīng)出方向隊(duì)列EQi是否均非滿;
如果外4妄DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列Qi為空時(shí)、Bypass FIFO及 對(duì)應(yīng)出方向隊(duì)列EQi均非滿,則表示該入方向隊(duì)列IQi所對(duì)應(yīng)的報(bào)文流中沒(méi) 有數(shù)據(jù)報(bào)文存放至對(duì)應(yīng)外部隊(duì)列Qi、且能夠通過(guò)Bypass FIFO傳遞數(shù)據(jù)報(bào)文 至對(duì)應(yīng)出方向隊(duì)列EQi,因而將該入方向隊(duì)列IQi中的數(shù)據(jù)報(bào)文寫入至 Bypass FIFO,以使IQi中的數(shù)據(jù)報(bào)文經(jīng)IQi、 Bypass FIFO、 EQi的一級(jí)緩存 路徑傳輸;
如果外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列Qi為空時(shí)、Bypass FIFO或 對(duì)應(yīng)出方向隊(duì)列EQi將滿或已滿,則將該入方向隊(duì)列IQi中的數(shù)據(jù)報(bào)文提供 給存儲(chǔ)器控制模塊,以使IQi中的數(shù)據(jù)報(bào)文經(jīng)IQi、外接DDR2 SDRAM中 的Qi、 EQi的二級(jí)緩存路徑傳輸;
否則,對(duì)應(yīng)外部隊(duì)列Qi雖有數(shù)據(jù)才艮文、^旦該外部隊(duì)列Qi已滿,因而暫不針對(duì)該入方向隊(duì)列IQi進(jìn)行讀寫操作。
出方向控制模塊在Bypass FIFO非空時(shí),從Bypass FIFO讀取數(shù)據(jù)報(bào)文、 并存放至該數(shù)據(jù)才艮文所屬入方向隊(duì)列IQi對(duì)應(yīng)的出方向隊(duì)列EQi;由于 Bypass FIFO中的數(shù)據(jù)報(bào)文是在外部隊(duì)列Qi中沒(méi)有對(duì)應(yīng)報(bào)文流中的數(shù)據(jù)報(bào) 文、且對(duì)應(yīng)出方向隊(duì)列EQi非滿時(shí)寫入的,因而外部隊(duì)列Qi中沒(méi)有本應(yīng)位 于該數(shù)據(jù)報(bào)文之前的同 一報(bào)文流中的其它數(shù)據(jù)報(bào)文,即便從Bypass FIFO讀 取數(shù)據(jù)報(bào)文時(shí)外部隊(duì)列Qi中已存有同一報(bào)文流中的數(shù)據(jù)報(bào)文,但由于讀取 的該數(shù)據(jù)報(bào)文不會(huì)在外部隊(duì)列Qi中有同一報(bào)文流中的數(shù)據(jù)報(bào)文時(shí)存入至 Bypass FIFO,因而外部隊(duì)列Qi中此時(shí)存放的數(shù)據(jù)報(bào)文一定是位于從Bypass FIFO讀取的數(shù)據(jù)報(bào)文之后的,從而只要Bypass FIFO非空即從其讀取數(shù)據(jù) 報(bào)文,不會(huì)導(dǎo)致對(duì)應(yīng)報(bào)文流中的數(shù)據(jù)報(bào)文順序發(fā)生變化;
出方向控制模塊在Bypass FIFO為空時(shí),如果有出方向隊(duì)列EQi非滿、 且外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列Qi非空,則表示從對(duì)應(yīng)外部隊(duì)列 Qi讀取數(shù)據(jù)報(bào)文不會(huì)改變對(duì)應(yīng)報(bào)文流中各數(shù)據(jù)報(bào)文間的順序,因而向存儲(chǔ) 器控制模塊請(qǐng)求從外部存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì)列Qi讀取數(shù)據(jù)報(bào)文、并存放 至該出方向隊(duì)列EQi;否則,Bypass FIFO為空、且對(duì)應(yīng)外部隊(duì)列Qi中沒(méi)有 數(shù)據(jù)報(bào)文,因而暫不針對(duì)該出方向隊(duì)列進(jìn)行讀寫操作。
可見,由于有數(shù)據(jù)報(bào)文經(jīng)數(shù)據(jù)報(bào)文存取控制裝置內(nèi)部的一級(jí)緩存路徑傳 輸、而非所有數(shù)據(jù)報(bào)文均經(jīng)外接DDR2 SDRAM總線所在的二級(jí)緩存路徑傳 輸,從而能夠減少DDR2 SDRAM總線利用率低對(duì)數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)效率的影響。
而且,由于在對(duì)應(yīng)外部隊(duì)列中有數(shù)據(jù)報(bào)文時(shí),不會(huì)選擇控制裝置內(nèi)部的 一級(jí)緩存路徑傳輸,因而能夠保證報(bào)文流中各數(shù)據(jù)報(bào)文間的順序不會(huì)發(fā)生變 化;由于在出方向隊(duì)列EQi將滿或已滿時(shí),也不會(huì)選擇控制裝置內(nèi)部的一級(jí) 緩存路徑傳輸,因而還能夠避免如下情況出現(xiàn)入方向控制模塊將入方向 FIFO隊(duì)列IQi中的凄t據(jù)報(bào)文讀取并寫入至Bypass FIFO后,出方向控制模塊 即便從Bypass FIFO讀取該出屬于IQi、并應(yīng)存入至EQi的數(shù)據(jù)報(bào)文,但由 于EQi此時(shí)將滿或已滿、不足以寫入數(shù)據(jù)報(bào)文,從而導(dǎo)致數(shù)據(jù)報(bào)文丟包。實(shí)際用用中,/人IQi讀出的數(shù)據(jù)才艮文應(yīng)當(dāng)寫入至對(duì)應(yīng)的EQi、而不應(yīng)當(dāng) 寫入至EQl EQi-l以及EQi+l EQ255中的任一出方向隊(duì)列,因而入方向控 制模塊還應(yīng)對(duì)從IQi讀出的數(shù)據(jù)報(bào)文中添加表示IQi的標(biāo)識(shí),以便出方向控 制模塊依據(jù)該標(biāo)識(shí)判斷出數(shù)據(jù)報(bào)文所屬IQi、并存放至IQi對(duì)應(yīng)的EQi中。
圖5為本發(fā)明實(shí)施例中數(shù)據(jù)報(bào)文存取控制邏輯的邏輯結(jié)構(gòu)示意圖。如圖 5所示,在本實(shí)施例中,通過(guò)Bypass FIFO相連通的入方向隊(duì)列IQi與對(duì)應(yīng) 出方向EQi構(gòu)成的一級(jí)緩存路徑,而外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列 Qi則屬于二級(jí)緩存路徑。
下面,對(duì)本實(shí)施例中如圖4所示的數(shù)據(jù)報(bào)文存取控制裝置進(jìn)行再進(jìn)一步 的詳細(xì)i兌明。
為了避免入方向管理模塊內(nèi)的若干入方向隊(duì)列中,有入方向隊(duì)列中的數(shù) 據(jù)報(bào)文長(zhǎng)時(shí)間不被入方向控制模塊讀取,本實(shí)施例可由入方向控制模塊以輪 尋方式讀取若干入方向隊(duì)列中的數(shù)據(jù)報(bào)文,具體實(shí)現(xiàn)可以為
參見圖4,入方向管理模塊中進(jìn)一步設(shè)有多路輸入、 一路輸出的入方向 選擇器,入方向選擇器的每一路輸入連接一個(gè)入方向隊(duì)列、 一路輸出連接至 入方向控制模塊,而關(guān)于入方向管理模塊接收的數(shù)據(jù)報(bào)文如何分配至若干入 方向隊(duì)列,則可以由本領(lǐng)域技術(shù)人員通過(guò)任意方式來(lái)實(shí)現(xiàn),本文并不予以關(guān)
注;
入方向控制模塊進(jìn)一步向入方向選擇器的控制端輸出一入方向輪尋控
制信號(hào)(I_queue_select),用于以輪尋方式控制入方向選擇器連接入方向隊(duì) 列的每一路輸入依次與入方向選擇器的 一路輸出導(dǎo)通,從而實(shí)現(xiàn)以輪尋方式 讀取若干入方向隊(duì)列中的數(shù)據(jù)報(bào)文。
相應(yīng)地,為了使得出方向控制模塊能夠?qū)@取的數(shù)據(jù)報(bào)文均勻分配至出 方向管理模塊內(nèi)的若干出方向隊(duì)列中,以避免數(shù)據(jù)報(bào)文堆積在某幾個(gè)出方向 隊(duì)列、降低數(shù)據(jù)報(bào)文外發(fā)效率,本實(shí)施例可由出方向控制模塊以輪尋方式向 若干出方向FIFO隊(duì)列寫入數(shù)據(jù)報(bào)文,具體實(shí)現(xiàn)可以為
出方向管理模塊中進(jìn)一步設(shè)有一路輸入、多路輸出的出方向選擇器,出方向選擇器的每一路輸出連接一個(gè)出方向隊(duì)列、 一路輸入連接自出方向控制 模塊,而關(guān)于出方向管理模塊如何從若干出方向隊(duì)列中選擇外發(fā)數(shù)據(jù)報(bào)文,
則可以由本領(lǐng)域技術(shù)人員通過(guò)任意方式來(lái)實(shí)現(xiàn),本文并不予以關(guān)注;
出方向控制模塊進(jìn)一步向出方向選擇器的控制端輸出一出方向輪尋控
制信號(hào)(E一queue—select),用于以輪尋方式控制出方向選擇器連接出方向 隊(duì)列的每一路輸出與出方向選擇器的 一路輸入導(dǎo)通,從而實(shí)現(xiàn)以輪尋方式向 若干出方向隊(duì)列寫入數(shù)據(jù)報(bào)文。
仍參見圖4,為了實(shí)現(xiàn)入方向控制模塊能夠判斷出是否有入方向FIFO 隊(duì)列非空,每一入方向隊(duì)列可進(jìn)一步向入方向控制模塊輸出表示該入方向隊(duì) 列空滿狀態(tài)的狀態(tài)信號(hào)(I—queue—status );而為了出方向控制模塊能夠判斷 出是否有出方向隊(duì)列非滿、入方向控制模塊能夠判斷出對(duì)應(yīng)出方向隊(duì)列是否 非滿,每一 出方向隊(duì)列還可進(jìn)一步向出方向控制模塊和入方向控制模塊輸出 表示該出方向隊(duì)列空滿狀態(tài)的狀態(tài)信號(hào)(E—queue—status )。
此外,仍參見圖4,為了入方向控制模塊和出方向控制模塊能夠判斷出 外接DDR2 SDRAM中各外部隊(duì)列的空滿狀態(tài)、入方向控制模塊能夠使存儲(chǔ) 器控制模塊將數(shù)據(jù)報(bào)文寫入至對(duì)應(yīng)外部隊(duì)列、以及出方向控制模塊能夠使存 儲(chǔ)器控制模塊準(zhǔn)確讀取對(duì)應(yīng)外部隊(duì)列中的數(shù)據(jù)報(bào)文,本實(shí)施例中進(jìn)一步由入 方向控制模塊維護(hù)一外部存儲(chǔ)器寫指針列表(WPTRList)、由出方向控制 模塊維護(hù)一外部存儲(chǔ)器讀指針列表(RPTRList)。
這樣,入方向控制模塊進(jìn)一步通過(guò)一寫數(shù)據(jù)輸出隊(duì)列(WRQ)、以及 一寫地址輸出隊(duì)列(WADDR)與存儲(chǔ)器控制模塊相連,且入方向控制模塊 將需提供給存儲(chǔ)器控制模塊的數(shù)據(jù)報(bào)文存放至寫數(shù)據(jù)輸出隊(duì)列,同時(shí)將外部 存儲(chǔ)器寫指針列表中,與該數(shù)據(jù)報(bào)文所屬入方向隊(duì)列IQi對(duì)應(yīng)的當(dāng)前寫指針 WPTRi存放至寫地址輸出隊(duì)列、并更新該寫指針WPTRi;其中,更新寫指 針的方式,可以按照對(duì)應(yīng)外部隊(duì)列Qi在外接DDR2 SDRAM中順序占用的 相鄰實(shí)際地址間差值與寫入的數(shù)據(jù)報(bào)文所占地址總數(shù)的乘積,依次對(duì)寫指針 的值進(jìn)行累加操作;而出方向控制模塊進(jìn)一步通過(guò)一讀數(shù)據(jù)輸入隊(duì)列(RDQ)、以及一讀地 址輸出隊(duì)列(RADDR)與存儲(chǔ)器控制模塊相連,且出方向控制模塊將外部 存儲(chǔ)器讀指針列表中,與非滿狀態(tài)出方向隊(duì)列EQi對(duì)應(yīng)的讀指針RPTRi存 放至讀地址輸出隊(duì)列、并更新該讀指針RPTRi,然后即可從讀數(shù)據(jù)輸入隊(duì)列 中讀取對(duì)應(yīng)的數(shù)據(jù)才艮文;其中,更新讀指針的方式可以按照對(duì)應(yīng)外部隊(duì)列 Qi在外接DDR2 SDRAM中順序占用的相鄰實(shí)際地址間差值與讀取的數(shù)據(jù) 報(bào)文所占地址總數(shù)的乘積,依次對(duì)讀指針的值進(jìn)行累加操作;
入方向控制模塊和出方向控制模塊,還可依據(jù)外部存儲(chǔ)器寫指針列表和 外部存儲(chǔ)器讀指針列表,并按照現(xiàn)有任一種方式比對(duì)每一外部隊(duì)列的讀寫指 針,來(lái)判斷外部隨機(jī)存儲(chǔ)器中的各外部隊(duì)列的空滿狀態(tài)。
下面,結(jié)合實(shí)例對(duì)上述如圖4所示的數(shù)據(jù)報(bào)文存取控制裝置的工作原理 進(jìn)行進(jìn)一步說(shuō)明。
參見圖6,圖6中省略了各模塊的信號(hào)傳遞關(guān)系、數(shù)據(jù)報(bào)文傳遞路徑如 虛線箭頭所示,入方向控制模塊通過(guò)循環(huán)羅賓(RoimdRobin, RR)輪尋調(diào) 度到若干入方向隊(duì)列中的IQ0,當(dāng)IQO有數(shù)據(jù)報(bào)文時(shí),對(duì)應(yīng)外部隊(duì)列Q0中 沒(méi)有數(shù)據(jù)報(bào)文,若干出方向FIFO隊(duì)列中對(duì)應(yīng)的EQ0未到達(dá)將滿閾值、且 Bypass FIFO也未到達(dá)將滿或滿狀態(tài),則表示IQO、 Bypass FIFO、 EQO順序 構(gòu)成的片內(nèi)數(shù)據(jù)報(bào)文傳遞路徑未阻塞,且通過(guò)該路徑傳遞數(shù)據(jù)報(bào)文不會(huì)導(dǎo)致 數(shù)據(jù)報(bào)文在其所屬報(bào)文流中的順序發(fā)生變化,因而入方向控制模塊讀取IQO 中的數(shù)據(jù)報(bào)文寫入至Bypass FIFO、并為數(shù)據(jù)報(bào)文添加表示IQO的標(biāo)識(shí)。此 后,出方向控制才莫塊在從Bypass FIFO讀取出標(biāo)識(shí)IQO的數(shù)據(jù)才艮文后,即可 寫入至未到達(dá)將滿或已滿狀態(tài)的對(duì)應(yīng)EQO。
參見圖7a,圖7a中省略了各模塊的信號(hào)傳遞關(guān)系、數(shù)據(jù)報(bào)文傳遞路徑 如虛線箭頭所示,入方向控制模塊通過(guò)RR輪尋調(diào)度到若干入方向隊(duì)列中的 IQO, IQ0有數(shù)據(jù)報(bào)文,但對(duì)應(yīng)外部隊(duì)列Q0中有同一報(bào)文流中的數(shù)據(jù)報(bào)文, 且若干出方向隊(duì)列中對(duì)應(yīng)的EQO到達(dá)將滿閾值,導(dǎo)致IQO、 Bypass FIFO、 EQO順序構(gòu)成的片內(nèi)數(shù)據(jù)報(bào)文傳遞路徑阻塞,此時(shí),由于外接DDR2 SDRAM的對(duì)應(yīng)外部隊(duì)列Q0中雖然有數(shù)據(jù)報(bào)文但處于非滿狀態(tài),因而入方向控制模 塊讀取IQ0中的數(shù)據(jù)報(bào)文,并將表示IQ0的標(biāo)識(shí)添加至該數(shù)據(jù)才艮文后、存放 至連接存儲(chǔ)器控制模塊的寫數(shù)據(jù)輸出隊(duì)列WRQ中,同時(shí)還將外部存儲(chǔ)器寫 指針列表中對(duì)應(yīng)IQ0的寫指針WPTR0存放至寫地址輸出隊(duì)列WADDR中, 然后將Q0在外接DDR2 SDRAM中順序占用的相鄰實(shí)際地址間差值與IQ0 中該數(shù)據(jù)報(bào)文的長(zhǎng)度之乘積累加至寫指針WPTR0、以實(shí)現(xiàn)對(duì)寫指針WPTR0 的更新。此后,存儲(chǔ)器控制模塊即可依據(jù)寫地址輸出隊(duì)列WADDR中的寫 指針WPTRO,將寫數(shù)據(jù)輸出隊(duì)列WRQ中屬于IQ0的數(shù)據(jù)報(bào)文寫入至外接 DDR2 SDRAM的對(duì)應(yīng)外部隊(duì)列Q0中。
參見圖7b,圖7b中省略了各模塊的信號(hào)傳遞關(guān)系、數(shù)據(jù)報(bào)文傳遞路徑 如虛線箭頭所示,Bypass FIFO為空,出方向控制才莫塊通過(guò)RR調(diào)度^"尋到 若干出方向隊(duì)列中的EQO, EQ0未到達(dá)將滿閾值、且外接DDR2 SDRAM中 對(duì)應(yīng)外部隊(duì)列Q0非空,出方向控制模塊從外部存儲(chǔ)器讀指針列表中讀出 EQ0對(duì)應(yīng)的讀指針RPTR0、并存放至讀指針輸出隊(duì)列RADDR。此后,存 儲(chǔ)器控制模塊即可依據(jù)讀指針輸出隊(duì)列RADD中的讀指針RPTRO,從外接 DDR2 SDRAM的對(duì)應(yīng)外部隊(duì)列Q0中讀取數(shù)據(jù)報(bào)文并存放至讀數(shù)據(jù)輸入隊(duì) 列RDQ,出方向控制模塊從讀數(shù)據(jù)輸入隊(duì)列RDQ讀出攜帶標(biāo)識(shí)IQ0的數(shù)據(jù) 報(bào)文、并存放至EQO,然后將Q0在外接DDR2 SDRAM中順序占用的相鄰 實(shí)際地址間差值與從讀數(shù)據(jù)輸入隊(duì)列RDQ讀出的攜帶標(biāo)識(shí)IQ0的數(shù)據(jù)報(bào)文 長(zhǎng)度之乘積累加至寫指針RPTR0、以實(shí)現(xiàn)對(duì)讀指針RPTR0的更新。
基于如圖6、以及圖7a 圖7b所示的實(shí)例,當(dāng)外部數(shù)據(jù)報(bào)文進(jìn)入到入方 向隊(duì)列的速率,小于出方向隊(duì)列發(fā)出數(shù)據(jù)報(bào)文的速率時(shí),入方向隊(duì)列中的數(shù) 據(jù)才艮文會(huì)由于對(duì)應(yīng)出方向隊(duì)列非滿、且Bypass FIFO非滿,而通過(guò)如圖6所 示的數(shù)據(jù)報(bào)文存取控制裝置內(nèi)的Bypass FIFO所在的一級(jí)緩存路徑傳輸,從 而可以減少數(shù)據(jù)報(bào)文在數(shù)據(jù)報(bào)文存取控制裝置內(nèi)的延時(shí)。但當(dāng)進(jìn)入到入方向 隊(duì)列的數(shù)據(jù)報(bào)文速率大于從出方向隊(duì)列發(fā)出的數(shù)據(jù)報(bào)文速率時(shí),會(huì)導(dǎo)致出方 向隊(duì)列將滿或已滿,此時(shí),入方向隊(duì)列中的數(shù)據(jù)報(bào)文就需要存儲(chǔ)到外接DDR2 SDRAM中,即通過(guò)如圖7a 圖7b所示的外接DDR2 SDRAM總線所 在的二級(jí)緩存路徑傳輸,優(yōu)選地,存儲(chǔ)器控制模塊對(duì)外接DDR2 SDRAM的 寫優(yōu)先級(jí)高于讀優(yōu)先級(jí)。
以上,是本實(shí)施例數(shù)據(jù)報(bào)文存取控制裝置中包含有一級(jí)緩存路徑的結(jié)構(gòu) 所進(jìn)行的詳細(xì)說(shuō)明,除此之外,本實(shí)施例還對(duì)外接DDR2 SDRAM的讀寫操 作方式、也就是控制邏輯進(jìn)行了改進(jìn)。
考慮到不同數(shù)據(jù)報(bào)文的大小各異、通常為64字節(jié) 1500字節(jié),那么本 實(shí)施例將每一報(bào)文流中的各數(shù)據(jù)報(bào)文,以等大小信元(Cell)為單位對(duì)每個(gè) 入方向隊(duì)列IQi進(jìn)行讀操作、對(duì)Bypass FIFO和外接DDR2 SDRAM中的每 個(gè)外部隊(duì)列Qi進(jìn)行讀寫操作、對(duì)出方向隊(duì)列EQi進(jìn)行寫操作,這樣,對(duì)于 4個(gè)BANK、每個(gè)BANK中的1行為64字節(jié)的DDR2 SDRAM來(lái)說(shuō),可使 同一 Cell被均分至各BANK存儲(chǔ)、且無(wú)需通過(guò)Precharge命令和ACT命令 執(zhí)行換行操作。
實(shí)際應(yīng)用中,每個(gè)Cell可以包含多個(gè)數(shù)據(jù)報(bào)文,也可以多個(gè)Cell構(gòu)成 一個(gè)數(shù)據(jù)報(bào)文。如果存在某個(gè)報(bào)文流最后剩余的數(shù)據(jù)報(bào)文不足一個(gè)Cell,此 時(shí),不足一個(gè)Cell的剩余數(shù)據(jù)報(bào)文可以在對(duì)應(yīng)外部隊(duì)列從DDR2 SDRAM中 讀空后,通過(guò)片內(nèi)的Bypass FIFO來(lái)傳輸。
此外,本實(shí)施例還可利用BANK交錯(cuò)(interleave )方式來(lái)實(shí)現(xiàn)外接DDR2 SDRAM的控制邏輯。
具體說(shuō),存儲(chǔ)器控制模塊以Cell為單位向外接DDR2 SDRAM中的對(duì)應(yīng) 外部隊(duì)列寫入數(shù)據(jù)報(bào)文,每個(gè)Cell被分為若干部分(較佳地分為與BANK 相同數(shù)量的部分)、同一 Cell的各部分寫入至不同BANK、 Cell的每部分在 一個(gè)BANK中只占用一行內(nèi)的一'J、部分、即Cell的每部分位于一個(gè)BANK 中的同 一行,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔針對(duì)每個(gè)Cell各部分所在BANK 的一行向外接DDR2 SDRAM順序發(fā)送ACT命令和包含自動(dòng)預(yù)充電(Auto Precharge)命令的寫(WR)命令、用以消除向外部隨機(jī)存儲(chǔ)器寫入各部分 之間的總線等待時(shí)間;同理,存儲(chǔ)器控制才莫塊以Cell為單位從外接DDR2 SDRAM中的對(duì)應(yīng)外 部隊(duì)列中讀取數(shù)據(jù)報(bào)文,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔,針對(duì)每個(gè)Cell各部 分所在BANK的 一行向外接DDR2 SDRAM順序發(fā)送ACT命令和包含Auto Precharge命令的RD命令、用以消除從外部隨機(jī)存儲(chǔ)器讀出各部分之間的總 線等待時(shí)間。
進(jìn)一步說(shuō),為了消除向外部隨機(jī)存儲(chǔ)器寫入各部分之間的總線等待時(shí) 間, 一個(gè)Cell需小于等于BANK數(shù)量與列數(shù)量的乘積,即一個(gè)Cell的大小 不會(huì)超過(guò)一行的容量與BANK數(shù)量的乘積;此外,由于一個(gè)Cell會(huì)被劃分 為各部分存儲(chǔ)在不同BANK,因而為了避免在讀寫訪問(wèn)第一個(gè)BANK后, 對(duì)其他BANK的讀寫訪問(wèn)時(shí)間不足以第 一個(gè)BANK的Precharge時(shí)間、即不 足以第一個(gè)BANK完成Precharge, —個(gè)Cell也不應(yīng)小于一個(gè)BANK的讀寫 訪問(wèn)時(shí)間與Precharge時(shí)間所能夠讀寫的最大數(shù)據(jù)量、即讀寫訪問(wèn)第一個(gè) BANK后對(duì)其他BANK的讀寫訪問(wèn)時(shí)間足以第 一 個(gè)BANK完成Precharge 。
針對(duì)上述讀寫訪問(wèn)方式,外接DDR2 SDRAM中的各外部隊(duì)列要存放
一遞增,而是應(yīng)當(dāng)設(shè)置每 一 外部隊(duì)列的所有連續(xù)實(shí)際地址劃順序分為與 BANK數(shù)量相同的實(shí)際地址段,每個(gè)實(shí)際地址段中各連續(xù)實(shí)際地址的列地址 逐一遞增、BANK地址和行地址相同,且,每個(gè)實(shí)際地址段中各連續(xù)實(shí)際地 址的BANK地址,區(qū)別于該實(shí)際地址段所屬外部隊(duì)列的其他實(shí)際地址段; 每個(gè)實(shí)際地址段中各連續(xù)實(shí)際地址的行地址,區(qū)別于該實(shí)際地址段所屬外部 隊(duì)列之外的其他外部隊(duì)列中,與該實(shí)際地址段位于同一 BANK的實(shí)際地址 段。
而且,在更新寫指針WPTRi和讀指針RPTRi時(shí),對(duì)于同一Cell中一個(gè) 部分內(nèi)的數(shù)據(jù),對(duì)寫指針WPTRi和讀指針RPTRi累加該部分內(nèi)數(shù)據(jù)所占用 的列數(shù),當(dāng)開始寫入或讀取同一個(gè)Cell中下一部分的數(shù)據(jù)時(shí),則需先對(duì)寫指 針WPTRi和讀指針RPTRi表示BANK地址的次低位加1 ,然后再對(duì)寫指針 WPTRi和讀指針RPTRi累加該部分內(nèi)數(shù)據(jù)所占用的列數(shù)。寫指針WPTRi
23和讀指針RPTRi的設(shè)置方式、以及更新方式,可以由本領(lǐng)域技術(shù)人員采用 任意方式實(shí)現(xiàn),在此不再——列舉。
參見圖8,以連續(xù)讀取兩個(gè)Cell、每個(gè)Cell占256字節(jié)和16個(gè)時(shí)鐘周 期為例,假設(shè)每一個(gè)Cell均分為4個(gè)部分Da、 Db、 Dc、 Dd,并分別被寫入 在BANK0、 BANK1、 BANK2、 BANK3中的一行內(nèi)(兩個(gè)Cell的Da寫入 在BANK0的不同行,Db、 Dc、 Dd同理),從存儲(chǔ)器控制模塊讀指針輸出 隊(duì)列RADDR中讀取到該Cell所在數(shù)據(jù)報(bào)文所屬入方向隊(duì)列對(duì)應(yīng)的讀指針開 始
在TO時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANKO中第一個(gè)Cell的Da所 在行,向外接DDR2 SDRAM發(fā)送ACT命令,外接DDR2 SDRAM的BANKO 中第一個(gè)Cell的Da所在行被激活;
在Tl時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANKO中第一個(gè)Cell的Da所 在行,向外接DDR2 SDRAM發(fā)送包含Auto Precharge命令的RD命令;需 要說(shuō)明的是,雖然外接DDR2 SDRAM中的參數(shù)tRCD被設(shè)置為4,即在發(fā) 送ACT命令后、等待4個(gè)時(shí)鐘周期才可執(zhí)行對(duì)顆粒的讀操作,但為了使得 針對(duì)每一個(gè)Cell的4個(gè)部分的ACT命令和包含Auto Precharge命令的RD 命令能夠更加緊湊,因而將外接DDR2 SDRAM中的現(xiàn)有參數(shù)AL設(shè)置為3、 使包含Auto Precharge命令的RD命令可提前3個(gè)時(shí)鐘周期發(fā)送,以使每次 發(fā)送ACT命令后、在下一個(gè)時(shí)鐘周期內(nèi)即可發(fā)送包含Auto Precharge命令 的RD命令,后續(xù)發(fā)送的包含Auto Precharge命令的RD命令同理;
在T2 T3時(shí)鐘周期,空閑等待;需要說(shuō)明的是,雖然包含Auto Precharge 命令的RD命令提前3個(gè)時(shí)鐘周期發(fā)送,但由于參數(shù)tRCD被設(shè)置為4,因 而外接DDR2 SDRAM仍需等到T4時(shí)鐘周期才可開始對(duì)激活行的顆粒實(shí)際 執(zhí)行讀操作;
在T4時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK1中第一個(gè)Cell的Db所 在行,向外接DDR2 SDRAM發(fā)送ACT命令,外接DDR2 SDRAM的BANK1 中第 一個(gè)Cell的Db所在行被激活;同時(shí),外接DDR2 SDRAM開始對(duì)BANKO中第一個(gè)Cell的Da所在行的顆粒進(jìn)行讀操作;
在T5時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK1中第一個(gè)Cell的Db所 在行,向外接DDR2 SDRAM發(fā)送包含Auto Precharge命令的RD命令;同 時(shí),外接DDR2 SDRAM繼續(xù)對(duì)BANK0中第 一個(gè)Cell的Da所在行的顆粒 進(jìn)行讀操作;
在T6 T7時(shí)鐘周期,外接DDR2 SDRAM仍繼續(xù)對(duì)BANK0中第一個(gè) Cell的Da所在行的顆粒進(jìn)行讀操作,且外接DDR2 SDRAM針對(duì)BANK1 中第 一個(gè)Cell的Db所在行的包含Auto Precharge命令的RD命令進(jìn)行空閑 等待;
在T8時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK2中第一個(gè)Cell的Dc所 在行,向外接DDR2 SDRAM發(fā)送ACT命令,外接DDR2 SDRAM的BANK2 中第 一個(gè)Cell的Dc所在行被激活;且外接DDR2 SDRAM開始通過(guò)總線向 存儲(chǔ)器控制模塊輸出BANKO中第一個(gè)Cell的Da,同時(shí)開始通過(guò)Auto Precharge操作關(guān)閉BANKO中第一個(gè)Cell的Da所在行、并開始對(duì)BANK1 中第一個(gè)Cell的Db所在行的顆粒進(jìn)行讀操作;
在T9時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK2中第一個(gè)Cell的Dc所 在行,向外接DDR2 SDRAM發(fā)送包含Auto Precharge命令的RD命令;同 時(shí),外接DDR2 SDRAM繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出BANKO中第 一個(gè)Cell的Da、并繼續(xù)對(duì)BANK1中第一個(gè)Cell的Db所在行的顆粒進(jìn)行 讀操作;
在T10 T11時(shí)鐘周期,外接繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出 BANKO中第 一個(gè)Cell的Da、外接DDR2 SDRAM仍繼續(xù)對(duì)BANK1中第一 個(gè)Cell的Db所在行的顆粒進(jìn)行讀操作,且外接DDR2 SDRAM針對(duì)BANK2 中第 一個(gè)Cell的Dc所在行的包含Auto Precharge命令的RD命令進(jìn)行空閑 等待;
在T12時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK3中第一個(gè)Cell的Dd所 在行,向外接DDR2 SDRAM發(fā)送ACT命令,外接DDR2 SDRAM的BANK3中第 一個(gè)Cell的Dd所在行被激活;且BANKO中第 一個(gè)Cell的Da已輸出 完畢,外接DDR2 SDRAM開始通過(guò)總線向存儲(chǔ)器控制模塊輸出BANK1中 第一個(gè)Cell的Db,同時(shí)開始通過(guò)Auto Precharge操作關(guān)閉BANK1中第一 個(gè)Cell的Db所在行、并開始對(duì)BANK2中第一個(gè)Cell的Dc所在行的顆粒 進(jìn)行讀操作;
在T13時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK3中第一個(gè)Cell的Dd所 在行,向外接DDR2 SDRAM發(fā)送包含Auto Precharge命令的RD命令;同 時(shí),外接DDR2 SDRAM繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出BANK1中第 一個(gè)Cell的Db、并繼續(xù)對(duì)BANK2中第一個(gè)Cell的Dc所在行的顆粒進(jìn)行 讀操作;
在T14 T15時(shí)鐘周期,外接繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出 BANK1中第 一個(gè)Cell的Db、外接DDR2 SDRAM仍繼續(xù)對(duì)BANK2中第一 個(gè)Cell的Dc所在4亍的顆粒進(jìn)行讀才喿作,且外接DDR2 SDRAM針對(duì)BANK3 中第 一個(gè)Cell的Dd所在行的包含Auto Precharge命令的RD命令進(jìn)行空閑 等待;
在T16時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANKO中第二個(gè)Cell的Da所 在行,向外接DDR2 SDRAM發(fā)送ACT命令,外接DDR2 SDRAM的BANKO 中第二個(gè)Cell的Da所在行被激活(區(qū)別于TO時(shí)鐘周期內(nèi)激活的第 一個(gè)Cell 的Da所在行);且BANK1中第一個(gè)Cell的Db已輸出完畢,外接DDR2 SDRAM開始通過(guò)總線向存儲(chǔ)器控制模塊輸出BANK2中第一個(gè)Cell的Dc, 同時(shí)開始通過(guò)Auto Precharge操作關(guān)閉BANK1中第 一個(gè)Cell的Db所在行、 并開始對(duì)BANK3中第一個(gè)Cell的Dd所在行的顆粒進(jìn)行讀操作;
在T17時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANKO中第二個(gè)Cell的Da所 在行,向外接DDR2 SDRAM發(fā)送包含Auto Precharge命令的RD命令;同 時(shí),外接DDR2 SDRAM繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出BANK2中第 一個(gè)Cell的Dc、并繼續(xù)對(duì)BANK3中第一個(gè)Cell的Dd所在行的顆粒進(jìn)行 讀操作;在T18-T19時(shí)鐘周期,外接繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出 BANK2中第 一個(gè)Cell的Dc、外接DDR2 SDRAM仍繼續(xù)對(duì)BANK3中第一 個(gè)Cell的Dd所在行的顆粒進(jìn)行讀操作,且外接DDR2 SDRAM針對(duì)BANK0 中第二個(gè)Cell的Da所在行的包含Auto Precharge命令的RD命令進(jìn)行空閑 等待;
在T20時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK1中第二個(gè)Cell的Db所 在行,向外接DDR2 SDRAM發(fā)送ACT命令,外接DDR2 SDRAM的BANK1 中第二個(gè)Cell的Db所在行被激活(區(qū)別于T4時(shí)鐘周期內(nèi)激活的第 一個(gè)Cell 的Db所在行);且BANK2中第一個(gè)Cell的Dc已輸出完畢,外接DDR2 SDRAM開始通過(guò)總線向存儲(chǔ)器控制模塊輸出BANK3中第一個(gè)Cell的Dd, 同時(shí)開始通過(guò)Auto Precharge操作關(guān)閉BANK2中第 一個(gè)Cell的Dc所在行、 并開始對(duì)BANKO中第二個(gè)Cell的Da所在行的顆粒進(jìn)行讀操作;
在T21時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK1中第二個(gè)Cell的Db所 在行,向外接DDR2 SDRAM發(fā)送包含Auto Precharge命令的RD命令;同 時(shí),外接DDR2 SDRAM繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出BANK3中第 一個(gè)Cell的Dd、并繼續(xù)對(duì)BANKO中第二個(gè)Cell的Da所在行的顆粒進(jìn)行 讀操作;
在T22 T23時(shí)鐘周期,外接繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出 BANK3中第一個(gè)Cell的Dd、外接DDR2 SDRAM仍繼續(xù)對(duì)BANKO中第二 個(gè)Cell的Da所在行的顆粒進(jìn)行讀操作,且外接DDR2 SDRAM針對(duì)BANK1 中第二個(gè)Cell的Db所在行的包含Auto Precharge命令的RD命令進(jìn)行空閑 等待;
在T24時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK2中第二個(gè)Cell的Dc所 在行,向外接DDR2 SDRAM發(fā)送ACT命令,外接DDR2 SDRAM的BANK2 中第二個(gè)Cell的Dc所在行被激活(區(qū)別于T8時(shí)鐘周期內(nèi)激活的第 一個(gè)Cell 的Dc所在行);且BANK3中第一個(gè)Cell的Dd已輸出完畢,外接DDR2 SDRAM開始通過(guò)總線向存儲(chǔ)器控制模塊輸出BANKO中第二個(gè)Cell的Da,同時(shí)開始通過(guò)Auto Precharge操作關(guān)閉BANK3中第 一個(gè)Cell的Dd所在行、 并開始對(duì)BANK1中第二個(gè)Cell的Db所在行的顆粒進(jìn)行讀操作;
在T25時(shí)鐘周期,存儲(chǔ)器控制模塊針對(duì)BANK2中第二個(gè)Cell的Dc所 在行,向外接DDR2 SDRAM發(fā)送包含Auto Precharge命令的RD命令;同 時(shí),外接DDR2 SDRAM繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出BANK0中第 二個(gè)Cell的Da、并繼續(xù)對(duì)BANK1中第二個(gè)Cell的Db所在行的顆粒進(jìn)行 讀操作;
在T26 T27時(shí)鐘周期,外接繼續(xù)通過(guò)總線向存儲(chǔ)器控制模塊輸出 BANKO中第二個(gè)Cell的Da、外接DDR2 SDRAM仍繼續(xù)對(duì)BANK1中第二 個(gè)Cell的Db所在行的顆粒進(jìn)行讀4喿作,且外接DDR2 SDRAM針對(duì)BANK2 中第二個(gè)Cell的Dc所在行的包含Auto Precharge命令的RD命令進(jìn)行空閑 等待;
此后,按照T12 T19相同的原理繼續(xù)執(zhí)行即可完成第二個(gè)Cell中所有 部分的輸出。
通過(guò)上述實(shí)例可見,只要保證前述預(yù)設(shè)間隔的長(zhǎng)度,即存儲(chǔ)器控制模塊 針對(duì)每個(gè)Cell各部分所在BANK《亍向外接DDR2 SDRAM順序發(fā)送ACT命 令之間的間隔長(zhǎng)度、發(fā)送包含Auto Precharge命令的WR命令之間的間隔長(zhǎng) 度,小于等于外接DDR2 SDRAM總線傳輸一行數(shù)據(jù)所占用的時(shí)鐘周期長(zhǎng)度, 即可消除從外接DDR2 SDRAM讀出同一 Cell、以及不同Cell的各部分之間 的總線等待時(shí)間,寫入連續(xù)的Cell時(shí)同理。
而且,在上述實(shí)例中,可利用40個(gè)時(shí)鐘周期完成對(duì)兩個(gè)Cell的連續(xù)讀 取,在這40個(gè)時(shí)鐘周期內(nèi),外接DDR2 SDRAM的總線只有T0 T7這8個(gè) 時(shí)鐘周期處于空閑,總線利用率達(dá)到了 80% ,從而提高了數(shù)據(jù)報(bào)文的存儲(chǔ) 轉(zhuǎn)發(fā)效率。而且,即便連續(xù)讀取的Cell數(shù)量增加,外接DDR2 SDRAM的總 線也仍會(huì)只有8個(gè)時(shí)鐘周期空閑J人而可隨著連續(xù)讀取的Celltt量增加而進(jìn) 一步提高總線利用率,進(jìn)而進(jìn)一步提高了數(shù)據(jù)報(bào)文的存儲(chǔ)轉(zhuǎn)發(fā)效率。
然而,實(shí)際應(yīng)用中,由于數(shù)據(jù)報(bào)文存儲(chǔ)后需要轉(zhuǎn)發(fā),因而外接DDR2SDRAM實(shí)際上可看作是寫入和讀出比例1: 1的FIFO,那么除了連續(xù)讀和 連續(xù)寫之外,也就一定會(huì)存在讀寫切換的情況。對(duì)于讀寫之間切換的情況, 存儲(chǔ)器控制模塊在向外接DDR2 SDRAM順序發(fā)送ACT命令和包含Auto Precharge命令的RD命令后,等待前述預(yù)設(shè)間隔、或4壬意數(shù)量的時(shí)鐘周期后, 即發(fā)送ACT命令(如果是對(duì)之前的RD命令對(duì)應(yīng)的行進(jìn)行寫操作則無(wú)需再 發(fā)送ACT命令)和包含Auto Precharge命令的WR。
而通常情況下,由于DDR2 SDRAM本身的特性而會(huì)導(dǎo)致讀顆粒切換至 寫顆粒、以及寫顆粒切換至讀顆粒之間,均存在預(yù)定數(shù)量的空閑時(shí)鐘周期。
參見圖9a,在同一BANK的同一行內(nèi)先讀出凄t才居Dout,然后再寫入數(shù) 據(jù)Din,但即便WR在RD之后按照預(yù)設(shè)間隔提前發(fā)送,但外接DDR2 SDRAM 在總線輸出完畢Dout后,仍等待一個(gè)時(shí)鐘周期T8,才開始通過(guò)總線接收寫 入數(shù)據(jù)Din。在相同或不同BANK的不同行內(nèi)先讀出數(shù)據(jù)Dout、再寫入數(shù) 據(jù)Din也是同理。
參見圖9b,在同一 BANK的同一行內(nèi)先寫入凄t據(jù)Din,然后再讀出數(shù) 據(jù)Dout,但無(wú)論RD命令是否提前發(fā)送,外接DDR2 SDRAM在總線輸入 Din完畢后,必須等待T4 T8這5個(gè)時(shí)鐘周期,才能夠開始通過(guò)總線輸出 Dout。
上述圖9a和圖9b僅僅是以一種型號(hào)的DDR2 SDRAM為例,實(shí)際應(yīng)用 中,不同型號(hào)的DDR2 SDRAM在讀顆粒切換至寫顆粒、以及寫顆粒切換至 讀顆粒之間的空閑時(shí)鐘周期數(shù)量也有可能不同。
但是,即便有讀顆粒切換至寫顆粒、以及寫顆粒切換至讀顆粒之間的空 閑時(shí)鐘周期存在,本實(shí)施例中的方案相比于現(xiàn)有方案,仍然是提高了外接 DDR2 SDRAM的總線利用率。
對(duì)于寫一個(gè)Cell與讀一個(gè)Cell交替執(zhí)行的最壞情況,總線利用率可參 見^口下/>式
甜S—_歸e — C丄夂+ Re W — C£K_
£/yi,—『n化C丄尺+『n化to Read C丄AT + ReaJ C丄尺+ Read to『nfe C丄AT
29其中,為總線利用率、『〃化-CZ尺為寫一個(gè)Cell所需的時(shí)鐘周 期數(shù)、)^&_"_116"6/_0^為寫切換至讀占用的空閑時(shí)鐘周期數(shù)、He"" —CX《
為讀一個(gè)Cell所需的時(shí)鐘周期數(shù)、Re"" ——『"e-"尺為讀切換至寫所占用 的空閑時(shí)鐘周期數(shù)。
當(dāng)『nYe —CLS:和Reac/_0^為16 、 ffnYe —to_ReW —CL尺為 1 、 Rea(to —?dú)we — d為5時(shí)
= ~16 + 16~ = 84.21 % 鎖,"16 + 5 + 16 + 1
如果此時(shí)外接DDR2 SDRAM的總線速率為266MHz時(shí),總線的有效帶 寬為266 x 64 x 2 x 84.21% = 28.67Gbps,足夠滿足用于存取數(shù)據(jù)報(bào)文的 10Gbit (包括10Gbit讀數(shù)據(jù)和10Gbit寫數(shù)據(jù))能力。
當(dāng)然,上述公式中并未考慮在第一次讀或?qū)憰r(shí)如圖8中T0 T7時(shí)鐘周 期所示的等待時(shí)間,^f旦對(duì)于大量Cdl的連續(xù)讀寫來(lái)"^兌,該等待時(shí)間可以只出 現(xiàn)一次,因而可忽略不計(jì)。
以上是對(duì)本實(shí)施例中數(shù)據(jù)報(bào)文存取控制裝置的詳細(xì)說(shuō)明。下面,再針對(duì) 本實(shí)施例中數(shù)據(jù)報(bào)文存儲(chǔ)控制方法進(jìn)行說(shuō)明。
本實(shí)施例中的數(shù)據(jù)報(bào)文存取控制方法可基于與數(shù)據(jù)報(bào)文存取控制裝置 相同的原理,由硬件計(jì)算機(jī)程序、或軟硬結(jié)合的計(jì)算才幾程序來(lái)實(shí)現(xiàn),并應(yīng)用 于ASIC或FPGA芯片中。
本實(shí)施例中的數(shù)據(jù)報(bào)文存取控制方法可將ASIC或FPGA芯片接收的數(shù) 據(jù)報(bào)文寫入至外接隨機(jī)存儲(chǔ)器,還可從外接隨機(jī)存儲(chǔ)器中請(qǐng)求讀取數(shù)據(jù)報(bào)文 至ASIC或FPGA芯片、并從ASIC或FPGA芯片發(fā)出。
具體說(shuō),本實(shí)施例中的數(shù)據(jù)報(bào)文存取控制方法需要在ASIC或FPGA芯 片內(nèi)設(shè)置若干入方向隊(duì)列、及對(duì)應(yīng)的若干出方向隊(duì)列,還需要在ASIC或 FPGA芯片內(nèi)設(shè)置可在片內(nèi)傳輸數(shù)據(jù)報(bào)文的透?jìng)鱂IFO。
且,該數(shù)據(jù)報(bào)文存取控制方法包括為了對(duì)ASIC或FPGA芯片接收自外部的數(shù)據(jù)報(bào)文實(shí)現(xiàn)存儲(chǔ),在有入方 向隊(duì)列非空時(shí),先判斷外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列中是否已存有 數(shù)據(jù)報(bào)文,
如果外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列中已存有數(shù)據(jù)報(bào)文、且非滿, 則表示該入方向隊(duì)列所對(duì)應(yīng)的凈艮文流中已有數(shù)據(jù)才艮文存放至對(duì)應(yīng)外部隊(duì)列、 且該對(duì)應(yīng)外部隊(duì)列能夠繼續(xù)存入數(shù)據(jù)報(bào)文,因而為了保證該入方向隊(duì)列所對(duì) 應(yīng)的報(bào)文流中各數(shù)據(jù)報(bào)文間的順序不變,將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供 給存儲(chǔ)器控制模塊,以使中的數(shù)據(jù)報(bào)文經(jīng)外接DDR2 SDRAM數(shù)據(jù)總線所在 的片外二級(jí)緩存路徑傳輸;
如果外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列中沒(méi)有數(shù)據(jù)報(bào)文,再判斷 Bypass FIFO及對(duì)應(yīng)出方向隊(duì)列是否均非滿;
如果外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列為空時(shí)、透?jìng)鱂IFO及對(duì)應(yīng) 出方向隊(duì)列均非滿,則表示該入方向隊(duì)列所對(duì)應(yīng)的報(bào)文流中沒(méi)有數(shù)據(jù)報(bào)文存 放至對(duì)應(yīng)外部隊(duì)列、且能夠通過(guò)透?jìng)鱂IFO傳遞數(shù)據(jù)才艮文至對(duì)應(yīng)出方向隊(duì)列, 因而將該入方向隊(duì)列中的數(shù)據(jù)才艮文寫入至透?jìng)鱂IFO,以使該入方向隊(duì)列中 的數(shù)據(jù)報(bào)文經(jīng)透?jìng)鱂IFO所在的片內(nèi) 一級(jí)緩存路徑傳輸;
如果外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列為空時(shí)、片內(nèi)或?qū)?yīng)出方向 隊(duì)列將滿或已滿,則由于外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列為空,因而 將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊,以使該入方向隊(duì)列中 的數(shù)據(jù)報(bào)文可經(jīng)外接DDR2 SDRAM總線所在的片外二級(jí)緩存路徑傳輸;
否則,外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列雖有數(shù)據(jù)報(bào)文、但該外部 隊(duì)列已滿,暫不針對(duì)該入方向隊(duì)列進(jìn)行讀寫操作。
為了對(duì)存儲(chǔ)的數(shù)據(jù)報(bào)文實(shí)現(xiàn)轉(zhuǎn)發(fā),在透?jìng)鱂IFO非空時(shí),從透?jìng)鱂IFO 讀取^t據(jù)才艮文并存》i:至對(duì)應(yīng)出方向隊(duì)列;在透?jìng)鱂IFO為空時(shí),如果有出方 向隊(duì)列非滿、且外接DDR2 SDRAM中對(duì)應(yīng)外部隊(duì)列非空,則從外接DDR2 SDRAM內(nèi)的對(duì)應(yīng)外部隊(duì)列中讀取應(yīng)存i文至該出方向隊(duì)列;否則,Bypass FIFO為空、且對(duì)應(yīng)外部隊(duì)列Qi中沒(méi)有數(shù)據(jù)報(bào)文,因而暫不針對(duì)該出方向隊(duì)列進(jìn)行讀寫操作。
參見圖10a,為了對(duì)ASIC或FPGA芯片接收自外部的數(shù)據(jù)報(bào)文實(shí)現(xiàn)存 儲(chǔ)的具體流程可以包括
步驟1001a,輪尋下一個(gè)入方向隊(duì)列。
步驟1002a,依據(jù)當(dāng)前輪尋到的入方向隊(duì)列產(chǎn)生的表示該入方向隊(duì)列空 滿狀態(tài)的狀態(tài)信號(hào),判斷該入方向隊(duì)列是否非空,如果是,則執(zhí)行步驟1003a, 否則返回步驟1001a繼續(xù)輪尋。
步驟1003a,判斷外接DDR2 SDRAM中的對(duì)應(yīng)外部隊(duì)列是否有數(shù)據(jù)報(bào) 文,如果有數(shù)據(jù)報(bào)文,則執(zhí)行步驟1004a,否則執(zhí)行步驟1006a。
本實(shí)施例中還可進(jìn)一步設(shè)置一外部存儲(chǔ)器寫指針列表和一外部存儲(chǔ)器 讀指針列表,本步驟可按照現(xiàn)有方式,依據(jù)外部存儲(chǔ)器寫指針列表和外部存 儲(chǔ)器讀指針列表判斷外接DDR2 SDRAM中對(duì)應(yīng)外部隊(duì)列是否非空。
步驟1004a,判斷外接DDR2 SDRAM中對(duì)應(yīng)外部隊(duì)列是否非滿,如果 非滿,則執(zhí)行步驟1005,否則返回步驟1001繼續(xù)4侖尋。
本步驟中,可以依據(jù)外部存儲(chǔ)器寫指針列表和外部存儲(chǔ)器讀指針列表判 斷外接DDR2 SDRAM中對(duì)應(yīng)外部隊(duì)列是否非滿。
步驟1005a,將當(dāng)前輪尋到的入方向隊(duì)列中的數(shù)據(jù)報(bào)文添加對(duì)應(yīng)標(biāo)識(shí)后、 存放至外接隨機(jī)存儲(chǔ)器內(nèi)的對(duì)應(yīng)外部隊(duì)列中,然后返回步驟1001a繼續(xù)輪尋。
本步驟中,可以將當(dāng)前輪尋到的非空入方向隊(duì)列中待存放至外接DDR2 SDRAM內(nèi)對(duì)應(yīng)外部隊(duì)列的數(shù)據(jù)報(bào)文,先存放至預(yù)先在ASIC或FPGA芯片 內(nèi)設(shè)置的寫數(shù)據(jù)輸出隊(duì)列,同時(shí)將外部存儲(chǔ)器寫指針列表中,與該數(shù)據(jù)報(bào)文 所屬入方向隊(duì)列對(duì)應(yīng)的當(dāng)前寫指針存放至預(yù)先在ASIC或FPGA芯片內(nèi)設(shè)置 的寫地址輸出隊(duì)列、并更新該寫指針。然后依據(jù)地址輸出隊(duì)列中的寫地址指 針,依次將寫數(shù)據(jù)輸出隊(duì)列中順序存放的數(shù)據(jù)報(bào)文寫入至外接DDR2 SDRAM內(nèi)對(duì)應(yīng)外部隊(duì)列。
步驟1006a,判斷透?jìng)鱂IFO是否非滿、且對(duì)應(yīng)出方向隊(duì)列非滿,如果 是,則執(zhí)行步驟1007a,否則跳轉(zhuǎn)至步驟1004a。步驟1007a,透?jìng)鱂IFO非滿、可以存入數(shù)據(jù)報(bào)文,且對(duì)應(yīng)出方向隊(duì)列 非滿、不會(huì)出現(xiàn)數(shù)據(jù)報(bào)文無(wú)法存入對(duì)應(yīng)出方向隊(duì)列而丟包的情況,因而將該 入方向隊(duì)列中的數(shù)據(jù)才艮文添加對(duì)應(yīng)標(biāo)識(shí)后寫入至透?jìng)鱂IFO,并返回步驟 腦la。
至此,上述流程結(jié)束。
參見圖10b,為了對(duì)對(duì)存儲(chǔ)的數(shù)據(jù)報(bào)文實(shí)現(xiàn)轉(zhuǎn)發(fā)的具體流程可以包括
步驟1001b,判斷透?jìng)鱂IFO是否非空,如果是,則執(zhí)行步驟1002b, 否則執(zhí)行步驟1003b。
步驟1002b,從透?jìng)鱂IFO讀取數(shù)據(jù)報(bào)文,并依據(jù)該數(shù)據(jù)報(bào)文攜帶的標(biāo) 識(shí)存》文至對(duì)應(yīng)的出方向隊(duì)列,然后返回步驟lOOlb。
步驟1003b,輪尋下一個(gè)出方向隊(duì)列。
步驟1004b,依據(jù)當(dāng)前輪尋到的出方向隊(duì)列產(chǎn)生的表示該出方向隊(duì)列空 滿狀態(tài)的狀態(tài)信號(hào),判斷該出方向隊(duì)列是否非滿,如果是,則執(zhí)行步驟1005b, 否則返回步驟lOOlb。
步驟1005b,判斷外部隨機(jī)存儲(chǔ)器中對(duì)應(yīng)外部隊(duì)列是否非空,如果是, 則執(zhí)行步驟1006b,否則返回步驟1001b。
本實(shí)施例中還可進(jìn)一步設(shè)置一外部存儲(chǔ)器寫指針列表和一外部存儲(chǔ)器 讀指針列表,本步驟可按照現(xiàn)有方式,依據(jù)外部存儲(chǔ)器寫指針列表和外部存 儲(chǔ)器讀指針列表判斷外部隨機(jī)存儲(chǔ)器中對(duì)應(yīng)外部隊(duì)列是否非滿。
步驟1006b,從外接隨機(jī)存儲(chǔ)器的對(duì)應(yīng)外部隊(duì)列中請(qǐng)求讀取數(shù)據(jù)報(bào)文。
本步驟中,可以先將預(yù)先在ASIC或FPGA芯片內(nèi)設(shè)置的外部存儲(chǔ)器讀 指針列表中,與非滿狀態(tài)出方向隊(duì)列對(duì)應(yīng)的讀指針存放至預(yù)先在ASIC或 FPGA芯片內(nèi)"&置的讀地址輸出隊(duì)列,然后再?gòu)淖x^t據(jù)輸入隊(duì)列中讀取對(duì)應(yīng) 的數(shù)據(jù)報(bào)文、并更新該對(duì)應(yīng)的讀指針。
步驟1007b,依據(jù)讀取到的數(shù)據(jù)報(bào)文攜帶的標(biāo)識(shí)存放至當(dāng)前輪尋到的非 滿出方向隊(duì)列,然后返回步驟1001b。
至此,上述流程結(jié)束。
33如上述圖10a和圖10b所示的流程可見,本實(shí)施例中的數(shù)據(jù)報(bào)文存取控 制方法利用透?jìng)鱂IFO作為小數(shù)據(jù)量的一級(jí)緩存,而外接的RAM則僅用作 大數(shù)據(jù)量的二級(jí)緩存,這樣,由于有部分?jǐn)?shù)據(jù)報(bào)文在片內(nèi)存取、而非所有數(shù) 據(jù)報(bào)文均通過(guò)外接RAM實(shí)現(xiàn)存取,因而減少了外接RAM總線利用率低對(duì) 數(shù)據(jù)報(bào)文的傳輸效率的影響,從而提高數(shù)據(jù)報(bào)文傳輸效率。
此外,在如圖10a所示流程的步驟1006a中,較佳地以Cell為單位向外 部隨機(jī)存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì)列寫入數(shù)據(jù)報(bào)文、同一 Cell的各部分寫入至不 同BANK、每部分位于一個(gè)BANK中的同一行,且存儲(chǔ)器控制模塊以預(yù)設(shè) 間隔順序向每個(gè)Cell各部分所在BANK的一行發(fā)送激活命令和包含預(yù)充電 命令的寫命令、用以消除向外部隨機(jī)存儲(chǔ)器寫入各部分之間的總線等待時(shí) 間;
在如圖10b所示流程的步驟1006b中,較佳地以Cell為單位從外部隨 機(jī)存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì)列中讀取數(shù)據(jù)報(bào)文,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔 順序向每個(gè)Cell各部分所在BANK的一4于發(fā)送激活命令和包含預(yù)充電命令 的讀命令、用以消除從外部隨機(jī)存儲(chǔ)器讀出各部分之間的總線等待時(shí)間。
這樣,即可消除從前述隨機(jī)存儲(chǔ)器讀取每個(gè)Cell各部分之間的等待時(shí) 間,進(jìn)而提高外接RAM總線利用率、進(jìn)一步提高數(shù)據(jù)報(bào)文傳輸效率。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范 圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種數(shù)據(jù)報(bào)文存取控制裝置,其特征在于,包括入方向管理模塊,內(nèi)部設(shè)有若干入方向隊(duì)列;出方向管理模塊,內(nèi)部設(shè)有若干出方向隊(duì)列;存儲(chǔ)器控制模塊,可將任一入方向隊(duì)列的數(shù)據(jù)報(bào)文存放至外部隨機(jī)存儲(chǔ)器內(nèi)的對(duì)應(yīng)外部隊(duì)列中,可從外部隨機(jī)存儲(chǔ)器內(nèi)的對(duì)應(yīng)外部隊(duì)列中讀取應(yīng)存放至任一出方向隊(duì)列的數(shù)據(jù)報(bào)文;透?jìng)鱂IFO,可將任一入方向隊(duì)列中的數(shù)據(jù)報(bào)文緩存后向?qū)?yīng)出方向隊(duì)列傳遞;入方向控制模塊,在有入方向隊(duì)列非空時(shí),如果對(duì)應(yīng)外部隊(duì)列中有數(shù)據(jù)報(bào)文、且非滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊;如果對(duì)應(yīng)外部隊(duì)列為空、且透?jìng)鱂IFO和對(duì)應(yīng)出方向隊(duì)列均非滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文寫入至透?jìng)鱂IFO;如果透?jìng)鱂IFO或?qū)?yīng)出方向隊(duì)列將滿或已滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊;否則,暫不針對(duì)該入方向隊(duì)列進(jìn)行讀寫操作;出方向控制模塊,在透?jìng)鱂IFO非空時(shí),從透?jìng)鱂IFO讀取數(shù)據(jù)報(bào)文并存放至對(duì)應(yīng)出方向隊(duì)列;在透?jìng)鱂IFO為空時(shí),如果有出方向隊(duì)列非滿、且外部隨機(jī)存儲(chǔ)器中對(duì)應(yīng)外部隊(duì)列非空,則向存儲(chǔ)器控制模塊請(qǐng)求從外部存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì)列讀取數(shù)據(jù)報(bào)文、并存放至該出方向隊(duì)列;否則,暫不針對(duì)該非滿出方向隊(duì)列進(jìn)行讀寫操作。
2、 如權(quán)利要求1所述的數(shù)據(jù)報(bào)文存取控制裝置,其特征在于, 入方向管理模塊中進(jìn)一步設(shè)有多路輸入、 一路輸出的入方向選擇器,入方向選擇器的每一路輸入連接一個(gè)入方向隊(duì)列、 一路輸出連接至入方向控制 模塊;入方向控制模塊進(jìn)一步向入方向選擇器的控制端輸出一入方向輪尋控 制信號(hào),用于以輪尋方式控制入方向選擇器連接入方向隊(duì)列的每一路輸入依次與入方向選擇器的一路輸出導(dǎo)通;出方向管理模塊中進(jìn)一步設(shè)有一路輸入、多路輸出的出方向選擇器,出 方向選擇器的每一路輸出連接一個(gè)出方向隊(duì)列、 一路輸入連接自出方向控制 模塊;出方向控制模塊進(jìn)一步向出方向選擇器的控制端輸出一出方向輪尋控 制信號(hào),用于以輪尋方式控制出方向選擇器連接出方向隊(duì)列的每一路輸出與 出方向選擇器的 一路輸入導(dǎo)通。
3、 如權(quán)利要求1所述的數(shù)據(jù)報(bào)文存取控制裝置,其特征在于, 每一入方向隊(duì)列進(jìn)一步向入方向控制模塊輸出表示該入方向隊(duì)列空滿狀態(tài)的狀態(tài)信號(hào),以供入方向控制模塊判斷是否有入方向隊(duì)列非空;每一 出方向隊(duì)列進(jìn)一步向出方向控制模塊和入方向控制模塊輸出表示 該出方向隊(duì)列空滿狀態(tài)的狀態(tài)信號(hào),以供出方向控制模塊判斷是否有出方向 隊(duì)列非滿、入方向控制模塊判斷對(duì)應(yīng)出方向隊(duì)列是否非滿。
4、 如權(quán)利要求1所述的數(shù)據(jù)報(bào)文存取控制裝置,其特征在于, 入方向控制模塊進(jìn)一步維護(hù)一外部存儲(chǔ)器寫指針列表、并進(jìn)一步通過(guò)一寫數(shù)據(jù)輸出隊(duì)列、以及一寫地址輸出隊(duì)列與存儲(chǔ)器控制模塊相連;入方向控 制模塊將數(shù)據(jù)報(bào)文存放至寫數(shù)據(jù)輸出隊(duì)列,同時(shí)將外部存儲(chǔ)器寫指針列表 中,與該數(shù)據(jù)報(bào)文所屬入方向隊(duì)列對(duì)應(yīng)的當(dāng)前寫指針存放至寫地址輸出隊(duì) 列、并更新該寫指針;出方向控制模塊進(jìn)一步維護(hù)一外部存儲(chǔ)器讀指針列表、并進(jìn)一步通過(guò)一 讀數(shù)據(jù)輸入隊(duì)列、以及一讀地址輸出隊(duì)列與存儲(chǔ)器控制模塊相連;出方向控 制模塊將外部存儲(chǔ)器讀指針列表中,與非滿狀態(tài)出方向隊(duì)列對(duì)應(yīng)的讀指針存 放至讀地址輸出隊(duì)列,然后從讀數(shù)據(jù)輸入隊(duì)列中讀取對(duì)應(yīng)的數(shù)據(jù)報(bào)文、并更 新該7于應(yīng)的讀指4十;且,入方向控制模塊和出方向控制模塊依據(jù)外部存儲(chǔ)器寫指針列表和外 部存儲(chǔ)器讀指針列表,判斷外部隨機(jī)存儲(chǔ)器中的各外部隊(duì)列的空滿狀態(tài)。
5、 如權(quán)利要求1至4中任一項(xiàng)所述的數(shù)據(jù)緩存控制裝置,其特征在于,存儲(chǔ)器控制模塊以信元Cell為單位向外部隨機(jī)存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì) 列寫入數(shù)據(jù)才艮文、同一 Cell的各部分寫入至不同BANK、每部分位于一個(gè) BANK中的同一行,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔順序向每個(gè)Cell各部分 所在BANK的一行發(fā)送激活命令和包含預(yù)充電命令的寫命令、用以消除向 外部隨機(jī)存儲(chǔ)器寫入各部分之間的總線等待時(shí)間;存儲(chǔ)器控制模塊以Cell為單位從外部隨機(jī)存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì)列中 讀取數(shù)據(jù)報(bào)文,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔順序向每個(gè)Cell各部分所在 BANK的一行發(fā)送激活命令和包含預(yù)充電命令的讀命令、用以消除從外部隨 機(jī)存儲(chǔ)器讀出各部分之間的總線等待時(shí)間。
6、 如權(quán)利要求5所述的數(shù)據(jù)緩存控制裝置,其特征在于,一個(gè)Cell小于等于一行的容量與BANK數(shù)量的乘積、且大于等于對(duì)一 個(gè)BANK的讀寫訪問(wèn)時(shí)間與該BANK的預(yù)充電時(shí)間內(nèi)所能夠讀寫的最大彩: 據(jù)量;所述預(yù)設(shè)間隔小于等于一行數(shù)據(jù)占用的外接隨機(jī)存儲(chǔ)器的總線周期長(zhǎng)度。
7、 一種數(shù)據(jù)報(bào)文存取控制方法,該方法可將芯片接收的數(shù)據(jù)報(bào)文寫入 至外接隨機(jī)存儲(chǔ)器,還可從外接隨機(jī)存儲(chǔ)器中請(qǐng)求讀取數(shù)據(jù)報(bào)文至芯片、并 從芯片發(fā)出,其特征在于,在芯片內(nèi)設(shè)置若干入方向隊(duì)列、及對(duì)應(yīng)的若干出 方向隊(duì)列,還在芯片內(nèi)設(shè)置可在片內(nèi)傳輸數(shù)據(jù)報(bào)文的透?jìng)鱂IFO;且,該數(shù)據(jù)報(bào)文存取控制方法包括入方向控制模塊,在有入方向隊(duì)列非空時(shí),如果對(duì)應(yīng)外部隊(duì)列中有數(shù)據(jù) 報(bào)文、且非滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊;如 果對(duì)應(yīng)外部隊(duì)列為空、且透?jìng)鱂IFO和對(duì)應(yīng)出方向隊(duì)列均非滿,則將該入方 向隊(duì)列中的凄t據(jù)l艮文寫入至透?jìng)鱂IFO;如果透?jìng)鱂IFO或?qū)?yīng)出方向隊(duì)列將 滿或已滿,則將該入方向隊(duì)列中的數(shù)據(jù)報(bào)文提供給存儲(chǔ)器控制模塊;否則, 暫針對(duì)該入方向隊(duì)列進(jìn)行讀寫操作;在透?jìng)鱂IFO非空時(shí),從透?jìng)鱂IFO讀取數(shù)據(jù)報(bào)文并存放至對(duì)應(yīng)出方向隊(duì)列;在透?jìng)鱂IFO為空時(shí),如果有出方向隊(duì)列非滿、且外接隨機(jī)存儲(chǔ)器中該出方向隊(duì)列;否則,暫不針對(duì)該非滿出方向隊(duì)列進(jìn)行讀寫操作。
8、 如權(quán)利要求7所述的數(shù)據(jù)報(bào)文存取控制方法法,其特征在于,該數(shù) 據(jù)報(bào)文存取控制方法進(jìn)一步輪尋每一入方向隊(duì)列和每一出方向隊(duì)列。
9、 如權(quán)利要求7所述的數(shù)據(jù)報(bào)文存取控制方法,其特征在于, 每一入方向隊(duì)列進(jìn)一步產(chǎn)生表示該入方向隊(duì)列空滿狀態(tài)的狀態(tài)信號(hào),用以判斷是否有入方向隊(duì)列非空;每一 出方向隊(duì)列進(jìn)一步產(chǎn)生表示該出方向隊(duì)列空滿狀態(tài)的狀態(tài)信號(hào),用 以判斷是否有出方向隊(duì)列非滿。
10、 如權(quán)利要求7所述的數(shù)據(jù)報(bào)文存取控制方法,其特征在于,進(jìn)一步 設(shè)置一外部存儲(chǔ)器寫指針列表和一外部存儲(chǔ)器讀指針列表;該數(shù)據(jù)報(bào)文存取控制方法進(jìn) 一 步將待存放至外接隨機(jī)存儲(chǔ)器內(nèi)對(duì)應(yīng)外 部隊(duì)列的數(shù)據(jù)報(bào)文,存放至預(yù)先在芯片內(nèi)設(shè)置的寫數(shù)據(jù)輸出隊(duì)列,同時(shí)將外 部存儲(chǔ)器寫指針列表中,與該數(shù)據(jù)報(bào)文所屬入方向隊(duì)列對(duì)應(yīng)的當(dāng)前寫指針存放至預(yù)先在芯片內(nèi)設(shè)置的寫地址輸出隊(duì)列、并更新該寫指針;該數(shù)據(jù)報(bào)文存取控制方法還進(jìn)一步將預(yù)先在芯片內(nèi)設(shè)置的外部存儲(chǔ)器讀指針列表中,與非滿狀態(tài)出方向隊(duì)列對(duì)應(yīng)的讀指針存放至預(yù)先在芯片內(nèi)設(shè)置的讀地址輸出隊(duì)列,然后從讀數(shù)據(jù)輸入隊(duì)列中讀取對(duì)應(yīng)的數(shù)據(jù)報(bào)文、并更新該對(duì)應(yīng)的讀指針;且,該數(shù)據(jù)報(bào)文存取控制方法依據(jù)外部存儲(chǔ)器寫指針列表和外部存儲(chǔ)器讀指針列表,判斷外接隨機(jī)存儲(chǔ)器中的各外部隊(duì)列的空滿狀態(tài)。
11、 如權(quán)利要求7至10中任一項(xiàng)所述的數(shù)據(jù)報(bào)文存取控制方法,其特 征在于,該數(shù)據(jù)報(bào)文存取控制方法以信元Cell為單位向外部隨機(jī)存儲(chǔ)器中的對(duì) 應(yīng)外部隊(duì)列寫入^據(jù)報(bào)文、同一 Cell的各部分寫入至不同BANK、每部分 位于一個(gè)BANK中的同一行,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔順序向每個(gè)Cell各部分所在BANK的一行發(fā)送激活命令和包含預(yù)充電命令的寫命令、用以消除向外部隨機(jī)存儲(chǔ)器寫入各部分之間的總線等待時(shí)間;該數(shù)據(jù)報(bào)文存取控制方法還以Cell為單位從外部隨機(jī)存儲(chǔ)器中的對(duì)應(yīng)外部隊(duì)列中讀取數(shù)據(jù)報(bào)文,且存儲(chǔ)器控制模塊以預(yù)設(shè)間隔順序向每個(gè)Cell各部分所在BANK的一行發(fā)送激活命令和包含預(yù)充電命令的讀命令、用以消除從外部隨機(jī)存儲(chǔ)器讀出各部分之間的總線等待時(shí)間。
12、如權(quán)利要求11所述的數(shù)據(jù)緩存控制方法,其特征在于,一個(gè)Cell小于等于一行的容量與BANK數(shù)量的乘積、且大于等于對(duì)一個(gè)BANK的讀寫訪問(wèn)時(shí)間與該BANK的預(yù)充電時(shí)間內(nèi)所能夠讀寫的最大數(shù)據(jù)量;所述預(yù)設(shè)間隔小于等于一行數(shù)據(jù)占用的外接隨機(jī)存儲(chǔ)器的總線周期長(zhǎng)度。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)報(bào)文存取控制裝置和方法。本發(fā)明利用數(shù)據(jù)報(bào)文處理芯片內(nèi)的RAM資源實(shí)現(xiàn)一透?jìng)鱂IFO,該透?jìng)鱂IFO用作小數(shù)據(jù)量的一級(jí)緩存,而數(shù)據(jù)報(bào)文處理芯片外接的RAM則僅用作大數(shù)據(jù)量的二級(jí)緩存,這樣,由于有部分?jǐn)?shù)據(jù)報(bào)文在片內(nèi)存取、而非所有數(shù)據(jù)報(bào)文均通過(guò)外接RAM實(shí)現(xiàn)存取,因而減少了外接RAM總線利用率低對(duì)數(shù)據(jù)報(bào)文的傳輸效率的影響,從而提高數(shù)據(jù)報(bào)文傳輸效率。本發(fā)明還可以BANK交錯(cuò)(Interleave)方式對(duì)外接RAM進(jìn)行數(shù)據(jù)報(bào)文的讀寫操作,從而提高了外接RAM總線利用率、進(jìn)一步提高了數(shù)據(jù)報(bào)文傳輸效率。
文檔編號(hào)H04L12/56GK101621469SQ200910091229
公開日2010年1月6日 申請(qǐng)日期2009年8月13日 優(yōu)先權(quán)日2009年8月13日
發(fā)明者凱 任 申請(qǐng)人:杭州華三通信技術(shù)有限公司