專利名稱:多模式cos隊(duì)列的組織調(diào)度方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)及網(wǎng)絡(luò)數(shù)據(jù)通信技術(shù),具體涉及一種針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度方法及其裝置。
背景技術(shù):
在數(shù)據(jù)處理芯片中,COS隊(duì)列組織一般有兩種方式,一種是基于端口的COS隊(duì)列的組織方式,另一種是基于流的COS隊(duì)列組織方式。
基于端口的COS隊(duì)列組織方式是指每一個(gè)出端口對(duì)應(yīng)一組COS隊(duì)列,數(shù)據(jù)流分組后形成的數(shù)據(jù)包按照業(yè)務(wù)級(jí)別優(yōu)先級(jí)的不同分別進(jìn)入不同的COS隊(duì)列的隊(duì)尾。在該組COS隊(duì)列的對(duì)頭采用特定的優(yōu)先調(diào)度算法將包以串行的順序調(diào)度出出端口。這種方法所耗邏輯資源不大,較經(jīng)濟(jì),但出口的業(yè)務(wù)中流的抖動(dòng)性沒(méi)有得到改善。
基于流的COS隊(duì)列組織方式是指每一個(gè)出端口對(duì)應(yīng)若干個(gè)流,每個(gè)數(shù)據(jù)流對(duì)應(yīng)一定數(shù)量的COS隊(duì)列,一個(gè)流內(nèi)的包按其COS優(yōu)先級(jí)進(jìn)入不同的COS隊(duì)列所在流的出口。這種方法在支持的數(shù)據(jù)流數(shù)目相同的情況下所耗邏輯資源大,但出口業(yè)務(wù)的流的抖動(dòng)性得到一定的改善。
以下給出兩種基于流的COS隊(duì)列組織方式。
其一是采用固定的COS級(jí)別,每個(gè)業(yè)務(wù)流支持固定數(shù)量的優(yōu)先隊(duì)列。例如在國(guó)外某芯片中,采用了2K個(gè)流,每個(gè)流具有4個(gè)COS隊(duì)列,一共有8K個(gè)隊(duì)列。這種方案具有如下缺點(diǎn)并不是所有的流都需要4個(gè)隊(duì)列,某些流可能只需要1個(gè)隊(duì)列或2個(gè)隊(duì)列,以用戶只需要每流2個(gè)COS隊(duì)列為例,采用上面的方案,其隊(duì)列資源,包括存隊(duì)頭隊(duì)尾的芯片內(nèi)部單元耗費(fèi)太大,不利于成本控制。
另一種方式是采用網(wǎng)絡(luò)處理器來(lái)實(shí)現(xiàn)更靈活的COS隊(duì)列管理,這樣可以靈活地管理隊(duì)列資源。但是這種方式設(shè)計(jì)復(fù)雜,成本高,并且其數(shù)據(jù)吞吐量往往有限。
本發(fā)明涉及的是基于流的COS隊(duì)列組織方式。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種能夠靈活配置COS隊(duì)列數(shù)目,提高資源利用率,從而降低成本的方法及其裝置。
為解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案是一種針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度方法,其中每一個(gè)流都具有至少一個(gè)COS隊(duì)列,不同COS隊(duì)列具有不同的業(yè)務(wù)優(yōu)先級(jí),所述方法包括如下步驟使一個(gè)第一存儲(chǔ)器中的每一個(gè)地址對(duì)應(yīng)一個(gè)流,所述每一個(gè)地址的內(nèi)容表示所述對(duì)應(yīng)的流所具有的COS隊(duì)列的數(shù)目;使一個(gè)第二存儲(chǔ)器中的每一位對(duì)應(yīng)一個(gè)COS隊(duì)列,所述每一位標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列是否有包;根據(jù)將要調(diào)度的流的ID從所述第一存儲(chǔ)器中獲取所述將要調(diào)度的流的COS隊(duì)列的數(shù)目;根據(jù)將要調(diào)度的流ID以及從所述第一存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列的數(shù)目,確定所述第二存儲(chǔ)器中與所述將要調(diào)度的流所包含的COS隊(duì)列相對(duì)應(yīng)的標(biāo)志位,根據(jù)對(duì)應(yīng)的所述標(biāo)志位得知所述將要調(diào)度的流所包含的COS隊(duì)列是否有包;根據(jù)從所述第二存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列是否有包的標(biāo)志位以及預(yù)先設(shè)定的優(yōu)先規(guī)則,確定所述第二存儲(chǔ)器中對(duì)應(yīng)的應(yīng)該被優(yōu)先調(diào)度的COS隊(duì)列。
其中,每一個(gè)流的COS隊(duì)列的數(shù)目為2n,其中n為非負(fù)整數(shù),對(duì)于不同的流n值可以不同,n的最大值為N,每一個(gè)流具有的COS隊(duì)列數(shù)目的最大值為2N;所述第一存儲(chǔ)器的深度為流的個(gè)數(shù)的最大值NFmax,寬度為N;所述第二存儲(chǔ)器的深度為所述流數(shù)目的最大值與每一個(gè)流所具有的COS隊(duì)列數(shù)目的最大值的比值NFmax/2N,寬度為2N。
其中,每一個(gè)流所包含的每一個(gè)COS隊(duì)列是否有包的信息連續(xù)儲(chǔ)存在所述第二存儲(chǔ)器中,對(duì)于每一個(gè)流來(lái)說(shuō),如果n=K,其中K為自然數(shù),則設(shè)置所述流ID的低K位為0,流ID就是它的最小COS隊(duì)列號(hào),后繼的2k-1個(gè)隊(duì)列都是該流的隊(duì)列。
其中,NFmax可以表示為2XX+1,XX為非負(fù)整數(shù),每一個(gè)流ID都可以表示為一維數(shù)組FID[XX:0],所述流ID具有高位部分FID[XX:N]和低位部分FID[N-1:0],當(dāng)向某一個(gè)流發(fā)起出隊(duì)調(diào)度時(shí),所述調(diào)度過(guò)程具體包括如下步驟以所述流ID為地址,讀取所述第一存儲(chǔ)器,得到所述流的隊(duì)列數(shù)目為2K,同時(shí),以所述流ID的高位FID[XX:N]為地址,讀取所述第二存儲(chǔ)器,得到所述流的COS隊(duì)列是否有包的信息;根據(jù)流ID的低位FID[N-1:K-1]、N、K和所述是否有包的信息,按照預(yù)先確定的優(yōu)先規(guī)則,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)相對(duì)所述流ID的偏移值X;將所述流ID的高位與所述將要調(diào)度的COS隊(duì)列的偏移值X連接,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)QID={FID[XX:N],X}。
其中,獲取所述偏移值X的步驟包括提供一個(gè)一維數(shù)組MSK[N-1:0],將所述一維數(shù)組MSK[N-1:0]的每一位都置為零;已知N、K,得到FID[N-1:K-1];對(duì)MSK[A:B]按位取反,其中,A=(2K+1)*FID[N-1:K-1]-1;B=2K*FID[N-1:K-1];以FID[XX:N]為地址訪問(wèn)所述第二存儲(chǔ)器,得到相應(yīng)的每一個(gè)COS隊(duì)列是否有包的標(biāo)志位,再將所述標(biāo)志位和所述一維數(shù)組MSK[N-1:0]作與操作,得到的結(jié)果代入函數(shù)GET_FIRST_TRUE中計(jì)算得出偏移值X[N-1:0]。
根據(jù)本發(fā)明的另一方面,還提供了一種針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度裝置,其中每一個(gè)所述流都具有至少一個(gè)COS隊(duì)列,不同COS隊(duì)列具有不同的業(yè)務(wù)優(yōu)先級(jí),其特征在于,所述調(diào)度裝置包括如下裝置第一存儲(chǔ)器,其每一個(gè)地址對(duì)應(yīng)一個(gè)流,所述每一個(gè)地址的內(nèi)容表示所述對(duì)應(yīng)的流所具有的COS隊(duì)列的數(shù)目;第二存儲(chǔ)器,其每一位對(duì)應(yīng)一個(gè)COS隊(duì)列,所述每一位標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列是否有包;第一讀取裝置,用于根據(jù)將要調(diào)度的流ID,從所述第一存儲(chǔ)器中讀取所述將要調(diào)度的流的COS隊(duì)列的數(shù)目;第二讀取裝置,用于根據(jù)將要調(diào)度的流ID以及從所述第一存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列的數(shù)目,從所述第二存儲(chǔ)器中讀取與所述將要調(diào)度的流所包含的COS隊(duì)列相對(duì)應(yīng)的標(biāo)志位,根據(jù)對(duì)應(yīng)的所述標(biāo)志位得知所述將要調(diào)度的流所包含的COS隊(duì)列是否有包;以及計(jì)算裝置,用于根據(jù)從所述第二存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列是否有包的標(biāo)志位以及預(yù)先設(shè)定的優(yōu)先規(guī)則,確定所述第二存儲(chǔ)器中哪一位對(duì)應(yīng)的COS隊(duì)列應(yīng)該被優(yōu)先調(diào)度。
其中,每一個(gè)流的COS隊(duì)列的數(shù)目為2n,其中n為非負(fù)整數(shù),對(duì)于不同的流n值可以不同,n的最大值為N,每一個(gè)流具有的COS隊(duì)列數(shù)目的最大值為2N;所述第一存儲(chǔ)器的深度為流的個(gè)數(shù)的最大值NFmax,寬度為N;所述第二存儲(chǔ)器的深度為所述流數(shù)目的最大值與每一個(gè)流所具有的COS隊(duì)列數(shù)目的最大值的比值NFmax/2N,寬度為2N。
其中,每一個(gè)流所包含的每一個(gè)COS隊(duì)列是否有包的信息連續(xù)儲(chǔ)存在所述第二存儲(chǔ)器中,對(duì)于每一個(gè)流來(lái)說(shuō),如果n=K,其中K為自然數(shù),則設(shè)置所述流ID的低K位為0,流ID就是它的最小COS隊(duì)列號(hào),后繼的2k-1個(gè)隊(duì)列都是該流的隊(duì)列。
其中,NFmax可以表示為2XX+1,其中XX為非負(fù)整數(shù),每一個(gè)流ID都可以表示為一維數(shù)組FID[XX:0],所述流ID具有高位部分FID[XX:N]和低位部分FID[N-1:0],當(dāng)向某一個(gè)流發(fā)起出隊(duì)調(diào)度時(shí),所述第一讀取裝置以所述流ID為地址,讀取所述第一存儲(chǔ)器,得到所述流的隊(duì)列數(shù)目為2K;所述第二讀取裝置以所述流ID的高位FID[XX:N]為地址,讀取所述第二存儲(chǔ)器,得到所述流的COS隊(duì)列是否有包的信息;所述計(jì)算裝置包括偏移值計(jì)算裝置,用于根據(jù)流ID的低位FID[N-1:K-1]、N、K和所述是否有包的信息,按照預(yù)先確定的優(yōu)先規(guī)則,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)相對(duì)所述流ID的偏移值X,以及隊(duì)列號(hào)計(jì)算裝置,用于將所述流ID的高位與所述將要調(diào)度的COS隊(duì)列的偏移值X連接,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)QID={FID[XX:N],X}。
其中,所述偏移值計(jì)算裝置包括第一計(jì)算裝置,用于提供一個(gè)一維數(shù)組MSK[N-1:0],并將所述一維數(shù)組MSK[N-1:0]的每一位都置為零;第二計(jì)算裝置,用于根據(jù)已知的N、K,得到FID[N-1:K-1];第三計(jì)算裝置,用于對(duì)MSK[A:B]按位取反,其中A=(2K+1)*FID[N-1:K-1]-1,B=2K*FID[N-1:K-1];第四計(jì)算裝置,用于以FID[XX:N]為地址訪問(wèn)所述第二存儲(chǔ)器,得到相應(yīng)的每一個(gè)COS隊(duì)列是否有包的標(biāo)志位,再將所述標(biāo)志位和所述一維數(shù)組MSK[N-1:0]作“與”操作,得到的結(jié)果代入函數(shù)GET_FIRST_TRUE中計(jì)算得出偏移值X[N-1:0]。
采用上述技術(shù)方案,本發(fā)明具有如下有益效果利用第一存儲(chǔ)器標(biāo)識(shí)每個(gè)流的優(yōu)先級(jí)數(shù)目,也就是優(yōu)先隊(duì)列的個(gè)數(shù)。并利用第二存儲(chǔ)器連續(xù)存儲(chǔ)每個(gè)COS隊(duì)列是否有包的信息,這樣,利用這兩個(gè)存儲(chǔ)器,可以以非常小的成本靈活地滿足客戶的COS隊(duì)列數(shù)目的需求。
單一芯片可以同時(shí)支持多種流,每個(gè)流的優(yōu)先級(jí)數(shù)目可以不同,形成一種多模式業(yè)務(wù)級(jí)別的組織調(diào)度方式。
下面結(jié)合附圖,詳細(xì)說(shuō)明本發(fā)明的具體實(shí)施例。
圖1所示為根據(jù)本發(fā)明的組織調(diào)度裝置的原理方框圖;圖2所示為第一存儲(chǔ)器PRINUM RAM的存儲(chǔ)結(jié)構(gòu)示意圖;圖3所示為第二存儲(chǔ)器PKTVLD RAMR的存儲(chǔ)結(jié)構(gòu)示意圖;圖4所示為根據(jù)本發(fā)明的偏移值計(jì)算裝置51的原理方框圖;圖5所示根據(jù)本發(fā)明的針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度方法的流程圖;圖6所示為本發(fā)明所述方法中獲取流ID與所述將要調(diào)度的COS隊(duì)列的偏移值X的方法流程圖。
具體實(shí)施例方式
參見(jiàn)圖1,根據(jù)本發(fā)明的針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度裝置包括第一存儲(chǔ)器10、第二存儲(chǔ)器20、第一讀取裝置30、第二讀取裝置40以及計(jì)算裝置50。
第一存儲(chǔ)器10,其每一個(gè)地址對(duì)應(yīng)一個(gè)流,所述每一個(gè)地址的內(nèi)容表示所述對(duì)應(yīng)的流所具有的COS隊(duì)列的數(shù)目。
第二存儲(chǔ)器20,其每一位對(duì)應(yīng)一個(gè)COS隊(duì)列,所述每一位標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列是否有包。它存儲(chǔ)的是對(duì)應(yīng)COS隊(duì)列是否有包的標(biāo)志。
第一存儲(chǔ)器10和第二存儲(chǔ)器20具體可以是隨機(jī)存儲(chǔ)器。
下面以N=2,最大流數(shù)目為2048為例,解釋兩塊存儲(chǔ)器中存儲(chǔ)的信息的含義。
參見(jiàn)圖2,所示為第一存儲(chǔ)器10的存儲(chǔ)結(jié)構(gòu)示意圖。該第一存儲(chǔ)器10的深度等于所能支持的最大流的數(shù)目NFmax,也就是當(dāng)每個(gè)流只包含一個(gè)COS隊(duì)列時(shí)這些COS隊(duì)列的總數(shù),在圖2所示的例子中,該值為2048。第一存儲(chǔ)器10的每個(gè)地址中的內(nèi)容表示對(duì)應(yīng)流有多少個(gè)COS隊(duì)列,每個(gè)流的COS隊(duì)列的個(gè)數(shù)只能是1,2,4,8...等這樣的2的n次冪的形式,其中n為非負(fù)整數(shù),n的最大值為N。例如,在圖1中所表示的N為2的情況下,每個(gè)流所包含的COS隊(duì)列的個(gè)數(shù)可以是1,2,4。
我們可以規(guī)定第一存儲(chǔ)器10中的內(nèi)容b1,b0與該流的COS隊(duì)列數(shù)目的關(guān)系2’b01表示有1個(gè)COS隊(duì)列;
2’b10表示有2個(gè)COS隊(duì)列;2’b00表示有4個(gè)COS隊(duì)列;2’b11可以用來(lái)表示該流無(wú)效。
最大流的數(shù)目NFmax可以表示為2XX+1,其中XX為非負(fù)整數(shù),每一個(gè)流的ID都可以表示為一維數(shù)組FID[XX:0],流ID具有高位部分FID[XX:N]和低位部分FID[N-1:0]。N是一個(gè)流可配置的COS隊(duì)列數(shù)目的最大指數(shù),即K的最大值。
同時(shí)我們做如下限制當(dāng)一個(gè)流的COS隊(duì)列數(shù)目,即優(yōu)先級(jí)數(shù)目等于2K,K>0時(shí),它的流ID就是它的最小COS隊(duì)列號(hào),后繼的2K-1個(gè)隊(duì)列都是該流的隊(duì)列。這個(gè)流ID的值必須低K位為0。當(dāng)K等于0時(shí),無(wú)限制。
流ID的低K位即指FID[K-1:0],是FID[XX:0]的一部分。一個(gè)流可能含有2的K次冪個(gè)隊(duì)列,這個(gè)流的流ID等于這連續(xù)的2的K次冪個(gè)隊(duì)列中的最小的隊(duì)列的ID號(hào),因此,它的低K位必然為0。舉例來(lái)說(shuō),如果一共有16個(gè)隊(duì)列,每4(2的2次冪,K=2,)個(gè)隊(duì)列一個(gè)流,流ID就只能是0,4,8,12,一共有這4個(gè)流,所有流的ID的低2位只能為0。
因此,當(dāng)存在COS隊(duì)列數(shù)目大于1的流時(shí),流ID是不連續(xù)的。
參見(jiàn)圖3,所示為第二存儲(chǔ)器20的存儲(chǔ)結(jié)構(gòu)示意圖。該第二存儲(chǔ)器20的寬度為每個(gè)流能夠包含的COS隊(duì)列的最大數(shù)目2N=4,它的每一位b1,b2,b3,b4對(duì)應(yīng)一個(gè)COS隊(duì)列,表示該隊(duì)列中是否有待出隊(duì)的業(yè)務(wù),也即該隊(duì)列中是否有包。我們可以規(guī)定,0表示無(wú)包,1表示有包。
當(dāng)每個(gè)流的COS隊(duì)列數(shù)目少于最大數(shù)目時(shí),同樣能夠在一拍內(nèi)得到特定流的各個(gè)隊(duì)列的有包無(wú)包狀態(tài)。
再來(lái)看圖1。
第一讀取裝置30,用于根據(jù)將要調(diào)度的流ID,從所述第一存儲(chǔ)器10中讀取所述將要調(diào)度的流的COS隊(duì)列的數(shù)目。
第二讀取裝置40,用于根據(jù)將要調(diào)度的流ID以及從第一存儲(chǔ)器20中獲取的將要調(diào)度的流的COS隊(duì)列的數(shù)目,從第二存儲(chǔ)器20中讀取與將要調(diào)度的流所包含的COS隊(duì)列相對(duì)應(yīng)的標(biāo)志位,根據(jù)對(duì)應(yīng)的所述標(biāo)志位得知將要調(diào)度的流所包含的COS隊(duì)列是否有包。
當(dāng)向某一個(gè)流發(fā)起出隊(duì)調(diào)度時(shí),第一讀取裝置30以流ID(包括流ID的所有位,即FID[XX;N])為地址,讀取第一存儲(chǔ)器10,得到流的隊(duì)列數(shù)目為2K;第二讀取裝置40以流ID的高位FID[XX:N]為地址,讀取第二存儲(chǔ)器20,得到流的COS隊(duì)列是否有包的信息。
計(jì)算裝置50,用于根據(jù)從第二存儲(chǔ)器20中獲取的將要調(diào)度的流的COS隊(duì)列是否有包的標(biāo)志位以及預(yù)先設(shè)定的優(yōu)先規(guī)則,確定第二存儲(chǔ)器20中哪一位對(duì)應(yīng)的COS隊(duì)列應(yīng)該被優(yōu)先調(diào)度。該計(jì)算裝置50包括偏移值計(jì)算裝置51和隊(duì)列號(hào)計(jì)算裝置52。
偏移值計(jì)算裝置51,用于根據(jù)流ID的低位FID[N-1:K-1]、N、K和是否有包的信息,按照預(yù)先確定的優(yōu)先規(guī)則,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)相對(duì)流ID的偏移值X。其中,偏移值計(jì)算裝置51進(jìn)一步包括
第一計(jì)算裝置511,用于提供一個(gè)一維數(shù)組MSK[N-1:0],并將該一維數(shù)組MSK[N-1:0]的每一位都置為零。
第二計(jì)算裝置512,用于根據(jù)已知的N、K,得到FID[N-1:K-1]。
第三計(jì)算裝置513,用于對(duì)MSK[A:B]按位取反,其中A=(2K+1)*FID[N-1:K-1]-1,B=2K*FID[N-1:K-1],;第四計(jì)算裝置514,用于以FID[XX:N]為地址訪問(wèn)第二存儲(chǔ)器20,得到相應(yīng)的每一個(gè)COS隊(duì)列是否有包的標(biāo)志位,再將該標(biāo)志位和一維數(shù)組MSK[N-1:0]作“與”操作,并將得到的結(jié)果代入函數(shù)GET_FIRST_TRUE中計(jì)算得出偏移值X[N-1:0]。
隊(duì)列號(hào)計(jì)算裝置52,用于將流ID的高位與將要調(diào)度的COS隊(duì)列的偏移值X連接,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)QID={FID[XX:N],X}。
這樣,通過(guò)上述裝置,就可以實(shí)現(xiàn)對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度。
以下對(duì)根據(jù)本發(fā)明的針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度方法進(jìn)行說(shuō)明。
圖5所示為根據(jù)本發(fā)明的針對(duì)用戶流的多模式COS隊(duì)列的調(diào)度方法的流程圖,表示采用本方案時(shí),當(dāng)向某流發(fā)起調(diào)度時(shí),調(diào)度器是如何得到應(yīng)該調(diào)度哪一個(gè)隊(duì)列的。本方法包括如下步驟步驟S110,使一個(gè)第一存儲(chǔ)器10中的每一個(gè)地址對(duì)應(yīng)一個(gè)流,所述每一個(gè)地址的內(nèi)容表示所述對(duì)應(yīng)的流所具有的COS隊(duì)列的數(shù)目;
步驟S120,使一個(gè)第二存儲(chǔ)器20中的每一位對(duì)應(yīng)一個(gè)COS隊(duì)列,所述每一位標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列是否有包;步驟S130,當(dāng)向某一個(gè)流發(fā)起出對(duì)調(diào)度時(shí),通過(guò)第一裝置30,以流ID為地址,讀取第一存儲(chǔ)器10,找出該流有多少個(gè)COS隊(duì)列,設(shè)得到的值為2K。
步驟S140,通過(guò)第二讀取裝置40,以流ID的高位FID[XX:N]為地址,讀取第二存儲(chǔ)器20,得到該流及其隊(duì)列是否有包的信息PKTVLD。
步驟S150,通過(guò)計(jì)算裝置50,根據(jù)從所述第二存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列是否有包的標(biāo)志位以及預(yù)先設(shè)定的優(yōu)先規(guī)則,確定所述第二存儲(chǔ)器中哪一位對(duì)應(yīng)的COS隊(duì)列應(yīng)該被優(yōu)先調(diào)度。該步驟S150具體包括步驟S151,通過(guò)偏移值計(jì)算裝置51,根據(jù)FID[N-1:K-1]、N、K和PKTVLD得到當(dāng)前應(yīng)該調(diào)度的隊(duì)列號(hào)的偏移值X,在這里,根據(jù)FID[N-1:K-1]和N,K可以知道PKTVLD中哪些位是對(duì)應(yīng)該流的隊(duì)列的是否有包標(biāo)志位,再根據(jù)這些位和預(yù)先設(shè)定的優(yōu)先規(guī)則就可以得到PKTVLD哪一位對(duì)應(yīng)的COS隊(duì)列應(yīng)該被優(yōu)先調(diào)度。也就是得到了COS隊(duì)列號(hào)的偏移值X。
圖6所示為獲取流ID與所述將要調(diào)度的COS隊(duì)列的偏移值X的一種具體實(shí)施方式
的流程圖,圖5中計(jì)算偏移值X的步驟具體可以采用該方式。
參見(jiàn)圖6,當(dāng)根據(jù)FID[N-1:K-1]、N、K和PKTVLD,開(kāi)始計(jì)算當(dāng)前應(yīng)該調(diào)度的隊(duì)列號(hào)的偏移值X時(shí),要執(zhí)行以下步驟。
步驟S1511,通過(guò)第一計(jì)算裝置511,提供一個(gè)一維數(shù)組MSK[N-1:0],將該一維數(shù)組MSK[N-1:0]的每一位都置為零;MSK[N-1:0]是一個(gè)一維比特序列,可以看作數(shù)組,即一個(gè)大小為N的BOOL數(shù)組。MSK[A:B]中必然有A≤N-1,0<B≤A。
步驟S1512,通過(guò)第二計(jì)算裝置512,根據(jù)已知的N、K,得到FID[N-1:K-1];步驟S1513,通過(guò)第三計(jì)算裝置513,對(duì)MSK[A:B]按位取反,其中A=(2K+1)*FID[N-1:K-1]-1,B=2K*FID[N-1:K-1];MSK[A:B]是MSK[N-1:0]的一部分,是它的第B位開(kāi)始到第A位的子位串。
步驟S1514,通過(guò)第四計(jì)算裝置514,以FID[XX:N]為地址訪問(wèn)所述第二存儲(chǔ)器20,得到相應(yīng)的每一個(gè)COS隊(duì)列是否有包的標(biāo)志位,再將所述標(biāo)志位和所述一維數(shù)組MSK[N-1:0]作“與”操作,得到的結(jié)果可以表示為一個(gè)參數(shù)PKT_VLD[FID[XX:N]]&MSK。將其代入函數(shù)X=GET_FIRST_TRUE(PKT_VLD[FID[XX:N]]&MSK)中,就可以計(jì)算得出偏移值X[N-1:0]。這個(gè)函數(shù)可以有多種方法實(shí)現(xiàn),舉例如下GET_FIRST_TRUE(A[N-1:0])BEGINFOR(I=0 TO N-1)BEGINIF(A[I]==1)BEGINRETURNI;ENDRETURN NO_VALID;END
最后,再回到圖5,在步驟S152中,通過(guò)隊(duì)列號(hào)計(jì)算裝置52,將FID[XX:N]與COS隊(duì)列號(hào)偏移值X[N-1:0]連接起來(lái),就得到了應(yīng)該調(diào)度的COS隊(duì)列號(hào)QID,也就是優(yōu)先編碼。
如果不用優(yōu)先編碼,也可以用其它方法,比如權(quán)重來(lái)決定哪一個(gè)COS隊(duì)列是優(yōu)先的。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度方法,其中每一個(gè)流都具有至少一個(gè)COS隊(duì)列,不同COS隊(duì)列具有不同的業(yè)務(wù)優(yōu)先級(jí),所述方法包括如下步驟使第一存儲(chǔ)器中的每一個(gè)地址對(duì)應(yīng)一個(gè)流,所述每一個(gè)地址的內(nèi)容表示所述對(duì)應(yīng)的流所具有的COS隊(duì)列的數(shù)目;使第二存儲(chǔ)器中的每一位對(duì)應(yīng)一個(gè)COS隊(duì)列,所述每一位標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列是否有包;根據(jù)將要調(diào)度的流的ID,從所述第一存儲(chǔ)器中獲取所述將要調(diào)度的流的COS隊(duì)列的數(shù)目;根據(jù)將要調(diào)度的流ID以及從所述第一存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列的數(shù)目,確定所述第二存儲(chǔ)器中與所述將要調(diào)度的流所包含的COS隊(duì)列相對(duì)應(yīng)的標(biāo)志位,根據(jù)對(duì)應(yīng)的所述標(biāo)志位得知所述將要調(diào)度的流所包含的COS隊(duì)列是否有包;根據(jù)從所述第二存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列是否有包的標(biāo)志位以及預(yù)先設(shè)定的優(yōu)先規(guī)則,確定所述第二存儲(chǔ)器中對(duì)應(yīng)的應(yīng)該被優(yōu)先調(diào)度的COS隊(duì)列。
2.根據(jù)權(quán)利要求1所述的組織調(diào)度方法,其特征在于,每一個(gè)流的COS隊(duì)列的數(shù)目為2n,其中n為非負(fù)整數(shù),對(duì)于不同的流n值可以不同,n的最大值為N,每一個(gè)流具有的COS隊(duì)列數(shù)目的最大值為2N;所述第一存儲(chǔ)器的深度為流的個(gè)數(shù)的最大值NFmax,寬度為N;所述第二存儲(chǔ)器的深度為所述流數(shù)目的最大值與每一個(gè)流所具有的COS隊(duì)列數(shù)目的最大值的比值NFmax/2N,寬度為2N。
3.根據(jù)權(quán)利要求2所述的組織調(diào)度方法,每一個(gè)流所包含的每一個(gè)COS隊(duì)列是否有包的信息連續(xù)儲(chǔ)存在所述第二存儲(chǔ)器中,對(duì)于每一個(gè)流來(lái)說(shuō),如果n=K,其中K為自然數(shù),則設(shè)置所述流ID的低K位為0,流ID就是它的最小COS隊(duì)列號(hào),后繼的2k-1個(gè)隊(duì)列都是該流的隊(duì)列。
4.根據(jù)權(quán)利要求3所述的組織調(diào)度方法,NFmax可以表示為2XX+1,其中XX為非負(fù)整數(shù),每一個(gè)流ID都可以表示為一維數(shù)組FID[XX:0],所述流ID具有高位部分FID[XX:N]和低位部分FID[N-1:0],當(dāng)向某一個(gè)流發(fā)起出隊(duì)調(diào)度時(shí),所述調(diào)度過(guò)程具體包括如下步驟以所述流ID為地址,讀取所述第一存儲(chǔ)器,得到所述流的隊(duì)列數(shù)目為2K,同時(shí),以所述流ID的高位FID[XX:N]為地址,讀取所述第二存儲(chǔ)器,得到所述流的COS隊(duì)列是否有包的信息;根據(jù)流ID的低位FID[N-1:K-1]、N、K和所述是否有包的信息,按照預(yù)先確定的優(yōu)先規(guī)則,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)相對(duì)所述流ID的偏移值X;將所述流ID的高位與所述將要調(diào)度的COS隊(duì)列的偏移值X連接,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)QID={FID[XX:N],X}。
5.根據(jù)權(quán)利要求4所述的組織調(diào)度方法,其中,獲取所述偏移值X的步驟包括提供一個(gè)一維數(shù)組MSK[N-1:0],將所述一維數(shù)組MSK[N-1:0]的每一位都置為零;已知N、K,得到FID[N-1:K-1];對(duì)MSK[A:B]按位取反,其中A=(2K+1)*FID[N-1:K-1]-1,B=2K*FID[N-1:K-1];以FID[XX:N]為地址訪問(wèn)所述第二存儲(chǔ)器,得到相應(yīng)的每一個(gè)COS隊(duì)列是否有包的標(biāo)志位,再將所述標(biāo)志位和所述一維數(shù)組MSK[N-1:0]作與操作,得到的結(jié)果代入函數(shù)GET_FIRST_TRUE中計(jì)算得出偏移值X[N-1:0]。
6.一種針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度裝置,其中每一個(gè)所述流都具有至少一個(gè)COS隊(duì)列,不同COS隊(duì)列具有不同的業(yè)務(wù)優(yōu)先級(jí),其特征在于,所述組織調(diào)度裝置包括如下裝置第一存儲(chǔ)器,其每一個(gè)地址對(duì)應(yīng)一個(gè)流,所述每一個(gè)地址的內(nèi)容表示所述對(duì)應(yīng)的流所具有的COS隊(duì)列的數(shù)目;第二存儲(chǔ)器,其每一位對(duì)應(yīng)一個(gè)COS隊(duì)列,所述每一位標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列是否有包;第一讀取裝置,用于根據(jù)將要調(diào)度的流ID,從所述第一存儲(chǔ)器中讀取所述將要調(diào)度的流的COS隊(duì)列的數(shù)目;第二讀取裝置,用于根據(jù)將要調(diào)度的流的ID以及從所述第一存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列的數(shù)目,從所述第二存儲(chǔ)器中讀取與所述將要調(diào)度的流所包含的COS隊(duì)列相對(duì)應(yīng)的標(biāo)志位,根據(jù)對(duì)應(yīng)的所述標(biāo)志位得知所述將要調(diào)度的流所包含的COS隊(duì)列是否有包;計(jì)算裝置,用于根據(jù)從所述第二存儲(chǔ)器中獲取的所述將要調(diào)度的流的COS隊(duì)列是否有包的標(biāo)志位以及預(yù)先設(shè)定的優(yōu)先規(guī)則,確定所述第二存儲(chǔ)器中對(duì)應(yīng)的應(yīng)該被優(yōu)先調(diào)度的COS隊(duì)列。
7.根據(jù)權(quán)利要求6所述的組織調(diào)度裝置,其特征在于,每一個(gè)流的COS隊(duì)列的數(shù)目為2n,其中n為非負(fù)整數(shù),對(duì)于不同的流n值可以不同,n的最大值為N,每一個(gè)流具有的COS隊(duì)列數(shù)目的最大值為2N;所述第一存儲(chǔ)器的深度為流的個(gè)數(shù)的最大值NFmax,寬度為N;所述第二存儲(chǔ)器的深度為所述流數(shù)目的最大值與每一個(gè)流所具有的COS隊(duì)列數(shù)目的最大值的比值NFmax/2N,寬度為2N。
8.根據(jù)權(quán)利要求7所述的組織調(diào)度裝置,其特征在于,每一個(gè)流所包含的每一個(gè)COS隊(duì)列是否有包的信息連續(xù)儲(chǔ)存在所述第二存儲(chǔ)器中,對(duì)于每一個(gè)流來(lái)說(shuō),如果n=K,其中K為自然數(shù),則設(shè)置所述流ID的低K位為0,流ID就是它的最小COS隊(duì)列號(hào),后繼的2k-1個(gè)隊(duì)列都是該流的隊(duì)列。
9.根據(jù)權(quán)利要求8所述的組織調(diào)度裝置,其特征在于,NFmax可以表示為2XX+1,其中XX為非負(fù)整數(shù),每一個(gè)流ID都可以表示為一維數(shù)組FID[XX:0],所述流ID具有高位部分FID[XX:N]和低位部分FID[N-1:0],當(dāng)向某一個(gè)流發(fā)起出隊(duì)調(diào)度時(shí),所述第一讀取裝置以所述流ID為地址,讀取所述第一存儲(chǔ)器,得到所述流的隊(duì)列數(shù)目為2K;所述第二讀取裝置以所述流ID的高位FID[XX:N]為地址,讀取所述第二存儲(chǔ)器,得到所述流的COS隊(duì)列是否有包的信息;所述計(jì)算裝置包括偏移值計(jì)算裝置,用于根據(jù)流ID的低位FID[N-1:K-1]、N、K和所述是否有包的信息,按照預(yù)先確定的優(yōu)先規(guī)則,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)相對(duì)所述流ID的偏移值X,以及隊(duì)列號(hào)計(jì)算裝置,用于將所述流ID的高位與所述將要調(diào)度的COS隊(duì)列的偏移值X連接,得到當(dāng)前將要調(diào)度的COS隊(duì)列號(hào)QID={FID[XX:N],X}。
10.根據(jù)權(quán)利要求9所述的組織調(diào)度裝置,其中,所述偏移值計(jì)算裝置包括第一計(jì)算裝置,用于提供一個(gè)一維數(shù)組MSK[N-1:0],并將所述一維數(shù)組MSK[N-1:0]的每一位都置為零;第二計(jì)算裝置,用于根據(jù)已知的N、K,得到FID[N-1:K-1];第三計(jì)算裝置,用于對(duì)MSK[A:B]按位取反,其中A=(2K+1)*FID[N-1:K-1]-1,B=2K*FID[N-1:K-1];第四計(jì)算裝置,用于以FID[XX:N]為地址訪問(wèn)所述第二存儲(chǔ)器,得到相應(yīng)的每一個(gè)COS隊(duì)列是否有包的標(biāo)志位,再將所述標(biāo)志位和所述一維數(shù)組MSK[N-1:0]作“與”操作,得到的結(jié)果代入函數(shù)GET_FIRST_TRUE中計(jì)算得出偏移值X[N-1:0]。
全文摘要
本發(fā)明公開(kāi)了一種針對(duì)用戶流的多模式COS隊(duì)列的組織調(diào)度方法,包括如下步驟使第一存儲(chǔ)器中的每一個(gè)地址對(duì)應(yīng)一個(gè)流,其內(nèi)容表示對(duì)應(yīng)的流所具有的COS隊(duì)列的數(shù)目;使第二存儲(chǔ)器中的每一位對(duì)應(yīng)一個(gè)COS隊(duì)列,標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列是否有包;從第一存儲(chǔ)器中獲取將要調(diào)度的流的COS隊(duì)列的數(shù)目;確定第二存儲(chǔ)器中與將要調(diào)度的流所包含的COS隊(duì)列相對(duì)應(yīng)的標(biāo)志位,確定將要調(diào)度的流所包含的COS隊(duì)列是否有包;確定第二存儲(chǔ)器中對(duì)應(yīng)的應(yīng)該被優(yōu)先調(diào)度的COS隊(duì)列。本發(fā)明還公開(kāi)了相應(yīng)的裝置。本發(fā)明的技術(shù)方案能夠能夠靈活配置COS隊(duì)列數(shù)目,提高資源利用率,從而降低成本。
文檔編號(hào)G06F13/00GK1812371SQ20051003310
公開(kāi)日2006年8月2日 申請(qǐng)日期2005年1月30日 優(yōu)先權(quán)日2005年1月30日
發(fā)明者徐興利, 尚秋平 申請(qǐng)人:華為技術(shù)有限公司