亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種快速加權(quán)輪詢調(diào)度方法及快速加權(quán)輪詢調(diào)度器和裝置的制作方法

文檔序號:7601009閱讀:158來源:國知局
專利名稱:一種快速加權(quán)輪詢調(diào)度方法及快速加權(quán)輪詢調(diào)度器和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信領(lǐng)域中的隊(duì)列調(diào)度的方法和裝置,特別是一種利用WRR調(diào)度算法的隊(duì)列調(diào)度的方法和裝置。
背景技術(shù)
在通信系統(tǒng)中,加權(quán)輪詢(Weighted round robin,WRR)調(diào)度器是一種非常重要的調(diào)度技術(shù),它對各隊(duì)列按照權(quán)值大小進(jìn)行流量帶寬分配。
以4個隊(duì)列A、B、C、D為例,權(quán)值依次為Wa、Wb、Wc、Wd,4個權(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)度。
由以上步驟可以看出,傳統(tǒng)WRR調(diào)度器關(guān)鍵在于步驟2中如何在所有隊(duì)列中選取最大值;步驟3中需要對所有隊(duì)列進(jìn)行加法運(yùn)算。
如果隊(duì)列數(shù)目較多,步驟2和步驟3就成為WRR運(yùn)算的瓶頸,因此如何降低最大值選取和數(shù)值運(yùn)算就成為快速WRR調(diào)度器實(shí)現(xiàn)的關(guān)鍵。

