(57)【特許請求の範囲】
【請求項１】
データ処理装置において優先度が付けられたタスクの実行を制御する方法であって、前記データ処理装置は、ソフトウェアによって制御されるプロセッサとハードウェアで構成されるキュー・コントローラを含み、前記キュー・コントローラは優先度が付けられた複数のキュー手段を含み、前記キュー手段はそれぞれ、割当てられた優先度が前記キュー手段に割当てられた優先度に等しいタスクを列挙し、前記キュー・コントローラはプロセッサが発行した命令の受信に応答して、第１のタスクを、実行を目的にキュー待機するものであり、
前記キュー・コントローラが前記第１のタスクを、割当てられた優先度が前記第１のタスクの優先度に等しい第１のキュー手段に列挙するステップと、
割当てられた優先度が高いキュー手段に第２のタスクが列挙されている場合には、前記キュー・コントローラが前記第１のタスクの実行前に前記第２のタスクの実行を試行するステップと、
割当てられた優先度が前記第１のキュー手段よりも高いキュー手段にタスクが列挙されていない場合には、前記キュー・コントローラが前記第１のキュー手段に列挙された第１のタスクの実行を試行するステップと、
前記タスクの実行完了時に、または前記タスクの実行中断時に、割当てられた優先度の高いキュー手段にタスクをセットする他の命令が発行されていない場合にのみ、前記キュー・コントローラが前記第１のキュー手段上の他のタスクの実行を試行するステップと、
タスクが連結された複数のサブタスクを含む場合には、前記プロセッサが発行した命令の受信に応答して、前記キュー・コントローラがタスクの各サブタスクの実行を試行するステップと、
前記サブタスクの実行が完了しない場合には、前記キュー・コントローラが完了しなかった前記サブタスクに連結されたサブタスクの代わりに他のタスクの実行を試行するステップと
を含む方法。
【請求項２】
サブタスクの実行が完了していないとき、前記キュー・コントローラが正常に実行された前記タスクの最後のサブタスクを後で確認できるようにするレコードを格納するステップと、
サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記キュー・コントローラが、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行されるステップと、
を含む、請求項１記載の方法。
【請求項３】
全キュー手段上の全タスクが実行されるまで、前記キュー・コントローラが前記キュー手段に列挙されたタスクの実行試行を継続するステップを含む、請求項１記載の方法。
【請求項４】
優先度が付けられたタスクの実行を制御するデータ処理装置であって、
ソフトウェア制御下で、優先度が付けられたタスクを優先度が付けられたキュー手段にセットするレディ命令を発行するプロセッサ手段と、
優先度が付けられ、それぞれ実行可能な状態の共通優先度のタスク名を記録する複数のレジスタを含み、共通の優先度を有するタスクの名前だけを記録する複数のキュー手段を含み、ｉ）第１のタスク名に割当てられた優先度に等しい優先度が指定された第１のキュー手段に、レディ命令によって指定された前記第１のタスク名を列挙し、ｉｉ）前記第１のタスクの優先度よりも高い優先度が割当てられたキュー手段に他のタスク名が列挙されている場合は、前記第１のタスクの前に前記他のタスクを実行する、前記レディ命令に応答し、前記プロセッサのソフトウェア制御動作によって割込みをかけられない少なくとも１つのタスクの実行を試行するレディ命令に応答する、キュー・コントローラ・ハードウェア手段と、
を含み、
前記キュー・コントローラ・ハードウェア手段は、前記第１のキュー手段よりも高い優先度が割当てられたキュー手段にタスク名が列挙されていない場合、前記第１のキュー手段に列挙された第１のタスクの実行を試行し、列挙された前記第１のタスクの実行の完了時または列挙された前記第１のタスクの実行中断時に、高い優先度が割当てられたキュー手段にタスクをセットする他の命令が発行されていない場合にのみ、前記第１のキュー手段上の他のタスクの実行を試行し、
タスクが連結された複数のサブタスクを含む場合、前記キュー・コントローラ・ハードウェア手段は、前記プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行し、前記サブタスクの実行が完了しない場合、完了しなかった前記サブタスクに連結された前記サブタスクの代わりに別のタスクの実行を試行する、データ処理装置。
【請求項５】
サブタスクの実行が完了しないとき、前記キュー・コントローラ・ハードウェア手段により、正常に実行された前記タスクの最後のサブタスクを後に確認できるようにするレコードが格納され、サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行される、請求項４記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータを制御して実行可能なタスクをディスパッチする方法及び装置に関し、特にソフトウェアの介在を最小限にしてコンピュータのレディ・キューからのタスクのディスパッチを処理する方法及び装置に関する。
【０００２】
【従来の技術】
コンピュータで同時に処理するタスクが増えているため、タスク処理のオーバヘッドも増加している。現在コンピュータは、ソフトウェア・プロセスにより、どのタスクが実行されるか、またいつ実行されるかを決定する。あるタスクが終了する（或いはエラー、またはリソース不足で完了しないことがわかる）と、割込み手続きによりソフトウェアが通知を受け、そこでソフトウェアは次に取るべき処置を決定しなければならない。割込みがコンピュータによって処理されている間、システムは、新たな仕事が割当てられるのを待って休止状態にあることがある。新たなタスクが割当てられると、タスクが実行のためいつリリースされるかを決定するのは、タスク・ディスパッチ機構の役割である。このようなタスク・ディスパッチ装置の多くは、優先度が変わるタスクを処理し、上位優先度のタスクは下位優先度タスクより前に実行されるようにする必要がある。この機能は通常は、ソフトウェアがアクティブ・タスクを終了させ、新たな上位優先度タスクを起動することによって行われる。その場合、ソフトウェアは現在のタスクに割込みをかけ、上位優先度タスクを起動し、最終的には、中断されたタスクを再起動する必要がある。この操作では、プロセッサに複数の割込みをかけてソフトウェアがタスク・スイッチングを処理できるようにする必要がある。これら割込みの処理に必要な時間は、システム全体のパフォーマンスに対してボトルネックを生み、リアルタイム・システムでは重大な問題になることがある。
【０００３】
タスク・ディスパッチ装置はまた、タスクが実行されていて、実行中のタスクに追加する必要のある別のタスクが生じる状況を処理する必要がある。このようなタスクの追加を実現するために通常は２つの方法のいずれかが用いられる。最初の方法では、タスクを完全にアセンブルされるまでは起動せず、タスクが１度実行を開始したら他のタスクは追加できない。もう１つの方法では、新たなタスクが追加できるようにタスクの実行が一時的に保留される。いずれの方法でも、タスクの実行は起動時にか動作時に遅らせられ、タスクが次のタスクで更新できるようにされる。
【０００４】
従来の技術は、タスク・ディスパッチ機構が効率よく動作できるようにするため、実行するタスクを実行リストにキュー待機する。タスクは割当てられた優先度をもとに実行される。ＩＢＭ  Ｓｙｓｔｅｍ  ３７０は、ソフトウェアの介入を避けるため、タスク・ディスパッチ機構に”１深さ（１  ｄｅｅｐ）”キューを採用している。基本的には、タスク・ディスパッチ操作を開始するために用いられる論理制御ブロックが、前のタスクの制御ブロックがディスパッチされた直後にステージ処理される。このような条件下で、ステージ処理されたタスク制御ブロックは、ディスパッチされた前のタスクの完了または中止によりすぐに利用できるようになる。
【０００５】
ノードが独立したプロセッサであり、パラレルに動作してデータ処理操作を実行するマルチノードのデータ処理装置が登場してから、タスク・ディスパッチ操作を、ソフトウェアの介入を出来るだけ少なくして実行可能にすることがますます重要になっている。このようなマルチノードのデータ処理装置が効率よく動作するには、システム・アーキテクチャにより、どのノードに障害が発生してもシステムが”クラッシュ”しないように全体の制御機能が分散されるようにしなければならない。このような分散アーキテクチャでは当然、ノード間にかなりのデータ通信レベルが必要になる。そのようなデータ通信がノード・プロセッサの不要なロード操作を避けるように処理されなければ、マルチノード・システム全体のデータ処理効率が影響を受ける。
【０００６】
【発明が解決しようとする課題】
本発明の目的は、データ処理装置のための改良されたタスク・ディスパッチの方法及び装置を提供することである。
【０００７】
本発明の他の目的は、タスク・ディスパッチの手続きにソフトウェア及び中央プロセッサがなるべく介入しない改良されたタスク・ディスパッチの方法及び装置を提供することである。
【０００８】
本発明の他の目的は、実行遅延を実現する必要なく、実行中のタスクに作業単位を追加できる改良されたタスク・ディスパッチの方法及び装置を提供することである。
【０００９】
本発明の他の目的は、優先度が最大でキュー待機されたタスクが最初に実行されるようにする改良されたタスク・ディスパッチの方法及び装置を提供することである。
【００１０】
【課題を解決するための手段】
マルチノードのデータ処理装置で優先度が付けられたタスクの実行は、ある手続きによって制御される。データ処理装置は、ソフトウェアによって制御されるプロセッサと、ハードウェアで構成されるキュー・コントローラを有するノードを含む。キュー・コントローラは優先度が付けられた複数のキューを含み、各キューは、キューに割当てられた優先度に等しい優先度が割当てられたタスクを列挙する。キュー・コントローラは、プロセッサによって生成された命令に応答して、実行する最初のタスクをキュー待機するため、次のステップを含む方法を実行する。前記第１のタスクを、前記第１のタスクの優先度に等しい優先度が割当てられた第１のキューに列挙するステップ、高い優先度が割当てられたキューに第２のタスクが列挙されている場合には、第１のタスクの実行前に第２のタスクの実行を試行するステップ、前記第１のキューより高い優先度が割当てられたキューにタスクが列挙されていない場合には、第１のキュー手段に列挙された第１のタスクの実行を試行するステップ、及び、タスクの実行完了または実行中止により、高い優先度が割当てられたキューにタスクをセットするために別の命令が発行されているのでない場合にのみ、第１のキューの他のタスクの実行を試行するステップである。この方法は更に、チェインをなすサブタスクを処理するため、プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行し、サブタスクの実行が完了しない場合、完了しなかったサブタスクに連結したサブタスクの代わりに別のタスクの実行を試行する。
【００１１】
【発明の実施の形態】
図１のブロック図は、ディスク・ドライブ・コントローラ・アレイとして構成されたマルチノードのネットワーク１０を示す。ノードＡ及びＤはデータ格納ノードで、それぞれ、接続されたディスク・ドライブ１２、１４及び１６、１８に接続する。対になった通信インターフェイス・ノードＢ及びＣは、接続されたホスト・プロセッサに入力／出力機能を提供する。ホスト・プロセッサはマルチノード・ネットワークのデータ格納機構を利用する。キャッシュ・ノードＥは、ネットワーク１０とホスト・プロセッサの間のデータ転送機能の入力及び出力の両方に一時的な格納機構を提供する。マルチノード・ネットワーク１０は、ノードを追加することによって拡張可能である。ノードはすべて内部通信ネットワーク２０によって相互接続される。
【００１２】
ノードＡ乃至Ｅはそれぞれ図２に示した共通ノード構成をもとに構成される。各ノードに、ノード全体の機能を制御するノード・プロセッサ２２が含まれる。更に各ノードに、制御メッセージの受信、格納、及びディスパッチを行う制御メッセージ・”ライン”２４と、データ・メッセージの受信、格納、及びディスパッチを行うデータ・メッセージ・”ライン”２６が含まれる。制御メッセージ・ライン２４は、制御メモリ・インターフェイス・モジュール２７と、制御メッセージ・メモリとして機能するＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）２８で構成される。データ・メッセージ・ライン２６はそれぞれデータ・メッセージ用のデータ・バッファ・インターフェイス・モジュール３０とＤＲＡＭ３２を含む。データ・バッファ・インターフェイス・モジュール３０は複数のデバイス・インターフェイス３４、３６等に接続し、これにより関連ディスク・ドライブ３８、４０等に通信内容が伝えられる。制御メモリ・インターフェイス２６、プロセッサ２２等からの制御メッセージにより各種ノード操作の制御が有効になる。
【００１３】
以下の説明から明らかになるが、マルチノード・ネットワーク１０のアーキテクチャは、特性上、ディスク・ドライブとの間で生じる長いデータ・メッセージと、ネットワーク及び個々のノードの両方の動作を有効にするのに必要な複数の小さな制御メッセージのいずれも効率よく処理するように構成される。各ノード内で、制御及びデータのメッセージ・ラインにより、制御及びデータのメッセージの分離が可能になり、その独立処理、及び各ノードに置かれる入力／出力（Ｉ／Ｏ）スイッチ４２への転送が可能になる。Ｉ／Ｏスイッチ４２は、それが入力リンク４４に届き、別のノードに向けられたメッセージを独立に切り換えられるようにする装置を含む。各ノードは、好適にはラインの少なくとも２倍の通信リンク４４を備える。これによりノード内にある通信帯域幅の少なくとも２倍の帯域幅が各ノードに得られる。
【００１４】
通信リンク４４はそれぞれ別のノードに接続され、これによりメッセージを接続ノードに直接に、または接続ノードを通して別のノードにルーティングできる。Ｉ／Ｏスイッチ４２は、どの通信リンク４４からも、どの通信リンク４４へもメッセージを送ることができる。Ｉ／Ｏスイッチ４２は更に、各種リンクの現在状態がわかれば、最適通信リンク４６を動的に選択することができる。通信リンク４４はそれぞれ独立しており、データ・メッセージまたは制御メッセージに使用できる。
【００１５】
ノード構造により、メッセージ・スイッチング機能がすべてデータ処理装置全体に分散し、スイッチングの集中制御機能の必要がなくなった分散ネットワークを構成できる。制御及びデータのメッセージが分離され、実質的に独立に処理されるのはノード内だけである。Ｉ／Ｏスイッチ４２は制御及びデータのメッセージを同じように処理する。またノード間の複数のリンクにより、ノードが１つ２つ障害を起こした場合、システムの安定性と冗長性が高くなる。Ｉ／Ｏスイッチ４２の詳細については１９９５年５月２４日出願の米国特許出願番号第４４８９０１号（ＳＡ９９４１１７）を参照されたい。この対応日本国特許出願は、特願平８−７９１７７号であり、平成８年４月１日に出願されている。
【００１６】
図３は、制御メモリ・インターフェイス・モジュール２７の詳細を示す。スイッチ５０により制御メモリ・インターフェイス・モジュール２７内の各種機能間の通信が可能になる。これらはプロセッサ・バス・インターフェイス５２、命令実行ユニット５４、ＤＲＡＭコントローラ５６、ローカル制御バス・インターフェイス５８、出力ポート状態論理６０、及び入力ポート状態論理６２である。ＤＲＡＭコントローラ５６により、オペランド・メモリ・バス６４を通してＲＡＭ２８の接続が可能になる。
【００１７】
プロセッサ・バス・インターフェイス５２は、ノード・プロセッサ２２とのインターフェイスであり、メモリのフェッチ及び格納を有効にするパスを提供する。命令実行ユニット５４は、データを解釈、フェッチし、実行される命令として、あるメモリ・レジスタに格納する。このユニットで実行される命令は全部ではなく一部であり、ノード・プロセッサ２２が介入せずに、ある特定の命令のスピーディな処理が可能になる。
【００１８】
ローカル制御バス・インターフェイス５８は、ノード・プロセッサ２２とデータ・バッファ・インターフェイス・モジュール３０（図２）及びデータ・バッファ・インターフェイス・モジュール３０に接続された各種デバイス・インターフェイス３４、３６等の間のアクセスを可能にする。ノード・プロセッサ２２は、ローカル制御バス・インターフェイス５８を通して、複数の機能、すなわち、フェッチ及びデータ・メモリ３２への格納、デバイス・インターフェイス３４、３６への命令の発行、制御メッセージ・ライン２４からデータ・メッセージ・ライン２６へ、またその逆へのデータの転送等を行うことができる。
【００１９】
出力ポート状態論理６０は複数のレディ・キュー７０を含む。そこではさまざまな優先度のメッセージが転送を待ってキュー待機される。図４には優先度１のレディ・キュー７２及び優先度２のレディ・キュー７４が示してある。レディ・キューはそれぞれＦＩＦＯ（ファーストイン・ファーストアウト）キューであり、ディスパッチ予定で、共通の優先度が割当てられたタスクが列挙された複数のレジスタ７６と、キューの最初に列挙されたタスクと、最後に列挙されたタスクの識別子が格納される対になったレジスタ７８及び８０とで構成される。各タスクはＯＰＴＥ（出力ポート・テーブル・エントリ）によって示される。ＯＰＴＥはテーブル（すなわち出力ポート・テーブル（ＯＰＴ））に格納される論理データ構造である。論理データ構造はそれぞれ以下”制御ブロック”と呼ぶ。各ＯＰＴＥは更にここから連結された制御ブロックを有し、これがある特定のタスクの具体的な側面を定義する。
【００２０】
本発明を実現するために用いられる各制御ブロックについて以下に詳しく説明する。また実行可能なＯＰＴＥをレディ・キュー７０にキュー待機する手続き、並びにＯＰＴＥのサブタスクを、ディスパッチのプロセスにあるときに動的に連結する手続きについて説明する。後で明らかになるが、出力ポート状態論理６０は、優先度が最大のレディ・キューにある各メッセージを、次に低い優先度のレディ・キューに進む前に転送しようとする。
【００２１】
入力ポート状態論理６２は、制御メッセージ・ライン・インターフェイス８０から制御メッセージを受信して一時的にバッファに格納する。制御メッセージをクラス（すなわちハードウェア実行またはプロセッサ実行）に従ってデコードし、ハードウェア実行メッセージは、その実行場所であるメッセージ実行ユニット８２に転送される。プロセッサ実行メッセージは、受信された制御メッセージ・ヘッダ内のコードによって必要とされる機能に対応した論理入力データ構造内のＤＲＡＭ２８内のメモリ・アドレスに受信される。この機能は後で実行される。
【００２２】
図５を参照して、データ・バッファ・インターフェイス・モジュール３０の詳細について説明する。これは構造的には制御メモリ・インターフェイス・モジュール２７と類似である。データ・バッファ・インターフェイス・モジュール３０は、接続された各種機能間の通信を可能にするスイッチ９０の回りに構成される。ＤＲＡＭコントローラ９２によりデータ・メモリ３２へのアクセスが可能になる。ローカル制御バス・インターフェイス９４は制御メモリ・インターフェイス・モジュール２７と相互接続され、制御メッセージの受信及び転送を可能にする。データ・バス・インターフェイス９６は、デバイス・インターフェイス・モジュール３４、３６及びそれぞれに接続されたディスク・ドライブとの間のアクセスを可能にする。出力ポート状態論理モジュール９８及び入力ポート状態論理モジュール１００は、制御メモリ・インターフェイス・モジュール２７の入出力ポート状態論理モジュールと同じように構成されるが、そこで処理されるデータ構造はより複雑である。命令実行ユニット１０２は、データ・メッセージ・ラインの機能に関連したハードウェア実行メッセージを実行する。データ・ライン・インターフェイス１０４はＩ／Ｏスイッチ４２との通信を可能にする。
【００２３】
上述の制御及びデータのメッセージ・ライン構造により、制御メッセージ及びデータ・メッセージを実質的に独立して処理できる。これにより制御メッセージが処理され転送可能にされるときに平行して長いデータ・メッセージをキュー待機して転送できる。その結果、長いデータ・メッセージの処理を制御メッセージのために先取りする必要はない。
【００２４】
図２のノード内の操作は、ソフトウェアによって生成される制御ブロックによって制御される。読出しまたは書込みの操作はどのようであれ、ノード・プロセッサ２２と共に動作するソフトウェアによって複数の制御ブロックが割当てられ、必要な操作に従ったノード内のハードウェアのセットアップが可能になる。１回の読出しまたは書込みはどのようなものであれ、ソフトウェアは複数の制御ブロックを割当てる。制御ブロックはそれぞれ、読出しまたは書込みの操作に対するハードウェアによるセットアップ操作を可能にするのに必要なパラメータを少なくとも１つ含む。
【００２５】
制御ブロックのデータ構造により、ノードは、別のノード、ディスク・ドライブ、またはホスト・プロセッサのいずれかに転送されるメッセージをアセンブルできる。メッセージは、ある制御ブロックが次の制御ブロックへのポインタを含むように”連結”された複数の制御ブロックを使ってアセンブルできる。制御ブロックは更に、メッセージ用のデータをアセンブルできるようにするデータ処理操作が起こること、データがどこにあるか、その構造の指定、メッセージを含むデータを保持するバッファ格納領域のＩＤ（ディスパッチ保留）、並びにデータがどこにディスパッチされるかを示すデータを示す。本発明は、入力制御ブロック（ＩＣＢ）及び出力制御ブロック（ＯＣＢ）を利用する。ＩＣＢ及びＯＣＢはそれぞれメッセージを含む。ＯＣＢ（及びＩＣＢ）は”連結”でき、その場合、連結されたブロックのシーケンスを管理するシーケンス依存性を有する一連のメッセージを定義できる。
【００２６】
ソフトウェア制御ブロックのデータ構造：
ここで、図２のノードの動作を制御するために用いられる制御ブロックについて説明する。図６乃至図９で、ハードウェアとソフトウェアを組み合わせたブロック図に、データ・メッセージ及び制御メッセージ両方をディスパッチし、受信できるようにする制御ブロックを示す。
【００２７】
図６及び図８を参照する。各ノードは、制御ブロックのデータ出力”ライン”とデータ入力”ライン”を含み、それぞれ出力及び入力のデータ・メッセージを処理する。図７及び図９は、それぞれ制御メッセージを処理する制御出力ラインと制御入力ラインを示す。
【００２８】
出力ライン制御ブロック（制御及びデータのメッセージ）：
図６のデータ出力ラインは、ハードウェア出力ポート１１４によって提供される出力回路１１０を含む。これと同等なハードウェア入力ポート１１６（図８参照）は、入力回路１１２を通してデータ・メッセージを受信する。ハードウェア出力ポート１１４は、バッファ・インターフェイス３０（図２参照）内の物理的エンティティであり、出力されるデータ・メッセージの処理及び格納を管理する。ハードウェア出力ポート１１４は一連の関連付けられたハードウェア・レジスタ（図６及び図８には図示なし）を含み、複数の優先度レディ・キューを設定し、制御ブロック・データ構造から制御データを受信する（後述）。必要な制御データがレディ・キューに追加されると、レジスタに存在する制御データを使って、ある特別なデータ処理操作を実行できる（メッセージのアセンブリ及び転送等）。
【００２９】
ハードウェア出力ポート１１４は、ハードウェア出力ポート１１４に割当てられた”論理ポート”を列挙する出力ポート・テーブル（ＯＰＴ）１１８に関連付けられる。論理ポートはそれぞれ、出力ポート・テーブル・エントリ（ＯＰＴＥ）１２０によって定義される。そのデータ構造の一部を下記の表１に示す。
【表１】
出力ポート・テーブル・エントリ（ＯＰＴＥ）
−チェインの先頭ＯＣＢ
−チェインの最終ＯＣＢ
−フラグ（ステータス・セーブ、レディ）
−次のＯＰＴＥ
−入力物理ポート
−入力論理ポート
【００３０】
ＯＰＴＥ１２０は、データ処理操作を開始するのに必要な第１の出力制御ブロック（ＯＣＢ）の指定と、データ処理操作を終了する最後の出力制御ブロック（ＯＣＢ）の指定を含む。中間のＯＣＢは、個々のＯＣＢ制御ブロック内に含まれる値を連結することによって確認される。ＯＣＢにより、データの検出をデータ処理操作に委ねることができる。
【００３１】
ＯＰＴＥ１２０はまた、割込み条件、ステータス状態、応答状態等を定義するフラグを含む。この種のフラグにレディ・フラグがある。これは、セットされると、ＯＰＴＥがディスパッチのためレディ・キューに置かれたことを示す。ステータス・セーブ・フラグは、セットされると、ＯＰＴＥのディスパッチに割込みがかかったことと、最後のディスパッチ操作が終了したところでディスパッチ操作を後で再開できるように、そのステータスがセーブされたことを示す。ＯＰＴＥ１２０はまた、ハードウェア入力データ・ポート１１６（図８）及び入力論理ポートの両方に対するポインタを含む。当業者には明らかなように、ソフトウェアによって生成される制御メッセージにより、ノードがＯＰＴＥ１２０の各種エントリ、及びそこから連結されたすべてのＯＣＢをセットアップできる。
【００３２】
ソフトウェアにより、ノード・プロセッサ２２が出力ラインをタスクのために設定する、例えば、メッセージをコンパイルして他のノードに転送するとき、このタスクは、タスクのＯＰＴＥ制御ブロックをテーブルに追加することによって出力ポート・テーブル１１８（図６）に入力される。ＯＰＴＥは先に示したように、タスク全体がコンパイルされ、ＯＰＴＥがレディ・キューに列挙されるまで０に等しくセットされ、ＯＰＴＥがレディ・キューに列挙された時点で１にセットされるレディ・フラグを含む。その時までタスクはディスパッチが可能ではない。従ってＯＰＴ１１８は、アセンブリのさまざまな段階にある多くのタスクを含む可能性があり、あるタスクはディスパッチ可能で、あるタスクは割込み可能、またあるタスクはコンパイル中という状態になる。
【００３３】
各ＯＰＴＥ１２０から連結されるのは、他の連結済み制御ブロックと共に、ディスパッチ予定のデータがどこにあるかを定義する出力制御ブロック（ＯＣＢ）１２２である。ＯＣＢ１２２（図６参照）は他にも情報を含み、そのデータ構造は下記の表２に示す通りである。
【表２】
出力制御ブロック（ＯＣＢ）
−次のＯＣＢポインタ
−先頭ＴＤＶＥ
−最終ＴＤＶＥ
−フラグ
−目的アドレス
−宛先の入力論理ポート・アドレス
−メッセージ・データ
−ＴＤＶ／ＢＣＢ
【００３４】
ＯＣＢ１２２のデータ構造は、ＯＰＴＥを構成する作業単位またはタスクの連結を実現する次のＯＣＢへのポインタを含む。ＯＣＢ１２２はまたトラック記述子ベクトル（ＴＤＶ）・テーブル１２４へのポインタを含む。これらポインタは、先頭トラック記述子ベクトル・エントリ（ＴＤＶＥ）１２６及び最終ＴＤＶＥ１２８（いずれもＴＤＶ１２４内）を示す。以下に説明するが、列挙されたＴＤＶＥは、データ・レコードが見つけられ、また指示されたバッファ領域で他のデータが見つけられる、ディスク・ドライブ・メモリ領域の識別を可能にする制御ブロックである。ＴＤＶＥ制御ブロックの詳細については後述する。
【００３５】
ＯＣＢ１２２はまた、データの宛先アドレスと、データが送られる宛先の入力論理ポート番号を含む。ＯＣＢ１２２には更に、連結済みデータを必要とせずに、制御メッセージ・データを追加して、制御情報を宛先アドレスに転送することができる。最後にＯＣＢは、タスクの一部を含むデータがバッファ・メモリに格納されている場合は、データのバッファ制御ブロック（ＢＣＢ）１３０のアドレスを含む。
【００３６】
ＯＣＢは先に示したように、ディスク・ドライブ・トラック内のデータの検出を可能にする情報を含む。この情報は、複数のトラック記述子ベクトル・エントリ１２６乃至１２８を含むトラック記述子ベクトル（ＴＤＶ）・テーブル１２４を指定する。従ってＴＤＶテーブル１２４は、複数の物理ディスク・トラックで構成可能な論理ディスク・トラックを定義する。ＴＤＶＥ１２６、１２８は、ディスク・ドライブ上の物理ディスク・レコードのフォーマットを記述した制御ブロックである。ＯＣＢ１２２は先頭ＴＤＶＥポインタ１２６の他に、ＯＣＢ操作の全記録が、ＯＣＢ１２２内、またはそこからアクセス可能なデータによって識別されるように、最終ＴＤＶＥポインタ１２８を含む。
【００３７】
ＴＤＶＥデータ構造を下記の表３に示す。
【表３】
トラック記述子ベクトル要素（ＴＤＶＥ）
−フィールド１データＩＤ（カウント等）
−フィールド２長（キー等）
−フィールド３長（データ等）
−フラグ
−先頭ＢＣＢ
−レコード番号
【００３８】
あるディスク・トラック上のレコードが、これまでの”カウント、キー、データ”構造を使って配置されているとすると、ＴＤＶＥは、カウント、キー、及びデータの各フィールドのフィールド記述子を含むことになる。カウント・キー・フィールドは、レコードのフィールド１にあるレコード・カウント番号を含む。フィールド２の値はレコード名の長さ（すなわちキー）を含む。フィールド３の値は、ディスク・レコードのデータ部にあるデータの長さを示す。
【００３９】
他の制御ブロックと同様（各ＴＤＶＥ１２６、１２８等は制御ブロックである）、割込み状態、制御状態等を定義するフラグが追加される。ＴＤＶＥは更に先頭バッファ制御ブロック（ＢＣＢ）１３０へのポインタを含む。ＢＣＢ１３０は、タスク全体の一部としてディスパッチされるメッセージの部分であるデータを保持した物理バッファ空間の識別を可能にするデータを含む。図６に示す通り、ＢＣＢは連結できる。従って各ＴＤＶＥに先頭ＢＣＢ１３０へのポインタを追加できる。ＢＣＢデータ構造を下記の表４に示す。
【表４】
バッファ制御ブロック
−次のＢＣＢのポインタ
−バッファのデータ・バイト数
−バッファ・サイズ
−フラグ
−バッファ・アドレス
【００４０】
ＢＣＢ１３０のデータ構造は、次のＢＣＢへのポインタで始まり（存在する場合）、タスク関連データに複数のバッファ位置が割当てられることが示される。ＢＣＢ制御ブロックの次のエントリは、物理バッファ空間に格納されるデータ・バイト数、及び実バッファサイズを定義する。またフラグは、ＢＣＢに追加される各種制御情報及びデータが存在するバッファ（バッファ１３２等）の物理アドレスを示す。
【００４１】
制御メッセージの場合は（図７参照）それが比較的シンプルなので、ＴＤＶテーブル及びそれに含まれるＴＤＶＥは使用する必要がない。その結果、ＯＣＢ１２２は、バッファ領域１３２に格納された制御メッセージの最初の部分を定義するＢＣＢ１３０へのポインタを含む。他のＢＣＢ１３４、１３６はＢＣＢ１３０から連結できる。
【００４２】
入力ライン制御ブロック（データ及び制御のメッセージ）：
ノードに用いられる制御ブロック・データ構造はまた、入力ポート・テーブル（ＩＰＴ）、入力ポート・テーブル・エントリ（ＩＰＴＥ）、及び入力制御ブロック（ＩＣＢ）を含む。これらの制御ブロックは他のノードから受信された入力タスクの処理に用いられる。図８でＩＰＴ１４０は、各種入力タスクを定義した複数のＩＰＴＥ１４２を含む。各ＩＰＴＥは、実行される作業単位を定義したＩＣＢ１４４へのポインタを含む。各ＩＣＢ１４４はトラック記述子ベクトル（ＴＤＶ）・テーブル１４６へのポインタを含む。ＴＤＶテーブル１４６は上述のように、ＩＣＢ１４４によって定義された作業単位の実行に用いられるディスク・メモリの領域を定義する。ＩＣＢ１４４はまた、最初のトラック記述子ベクトル要素（ＴＤＶＥ）１４８及び最後のＴＤＶＥ１５０の指標を有する。前記のように、ＴＤＶＥはそこからＢＣＢを連結できる。
【００４３】
ＩＰＴＥはそれぞれ下記の表５に示すようなデータ構造を含む。
【表５】
入力ポート・テーブル・エントリ（ＩＰＴＥ）
−先頭ＩＣＢ
−最終ＩＣＢ
−フラグ
−出力ハードウェア・ポートへのポインタ
−出力論理ポートへのポインタ
【００４４】
ＩＰＴＥは、データ処理操作を開始するのに必要な先頭入力制御ブロック（ＩＣＢ）の指標と、操作を完了する最終ＩＣＢの指標を含む。中間ＩＣＢは、ＩＣＢ制御ブロック内に含まれるポインタを連結することによって確認される。
【００４５】
入力データ・メッセージがハードウェア入力ポート１１６によって受信されると、一連のＩＣＢ１４４が割当てられ、要求されたタスクの実行が可能になる。ＩＣＢの関連部分のデータ構造を下記の表６に示す。
【表６】
入力制御ブロック（ＩＣＢ）
−次のＩＣＢポインタ
−フラグ
−セクタ長
−セクタ・カウント
−先頭ＴＤＶＥ
−最終ＴＤＶＥ
−ＴＤＶ／ＢＣＢポインタ
【００４６】
各ＩＣＢ１４４は、次のＩＣＢ制御ブロックのアドレス値である次のＩＣＢポインタを含む（後続のＩＣＢ間の連結操作を有効にする）。最初のＩＣＢ１４４へのポインタはＩＰＴＥ１４２に置かれ、このポインタを使うことにより、ＩＰＴＥ１４２に関連したすべてのＩＣＢが確認可能になる（ＩＣＢ／ＩＣＢポインタと組み合わせて）。ＴＤＶＥポインタ・データにより、入力されるタスクに必要なデータ処理操作からの入力データが格納されるか、データがそこから導かれるディスク・ドライブ・トラックの識別が可能になる。
【００４７】
図９には、制御メッセージに用いられる論理制御ブロックが示してある。ＯＰＴＥ及びＯＣＢに関連した制御メッセージと同様、制御メッセージはシンプルなので、ＴＤＶＥ制御ブロックは必要なく、各ＩＣＢは、関連するＢＣＢ１５２、１５４及び１５６を直接指し示せるようにされる。
【００４８】
命令：
先に述べた通り、ノード・プロセッサ２２（図２）はソフトウェア制御であり、またノード全体の動作を制御する。あるハードウェア機能がノード内にあって実質的に独立に動作し、ノード・プロセッサ２２を補助的な制御機能から開放する。図３に示すように、出力ポート状態論理６０及び入力ポート状態論理６２は両方とも状態機械であり、それぞれ出力機能及び入力機能を制御する。
【００４９】
出力ポート状態論理６０は、優先度が付けられた複数のキュー７０を制御し、データ処理装置全体の動作に必要なときにタスクを優先度の順に出力できるようにする。出力ポート状態論理６０の動作では、完了するまで複数のマシン・サイクルを要することがあり、ノード内で実行中の他のアクティブなプロセスとリソースを競う結果になることがある。競合を避けるため、ノード・プロセッサ２２はハードウェア構造内の機構のアトミック操作を開始する”命令”を発行し、基本的には”命令を受けた”手続きが進行中はそのハードウェア機構へのアクセスをロックアウトできるようにされる。
【００５０】
ソフトウェアが”出力ポート・レディ”命令を出すとＯＰＴＥがキュー待機され、そのディスパッチ（または他のＯＰＴＥのディスパッチ）が試行されるまでソフトウェアは出力ポート状態論理６０へのアクセスを禁止される。同様にソフトウェアは”ＩＣＢ／ＯＣＢをチェインに追加”命令を出せる。この命令により、例えばディスパッチ可能なＯＣＢがディスパッチされていないＯＣＢに連結される。ここでもソフトウェアは、連結されるＯＣＢに関連したデータを変更することは禁止される。
【００５１】
レディ・キューへのタスクの追加：
ここで図１０乃至図１２とその論理フローチャートを参照し、出力ポートのレディ・キューにタスクを追加する手続きについて説明する。最初（ボックス２００）、ソフトウェアによりノード・プロセッサ２２が、あるタスク、例えばＯＰＴＥ  Ａに”出力ポート・レディ”命令を出す。出力ポート状態論理６０（図３）はこの命令の受信に応答して、そのレディ・キューにＯＰＴＥが列挙されているか確認する（判断ボックス２０２）。ＮＯであれば、ＯＰＴＥ  Ａのタスクはすぐ実行される（ボックス２０４）。レディ・キューにＯＰＴＥが列挙されているなら、ＯＰＴＥ  Ａはすぐに実行できない可能性のあることがわかる。
【００５２】
最初、出力ポート状態論理６０は、ＯＰＴＥ  Ａ制御ブロックのレディ・フラグが１にセットされているか確認する。ＹＥＳであれば、これはＯＰＴＥ  Ａがすでにレディ・キューにセットされていることを意味し、手続きは終了する（楕円２０８）。ＯＰＴＥ  Ａのレディ・フラグが１にセットされていない場合、出力ポート状態論理６０は、ＯＰＴＥ  Ａの優先度に等しい割当て優先度を示すレディ・キューの最初／最後のレジスタをチェックする（ボックス２１０）。このチェック・プロセスでまず、最初のレジスタ値が０に等しいかどうか確認される（判断ボックス２１２）。ＹＥＳであれば、これはそのレディ・キューに登録されたＯＰＴＥは他にないことを意味し、ＯＰＴＥ  Ａはそこに列挙される最初のタスクになる。その場合、ＯＰＴＥ  Ａのアドレスがそのレディ・キューの最初及び最後のレジスタに書込まれる（ボックス２１４）。またＯＰＴＥ  Ａ制御ブロックの次のＯＰＴＥフィールドに”０”が書込まれる（ボックス２１６）。これは、他のＯＰＴＥはＯＰＴＥ  Ａ制御ブロックから連結されていないことを示す。
【００５３】
判断ボックス２１２に示してあるように、レディ・キューの最初のレジスタの値が０以外なら、ＯＰＴＥが他に少なくとも１つはレディ・キューに位置している。その場合、ＯＰＴＥ  Ａアドレスがキューの最後のレジスタに書込まれ（ボックス２１８）、ＯＰＴＥ  Ａ制御ブロックのアドレスが、レディ・キューに列挙された最後のＯＰＴＥの次のＯＰＴＥフィールドに書込まれる（ボックス２２０）。ＯＰＴＥ  Ａはこれでレディ・キューに列挙されるので、このことが、ＯＰＴＥ  Ａのレディ・フラグを１に等しくセットすることによって示される（図１１のボックス２２２）。
【００５４】
この段階で、出力ポート状態論理６０は、ＯＰＴＥが現在実行中かどうかの確認に進む（判断ボックス２２４）。ＮＯであれば、出力ポート状態論理６０は、優先度が最大のレディ・キューの先頭にあるＯＰＴＥの実行を試行する（ボックス２２６）。このＯＰＴＥはＯＰＴＥ  Ａではないことも考えられ、ＯＰＴＥ  Ａが列挙されたレディ・キューより優先度が高いレディ・キューの先頭に達した他のＯＰＴＥとも考えられる。これにより、優先権は常に優先度の高いタスクに与えられ、優先度の低いタスクは犠牲になる。図１のシステムの場合、このように優先度の高いタスクは、一般にはメッセージは短いがネットワークの正常動作には欠かせない制御機能を含む。従って、このような制御機能は高い優先度でディスパッチされ、優先度の低いＯＰＴＥのキュー待機により遅れることはない。
【００５５】
現在実行中のＯＰＴＥが、新たにキュー待機されたＯＰＴＥより優先度が低い場合、現在実行中のＯＰＴＥの実行は中断される。従って、ＯＰＴＥが現在実行中であることを判断ブロック２２４が示す場合、出力ポート状態論理６０は、現在実行中のＯＰＴＥの優先度が、ＯＰＴＥ  Ａの優先度より高いか、等しいか、または低いか確認する。現在実行されているＯＰＴＥが、ＯＰＴＥ  Ａより優先度の高いＯＰＴＥ  Ｂとすると（判断ボックス２２８）、手続きは終了する（楕円２３０）。ＯＰＴＥ  Ａ及びＯＰＴＥ  Ｂの両方が同じ優先度とわかった場合、”フェアネス”手続き（ボックス２３２）が実行され、ある優先度のタスクはどれも、同じ優先度の他のタスクの実行を長く遅らせることのないようにされる。
【００５６】
簡単には、フェアネス手続きにより、出力ポート状態論理６０が、優先度が共通のタスクを多重化することができる。従って、最初のタスクで転送されるデータの量がしきい値に達したとき、そのタスクは切断され、同じキューにある別のタスクが実行を開始するが、両方が完了するまで両方とも多重化されている。フェアネス手続きの詳細についてはＢｒａｄｙらによる米国特許出願番号第１７６０４２号を参照されたい。
【００５７】
判断ボックス２２８に示してあるように、現在実行中のＯＰＴＥ  Ｂの優先度がＯＰＴＥ  Ａに割当てられた優先度より低いことがわかった場合、”優先度切断命令”が出され（ボックス２３４）、現在実行されているＯＰＴＥ  Ｂが切断される（ボックス２３６）。このような切断時には、実行が完了したＯＰＴＥ  Ｂから連結されている最後の制御ブロックを記録することによって、ＯＰＴＥ  Ｂの実行のステータスがセーブされる。その後、ＯＰＴＥ  Ｂが再び実行可能な状態になったとき、実行ステータスが復元され、実行が完了した制御ブロックの直後の制御ブロックから実行が継続する。この手続きにより、ＯＰＴＥから連結されたＢＣＢがすべて連結の順序で実行される。ＢＣＢは連続して実行できないことがあるが、受信側ノードは全ＢＣＢが連結順序で受信されることが保証される。ただしこれは、優先度、アセットの可用性等に応じて任意の順序で実行できるＯＰＴＥには当てはまらない。
【００５８】
切断されたＯＰＴＥ  Ｂの実行ステータスがセーブされれば、ＯＰＴＥ  Ｂ制御ブロックのステータス・セーブ・フラグが１にセットされる。ＯＰＴＥ  ＢはまだＯＰＴに列挙されているので、ＯＰＴＥ  Ｂが再び実行可能になると、そのステータスを検索して切断点から実行を開始する必要のあることをステータス・セーブ・フラグがシステムに知らせる。
【００５９】
ＯＰＴＥ  Ｂは切断されるが、完了はしていないのでそのレディ・キューには列挙されたまま残る（ボックス２３８）。出力ポート状態論理６０はここでＯＰＴＥを実行できる状態になるが、キュー待機され、実行中のＯＰＴＥ  Ｂより優先度が高いことがわかったばかりのＯＰＴＥ  Ａとは限らない。先に示した通り、出力ポート状態論理６０は、優先度が最大のレディ・キューの先頭にあるＯＰＴＥの実行に進む（ボックス２２６）。この操作を行うため（図１２参照）、最初に、この操作を可能にするためリソースが利用できるかどうか確認される（判断ボックス２４０）。例えば、必要なデータ・リンクが使えない場合、優先度が最大のＯＰＴＥを実行するのに必要なリソースは利用できず、その場合、そのＯＰＴＥはそのレディ・キューの下に移される（ボックス２４２）。逆に優先度が最大のＯＰＴＥを実行するためにリソースが利用できるなら、その実行が開始される（ボックス２４４）。タスクが完了すると、完了したＯＰＴＥはそのレディ・キューから削除される（判断ボックス２４６及びボックス２４８）。タスクが例えば不具合のため中断すると中断したタスクは切断され、そのセーブされたステータス及びステータス・セーブ・フラグがセットされる（ボックス２５０）。中断したタスク（すなわちＯＰＴＥ）は次にそのレディ・キューから削除され、後で中断の理由がなくなったとき再びキュー待機できるようになる。
【００６０】
この段階で出力ポート状態論理６０により次のＯＰＴＥを処理できる。従って判断ボックス２５２に示してある通り、ＯＰＴＥ  Ａを保持したレディ・キューより優先度が高いＯＰＴＥがレディ・キューに存在する場合、優先度が最大のレディ・キューの先頭にあるそのＯＰＴＥがアクセスされる（ボックス２５４）。アクセスされたＯＰＴＥが切断されたものである場合、そのステータスが検索され、完了した最後のＢＣＢに連結された割込み点（例えば次のＢＣＢ）から実行が開始される。そこで手続きは判断ボックス２４０に戻って繰り返される。
【００６１】
優先度が高いレディ・キューにＯＰＴＥが存在しない場合は、ＯＰＴＥ  Ａを保持したレディ・キューがアクセスされ、その先頭のＯＰＴＥが実行される（判断ボックス２５６）。後に、現在の優先度のレディ・キューに列挙されたＯＰＴＥが見つからない場合、手続きは優先度の低いレディ・キューに移り（判断ボックス２５８）、そこに列挙されたＯＰＴＥが前記のように実行される。優先度の低いレディ・キューにＯＰＴＥが見つからない場合、プロセスは終了する（楕円２６０）。
【００６２】
実行中のタスクへのタスクの追加：
先に示した通り、ＯＰＴＥから”ポート・レディ命令”が出されると、ソフトウェアはＯＰＴＥの変更を禁止される。しかしＯＰＴＥはポート・レディ命令に従うが、そのタスクは、別の連結されたＢＣＢを追加することによって補助できる。この手続きにより、図１３に示したその機能が有効になり、初めにソフトウェアが”ＯＣＢをチェインに追加”命令を出す。この命令は、新たなＯＣＢ及び新たなＯＣＢが追加されるＯＰＴＥへのポインタを含む（ボックス２７０）。出力ポート状態論理６０は命令に応答して、ＯＰＴＥの最後のＯＣＢポインタの値を新たなＯＣＢのアドレスに変更する。またＯＰＴＥから連結された最後のＯＣＢの次のＯＣＢポインタは変更され、新たなＯＣＢのアドレスが示される（ボックス２７２）。ＯＰＴＥから連結されたＯＣＢがない場合は、ＯＰＴＥの最初のＯＣＢ及び最後のＯＣＢのポインタが新たなＯＣＢアドレスと等しくセットされる（ボックス２７４）。このようにして、実行中のタスクは連結された他のＯＣＢという手段を通して補助され、実行中のタスクを中断、或いはこれに割込みをかける必要はない。ＯＣＢがチェインに追加されるとソフトウェアは再びレディ命令を出して、命令が出される前にＯＣＢが完了する場合に備える。
【００６３】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００６４】
（１）データ処理装置において優先度が付けられたタスクの実行を制御する方法であって、前記データ処理装置は、ソフトウェアによって制御されるプロセッサとハードウェアで構成されるキュー・コントローラを含み、前記キュー・コントローラは優先度が付けられた複数のキュー手段を含み、前記キュー手段はそれぞれ、割当てられた優先度が前記キュー手段に割当てられた優先度に等しいタスクを列挙し、前記キュー・コントローラはプロセッサによって生成された命令に応答して、第１のタスクを、実行を目的にキュー待機するために、
前記第１のタスクを、割当てられた優先度が前記第１のタスクの優先度に等しい第１のキュー手段に列挙するステップと、
割当てられた優先度が高いキュー手段に第２のタスクが列挙されている場合には、前記第１のタスクの実行前に前記第２のタスクの実行を試行するステップとを含む方法を実行する、
方法。
（２）割当てられた優先度が前記第１のキュー手段よりも高いキュー手段にタスクが列挙されていない場合は、前記第１のキュー手段に列挙された第１のタスクの実行を試行するステップと、
前記タスクの実行完了時に、または前記タスクの実行中断時には、割当てられた優先度の高いキュー手段にタスクをセットする他の命令が発行されていない場合にのみ前記第１のキュー手段上の他のタスクの実行を試行するステップと、
を含む、前記（１）記載の方法。
（３）タスクは、連結された複数のサブタスクを含み、前記方法が、
前記プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行するステップと、
前記サブタスクの実行が完了しない場合は、完了しなかった前記サブタスクに連結されたサブタスクの代わりに他のタスクの実行を試行するステップと、
を含む、前記（１）記載の方法。
（４）サブタスクの実行が完了していないとき、正常に実行された前記タスクの最後のサブタスクを後で確認できるようにするレコードを格納するステップと、
サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行されるステップと、
を含む、前記（３）記載の方法。
（５）全キュー手段上の全タスクが実行されるまで、前記キュー手段に列挙されたタスクの実行試行を継続するステップを含む、前記（１）記載の方法。
（６）優先度が付けられたタスクの実行を制御するデータ処理装置であって、
ソフトウェア制御下で、優先度が付けられたタスクを優先度が付けられたキュー手段にセットするレディ命令を発行するプロセッサ手段と、
優先度が付けられ、それぞれ実行可能な状態の共通優先度のタスク名を記録する複数のレジスタを含み、共通の優先度を有するタスクの名前だけを記録する複数のキュー手段を含み、ｉ）第１のタスク名に割当てられた優先度に等しい優先度が指定された第１のキュー手段に、レディ命令によって指定された前記第１のタスク名を列挙し、ｉｉ）前記第１のタスクの優先度よりも高い優先度が割当てられたキュー手段に他のタスク名が列挙されている場合は、前記第１のタスクの前に前記他のタスクを実行する、前記レディ命令に応答し、前記プロセッサのソフトウェア制御動作によって割込みをかけられない少なくとも１つのタスクの実行をアトミック・ベースで試行するレディ命令に応答する、キュー・コントローラ・ハードウェア手段と、
を含む、データ処理装置。
（７）前記第１のキュー手段よりも高い優先度が割当てられたキュー手段にタスク名が列挙されていない場合は、前記キュー・コントローラ・ハードウェア手段が、前記第１のキュー手段に列挙された第１のタスクの実行を試行し、列挙された前記第１のタスクの実行の完了時または列挙された前記第１のタスクの実行中断時に、前記キュー・コントローラ・ハードウェア手段が、高い優先度が割当てられたキュー手段にタスクをセットする他の命令が発行されていない場合にのみ、前記第１のキュー手段上の他のタスクの実行を試行する、前記（６）記載のデータ処理装置。
（８）タスクは連結された複数のサブタスクを含み、前記キュー・コントローラ・ハードウェア手段は、前記プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行し、前記サブタスクの実行が完了しない場合は、完了しなかった前記サブタスクに連結された前記サブタスクの代わりに別のタスクの実行を試行する、前記（１）記載のデータ処理装置。
（９）サブタスクの実行が完了しないとき、前記キュー・コントローラ・ハードウェア手段により、正常に実行された前記タスクの最後のサブタスクを後に確認できるようにするレコードが格納され、サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行される、前記（８）記載のデータ処理装置。
【図面の簡単な説明】
【図１】ノードのデータ処理アレイを示すブロック図である。
【図２】図１のシステムに用いられる代表的ノードの構成要素を示すブロック図である。
【図３】図２のノードに含まれる制御メモリ・インターフェイス・ブロックのブロック図である。
【図４】図３に示した出力ポート状態論理ブロックに含まれる複数の優先度キュー・レジスタ構造を示す図である。
【図５】図２のノードのデータ・バッファ・インターフェイス・ブロックの詳細なブロック図である。
【図６】データ・メッセージのコンパイルとディスパッチを可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図７】制御メッセージのコンパイルとディスパッチを可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図８】データ・メッセージの受信と格納を可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図９】制御メッセージの受信と格納を可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図１０】図２の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。（図１１と図１２を合わせて参照されたい。）
【図１１】図２の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。（図１０と図１２を合わせて参照されたい。）
【図１２】図２の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。（図１０と図１１を合わせて参照されたい。）
【図１３】タスクが実行中のプロセスであるときにそのタスクのサブタスクを追加する手続きの論理フローチャートを示す図である。
【符号の説明】
１２、１４、１６、１８  ディスク・ドライブ
２７  制御メモリ・インターフェイス・モジュール
３０  データ・バッファ・インターフェイス・モジュール
３８、４０  関連ディスク・ドライブ
４４  通信リンク
６４  オペランド・メモリ・バス
１１８  出力ポート・デーブル
１４０  入力ポート・テーブル
【図１】
0003549081.tif 000002
【図２】
0003549081.tif 000003
【図３】
0003549081.tif 000004
【図４】
0003549081.tif 000005
【図５】
0003549081.tif 000006
【図６】
0003549081.tif 000007
【図７】
0003549081.tif 000008
【図８】
0003549081.tif 000009
【図９】
0003549081.tif 000010
【図１０】
0003549081.tif 000011
【図１１】
0003549081.tif 000012
【図１２】
0003549081.tif 000013
【図１３】
0003549081.tif 000014