專利名稱:一種數據調度方法及系統的制作方法
技術領域:
本發明涉及網絡通信技術領域,尤其涉及一種數據調度方法及系統。
背景技術:
通信系統中的數據傳輸經常會出現排隊的情況,不同的系統承載數據流等待系統對其進行轉發和處理,這時系統就需要根據一定的優先級劃分對正在排隊等候的數據流進行調度。
系統對優先級的劃分可以根據用戶的需要、數據流的類型進行具體的規定和調整。比如,在數據通信中的實時交互式數據流要求低延遲、低抖動,非實時交互式數據流要求延遲可以較大,但是抖動一定要小,因此將實時交互式數據流的調度優先級設置為高于非實時交互式數據流的調度優先級,這樣便可以同時保證實時交互式數據流和非實時交互式數據流各自的要求。
現有通信的數據速率越來越高,對參加排隊的數據流調度算法也越來越復雜,調度算法運算的時間也越來越長。在這種情況下,需要提高調度器的處理能力。
如果每次調度轉發的運算時間(Tsch)小于數據流平均到達時間間隔(Tcin)則數據流基本無須排隊或者僅用很短的排隊時間就可以得到服務;但如果Tsch大于Tcin,隊列的長度就會不斷加長。
對于通信系統而言,Tsch大于Tcin的情況是非常可能發生的,為了盡可能降低Tsch,可以通過增加多個調度器并行工作的方法提高對數據流的調度頻率,提高單位時間內對數據流的調度能力。
目前,現有技術提供了兩種提高調度器性能的方案,下面將分別進行說明。
第一種實現方案為通過增加多個調度器并行工作的方法來提高調度器的整體性能。隨著并行工作的調度器個數的增加,對數據流的調度能力也相應隨之增加。
當兩個調度器對數據流進行調度時會產生“空調度”(即某些時候調度器選中的是一個空閑的隊列,浪費了調度機會)的情況,如果繼續增加調度器個數,在提高調度速度的同時,空調度也會越來越嚴重,在一定程度上浪費了系統的調度能力。
第二種實現方案為盡可能利用先進的半導體工藝提高單個調度器的處理能力。
但由于這種調度器的性能嚴重依賴于半導體的工藝,成本很高,在實際應用中不易推廣。而且隨著調度算法方法復雜程度的提高,這種單個高性能調度器實現的難度越來越大。
發明內容
本發明的目的是提供一種數據調度方法及系統,以減少數據調度過程輸出空隊列的情況,提高調度效率。
本發明的目的是通過以下技術方案實現的一種數據調度方法,應用于一種數據調度系統,所述數據調度系統包括下級調度單元和多個上級調度單元,該方法包括A、上級調度單元對排隊隊列進行調度,將被調度隊列輸出至下級調度單元;
B、下級調度單元檢測所接收隊列的空閑狀態信息,并根據檢測結果選擇一個非空隊列輸出。
所述步驟B包括B1、當下級調度單元所接收的隊列為非空閑隊列時,下級調度單元將所述非空閑隊列調度輸出。
所述步驟B包括B2、當下級調度單元所接收的隊列為非空閑隊列時,下級調度單元從排隊隊列中選擇一個非空閑隊列代替空閑隊列輸出。
所述步驟B2包括B21、下級調度單元對處于排隊狀態的各隊列進行狀態檢測,當排隊隊列包含非空閑隊列,下級調度單元從處于排隊狀態的隊列中選擇一個非空閑隊列輸出。
所述步驟B2包括B22、下級調度單元對處于排隊狀態的各隊列進行狀態檢測,當排隊隊列不包含非空閑隊列,下級調度單元從處于排隊狀態的隊列中選擇一個空閑隊列輸出。
所述步驟B22中下級調度單元是采用帶權重的輪轉調度的方法從處于排隊狀態的隊列中選擇一個非空閑隊列調度輸出。
上級調度單元和下級調度單元按照預先設定的調度方法從排隊隊列中調度隊列,其中,預先設定的調度方法為帶權重的輪詢WRR、輪詢RR、動態輪詢DRR、帶權重的公平排隊WFQ、SHVC和/或嚴格優先級SP調度方法。
一種數據調度系統,包括至少一個上級調度單元,所述的系統還包括下級調度單元,所述下級調度單元包括隊列檢測模塊,用于檢測上級調度單元發送的隊列是否為空隊列;
隊列調度模塊,用于根據對來自上級調度單元的隊列的狀態的檢測結果選擇一隊非空隊列輸出。
所述的隊列調度模塊包括空閑調度子模塊,用于在檢測到被調度隊列為空隊列時從排隊隊列中調度輸出一隊非空隊列;非空閑調度子模塊,用于在檢測到被調度隊列為非空隊列時輸出該隊列。
由上述本發明提供的技術方案可以看出,本發明通過設置下級調度單元使最終的調度結果較少出現空調度的情況,在不大幅提高成本的情況下提高整個調度器的調度效率。
圖1所示為本發明所述調度方法的實施例一中隊列及與隊列相關的信息在不同調度單元中傳輸的示意圖;圖2所示為本發明所述數據調度方法的實施例一的流程圖;圖3所示為本發明實施例一中下級調度單元工作流程圖;圖4所示為本發明所述調度系統實施例一的示意圖。
具體實施例方式
為了使本發明的目的、技術方案及優點更加清楚,以下結合附圖及實施例,對本發明進行詳細說明。
本發明的核心是上級調度單元對排隊隊列進行調度,將被調度隊列輸出至下級調度單元;下級調度單元檢測所接收隊列的空閑狀態信息,并根據檢測結果選擇一個非空隊列輸出,以避免輸出空隊列,提高調度效率。
具體一點講,本發明中的一個上級調度單元調度處于排隊狀態的隊列或多個上級調度單元輪流調度處于排隊狀態的隊列,并將被調度的隊列輸出至下級調度單元;下級調度單元檢測由上級調度單元調度的各隊列的狀態信息,當隊列為非空隊列,則直接將該隊列輸出,當隊列為空隊列,則下級調度單元檢測當前各排隊隊列的狀態信息,直接從排隊隊列中選擇一隊非空隊列輸出,使得本發明調度輸出的隊列均為非空隊列。
本發明中由于存在多個處于排隊狀態的非空隊列,因此上級調度單元和下級調度單元調度時需要從多個非空隊列中進行選擇。
本發明為上級調度單元和下級調度單元預先設置了調度算法,預先設定的調度算法包括帶權重的輪詢WRR、輪詢RR、動態輪詢DRR、帶權重的公平排隊WFQ、定型虛擬時鐘SHVC、嚴格優先級SP等調度算法。
下面結合圖1、圖2和圖3說明本發明提供的數據調度方法實施例一的詳細過程如圖1所示,當排隊隊列進入排隊器后,上級調度單元從排隊隊列中獲取調度單元需要的隊列狀態信息;然后上級調度單元的調度結果以及調度結果的狀態信息被上級調度單元發送至下級調度單元;下級調度單元不僅接收來自上級調度單元的信息,還能夠在接收到空隊列時從在上級調度單元進行排隊的隊列中獲取排隊隊列的信息;下級調度單元最終從所接收到的上級調度單元輸出隊列中或從排隊隊列中選擇一隊非空隊列輸出,完成調度輸出過程。
結合圖1,如圖2、圖3所示的本發明調度方法實施例一的調度過程包括以下步驟。
步驟1、上級調度單元對排隊隊列進行調度,將被調度隊列輸出至下級調度單元。
所述步驟1包括上級調度單元檢測并維護各隊列的狀態信息和上級調度單元調度輸出隊列兩個過程。
上級調度單元檢測并維護各隊列的狀態信息的詳細過程如下。
上級調度單元在首次對排隊隊列進行調度時,對處于排隊狀態的所有隊列進行檢測,確定各排隊隊列為空隊列或為非空隊列。
由于排隊隊列中基本上均存在多個非空隊列,因此在調度非空隊列時需要確定隊列調度輸出的次序。因此,上級調度單元在檢測各排隊隊列的空閑狀態后還對各非空隊列的優先級進行檢測,以便按照各非空隊列的優先級順序調度輸出各隊列。
各隊列優先級的是根據實際系統設計需求來制定的,例如為了保證語音數據的延遲最短,可以將語音數據隊列定為高優先級,將其它數據的隊列定為低優先級。
根據實際情況,隊列優先級具有多種制定標準,本發明中所舉出的僅為部分實例,優先級的制定并不限于上述實例。
在每次調度運算開始時,上級調度單元中的調度器采集當時的所有隊列狀態,比如語音、email數據隊列的空閑狀態。這些采集的數據將作為上級調度器運算的輸入參數。
上級調度單元檢測并維護各隊列的狀態信息后將調度輸出隊列,其過程如下。
在對排隊隊列的調度輸出中,由于單個調度單元的調度速度有限,當需要較高的調度輸出速率時,上級調度單元需使用多個調度器輪流進行調度,調度器的具體數量根據實際情況確定。
在本發明實施例二中,輸出端口的最大輸出速率為125M cell/s,且該最大輸出速率不可變,系統時鐘頻率為250MHz,即每個時鐘周期為4ns。
由于該實施例中上級調度單元的每個調度器從調度開始到調度完成均需要采集4個隊列空閑狀態并從中選擇一個隊列,假定完成一次調度至少需要4個時鐘周期(16ns),單獨使用一個調度器時調度速度最高為62.5M cell/s。
由于輸出端口的最大輸出速率為125M cell/s,為了充分利用輸出端口,本發明實施例二中需要每經過2個時鐘周期(8ns)輸出一次調度結果(用2bit的q_sel[1:0]代表選中的隊列號,sel_vld代表上行調度器自己認為q_sel是一個有效值,高電平有效),達到速率為125M cell/s。
因此需要在上級調度單元中使用上級調度器A和上級調度器器B輪流對隊列進行調度,這樣對隊列的調度速度提高了一倍,實現了每2個時鐘周期輸出一次調度結果。
在本發明實施例二中的排隊隊列的優先級共分為4個級別,由低至高分別為class3、class2、class1、class0。
本實施例用4個一位二進制數分別表示表示4個隊列中各隊列的空閑狀態如果一個隊列對應的一位參數為1,則表示該隊列為空隊列;如果對應的參數位為0,則表示該隊列為非空隊列。
在本發明實施例一的優先級劃分中,class0隊列是優先級最高的隊列(比如語音隊列),它與其它隊列之間執行嚴格優先級調度(SP,strictpriorty),只要隊列中存在優先級為class0的隊列,則調度的結果就一定是選擇優先級為class0的隊列的數據輸出;對于優先級為class1、class2、class3的隊列,其優先級低于class0,本實施例對這些隊列的調度遵循帶權重的公平輪轉調度(WRR,weightedround robin),其調度權重分別為a∶b∶c。如果class1/2/3三個隊列的空閑狀態參數都為0,即各隊列均不為空,如果對三個隊列一共進行(a+b+c)次調度,那么隊列1獲得a次調度,隊列2獲得b次調度,隊列3獲得c次調度。
步驟2、下級調度單元檢測所接收隊列的空閑狀態信息,并根據檢測結果選擇一個非空隊列輸出。
圖3所示為步驟2的詳細過程。
下級調度單元接收上級調度單元調度輸出的隊列后,需要檢測所接收隊列的狀態,確定所接收隊列是空閑隊列還是非空閑隊列。
對于不同狀態的隊列,下級調度單元采用相應的處理方法。
步驟21、當下級調度單元所接收的隊列為非空閑隊列,則下級調度單元將該非空閑隊列調度輸出。所述下級調度單元接收的隊列來自上級調度單元的調度器A或調度器B。
步驟22、當下級調度單元所接收的隊列為空閑隊列,下級調度單元檢測排隊隊列的狀態,并選擇隊列輸出。
其中,所述步驟22包括步驟221、當排隊隊列中包含非空閑隊列,則下級調度單元從選擇一隊非空閑隊列輸出。
所述的處于排隊狀態的各隊列是指在上級調度單元處仍未被上級調度單元調度的排隊隊列。
下級調度單元直接對處于上級調度單元的隊列進行狀態檢測,確定各隊列的空閑狀態。
在確定非空閑隊列后,還需要對各非空閑隊列的優先級進行檢測,以便在調度輸出時確定輸出的優先順序。
下級調度單元從處于排隊狀態的各隊列中選擇一個非空閑隊列輸出。
所述步驟221中下級調度單元選擇一個非空閑隊列調度輸出時使用帶權重的輪轉調度方法。
由于在步驟221中,下級調度單元已經確定了排隊隊列中的非空閑隊列,并且確定了非空閑隊列的輸出優先級,因此當上級調度單元輸出空隊列時,下級調度單元按優先級順序從排隊隊列中選擇一個非空隊列調度輸出,確保最終輸出的隊列為非空隊列。
如本發明實施例一所述,當使用兩級調度單元調度輸出數據,且上級調度單元包括兩個調度器時,其數據的調度情況如表1所示
表1由表1可以看出,使用上級調度單元的調度器A和調度器B對排隊隊列進行“一次調度”時會出現空調度的情況,因此本發明實施例二在“一次調度”后,通過下級調度單元的調度器C對“一次調度”輸出的隊列進行“二次調度”,通過“二次調度”本發明實施例二大大降低了輸出空閑隊列的可能性。
步驟222、當排隊隊列中的各隊列全部為空閑隊列,這時由于各個排隊隊列全部為空閑,因此無需再進行選擇和比較,下級調度單元任選一空閑隊列輸出。
但由于在正常工作情況下排隊隊列中僅包含少量的空閑隊列,因此步驟222中的情況極少出現。
下面結合圖1和圖4說明本發明提供的數據調度系統圖4所示為本發明數據調度系統的實施例一,包括多個上級調度單元,所述的系統還包括下級調度單元,下級調度單元包括
隊列檢測模塊,用于檢測上級調度單元發送的隊列是否為空隊列;隊列調度模塊,用于根據對來自上級調度單元的隊列的狀態的檢測結果選擇一隊非空隊列。
所述的隊列調度模塊包括空閑調度子模塊,用于在檢測到被調度隊列為空隊列時從排隊隊列中調度輸出一隊非空隊列;非空閑調度子模塊,用于在檢測到被調度隊列為非空隊列時輸出該隊列。
在本發明的系統中,上級調度單元按照優先級順序將處于排隊狀態的隊列調度輸出至下級調度單元;下級調度單元接收被調度隊列后由狀態檢測模塊對所接收隊列的狀態進行檢測,確定所接收的隊列是否為空閑隊列;在確定隊列是否空閑后,下級調度單元的隊列調度模塊選擇一個非空閑隊列輸出;當隊列為非空閑,下級調度單元直接輸出該隊列,當隊列為空閑,下級調度單元不輸出該空隊列,從排隊隊列中調度一個非空隊列輸出。
以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。
權利要求
1.一種數據調度方法,應用于一種數據調度系統,所述數據調度系統包括下級調度單元和多個上級調度單元,其特征在于,該方法包括A、上級調度單元對排隊隊列進行調度,將被調度隊列輸出至下級調度單元;B、下級調度單元檢測所接收隊列的空閑狀態信息,并根據檢測結果選擇一個非空隊列輸出。
2.根據權利要求1所述的一種數據調度方法,其特征在于,所述步驟B具體為B1、當下級調度單元所接收的隊列為非空閑隊列時,下級調度單元將所述非空閑隊列調度輸出。
3.根據權利要求1所述的一種數據調度方法,其特征在于,所述步驟B具體為B2、當下級調度單元所接收的隊列為非空閑隊列時,下級調度單元從排隊隊列中選擇一個非空閑隊列代替空閑隊列輸出。
4.根據權利要求3所述的一種數據調度方法,其特征在于,所述步驟B2具體為B21、下級調度單元對處于排隊狀態的各隊列進行狀態檢測,當排隊隊列包含非空閑隊列,下級調度單元從處于排隊狀態的隊列中選擇一個非空閑隊列輸出。
5.根據權利要求3所述的一種數據調度方法,其特征在于,所述步驟B2具體為B22、下級調度單元對處于排隊狀態的各隊列進行狀態檢測,當排隊隊列不包含非空閑隊列,下級調度單元從處于排隊狀態的隊列中選擇一個空閑隊列輸出。
6.根據權利要求4所述的一種數據調度方法,其特征在于,所述步驟B21中下級調度單元是采用帶權重的輪轉調度的方法從處于排隊狀態的隊列中選擇一個非空閑隊列調度輸出。
7.根據權利要求1至6中任意一項所述的一種數據調度方法,其特征在于,上級調度單元和下級調度單元按照預先設定的調度方法從排隊隊列中調度隊列,其中,預先設定的調度方法為帶權重的輪詢WRR、輪詢RR、動態輪詢DRR、帶權重的公平排隊WFQ、SHVC和/或嚴格優先級SP調度方法。
8.一種數據調度系統,包括至少一個上級調度單元,其特征在于,所述的系統還包括下級調度單元,所述下級調度單元包括隊列檢測模塊,用于檢測上級調度單元發送的隊列是否為空隊列;隊列調度模塊,用于根據對來自上級調度單元的隊列的狀態的檢測結果選擇一隊非空隊列輸出。
9.根據權利要求8所述的一種數據調度系統,其特征在于,所述的隊列調度模塊包括空閑調度子模塊,用于在檢測到被調度隊列為空隊列時從排隊隊列中調度輸出一隊非空隊列;非空閑調度子模塊,用于在檢測到被調度隊列為非空隊列時輸出該隊列。
全文摘要
本發明提供了一種數據調度方法及系統,屬于通信領域。該方法包括上級調度單元對排隊隊列進行調度,將被調度隊列輸出至下級調度單元;下級調度單元檢測所接收隊列的空閑狀態信息,并根據檢測結果選擇一個非空隊列輸出。由上述本發明提供的技術方案可以看出,本發明通過設置下級調度單元使最終的調度結果較少出現空調度的情況,在不大幅提高成本的情況下提高整個調度器的調度效率。
文檔編號H04L1/18GK1889521SQ20061009931
公開日2007年1月3日 申請日期2006年7月13日 優先權日2006年7月13日
發明者唐德智 申請人:華為技術有限公司