基于FPGA和IP Core的定制緩沖管理的實(shí)現
在PRAM中存在兩種鏈表形式,PQ List代表已經(jīng)存儲的數據包鏈表。為方便數據讀出,PQ List需要記錄數據包的第一個(gè)數據塊地址,即首指針Pq_Hptr,為方便新的數據寫(xiě)入,PQ List需要記錄數據包的最后一個(gè)數據塊地址,即尾指針Pq_Tptr。PQ List同時(shí)需要記錄該鏈表的長(cháng)度作為調度模塊進(jìn)行調度的權值計算使用。
Free List代表空閑的地址隊列。為方便地辨識、管理空閑的地址,避免地址沖突,在BM中將所有空閑的地址使用一個(gè)鏈表進(jìn)行管理。這個(gè)鏈表就是空閑地址隊列??臻e地址隊列依據系統需求的不同有著(zhù)不同的形式,一般空閑地址隊列的構成和PQ List相似,由空閑地址首指針Free_Hptr和空閑地址尾指針Free_Tptr構成。BM模塊的所有操作都圍繞著(zhù)空閑的地址隊列Free List進(jìn)行。
基于BM模塊的數據流結構,BM模塊一般分為Write CONtrol模塊、Free List control模塊、Read Control模塊、PRAM Control模塊、BRAM Control模塊。BM的結構如圖3所示。
圖3 BM結構圖
Write Control模塊從Free List模塊處得到空閑地址,向BRAM Control模塊提出寫(xiě)請求,同時(shí)更新PRAM中的內容。Free List control模塊負責管理空閑地址列表,提供Write Control模塊的寫(xiě)BRAM地址及PRAM地址,回收經(jīng)Read Control模塊讀出數據塊后釋放的地址。Read Control模塊根據調度器的調度結果,通過(guò)BRAM Control模塊讀出需要發(fā)送的數據單元,同時(shí)將釋放的緩沖單元地址寫(xiě)入空閑地址列表。PRAM Control模塊為外部SSRAM的控制模塊,可直接使用參考設計完成。BRAM Control模塊為外部DRAM控制模塊,一般分為Datapath與Controler兩個(gè)子模塊。Datapath模塊專(zhuān)門(mén)負責數據接口部分,完成DRAM接口的DQ、DQS處理以及相應的延時(shí)調整,Controler模塊負責完成DRAM的控制需求。
在BM模塊中,BRAM的帶寬與PRAM的帶寬一般為T(mén)M的瓶頸。PRAM的帶寬主要受限于訪(fǎng)問(wèn)的次數,而B(niǎo)RAM的帶寬受限于接口帶寬。例如對于一個(gè)10G的TM,BRAM的有效帶寬必須保證20G,以接口利用率最差只能達到65%計算(考慮SEG模塊切分信元出現的N+1問(wèn)題),需要保證接口帶寬達到30G。使用64位的DRAM接口,接口速率不能低于500MB/s,這樣對Datapath模塊的設計提出了更高的要求。在實(shí)際系統中,BRAM主要使用DDR SDRAM、DDR II SDRAM。
當使用Stratix II FPGA,BRAM使用DDR II SDRAM時(shí),測試表明DDR II SDRAM接口速率可達到800MB/s。在常規使用的情況下,DDR II SDRAM接口速率可保證達到667MB/s。對于一個(gè)64位的DRAM接口,接口速率可達到42.7GB/s,完全可以滿(mǎn)足一個(gè)10G的TM系統。
BM模塊作為緩沖管理模塊,緩沖的基本單元為BCELL,基于對BCELL的管理,對于BM的操作都牽涉到空閑地址隊列的操作以及鏈表的操作。最基本的操作就是寫(xiě)入操作和讀出操作。BM模塊的寫(xiě)入操作由Write Control模塊發(fā)起。
對于Write Control模塊,有數據單元需要寫(xiě)入,首先向Free List模塊申請空閑地址,Free List將首指針a給Write Control模塊,作為該數據塊的寫(xiě)地址,同時(shí)讀出首指針a對應在PRAM中的內容,得到下一跳地址b,將下一跳地址b作為新的空閑地址首指針。
評論