??? 摘 要: 在IP網(wǎng)絡(luò)中支持QoS是近年來研究的熱點(diǎn),而IDT公司推出的新型存儲(chǔ)器件——多隊(duì)列FIFO能夠支持QoS的應(yīng)用,。因其具有單器件下支持可配置的多" title="的多">的多個(gè)隊(duì)列,并具有可級(jí)聯(lián)" title="級(jí)聯(lián)">級(jí)聯(lián)使用的高度靈活性,該器件在支持?jǐn)?shù)據(jù)區(qū)分緩存和處理中有著良好的應(yīng)用前景。介紹了多隊(duì)列FIFO的主要特點(diǎn),給出了FPGA控制方法及其在路由器中支持QoS調(diào)度的應(yīng)用。
??? 關(guān)鍵詞: 多隊(duì)列FIFO? 子隊(duì)列? FPGA? 數(shù)據(jù)區(qū)分? QoS
?
??? 支持IP網(wǎng)絡(luò)中的QoS(服務(wù)質(zhì)量" title="服務(wù)質(zhì)量">服務(wù)質(zhì)量),除了對(duì)相關(guān)網(wǎng)絡(luò)協(xié)議開發(fā)和完善外,,也需要路由器內(nèi)部能夠?qū)Σ煌愋头纸M或數(shù)據(jù)流提供有區(qū)分的服務(wù)。多隊(duì)列FIFO是IDT公司于2002年率先推出的業(yè)界新型存儲(chǔ)器件,,能夠有效地支持QoS的高速實(shí)現(xiàn),。該芯片是為改善網(wǎng)絡(luò)服務(wù)質(zhì)量和其它需要對(duì)隊(duì)列數(shù)據(jù)重新排序的應(yīng)用而設(shè)計(jì)的,它既支持靈活的數(shù)據(jù)區(qū)分應(yīng)用,,又避免了復(fù)雜的片外控制邏輯,。本文介紹該器件的基本特性和FPGA控制方法,并給出該存儲(chǔ)器在路由器中支持QoS調(diào)度的應(yīng)用,。
1 多隊(duì)列FIFO介紹
??? 該器件配備有嵌入式FIFO存儲(chǔ)器核心和高速隊(duì)列邏輯,,具有很高的數(shù)據(jù)傳輸帶寬和靈活的可配置性。該器件單芯片最高支持7.2Gbps持續(xù)傳輸速率和最多支持32個(gè)子隊(duì)列,,器件級(jí)聯(lián)最多支持256個(gè)子隊(duì)列,。只需一個(gè)FIFO即可緩存多種數(shù)據(jù)流,有助于用戶選擇不同的隊(duì)列執(zhí)行獨(dú)立的讀寫功能,。
??? 多隊(duì)列FIFO不僅提供諸如數(shù)據(jù)緩存,、隊(duì)列滿空狀態(tài)指示、寫/讀時(shí)鐘獨(dú)立和寫/讀總線匹配等傳統(tǒng)的FIFO功能,,而且支持整包操作模式(Packet Mode)和數(shù)據(jù)區(qū)分排隊(duì),,從而消除了以前用昂貴復(fù)雜的操作邏輯來實(shí)現(xiàn)類似功能。多隊(duì)列FIFO的示意圖如圖1所示,。
?
??? 由圖能直觀地看出,,多隊(duì)列FIFO是在一個(gè)物理器件內(nèi)提供可區(qū)分的多個(gè)邏輯子隊(duì)列的存儲(chǔ)器??蓞^(qū)分是指各子隊(duì)列可以獨(dú)立寫/讀,,且各子隊(duì)列有獨(dú)立的狀態(tài)指示。
2 多隊(duì)列FIFO的FPGA控制
??? FPGA對(duì)多隊(duì)列FIFO的控制體現(xiàn)在三個(gè)方面:配置,、寫操作和讀操作,,如圖2所示,。
?
2.1 多隊(duì)列FIFO的配置
??? 新款I(lǐng)DT多隊(duì)列流量控制器件向系統(tǒng)設(shè)計(jì)人員提供了最新的解決方案,,使得僅用一個(gè)高度集成器件就能夠進(jìn)行可選擇的多個(gè)可區(qū)分的順序數(shù)據(jù)存取操作。這一靈活的功能可由一系列器件設(shè)置選項(xiàng)來實(shí)現(xiàn),。與以前的單隊(duì)列FIFO器件(如IDT 3690)不同的是,,多隊(duì)列FIFO有相對(duì)復(fù)雜的可配置性,除寫/讀端口總線寬度可由芯片管腳直接設(shè)定外,,還有相應(yīng)的兩種配置方式:默認(rèn)配置和串行配置,,其中串行配置又稱用戶自定義配置,,是一種新的器件特性。
??? 多隊(duì)列FIFO的可配置項(xiàng)有:(a)器件內(nèi)邏輯子隊(duì)列數(shù)量,;(b)各子隊(duì)列的存儲(chǔ)深度,;(c)各子隊(duì)列的PAF(幾乎滿)偏移值;(d)各子隊(duì)列的PAE(幾乎空)偏移值(普通模式下有效,,整包模式下轉(zhuǎn)變?yōu)檎甘綪R),。
?? 默認(rèn)配置與串行配置的區(qū)別如表1所示。
?
??? 用戶對(duì)多隊(duì)列FIFO的配置有很大的靈活性,。舉例來說,,IDT72V51336~I(xiàn)DT72V51356可以配置成1~8個(gè)隊(duì)列,每個(gè)隊(duì)列的深度設(shè)定都是相互獨(dú)立的,。標(biāo)志位是用戶可編程的,且各子隊(duì)列獨(dú)立,。配置可通過專門的串行編程口進(jìn)行,如果不需要對(duì)器件編程也可以用默認(rèn)模式,。
??? 串行配置是指配置多隊(duì)列FIFO的數(shù)據(jù)是逐比特串行送入器件的,。在多隊(duì)列FIFO器件內(nèi)部有存放配置數(shù)據(jù)的寄存器,這些寄存器以18位為一基本單位,。設(shè)Q為器件配置的子隊(duì)列數(shù),,Qmax為該器件所支持的最大子隊(duì)列數(shù),則器件內(nèi)有(Qmax×4+1)個(gè)寄存器,。單器件配置所需的比特?cái)?shù)據(jù)量Sum為:18+Q×72+1,。最后一比特為配置結(jié)束指示,假如設(shè)計(jì)中Q=8,,則Sum=19+8×72=595比特,。配置數(shù)據(jù)具體設(shè)置依據(jù)可參見IDT文檔AN-303(DSC-5997/2,2003年7月版本),。
??? 與串行配置相關(guān)的信號(hào)如表2所示,。
?
??? 串行配置信號(hào)時(shí)序(單器件)如圖3所示。
?
??? 如果是多器件級(jí)聯(lián)使用,,則器件i的SO和SENO~應(yīng)分別與器件i+1的SI和SENI~相連,,并檢測級(jí)聯(lián)尾器件的SENO~以判斷整個(gè)配置是否結(jié)束。當(dāng)用硬件描述語言編寫串行配置的程序時(shí),,應(yīng)當(dāng)參考如圖4所示的串行配置流程狀態(tài)圖,。
?
??? 圖中的“配置數(shù)據(jù)”既可以存放在FPGA的片內(nèi)RAM中,也可以存放在片外存儲(chǔ)器中,。由于配置數(shù)據(jù)量較小,,推薦選擇存儲(chǔ)在片內(nèi)RAM中,因?yàn)檫@樣能夠省掉與片外存儲(chǔ)器的互連。
2.2 寫操作
??? 多隊(duì)列FIFO使用子隊(duì)列地址Wradd/Rdadd區(qū)分各個(gè)寫/讀子隊(duì)列,,用鎖定有效信號(hào)Waden/Raden的高電平" title="高電平">高電平指定新的寫/讀子隊(duì)列,,寫/讀使能是Wen/Ren。
??? 多隊(duì)列FIFO寫操作相比寫隊(duì)列地址的切換存在延后效應(yīng),,即寫總線上的數(shù)據(jù)送入新的子隊(duì)列是發(fā)生在鎖定新子隊(duì)列地址后的第二個(gè)寫時(shí)鐘周期,。如果能夠利用此時(shí)序特征,提前兩個(gè)周期鎖定新的子隊(duì)列地址,,則可以做到100%使用寫總線周期,。
??? 當(dāng)子隊(duì)列滿指示FF有效時(shí),新的數(shù)據(jù)無法寫入該隊(duì)列,,會(huì)發(fā)生數(shù)據(jù)丟失,。一般為了避免這種情況,都要配置好PAF偏移值,,在看到PAFn~拉低有效后,,停止寫入操作。圖5給出不間斷寫操作時(shí)序圖,。
?
2.3 讀操作
??? 與寫操作類似的讀操作也存在相對(duì)讀隊(duì)列地址的延后效應(yīng),,即在新隊(duì)列地址鎖定后的第三個(gè)讀時(shí)鐘周期,讀總線上呈現(xiàn)的數(shù)據(jù)轉(zhuǎn)變?yōu)樾伦雨?duì)列內(nèi)的數(shù)據(jù),。所以若能夠提前三個(gè)周期鎖定新隊(duì)列,,則可以做到100%讀總線利用率。
??? 當(dāng)選定隊(duì)列狀態(tài)為空時(shí),,讀端口上呈現(xiàn)全高電平,。配置好PAE偏移值后,通過查看PAEn~便可以得知隊(duì)列的空或非空狀態(tài),,并提前做好讀或切換新隊(duì)列的動(dòng)作,。圖6給出不間斷讀操作時(shí)序圖。
?
3 多隊(duì)列FIFO的應(yīng)用
??? 多隊(duì)列FIFO可滿足設(shè)備實(shí)現(xiàn)服務(wù)質(zhì)量,、信息包" title="信息包">信息包優(yōu)先級(jí)和多數(shù)據(jù)流匯集/分開的要求,。例如,根據(jù)信息包客戶定制優(yōu)先次序,,進(jìn)入系統(tǒng)的數(shù)據(jù)可被分配到多個(gè)隊(duì)列之一,,每個(gè)隊(duì)列都代表不同的服務(wù)等級(jí)。處理器根據(jù)一定的運(yùn)算法則首先處理優(yōu)先級(jí)高的信息包,,以確保整個(gè)網(wǎng)絡(luò)的服務(wù)水平,。筆者就使用了多隊(duì)列FIFO在骨干路由器交換網(wǎng)絡(luò)中實(shí)現(xiàn)了多優(yōu)先級(jí)調(diào)度,具體例子如圖7所示,。
?
??? 劃分服務(wù)等級(jí)通常依據(jù)分組的類型,,對(duì)延遲敏感型分組給予高優(yōu)先級(jí)。區(qū)別于傳統(tǒng)的先到先服務(wù)(FCFS),,有區(qū)分的服務(wù)可以提供一定的網(wǎng)絡(luò)服務(wù)質(zhì)量,,圖8是一個(gè)具體的例子。如果不應(yīng)用多隊(duì)列FIFO,,勢必要使用SRAM模擬多隊(duì)列,,不得不增加許多復(fù)雜的控制邏輯,消耗處理器的資源,;或者是采用多個(gè)獨(dú)立的存儲(chǔ)器件對(duì)不同類型分組進(jìn)行排隊(duì),,既增加了實(shí)際制板(PCB)的難度,而且可擴(kuò)展性差,。
?
??? 另外,,在不斷電連續(xù)運(yùn)行的情況下,F(xiàn)PGA可控制在不同時(shí)段改變多隊(duì)列FIFO配置,,以適應(yīng)不同的應(yīng)用需要,。比如,要適配不同類型數(shù)據(jù),,暫存時(shí)可將其串行配置成相應(yīng)多個(gè)子隊(duì)列,;而只做同一類型數(shù)據(jù)緩存時(shí)可以將其配置成單隊(duì)列使用。故多隊(duì)列FIFO應(yīng)用靈活性高,,前景好,。
參考文獻(xiàn)
1 IDT APPLICATION NOTE:AN-303,AN-349,AN-338. IDT,, 2003-07
2 Grenville Armitage. Quality of Service in IP Networks. Foundations for a Multi_Service Internet?Copyright 2000 by Luncent Technologies
3 潘 松,,黃繼業(yè).EDA技術(shù)實(shí)用教程.北京:科學(xué)出版社, 2002
4 侯伯亨,顧 新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì).西安:西安電子科技大學(xué)出版社,,1999