星載交換機高性能隊列管理器的設(shè)計與實現(xiàn)
當(dāng)系統(tǒng)復(fù)位后,隊列管理器對地址空間進(jìn)行初始化,將可用的地址指針寫入到地址空間。信元存儲空間分為兩部分,一部分為共享存儲空間,另一部分為K個針對每個端口固定分配的信元空間,以確保每個端口都有可用的存儲空間。當(dāng)一個信元到達(dá)時,如果固定分配的空間和共享空間剩余容量之和不能滿足該信元時,則拒絕該信元。隊列管理器只需要知道到達(dá)信元的輸出端口和優(yōu)先級,就可以確定其進(jìn)入哪個邏輯隊列。信元的寫入和讀出采用狀態(tài)機進(jìn)行控制。
當(dāng)有新的信元(n,k)到達(dá)時,其中n為優(yōu)先級,1≤n≤N;k為輸出端口,1≤k≤K。信元寫入控制流程如圖4所示。最后根據(jù)wr_addr,將信元寫入緩沖區(qū)。如果發(fā)生隊列擠占,則被擠占的邏輯隊列需要被更新,如果僅有一個信元,則header和tailer都被置0;反之,用前一個信元的地址來更新tailer。寫入信元的邏輯隊列需要被更新:如果該邏輯隊列沒有信元,則header和tailer都被置為wr_addr;反之,將tailer的內(nèi)容記錄在pre_addr的第wr_addr個地址中,將wr_addr記錄在nxt_addr的第tailer個地址中,tailer的內(nèi)容被更新為wr_addr。
當(dāng)有信元讀出時,各輸出端口采用輪詢的方式,信元讀出控制流程如圖5所示。讀出信元的邏輯隊列需要被更新:如果僅有一個信元,則header和tailer都被置0;反之,用下一個信元的地址來更新header,tailer不變。
4仿真結(jié)果
本設(shè)計采用XilinxVertex-5FPGA實現(xiàn),開發(fā)環(huán)境是Xilinx集成開發(fā)環(huán)境ISE13.1,電路核心模塊用VerilogHDL編程實現(xiàn),仿真工具采用ModelSimSE。星載交換機有16個輸出端口,信元有4個優(yōu)先級,PFIFOk為256,SFIFO為4096。仿真驗證結(jié)果表明電路功能符合設(shè)計要求。
4.1寄存器讀寫指針時序仿真
由仿真時序圖6可以看出,初始狀態(tài)時,PFIFO0、PFIFO2、…、PFIFO15和SFIFO都為空,隊列管理器將空閑指針依次寫入PFIFO0、PFIFO2、…、PFIFO15中,當(dāng)它們都為滿時,最后寫入SFIFO中。
由仿真時序圖7可以看出,隊列管理器首先從PFIFO0中讀出可用指針,當(dāng)其為空時,就從SFIFO中讀出,然后依次從PFIFO0、PFIFO2、…、PFIFO15中讀出可用指針。當(dāng)它們都為空時,則從SFIFO中讀出,直到no_ptr=1,說明地址空間無可用指針。
4.2信元的讀寫時序仿真
由仿真時序圖8可以看出,隊列管理器根據(jù)信頭中的輸出端口和優(yōu)先級,依次將信元寫入信元存儲器,信元存儲器形成64個邏輯隊列,然后在調(diào)度器的控制下,依次將信元從相應(yīng)的邏輯隊列中讀出。
在衛(wèi)星通信中,業(yè)務(wù)種類繁多且突發(fā)性強,用戶對服務(wù)質(zhì)量(QoS)要求較高,而衛(wèi)星網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)變化快,傳播時延大,這就要求星載交換機具有較小的交換時延和丟包率。本文設(shè)計了一種高性能隊列管理器,通過硬件仿真驗證,其基本能夠滿足星載交換機的各種性能指標(biāo)要求,本隊列管理器采用動態(tài)擴展的設(shè)計方式,靈活度較大,但也存在許多不足之處,如組播信元的處理考慮不足、可能存在隊頭阻塞問題及IP包的管理問題,有可能由于一個信元的丟失導(dǎo)致整個IP包無法接受,這些都是今后進(jìn)一步的研究工作。
交換機相關(guān)文章:交換機工作原理
評論