專利名稱:一種利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域中的隊(duì)列調(diào)度的方法及裝置,特別是一種利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法及裝置。
背景技術(shù):
在通信系統(tǒng)中,加權(quán)輪詢(Weighted round robin,WRR)調(diào)度器是一種非常重要的調(diào)度技術(shù),它對各隊(duì)列按照權(quán)值大小進(jìn)行流量帶寬分配。
以4個(gè)隊(duì)列A、B、C、D為例,權(quán)值依次為Wa、Wb、Wc、Wd,4個(gè)權(quán)值相加W=Wa+Wb+Wc+Wd。傳統(tǒng)WRR調(diào)度器工作流程如圖1所示,有如下工作步驟步驟1隊(duì)列A的初始調(diào)度值Va=W+Wa;隊(duì)列B的初始調(diào)度值Vb=W+Wb;隊(duì)列C的初始調(diào)度值Vc=W+Wc;隊(duì)列D的初始調(diào)度值Vd=W+Wd。
步驟2比較Va、Vb、Vc、Vd,如隊(duì)列A調(diào)度值Va最大,則隊(duì)列A被調(diào)度。
步驟3隊(duì)列A的調(diào)度值Va=Va+Wa;隊(duì)列B的調(diào)度值Vb=Vb+Wb;隊(duì)列C的調(diào)度值Vc=Vc+Wc;隊(duì)列D的調(diào)度值Vd=Vd+Wd。
步驟4被調(diào)度到的隊(duì)列,如隊(duì)列A,其調(diào)度值Va=Va-W。
步驟5回到第2步,重新進(jìn)行調(diào)度。
如果隊(duì)列數(shù)目較多,第2步驟中選取最大值操作和第3步驟中對所有隊(duì)列進(jìn)行加法運(yùn)算,就成為WRR運(yùn)算的瓶頸。
為了避開第2步驟和第3步驟中大量的數(shù)值運(yùn)算,申請?zhí)枮?2155335.1,專利名稱為“一種使信元流量實(shí)現(xiàn)最小抖動的加權(quán)輪詢方法”的專利申請采用了以下方法實(shí)現(xiàn)了WRR。
該專利申請先對各個(gè)信元隊(duì)列進(jìn)行編號,再配置一個(gè)將各個(gè)隊(duì)列的編號均勻分布的查找表,并按照查找表的順序發(fā)送各個(gè)隊(duì)列的信元,從而實(shí)現(xiàn)隊(duì)列的流量調(diào)度。該專利申請實(shí)現(xiàn)簡單,解決了傳統(tǒng)加權(quán)輪詢算法的缺陷,在實(shí)現(xiàn)時(shí),無須比較各個(gè)隊(duì)列的時(shí)標(biāo)寄存器,可以大大減小實(shí)現(xiàn)加權(quán)輪詢算法的難度和復(fù)雜度,在使用ASIC或FPGA實(shí)現(xiàn)本發(fā)明的時(shí)候,極大地減小了邏輯器件實(shí)現(xiàn)的規(guī)模和難度;同時(shí)極大地減小了傳統(tǒng)加權(quán)輪詢算法引起的短時(shí)流量的抖動,使短時(shí)抖動減小到最低程度。另外,由于本發(fā)明只進(jìn)行查表,如果使用CPU進(jìn)行計(jì)算,其速度很快,遠(yuǎn)遠(yuǎn)高于現(xiàn)有的加權(quán)輪詢算法的速度。
該專利申請的思想是在以RAM方式實(shí)現(xiàn)的查找表中,利用偽隨機(jī)交織方法,按帶寬分布設(shè)置對應(yīng)于各個(gè)隊(duì)列的編號。調(diào)度器在每次調(diào)度中依次增加RAM地址,獲得RAM內(nèi)容,即隊(duì)列編號,等價(jià)于發(fā)送隊(duì)列號。
另外,由于專利申請02155335.1將編號合理分布,在分配帶寬的同時(shí),減小了各隊(duì)列的流量短時(shí)抖動,獲得較為平滑的流量輸出。但是,02155335.1號專利申請具有以下一些缺陷查找表的大小取決于{總帶寬/最小流量}的值,當(dāng)某一應(yīng)用環(huán)境中的總帶寬確定后,查找表大小一旦固定,就決定了最小流量,而當(dāng)最小流量需再次細(xì)分時(shí),只能增大查找表的RAM容量,這在許多受限場合是難以實(shí)現(xiàn)的。
在大容量、細(xì)粒度的網(wǎng)元中,采用02155335.1號專利申請的技術(shù)就會造成要么最小流量不能滿足需求,要么查找表長度非常大導(dǎo)致成本高昂。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法及裝置,減少數(shù)值運(yùn)算量,同時(shí)也不用設(shè)置查找表,能滿足對流量進(jìn)行非常小的細(xì)分的要求,減少成本。
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法,其中,包括下列步驟步驟a,對每個(gè)隊(duì)列分別設(shè)置寬度都一致的下限寄存器和上限寄存器;步驟b1,設(shè)置第一個(gè)隊(duì)列的下限寄存器的值為0,最后一個(gè)隊(duì)列的上限寄存器的值為所述寄存器所能表示的最大值;步驟b2,將每一隊(duì)列之前的其他所有隊(duì)列分配帶寬之和與總帶寬的比值,乘以所述寄存器所能表征的最大值得到第一計(jì)算結(jié)果;步驟b3,對所述第一計(jì)算結(jié)果取整得到第二計(jì)算結(jié)果,將所述第二計(jì)算結(jié)果設(shè)置為該隊(duì)列的下限寄存器的值;步驟b4,將所述隊(duì)列的下限寄存器的值減1后設(shè)置為前一隊(duì)列上限寄存器的值;步驟c,每個(gè)調(diào)度時(shí)刻利用偽隨機(jī)序列發(fā)生器產(chǎn)生位于
之間呈平均概率分布的偽隨機(jī)序列R;及步驟d,所述隊(duì)列判斷所述偽隨機(jī)序列是否位于本隊(duì)列下限寄存器數(shù)值和上限寄存器數(shù)值之間,如是,則發(fā)送出本隊(duì)列數(shù)據(jù),如不是,則不發(fā)送。
上述的利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法,其中,所述隊(duì)列的所有上/下限寄存器寬度都相同。
上述的利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法,其中,所述步驟b4和步驟c之間還包括步驟初始化偽隨機(jī)序列發(fā)生器。
為了更好的實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明還提供了一種利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的裝置,其中,包括隊(duì)列上限寄存器及下限寄存器,第一個(gè)隊(duì)列的所述下限寄存器的值為0,最后一個(gè)隊(duì)列的上限寄存器的值為所述寄存器能表示的最大值,所述隊(duì)列的下限寄存器的值是對應(yīng)的所述第二計(jì)算結(jié)果,所述隊(duì)列的上限寄存器的值是前一隊(duì)列下限寄存器值加1;偽隨機(jī)序列發(fā)生器,用于在每個(gè)調(diào)度時(shí)刻產(chǎn)生位于
之間成平均概率分布的偽隨機(jī)序列;發(fā)送隊(duì)列存儲空間,用于存儲所述發(fā)送隊(duì)列;發(fā)送使能裝置,用于判斷所述偽隨機(jī)序列數(shù)值R是否位于本隊(duì)列下限寄存器數(shù)值和上限寄存器數(shù)值之間,根據(jù)判斷結(jié)果決定發(fā)送隊(duì)列數(shù)據(jù)與否;及發(fā)送端口,與所述發(fā)送隊(duì)列存儲空間連接,用于發(fā)送所述隊(duì)列的數(shù)據(jù)。
上述的利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的裝置,其中,所述隊(duì)列的所有上/下限寄存器寬度都相同。
本發(fā)明的裝置的帶寬細(xì)化在能預(yù)測的將來是充足的。本發(fā)明通過設(shè)置每隊(duì)列的上下限寄存器,避免了采用查找表實(shí)現(xiàn)帶寬分配,所需硬件資源更加少,帶寬分配更靈活,總帶寬可以非常大,最小流量可以非常小,總帶寬和最小流量不再是不可兼顧,帶寬分配粒度僅由寄存器寬度決定。
下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。
圖1為本發(fā)明利用偽隨機(jī)序列實(shí)現(xiàn)WRR調(diào)度器的工作流程圖;圖2為本發(fā)明利用偽隨機(jī)序列的WRR調(diào)度器裝置。
具體實(shí)施例方式
本發(fā)明在每個(gè)發(fā)送隊(duì)列都設(shè)置了兩個(gè)寄存器下限寄存器與上限寄存器。所有隊(duì)列的上/下限寄存器寬度都一樣,寄存器值按以下規(guī)律設(shè)置第一個(gè)隊(duì)列的下限寄存器值為0;前一個(gè)隊(duì)列的上限寄存器值等于后一個(gè)隊(duì)列下限寄存器值減1;最后一個(gè)隊(duì)列的上限寄存器為該寄存器能表征的最大值。
如寄存器寬度為32bits,當(dāng)有N個(gè)發(fā)送隊(duì)列,則隊(duì)列0的下限寄存器為0x0,隊(duì)列N-1的上限寄存器為0xFFFFFFFF,而當(dāng)隊(duì)列M(0≤M<N-1)的上限寄存器為0x10000000時(shí),則隊(duì)列M+1的下限寄存器則為0x10000001。
本發(fā)明采用偽隨機(jī)序列來實(shí)現(xiàn)WRR調(diào)度器,該偽隨機(jī)序列為整數(shù),在
范圍內(nèi)呈平均概率分布。
設(shè)偽隨機(jī)序列發(fā)生器產(chǎn)生偽隨機(jī)序列R。由于所有隊(duì)列的上/下限寄存器已將R產(chǎn)生范圍完全覆蓋,因此在某一發(fā)送時(shí)刻R數(shù)值必定落在某一隊(duì)列的下限寄存器與上限寄存器之間,而我們可以通過配置各個(gè)隊(duì)列的上下限寄存器實(shí)現(xiàn)WRR調(diào)度器所要求的帶寬分配。
設(shè)N個(gè)隊(duì)列帶寬分配為B0,B1,B2,...,B(N-1),則有B=B0+B1+B2+......+B(N-1),其中B為帶寬分配值之和;寄存器寬度為RW,有Bmax=2RW。
那么隊(duì)列0占有B0/B的帶寬,隊(duì)列1占有B1/B的帶寬,隊(duì)列2占有B2/B的帶寬,......,隊(duì)列N-1占有B(N-1)/B的帶寬。
這時(shí),有以下各隊(duì)列的上下限寄存器設(shè)置隊(duì)列0下限寄存器值為0x0,上限寄存器值為(B0×Bmax/B)-1的取整;隊(duì)列1下限寄存器值為B0×Bmax/B的取整,上限寄存器值為[(B0+B1)×Bmax/B]-1的取整;隊(duì)列2下限寄存器值為(B0+B1)×Bmax/B的取整,上限寄存器值為[(B0+B1+B2)×Bmax/B]-1的取整;......
隊(duì)列N-1下限寄存器值為[B0+B1+......+B(N-2)]×Bmax/B的取整,上限寄存器值為0b1......1(共RW位)。
綜上所述,如圖1所示,本發(fā)明可以通過以下工作流程描述步驟100根據(jù)帶寬分配,設(shè)置每個(gè)發(fā)送隊(duì)列的上限寄存器,下限寄存器;步驟200初始化偽隨機(jī)序列發(fā)生器;步驟300偽隨機(jī)序列發(fā)生器在每個(gè)調(diào)度時(shí)刻,產(chǎn)生在
之間平均分布的偽隨機(jī)序列R,每個(gè)發(fā)送隊(duì)列判別偽隨機(jī)序列R是否落在本隊(duì)列的下限寄存器和上限寄存器數(shù)值之間,如是,則使能本發(fā)送隊(duì)列,如不是,則不使能本發(fā)送隊(duì)列;步驟400跳轉(zhuǎn)到第300步驟,繼續(xù)下一次調(diào)度。
現(xiàn)以1024條輸出隊(duì)列,上下限寄存器寬度為32bits為例,說明本發(fā)明是如何利用偽隨機(jī)序列實(shí)現(xiàn)WRR調(diào)度器的。
設(shè)在1024個(gè)隊(duì)列之間帶寬分配為B0∶B1∶B2∶......∶B1023=1∶2∶3∶......∶1024,即各隊(duì)列發(fā)送帶寬呈等差(差值為1)分布,有B=B0+B1+B2+......+B1023=524800,RW=32,Bmax=4294967296。
如圖2所示,首先配置1024個(gè)隊(duì)列的上限寄存器22和下限寄存器23的值隊(duì)列0下限寄存器值為0d0,上限寄存器值為0d8183;隊(duì)列1下限寄存器值為0d8184,上限寄存器值為0d24551;隊(duì)列2下限寄存器值為0d24552,上限寄存器值為0d49103;……隊(duì)列1023下限寄存器值為0d4286586872,上限寄存器值為0d4294967295。
然后,初始化32位偽隨機(jī)序列發(fā)生器21。
接著,偽隨機(jī)序列發(fā)生器21在每個(gè)調(diào)度時(shí)刻產(chǎn)生
區(qū)間平均分布的偽隨機(jī)序列,每個(gè)隊(duì)列判斷該偽隨機(jī)序列R是否落在本隊(duì)列的下限寄存器22和上限寄存器23之間,如果是,則使能本隊(duì)列的發(fā)送使能線26,發(fā)出命令,使得調(diào)度出存儲空間25中相應(yīng)隊(duì)列并通過發(fā)送端口24發(fā)送本隊(duì)列中的數(shù)據(jù)。
最后,在下一個(gè)調(diào)度時(shí)刻進(jìn)行下一次調(diào)度。
由于偽隨機(jī)序列在
間的概率分布為平均分布,落在每個(gè)值上的概率都是一樣的,而每個(gè)隊(duì)列又將
區(qū)間按帶寬分割,因此落在每個(gè)區(qū)間的概率就體現(xiàn)了WRR調(diào)度器中的權(quán)值。這樣就實(shí)現(xiàn)了WRR調(diào)度器。
在此舉例中,本發(fā)明的裝置能發(fā)送隊(duì)列帶寬僅為總帶寬1/4294967296的隊(duì)列,這種帶寬細(xì)化在能預(yù)測的將來充足的。
當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法,其特征在于,包括下列步驟步驟a,對每個(gè)隊(duì)列分別設(shè)置寬度都一致的下限寄存器和上限寄存器;步驟b1,設(shè)置第一個(gè)隊(duì)列的下限寄存器的值為0,最后一個(gè)隊(duì)列的上限寄存器的值為所述寄存器所能表示的最大值;步驟b2,將每一隊(duì)列之前的其他所有隊(duì)列分配帶寬之和與總帶寬的比值,乘以所述寄存器所能表征的最大值得到第一計(jì)算結(jié)果;步驟b3,對所述第一計(jì)算結(jié)果取整得到第二計(jì)算結(jié)果,將所述第二計(jì)算結(jié)果設(shè)置為該隊(duì)列的下限寄存器的值;步驟b4,將所述隊(duì)列的下限寄存器的值減1后設(shè)置為前一隊(duì)列上限寄存器的值;步驟c,每個(gè)調(diào)度時(shí)刻利用偽隨機(jī)序列發(fā)生器產(chǎn)生位于
之間呈平均概率分布的偽隨機(jī)序列R;及步驟d,所述隊(duì)列判斷所述偽隨機(jī)序列是否位于本隊(duì)列下限寄存器數(shù)值和上限寄存器數(shù)值之間,如是,則發(fā)送出本隊(duì)列數(shù)據(jù),如不是,則不發(fā)送。
2.根據(jù)權(quán)利要求1所述的利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法,其特征在于,所述隊(duì)列的所有上/下限寄存器寬度都相同。
3.根據(jù)權(quán)利要求1所述的利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法,其特征在于,所述步驟b4和步驟c之間還包括步驟初始化偽隨機(jī)序列發(fā)生器。
4.一種利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的裝置,其特征在于,包括隊(duì)列上限寄存器及下限寄存器,第一個(gè)隊(duì)列的所述下限寄存器的值為0,最后一個(gè)隊(duì)列的上限寄存器的值為所述寄存器能表示的最大值,所述隊(duì)列的下限寄存器的值是對應(yīng)的所述第二計(jì)算結(jié)果,所述隊(duì)列的上限寄存器的值是前一隊(duì)列下限寄存器值加1;偽隨機(jī)序列發(fā)生器,用于在每個(gè)調(diào)度時(shí)刻產(chǎn)生位于
之間成平均概率分布的偽隨機(jī)序列;發(fā)送隊(duì)列存儲空間,用于存儲所述發(fā)送隊(duì)列;發(fā)送使能裝置,用于判斷所述偽隨機(jī)序列數(shù)值R是否位于本隊(duì)列下限寄存器數(shù)值和上限寄存器數(shù)值之間,根據(jù)判斷結(jié)果決定發(fā)送隊(duì)列數(shù)據(jù)與否;及發(fā)送端口,與所述發(fā)送隊(duì)列存儲空間連接,用于發(fā)送所述隊(duì)列的數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的裝置,其特征在于,所述隊(duì)列的所有上/下限寄存器寬度都相同。
全文摘要
本發(fā)明公開了一種利用偽隨機(jī)序列實(shí)現(xiàn)加權(quán)輪詢調(diào)度的方法和裝置,每個(gè)發(fā)送隊(duì)列設(shè)置上/下限寄存器,其寬度相同,并且第一個(gè)隊(duì)列的下限寄存器值為0,最后一個(gè)隊(duì)列的上限寄存器值為該寄存器所能表征的最大值,前一隊(duì)列的上限寄存器值加1即為后一隊(duì)列的下限寄存器值。本發(fā)明采用偽隨機(jī)序列來實(shí)現(xiàn)WRR調(diào)度器,偽隨機(jī)序列R在
范圍內(nèi)呈平均概率分布,由于上/下限寄存器已將偽隨機(jī)數(shù)R的產(chǎn)生范圍完全覆蓋,因此在某一發(fā)送時(shí)刻R數(shù)值必定落在某一隊(duì)列的上/下限寄存器之間,而調(diào)度器將發(fā)送該隊(duì)列數(shù)據(jù)。本發(fā)明避免了采用查找表實(shí)現(xiàn)帶寬分配,所需硬件資源更加少。
文檔編號H04L12/24GK1801733SQ20041010391
公開日2006年7月12日 申請日期2004年12月31日 優(yōu)先權(quán)日2004年12月31日
發(fā)明者童進(jìn), 陳曉東, 周一新, 閆強(qiáng) 申請人:中興通訊股份有限公司