專利名稱:合格優先權隊列調度器的制作方法
數據通信交換機在多個輸入上接收分組并且在多個輸出上發送分組。有時,分組來自兩個或更多指向相同輸出的輸入。為了最小化這樣的分組之間的沖突,使用排隊機制。隊列臨時存儲某些分組,而其它分組則使用向一個輸出傳送排隊分組所必需的帶寬。
通常由一個調度器協調競爭輸出帶寬的隊列分組釋放。許多調度器傾向使用嚴格的優先權調度規則,也就是說,隊列被分配不同的優先權等級并且允許具有相對較高優先權等級的隊列在具有相對較低優先權等級的隊列之前釋放分組。嚴格的優先權調度允許時間要求相對嚴格的數據流動優先于時間要求相對不嚴格的數據流動。
盡管有普遍效力,但嚴格的優先權調度并非沒有問題。一種不期望的效應是優先權阻塞。當從相對較低優先權隊列提交分組因較高優先級隊列的服務被延遲時,優先權阻塞就發生了。在等候釋放時優先權阻塞最終可以導致阻塞隊列中的分組被改寫,這種情況被稱為丟棄。丟棄不期望地干擾了被丟棄分組所涉及的數據流。
盡管在設計時假定優先權調度為某些隊列提供更快的服務,但在某些情況下違背嚴格優先權規則可以是允許的。例如,“填充”單獨一個具有接收非關鍵或冗余(例如,在一個未分解擴散樹環路的情況下)業務的優先權等級的隊列就會產生優先權阻塞。嚴格堅持優先權調度會使這種“填充”實際上鎖住所有輸出帶寬,受損害的是低優先權隊列。
相應地,需要一種合格,通過在通用優先權劃分策略上強加合理的限制來減少阻塞的優先權調度方法。還需要有效的調度硬件來實現合格優先權調度。
本發明提供了用于一個數據排隊結構的一個合格優先權調度方法和裝置,其中包含多組競爭一個輸出的帶寬的隊列。每個隊列組具有至少一個隊列并且被關聯一個不同的優先權等級。并且,至少一個隊列組內的至少一個隊列是一個帶寬限制隊列,即具有一個不能超過的帶寬約束。
根據隊列調度方法,選擇與當前優先權等級關聯的隊列組中的一個(i)有數據要輸出隊列(ii)具有可用帶寬,即沒有違背其帶寬約束的隊列向輸出釋放數據。如果有多個這樣的隊列,則使用循環排序確定在多個隊列中選擇哪個隊列。開始時把當前優先權等級設置到最高優先權等級上,并且遞減當前優先權等級直到選擇了一個隊列或已經檢查了所有的優先權等級,不管首先發生什么情況。隊列可以限制或不限制帶寬。無限制帶寬隊列總具有可用的帶寬,而限制帶寬隊列只在其有信用的情況下才會有可用帶寬。周期性地為限制帶寬隊列分配信用并且根據釋放數據的長度減少信用。根據信用來釋放數據。
根據隊列調度裝置,一個選擇器根據一個關于多個隊列狀態變量的函數從多個隊列中選擇一個隊列,并且發送隊列選擇信息。選擇器最好包含多個表示涉及不同隊列的一個隊列狀態變量的狀態的位屏蔽碼,其中通過一個位與操作混合位屏蔽碼以確定可以選擇哪些隊列向輸出釋放數據。選擇器最好還包含一個仲裁器,用于接收確定結果,從可選擇隊列中選擇一個單隊列循環,并且向一個從選定隊列釋放數據的驅動器發送循環選擇的結果。
參照結合附圖所進行的下列詳細描述可以更加理解本發明的這些和其它方面。
圖1是一個具有調度特征的示例性共享輸出排隊結構的策略級圖例;圖2是一個用于共享輸出排隊結構和相關排隊結構的最優調度裝置的模塊圖;圖3是圖2的多級選擇器的模塊圖;圖4是圖2的循環仲裁器的模塊圖;圖5是圖2的統計的模塊圖;圖6是優先權帶寬隊列選擇步驟的流程圖7是限制循環仲裁的隊列選擇步驟的流程圖;圖8是獲取循環仲裁的隊列選擇步驟的流程圖。
本發明涉及一個進行調度以便從多個競爭同一輸出的帶寬的隊列釋放數據的方法和裝置。在圖1中,在策略級別上示出了一個示例性的,具有調度特征的共享輸出排隊結構。在所示的結構中,有5個競爭輸出60的帶寬的隊列10,20,30,40,50。對隊列10,20,30,40,50的數據釋放進行調度,即時間多路復用以避免沖突。根據優先權等級確定隊列10,20,30,40,50的特征以便向輸出60釋放數據,其中包含高優先權隊列10,中優先權隊列20,30和低優先權隊列40,50。還根據帶寬類型來確定隊列10,20,30,40,50的特征以便向輸出60釋放數據。高優先權隊列10是一個無限制帶寬隊列。中優先權隊列20,30均為限制帶寬隊列。一個低優先權隊列40是一個無限制帶寬隊列,而另一個低優先權隊列50是一個限制帶寬隊列。還根據數據流類型,即單向流或全向流來確定隊列10,20,30,40,50的特征。但數據流類型在數據被釋放到輸出60的順序方面沒有獨立的含義。當然,圖1圖解的共享輸出排隊結構只是這種結構的一個例子;根據期望實現的策略,隊列的數量,優先權等級和帶寬類型在其它根據本發明操作的共享輸出排隊結構中會有所不同。
在針對一個共享輸出排隊結構的一個最優調度方法中,選擇與當前優先權等級關聯的隊列組中的一個有數據要釋放到輸出并且具有可用帶寬,即沒有違背其帶寬約束的隊列向輸出釋放數據。如果有多個這樣的隊列,則使用循環排序確定在多個隊列中選擇哪個隊列。如此后所述,可以對這個基本調度方法進行各種改進。不管怎樣,雖然明顯簡單,但這個基本方法在根本上被認為帶來了超越現有技術調度方法的顯著進步。
把最優調度方法應用到圖1的共享輸出排隊結構,如果無限制帶寬高優先權隊列10有數據要釋放到輸出60,則選擇隊列10。如果沒有選擇隊列10,則檢查限制帶寬中優先權隊列20,30。更具體地,如果隊列20,30均有要釋放到輸出60的數據并且均有可用帶寬,則用循環順序從隊列20,30中選擇下一個隊列。如果隊列20,30均有要釋放的數據并且隊列20,30中只有一個具有可用帶寬,則選擇隊列20,30中有可用帶寬的隊列。如果隊列20,30中只有一個具有要釋放的數據和可用帶寬,則選擇隊列20,30中的這個隊列。如果隊列20,30均未被選擇,則檢查低優先權隊列40,50。更具體地,如果隊列40,50均有要釋放到輸出60的數據并且限制帶寬低優先權隊列50有可用帶寬,則用循環順序從隊列40,50中選擇下一個隊列。如果隊列40,50均有要釋放的數據并且但限制帶寬低優先權隊列50沒有可用帶寬,則選擇限制帶寬低優先權隊列隊列40。如果只有隊列40有數據要釋放,則選擇隊列40。如果只有隊列50有數據要釋放,則在隊列50有可用帶寬的情況下選擇隊列50。如果沒有選擇隊列40,50,則沒有數據被釋放到輸出60。
現在參照圖2,其中在部件級別上示出了一個最優共享輸出調度裝置和一個相關的排隊結構。排隊結構210包含分別在輸入0至輸入N 212上接收數據并且釋放數據到輸出214的數據隊列0至數據隊列N。調度器200控制從排隊結構210釋放數據。調度器200包含管理器220,多級選擇器230,驅動器240和統計250。管理器220從統計250檢索數據并且更新選擇器230和統計250。選擇器230包含選擇屏蔽碼232,優先權帶寬選擇器234和實現隊列選擇的循環仲裁器236。選擇器230選擇釋放數據到輸出214的數據隊列并且向驅動器240發送隊列選擇信息。驅動器240接收隊列選擇信息,從統計250檢索數據,更新統計250,并且控制從選擇的隊列釋放數據。
現在參照圖3,其中更詳細地示出了選擇器230。選擇器230具有選擇屏蔽碼232,其中包含使能屏蔽碼312,等待屏蔽碼314,帶寬屏蔽碼316和優先權屏蔽碼318。每個屏蔽碼針對每個隊列0至N在存儲器單元210中均維護一個狀態位。使能屏蔽碼312指示在隊列0至N中允許向輸出214發送數據的隊列。在為隊列保留的位位置中的“1”表示使能,而“0”表示沒有使能。等待屏蔽碼314指示在隊列0至N中有等待發送到輸出214的數據的隊列。在為隊列保留的位位置中的“1”表示出現等待數據,而“0”表示沒有等待數據。帶寬屏蔽碼316指示在隊列0至N中有向輸出214發送數據的帶寬的隊列。“1”表示帶寬可用,“0”表示帶寬不可用。優先權屏蔽碼318集中指示隊列0至N的優先權等級。針對每個優先權等級維護一個單獨的優先權屏蔽碼。在優先權屏蔽碼中為隊列保留的位位置中的“1”表示為隊列分配屏蔽碼所表示的優先權等級,“0”表示沒有分配優先權等級。屏蔽碼232可以由管理器220配置。管理器220根據從統計250檢索的信息更新等待屏蔽碼314和帶寬屏蔽碼316。
選擇屏蔽碼232被連接到優先權帶寬選擇器234。選擇器234通過把選擇縮減成在參與隊列中進行的循環選擇來實現隊列選擇。當允許參與選擇時,使能屏蔽碼312,等待屏蔽碼314,帶寬屏蔽碼316和一個優先權屏蔽碼318被一起提交到屏蔽碼比較324進行位與操作。優先權計數器328確定被提交進行位與操作的一個優先權屏蔽碼318,這指示多路復用器根據計數器328的當前值釋放一個優先權屏蔽碼318。對于各個參與選擇輪次,計數器328首先選擇最高優先權屏蔽碼并且選擇優先權遞減的優先權屏蔽碼,直到在當前優先權等級上指示出優勝選擇使能,或者已經提交了所有的優先權屏蔽碼。
屏蔽碼比較324執行的位與操作的結果是一個指示在當前優先權等級上的隊列被指定參與在循環仲裁器236中執行的優勝選擇的屏蔽碼。具體地,得到的屏蔽碼在為允許釋放到輸出端口214,具有等待數據,有可用帶寬并且處在當前優先權等級上的隊列而保留的所有位上均具有“1”,并且在其它位位置上具有“0”。這樣,結果屏蔽碼通過“1”表示所有的參與隊列,通過“0”表示所有的未參與隊列。結果屏蔽碼被提交到優勝選擇使能326進行或操作。如果結果屏蔽碼中至少一個位位置上有“1”,則或操作結果為“1”并且在當前優先權等級上使能優勝選擇。否則,或操作結果為“0”,沒有在當前優先權等級上使能優勝選擇并且在下一個優先權等級上進行位與操作。或操作結果被當作反饋提供給計數器328以便通知計數器328是否需要一次附加的優先權屏蔽選擇。可以理解,位與操作在所有優先權等級上均產生一個“空”屏蔽碼,則不使能優勝選擇并且不進行循環仲裁。
優先權帶寬選擇器234被連接到循環仲裁器236。循環仲裁器236通過在選擇器234確定的參與隊列進行循環選擇來確定出一個優勝隊列。參照圖4,其中更詳細地示出了循環仲裁器236。當使能優勝選擇時,參與隊列屏蔽碼,即在選擇器234中執行的位與操作產生的屏蔽碼被提交到一個合格隊列確定的初級選擇陣列410。具體地,陣列410中的各個初級選擇單元從參與隊列屏蔽碼接收一個位子集并且從參與隊列中選擇一個所代表的單合格隊列。更具體地,在最后的循環仲裁中被最終選擇420將其合格隊列選擇成優勝隊列的初級選擇單元將其參與隊列中按循環順序排列的下一個隊列選擇成合格隊列。其它初級選擇單元將其相應的參與隊列中的第一個隊列選擇成合格隊列。合格隊列選擇和來自任意初級選擇單元的,不表示任何參與隊列的任意“無合格”通知一起被提交給最終選擇420。并且,如果在選擇過程中其合格隊列被選擇成最后的優勝隊列的初級選擇單元發生回繞,即按照循環順序從其最后的隊列返回到第一個隊列,則初級選擇單元向最終選擇420提交一個“回繞”通知。最終選擇420把來自初級選擇單元的合格隊列選擇成優勝隊列,除非初級選擇單元提交一個“無合格”或“回繞”通知,其中初級選擇單元的合格隊列被選擇成最后優勝隊列。如果初級單元提交一個“無合格”或“回繞”通知,則最終選擇420把來自初級選擇單元按循環順序排列的下一個單元的合格隊列選擇成優勝隊列。最終選擇420在完成循環仲裁時向隊列驅動器240發送優勝隊列標識。優勝隊列標識也被當作反饋提交到陣列410以便被初級選擇單元用于后續的合格隊列選擇。
現在參照圖2和圖5,根據從選擇器230接收的優勝隊列標識,驅動器240查詢統計250以檢索出隊列狀態信息并且控制從優勝隊列釋放數據到輸出214。統計250為排隊結構210中的各個隊列0至N保留多字段入口,其中包含一個隊列標識,一個報頭指針,一個報尾指針,當前深度,最大深度,當前信用值和總信用值。優勝隊列標識被用來在統計250中“查找”對應的入口。預定的信用量被加到對應入口的當前信用值上。最好可以根據一個按照特定協議格式化的分組的最大長度,例如以太網分組的1518字節,來選擇一個量值。驅動器240控制從優勝隊列向輸出214釋放數據,其中從對應入口內的報頭指針指示的隊列位置上的數據開始,直到從優勝隊列中釋放出所有數據,當前信用值已經用完,或者在限制帶寬隊列的情況下總信用值已經用完,無論先發生哪種情況,其處理均是如此。當數據被釋放時,驅動器240更新對應入口的報頭指針,當前深度,總信用值和當前信用值以便反映改變的隊列狀態。如果所有數據已被釋放,則當前信用值被“清0”,在使用限制帶寬隊列的情況下,在當前信用值之前用完總信用值。
管理器220查詢統計250以保證選擇屏蔽碼232反映驅動器240做出的隊列狀態改變。查詢入口中的當前深度值以便刷新等待屏蔽碼312,并且查詢入口中的總信用值以便刷新帶寬屏蔽碼316。管理器220還周期性地刷新為限制帶寬隊列保留的入口中的總信用值。
現在參照圖6,其中示出了優先權帶寬隊列選擇的流程圖。參與選擇被使能(610)并且最高優先權被選擇成當前優先權(620)。根據隊列使能,等待和帶寬狀態和優先權來確定當前優先權上的參與隊列(630)。如果當前優先權上至少有一個參與隊列(640),則使能優勝選擇并且通知循環仲裁器(650)。如果沒有,則下一個最高優先權被選擇成當前優先權(660)。如果沒有檢查所有的優先權,則流程返回到步驟630;否則,流程退出(670)。
參照圖7,其中針對一個代表性初級選擇單元示出了在循環仲裁中進行合格隊列選擇的流程圖。該單元接收其代表的隊列的信息(710),并且檢查最后的優勝隊列是否單元的最后合格隊列(720)。如果最后優勝隊列是單元的最后合格隊列,則單元選擇其代表的,按照循環順序排列的下一個(參與或未參與)隊列(730)。如果最后優勝隊列不是單元的最后合格隊列,則單元把其代表的第一個(參與或未參與)隊列選擇成當前隊列(740)。不管怎樣,單元檢查是否已經確定當前隊列參與了這個選擇輪次(750)。如果確定當前隊列已經參與,則單元在這個選擇輪次中沒有合格隊列并且通知最終選擇器(755)。如果沒有檢查當前隊列是否參與,則進行檢查(760)。如果當前隊列是一個參與隊列,則當前隊列是合格隊列并且通知最終選擇器(765)。如果當前隊列不是參與隊列,則進行進一步的檢查以確定當前隊列是否單元代表的最后隊列(770)。如果當前隊列是代表的最后隊列,則單元回繞,通知最終選擇器并且流程返回到步驟740。如果當前隊列不是代表的最后隊列,則流程返回到步驟730。
參照圖8,其中示出了循環仲裁中的優勝隊列選擇的流程圖。接收合格隊列,“無合格”通知和“回繞”通知(810)并且其合格隊列贏得最后仲裁的初級選擇被選擇成當前單元(820)。進行檢查以確定在這個選擇輪次中當前單元是否具有一個合格隊列(830)。如果在這個選擇輪次中當前單元具有一個合格隊列,進行檢查以確定當前單元是否回繞(840)。如果當前單元沒有回繞,則來自當前單元的合格隊列是優勝隊列,通知隊列驅動器和單元并且流程退出(850)。但如果當前單元沒有一個合格隊列或者當前單元發生回繞,則按照循環順序排列的下一個單元被選擇成當前單元(860)。如果在這個選擇輪次中已經檢查了新的當前單元(870),則前面的單元被還原成當前單元并且流程前進到步驟850。如果在這個選擇輪次中沒有檢查新的當前單元,則流程返回到步驟830。
本領域的技術人員可以理解,在不偏離本發明的宗旨或必要特征的前提下可以通過其它特定形式實現本發明。因而本描述在總體上被認為是說明性的和非限制性的。本發明的范圍由所附權利要求書規定,在其等人描述的含義和范圍內的所有修改均被包括其中。
權利要求
1.一種針對一個排隊結構的隊列調度方法,該排隊結構具有多個釋放數據到一個輸出的隊列,其中包含一個由一或多個具有一個第一優先權的隊列構成的隊列組和一個由一或多個具有一個第二優先權的隊列構成的隊列組,其中第一和第二優先權是不同的,并且一個隊列具有受限制帶寬,該方法包括檢查由一或多個具有一個第一優先權的隊列構成的隊列組以確定一個具有要釋放的數據和可用帶寬的隊列;如果在第一優先權上找到一或多個具有要釋放的數據和可用帶寬的隊列,則從一個找到的隊列向輸出釋放數據。
2.如權利要求1所述的隊列調度方法,其中還包括的步驟有如果在第一優先權上沒有找到多個具有要釋放的數據和可用帶寬的隊列,檢查第二優先權上的隊列組以確定一個具有要釋放的數據和可用帶寬的隊列。
3.如權利要求1所述的隊列調度方法,其中還包括的步驟有如果在第一優先權上找到多個具有要釋放的數據和可用帶寬的隊列,選擇被找到隊列的循環以向輸出釋放數據。
4.如權利要求1所述的隊列調度方法,其中還包括在釋放數據到輸出的隊列帶寬受限制的情況下減小釋放數據到輸出的隊列的可用帶寬的步驟。
5.如權利要求1所述的隊列調度方法,其中還包括增加釋放數據到輸出的隊列的信用值的步驟。
6.如權利要求5所述的隊列調度方法,其中還包括根據釋放數據的長度減少釋放數據到輸出的隊列的信用值的步驟。
7.如權利要求5所述的隊列調度方法,其中還包括周期性增加一個具有受限制帶寬的隊列的可用帶寬的步驟。
8.一個隊列選擇器,其中包括多個屏蔽碼,每個屏蔽碼具有多個位,每個位表示與多個被連接到一個輸出的隊列中一個不同的隊列的一個隊列狀態變量相關的狀態,其中在一個位與操作中混合屏蔽碼以確定在多個隊列中可以被選擇釋放數據到輸出的隊列。
9.如權利要求8所述的隊列選擇器,其中隊列狀態變量包含等待。
10.如權利要求8所述的隊列選擇器,其中隊列狀態變量包含帶寬可用性。
11.如權利要求8所述的隊列選擇器,其中隊列狀態變量包含優先權。
12.如權利要求8所述的隊列選擇器,其中還包括一個從可選擇隊列中選擇一個釋放數據到輸出的隊列的仲裁器。
13.如權利要求12所述的隊列選擇器,其中進行循環選擇。
14.針對一個排隊結構的調度裝置,該排隊結構具有多個分別在各個輸入上接收數據并且向一個輸出釋放數據的隊列,其中包括一個選擇器,該選擇器根據關于多個隊列的狀態變量從多個隊列中選擇一個隊列,并且發送隊列選擇信息;一個驅動器,該驅動器接收隊列選擇信息并且控制選定隊列的數據釋放。
15.如權利要求14所述的調度裝置,其中隊列狀態變量包含等待。
16.如權利要求14所述的調度裝置,其中隊列狀態變量包含帶寬可用性。
17.如權利要求14所述的調度裝置,其中隊列狀態變量包含優先權。
18.如權利要求14所述的調度裝置,其中還包括一個管理器,該管理器根據一或多個隊列狀態變量更新多個隊列的狀態。
全文摘要
一個用于一個數據排隊結構的優先權調度方法和裝置,該結構包含多個具有不同優先權并且具有競爭一個輸出的帶寬優先權的隊列。該方法在當前優先權上選擇一個有數據釋放到輸出并且有可用帶寬釋放數據到輸出的隊列。如果有多個這樣的隊列,則進行循環重新排序以便在多個隊列中確定要選擇的隊列。該裝置包含多個位屏蔽碼,每個屏蔽碼表示與不同隊列的一個隊列狀態變量相關的狀態,其中在一個位與操作中混合屏蔽碼以確定可以被選擇釋放數據到輸出的隊列。
文檔編號H04L12/56GK1322091SQ0111093
公開日2001年11月14日 申請日期2001年3月1日 優先權日2000年3月2日
發明者德魯·伯塔格納 申請人:阿爾卡塔爾互聯網運行公司