發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提供了一種快速加權(quán)輪詢調(diào)度方法及快速加權(quán)輪詢調(diào)度器和裝置,對應(yīng)于傳統(tǒng)WRR調(diào)度器在每一次調(diào)度中都必須比較所有隊(duì)列調(diào)度值,并更替每個隊(duì)列調(diào)度值,快速WRR調(diào)度器只需比較某些隊(duì)列的調(diào)度值,大大減少了運(yùn)算量,提高了調(diào)度速度。
本發(fā)明提供了一種快速加權(quán)輪詢調(diào)度方法,包括以下步驟a.將所有隊(duì)列按初始調(diào)度值的大小順序排列成一個隊(duì)列集合;b.調(diào)度值比較模塊比較所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值,并選取調(diào)度值最大的隊(duì)列為發(fā)送隊(duì)列;c.調(diào)度值更新模塊更新所述各隊(duì)列集合中處于開始位置的隊(duì)列、所述發(fā)送隊(duì)列和所述發(fā)送隊(duì)列前后兩個隊(duì)列的調(diào)度值;d.隊(duì)列集合重組模塊判斷所述被調(diào)度到的發(fā)送隊(duì)列、其前后兩個隊(duì)列的新調(diào)度值大小順序以進(jìn)行隊(duì)列集合的重新劃分,重新劃分后的隊(duì)列集合還是保持集合內(nèi)部調(diào)度值從大到小的排列順序;及e.重復(fù)步驟b、c和d,重新進(jìn)行調(diào)度。
上述的快速加權(quán)輪詢調(diào)度方法,其中,d步驟中所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值大于前一隊(duì)列的調(diào)度值。
上述的快速加權(quán)輪詢調(diào)度方法,其中,所述的步驟c包括以下步驟c1.將所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值加上權(quán)值,將結(jié)果設(shè)置成為該隊(duì)列的調(diào)度值;c2.所述發(fā)送隊(duì)列的前后兩個隊(duì)列各自的調(diào)度值加上相應(yīng)權(quán)值,將結(jié)果設(shè)置成為該兩個隊(duì)列的調(diào)度值;及c3.將所述發(fā)送隊(duì)列的調(diào)度值減去所有隊(duì)列的權(quán)值之和,將結(jié)果設(shè)置成為所述發(fā)送隊(duì)列的調(diào)度值。
上述的快速加權(quán)輪詢調(diào)度方法,其中,所述步驟d包括以下步驟d1.判斷所述發(fā)送隊(duì)列與所述發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值的大小關(guān)系;d2.如果所述發(fā)送隊(duì)列調(diào)度值大于其前后兩個隊(duì)列的調(diào)度值,則保持隊(duì)列集合不變;d3.如果所述發(fā)送隊(duì)列的調(diào)度值大于后一隊(duì)列的調(diào)度值且小于前一隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列所在的隊(duì)列集合與前一隊(duì)列集合合并成為新的隊(duì)列集合;
d4.如果所述發(fā)送隊(duì)列的調(diào)度值大于前一隊(duì)列的調(diào)度值且小于后一隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列獨(dú)立成為新的隊(duì)列集合;及d5.如果所述發(fā)送隊(duì)列的調(diào)度值小于其前后兩個隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列合并到前一隊(duì)列集合中去,而所述發(fā)送隊(duì)列原先所屬的隊(duì)列集合頭部隊(duì)列為所述發(fā)送隊(duì)列的后一隊(duì)列。
上述的快速加權(quán)輪詢調(diào)度方法,其中,步驟a、b之間還包括步驟a1.設(shè)置并初始化用于存儲隊(duì)列調(diào)度值的第一寄存器、用于存儲隊(duì)列調(diào)度次數(shù)的第二寄存器、用于存儲總調(diào)度次數(shù)的第三寄存器和用于設(shè)置隊(duì)列位置的第四寄存器;a2.所述隊(duì)列調(diào)度值、調(diào)度次數(shù)和隊(duì)列集合改變后,設(shè)置所述隊(duì)列集合中處于開始位置的隊(duì)列對應(yīng)的第四寄存器的值為1,其他隊(duì)列對應(yīng)值為0,所述第一寄存器中的數(shù)值改變?yōu)橄鄳?yīng)隊(duì)列的調(diào)度值,所述第三寄存器數(shù)值加1后存儲,發(fā)生運(yùn)算的隊(duì)列對應(yīng)所述第二寄存器數(shù)的值改變?yōu)樗龅谌拇嫫鞯臄?shù)值;所述步驟e重復(fù)步驟a2到步驟d。
上述的快速加權(quán)輪詢調(diào)度方法,其中,步驟c還包括步驟更新相應(yīng)隊(duì)列的調(diào)度值。
為了更好的實(shí)現(xiàn)發(fā)明目的,本發(fā)明還提供了一種快速加權(quán)輪詢調(diào)度器,包括調(diào)度值比較模塊,用于比較所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值,選取調(diào)度值最大的隊(duì)列通過輸出端口進(jìn)行發(fā)送所述隊(duì)列中的數(shù)據(jù);調(diào)度值更新模塊,用于更新所述隊(duì)列集合中處于開始位置的隊(duì)列、所述發(fā)送隊(duì)列和所述發(fā)送隊(duì)列前后兩個隊(duì)列的調(diào)度值;隊(duì)列集合重組模塊,判斷所述被調(diào)度到的隊(duì)列、其前后兩個隊(duì)列的新調(diào)度值大小順序以進(jìn)行隊(duì)列集合的重新劃分,重新劃分后的隊(duì)列集合還是保持集合內(nèi)部調(diào)度值從大到小的排列順序;及控制模塊,用于控制所述調(diào)度值比較模塊、所述調(diào)度值更新模塊和隊(duì)列集合所述重組模塊,以進(jìn)行重新調(diào)度。
上述的快速加權(quán)輪詢調(diào)度器,其中,所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值總是大于前一隊(duì)列的調(diào)度值。
上述的快速加權(quán)輪詢調(diào)度器,其中,所述的調(diào)度值更新模塊包括以下模塊所述隊(duì)列集合中處于開始位置的隊(duì)列調(diào)度值更新模塊,用于將所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值加上權(quán)值,并將結(jié)果設(shè)置成為所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值;所述發(fā)送隊(duì)列的前后兩個隊(duì)列調(diào)度值更新模塊,用于將所述發(fā)送隊(duì)列的前后兩個隊(duì)列各自的調(diào)度值加上相應(yīng)權(quán)值,并將結(jié)果設(shè)置成為所述發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值;及所述發(fā)送隊(duì)列調(diào)度值更新模塊,用于將所述發(fā)送隊(duì)列的調(diào)度值減去所有隊(duì)列的權(quán)值之和,將結(jié)果設(shè)置成為所述發(fā)送隊(duì)列的調(diào)度值。
上述的快速加權(quán)輪詢調(diào)度器,其中,所述隊(duì)列集合重組模塊包括以下模塊判斷模塊,用于判斷所述發(fā)送隊(duì)列與所述發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值的大小關(guān)系;判斷結(jié)果處理模塊,用于根據(jù)所述判斷模塊判斷結(jié)果重新劃分隊(duì)列集合,并執(zhí)行以下操作如果所述發(fā)送隊(duì)列調(diào)度值大于其前后兩個隊(duì)列的調(diào)度值,則保持隊(duì)列集合不變;如果所述發(fā)送隊(duì)列的調(diào)度值大于后一隊(duì)列的調(diào)度值且小于前一隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列所在的隊(duì)列集合與前一隊(duì)列集合合并成為新的隊(duì)列集合;如果所述發(fā)送隊(duì)列的調(diào)度值大于前一隊(duì)列的調(diào)度值且小于后一隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列獨(dú)立成為新的隊(duì)列集合;及如果所述發(fā)送隊(duì)列的調(diào)度值小于其前后兩個隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列合并到前一隊(duì)列集合中去,而所述發(fā)送隊(duì)列原先所屬的隊(duì)列集合頭部隊(duì)列為所述發(fā)送隊(duì)列的后一隊(duì)列。
上述的快速加權(quán)輪詢調(diào)度器,其中,所述調(diào)度值更新模塊還用于更新相應(yīng)隊(duì)列的調(diào)度值。
本發(fā)明還提供了一種快速加權(quán)輪詢調(diào)度裝置,其中,包括第一寄存器,用于存儲隊(duì)列調(diào)度值;第二寄存器,用于存儲隊(duì)列調(diào)度次數(shù);第三寄存器,用于存儲總調(diào)度次數(shù);
第四寄存器,用于設(shè)置隊(duì)列在集合中是否為頭部隊(duì)列;隊(duì)列存儲空間,用于存儲隊(duì)列數(shù)據(jù);輸出端口,用于發(fā)送隊(duì)列;及快速加權(quán)輪詢調(diào)度器,與所述第一寄存器、第二寄存器、第三寄存器和第四寄存器數(shù)據(jù)交互,所述隊(duì)列存儲空間通過所述快速加權(quán)輪詢調(diào)度器發(fā)送隊(duì)列數(shù)據(jù)到所述輸出端口。
經(jīng)仿真發(fā)現(xiàn),在多數(shù)權(quán)值分布情況下,該快速WRR調(diào)度器比傳統(tǒng)WRR調(diào)度器的加法運(yùn)算與比較運(yùn)算大大減少;而在某些權(quán)值分布下,運(yùn)算量在大多數(shù)時間可得到明顯的減少。
與傳統(tǒng)WRR調(diào)度器相比,快速WRR調(diào)度器只對每隊(duì)列集合處于頭部開始位置和被調(diào)度到的隊(duì)列前后兩個隊(duì)列進(jìn)行運(yùn)算,減少運(yùn)算時間。
當(dāng)N越大時,該快速WRR調(diào)度器就越有效。并且在某些應(yīng)用場合,如某些網(wǎng)絡(luò)處理器中,加法器資源不多情況下非常適用。


