多隊(duì)列FIFO——支持網(wǎng)絡(luò)QoS的重要芯片
摘要:在IP網(wǎng)絡(luò)中支持QoS是近年來(lái)研究的熱點(diǎn),而IDT公司推出的新型存儲(chǔ)器件——多隊(duì)列FIFO能夠支持QoS的應(yīng)用。因其具有單器件下支持可配置的多個(gè)隊(duì)列,并具有可級(jí)聯(lián)使用的高度靈活性,該器件在支持?jǐn)?shù)據(jù)區(qū)分緩存和處理中有著良好的應(yīng)用前景。介紹了多隊(duì)列團(tuán)FIFO的主要特點(diǎn),給出了FPGA控制方法及其在路由器中支持QoS調(diào)度的應(yīng)用。
本文引用地址:http://www.ex-cimer.com/article/201710/368687.htm支持IP網(wǎng)絡(luò)中的QoS(服務(wù)質(zhì)量),除了對(duì)相關(guān)網(wǎng)絡(luò)協(xié)議開(kāi)發(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ù)雜的操作邏輯來(lái)實(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)來(lái)實(shí)現(xiàn)。與以前的單隊(duì)列FIFO器件(如IDT 3690)不同的是,多隊(duì)列FIFO有相對(duì)復(fù)雜的可配置性,除寫/讀端口總線寬度可由芯片管腳直接設(shè)定外,還有相應(yīng)的兩種配置方式:默認(rèn)配置和串行配置,其中串行配置又稱用戶自定義配置,是一種新的器件特性。
圖3
多隊(duì)列FIFO的可配置項(xiàng)有:(a)器件內(nèi)邏輯子隊(duì)列數(shù)量;(b)各子隊(duì)列的存儲(chǔ)深度;(c)各子隊(duì)列的PAF(幾乎滿)偏移值;(d)各子隊(duì)列的PAE(幾乎空)偏移值(普通模式下有效,整包模式下轉(zhuǎn)變?yōu)檎甘綪R)。
用戶對(duì)多隊(duì)列FIFO的配置有很大的靈活性。舉例來(lái)說(shuō),IDT72V51336~IDT72V51356可以配置成1~8個(gè)隊(duì)列,每個(gè)隊(duì)列的深度設(shè)定都是相互獨(dú)立的。標(biāo)志位是用戶可編程的,且各子隊(duì)列獨(dú)立。配置可通過(guò)專門的串行編程口進(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&TImes;4+1)個(gè)寄存器。單器件配置所需的比特?cái)?shù)據(jù)量Sum為:18+Qx72+1。最后一比特為配置結(jié)束指示,假如設(shè)計(jì)中Q=8,則Sum=19+8x72=595比特。配置數(shù)據(jù)具體設(shè)置依據(jù)可參見(jiàn)IDT文檔AN-303(DSC-5997/2,2003年7月版本)。
串行配置信號(hào)時(shí)序(單器件)如圖3所示。
如果是多器件級(jí)聯(lián)使用,則器件i的SO和SENO~應(yīng)分別與器件i+l的SI和SENI~相連,并檢測(cè)級(jí)聯(lián)尾器件的SENO~以判斷整個(gè)配置是否結(jié)束。當(dāng)用硬件描述語(yǔ)言編寫串行配置的程序時(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的高電平指定新的寫/讀子隊(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ù)無(wú)法寫入該隊(duì)列,會(huì)發(fā)生數(shù)據(jù)丟失。一般為了避免這種情況,都要配置好PAF偏移值,在看到PAFn~拉低有效后,停止寫入操作。圖5給出不間斷寫操作時(shí)序圖。
圖5
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偏移值后,通過(guò)查看PAEn~便可以得知隊(duì)列的空或非空狀態(tài),并提前做好讀或切換新隊(duì)列的動(dòng)作。圖6給出不間斷讀操作時(shí)序圖。
圖6
3 多隊(duì)列FIFO的應(yīng)用
多隊(duì)列FIFO可滿足設(shè)備實(shí)現(xiàn)服務(wù)質(zhì)量、信息包優(yōu)先級(jí)和多數(shù)據(jù)流匯集/分開(kāi)的要求。例如,根據(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,勢(shì)必要使用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)用靈活性高,前景好。
評(píng)論