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