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