(57)【要約】データ処理システムにおいて複数タスクを順番に実行する方法及びその方法を実行するための回路が、タスク及びその優先度の指示に基づいたビット（103a,…,103n）を構成する複数のタスクモジュール（101a,…,101n）を具える。システムは、動的に変化する優先度の環境においてラウンドロビンタスクセットを順番に実行することができる。ラウンドロビンタスクセットが割り込まれる場合、システムは、割り込みが生じた正確なポイントで高い優先度タスクの実行後、ラウンドロビンタスクセットに戻すことができる。
2005536791.tif 000002
【特許請求の範囲】
【請求項１】
タスクを実行する一以上の実行ユニットを有するデータ処理システムにおいて、前記実行ユニットによって実行用にタスクを選択するタスク選択回路であって、
ａ．ロードされる対立タスク用の符号化ビッドデータを生成する複数のタスクモジュールと、
ｂ．前記符号化ビットに基づき実行用の前記対立タスクの一つを選択するために前記タスクモジュールの各々に結び付けられる優先度選択回路と、
ｃ．実行ユニットに対して実行用に選択されたタスクをルーチングするタスク制御回路と、
ｄ．前記対立タスクと比較するために、実行用に選択された次のタスクの符号化ビッドデータを、前記タスクモジュールの各々に結び付けるフィードバック回路とを具えることを特徴とするタスク選択回路。
【請求項２】
前記タスクモジュールの各々が、前記次のタスクの前記符号化ビッドデータを前記対立タスクの優先度コードと比較するためのコンパレータネットワークを有することを特徴とする、請求項１記載の回路。
【請求項３】
前記符号化ビッドデータがタスク識別コードを有し、前記タスクモジュールの各々が、前記タスク識別コードを前記タスクモジュールの各々の識別コード代表と比較する比較回路を有することを特徴とする、請求項２記載の回路。
【請求項４】
前記符号化ビッドデータが、整数優先度部分及び分数部分を有し、前記符号化ビッドデータの整数優先度部分が、各対立タスク用相対優先度コードを示し、かつ、前記分数部分が、各対立タスクと実行用に選択された次のタスクの符号化ビッドデータとを前記タスクモジュール内で比較した結果として生成されることを特徴とする、請求項１記載の回路。
【請求項５】
前記タスクモジュールの各々が、開始優先度コードを各対立タスクに割り当てる手段と、所定の期間に亘る優先度コードの値を、予め設定された最大優先度コード制限まで増加するレートジェネレータ手段とを有することを特徴とする、請求項１記載の回路。
【請求項６】
前記各タスクモジュールが、実行ユニットに対するアクセス用の符号化ビッドを作るためのビッド構成回路を具え、前記符号化ビッドが、整数優先度コード部分及び分数コード部分を有し、前記分数コード部分が、対応タスクの優先度データと実行ユニットによって実行用に予め選択されたタスクの優先度データとの間の比較によって決定されることを特徴とする、請求項１記載の回路。
【請求項７】
データ処理システムにおいて、一以上のリソースによって実行するためのタスクを選択する方法であって、
ａ．優先度選択回路によって選択された次のタスクを、システム実行ユニットに従ってタスク制御回路に送るステップと、
ｂ．複数の対立タスクを、対応する複数のタスクモジュールに取り込み、各タスクモジュールがタスクＩＤコードを持つステップと、
ｃ．前記各対立タスク用に優先度コードを維持するステップと、
ｄ．前記次のタスクの優先度データと前記各対立タスクの対応する優先度データとを比較するステップと、
ｅ．少なくとも前記優先度コード及び前記ステップ（ｄ）の比較ステップの結果に基づく前記各対立タスク用の前記優先度選択回路に対して、プレゼンテーション用の符号化ビッドを構成するステップとを具えることを特徴とする方法。
【請求項８】
前記ステップ（ｄ）が、
ｉ．次のタスクのタスクＩＤコードを各対立タスクのタスクＩＤコードと比較するステップと、
ii．各対立タスクのタスク優先度コードを次のタスクのタスク優先度コードと比較するステップとを具えることを特徴とする、請求項７記載の方法。
【請求項９】
前記ステップ（ｅ）が、ビッド優先度コードを構成するステップを具え、前記ビッド優先度コードが、対立タスクの優先度コードに基づく整数部分を有するとともに、前記ステップ（ｄ）の比較ステップに基づく分数部分を有することを特徴とする、請求項８記載の方法。
【請求項１０】
対立タスクの優先度コードが時間上で動的に変化することを特徴とする、請求項７記載の方法。
【請求項１１】
前記ステップ（ｃ）が、開始優先度コードを前記各対立タスクに割り当てるステップと、優先度コードの値を、所定の時間に亘って最大優先度コード値まで増加させるステップを具えることを特徴とする、請求項７記載の方法。
【請求項１２】
データ処理システムにおいて、一以上のシステムリソースによって実行用のタスクを選択する方法であって、
（ａ）  タスクセットを、タスクＩＤコードによって決められた所定の順序に整列された回路モジュールに設定するステップと、
（ｂ）  タスクセットの各タスク用単一優先度コードを前記各回路モジュールに設定し、これによって、前記タスクセットをラウンド・ロビンタスクセットとしてレンダリングするステップと、
（ｃ）  前記ラウンド・ロビンタスクセットの実行を、前記タスクＩＤコードによって設定される順序で開始するステップと、
（ｄ）  ラウンド・ロビンタスクセット用に設定された優先度コードより高い優先度コードを有する新しいタスク用のラウンド・ロビンタスクセットの実行を中断するステップと、
（ｅ）  新しいタスクの実行後、ステップ（ａ）で設定された前記タスクセットの順序を維持しながらラウンド・ロビンタスクセットの実行をレジュームするステップと、
を具えることを特徴とする方法。
【請求項１３】
前記優先度コードが時間上で動的に変化することを特徴とする、請求項１２記載の方法。
【請求項１４】
前記新しいタスクが第２のラウンド・ロビンタスクセットを具えることを特徴とする、請求項１３記載の方法。
【請求項１５】
前記ステップ（ｄ）が、前記回路モジュールに保存されたタスクの優先度コードを比較回路で互いに比較するとともに、最高優先度コードを有するタスクを実行するよう選択することによって達成されることを特徴とする、請求項１２記載の方法。
【請求項１６】
前記各回路モジュールが、各タスク用ビッドを構成するビッド構成回路を具え、前記ビッドが、少なくとも優先度コード及びタスクＩＤコードを具えることを特徴とする、請求項１５記載の方法。
【請求項１７】
前記ビッドは整数部分及び分数部分とを具え、前記整数部分が優先度コードによって決定されるとともに、前記分数部分がステップ（ｃ）の実行中にタスクが実行されているか否かを示すことを特徴とする、請求項１６記載の方法。
【請求項１８】
同じ優先度コードを有するタスクは前記タスクＩＤコードによって表される順序で実行されることを特徴とする、請求項１６記載の方法。
【請求項１９】
前記ビッドは整数部分及び分数部分を具え、前記整数部分が前記優先度コードによって決定されるとともに、前記分数部分が前記タスクＩＤコードによって少なくとも部分的に決定されることを特徴とする、請求項１６記載の方法。
【請求項２０】
前記ビット構成回路の動作は多重フラグによって制御され、前記フラグが、複数タスクのそれぞれが同じ優先度コードを持つことを示し、前記同じ優先度コードを有する前記タスクの全てが単一優先度比較回路のタスクと比較されることを特徴とする、請求項１６記載の方法。
【請求項２１】
前記ビッド構成回路の動作は、ビットフラグをブロックすることによって制御され、前記ビッド構成回路からの全てのビッドが二重優先度比較回路で比較され、第一の比較が、ビットフラグのブロッキングが有効なビッドに対して行われ、第二の比較が、ビットフラグのブロッキングが無効なビッドに対して行われ、これによって、二つの比較ステップの更に大きな結果が、実行の際に選択されることを特徴とする、請求項１６記載の方法。
【請求項２２】
データ処理システムにおいて、一以上のシステムリソースによる実行用のタスクを選択する方法であって、
（ａ）  回路モジュールにタスクセットを設定し、前記回路モジュールがタスクＩＤコードによって決定される所定の順序で整列されるステップと、
（ｂ）  前記タスクセットの各タスク用優先度コードを前記各回路モジュールに設定するステップと、
（ｃ）  前記タスクセットの各タスク用ビッドを作成し、前記ビッドが優先度コード及びタスクＩＤコードを有するステップと、
（ｄ）  システムリソースによる実行用に最高値のビッドを選択するとともに、実行する次のタスクを前記タスクに指定するステップと、
（ｅ）  実行用の前記次のタスクを実行するとともに、前記タスクの実行後、前記タスクの前記優先度コード及び前記タスクＩＤコードを、前記タスクセットの前記各タのタスクと比較するステップとを具えることを特徴とする方法。
【請求項２３】
前記ステップ（ｃ）が、
（ｉ）  実行用の前記次のタスクの前記タスクＩＤコードが、適合するか又は前記タスクセットの任意のタスクのタスクＩＤコードより大きいかを決定するステップと、
（ｉｉ）  実行用の前記次のタスクの優先度コードが、前記タスクセットの任意のタスクの優先度コードに適合するか否かを決定するステップとを更に具えることを特徴とする、請求項２２記載の方法。
【請求項２４】
前記ステップ（ｃ）のビッドが、整数部分及び分数部分を有し、前記整数部分が前記優先度コードによって決定されるとともに、前記分数部分が少なくとも前記ステップ（ｉ）及び（ｉｉ）の結果によって少なくとも部分的に決定されることを特徴とする、請求項２３記載の方法。
【請求項２５】
前記ビッドはニ値数であり、前記数の前記分数部分はその最下位ビットであることを特徴とする、請求項２４記載の方法。
【請求項２６】
前記優先度コードが、時間上で動的に変化するのを許可されることを特徴とする、請求項２４記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[関連出願の相互参照]
適用なし
[研究又は開発を連邦政府によって資金援助されることに関する記載]
適用なし
[シーケンスリスニング、表、又はコンピュータ・プログラム・リスニング・コンパクトディスク添付の参照]
適用なし
【０００２】
本発明は、優先度（priorities）が動的に変化するシステムリソースの対立する複数タスク間で、データ処理システムの実行リソースを割り当てる装置及び方法に関する。それと同時に、装置は、ラウンド・ロビンセット又は複数セットのグループで出くわすような関連付けられたタスクの順序を維持する。
【背景技術】
【０００３】
多重に相互作用するラウンド・ロビンセットの一式のように優先度が動的に変化するタスクの管理は、典型的に、オペレーティングシステムによってソフトウエアで達成される。ソフトウエアは、関連付けられたリストの動的な変化を維持する。そのようなリストは、典型的にはメモリに保存されるとともに、それらのアクセス及び管理は、必然的に複数のＣＰＵサイクルを費やす。この複雑な問題を扱うアプローチとして、特に優先度管理に供される汎用プロセッサを採用するものがある。他の方法は、単に、優先度管理を専用オペレーティングシステムタスクに割り当てる。どちらの場合でも、複雑なコードが書き込まれるとともに維持され、かつ、他の場所で有利に利用されるＣＰＵサイクルは、タスク管理に費やされる。タスクの数が増加するにつれて、それらの潜在的相互関係、それに従う管理ソフトウエアの機能的な複雑性、及びソフトウエア命令を実行するために要する時間は、関連付けられたデータ構造がタスク数の二乗で増加する間に階乗的に（factorially）増加する可能性がある。したがって、８タスクのシステムのＣＰＵサイクルの複雑さ及びコストは、極端な場合、４タスクのシステムのそれらのほぼ１６００倍になり得る。優先度構造でのタスク管理の一般的に用いられる方法は、タスク数が増加するにつれて現在利用可能なコンピューティングシステムの容量を直ぐに超えるのは明らかである。
【０００４】
米国特許５，５６４，０６２号は、予め選択されたタスクを特許外の機構によってタスクからタスクへと渡される優先度トークンに基づいて幾つかの任意のリソースに割り当てる手段及び方法を開示する。
【０００５】
米国特許５，６２５，８４６号は、メッセージの優先度に従いメッセージをキューから取り出す手段を教示する。
【０００６】
Ｍｅａｎｅｙらによる、米国特許５，７７４，７３４号、５，７１０，９３６号、５，７１５，４７２号、５，７７４，７３５号及び５，８６２，３６０号は、電力節約に関してシステムリソースを分け合う方法を教示する。
【０００７】
米国特許５，０８８，０２４号は、リソース割り当てアービトレーションプロトコル、特に、通信バス要求アービトレーションの手段を開示する。
【０００８】
米国特許３，９４７，８２４号は、更に高い優先度要素が優先的サービスを与えられるサービス又はアクセスに関する優先度選択の手段を教示するが、更に低い優先度要素に対するサービスを除外するものではない。
【発明の開示】
【０００９】
本発明は、特にタスク管理用に設計された特別な回路構成手段によってソフトウエア監視及び低ＣＰＵサイクルの困難を克服する。好適な例において、タスク優先度をソフトウエアタスクモジュール及び適切なセットアクティブフラグにロードする簡単な初期化処理とは別に、ＣＰＵサイクル損失なく、かつ、ソフトウエアの割り込みに関係なくハードウエア回路機能がある。
【００１０】
以下の検討は、「次のタスク（next task）」が、実行するため又は何らかのシステムリソースに対してアクセスを達成するためにスケジュールされた次のタスクのことに言及するとともに、「待機タスク（waiting task）」は、「next task」のように理解されるものとする。
【００１１】
本発明は、割り当てられた優先度によってタスクセットを管理することに関する。任意のタスクの優先度は、セット内の他のタスクと同様、そのタスク自身によって動的な基準で割り当てられるとともに変更される。このような動的に変化する優先度の関係の結果、同じ優先度レベルのとき全タスクの部分集合になり、そのような部分集合は、「ラウンド・ロビン（round-robin）」セットと呼ばれる。ラウンド・ロビンセットの優先度が複数タスクのセットにおいて最も高い優先度レベルである場合、ラウンド・ロビンセットの各タスクは、理想的には同時に、実行リソースに対して等しいアクセスをすることが必要である。しかしながら、典型的には、実行ユニットの数はタスク数よりもかなり少なく、大抵の場合、単一の実行ユニットだけがある。限られたリソースの場合にタスクのラウンド・ロビンセットの正当な実行を確実にするために、ラウンド・ロビンセットの各タスクは、次に利用できるリソースに順次アクセスされて、ラウンド・ロビンセットの各タスクが実行され、ラウンド・ロビンセットの全てのタスクが実行されるまで、ラウンド・ロビンセットのタスクを再び実行するのを許容されない。
【００１２】
当然、優先度が次のタスクの優先度を超えて動的に増大する任意のタスクは、任意のラウンド・ロビンセットに属するか否かに関係なく次のタスクの割り込み及びそれ自体の実行の開始の適時に許容される必要がある。これが起こると、ラウンド・ロビンセットの次のタスク及びその位置の状態を、システムリソースに対するラウンド・ロビンアクセスがoffのままであるポイントで再開（resume）できるよう注意深く観察する必要がある。ラウンド・ロビンセットがラウンド・ロビンセットに属する次のタスクよりも更に高い優先度を達成する事態も生じる。すなわち、一般的な場合、複数タスクのセットは、各セットのタスク数が一つ以上であるような想定される次のタスクのセットよりも優位になる。
【００１３】
各タスクが異なるレートの優先度増加を有するようにタスク優先度を動的に増加するシステムにおいて、与えられたラウンド・ロビンセットは、優先度増加コマンド間で期間内だけ特定タスクのセットとしての同一性（identity）を維持する。さらに、タスクの優先度は、ラウンド・ロビンセット内の一以上のタスクによって動的に上昇又は低下されて、循環的なタスク管理構造に導く自己指示のラウンド・ロビンセットを効果的に作成する。したがって、ラウンド・ロビンセットの管理は、タスクの使用及び不使用と同様に素早くセットに出入りできるのでタイムクリティカルな機能である。
【００１４】
上記技術に対して、本発明は、動的に変化する優先度のセットを管理する方法及び装置を開示する。システムは、ラウンド・ロビン状態の明示的な「知識」を有さず、さらに、ラウンド・ロビンセットが、実行するセットより高い優先度レベルに動的に達する場合でもラウンド・ロビン状態を仲裁（arbitrate）することができる。
【発明を実施するための最良の形態】
【００１５】
図１を参照すると、タスク選択処理は、タスクモジュール１０１ａ〜１０１ｎで開始され、それらのモジュールが、それらの個々の優先度ビッドを、優先度ビッドライン１０３ａ〜１０３ｎ経由で、次の利用できる実行ユニットにアクセスする対立タスクから優先度セレクター１０５へ提供する。好適な実施の形態において、優先度セレクター１０５を、二分木構造で実施するが、他の手段として例えば、正確な情報も提供する一時的なビッド勝者（momentary bid winner）を含むレジスタの内容で順次各ビットの二つ一組の比較がある。好適な実施の形態において、各優先度ビッドライン１０３ａ〜１０３ｎは、単一ビットから構成される分数部分（fractional portion）に隣接される各々の対立タスク優先度を表す複数ビットから構成される。タスク優先度はビットが分数部分であると考察される間、ビッドの整数部分（integral portion）と考察される。タスクは、有効であるとき、タスク優先度によって表された値を１の半分を超えるようにビッド値を有効に増大する、すなわち、セット時に分数部ビット（fractional part bit）を１／２の分数バイナリ部の値と解釈することによって、１にセットされた分数部ビットを有する。
【００１６】
勝利する優先度は、優先度セレクタ１０５によって、ライン１０７を経由してタスクモジュールコントローラ１０９に提供される。タスクモジュール１０１ａ〜１０１ｎのリストのタスクの順序を表す識別表示（ＩＤ）タグも、ライン１０７を経由してタスクコントローラ１０９に提供される。タスクコントローラ１０９は、個々のタスクモジュール１０１ａから１０１ｎにタスクモジュールコントロールライン１１３ａ及び１１３ｂを経由してフィードバックされる優先度ビッド情報を作成する。優先度ビッド又はタスク−モジュール−コントロール情報は、勝利ビッド及びタスクＩＤタグ、さらに、ソートリソースにアクセスをするため、次のタスクとしての勝利タスクを提供することを通じた制御を提供するスイッチコントロールライン１１１を経由して渡される情報を具える。
【００１７】
図２は、割り当てられたシステムタスクに対して一つ存在する、タスクモジュールを描写するブロック図を示す。タスクを初期設定する際、開始優先度コードが開始優先度レジスタ２０１にロードされ、増加率がレートレジスタ２０３にロードされ、制限又は高優先度コードが制限優先度レジスタ２０５にロードされる。ライン２０９上のアクティブフラグがハイになると、開始優先度２０１が優先度インペイシャンスカウンタ２１１にロードされるとともに、レートジェネレータ２０７が有効にされる。さらに、ビッド構成器２２１は、ビッド２２３を図１の優先度セレクタに渡すことを許可される。
【００１８】
レートジェネレータ２０７は、レートレジスタ２０３の内容に従って優先度インペイシャンスカウンタ２１１を増加させ、これによって、タスク優先度ライン２１３に提供されるタスクの優先度コードを動的に増加させる。ソフトウエアシステム、例えば、他のタスクは、必要に応じてこれらレジスタ値を変化させることができ、タスクの動的な変化を生じさせる。優先度コンパレータ２１５は、タスク優先度ライン２１３に存在するタスクの現在の優先度と、上限優先度２０５とを比較する。これらの優先度レベルが等しい場合、優先度インペイシャンスカウンタ２１１はタスク優先度ライン２１３のタスク優先度を上限優先度２０５に維持する。タスクは、ビッド構成器２２１によってブロックされた場合にビッドを防止することができ、アクティブフラグ２０９がローのときにブロッキングが生じ、ビッド構成器２２１用の残りの制御情報がライン１１３ａ及び１１３ｂに供給され、ビッド構成器２２１がビッドライン２２３で命令を作成する場合、命令することができないようにされる。
【００１９】
ビッド構成器２１１の好適な実施の形態は、図３を参照することによって理解することができ、ここでは、太い接続がビッド又はＩＤデータバスを示し、細線が制御及び論理情報を表す。当該リソース又は実行ユニットが現在タスクを提供しているとともに、提供される次のタスクが、図１のタスクモジュール１０１ａ〜１０１ｎに存在する複数の対立タスクの一つであると仮定する。アクティブフラグライン２０９によって決定されるように、各有効な対立タスクは、図１の優先度セレクタ１０５に向かうビッドライン２２３上にビッドを提供することを許可される。
【００２０】
ビッドは、アクティブフラグライン２０９が高くなるときに構成され、立ち上がりは、ワンショットラッチ３０５によって、ＯＲゲート３０７を経由してラッチ３０９に渡されるパルスに変換される。ライン１１３ａに存在するnext-task IDはカレントの対立タスクのＩＤに等しくないと仮定すると、ラッチ３０９はコンパレータ３１５による現在のタスクＩＤ３１３とライン１１３ａに存在する次のタスクＩＤとの比較によって決定されるように、リセット状態ではない。
【００２１】
真（True）すなわち「１」状態のときのビッドの分数部分は、タスク有効状態の１／２を表す１、それ以外のときにはゼロを表し、この分数部分は、ラッチ３０９によってラッチされるとともに分数部ライン３１９を経由してラッチ３２５に提供される。
【００２２】
next-task IDライン１１３ａに存在するようなタスクIDは、ゼロとなる最低整数タスクIDであってタスクモジュール１０１ａと呼ばれるとともに、タスクモジュール１０１ｎと呼ばれるｎとなる最高整数タスクＩＤを持った、図１に示されるようなタスクモジュールの順序によって決定される。タスクＩＤ整数は、図１及び図３のタスクＩＤ３１３として示される各タスクモジュール内の固定レジスタ内部に存在し、レジスタコンテンツは以下で説明するように、タスク管理構造に対して利用できる。
【００２３】
図２の優先度インペイシャンスカウンタ２１１からのタスク優先度２１３と結合される際に、分数部分は、整数優先度部分（integral priority portion）及び分数ラウンド・ロビン制御部分から構成されるライン３２３を形成する。タスクが有効である限り、ラッチ３２５は、インバータ３２７によって決定されるように、リセットされず、したがって、ビッドはビッドライン２２３上で図１の優先度セレクタ１０５に渡される。
【００２４】
優先度セレクタ１０５は、有効に命令している対立タスク全体中で最高ビッドを選択するとともに、勝利タスク情報をタスクコントローラ１０９に提供し、その勝利タスクは、システムリソース又は実行ユニットにアクセスを得る次のタスクとして指定される。次のタスク優先ビッド情報は、上記のようにライン１１３ａ及び１１３ｂで、全タスクモジュール１０１ａ〜１０１ｎに戻される。勝利ビッドに複数のタスクがある場合、そのようなタスクの最後が、優先度セレクタ１０５の回路構成によって達成される順序付けを使って勝利タスクと宣言される。タスクは、システムリソース又は実行ユニットにアクセスを得るための次のタスクになる。管理プロセスの点で、複数タスクの一つは、ライン１１３ａに存在するネクストタスクＩＤと等しいタスクＩＤ３１３を有する。その後コンパレータ３１５の出力によってラッチ３０９をリセットし、整数部分だけそのままにして、ライン３１９上のビッドの分数部分をゼロに変える。その結果、図２の優先度インペイシャンスカウンタ２１１又は他のソフトウエア介在が、次に命令される前にタスクの優先度の増加を引き起こさない限り、タスクモジュールによって次に提供されるビッドは、そのカレントビッド未満になる。その後、次のビッドは、当該タスク優先度のときのありうる任意の複数の勝利ビッド未満である。
【００２５】
サービスされる次のタスクは、その次のタスクをサービスするリソースに提供する前に次のタスクよりも高い優先度を受け取る他のタスクに先取される。先取が起きると、次にビットする順番が完成する際に、新たな勝利タスクに置き換えられる。置き換えられたタスクは、次にビッドが回ってくるまで勝利ビッドを維持するために、ライン３１９の分数部分が上記のように強制的にライン３１９で「１」を示すようにされる。この動作は、他の全ての優先度が変わらないままであると仮定すると、置き換えられたタスクをビッドする元の場所に有効に再挿入する。
【００２６】
一旦、次のタスクが終了すると、その動作は無効にされる。無効の際、インバータ３２７はライン３２９を通じてラッチ３２５をリセットするようにし、したがって、ビッドライン２２３のタスクビッドとして論理「０」を表す。
【００２７】
一旦所望のシステムリソースに対するアクセスを取得した次のタスクが、そのアクセス時間又はサイクル数に設定されたありうる制限に起因して完了しない場合、タスクは無効にされない。タスクがその作業を完了していないので、タスクは、次のリソースアクセスに対する指示を許可しなければならない。しかしながら、そのビッド値は、同じ優先度レベルのときの他のタスクより少ない１／２ユニットである。このことは、それらのタスクが公平なやり方でシステムリソースに対するアクセスを認めることを可能とする。この方法において、ラウンド・ロビンセットのタスクは、順次に希望するリソースへのアクセスを行う。
【００２８】
ラウンド・ロビンセットは、１／２の分数部分をプラスする優先度レベルで命令できるラウンド・ロビンセットのタスクがなくなるように使い果たされると、ビッドに勝利するラウンド・ロビンセットの次のタスクは、タスクがタスクモジュールのリストの全体に亘る位置を保持するので、以前のビッディングラウンドの最初のタスクである。この勝利タスクは上記のアクセスを取得する次のタスクになる。しかしながら、タスクの分数部分は、上記検討（discussion）に従いゼロとなり、かつ、ゼロに維持する必要がある。しかしながら、ラウンド・ロビンセットのその後に続く全タスクは、上記のビッディングが再開できるから、分数部分を１／２にリセットしなければならない。
【００２９】
上記目的を達成する回路構成は、再度参照する図３によって説明される。次のタスクのビッド値は、ライン１１３ｂ上に存在する。ライン１１３ｂ上に存在する次のタスクの優先度は、それがライン２１３に与えられるタスク優先度と比較されるコンパレータ３３５に与えられる。比較結果は、ＡＮＤゲート３３７に与えられる。その間コンパレータ３３９でネクストタスクＩＤTask ID３１３と比較されるライン１１３ａに存在するネクストタスクＩＤは、ライン１１３ａ上のネクストタスクＩＤが現在のTask ID３１３の値よりも低い値を有する場合、真すなわち論理レベル「１」の値をＡＮＤゲート３３７に出力する。それ以外の場合には、論理レベル「０」が与えられる。論理ＡＮＤゲートにおいて、コンパレータ３３５の出力とコンパレータ３３７の出力との合計の結果は、ＯＲゲート３０７を介してラッチ３０９に与えられ、その結果が、タスク優先度２１３と結合される分数部分であってラッチ３２５に入力を与える。この動作は、次のタスクのID値より低いID値を有するとともに次のタスクの優先度レベルと等しい優先度レベルを有する任意のタスクが分数部分に起因して１／２増加する優先度レベルでその後のビッドラウンド（bidding round）でビッドするという全体的な結果を伴って、図１の各タスクモジュール１０１ａ〜１０１ｎについて生じる。これは、事実上、元のラウンド・ロビンコンフィギュレーションのラウンド・ロビンセット内部の次のタスク以外の全タスクを設定する。
【００３０】
本発明は、各々が動的に変化する優先度レベルを有する複数のタスクを管理し、その複数のタスクが複数のラウンド・ロビンセットに分割可能であって、各タスクが、タスク選択のときにその優先度に従って、要求されるシステムリソースへのアクセスを取得することを許可することによって公正かつ衡平である管理する。
【００３１】
公正なラウンド・ロビン管理プロセスを達成する他の方法は、タスクの二つの階層を規定する；ラウンド・ロビン管理を必要とするタスクは「ブロック化可能（blackable）」タスクと呼ばれ、固有の優先度レベルを有するこれらのタスクはそれぞれ「非ブロック化（non-blocked）」又は「ノーマル（normal）」タスクと呼ばれる。他の方法は、上記のようなタスクモジュールの構造における順次的な位置によって決定されるタスクID及び勝利優先度と同様に、多重フラグ（Multiplicity Flag）を作るそれぞれ同一のツリー構造として優先的に行われる二つの優先度比較を必要とする。一方の優先度比較のメカニズムは、ブロック化されないタスクのセット用に準備され、他方の優先度比較のメカニズムは、ブロック化されたタスクのセットのために等価な情報を返す。その二つの結果が比較される。二つの勝者の優先度が等しい場合、ブロック化されないタスクが常に選択され、そうでない場合、高い方の優先度タスクが選択される。この他の方法の論理は、特定の実施が異なるとしても、好適な方法の論理と一致する。
【００３２】
さらに、優先度比較と並行して勝利優先度レベルのときの多重度を識別する他のメカニズムは、レジスタに多重を割り当てるとともに、他のレジスタに勝利優先度を割り当てる。各優先度比較ステップで、調べられる優先度は、優先度レジスタのコンテンツと比較される。調べられる優先度が優先度レジスタのコンテンツよりも小さいならば、動作は起こらない。もし調べられる優先度が優先度レジスタのコンテンツよりも大きいならば、優先度レジスタのコンテンツは、さらに大きい値に置き換えられるとともに、多重レジスタのコンテンツは、ゼロによって区切られる。このメカニズムを以下で詳細に説明する。
【００３３】
図４の他のビッド構成器を参照すると、多重フラグ４０１が真であり、かつ、タスクＩＤ４０３がコンパレータ４０７によって決定されたNext TaskＩＤ １１３ａと等しいとき、タスクは、ブロックされないカテゴリーからブロックされたカテゴリーに移動される。比較の結果は、ＡＮＤゲート４０９の多重フラグ４０１と結合される。ＡＮＤゲート４０９の出力はラッチ４１１にラッチされ、ブロッキングフラグ４１３の値を「１」にラッチする。ブロッキングフラグの「１」すなわち真の値は、対立タスクが非ブロック化タスク比較の際に無視されるとともに、ブロック化されたタスク比較に加わるということを示す。高優先度のときの単一勝利タスクの場合、多重フラグ（Multiplicity Flag）は、レベル「０」のとき、当該タスクに関するブロッキングフラグを状態「０」のままにする。
【００３４】
ブロッキングフラグ４１３は、勝利優先度で一タスクだけが存在するとともに、そのタスクがリソースアクセスを得るための次のタスクと同じ優先度レベルであるとき、「０」状態にリセットされる。これは、ライン１１３ｂ上のネクストタスク優先度と現在のタスク優先度２１３とをコンパレータ４１９で比較することで生じる。この結果は、ＡＮＤゲートで多重フラグ４０１の取り消された値をゲートでコントロールして、ラッチ４１１をリセットするとともにブロッキングフラグ４１３の値を「０」にする。
【００３５】
前節で説明したタスク管理方法は、多重フラグを管理するハードウエアを追加することを除いて、上記で論じた（discuss）好適な方法と等価の結果をもたらすと理解でき、そのハードウエアは、必然的に、優先度比較を行う回路に統合される。
【図面の簡単な説明】
【００３６】
【図１】本発明の回路のブロック略図である。
【図２】図１のタスクモジュールのブロック略図である。
【図３】図２のビッド構成のブロック略図である。
【図４】他のビッド構成回路のブロック略図である。
【図１】
2005536791.tif 000003
【図２】
2005536791.tif 000004
【図３】
2005536791.tif 000005
【図４】
2005536791.tif 000006
【国際調査報告】
2005536791.tif 000007