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