圖1為傳統(tǒng)WRR調(diào)度器工作流程示意圖;圖2為本發(fā)明快速WRR調(diào)度器工作流程示意圖;圖3為本發(fā)明快速WRR調(diào)度器工作示意圖;圖4為N條隊(duì)列初始排隊(duì)順序圖;圖5為128條隊(duì)列的初始排隊(duì)順序圖;圖6為128條隊(duì)列經(jīng)多次調(diào)度后的排隊(duì)順序和寄存器圖;圖7為圖6中的128條隊(duì)列再調(diào)度一次后的排隊(duì)順序和寄存器圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。
如圖2所示,快速WRR調(diào)度器有如下工作步驟步驟21隊(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,......,依次類推,將隊(duì)列A、B、C、D...以初始調(diào)度值大小順序排列,假設(shè)此時Va≥Vb≥Vc≥Vd≥......,由于所有隊(duì)列都按調(diào)度值大小順序排列,因此只有1個隊(duì)列集合;
步驟22比較各隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值,選取調(diào)度值最大的隊(duì)列為發(fā)送隊(duì)列;步驟23更新每隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值,其調(diào)度值加上各自權(quán)值成為新的調(diào)度值;步驟24更新發(fā)送隊(duì)列前后2個隊(duì)列的調(diào)度值,發(fā)送隊(duì)列的前后兩個隊(duì)列各自的調(diào)度值加上相應(yīng)權(quán)值設(shè)置成為發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值;步驟25更新發(fā)送隊(duì)列的調(diào)度值,將發(fā)送隊(duì)列的調(diào)度值減去所有隊(duì)列的權(quán)值和成為新的調(diào)度值;步驟26根據(jù)隊(duì)列調(diào)度值大小重新劃分隊(duì)列集合;步驟27回到第22步,重新進(jìn)行調(diào)度。
對隊(duì)列集合有如下的特點(diǎn)在隊(duì)列集合內(nèi)部,隊(duì)列按各自調(diào)度值大小進(jìn)行排序,即后一隊(duì)列的調(diào)度值總是小于等于前面一隊(duì)列的調(diào)度值;如果某一隊(duì)列的調(diào)度值大于前面一隊(duì)列的調(diào)度值,那么就以該隊(duì)列為處于開始位置,重新劃分為一個隊(duì)列集合;按照以上的處理,在隊(duì)列集合處于開始位置的隊(duì)列的調(diào)度值在本隊(duì)列集合內(nèi),總是最大的。
設(shè)該快速WRR調(diào)度器將N個調(diào)度值區(qū)分為M個隊(duì)列集合,那么運(yùn)算量可減少為M-1次比較(各隊(duì)列集合處于開始位置的隊(duì)列調(diào)度值的比較運(yùn)算),M+1次加法(各隊(duì)列集合處于開始位置的隊(duì)列調(diào)度值計(jì)算),2次乘法和4次加法(發(fā)送隊(duì)列前后兩隊(duì)列調(diào)度值的計(jì)算),2次比較運(yùn)算(被調(diào)度的隊(duì)列調(diào)度值、調(diào)度隊(duì)列前后兩隊(duì)列調(diào)度值這3個值的比較)。
因此傳統(tǒng)的WRR調(diào)度器的N-1次比較,N+1次加法運(yùn)算量,通過本快速WRR調(diào)度器,可減少為M+5次加法,2次乘法,M+1次比較。
當(dāng)調(diào)度到的隊(duì)列前后兩個隊(duì)列本身也是隊(duì)列集合處于開始位置時,乘法運(yùn)算可不進(jìn)行,運(yùn)算量為M+1次加法,M-1次比較,運(yùn)算量不會超過傳統(tǒng)WRR調(diào)度器。
在實(shí)際運(yùn)算中只需考慮各隊(duì)列集合處于開始位置的隊(duì)列,因此當(dāng)某隊(duì)列在處于開始位置時,則設(shè)置該隊(duì)列使能位,該使能位使能意味著對應(yīng)隊(duì)列需進(jìn)行下一次調(diào)度運(yùn)算,而不使能意味著不需要參與下一次調(diào)度運(yùn)算(發(fā)送隊(duì)列的前后兩個隊(duì)列除外)。
本發(fā)明裝置如圖3所示。包括有4個寄存器用于存儲隊(duì)列調(diào)度值的第一寄存器31、用于存儲隊(duì)列調(diào)度次數(shù)的第二寄存器33、用于存儲總調(diào)度次數(shù)的第三寄存器34、用于設(shè)置隊(duì)列是否為集合開始位置的第四寄存器32、隊(duì)列存儲空間35、快速WRR調(diào)度器36和輸出端口37。
所述隊(duì)列集合中處于開始位置的隊(duì)列對應(yīng)的第四寄存器32中的值為1,其他隊(duì)列對應(yīng)的值為0。各寄存器初始值如圖3所示。
第一寄存器31、第二寄存器33、第三寄存器34和第四寄存器32與快速WRR調(diào)度器36信息交互,所述隊(duì)列存儲空間通過所述快速加權(quán)輪詢調(diào)度器發(fā)送隊(duì)列到所述輸出端口。
快速WRR調(diào)度器36通過以上這些寄存器,只分析隊(duì)列集合中處于開始位置的隊(duì)列并由隊(duì)列存儲空間35調(diào)度出信元,從而達(dá)到快速調(diào)度的效果,并通過輸出端口37發(fā)送。
對N條隊(duì)列按權(quán)值大小進(jìn)行組合。如圖4所示。
圖4中每個方框內(nèi)表示相應(yīng)隊(duì)列權(quán)值大小,其中W0最大,排在最前面,W(N-1)最小,排在最后。
兩個隊(duì)列如果初始調(diào)度值相同,權(quán)值大的隊(duì)列如不被調(diào)度到的話,那么它將永遠(yuǎn)處在權(quán)值小的隊(duì)列之前。那么只要調(diào)度圖4中最前面的隊(duì)列號作為發(fā)送隊(duì)列即可,而不需看集合內(nèi)部后續(xù)隊(duì)列調(diào)度值,就大大減少了數(shù)值運(yùn)算和比較運(yùn)算。
現(xiàn)以128條隊(duì)列為例,說明快速WRR調(diào)度器是如何工作的。
圖5中每個方框內(nèi)表示相應(yīng)隊(duì)列的權(quán)值大小,其中W0最大,排在最前面,W127最小,排在最后。此時,全部128條隊(duì)列為1個隊(duì)列集合,使能位除W0為‘1’外,其它均為‘0’,調(diào)度次數(shù)為0次。
如圖3和圖5所示,其調(diào)度過程如下1.總調(diào)度次數(shù)初始值為1;2.由于V0(對應(yīng)W0隊(duì)列,依此類推)最大,WRR調(diào)度器36首先選取隊(duì)列0作為發(fā)送隊(duì)列,V0進(jìn)行2次加法運(yùn)算,其后的V1進(jìn)行1次乘法(此時為乘1)和2次加法運(yùn)算。更新V0、V1隊(duì)列的調(diào)度次數(shù)與總調(diào)度次數(shù)相同;3.比較剛被運(yùn)算過的V0和其后的V1,如果V0大,則還是1個隊(duì)列集合;
4.如果V0小于V1,那么調(diào)度器將128個隊(duì)列劃分為2隊(duì)列集合,前者為V0,后者為V1~V127。假設(shè)是這種情況,V0、V1使能位為‘1’;5.總調(diào)度次數(shù)加1;6.下一次調(diào)度時,調(diào)度器比較兩隊(duì)列集合處于開始位置的隊(duì)列調(diào)度值,假設(shè)此時V1大于V0,那么V1對應(yīng)的隊(duì)列被調(diào)度;7.V1進(jìn)行2次加法運(yùn)算,V0進(jìn)行1次乘法(此時為乘1)和2次加法運(yùn)算,V2進(jìn)行1次乘法(此時為乘2)和2次加法運(yùn)算。更新V0、V1、V2隊(duì)列的調(diào)度次數(shù)與總調(diào)度次數(shù)相同;8.比較V0、V1、V2是否保持前大后小的態(tài)勢。如果V2<V1<V0,那么將2隊(duì)列集合并為1個隊(duì)列集合V0~V127;如果V2>V1<V0,那么將V0、V1并為一個隊(duì)列集合,V2~V127為另一隊(duì)列集合;如果V2<V1>V0,那么V0為一個隊(duì)列集合,V1~V127為另一隊(duì)列集合;如果V2>V1>V0,那么劃分為3隊(duì)列集合,第1隊(duì)列集合為V0,第2隊(duì)列集合為V1,第3隊(duì)列集合為V2~V127,假設(shè)是這種情況,V0、V1、V2使能位為‘1’;9.重復(fù)執(zhí)行5~8步驟,假設(shè)經(jīng)一段時間的運(yùn)算后,得到圖6;圖6中的128條隊(duì)列經(jīng)多次調(diào)度后,分為4個隊(duì)列集合V0~V2,V3~V6,V7~V124,V125~V127,每隊(duì)列集合內(nèi)部按調(diào)度值大小排列;在對應(yīng)隊(duì)列的第四寄存器32中,如值為‘1’,表示其為每隊(duì)列集合的處于開始位置,需要參與下一次的比較運(yùn)算和調(diào)度值數(shù)值運(yùn)算;如為’0’,表示其不在每隊(duì)列集合的處于開始位置,不需要參加運(yùn)算(發(fā)送隊(duì)列的前后兩個隊(duì)列除外,這里是V124和V126);在第二寄存器33中,由于不在隊(duì)列集合處于開始位置的隊(duì)列不參加運(yùn)算,因此它們的調(diào)度次數(shù)不是總調(diào)度次數(shù)578;10.下一次調(diào)度,比較V0、V3、V7、V125大小(3次比較運(yùn)算),假設(shè)V125最大。在調(diào)度出第125號隊(duì)列的同時,計(jì)算V126的調(diào)度值(1次乘法,2次加法),V124的調(diào)度值(1次乘法,2次加法),V125的調(diào)度值(2次加法),V7的調(diào)度值(1次加法),V3的調(diào)度值(1次加法),V0的調(diào)度值(1次加法)。
11.對V124、V125、V126進(jìn)行重新排序(2次比較運(yùn)算)以重新劃分隊(duì)列集合,如果V126<V125>V124,則保持原狀;如果V126<V125<V124,則將V7~V124和V125~V127兩個隊(duì)列集合合并為V7~V127一個隊(duì)列集合;如果V126>V125>V124,那么就將V125獨(dú)立出來單獨(dú)成為一個隊(duì)列集合;如果V126>V125<V124,那么將V125劃歸到V7~V124隊(duì)列集合,假設(shè)是這種情況,有圖7所示。
12.更新剛運(yùn)算過的隊(duì)列的調(diào)度次數(shù)與總調(diào)度次數(shù)相同。(在本次調(diào)度中,M=4,進(jìn)行2次乘法,9次加法,5次比較運(yùn)算,遠(yuǎn)遠(yuǎn)小于傳統(tǒng)WRR調(diào)度器的129次加法,127次比較運(yùn)算)。
上面步驟中,隊(duì)列的調(diào)度次數(shù)存儲在隊(duì)列調(diào)度次數(shù)寄存器33中,總調(diào)度次數(shù)存儲在第四寄存器34中,隊(duì)列調(diào)度值存儲在第一寄存器31中。
還需說明的是,如果系統(tǒng)中加法器資源比較多,那么可在每次調(diào)度都更新每個隊(duì)列調(diào)度值。在這種情況時,加法運(yùn)算量與傳統(tǒng)WRR調(diào)度器相比不變,都是N-1次,但比較運(yùn)算量可減少到M+1次,同樣達(dá)到了快速運(yùn)算的目的。
當(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.一種快速加權(quán)輪詢調(diào)度方法,包括以下步驟a.先將所有隊(duì)列按初始調(diào)度值的大小順序排列成一個隊(duì)列集合;b.調(diào)度值比較模塊比較所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值,并選取調(diào)度值最大的隊(duì)列為發(fā)送隊(duì)列;c.調(diào)度值更新模塊更新所述隊(duì)列集合中處于開始位置的隊(duì)列、所述發(fā)送隊(duì)列和所述發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值;d.隊(duì)列集合重組模塊判斷所述被調(diào)度到的發(fā)送隊(duì)列、其前后兩個隊(duì)列的新調(diào)度值大小順序以進(jìn)行隊(duì)列集合的重新劃分,重新劃分后的隊(duì)列集合還是保持集合內(nèi)部調(diào)度值從大到小的排列順序;及e.重復(fù)步驟b、c和d,重新進(jìn)行調(diào)度。
2.根據(jù)權(quán)利要求1所述的快速加權(quán)輪詢調(diào)度方法,其特征在于,d步驟中所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值大于前一隊(duì)列的調(diào)度值。
3.根據(jù)權(quán)利要求1或2所述的快速加權(quán)輪詢調(diào)度方法,其特征在于,所述的步驟c包括以下步驟c1.將所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值加上權(quán)值,將結(jié)果設(shè)置成為所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值;c2.所述發(fā)送隊(duì)列的前后兩個隊(duì)列各自的調(diào)度值加上相應(yīng)權(quán)值,將結(jié)果設(shè)置成為所述發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值;及c3.將所述發(fā)送隊(duì)列的調(diào)度值減去所有隊(duì)列的權(quán)值之和,將結(jié)果設(shè)置成為所述發(fā)送隊(duì)列的調(diào)度值。
4.根據(jù)權(quán)利要求1或2所述的快速加權(quán)輪詢調(diào)度方法,其特征在于,所述步驟d包括以下步驟d1.判斷所述發(fā)送隊(duì)列與所述發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值的大小關(guān)系;d2.如果所述發(fā)送隊(duì)列的調(diào)度值大于其前后兩個隊(duì)列的調(diào)度值,則保持隊(duì)列集合不變;d3.如果所述發(fā)送隊(duì)列的調(diào)度值大于后一隊(duì)列的調(diào)度值且小于前一隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列所在的隊(duì)列集合與前一隊(duì)列集合合并成為新的隊(duì)列集合;d4.如果所述發(fā)送隊(duì)列的調(diào)度值大于前一隊(duì)列的調(diào)度值且小于后一隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列獨(dú)立成為新的隊(duì)列集合;及d5.如果所述發(fā)送隊(duì)列的調(diào)度值小于其前后兩個隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列合并到前一隊(duì)列集合中去,而所述發(fā)送隊(duì)列原先所屬的隊(duì)列集合頭部隊(duì)列為所述發(fā)送隊(duì)列的后一隊(duì)列。
5.根據(jù)權(quán)利要求4所述的快速加權(quán)輪詢調(diào)度方法,其特征在于,步驟a、b之間還包括步驟a1.設(shè)置并初始化用于存儲隊(duì)列調(diào)度值的第一寄存器、用于存儲隊(duì)列調(diào)度次數(shù)的第二寄存器、用于存儲總調(diào)度次數(shù)的第三寄存器和用于設(shè)置隊(duì)列位置的第四寄存器;a2.所述隊(duì)列調(diào)度值、調(diào)度次數(shù)和隊(duì)列集合改變后,設(shè)置所述隊(duì)列集合中處于開始位置的隊(duì)列對應(yīng)的第四寄存器的值為1,其他隊(duì)列對應(yīng)值為0,所述第一寄存器數(shù)值改變?yōu)橄鄳?yīng)隊(duì)列的調(diào)度值,所述第三寄存器數(shù)值加1后存儲,發(fā)生運(yùn)算的隊(duì)列對應(yīng)所述第二寄存器數(shù)的值改變?yōu)樗龅谌拇嫫鞯臄?shù)值;所述步驟e重復(fù)步驟a2到步驟d。
6.根據(jù)權(quán)利要求1所述的快速加權(quán)輪詢調(diào)度方法,其特征在于,步驟c還包括步驟更新相應(yīng)隊(duì)列的調(diào)度值。
7.一種快速加權(quán)輪詢調(diào)度器,包括調(diào)度值比較模塊,用于比較所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值,選取調(diào)度值最大的隊(duì)列并利用輸出端口進(jìn)行發(fā)送;調(diào)度值更新模塊,用于更新所述隊(duì)列集合中處于開始位置的隊(duì)列、所述發(fā)送隊(duì)列和所述發(fā)送隊(duì)列和前后兩個隊(duì)列的調(diào)度值;隊(duì)列集合重組模塊,判斷所述被調(diào)度到的發(fā)送隊(duì)列、其前后兩個隊(duì)列的新調(diào)度值大小順序以進(jìn)行隊(duì)列集合的重新劃分,重新劃分后的隊(duì)列集合還是保持集合內(nèi)部調(diào)度值從大到小的排列順序;及控制模塊,用于控制所述調(diào)度值比較模塊、所述調(diào)度值更新模塊和隊(duì)列集合所述重組模塊,以進(jìn)行重新調(diào)度。
8.根據(jù)權(quán)利要求7所述的快速加權(quán)輪詢調(diào)度器,其特征在于,所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值大于前一隊(duì)列的調(diào)度值。
9.根據(jù)權(quán)利要求8所述的快速加權(quán)輪詢調(diào)度器,其特征在于,所述的調(diào)度值更新模塊包括以下模塊所述隊(duì)列集合中處于開始位置的隊(duì)列調(diào)度值更新模塊,用于將所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值加上權(quán)值,并將結(jié)果設(shè)置成為所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值;所述發(fā)送隊(duì)列的前后兩個隊(duì)列調(diào)度值更新模塊,用于將所述發(fā)送隊(duì)列的前后兩個隊(duì)列各自的調(diào)度值加上相應(yīng)權(quán)值,并將結(jié)果設(shè)置成為所述發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值;及所述發(fā)送隊(duì)列調(diào)度值更新模塊,用于將所述發(fā)送隊(duì)列的調(diào)度值減去所有隊(duì)列的權(quán)值之和,將結(jié)果設(shè)置成為所述發(fā)送隊(duì)列的調(diào)度值。
10.根據(jù)權(quán)利要求7或9所述的快速加權(quán)輪詢調(diào)度器,其特征在于,所述隊(duì)列集合重組模塊包括以下模塊判斷模塊,用于判斷所述發(fā)送隊(duì)列與所述發(fā)送隊(duì)列的前后兩個隊(duì)列的調(diào)度值的大小關(guān)系;判斷結(jié)果處理模塊,用于根據(jù)所述判斷模塊判斷結(jié)果重新劃分隊(duì)列集合,并執(zhí)行以下操作如果所述發(fā)送隊(duì)列的調(diào)度值大于其前后兩個隊(duì)列的調(diào)度值,則保持隊(duì)列集合不變;如果所述發(fā)送隊(duì)列的調(diào)度值大于后一隊(duì)列的調(diào)度值且小于前一隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列所在的隊(duì)列集合與前一隊(duì)列集合合并成為新的隊(duì)列集合;如果所述發(fā)送隊(duì)列的調(diào)度值大于前一隊(duì)列的調(diào)度值且小于后一隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列獨(dú)立成為新的隊(duì)列集合;及如果所述發(fā)送隊(duì)列的調(diào)度值小于其前后兩個隊(duì)列的調(diào)度值,則將所述發(fā)送隊(duì)列合并到前一隊(duì)列集合中去,而所述發(fā)送隊(duì)列原先所屬的隊(duì)列集合頭部隊(duì)列為所述發(fā)送隊(duì)列的后一隊(duì)列。
11.根據(jù)權(quán)利要求7所述的快速加權(quán)輪詢調(diào)度器,其特征在于,所述調(diào)度值更新模塊還用于更新相應(yīng)隊(duì)列的調(diào)度值。
12.一種快速加權(quán)輪詢調(diào)度裝置,其特征在于,包括第一寄存器,用于存儲隊(duì)列調(diào)度值;第二寄存器,用于存儲隊(duì)列調(diào)度次數(shù);第三寄存器,用于存儲總調(diào)度次數(shù);第四寄存器,用于設(shè)置隊(duì)列在集合中是否為頭部隊(duì)列;隊(duì)列存儲空間,用于存儲隊(duì)列;輸出端口,用于發(fā)送隊(duì)列;及快速加權(quán)輪詢調(diào)度器,與所述第一寄存器、第二寄存器、第三寄存器和第四寄存器數(shù)據(jù)交互,所述隊(duì)列存儲空間通過所述快速加權(quán)輪詢調(diào)度器發(fā)送隊(duì)列到所述輸出端口。
全文摘要
本發(fā)明公開了一種快速加權(quán)輪詢調(diào)度方法及裝置,其方法包括以下步驟將所有隊(duì)列按初始調(diào)度值的大小順序排列成一個隊(duì)列集合;比較所述隊(duì)列集合中處于開始位置的隊(duì)列的調(diào)度值,選取調(diào)度值最大的隊(duì)列為發(fā)送隊(duì)列;更新所述隊(duì)列集合中處于開始位置的隊(duì)列、所述發(fā)送隊(duì)列和所述發(fā)送隊(duì)列前后兩個隊(duì)列的調(diào)度值;判斷所述被調(diào)度到的發(fā)送隊(duì)列、其前后兩個隊(duì)列的新調(diào)度值大小順序以進(jìn)行隊(duì)列集合的重新劃分,重新劃分后的隊(duì)列集合還是保持集合內(nèi)部調(diào)度值從大到小的排列順序;重新進(jìn)行調(diào)度。對應(yīng)于傳統(tǒng)WRR調(diào)度器在每一次調(diào)度中都必須比較所有隊(duì)列調(diào)度值,并更替每個隊(duì)列調(diào)度值,快速WRR調(diào)度器只需比較某些隊(duì)列的調(diào)度值,大大減少了運(yùn)算量,提高了調(diào)度速度。
文檔編號H04L12/56GK1798092SQ20041010186
公開日2006年7月5日 申請日期2004年12月29日 優(yōu)先權(quán)日2004年12月29日
發(fā)明者童進(jìn), 施衛(wèi)豐, 李際濤, 吳玉文 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1