JP3549081B2 - 優先度付きタスク実行制御方法及びデータ処理装置 - Google Patents
優先度付きタスク実行制御方法及びデータ処理装置 Download PDFInfo
- Publication number
- JP3549081B2 JP3549081B2 JP23500096A JP23500096A JP3549081B2 JP 3549081 B2 JP3549081 B2 JP 3549081B2 JP 23500096 A JP23500096 A JP 23500096A JP 23500096 A JP23500096 A JP 23500096A JP 3549081 B2 JP3549081 B2 JP 3549081B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- queue
- priority
- execution
- subtask
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 49
- 238000012545 processing Methods 0.000 title claims description 40
- 230000004044 response Effects 0.000 claims description 10
- 239000000872 buffer Substances 0.000 description 29
- 230000006870 function Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 210000005098 blood-cerebrospinal fluid barrier Anatomy 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 231100000176 abortion Toxicity 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータを制御して実行可能なタスクをディスパッチする方法及び装置に関し、特にソフトウェアの介在を最小限にしてコンピュータのレディ・キューからのタスクのディスパッチを処理する方法及び装置に関する。
【0002】
【従来の技術】
コンピュータで同時に処理するタスクが増えているため、タスク処理のオーバヘッドも増加している。現在コンピュータは、ソフトウェア・プロセスにより、どのタスクが実行されるか、またいつ実行されるかを決定する。あるタスクが終了する(或いはエラー、またはリソース不足で完了しないことがわかる)と、割込み手続きによりソフトウェアが通知を受け、そこでソフトウェアは次に取るべき処置を決定しなければならない。割込みがコンピュータによって処理されている間、システムは、新たな仕事が割当てられるのを待って休止状態にあることがある。新たなタスクが割当てられると、タスクが実行のためいつリリースされるかを決定するのは、タスク・ディスパッチ機構の役割である。このようなタスク・ディスパッチ装置の多くは、優先度が変わるタスクを処理し、上位優先度のタスクは下位優先度タスクより前に実行されるようにする必要がある。この機能は通常は、ソフトウェアがアクティブ・タスクを終了させ、新たな上位優先度タスクを起動することによって行われる。その場合、ソフトウェアは現在のタスクに割込みをかけ、上位優先度タスクを起動し、最終的には、中断されたタスクを再起動する必要がある。この操作では、プロセッサに複数の割込みをかけてソフトウェアがタスク・スイッチングを処理できるようにする必要がある。これら割込みの処理に必要な時間は、システム全体のパフォーマンスに対してボトルネックを生み、リアルタイム・システムでは重大な問題になることがある。
【0003】
タスク・ディスパッチ装置はまた、タスクが実行されていて、実行中のタスクに追加する必要のある別のタスクが生じる状況を処理する必要がある。このようなタスクの追加を実現するために通常は2つの方法のいずれかが用いられる。最初の方法では、タスクを完全にアセンブルされるまでは起動せず、タスクが1度実行を開始したら他のタスクは追加できない。もう1つの方法では、新たなタスクが追加できるようにタスクの実行が一時的に保留される。いずれの方法でも、タスクの実行は起動時にか動作時に遅らせられ、タスクが次のタスクで更新できるようにされる。
【0004】
従来の技術は、タスク・ディスパッチ機構が効率よく動作できるようにするため、実行するタスクを実行リストにキュー待機する。タスクは割当てられた優先度をもとに実行される。IBM System 370は、ソフトウェアの介入を避けるため、タスク・ディスパッチ機構に”1深さ(1 deep)”キューを採用している。基本的には、タスク・ディスパッチ操作を開始するために用いられる論理制御ブロックが、前のタスクの制御ブロックがディスパッチされた直後にステージ処理される。このような条件下で、ステージ処理されたタスク制御ブロックは、ディスパッチされた前のタスクの完了または中止によりすぐに利用できるようになる。
【0005】
ノードが独立したプロセッサであり、パラレルに動作してデータ処理操作を実行するマルチノードのデータ処理装置が登場してから、タスク・ディスパッチ操作を、ソフトウェアの介入を出来るだけ少なくして実行可能にすることがますます重要になっている。このようなマルチノードのデータ処理装置が効率よく動作するには、システム・アーキテクチャにより、どのノードに障害が発生してもシステムが”クラッシュ”しないように全体の制御機能が分散されるようにしなければならない。このような分散アーキテクチャでは当然、ノード間にかなりのデータ通信レベルが必要になる。そのようなデータ通信がノード・プロセッサの不要なロード操作を避けるように処理されなければ、マルチノード・システム全体のデータ処理効率が影響を受ける。
【0006】
【発明が解決しようとする課題】
本発明の目的は、データ処理装置のための改良されたタスク・ディスパッチの方法及び装置を提供することである。
【0007】
本発明の他の目的は、タスク・ディスパッチの手続きにソフトウェア及び中央プロセッサがなるべく介入しない改良されたタスク・ディスパッチの方法及び装置を提供することである。
【0008】
本発明の他の目的は、実行遅延を実現する必要なく、実行中のタスクに作業単位を追加できる改良されたタスク・ディスパッチの方法及び装置を提供することである。
【0009】
本発明の他の目的は、優先度が最大でキュー待機されたタスクが最初に実行されるようにする改良されたタスク・ディスパッチの方法及び装置を提供することである。
【0010】
【課題を解決するための手段】
マルチノードのデータ処理装置で優先度が付けられたタスクの実行は、ある手続きによって制御される。データ処理装置は、ソフトウェアによって制御されるプロセッサと、ハードウェアで構成されるキュー・コントローラを有するノードを含む。キュー・コントローラは優先度が付けられた複数のキューを含み、各キューは、キューに割当てられた優先度に等しい優先度が割当てられたタスクを列挙する。キュー・コントローラは、プロセッサによって生成された命令に応答して、実行する最初のタスクをキュー待機するため、次のステップを含む方法を実行する。前記第1のタスクを、前記第1のタスクの優先度に等しい優先度が割当てられた第1のキューに列挙するステップ、高い優先度が割当てられたキューに第2のタスクが列挙されている場合には、第1のタスクの実行前に第2のタスクの実行を試行するステップ、前記第1のキューより高い優先度が割当てられたキューにタスクが列挙されていない場合には、第1のキュー手段に列挙された第1のタスクの実行を試行するステップ、及び、タスクの実行完了または実行中止により、高い優先度が割当てられたキューにタスクをセットするために別の命令が発行されているのでない場合にのみ、第1のキューの他のタスクの実行を試行するステップである。この方法は更に、チェインをなすサブタスクを処理するため、プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行し、サブタスクの実行が完了しない場合、完了しなかったサブタスクに連結したサブタスクの代わりに別のタスクの実行を試行する。
【0011】
【発明の実施の形態】
図1のブロック図は、ディスク・ドライブ・コントローラ・アレイとして構成されたマルチノードのネットワーク10を示す。ノードA及びDはデータ格納ノードで、それぞれ、接続されたディスク・ドライブ12、14及び16、18に接続する。対になった通信インターフェイス・ノードB及びCは、接続されたホスト・プロセッサに入力/出力機能を提供する。ホスト・プロセッサはマルチノード・ネットワークのデータ格納機構を利用する。キャッシュ・ノードEは、ネットワーク10とホスト・プロセッサの間のデータ転送機能の入力及び出力の両方に一時的な格納機構を提供する。マルチノード・ネットワーク10は、ノードを追加することによって拡張可能である。ノードはすべて内部通信ネットワーク20によって相互接続される。
【0012】
ノードA乃至Eはそれぞれ図2に示した共通ノード構成をもとに構成される。各ノードに、ノード全体の機能を制御するノード・プロセッサ22が含まれる。更に各ノードに、制御メッセージの受信、格納、及びディスパッチを行う制御メッセージ・”ライン”24と、データ・メッセージの受信、格納、及びディスパッチを行うデータ・メッセージ・”ライン”26が含まれる。制御メッセージ・ライン24は、制御メモリ・インターフェイス・モジュール27と、制御メッセージ・メモリとして機能するDRAM(ダイナミック・ランダム・アクセス・メモリ)28で構成される。データ・メッセージ・ライン26はそれぞれデータ・メッセージ用のデータ・バッファ・インターフェイス・モジュール30とDRAM32を含む。データ・バッファ・インターフェイス・モジュール30は複数のデバイス・インターフェイス34、36等に接続し、これにより関連ディスク・ドライブ38、40等に通信内容が伝えられる。制御メモリ・インターフェイス26、プロセッサ22等からの制御メッセージにより各種ノード操作の制御が有効になる。
【0013】
以下の説明から明らかになるが、マルチノード・ネットワーク10のアーキテクチャは、特性上、ディスク・ドライブとの間で生じる長いデータ・メッセージと、ネットワーク及び個々のノードの両方の動作を有効にするのに必要な複数の小さな制御メッセージのいずれも効率よく処理するように構成される。各ノード内で、制御及びデータのメッセージ・ラインにより、制御及びデータのメッセージの分離が可能になり、その独立処理、及び各ノードに置かれる入力/出力(I/O)スイッチ42への転送が可能になる。I/Oスイッチ42は、それが入力リンク44に届き、別のノードに向けられたメッセージを独立に切り換えられるようにする装置を含む。各ノードは、好適にはラインの少なくとも2倍の通信リンク44を備える。これによりノード内にある通信帯域幅の少なくとも2倍の帯域幅が各ノードに得られる。
【0014】
通信リンク44はそれぞれ別のノードに接続され、これによりメッセージを接続ノードに直接に、または接続ノードを通して別のノードにルーティングできる。I/Oスイッチ42は、どの通信リンク44からも、どの通信リンク44へもメッセージを送ることができる。I/Oスイッチ42は更に、各種リンクの現在状態がわかれば、最適通信リンク46を動的に選択することができる。通信リンク44はそれぞれ独立しており、データ・メッセージまたは制御メッセージに使用できる。
【0015】
ノード構造により、メッセージ・スイッチング機能がすべてデータ処理装置全体に分散し、スイッチングの集中制御機能の必要がなくなった分散ネットワークを構成できる。制御及びデータのメッセージが分離され、実質的に独立に処理されるのはノード内だけである。I/Oスイッチ42は制御及びデータのメッセージを同じように処理する。またノード間の複数のリンクにより、ノードが1つ2つ障害を起こした場合、システムの安定性と冗長性が高くなる。I/Oスイッチ42の詳細については1995年5月24日出願の米国特許出願番号第448901号(SA994117)を参照されたい。この対応日本国特許出願は、特願平8−79177号であり、平成8年4月1日に出願されている。
【0016】
図3は、制御メモリ・インターフェイス・モジュール27の詳細を示す。スイッチ50により制御メモリ・インターフェイス・モジュール27内の各種機能間の通信が可能になる。これらはプロセッサ・バス・インターフェイス52、命令実行ユニット54、DRAMコントローラ56、ローカル制御バス・インターフェイス58、出力ポート状態論理60、及び入力ポート状態論理62である。DRAMコントローラ56により、オペランド・メモリ・バス64を通してRAM28の接続が可能になる。
【0017】
プロセッサ・バス・インターフェイス52は、ノード・プロセッサ22とのインターフェイスであり、メモリのフェッチ及び格納を有効にするパスを提供する。命令実行ユニット54は、データを解釈、フェッチし、実行される命令として、あるメモリ・レジスタに格納する。このユニットで実行される命令は全部ではなく一部であり、ノード・プロセッサ22が介入せずに、ある特定の命令のスピーディな処理が可能になる。
【0018】
ローカル制御バス・インターフェイス58は、ノード・プロセッサ22とデータ・バッファ・インターフェイス・モジュール30(図2)及びデータ・バッファ・インターフェイス・モジュール30に接続された各種デバイス・インターフェイス34、36等の間のアクセスを可能にする。ノード・プロセッサ22は、ローカル制御バス・インターフェイス58を通して、複数の機能、すなわち、フェッチ及びデータ・メモリ32への格納、デバイス・インターフェイス34、36への命令の発行、制御メッセージ・ライン24からデータ・メッセージ・ライン26へ、またその逆へのデータの転送等を行うことができる。
【0019】
出力ポート状態論理60は複数のレディ・キュー70を含む。そこではさまざまな優先度のメッセージが転送を待ってキュー待機される。図4には優先度1のレディ・キュー72及び優先度2のレディ・キュー74が示してある。レディ・キューはそれぞれFIFO(ファーストイン・ファーストアウト)キューであり、ディスパッチ予定で、共通の優先度が割当てられたタスクが列挙された複数のレジスタ76と、キューの最初に列挙されたタスクと、最後に列挙されたタスクの識別子が格納される対になったレジスタ78及び80とで構成される。各タスクはOPTE(出力ポート・テーブル・エントリ)によって示される。OPTEはテーブル(すなわち出力ポート・テーブル(OPT))に格納される論理データ構造である。論理データ構造はそれぞれ以下”制御ブロック”と呼ぶ。各OPTEは更にここから連結された制御ブロックを有し、これがある特定のタスクの具体的な側面を定義する。
【0020】
本発明を実現するために用いられる各制御ブロックについて以下に詳しく説明する。また実行可能なOPTEをレディ・キュー70にキュー待機する手続き、並びにOPTEのサブタスクを、ディスパッチのプロセスにあるときに動的に連結する手続きについて説明する。後で明らかになるが、出力ポート状態論理60は、優先度が最大のレディ・キューにある各メッセージを、次に低い優先度のレディ・キューに進む前に転送しようとする。
【0021】
入力ポート状態論理62は、制御メッセージ・ライン・インターフェイス80から制御メッセージを受信して一時的にバッファに格納する。制御メッセージをクラス(すなわちハードウェア実行またはプロセッサ実行)に従ってデコードし、ハードウェア実行メッセージは、その実行場所であるメッセージ実行ユニット82に転送される。プロセッサ実行メッセージは、受信された制御メッセージ・ヘッダ内のコードによって必要とされる機能に対応した論理入力データ構造内のDRAM28内のメモリ・アドレスに受信される。この機能は後で実行される。
【0022】
図5を参照して、データ・バッファ・インターフェイス・モジュール30の詳細について説明する。これは構造的には制御メモリ・インターフェイス・モジュール27と類似である。データ・バッファ・インターフェイス・モジュール30は、接続された各種機能間の通信を可能にするスイッチ90の回りに構成される。DRAMコントローラ92によりデータ・メモリ32へのアクセスが可能になる。ローカル制御バス・インターフェイス94は制御メモリ・インターフェイス・モジュール27と相互接続され、制御メッセージの受信及び転送を可能にする。データ・バス・インターフェイス96は、デバイス・インターフェイス・モジュール34、36及びそれぞれに接続されたディスク・ドライブとの間のアクセスを可能にする。出力ポート状態論理モジュール98及び入力ポート状態論理モジュール100は、制御メモリ・インターフェイス・モジュール27の入出力ポート状態論理モジュールと同じように構成されるが、そこで処理されるデータ構造はより複雑である。命令実行ユニット102は、データ・メッセージ・ラインの機能に関連したハードウェア実行メッセージを実行する。データ・ライン・インターフェイス104はI/Oスイッチ42との通信を可能にする。
【0023】
上述の制御及びデータのメッセージ・ライン構造により、制御メッセージ及びデータ・メッセージを実質的に独立して処理できる。これにより制御メッセージが処理され転送可能にされるときに平行して長いデータ・メッセージをキュー待機して転送できる。その結果、長いデータ・メッセージの処理を制御メッセージのために先取りする必要はない。
【0024】
図2のノード内の操作は、ソフトウェアによって生成される制御ブロックによって制御される。読出しまたは書込みの操作はどのようであれ、ノード・プロセッサ22と共に動作するソフトウェアによって複数の制御ブロックが割当てられ、必要な操作に従ったノード内のハードウェアのセットアップが可能になる。1回の読出しまたは書込みはどのようなものであれ、ソフトウェアは複数の制御ブロックを割当てる。制御ブロックはそれぞれ、読出しまたは書込みの操作に対するハードウェアによるセットアップ操作を可能にするのに必要なパラメータを少なくとも1つ含む。
【0025】
制御ブロックのデータ構造により、ノードは、別のノード、ディスク・ドライブ、またはホスト・プロセッサのいずれかに転送されるメッセージをアセンブルできる。メッセージは、ある制御ブロックが次の制御ブロックへのポインタを含むように”連結”された複数の制御ブロックを使ってアセンブルできる。制御ブロックは更に、メッセージ用のデータをアセンブルできるようにするデータ処理操作が起こること、データがどこにあるか、その構造の指定、メッセージを含むデータを保持するバッファ格納領域のID(ディスパッチ保留)、並びにデータがどこにディスパッチされるかを示すデータを示す。本発明は、入力制御ブロック(ICB)及び出力制御ブロック(OCB)を利用する。ICB及びOCBはそれぞれメッセージを含む。OCB(及びICB)は”連結”でき、その場合、連結されたブロックのシーケンスを管理するシーケンス依存性を有する一連のメッセージを定義できる。
【0026】
ソフトウェア制御ブロックのデータ構造:
ここで、図2のノードの動作を制御するために用いられる制御ブロックについて説明する。図6乃至図9で、ハードウェアとソフトウェアを組み合わせたブロック図に、データ・メッセージ及び制御メッセージ両方をディスパッチし、受信できるようにする制御ブロックを示す。
【0027】
図6及び図8を参照する。各ノードは、制御ブロックのデータ出力”ライン”とデータ入力”ライン”を含み、それぞれ出力及び入力のデータ・メッセージを処理する。図7及び図9は、それぞれ制御メッセージを処理する制御出力ラインと制御入力ラインを示す。
【0028】
出力ライン制御ブロック(制御及びデータのメッセージ):
図6のデータ出力ラインは、ハードウェア出力ポート114によって提供される出力回路110を含む。これと同等なハードウェア入力ポート116(図8参照)は、入力回路112を通してデータ・メッセージを受信する。ハードウェア出力ポート114は、バッファ・インターフェイス30(図2参照)内の物理的エンティティであり、出力されるデータ・メッセージの処理及び格納を管理する。ハードウェア出力ポート114は一連の関連付けられたハードウェア・レジスタ(図6及び図8には図示なし)を含み、複数の優先度レディ・キューを設定し、制御ブロック・データ構造から制御データを受信する(後述)。必要な制御データがレディ・キューに追加されると、レジスタに存在する制御データを使って、ある特別なデータ処理操作を実行できる(メッセージのアセンブリ及び転送等)。
【0029】
ハードウェア出力ポート114は、ハードウェア出力ポート114に割当てられた”論理ポート”を列挙する出力ポート・テーブル(OPT)118に関連付けられる。論理ポートはそれぞれ、出力ポート・テーブル・エントリ(OPTE)120によって定義される。そのデータ構造の一部を下記の表1に示す。
【表1】
出力ポート・テーブル・エントリ(OPTE)
−チェインの先頭OCB
−チェインの最終OCB
−フラグ(ステータス・セーブ、レディ)
−次のOPTE
−入力物理ポート
−入力論理ポート
【0030】
OPTE120は、データ処理操作を開始するのに必要な第1の出力制御ブロック(OCB)の指定と、データ処理操作を終了する最後の出力制御ブロック(OCB)の指定を含む。中間のOCBは、個々のOCB制御ブロック内に含まれる値を連結することによって確認される。OCBにより、データの検出をデータ処理操作に委ねることができる。
【0031】
OPTE120はまた、割込み条件、ステータス状態、応答状態等を定義するフラグを含む。この種のフラグにレディ・フラグがある。これは、セットされると、OPTEがディスパッチのためレディ・キューに置かれたことを示す。ステータス・セーブ・フラグは、セットされると、OPTEのディスパッチに割込みがかかったことと、最後のディスパッチ操作が終了したところでディスパッチ操作を後で再開できるように、そのステータスがセーブされたことを示す。OPTE120はまた、ハードウェア入力データ・ポート116(図8)及び入力論理ポートの両方に対するポインタを含む。当業者には明らかなように、ソフトウェアによって生成される制御メッセージにより、ノードがOPTE120の各種エントリ、及びそこから連結されたすべてのOCBをセットアップできる。
【0032】
ソフトウェアにより、ノード・プロセッサ22が出力ラインをタスクのために設定する、例えば、メッセージをコンパイルして他のノードに転送するとき、このタスクは、タスクのOPTE制御ブロックをテーブルに追加することによって出力ポート・テーブル118(図6)に入力される。OPTEは先に示したように、タスク全体がコンパイルされ、OPTEがレディ・キューに列挙されるまで0に等しくセットされ、OPTEがレディ・キューに列挙された時点で1にセットされるレディ・フラグを含む。その時までタスクはディスパッチが可能ではない。従ってOPT118は、アセンブリのさまざまな段階にある多くのタスクを含む可能性があり、あるタスクはディスパッチ可能で、あるタスクは割込み可能、またあるタスクはコンパイル中という状態になる。
【0033】
各OPTE120から連結されるのは、他の連結済み制御ブロックと共に、ディスパッチ予定のデータがどこにあるかを定義する出力制御ブロック(OCB)122である。OCB122(図6参照)は他にも情報を含み、そのデータ構造は下記の表2に示す通りである。
【表2】
出力制御ブロック(OCB)
−次のOCBポインタ
−先頭TDVE
−最終TDVE
−フラグ
−目的アドレス
−宛先の入力論理ポート・アドレス
−メッセージ・データ
−TDV/BCB
【0034】
OCB122のデータ構造は、OPTEを構成する作業単位またはタスクの連結を実現する次のOCBへのポインタを含む。OCB122はまたトラック記述子ベクトル(TDV)・テーブル124へのポインタを含む。これらポインタは、先頭トラック記述子ベクトル・エントリ(TDVE)126及び最終TDVE128(いずれもTDV124内)を示す。以下に説明するが、列挙されたTDVEは、データ・レコードが見つけられ、また指示されたバッファ領域で他のデータが見つけられる、ディスク・ドライブ・メモリ領域の識別を可能にする制御ブロックである。TDVE制御ブロックの詳細については後述する。
【0035】
OCB122はまた、データの宛先アドレスと、データが送られる宛先の入力論理ポート番号を含む。OCB122には更に、連結済みデータを必要とせずに、制御メッセージ・データを追加して、制御情報を宛先アドレスに転送することができる。最後にOCBは、タスクの一部を含むデータがバッファ・メモリに格納されている場合は、データのバッファ制御ブロック(BCB)130のアドレスを含む。
【0036】
OCBは先に示したように、ディスク・ドライブ・トラック内のデータの検出を可能にする情報を含む。この情報は、複数のトラック記述子ベクトル・エントリ126乃至128を含むトラック記述子ベクトル(TDV)・テーブル124を指定する。従ってTDVテーブル124は、複数の物理ディスク・トラックで構成可能な論理ディスク・トラックを定義する。TDVE126、128は、ディスク・ドライブ上の物理ディスク・レコードのフォーマットを記述した制御ブロックである。OCB122は先頭TDVEポインタ126の他に、OCB操作の全記録が、OCB122内、またはそこからアクセス可能なデータによって識別されるように、最終TDVEポインタ128を含む。
【0037】
TDVEデータ構造を下記の表3に示す。
【表3】
トラック記述子ベクトル要素(TDVE)
−フィールド1データID(カウント等)
−フィールド2長(キー等)
−フィールド3長(データ等)
−フラグ
−先頭BCB
−レコード番号
【0038】
あるディスク・トラック上のレコードが、これまでの”カウント、キー、データ”構造を使って配置されているとすると、TDVEは、カウント、キー、及びデータの各フィールドのフィールド記述子を含むことになる。カウント・キー・フィールドは、レコードのフィールド1にあるレコード・カウント番号を含む。フィールド2の値はレコード名の長さ(すなわちキー)を含む。フィールド3の値は、ディスク・レコードのデータ部にあるデータの長さを示す。
【0039】
他の制御ブロックと同様(各TDVE126、128等は制御ブロックである)、割込み状態、制御状態等を定義するフラグが追加される。TDVEは更に先頭バッファ制御ブロック(BCB)130へのポインタを含む。BCB130は、タスク全体の一部としてディスパッチされるメッセージの部分であるデータを保持した物理バッファ空間の識別を可能にするデータを含む。図6に示す通り、BCBは連結できる。従って各TDVEに先頭BCB130へのポインタを追加できる。BCBデータ構造を下記の表4に示す。
【表4】
バッファ制御ブロック
−次のBCBのポインタ
−バッファのデータ・バイト数
−バッファ・サイズ
−フラグ
−バッファ・アドレス
【0040】
BCB130のデータ構造は、次のBCBへのポインタで始まり(存在する場合)、タスク関連データに複数のバッファ位置が割当てられることが示される。BCB制御ブロックの次のエントリは、物理バッファ空間に格納されるデータ・バイト数、及び実バッファサイズを定義する。またフラグは、BCBに追加される各種制御情報及びデータが存在するバッファ(バッファ132等)の物理アドレスを示す。
【0041】
制御メッセージの場合は(図7参照)それが比較的シンプルなので、TDVテーブル及びそれに含まれるTDVEは使用する必要がない。その結果、OCB122は、バッファ領域132に格納された制御メッセージの最初の部分を定義するBCB130へのポインタを含む。他のBCB134、136はBCB130から連結できる。
【0042】
入力ライン制御ブロック(データ及び制御のメッセージ):
ノードに用いられる制御ブロック・データ構造はまた、入力ポート・テーブル(IPT)、入力ポート・テーブル・エントリ(IPTE)、及び入力制御ブロック(ICB)を含む。これらの制御ブロックは他のノードから受信された入力タスクの処理に用いられる。図8でIPT140は、各種入力タスクを定義した複数のIPTE142を含む。各IPTEは、実行される作業単位を定義したICB144へのポインタを含む。各ICB144はトラック記述子ベクトル(TDV)・テーブル146へのポインタを含む。TDVテーブル146は上述のように、ICB144によって定義された作業単位の実行に用いられるディスク・メモリの領域を定義する。ICB144はまた、最初のトラック記述子ベクトル要素(TDVE)148及び最後のTDVE150の指標を有する。前記のように、TDVEはそこからBCBを連結できる。
【0043】
IPTEはそれぞれ下記の表5に示すようなデータ構造を含む。
【表5】
入力ポート・テーブル・エントリ(IPTE)
−先頭ICB
−最終ICB
−フラグ
−出力ハードウェア・ポートへのポインタ
−出力論理ポートへのポインタ
【0044】
IPTEは、データ処理操作を開始するのに必要な先頭入力制御ブロック(ICB)の指標と、操作を完了する最終ICBの指標を含む。中間ICBは、ICB制御ブロック内に含まれるポインタを連結することによって確認される。
【0045】
入力データ・メッセージがハードウェア入力ポート116によって受信されると、一連のICB144が割当てられ、要求されたタスクの実行が可能になる。ICBの関連部分のデータ構造を下記の表6に示す。
【表6】
入力制御ブロック(ICB)
−次のICBポインタ
−フラグ
−セクタ長
−セクタ・カウント
−先頭TDVE
−最終TDVE
−TDV/BCBポインタ
【0046】
各ICB144は、次のICB制御ブロックのアドレス値である次のICBポインタを含む(後続のICB間の連結操作を有効にする)。最初のICB144へのポインタはIPTE142に置かれ、このポインタを使うことにより、IPTE142に関連したすべてのICBが確認可能になる(ICB/ICBポインタと組み合わせて)。TDVEポインタ・データにより、入力されるタスクに必要なデータ処理操作からの入力データが格納されるか、データがそこから導かれるディスク・ドライブ・トラックの識別が可能になる。
【0047】
図9には、制御メッセージに用いられる論理制御ブロックが示してある。OPTE及びOCBに関連した制御メッセージと同様、制御メッセージはシンプルなので、TDVE制御ブロックは必要なく、各ICBは、関連するBCB152、154及び156を直接指し示せるようにされる。
【0048】
命令:
先に述べた通り、ノード・プロセッサ22(図2)はソフトウェア制御であり、またノード全体の動作を制御する。あるハードウェア機能がノード内にあって実質的に独立に動作し、ノード・プロセッサ22を補助的な制御機能から開放する。図3に示すように、出力ポート状態論理60及び入力ポート状態論理62は両方とも状態機械であり、それぞれ出力機能及び入力機能を制御する。
【0049】
出力ポート状態論理60は、優先度が付けられた複数のキュー70を制御し、データ処理装置全体の動作に必要なときにタスクを優先度の順に出力できるようにする。出力ポート状態論理60の動作では、完了するまで複数のマシン・サイクルを要することがあり、ノード内で実行中の他のアクティブなプロセスとリソースを競う結果になることがある。競合を避けるため、ノード・プロセッサ22はハードウェア構造内の機構のアトミック操作を開始する”命令”を発行し、基本的には”命令を受けた”手続きが進行中はそのハードウェア機構へのアクセスをロックアウトできるようにされる。
【0050】
ソフトウェアが”出力ポート・レディ”命令を出すとOPTEがキュー待機され、そのディスパッチ(または他のOPTEのディスパッチ)が試行されるまでソフトウェアは出力ポート状態論理60へのアクセスを禁止される。同様にソフトウェアは”ICB/OCBをチェインに追加”命令を出せる。この命令により、例えばディスパッチ可能なOCBがディスパッチされていないOCBに連結される。ここでもソフトウェアは、連結されるOCBに関連したデータを変更することは禁止される。
【0051】
レディ・キューへのタスクの追加:
ここで図10乃至図12とその論理フローチャートを参照し、出力ポートのレディ・キューにタスクを追加する手続きについて説明する。最初(ボックス200)、ソフトウェアによりノード・プロセッサ22が、あるタスク、例えばOPTE Aに”出力ポート・レディ”命令を出す。出力ポート状態論理60(図3)はこの命令の受信に応答して、そのレディ・キューにOPTEが列挙されているか確認する(判断ボックス202)。NOであれば、OPTE Aのタスクはすぐ実行される(ボックス204)。レディ・キューにOPTEが列挙されているなら、OPTE Aはすぐに実行できない可能性のあることがわかる。
【0052】
最初、出力ポート状態論理60は、OPTE A制御ブロックのレディ・フラグが1にセットされているか確認する。YESであれば、これはOPTE Aがすでにレディ・キューにセットされていることを意味し、手続きは終了する(楕円208)。OPTE Aのレディ・フラグが1にセットされていない場合、出力ポート状態論理60は、OPTE Aの優先度に等しい割当て優先度を示すレディ・キューの最初/最後のレジスタをチェックする(ボックス210)。このチェック・プロセスでまず、最初のレジスタ値が0に等しいかどうか確認される(判断ボックス212)。YESであれば、これはそのレディ・キューに登録されたOPTEは他にないことを意味し、OPTE Aはそこに列挙される最初のタスクになる。その場合、OPTE Aのアドレスがそのレディ・キューの最初及び最後のレジスタに書込まれる(ボックス214)。またOPTE A制御ブロックの次のOPTEフィールドに”0”が書込まれる(ボックス216)。これは、他のOPTEはOPTE A制御ブロックから連結されていないことを示す。
【0053】
判断ボックス212に示してあるように、レディ・キューの最初のレジスタの値が0以外なら、OPTEが他に少なくとも1つはレディ・キューに位置している。その場合、OPTE Aアドレスがキューの最後のレジスタに書込まれ(ボックス218)、OPTE A制御ブロックのアドレスが、レディ・キューに列挙された最後のOPTEの次のOPTEフィールドに書込まれる(ボックス220)。OPTE Aはこれでレディ・キューに列挙されるので、このことが、OPTE Aのレディ・フラグを1に等しくセットすることによって示される(図11のボックス222)。
【0054】
この段階で、出力ポート状態論理60は、OPTEが現在実行中かどうかの確認に進む(判断ボックス224)。NOであれば、出力ポート状態論理60は、優先度が最大のレディ・キューの先頭にあるOPTEの実行を試行する(ボックス226)。このOPTEはOPTE Aではないことも考えられ、OPTE Aが列挙されたレディ・キューより優先度が高いレディ・キューの先頭に達した他のOPTEとも考えられる。これにより、優先権は常に優先度の高いタスクに与えられ、優先度の低いタスクは犠牲になる。図1のシステムの場合、このように優先度の高いタスクは、一般にはメッセージは短いがネットワークの正常動作には欠かせない制御機能を含む。従って、このような制御機能は高い優先度でディスパッチされ、優先度の低いOPTEのキュー待機により遅れることはない。
【0055】
現在実行中のOPTEが、新たにキュー待機されたOPTEより優先度が低い場合、現在実行中のOPTEの実行は中断される。従って、OPTEが現在実行中であることを判断ブロック224が示す場合、出力ポート状態論理60は、現在実行中のOPTEの優先度が、OPTE Aの優先度より高いか、等しいか、または低いか確認する。現在実行されているOPTEが、OPTE Aより優先度の高いOPTE Bとすると(判断ボックス228)、手続きは終了する(楕円230)。OPTE A及びOPTE Bの両方が同じ優先度とわかった場合、”フェアネス”手続き(ボックス232)が実行され、ある優先度のタスクはどれも、同じ優先度の他のタスクの実行を長く遅らせることのないようにされる。
【0056】
簡単には、フェアネス手続きにより、出力ポート状態論理60が、優先度が共通のタスクを多重化することができる。従って、最初のタスクで転送されるデータの量がしきい値に達したとき、そのタスクは切断され、同じキューにある別のタスクが実行を開始するが、両方が完了するまで両方とも多重化されている。フェアネス手続きの詳細についてはBradyらによる米国特許出願番号第176042号を参照されたい。
【0057】
判断ボックス228に示してあるように、現在実行中のOPTE Bの優先度がOPTE Aに割当てられた優先度より低いことがわかった場合、”優先度切断命令”が出され(ボックス234)、現在実行されているOPTE Bが切断される(ボックス236)。このような切断時には、実行が完了したOPTE Bから連結されている最後の制御ブロックを記録することによって、OPTE Bの実行のステータスがセーブされる。その後、OPTE Bが再び実行可能な状態になったとき、実行ステータスが復元され、実行が完了した制御ブロックの直後の制御ブロックから実行が継続する。この手続きにより、OPTEから連結されたBCBがすべて連結の順序で実行される。BCBは連続して実行できないことがあるが、受信側ノードは全BCBが連結順序で受信されることが保証される。ただしこれは、優先度、アセットの可用性等に応じて任意の順序で実行できるOPTEには当てはまらない。
【0058】
切断されたOPTE Bの実行ステータスがセーブされれば、OPTE B制御ブロックのステータス・セーブ・フラグが1にセットされる。OPTE BはまだOPTに列挙されているので、OPTE Bが再び実行可能になると、そのステータスを検索して切断点から実行を開始する必要のあることをステータス・セーブ・フラグがシステムに知らせる。
【0059】
OPTE Bは切断されるが、完了はしていないのでそのレディ・キューには列挙されたまま残る(ボックス238)。出力ポート状態論理60はここでOPTEを実行できる状態になるが、キュー待機され、実行中のOPTE Bより優先度が高いことがわかったばかりのOPTE Aとは限らない。先に示した通り、出力ポート状態論理60は、優先度が最大のレディ・キューの先頭にあるOPTEの実行に進む(ボックス226)。この操作を行うため(図12参照)、最初に、この操作を可能にするためリソースが利用できるかどうか確認される(判断ボックス240)。例えば、必要なデータ・リンクが使えない場合、優先度が最大のOPTEを実行するのに必要なリソースは利用できず、その場合、そのOPTEはそのレディ・キューの下に移される(ボックス242)。逆に優先度が最大のOPTEを実行するためにリソースが利用できるなら、その実行が開始される(ボックス244)。タスクが完了すると、完了したOPTEはそのレディ・キューから削除される(判断ボックス246及びボックス248)。タスクが例えば不具合のため中断すると中断したタスクは切断され、そのセーブされたステータス及びステータス・セーブ・フラグがセットされる(ボックス250)。中断したタスク(すなわちOPTE)は次にそのレディ・キューから削除され、後で中断の理由がなくなったとき再びキュー待機できるようになる。
【0060】
この段階で出力ポート状態論理60により次のOPTEを処理できる。従って判断ボックス252に示してある通り、OPTE Aを保持したレディ・キューより優先度が高いOPTEがレディ・キューに存在する場合、優先度が最大のレディ・キューの先頭にあるそのOPTEがアクセスされる(ボックス254)。アクセスされたOPTEが切断されたものである場合、そのステータスが検索され、完了した最後のBCBに連結された割込み点(例えば次のBCB)から実行が開始される。そこで手続きは判断ボックス240に戻って繰り返される。
【0061】
優先度が高いレディ・キューにOPTEが存在しない場合は、OPTE Aを保持したレディ・キューがアクセスされ、その先頭のOPTEが実行される(判断ボックス256)。後に、現在の優先度のレディ・キューに列挙されたOPTEが見つからない場合、手続きは優先度の低いレディ・キューに移り(判断ボックス258)、そこに列挙されたOPTEが前記のように実行される。優先度の低いレディ・キューにOPTEが見つからない場合、プロセスは終了する(楕円260)。
【0062】
実行中のタスクへのタスクの追加:
先に示した通り、OPTEから”ポート・レディ命令”が出されると、ソフトウェアはOPTEの変更を禁止される。しかしOPTEはポート・レディ命令に従うが、そのタスクは、別の連結されたBCBを追加することによって補助できる。この手続きにより、図13に示したその機能が有効になり、初めにソフトウェアが”OCBをチェインに追加”命令を出す。この命令は、新たなOCB及び新たなOCBが追加されるOPTEへのポインタを含む(ボックス270)。出力ポート状態論理60は命令に応答して、OPTEの最後のOCBポインタの値を新たなOCBのアドレスに変更する。またOPTEから連結された最後のOCBの次のOCBポインタは変更され、新たなOCBのアドレスが示される(ボックス272)。OPTEから連結されたOCBがない場合は、OPTEの最初のOCB及び最後のOCBのポインタが新たなOCBアドレスと等しくセットされる(ボックス274)。このようにして、実行中のタスクは連結された他のOCBという手段を通して補助され、実行中のタスクを中断、或いはこれに割込みをかける必要はない。OCBがチェインに追加されるとソフトウェアは再びレディ命令を出して、命令が出される前にOCBが完了する場合に備える。
【0063】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0064】
(1)データ処理装置において優先度が付けられたタスクの実行を制御する方法であって、前記データ処理装置は、ソフトウェアによって制御されるプロセッサとハードウェアで構成されるキュー・コントローラを含み、前記キュー・コントローラは優先度が付けられた複数のキュー手段を含み、前記キュー手段はそれぞれ、割当てられた優先度が前記キュー手段に割当てられた優先度に等しいタスクを列挙し、前記キュー・コントローラはプロセッサによって生成された命令に応答して、第1のタスクを、実行を目的にキュー待機するために、
前記第1のタスクを、割当てられた優先度が前記第1のタスクの優先度に等しい第1のキュー手段に列挙するステップと、
割当てられた優先度が高いキュー手段に第2のタスクが列挙されている場合には、前記第1のタスクの実行前に前記第2のタスクの実行を試行するステップとを含む方法を実行する、
方法。
(2)割当てられた優先度が前記第1のキュー手段よりも高いキュー手段にタスクが列挙されていない場合は、前記第1のキュー手段に列挙された第1のタスクの実行を試行するステップと、
前記タスクの実行完了時に、または前記タスクの実行中断時には、割当てられた優先度の高いキュー手段にタスクをセットする他の命令が発行されていない場合にのみ前記第1のキュー手段上の他のタスクの実行を試行するステップと、
を含む、前記(1)記載の方法。
(3)タスクは、連結された複数のサブタスクを含み、前記方法が、
前記プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行するステップと、
前記サブタスクの実行が完了しない場合は、完了しなかった前記サブタスクに連結されたサブタスクの代わりに他のタスクの実行を試行するステップと、
を含む、前記(1)記載の方法。
(4)サブタスクの実行が完了していないとき、正常に実行された前記タスクの最後のサブタスクを後で確認できるようにするレコードを格納するステップと、
サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行されるステップと、
を含む、前記(3)記載の方法。
(5)全キュー手段上の全タスクが実行されるまで、前記キュー手段に列挙されたタスクの実行試行を継続するステップを含む、前記(1)記載の方法。
(6)優先度が付けられたタスクの実行を制御するデータ処理装置であって、
ソフトウェア制御下で、優先度が付けられたタスクを優先度が付けられたキュー手段にセットするレディ命令を発行するプロセッサ手段と、
優先度が付けられ、それぞれ実行可能な状態の共通優先度のタスク名を記録する複数のレジスタを含み、共通の優先度を有するタスクの名前だけを記録する複数のキュー手段を含み、i)第1のタスク名に割当てられた優先度に等しい優先度が指定された第1のキュー手段に、レディ命令によって指定された前記第1のタスク名を列挙し、ii)前記第1のタスクの優先度よりも高い優先度が割当てられたキュー手段に他のタスク名が列挙されている場合は、前記第1のタスクの前に前記他のタスクを実行する、前記レディ命令に応答し、前記プロセッサのソフトウェア制御動作によって割込みをかけられない少なくとも1つのタスクの実行をアトミック・ベースで試行するレディ命令に応答する、キュー・コントローラ・ハードウェア手段と、
を含む、データ処理装置。
(7)前記第1のキュー手段よりも高い優先度が割当てられたキュー手段にタスク名が列挙されていない場合は、前記キュー・コントローラ・ハードウェア手段が、前記第1のキュー手段に列挙された第1のタスクの実行を試行し、列挙された前記第1のタスクの実行の完了時または列挙された前記第1のタスクの実行中断時に、前記キュー・コントローラ・ハードウェア手段が、高い優先度が割当てられたキュー手段にタスクをセットする他の命令が発行されていない場合にのみ、前記第1のキュー手段上の他のタスクの実行を試行する、前記(6)記載のデータ処理装置。
(8)タスクは連結された複数のサブタスクを含み、前記キュー・コントローラ・ハードウェア手段は、前記プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行し、前記サブタスクの実行が完了しない場合は、完了しなかった前記サブタスクに連結された前記サブタスクの代わりに別のタスクの実行を試行する、前記(1)記載のデータ処理装置。
(9)サブタスクの実行が完了しないとき、前記キュー・コントローラ・ハードウェア手段により、正常に実行された前記タスクの最後のサブタスクを後に確認できるようにするレコードが格納され、サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行される、前記(8)記載のデータ処理装置。
【図面の簡単な説明】
【図1】ノードのデータ処理アレイを示すブロック図である。
【図2】図1のシステムに用いられる代表的ノードの構成要素を示すブロック図である。
【図3】図2のノードに含まれる制御メモリ・インターフェイス・ブロックのブロック図である。
【図4】図3に示した出力ポート状態論理ブロックに含まれる複数の優先度キュー・レジスタ構造を示す図である。
【図5】図2のノードのデータ・バッファ・インターフェイス・ブロックの詳細なブロック図である。
【図6】データ・メッセージのコンパイルとディスパッチを可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図7】制御メッセージのコンパイルとディスパッチを可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図8】データ・メッセージの受信と格納を可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図9】制御メッセージの受信と格納を可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図10】図2の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。(図11と図12を合わせて参照されたい。)
【図11】図2の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。(図10と図12を合わせて参照されたい。)
【図12】図2の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。(図10と図11を合わせて参照されたい。)
【図13】タスクが実行中のプロセスであるときにそのタスクのサブタスクを追加する手続きの論理フローチャートを示す図である。
【符号の説明】
12、14、16、18 ディスク・ドライブ
27 制御メモリ・インターフェイス・モジュール
30 データ・バッファ・インターフェイス・モジュール
38、40 関連ディスク・ドライブ
44 通信リンク
64 オペランド・メモリ・バス
118 出力ポート・デーブル
140 入力ポート・テーブル
【発明の属する技術分野】
本発明は、コンピュータを制御して実行可能なタスクをディスパッチする方法及び装置に関し、特にソフトウェアの介在を最小限にしてコンピュータのレディ・キューからのタスクのディスパッチを処理する方法及び装置に関する。
【0002】
【従来の技術】
コンピュータで同時に処理するタスクが増えているため、タスク処理のオーバヘッドも増加している。現在コンピュータは、ソフトウェア・プロセスにより、どのタスクが実行されるか、またいつ実行されるかを決定する。あるタスクが終了する(或いはエラー、またはリソース不足で完了しないことがわかる)と、割込み手続きによりソフトウェアが通知を受け、そこでソフトウェアは次に取るべき処置を決定しなければならない。割込みがコンピュータによって処理されている間、システムは、新たな仕事が割当てられるのを待って休止状態にあることがある。新たなタスクが割当てられると、タスクが実行のためいつリリースされるかを決定するのは、タスク・ディスパッチ機構の役割である。このようなタスク・ディスパッチ装置の多くは、優先度が変わるタスクを処理し、上位優先度のタスクは下位優先度タスクより前に実行されるようにする必要がある。この機能は通常は、ソフトウェアがアクティブ・タスクを終了させ、新たな上位優先度タスクを起動することによって行われる。その場合、ソフトウェアは現在のタスクに割込みをかけ、上位優先度タスクを起動し、最終的には、中断されたタスクを再起動する必要がある。この操作では、プロセッサに複数の割込みをかけてソフトウェアがタスク・スイッチングを処理できるようにする必要がある。これら割込みの処理に必要な時間は、システム全体のパフォーマンスに対してボトルネックを生み、リアルタイム・システムでは重大な問題になることがある。
【0003】
タスク・ディスパッチ装置はまた、タスクが実行されていて、実行中のタスクに追加する必要のある別のタスクが生じる状況を処理する必要がある。このようなタスクの追加を実現するために通常は2つの方法のいずれかが用いられる。最初の方法では、タスクを完全にアセンブルされるまでは起動せず、タスクが1度実行を開始したら他のタスクは追加できない。もう1つの方法では、新たなタスクが追加できるようにタスクの実行が一時的に保留される。いずれの方法でも、タスクの実行は起動時にか動作時に遅らせられ、タスクが次のタスクで更新できるようにされる。
【0004】
従来の技術は、タスク・ディスパッチ機構が効率よく動作できるようにするため、実行するタスクを実行リストにキュー待機する。タスクは割当てられた優先度をもとに実行される。IBM System 370は、ソフトウェアの介入を避けるため、タスク・ディスパッチ機構に”1深さ(1 deep)”キューを採用している。基本的には、タスク・ディスパッチ操作を開始するために用いられる論理制御ブロックが、前のタスクの制御ブロックがディスパッチされた直後にステージ処理される。このような条件下で、ステージ処理されたタスク制御ブロックは、ディスパッチされた前のタスクの完了または中止によりすぐに利用できるようになる。
【0005】
ノードが独立したプロセッサであり、パラレルに動作してデータ処理操作を実行するマルチノードのデータ処理装置が登場してから、タスク・ディスパッチ操作を、ソフトウェアの介入を出来るだけ少なくして実行可能にすることがますます重要になっている。このようなマルチノードのデータ処理装置が効率よく動作するには、システム・アーキテクチャにより、どのノードに障害が発生してもシステムが”クラッシュ”しないように全体の制御機能が分散されるようにしなければならない。このような分散アーキテクチャでは当然、ノード間にかなりのデータ通信レベルが必要になる。そのようなデータ通信がノード・プロセッサの不要なロード操作を避けるように処理されなければ、マルチノード・システム全体のデータ処理効率が影響を受ける。
【0006】
【発明が解決しようとする課題】
本発明の目的は、データ処理装置のための改良されたタスク・ディスパッチの方法及び装置を提供することである。
【0007】
本発明の他の目的は、タスク・ディスパッチの手続きにソフトウェア及び中央プロセッサがなるべく介入しない改良されたタスク・ディスパッチの方法及び装置を提供することである。
【0008】
本発明の他の目的は、実行遅延を実現する必要なく、実行中のタスクに作業単位を追加できる改良されたタスク・ディスパッチの方法及び装置を提供することである。
【0009】
本発明の他の目的は、優先度が最大でキュー待機されたタスクが最初に実行されるようにする改良されたタスク・ディスパッチの方法及び装置を提供することである。
【0010】
【課題を解決するための手段】
マルチノードのデータ処理装置で優先度が付けられたタスクの実行は、ある手続きによって制御される。データ処理装置は、ソフトウェアによって制御されるプロセッサと、ハードウェアで構成されるキュー・コントローラを有するノードを含む。キュー・コントローラは優先度が付けられた複数のキューを含み、各キューは、キューに割当てられた優先度に等しい優先度が割当てられたタスクを列挙する。キュー・コントローラは、プロセッサによって生成された命令に応答して、実行する最初のタスクをキュー待機するため、次のステップを含む方法を実行する。前記第1のタスクを、前記第1のタスクの優先度に等しい優先度が割当てられた第1のキューに列挙するステップ、高い優先度が割当てられたキューに第2のタスクが列挙されている場合には、第1のタスクの実行前に第2のタスクの実行を試行するステップ、前記第1のキューより高い優先度が割当てられたキューにタスクが列挙されていない場合には、第1のキュー手段に列挙された第1のタスクの実行を試行するステップ、及び、タスクの実行完了または実行中止により、高い優先度が割当てられたキューにタスクをセットするために別の命令が発行されているのでない場合にのみ、第1のキューの他のタスクの実行を試行するステップである。この方法は更に、チェインをなすサブタスクを処理するため、プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行し、サブタスクの実行が完了しない場合、完了しなかったサブタスクに連結したサブタスクの代わりに別のタスクの実行を試行する。
【0011】
【発明の実施の形態】
図1のブロック図は、ディスク・ドライブ・コントローラ・アレイとして構成されたマルチノードのネットワーク10を示す。ノードA及びDはデータ格納ノードで、それぞれ、接続されたディスク・ドライブ12、14及び16、18に接続する。対になった通信インターフェイス・ノードB及びCは、接続されたホスト・プロセッサに入力/出力機能を提供する。ホスト・プロセッサはマルチノード・ネットワークのデータ格納機構を利用する。キャッシュ・ノードEは、ネットワーク10とホスト・プロセッサの間のデータ転送機能の入力及び出力の両方に一時的な格納機構を提供する。マルチノード・ネットワーク10は、ノードを追加することによって拡張可能である。ノードはすべて内部通信ネットワーク20によって相互接続される。
【0012】
ノードA乃至Eはそれぞれ図2に示した共通ノード構成をもとに構成される。各ノードに、ノード全体の機能を制御するノード・プロセッサ22が含まれる。更に各ノードに、制御メッセージの受信、格納、及びディスパッチを行う制御メッセージ・”ライン”24と、データ・メッセージの受信、格納、及びディスパッチを行うデータ・メッセージ・”ライン”26が含まれる。制御メッセージ・ライン24は、制御メモリ・インターフェイス・モジュール27と、制御メッセージ・メモリとして機能するDRAM(ダイナミック・ランダム・アクセス・メモリ)28で構成される。データ・メッセージ・ライン26はそれぞれデータ・メッセージ用のデータ・バッファ・インターフェイス・モジュール30とDRAM32を含む。データ・バッファ・インターフェイス・モジュール30は複数のデバイス・インターフェイス34、36等に接続し、これにより関連ディスク・ドライブ38、40等に通信内容が伝えられる。制御メモリ・インターフェイス26、プロセッサ22等からの制御メッセージにより各種ノード操作の制御が有効になる。
【0013】
以下の説明から明らかになるが、マルチノード・ネットワーク10のアーキテクチャは、特性上、ディスク・ドライブとの間で生じる長いデータ・メッセージと、ネットワーク及び個々のノードの両方の動作を有効にするのに必要な複数の小さな制御メッセージのいずれも効率よく処理するように構成される。各ノード内で、制御及びデータのメッセージ・ラインにより、制御及びデータのメッセージの分離が可能になり、その独立処理、及び各ノードに置かれる入力/出力(I/O)スイッチ42への転送が可能になる。I/Oスイッチ42は、それが入力リンク44に届き、別のノードに向けられたメッセージを独立に切り換えられるようにする装置を含む。各ノードは、好適にはラインの少なくとも2倍の通信リンク44を備える。これによりノード内にある通信帯域幅の少なくとも2倍の帯域幅が各ノードに得られる。
【0014】
通信リンク44はそれぞれ別のノードに接続され、これによりメッセージを接続ノードに直接に、または接続ノードを通して別のノードにルーティングできる。I/Oスイッチ42は、どの通信リンク44からも、どの通信リンク44へもメッセージを送ることができる。I/Oスイッチ42は更に、各種リンクの現在状態がわかれば、最適通信リンク46を動的に選択することができる。通信リンク44はそれぞれ独立しており、データ・メッセージまたは制御メッセージに使用できる。
【0015】
ノード構造により、メッセージ・スイッチング機能がすべてデータ処理装置全体に分散し、スイッチングの集中制御機能の必要がなくなった分散ネットワークを構成できる。制御及びデータのメッセージが分離され、実質的に独立に処理されるのはノード内だけである。I/Oスイッチ42は制御及びデータのメッセージを同じように処理する。またノード間の複数のリンクにより、ノードが1つ2つ障害を起こした場合、システムの安定性と冗長性が高くなる。I/Oスイッチ42の詳細については1995年5月24日出願の米国特許出願番号第448901号(SA994117)を参照されたい。この対応日本国特許出願は、特願平8−79177号であり、平成8年4月1日に出願されている。
【0016】
図3は、制御メモリ・インターフェイス・モジュール27の詳細を示す。スイッチ50により制御メモリ・インターフェイス・モジュール27内の各種機能間の通信が可能になる。これらはプロセッサ・バス・インターフェイス52、命令実行ユニット54、DRAMコントローラ56、ローカル制御バス・インターフェイス58、出力ポート状態論理60、及び入力ポート状態論理62である。DRAMコントローラ56により、オペランド・メモリ・バス64を通してRAM28の接続が可能になる。
【0017】
プロセッサ・バス・インターフェイス52は、ノード・プロセッサ22とのインターフェイスであり、メモリのフェッチ及び格納を有効にするパスを提供する。命令実行ユニット54は、データを解釈、フェッチし、実行される命令として、あるメモリ・レジスタに格納する。このユニットで実行される命令は全部ではなく一部であり、ノード・プロセッサ22が介入せずに、ある特定の命令のスピーディな処理が可能になる。
【0018】
ローカル制御バス・インターフェイス58は、ノード・プロセッサ22とデータ・バッファ・インターフェイス・モジュール30(図2)及びデータ・バッファ・インターフェイス・モジュール30に接続された各種デバイス・インターフェイス34、36等の間のアクセスを可能にする。ノード・プロセッサ22は、ローカル制御バス・インターフェイス58を通して、複数の機能、すなわち、フェッチ及びデータ・メモリ32への格納、デバイス・インターフェイス34、36への命令の発行、制御メッセージ・ライン24からデータ・メッセージ・ライン26へ、またその逆へのデータの転送等を行うことができる。
【0019】
出力ポート状態論理60は複数のレディ・キュー70を含む。そこではさまざまな優先度のメッセージが転送を待ってキュー待機される。図4には優先度1のレディ・キュー72及び優先度2のレディ・キュー74が示してある。レディ・キューはそれぞれFIFO(ファーストイン・ファーストアウト)キューであり、ディスパッチ予定で、共通の優先度が割当てられたタスクが列挙された複数のレジスタ76と、キューの最初に列挙されたタスクと、最後に列挙されたタスクの識別子が格納される対になったレジスタ78及び80とで構成される。各タスクはOPTE(出力ポート・テーブル・エントリ)によって示される。OPTEはテーブル(すなわち出力ポート・テーブル(OPT))に格納される論理データ構造である。論理データ構造はそれぞれ以下”制御ブロック”と呼ぶ。各OPTEは更にここから連結された制御ブロックを有し、これがある特定のタスクの具体的な側面を定義する。
【0020】
本発明を実現するために用いられる各制御ブロックについて以下に詳しく説明する。また実行可能なOPTEをレディ・キュー70にキュー待機する手続き、並びにOPTEのサブタスクを、ディスパッチのプロセスにあるときに動的に連結する手続きについて説明する。後で明らかになるが、出力ポート状態論理60は、優先度が最大のレディ・キューにある各メッセージを、次に低い優先度のレディ・キューに進む前に転送しようとする。
【0021】
入力ポート状態論理62は、制御メッセージ・ライン・インターフェイス80から制御メッセージを受信して一時的にバッファに格納する。制御メッセージをクラス(すなわちハードウェア実行またはプロセッサ実行)に従ってデコードし、ハードウェア実行メッセージは、その実行場所であるメッセージ実行ユニット82に転送される。プロセッサ実行メッセージは、受信された制御メッセージ・ヘッダ内のコードによって必要とされる機能に対応した論理入力データ構造内のDRAM28内のメモリ・アドレスに受信される。この機能は後で実行される。
【0022】
図5を参照して、データ・バッファ・インターフェイス・モジュール30の詳細について説明する。これは構造的には制御メモリ・インターフェイス・モジュール27と類似である。データ・バッファ・インターフェイス・モジュール30は、接続された各種機能間の通信を可能にするスイッチ90の回りに構成される。DRAMコントローラ92によりデータ・メモリ32へのアクセスが可能になる。ローカル制御バス・インターフェイス94は制御メモリ・インターフェイス・モジュール27と相互接続され、制御メッセージの受信及び転送を可能にする。データ・バス・インターフェイス96は、デバイス・インターフェイス・モジュール34、36及びそれぞれに接続されたディスク・ドライブとの間のアクセスを可能にする。出力ポート状態論理モジュール98及び入力ポート状態論理モジュール100は、制御メモリ・インターフェイス・モジュール27の入出力ポート状態論理モジュールと同じように構成されるが、そこで処理されるデータ構造はより複雑である。命令実行ユニット102は、データ・メッセージ・ラインの機能に関連したハードウェア実行メッセージを実行する。データ・ライン・インターフェイス104はI/Oスイッチ42との通信を可能にする。
【0023】
上述の制御及びデータのメッセージ・ライン構造により、制御メッセージ及びデータ・メッセージを実質的に独立して処理できる。これにより制御メッセージが処理され転送可能にされるときに平行して長いデータ・メッセージをキュー待機して転送できる。その結果、長いデータ・メッセージの処理を制御メッセージのために先取りする必要はない。
【0024】
図2のノード内の操作は、ソフトウェアによって生成される制御ブロックによって制御される。読出しまたは書込みの操作はどのようであれ、ノード・プロセッサ22と共に動作するソフトウェアによって複数の制御ブロックが割当てられ、必要な操作に従ったノード内のハードウェアのセットアップが可能になる。1回の読出しまたは書込みはどのようなものであれ、ソフトウェアは複数の制御ブロックを割当てる。制御ブロックはそれぞれ、読出しまたは書込みの操作に対するハードウェアによるセットアップ操作を可能にするのに必要なパラメータを少なくとも1つ含む。
【0025】
制御ブロックのデータ構造により、ノードは、別のノード、ディスク・ドライブ、またはホスト・プロセッサのいずれかに転送されるメッセージをアセンブルできる。メッセージは、ある制御ブロックが次の制御ブロックへのポインタを含むように”連結”された複数の制御ブロックを使ってアセンブルできる。制御ブロックは更に、メッセージ用のデータをアセンブルできるようにするデータ処理操作が起こること、データがどこにあるか、その構造の指定、メッセージを含むデータを保持するバッファ格納領域のID(ディスパッチ保留)、並びにデータがどこにディスパッチされるかを示すデータを示す。本発明は、入力制御ブロック(ICB)及び出力制御ブロック(OCB)を利用する。ICB及びOCBはそれぞれメッセージを含む。OCB(及びICB)は”連結”でき、その場合、連結されたブロックのシーケンスを管理するシーケンス依存性を有する一連のメッセージを定義できる。
【0026】
ソフトウェア制御ブロックのデータ構造:
ここで、図2のノードの動作を制御するために用いられる制御ブロックについて説明する。図6乃至図9で、ハードウェアとソフトウェアを組み合わせたブロック図に、データ・メッセージ及び制御メッセージ両方をディスパッチし、受信できるようにする制御ブロックを示す。
【0027】
図6及び図8を参照する。各ノードは、制御ブロックのデータ出力”ライン”とデータ入力”ライン”を含み、それぞれ出力及び入力のデータ・メッセージを処理する。図7及び図9は、それぞれ制御メッセージを処理する制御出力ラインと制御入力ラインを示す。
【0028】
出力ライン制御ブロック(制御及びデータのメッセージ):
図6のデータ出力ラインは、ハードウェア出力ポート114によって提供される出力回路110を含む。これと同等なハードウェア入力ポート116(図8参照)は、入力回路112を通してデータ・メッセージを受信する。ハードウェア出力ポート114は、バッファ・インターフェイス30(図2参照)内の物理的エンティティであり、出力されるデータ・メッセージの処理及び格納を管理する。ハードウェア出力ポート114は一連の関連付けられたハードウェア・レジスタ(図6及び図8には図示なし)を含み、複数の優先度レディ・キューを設定し、制御ブロック・データ構造から制御データを受信する(後述)。必要な制御データがレディ・キューに追加されると、レジスタに存在する制御データを使って、ある特別なデータ処理操作を実行できる(メッセージのアセンブリ及び転送等)。
【0029】
ハードウェア出力ポート114は、ハードウェア出力ポート114に割当てられた”論理ポート”を列挙する出力ポート・テーブル(OPT)118に関連付けられる。論理ポートはそれぞれ、出力ポート・テーブル・エントリ(OPTE)120によって定義される。そのデータ構造の一部を下記の表1に示す。
【表1】
出力ポート・テーブル・エントリ(OPTE)
−チェインの先頭OCB
−チェインの最終OCB
−フラグ(ステータス・セーブ、レディ)
−次のOPTE
−入力物理ポート
−入力論理ポート
【0030】
OPTE120は、データ処理操作を開始するのに必要な第1の出力制御ブロック(OCB)の指定と、データ処理操作を終了する最後の出力制御ブロック(OCB)の指定を含む。中間のOCBは、個々のOCB制御ブロック内に含まれる値を連結することによって確認される。OCBにより、データの検出をデータ処理操作に委ねることができる。
【0031】
OPTE120はまた、割込み条件、ステータス状態、応答状態等を定義するフラグを含む。この種のフラグにレディ・フラグがある。これは、セットされると、OPTEがディスパッチのためレディ・キューに置かれたことを示す。ステータス・セーブ・フラグは、セットされると、OPTEのディスパッチに割込みがかかったことと、最後のディスパッチ操作が終了したところでディスパッチ操作を後で再開できるように、そのステータスがセーブされたことを示す。OPTE120はまた、ハードウェア入力データ・ポート116(図8)及び入力論理ポートの両方に対するポインタを含む。当業者には明らかなように、ソフトウェアによって生成される制御メッセージにより、ノードがOPTE120の各種エントリ、及びそこから連結されたすべてのOCBをセットアップできる。
【0032】
ソフトウェアにより、ノード・プロセッサ22が出力ラインをタスクのために設定する、例えば、メッセージをコンパイルして他のノードに転送するとき、このタスクは、タスクのOPTE制御ブロックをテーブルに追加することによって出力ポート・テーブル118(図6)に入力される。OPTEは先に示したように、タスク全体がコンパイルされ、OPTEがレディ・キューに列挙されるまで0に等しくセットされ、OPTEがレディ・キューに列挙された時点で1にセットされるレディ・フラグを含む。その時までタスクはディスパッチが可能ではない。従ってOPT118は、アセンブリのさまざまな段階にある多くのタスクを含む可能性があり、あるタスクはディスパッチ可能で、あるタスクは割込み可能、またあるタスクはコンパイル中という状態になる。
【0033】
各OPTE120から連結されるのは、他の連結済み制御ブロックと共に、ディスパッチ予定のデータがどこにあるかを定義する出力制御ブロック(OCB)122である。OCB122(図6参照)は他にも情報を含み、そのデータ構造は下記の表2に示す通りである。
【表2】
出力制御ブロック(OCB)
−次のOCBポインタ
−先頭TDVE
−最終TDVE
−フラグ
−目的アドレス
−宛先の入力論理ポート・アドレス
−メッセージ・データ
−TDV/BCB
【0034】
OCB122のデータ構造は、OPTEを構成する作業単位またはタスクの連結を実現する次のOCBへのポインタを含む。OCB122はまたトラック記述子ベクトル(TDV)・テーブル124へのポインタを含む。これらポインタは、先頭トラック記述子ベクトル・エントリ(TDVE)126及び最終TDVE128(いずれもTDV124内)を示す。以下に説明するが、列挙されたTDVEは、データ・レコードが見つけられ、また指示されたバッファ領域で他のデータが見つけられる、ディスク・ドライブ・メモリ領域の識別を可能にする制御ブロックである。TDVE制御ブロックの詳細については後述する。
【0035】
OCB122はまた、データの宛先アドレスと、データが送られる宛先の入力論理ポート番号を含む。OCB122には更に、連結済みデータを必要とせずに、制御メッセージ・データを追加して、制御情報を宛先アドレスに転送することができる。最後にOCBは、タスクの一部を含むデータがバッファ・メモリに格納されている場合は、データのバッファ制御ブロック(BCB)130のアドレスを含む。
【0036】
OCBは先に示したように、ディスク・ドライブ・トラック内のデータの検出を可能にする情報を含む。この情報は、複数のトラック記述子ベクトル・エントリ126乃至128を含むトラック記述子ベクトル(TDV)・テーブル124を指定する。従ってTDVテーブル124は、複数の物理ディスク・トラックで構成可能な論理ディスク・トラックを定義する。TDVE126、128は、ディスク・ドライブ上の物理ディスク・レコードのフォーマットを記述した制御ブロックである。OCB122は先頭TDVEポインタ126の他に、OCB操作の全記録が、OCB122内、またはそこからアクセス可能なデータによって識別されるように、最終TDVEポインタ128を含む。
【0037】
TDVEデータ構造を下記の表3に示す。
【表3】
トラック記述子ベクトル要素(TDVE)
−フィールド1データID(カウント等)
−フィールド2長(キー等)
−フィールド3長(データ等)
−フラグ
−先頭BCB
−レコード番号
【0038】
あるディスク・トラック上のレコードが、これまでの”カウント、キー、データ”構造を使って配置されているとすると、TDVEは、カウント、キー、及びデータの各フィールドのフィールド記述子を含むことになる。カウント・キー・フィールドは、レコードのフィールド1にあるレコード・カウント番号を含む。フィールド2の値はレコード名の長さ(すなわちキー)を含む。フィールド3の値は、ディスク・レコードのデータ部にあるデータの長さを示す。
【0039】
他の制御ブロックと同様(各TDVE126、128等は制御ブロックである)、割込み状態、制御状態等を定義するフラグが追加される。TDVEは更に先頭バッファ制御ブロック(BCB)130へのポインタを含む。BCB130は、タスク全体の一部としてディスパッチされるメッセージの部分であるデータを保持した物理バッファ空間の識別を可能にするデータを含む。図6に示す通り、BCBは連結できる。従って各TDVEに先頭BCB130へのポインタを追加できる。BCBデータ構造を下記の表4に示す。
【表4】
バッファ制御ブロック
−次のBCBのポインタ
−バッファのデータ・バイト数
−バッファ・サイズ
−フラグ
−バッファ・アドレス
【0040】
BCB130のデータ構造は、次のBCBへのポインタで始まり(存在する場合)、タスク関連データに複数のバッファ位置が割当てられることが示される。BCB制御ブロックの次のエントリは、物理バッファ空間に格納されるデータ・バイト数、及び実バッファサイズを定義する。またフラグは、BCBに追加される各種制御情報及びデータが存在するバッファ(バッファ132等)の物理アドレスを示す。
【0041】
制御メッセージの場合は(図7参照)それが比較的シンプルなので、TDVテーブル及びそれに含まれるTDVEは使用する必要がない。その結果、OCB122は、バッファ領域132に格納された制御メッセージの最初の部分を定義するBCB130へのポインタを含む。他のBCB134、136はBCB130から連結できる。
【0042】
入力ライン制御ブロック(データ及び制御のメッセージ):
ノードに用いられる制御ブロック・データ構造はまた、入力ポート・テーブル(IPT)、入力ポート・テーブル・エントリ(IPTE)、及び入力制御ブロック(ICB)を含む。これらの制御ブロックは他のノードから受信された入力タスクの処理に用いられる。図8でIPT140は、各種入力タスクを定義した複数のIPTE142を含む。各IPTEは、実行される作業単位を定義したICB144へのポインタを含む。各ICB144はトラック記述子ベクトル(TDV)・テーブル146へのポインタを含む。TDVテーブル146は上述のように、ICB144によって定義された作業単位の実行に用いられるディスク・メモリの領域を定義する。ICB144はまた、最初のトラック記述子ベクトル要素(TDVE)148及び最後のTDVE150の指標を有する。前記のように、TDVEはそこからBCBを連結できる。
【0043】
IPTEはそれぞれ下記の表5に示すようなデータ構造を含む。
【表5】
入力ポート・テーブル・エントリ(IPTE)
−先頭ICB
−最終ICB
−フラグ
−出力ハードウェア・ポートへのポインタ
−出力論理ポートへのポインタ
【0044】
IPTEは、データ処理操作を開始するのに必要な先頭入力制御ブロック(ICB)の指標と、操作を完了する最終ICBの指標を含む。中間ICBは、ICB制御ブロック内に含まれるポインタを連結することによって確認される。
【0045】
入力データ・メッセージがハードウェア入力ポート116によって受信されると、一連のICB144が割当てられ、要求されたタスクの実行が可能になる。ICBの関連部分のデータ構造を下記の表6に示す。
【表6】
入力制御ブロック(ICB)
−次のICBポインタ
−フラグ
−セクタ長
−セクタ・カウント
−先頭TDVE
−最終TDVE
−TDV/BCBポインタ
【0046】
各ICB144は、次のICB制御ブロックのアドレス値である次のICBポインタを含む(後続のICB間の連結操作を有効にする)。最初のICB144へのポインタはIPTE142に置かれ、このポインタを使うことにより、IPTE142に関連したすべてのICBが確認可能になる(ICB/ICBポインタと組み合わせて)。TDVEポインタ・データにより、入力されるタスクに必要なデータ処理操作からの入力データが格納されるか、データがそこから導かれるディスク・ドライブ・トラックの識別が可能になる。
【0047】
図9には、制御メッセージに用いられる論理制御ブロックが示してある。OPTE及びOCBに関連した制御メッセージと同様、制御メッセージはシンプルなので、TDVE制御ブロックは必要なく、各ICBは、関連するBCB152、154及び156を直接指し示せるようにされる。
【0048】
命令:
先に述べた通り、ノード・プロセッサ22(図2)はソフトウェア制御であり、またノード全体の動作を制御する。あるハードウェア機能がノード内にあって実質的に独立に動作し、ノード・プロセッサ22を補助的な制御機能から開放する。図3に示すように、出力ポート状態論理60及び入力ポート状態論理62は両方とも状態機械であり、それぞれ出力機能及び入力機能を制御する。
【0049】
出力ポート状態論理60は、優先度が付けられた複数のキュー70を制御し、データ処理装置全体の動作に必要なときにタスクを優先度の順に出力できるようにする。出力ポート状態論理60の動作では、完了するまで複数のマシン・サイクルを要することがあり、ノード内で実行中の他のアクティブなプロセスとリソースを競う結果になることがある。競合を避けるため、ノード・プロセッサ22はハードウェア構造内の機構のアトミック操作を開始する”命令”を発行し、基本的には”命令を受けた”手続きが進行中はそのハードウェア機構へのアクセスをロックアウトできるようにされる。
【0050】
ソフトウェアが”出力ポート・レディ”命令を出すとOPTEがキュー待機され、そのディスパッチ(または他のOPTEのディスパッチ)が試行されるまでソフトウェアは出力ポート状態論理60へのアクセスを禁止される。同様にソフトウェアは”ICB/OCBをチェインに追加”命令を出せる。この命令により、例えばディスパッチ可能なOCBがディスパッチされていないOCBに連結される。ここでもソフトウェアは、連結されるOCBに関連したデータを変更することは禁止される。
【0051】
レディ・キューへのタスクの追加:
ここで図10乃至図12とその論理フローチャートを参照し、出力ポートのレディ・キューにタスクを追加する手続きについて説明する。最初(ボックス200)、ソフトウェアによりノード・プロセッサ22が、あるタスク、例えばOPTE Aに”出力ポート・レディ”命令を出す。出力ポート状態論理60(図3)はこの命令の受信に応答して、そのレディ・キューにOPTEが列挙されているか確認する(判断ボックス202)。NOであれば、OPTE Aのタスクはすぐ実行される(ボックス204)。レディ・キューにOPTEが列挙されているなら、OPTE Aはすぐに実行できない可能性のあることがわかる。
【0052】
最初、出力ポート状態論理60は、OPTE A制御ブロックのレディ・フラグが1にセットされているか確認する。YESであれば、これはOPTE Aがすでにレディ・キューにセットされていることを意味し、手続きは終了する(楕円208)。OPTE Aのレディ・フラグが1にセットされていない場合、出力ポート状態論理60は、OPTE Aの優先度に等しい割当て優先度を示すレディ・キューの最初/最後のレジスタをチェックする(ボックス210)。このチェック・プロセスでまず、最初のレジスタ値が0に等しいかどうか確認される(判断ボックス212)。YESであれば、これはそのレディ・キューに登録されたOPTEは他にないことを意味し、OPTE Aはそこに列挙される最初のタスクになる。その場合、OPTE Aのアドレスがそのレディ・キューの最初及び最後のレジスタに書込まれる(ボックス214)。またOPTE A制御ブロックの次のOPTEフィールドに”0”が書込まれる(ボックス216)。これは、他のOPTEはOPTE A制御ブロックから連結されていないことを示す。
【0053】
判断ボックス212に示してあるように、レディ・キューの最初のレジスタの値が0以外なら、OPTEが他に少なくとも1つはレディ・キューに位置している。その場合、OPTE Aアドレスがキューの最後のレジスタに書込まれ(ボックス218)、OPTE A制御ブロックのアドレスが、レディ・キューに列挙された最後のOPTEの次のOPTEフィールドに書込まれる(ボックス220)。OPTE Aはこれでレディ・キューに列挙されるので、このことが、OPTE Aのレディ・フラグを1に等しくセットすることによって示される(図11のボックス222)。
【0054】
この段階で、出力ポート状態論理60は、OPTEが現在実行中かどうかの確認に進む(判断ボックス224)。NOであれば、出力ポート状態論理60は、優先度が最大のレディ・キューの先頭にあるOPTEの実行を試行する(ボックス226)。このOPTEはOPTE Aではないことも考えられ、OPTE Aが列挙されたレディ・キューより優先度が高いレディ・キューの先頭に達した他のOPTEとも考えられる。これにより、優先権は常に優先度の高いタスクに与えられ、優先度の低いタスクは犠牲になる。図1のシステムの場合、このように優先度の高いタスクは、一般にはメッセージは短いがネットワークの正常動作には欠かせない制御機能を含む。従って、このような制御機能は高い優先度でディスパッチされ、優先度の低いOPTEのキュー待機により遅れることはない。
【0055】
現在実行中のOPTEが、新たにキュー待機されたOPTEより優先度が低い場合、現在実行中のOPTEの実行は中断される。従って、OPTEが現在実行中であることを判断ブロック224が示す場合、出力ポート状態論理60は、現在実行中のOPTEの優先度が、OPTE Aの優先度より高いか、等しいか、または低いか確認する。現在実行されているOPTEが、OPTE Aより優先度の高いOPTE Bとすると(判断ボックス228)、手続きは終了する(楕円230)。OPTE A及びOPTE Bの両方が同じ優先度とわかった場合、”フェアネス”手続き(ボックス232)が実行され、ある優先度のタスクはどれも、同じ優先度の他のタスクの実行を長く遅らせることのないようにされる。
【0056】
簡単には、フェアネス手続きにより、出力ポート状態論理60が、優先度が共通のタスクを多重化することができる。従って、最初のタスクで転送されるデータの量がしきい値に達したとき、そのタスクは切断され、同じキューにある別のタスクが実行を開始するが、両方が完了するまで両方とも多重化されている。フェアネス手続きの詳細についてはBradyらによる米国特許出願番号第176042号を参照されたい。
【0057】
判断ボックス228に示してあるように、現在実行中のOPTE Bの優先度がOPTE Aに割当てられた優先度より低いことがわかった場合、”優先度切断命令”が出され(ボックス234)、現在実行されているOPTE Bが切断される(ボックス236)。このような切断時には、実行が完了したOPTE Bから連結されている最後の制御ブロックを記録することによって、OPTE Bの実行のステータスがセーブされる。その後、OPTE Bが再び実行可能な状態になったとき、実行ステータスが復元され、実行が完了した制御ブロックの直後の制御ブロックから実行が継続する。この手続きにより、OPTEから連結されたBCBがすべて連結の順序で実行される。BCBは連続して実行できないことがあるが、受信側ノードは全BCBが連結順序で受信されることが保証される。ただしこれは、優先度、アセットの可用性等に応じて任意の順序で実行できるOPTEには当てはまらない。
【0058】
切断されたOPTE Bの実行ステータスがセーブされれば、OPTE B制御ブロックのステータス・セーブ・フラグが1にセットされる。OPTE BはまだOPTに列挙されているので、OPTE Bが再び実行可能になると、そのステータスを検索して切断点から実行を開始する必要のあることをステータス・セーブ・フラグがシステムに知らせる。
【0059】
OPTE Bは切断されるが、完了はしていないのでそのレディ・キューには列挙されたまま残る(ボックス238)。出力ポート状態論理60はここでOPTEを実行できる状態になるが、キュー待機され、実行中のOPTE Bより優先度が高いことがわかったばかりのOPTE Aとは限らない。先に示した通り、出力ポート状態論理60は、優先度が最大のレディ・キューの先頭にあるOPTEの実行に進む(ボックス226)。この操作を行うため(図12参照)、最初に、この操作を可能にするためリソースが利用できるかどうか確認される(判断ボックス240)。例えば、必要なデータ・リンクが使えない場合、優先度が最大のOPTEを実行するのに必要なリソースは利用できず、その場合、そのOPTEはそのレディ・キューの下に移される(ボックス242)。逆に優先度が最大のOPTEを実行するためにリソースが利用できるなら、その実行が開始される(ボックス244)。タスクが完了すると、完了したOPTEはそのレディ・キューから削除される(判断ボックス246及びボックス248)。タスクが例えば不具合のため中断すると中断したタスクは切断され、そのセーブされたステータス及びステータス・セーブ・フラグがセットされる(ボックス250)。中断したタスク(すなわちOPTE)は次にそのレディ・キューから削除され、後で中断の理由がなくなったとき再びキュー待機できるようになる。
【0060】
この段階で出力ポート状態論理60により次のOPTEを処理できる。従って判断ボックス252に示してある通り、OPTE Aを保持したレディ・キューより優先度が高いOPTEがレディ・キューに存在する場合、優先度が最大のレディ・キューの先頭にあるそのOPTEがアクセスされる(ボックス254)。アクセスされたOPTEが切断されたものである場合、そのステータスが検索され、完了した最後のBCBに連結された割込み点(例えば次のBCB)から実行が開始される。そこで手続きは判断ボックス240に戻って繰り返される。
【0061】
優先度が高いレディ・キューにOPTEが存在しない場合は、OPTE Aを保持したレディ・キューがアクセスされ、その先頭のOPTEが実行される(判断ボックス256)。後に、現在の優先度のレディ・キューに列挙されたOPTEが見つからない場合、手続きは優先度の低いレディ・キューに移り(判断ボックス258)、そこに列挙されたOPTEが前記のように実行される。優先度の低いレディ・キューにOPTEが見つからない場合、プロセスは終了する(楕円260)。
【0062】
実行中のタスクへのタスクの追加:
先に示した通り、OPTEから”ポート・レディ命令”が出されると、ソフトウェアはOPTEの変更を禁止される。しかしOPTEはポート・レディ命令に従うが、そのタスクは、別の連結されたBCBを追加することによって補助できる。この手続きにより、図13に示したその機能が有効になり、初めにソフトウェアが”OCBをチェインに追加”命令を出す。この命令は、新たなOCB及び新たなOCBが追加されるOPTEへのポインタを含む(ボックス270)。出力ポート状態論理60は命令に応答して、OPTEの最後のOCBポインタの値を新たなOCBのアドレスに変更する。またOPTEから連結された最後のOCBの次のOCBポインタは変更され、新たなOCBのアドレスが示される(ボックス272)。OPTEから連結されたOCBがない場合は、OPTEの最初のOCB及び最後のOCBのポインタが新たなOCBアドレスと等しくセットされる(ボックス274)。このようにして、実行中のタスクは連結された他のOCBという手段を通して補助され、実行中のタスクを中断、或いはこれに割込みをかける必要はない。OCBがチェインに追加されるとソフトウェアは再びレディ命令を出して、命令が出される前にOCBが完了する場合に備える。
【0063】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0064】
(1)データ処理装置において優先度が付けられたタスクの実行を制御する方法であって、前記データ処理装置は、ソフトウェアによって制御されるプロセッサとハードウェアで構成されるキュー・コントローラを含み、前記キュー・コントローラは優先度が付けられた複数のキュー手段を含み、前記キュー手段はそれぞれ、割当てられた優先度が前記キュー手段に割当てられた優先度に等しいタスクを列挙し、前記キュー・コントローラはプロセッサによって生成された命令に応答して、第1のタスクを、実行を目的にキュー待機するために、
前記第1のタスクを、割当てられた優先度が前記第1のタスクの優先度に等しい第1のキュー手段に列挙するステップと、
割当てられた優先度が高いキュー手段に第2のタスクが列挙されている場合には、前記第1のタスクの実行前に前記第2のタスクの実行を試行するステップとを含む方法を実行する、
方法。
(2)割当てられた優先度が前記第1のキュー手段よりも高いキュー手段にタスクが列挙されていない場合は、前記第1のキュー手段に列挙された第1のタスクの実行を試行するステップと、
前記タスクの実行完了時に、または前記タスクの実行中断時には、割当てられた優先度の高いキュー手段にタスクをセットする他の命令が発行されていない場合にのみ前記第1のキュー手段上の他のタスクの実行を試行するステップと、
を含む、前記(1)記載の方法。
(3)タスクは、連結された複数のサブタスクを含み、前記方法が、
前記プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行するステップと、
前記サブタスクの実行が完了しない場合は、完了しなかった前記サブタスクに連結されたサブタスクの代わりに他のタスクの実行を試行するステップと、
を含む、前記(1)記載の方法。
(4)サブタスクの実行が完了していないとき、正常に実行された前記タスクの最後のサブタスクを後で確認できるようにするレコードを格納するステップと、
サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行されるステップと、
を含む、前記(3)記載の方法。
(5)全キュー手段上の全タスクが実行されるまで、前記キュー手段に列挙されたタスクの実行試行を継続するステップを含む、前記(1)記載の方法。
(6)優先度が付けられたタスクの実行を制御するデータ処理装置であって、
ソフトウェア制御下で、優先度が付けられたタスクを優先度が付けられたキュー手段にセットするレディ命令を発行するプロセッサ手段と、
優先度が付けられ、それぞれ実行可能な状態の共通優先度のタスク名を記録する複数のレジスタを含み、共通の優先度を有するタスクの名前だけを記録する複数のキュー手段を含み、i)第1のタスク名に割当てられた優先度に等しい優先度が指定された第1のキュー手段に、レディ命令によって指定された前記第1のタスク名を列挙し、ii)前記第1のタスクの優先度よりも高い優先度が割当てられたキュー手段に他のタスク名が列挙されている場合は、前記第1のタスクの前に前記他のタスクを実行する、前記レディ命令に応答し、前記プロセッサのソフトウェア制御動作によって割込みをかけられない少なくとも1つのタスクの実行をアトミック・ベースで試行するレディ命令に応答する、キュー・コントローラ・ハードウェア手段と、
を含む、データ処理装置。
(7)前記第1のキュー手段よりも高い優先度が割当てられたキュー手段にタスク名が列挙されていない場合は、前記キュー・コントローラ・ハードウェア手段が、前記第1のキュー手段に列挙された第1のタスクの実行を試行し、列挙された前記第1のタスクの実行の完了時または列挙された前記第1のタスクの実行中断時に、前記キュー・コントローラ・ハードウェア手段が、高い優先度が割当てられたキュー手段にタスクをセットする他の命令が発行されていない場合にのみ、前記第1のキュー手段上の他のタスクの実行を試行する、前記(6)記載のデータ処理装置。
(8)タスクは連結された複数のサブタスクを含み、前記キュー・コントローラ・ハードウェア手段は、前記プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行し、前記サブタスクの実行が完了しない場合は、完了しなかった前記サブタスクに連結された前記サブタスクの代わりに別のタスクの実行を試行する、前記(1)記載のデータ処理装置。
(9)サブタスクの実行が完了しないとき、前記キュー・コントローラ・ハードウェア手段により、正常に実行された前記タスクの最後のサブタスクを後に確認できるようにするレコードが格納され、サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行される、前記(8)記載のデータ処理装置。
【図面の簡単な説明】
【図1】ノードのデータ処理アレイを示すブロック図である。
【図2】図1のシステムに用いられる代表的ノードの構成要素を示すブロック図である。
【図3】図2のノードに含まれる制御メモリ・インターフェイス・ブロックのブロック図である。
【図4】図3に示した出力ポート状態論理ブロックに含まれる複数の優先度キュー・レジスタ構造を示す図である。
【図5】図2のノードのデータ・バッファ・インターフェイス・ブロックの詳細なブロック図である。
【図6】データ・メッセージのコンパイルとディスパッチを可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図7】制御メッセージのコンパイルとディスパッチを可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図8】データ・メッセージの受信と格納を可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図9】制御メッセージの受信と格納を可能にするハードウェア及びソフトウェアの制御ブロックを示す図である。
【図10】図2の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。(図11と図12を合わせて参照されたい。)
【図11】図2の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。(図10と図12を合わせて参照されたい。)
【図12】図2の制御メモリ・インターフェイス・ブロックまたはデータ・バッファ・インターフェイス・ブロック内のタスク処理の論理フローチャートを示す図である。(図10と図11を合わせて参照されたい。)
【図13】タスクが実行中のプロセスであるときにそのタスクのサブタスクを追加する手続きの論理フローチャートを示す図である。
【符号の説明】
12、14、16、18 ディスク・ドライブ
27 制御メモリ・インターフェイス・モジュール
30 データ・バッファ・インターフェイス・モジュール
38、40 関連ディスク・ドライブ
44 通信リンク
64 オペランド・メモリ・バス
118 出力ポート・デーブル
140 入力ポート・テーブル
Claims (5)
- データ処理装置において優先度が付けられたタスクの実行を制御する方法であって、前記データ処理装置は、ソフトウェアによって制御されるプロセッサとハードウェアで構成されるキュー・コントローラを含み、前記キュー・コントローラは優先度が付けられた複数のキュー手段を含み、前記キュー手段はそれぞれ、割当てられた優先度が前記キュー手段に割当てられた優先度に等しいタスクを列挙し、前記キュー・コントローラはプロセッサが発行した命令の受信に応答して、第1のタスクを、実行を目的にキュー待機するものであり、
前記キュー・コントローラが前記第1のタスクを、割当てられた優先度が前記第1のタスクの優先度に等しい第1のキュー手段に列挙するステップと、
割当てられた優先度が高いキュー手段に第2のタスクが列挙されている場合には、前記キュー・コントローラが前記第1のタスクの実行前に前記第2のタスクの実行を試行するステップと、
割当てられた優先度が前記第1のキュー手段よりも高いキュー手段にタスクが列挙されていない場合には、前記キュー・コントローラが前記第1のキュー手段に列挙された第1のタスクの実行を試行するステップと、
前記タスクの実行完了時に、または前記タスクの実行中断時に、割当てられた優先度の高いキュー手段にタスクをセットする他の命令が発行されていない場合にのみ、前記キュー・コントローラが前記第1のキュー手段上の他のタスクの実行を試行するステップと、
タスクが連結された複数のサブタスクを含む場合には、前記プロセッサが発行した命令の受信に応答して、前記キュー・コントローラがタスクの各サブタスクの実行を試行するステップと、
前記サブタスクの実行が完了しない場合には、前記キュー・コントローラが完了しなかった前記サブタスクに連結されたサブタスクの代わりに他のタスクの実行を試行するステップと
を含む方法。 - サブタスクの実行が完了していないとき、前記キュー・コントローラが正常に実行された前記タスクの最後のサブタスクを後で確認できるようにするレコードを格納するステップと、
サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記キュー・コントローラが、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行されるステップと、
を含む、請求項1記載の方法。 - 全キュー手段上の全タスクが実行されるまで、前記キュー・コントローラが前記キュー手段に列挙されたタスクの実行試行を継続するステップを含む、請求項1記載の方法。
- 優先度が付けられたタスクの実行を制御するデータ処理装置であって、
ソフトウェア制御下で、優先度が付けられたタスクを優先度が付けられたキュー手段にセットするレディ命令を発行するプロセッサ手段と、
優先度が付けられ、それぞれ実行可能な状態の共通優先度のタスク名を記録する複数のレジスタを含み、共通の優先度を有するタスクの名前だけを記録する複数のキュー手段を含み、i)第1のタスク名に割当てられた優先度に等しい優先度が指定された第1のキュー手段に、レディ命令によって指定された前記第1のタスク名を列挙し、ii)前記第1のタスクの優先度よりも高い優先度が割当てられたキュー手段に他のタスク名が列挙されている場合は、前記第1のタスクの前に前記他のタスクを実行する、前記レディ命令に応答し、前記プロセッサのソフトウェア制御動作によって割込みをかけられない少なくとも1つのタスクの実行を試行するレディ命令に応答する、キュー・コントローラ・ハードウェア手段と、
を含み、
前記キュー・コントローラ・ハードウェア手段は、前記第1のキュー手段よりも高い優先度が割当てられたキュー手段にタスク名が列挙されていない場合、前記第1のキュー手段に列挙された第1のタスクの実行を試行し、列挙された前記第1のタスクの実行の完了時または列挙された前記第1のタスクの実行中断時に、高い優先度が割当てられたキュー手段にタスクをセットする他の命令が発行されていない場合にのみ、前記第1のキュー手段上の他のタスクの実行を試行し、
タスクが連結された複数のサブタスクを含む場合、前記キュー・コントローラ・ハードウェア手段は、前記プロセッサによって生成された命令に応答してタスクの各サブタスクの実行を試行し、前記サブタスクの実行が完了しない場合、完了しなかった前記サブタスクに連結された前記サブタスクの代わりに別のタスクの実行を試行する、データ処理装置。 - サブタスクの実行が完了しないとき、前記キュー・コントローラ・ハードウェア手段により、正常に実行された前記タスクの最後のサブタスクを後に確認できるようにするレコードが格納され、サブタスクが完了しなかった前記タスクの実行を次に試行するとき、前記レコードを用い、正常に実行された前記サブタスクから連結されたサブタスクの実行を開始することによって、たとえ実行のシーケンスが中断されても前記タスクの全サブタスクが連結順序で実行される、請求項4記載のデータ処理装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US534585 | 1990-06-06 | ||
US08/534,585 US5940612A (en) | 1995-09-27 | 1995-09-27 | System and method for queuing of tasks in a multiprocessing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09128252A JPH09128252A (ja) | 1997-05-16 |
JP3549081B2 true JP3549081B2 (ja) | 2004-08-04 |
Family
ID=24130689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP23500096A Expired - Fee Related JP3549081B2 (ja) | 1995-09-27 | 1996-09-05 | 優先度付きタスク実行制御方法及びデータ処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5940612A (ja) |
JP (1) | JP3549081B2 (ja) |
KR (1) | KR100268565B1 (ja) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6338074B1 (en) * | 1997-07-23 | 2002-01-08 | Filenet Corporation | System for enterprise-wide work flow automation |
US6243735B1 (en) * | 1997-09-01 | 2001-06-05 | Matsushita Electric Industrial Co., Ltd. | Microcontroller, data processing system and task switching control method |
US6219741B1 (en) * | 1997-12-10 | 2001-04-17 | Intel Corporation | Transactions supporting interrupt destination redirection and level triggered interrupt semantics |
GB2334116A (en) * | 1998-02-04 | 1999-08-11 | Ibm | Scheduling and dispatching queued client requests within a server computer |
US6411982B2 (en) * | 1998-05-28 | 2002-06-25 | Hewlett-Packard Company | Thread based governor for time scheduled process execution |
US6438595B1 (en) | 1998-06-24 | 2002-08-20 | Emc Corporation | Load balancing using directory services in a data processing system |
US6195703B1 (en) | 1998-06-24 | 2001-02-27 | Emc Corporation | Dynamic routing for performance partitioning in a data processing network |
US6421711B1 (en) * | 1998-06-29 | 2002-07-16 | Emc Corporation | Virtual ports for data transferring of a data storage system |
US6260120B1 (en) | 1998-06-29 | 2001-07-10 | Emc Corporation | Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement |
US6295575B1 (en) | 1998-06-29 | 2001-09-25 | Emc Corporation | Configuring vectors of logical storage units for data storage partitioning and sharing |
US6253260B1 (en) * | 1998-10-22 | 2001-06-26 | International Business Machines Corporation | Input/output data access request with assigned priority handling |
KR100617228B1 (ko) * | 1999-03-19 | 2006-08-31 | 엘지전자 주식회사 | 실시간 운영체계 커널의 이벤트 전달 체계 구현방법 |
US6427196B1 (en) | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
KR100678930B1 (ko) * | 1999-10-11 | 2007-02-07 | 삼성전자주식회사 | 디지털 시그널 프로세서를 위한 실시간 제어 시스템 |
US6532509B1 (en) | 1999-12-22 | 2003-03-11 | Intel Corporation | Arbitrating command requests in a parallel multi-threaded processing system |
US6694380B1 (en) | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6631430B1 (en) * | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6625654B1 (en) | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6560667B1 (en) * | 1999-12-28 | 2003-05-06 | Intel Corporation | Handling contiguous memory references in a multi-queue system |
US6307789B1 (en) * | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6976095B1 (en) | 1999-12-30 | 2005-12-13 | Intel Corporation | Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch |
US7099855B1 (en) | 2000-01-13 | 2006-08-29 | International Business Machines Corporation | System and method for electronic communication management |
US8290768B1 (en) | 2000-06-21 | 2012-10-16 | International Business Machines Corporation | System and method for determining a set of attributes based on content of communications |
US9699129B1 (en) | 2000-06-21 | 2017-07-04 | International Business Machines Corporation | System and method for increasing email productivity |
US6408277B1 (en) | 2000-06-21 | 2002-06-18 | Banter Limited | System and method for automatic task prioritization |
US6658478B1 (en) * | 2000-08-04 | 2003-12-02 | 3Pardata, Inc. | Data storage system |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7836329B1 (en) | 2000-12-29 | 2010-11-16 | 3Par, Inc. | Communication link protocol optimized for storage architectures |
US7644057B2 (en) | 2001-01-03 | 2010-01-05 | International Business Machines Corporation | System and method for electronic communication management |
US20020126673A1 (en) * | 2001-01-12 | 2002-09-12 | Nirav Dagli | Shared memory |
US7225242B2 (en) | 2001-01-26 | 2007-05-29 | Dell Products L.P. | System and method for matching storage device queue depth to server command queue depth |
US6964049B2 (en) * | 2001-07-18 | 2005-11-08 | Smartmatic Corporation | Smart internetworking operating system for low computational power microprocessors |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US7158964B2 (en) * | 2001-12-12 | 2007-01-02 | Intel Corporation | Queue management |
US7107413B2 (en) | 2001-12-17 | 2006-09-12 | Intel Corporation | Write queue descriptor count instruction for high speed queuing |
US7269179B2 (en) | 2001-12-18 | 2007-09-11 | Intel Corporation | Control mechanisms for enqueue and dequeue operations in a pipelined network processor |
US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US7181573B2 (en) | 2002-01-07 | 2007-02-20 | Intel Corporation | Queue array caching in network devices |
US6934951B2 (en) | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
US7181594B2 (en) * | 2002-01-25 | 2007-02-20 | Intel Corporation | Context pipelines |
US7149226B2 (en) | 2002-02-01 | 2006-12-12 | Intel Corporation | Processing data packets |
US8108656B2 (en) * | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US6941438B2 (en) * | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
US7380218B2 (en) * | 2003-03-27 | 2008-05-27 | International Business Machines Corporation | Method and apparatus for managing windows |
US7389230B1 (en) | 2003-04-22 | 2008-06-17 | International Business Machines Corporation | System and method for classification of voice signals |
US8495002B2 (en) | 2003-05-06 | 2013-07-23 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
US20050187913A1 (en) | 2003-05-06 | 2005-08-25 | Yoram Nelken | Web-based customer service interface |
US7650601B2 (en) | 2003-12-04 | 2010-01-19 | International Business Machines Corporation | Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment |
US20050198361A1 (en) * | 2003-12-29 | 2005-09-08 | Chandra Prashant R. | Method and apparatus for meeting a given content throughput using at least one memory channel |
US7213099B2 (en) | 2003-12-30 | 2007-05-01 | Intel Corporation | Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches |
US7657889B2 (en) * | 2004-04-06 | 2010-02-02 | International Business Machines Corporation | Method, system, and storage medium for searching multiple queues for prioritized work elements |
JP4622474B2 (ja) * | 2004-11-17 | 2011-02-02 | 横河電機株式会社 | フィールド機器及びこれを用いたシステム |
KR100705955B1 (ko) * | 2004-12-30 | 2007-04-11 | 지멘스 오토모티브 주식회사 | 자동차의 엔진 제어 방법 |
US7937616B2 (en) | 2005-06-28 | 2011-05-03 | International Business Machines Corporation | Cluster availability management |
US7774785B2 (en) * | 2005-06-28 | 2010-08-10 | International Business Machines Corporation | Cluster code management |
US7743372B2 (en) * | 2005-06-28 | 2010-06-22 | Internatinal Business Machines Corporation | Dynamic cluster code updating in logical partitions |
US8156493B2 (en) * | 2006-04-12 | 2012-04-10 | The Mathworks, Inc. | Exception handling in a concurrent computing process |
US20130276109A1 (en) * | 2006-07-11 | 2013-10-17 | Mcafee, Inc. | System, method and computer program product for detecting activity in association with program resources that has at least a potential of an unwanted effect on the program |
CN101714099B (zh) * | 2009-12-16 | 2012-12-05 | 金蝶软件(中国)有限公司 | 一种行集数据的处理方法、装置及数据处理系统 |
CN102253860A (zh) * | 2011-07-13 | 2011-11-23 | 深圳市万兴软件有限公司 | 一种异步操作方法及异步操作管理装置 |
KR101612105B1 (ko) * | 2014-11-27 | 2016-04-11 | 한국과학기술정보연구원 | 사용자 계정에 따른 작업우선순위가 적용된 작업관리 시스템 및 그 방법 |
US10095442B2 (en) | 2015-08-04 | 2018-10-09 | Toshiba Memory Corporation | Memory device that changes execution order of commands |
JP6532385B2 (ja) * | 2015-11-02 | 2019-06-19 | キヤノン株式会社 | 情報処理システムおよびその制御方法、並びにプログラム |
US11210134B2 (en) * | 2016-12-27 | 2021-12-28 | Western Digital Technologies, Inc. | Atomic execution unit for object storage |
WO2019063065A1 (en) * | 2017-09-26 | 2019-04-04 | Trimble Ab | DATA COLLECTION TASK WAITING FILE FOR SURVEY INSTRUMENT |
US11157004B2 (en) * | 2019-04-01 | 2021-10-26 | GM Global Technology Operations LLC | Real-time control system for a vehicle and a method of executing control of the vehicle via the real-time control system |
CN110780976B (zh) * | 2019-10-24 | 2022-03-15 | 上海华讯网络系统有限公司 | 自动化操作编排与执行方法及系统 |
CN113010286A (zh) * | 2021-03-12 | 2021-06-22 | 京东数字科技控股股份有限公司 | 并行任务调度方法、装置、计算机设备和存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4177513A (en) * | 1977-07-08 | 1979-12-04 | International Business Machines Corporation | Task handling apparatus for a computer system |
US4286322A (en) * | 1979-07-03 | 1981-08-25 | International Business Machines Corporation | Task handling apparatus |
US4358829A (en) * | 1980-04-14 | 1982-11-09 | Sperry Corporation | Dynamic rank ordered scheduling mechanism |
US4539637A (en) * | 1982-08-26 | 1985-09-03 | At&T Bell Laboratories | Method and apparatus for handling interprocessor calls in a multiprocessor system |
US4660168A (en) * | 1984-03-14 | 1987-04-21 | Grant Elwyn E | Apparatus for completing a customer initiated ATM transaction |
US4658351A (en) * | 1984-10-09 | 1987-04-14 | Wang Laboratories, Inc. | Task control means for a multi-tasking data processing system |
US4682284A (en) * | 1984-12-06 | 1987-07-21 | American Telephone & Telegraph Co., At&T Bell Lab. | Queue administration method and apparatus |
US4868744A (en) * | 1986-03-03 | 1989-09-19 | International Business Machines Corporation | Method for restarting a long-running, fault-tolerant operation in a transaction-oriented data base system without burdening the system log |
US4914570A (en) * | 1986-09-15 | 1990-04-03 | Counterpoint Computers, Inc. | Process distribution and sharing system for multiple processor computer system |
US4980824A (en) * | 1986-10-29 | 1990-12-25 | United Technologies Corporation | Event driven executive |
US5012409A (en) * | 1988-03-10 | 1991-04-30 | Fletcher Mitchell S | Operating system for a multi-tasking operating environment |
US5202988A (en) * | 1990-06-11 | 1993-04-13 | Supercomputer Systems Limited Partnership | System for communicating among processors having different speeds |
US5220653A (en) * | 1990-10-26 | 1993-06-15 | International Business Machines Corporation | Scheduling input/output operations in multitasking systems |
US5247675A (en) * | 1991-08-09 | 1993-09-21 | International Business Machines Corporation | Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system |
-
1995
- 1995-09-27 US US08/534,585 patent/US5940612A/en not_active Expired - Fee Related
-
1996
- 1996-08-12 KR KR1019960033402A patent/KR100268565B1/ko not_active IP Right Cessation
- 1996-09-05 JP JP23500096A patent/JP3549081B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09128252A (ja) | 1997-05-16 |
KR970016979A (ko) | 1997-04-28 |
KR100268565B1 (ko) | 2000-10-16 |
US5940612A (en) | 1999-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3549081B2 (ja) | 優先度付きタスク実行制御方法及びデータ処理装置 | |
US5606703A (en) | Interrupt protocol system and method using priority-arranged queues of interrupt status block control data structures | |
US5630059A (en) | Expedited message transfer in a multi-nodal data processing system | |
US5659701A (en) | Apparatus and method for distributed program stack | |
US7328277B2 (en) | High-speed data processing using internal processor memory space | |
JP3557947B2 (ja) | 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体 | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
KR100219350B1 (ko) | 분산된 노드 사이 스위칭과 분리된 데이터/제어 메시지 처리를 갖는 다중 노드 네트워크 | |
US5625846A (en) | Transfer request queue control system using flags to indicate transfer request queue validity and whether to use round-robin system for dequeuing the corresponding queues | |
JPH04215158A (ja) | データ転送制御方法及びインタフェース・システム | |
JPH08171526A (ja) | 入出力インタフェース装置及びその制御方法 | |
US5619647A (en) | System for multiplexing prioritized virtual channels onto physical channels where higher priority virtual will pre-empt a lower priority virtual or a lower priority will wait | |
US6523138B1 (en) | Input/output processing system | |
US20020078163A1 (en) | Communicating between zones of a central processing complex | |
US5930483A (en) | Method and apparatus for communications control on a small computer system interface | |
US5070477A (en) | Port adapter system including a controller for switching channels upon encountering a wait period of data transfer | |
JP3387464B2 (ja) | 通信制御システムとその制御方法 | |
US7320044B1 (en) | System, method, and computer program product for interrupt scheduling in processing communication | |
US20030214909A1 (en) | Data processing device and its input/output method and program | |
EP0509946A2 (en) | Apparatus and method for implementing a distributed program stack | |
JPH1196108A (ja) | 計算機システム及びバス制御装置 | |
JP7485101B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
WO2021002054A1 (ja) | 計算機システム及びプログラム実行方法 | |
JPH08265366A (ja) | パケット転送システム | |
JPS59146347A (ja) | プロセス間通信方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040128 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040406 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20040408 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040415 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |