基于FPGA和IP Core的定制緩沖管理的實現(xiàn)
PQ List將尾指針n更新為新寫入的地址a,同時更新PRAM中n地址的內(nèi)容,將a作為下一跳添入n地址。基于節(jié)省操作周期,NULL的內(nèi)容保留原值,不再更新。這樣,一次BRAM的寫入操作需要一次PRAM的讀取操作及一次PRAM的寫入操作。
QM模塊接收調(diào)度模塊的出隊信息,將出隊的PQ鏈表信息傳送給BM模塊進行讀取操作。
圖4 BM模塊的寫入操作
圖5 讀出操作的Free List堆棧結構
BM模塊的讀取操作由Read Control模塊發(fā)起完成,當有數(shù)據(jù)單元需要讀出,相應的數(shù)據(jù)單元地址則需要回收進入空閑地址隊列Free List。對于不同的系統(tǒng)需求,空閑地址隊列Free List有不同的形式。比較簡單的操作是將Free List作為堆棧形式使用。
Read Control模塊由PQ List的首地址0讀出相應的BRAM中的內(nèi)容,同時讀出PRAM中對應的下一跳地址1,更新地址1為新的首地址。Free List將首指針a更新為剛釋放的地址0,同時地址0中寫入下一跳指針a。這樣一次BRAM的讀出操作需要一次PRAM的讀取操作及一次PRAM的寫入操作。
作為堆棧形式的空閑地址隊列在實際操作中會把一部分空閑地址隊列放入片內(nèi)緩沖中。這樣在讀BRAM釋放地址進入空閑地址隊列時可以節(jié)省PRAM的一次寫入操作,在寫B(tài)RAM時申請空閑地址時可以節(jié)省PRAM的一拍讀取操作。PRAM堆棧結構下內(nèi)置空閑地址隊列表如圖6所示。
圖6 PRAM堆棧結構下內(nèi)置空閑地址隊列表
評論