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