(57)【特許請求の範囲】
【請求項１】
入出力バスと、
前記入出力バスに接続される入出力装置と、
前記入出力バスに接続され、前記入出力装置に対してロード／ストア・コマンドを生成する、前記入出力装置に対応するデバイス・ドライバを実行する主プロセッサと、
前記入出力バスに接続され、前記デバイス・ドライバからの前記ロード／ストア・コマンドに従い、前記主プロセッサを前記ロード／ストア・コマンドの実行に関連付けられる待ち時間から解放するように前記入出力装置からデータをロードしまたは該装置にデータを記憶する、前記主プロセッサに独立でデバイス・ドライバを実行しないロード／ストア支援エンジンとを含む、入出力バス・アーキテクチャ。
【請求項２】
前記入出力装置が周辺装置と、該周辺装置を前記入出力バスに接続する入出力アダプタとを含む、請求項１記載のアーキテクチャ。
【請求項３】
前記ロード／ストア支援エンジンがプログラム式プロセッサである、請求項１記載のアーキテクチャ。
【請求項４】
前記ロード／ストア支援エンジンがプログラマブル論理アレイである、請求項１記載のアーキテクチャ。
【請求項５】
前記入出力バスが第１の入出力バスであり、
前記アーキテクチャが第２の入出力バスと、前記第１の入出力バスを前記第２の入出力バスにインタフェースするホスト・ブリッジとを含み、
前記ホスト・ブリッジ及び前記ロード／ストア支援エンジンが、単一の装置として統合される、請求項１記載のアーキテクチャ。
【請求項６】
前記第２の入出力バスが前記第１の入出力バスとは異なる、請求項５記載のアーキテクチャ。
【請求項７】
前記入出力装置が第１の入出力装置であり、前記デバイス・ドライバが第１のデバイス・ドライバであり、
前記アーキテクチャが第２の入出力装置を含み、
前記主プロセッサが、前記第２の入出力装置に対してロード／ストア・コマンドを生成する、前記第２の入出力装置に対応する第２のデバイス・ドライバを実行可能で、
前記ロード／ストア支援エンジンが、前記第２のデバイス・ドライバからの前記ロード／ストア・コマンドに従い、前記第２の入出力装置からデータをロードしまたは該装置にデータを記憶する、請求項１記載のアーキテクチャ。
【請求項８】
前記入出力バスがメモリ・マップド・バスである、請求項１記載のアーキテクチャ。
【請求項９】
前記入出力バスがＰＣＩバスである、請求項８記載のアーキテクチャ。
【請求項１０】
前記入出力バスが、入出力アダプタから前記主プロセッサに割込み信号を伝達するように構成される、請求項１記載のアーキテクチャ。
【請求項１１】
前記主プロセッサがオペレーティング・システムを実行可能である、請求項１記載のアーキテクチャ。
【請求項１２】
前記主プロセッサがプロトコル・スタックを実行可能である、請求項１１記載のアーキテクチャ。
【請求項１３】
前記主プロセッサがアプリケーション・プログラムを実行可能である、請求項１２記載のアーキテクチャ。
【請求項１４】
前記オペレーティング・システムが、前記デバイス・ドライバとは無関係に、前記主プロセッサと前記周辺装置との間の直接経路により、または前記ロード／ストア支援エンジンを含む間接経路を介して、入出力アダプタのアクセスを選択可能である、請求項１１記載のアーキテクチャ。
【請求項１５】
前記ロード／ストア支援エンジン及び前記主プロセッサが、メッセージング・プロトコルを用い、前記入出力バスを介して通信する、請求項１記載のアーキテクチャ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は入出力処理の分野に関して、特に、主プロセッサの外部の入出力処理に関する。
【０００２】
【従来の技術】
入出力処理は、装置との間のデータの移動に関わり、こうした装置には、プロセッサ複合体の外部の光ディスク、固定磁気ディスクまたはフロッピー磁気ディスクなどの不揮発性記憶装置が含まれる。当初、入出力処理はプロセッサ複合体により処理された。図１は、この状況に対応するハードウェア図を示す。図１では、プロセッサ複合体１０２が入出力バス１０４により、入出力アダプタ１０６に接続される。ロード／ストア・コマンド及び割込み信号１０８が、プロセッサ複合体１０２と入出力アダプタ１０６との間で交換される。入出力アダプタ１０６は、入出力装置（図示せず）を入出力バス１０４に接続する。プロセッサ複合体１０２は通常、プロセッサ（図示せず）、メモリ制御装置（図示せず）、及びバス制御装置（図示せず）を含む。バス制御装置は通常、入出力バスを介する通信を生成及び管理する。特に、バス制御装置は、例えば物理入出力バス・スロットから割込みビットへのマッピングを提供することにより、割込み管理を処理する。
【０００３】
図２は、図１に対応する機能図を示す。デバイス・ドライバ機能２０４、プロトコル・スタック機能２０６、アプリケーション機能２０８及びオペレーティング・システム・サービス２１０が、破線２０２により示されるプロセッサ複合体１０２により実行される。入出力適応機能２１２が入出力アダプタ１０６により実行される。
【０００４】
入出力要求処理において、データ・フロー経路２１６がアプリケーション機能２０８と入出力適応機能２１２との間に示される。入出力要求がアプリケーション２０８により、直接的または間接的に開始される。この入出力要求は、プロトコル・スタック２０６により処理され、これはアプリケーション２０８の総称入出力要求を、ディスク・メモリなどの周辺装置またはＴＣＰ／ＩＰなどの通信リンクのための、特定のコマンド・プロトコルに変換する。プロトコル・スタック２０６は、オペレーティング・システム２１０により提供される、様々なサービスを使用し得る。
【０００５】
図１に示されるような外部入出力処理を有さないシステムでは、プロトコル・スタック２０６はオペレーティング・システム２１０に、デバイス・ドライバ２０４へのリンクを問い合わせる。一旦このリンクが獲得されると、プロトコル・スタック２０６は直接、デバイス・ドライバ２０４により提供されるサービスを呼び出す。
【０００６】
デバイス・ドライバ２０４は、プロトコル・スタック２０６からコマンドを受諾し、入出力適応機能２１２すなわち入出力アダプタ１０６に、コマンドを実行するように命令する役目をする。デバイス・ドライバ２０４は、入出力アダプタ１０６内の全てのレジスタへの直接アクセスを有し、データをアダプタ１０６のレジスタ空間（図示せず）から、またはレジスタ空間に、直接ロードまたは記憶する。
【０００７】
図１及び図２に示される状況は、パーソナル・コンピュータ（ＰＣ）では一般的である。入出力アダプタ１０６は通常、プロセッサ複合体１０２により総合的に管理され、そうした管理には、入出力アダプタ１０６のプログラミング、ロード及びストアの使用、及び入出力アダプタ１０６からのサービス要求に対する、割込みまたはポーリング技術による応答などが含まれる。こうしたプログラミング及び応答は、信号経路１０８を介して示された。
【０００８】
以前は、プロセッサ複合体サイクル時間と入出力バス・スピードとの不一致が小さかった。入出力アダプタ１０６がロード・コマンドまたはストア・コマンドに応答するのを、プロセッサ複合体が待機しなければならない場合、待機はそれほど長くなく、そのためプロセッサ複合体１０２は機能を停止するか、数サイクルの間使用不能であった。
【０００９】
技術の進歩により、プロセッサ複合体サイクル時間が、入出力アダプタ応答時間よりも大幅に減少した。その結果、入出力アダプタがロード・コマンドまたはストア・コマンドに応答するのを待機する間の、機能停止により失われるプロセッサ複合体サイクル時間の数が、プロセッサ複合体の処理スピードと同様に、急速に増大した。
【００１０】
プロセッサ複合体が機能停止になる例として、待ち時間が３００ナノ秒（ｎｓ）で、プロセッサ・サイクル時間が３ｎｓの場合に、ローカルＰＣＩバス上の周辺コンピュータ・インタフェース（ＰＣＩ）入出力トランザクションについて考えてみよう。この状況では、プロセッサは入出力トランザクションを実行するために、１００サイクルの間機能停止になる。プロセッサ・サイクル時間が１ｎｓに減少すると、プロセッサ複合体は３００サイクルの間機能停止になる。別の例として、待ち時間が２マイクロ秒（μｓ）で、プロセッサ複合体サイクル時間が３ｎｓの場合に、ブリッジを介してホストＰＣＩバスに接続されるリモートＰＣＩバス上のＰＣＩ入出力トランザクションの場合では、プロセッサ複合体は６６６浪費サイクルを被る。プロセッサ・サイクル時間が１ｎｓに減少されれば、プロセッサ複合体は２０００浪費サイクルを被ることになる。
【００１１】
プロセッサ複合体が入出力コマンドのために機能停止になる時間を低減するために、プロセッサ複合体は入出力コマンドの発行後、他の機能を実行するようにプログラムされた。入出力アダプタ１０６は最終的に応答するとき、割込み信号を提供することにより、プロセッサ複合体１０２の注意を再度獲得した。割込みをサービスするために、プロセッサ複合体は、現在実行中のプロセスに関するその内部状態を記憶する必要があった。通常、３つ乃至４つのロード／ストア・コマンドが割込みに関連付けられ、３つ乃至４つの割込みが各入出力コマンドに関連付けられた。従って、割込みを使用する技術は、プロセッサ複合体が機能停止になる問題を解決したが、プロセッサ複合体による多くの有用な作業が、実行されなければならない割込みサービス・ルーチンにより消費された。
【００１２】
プロセッサ複合体が多くの割込みをサービスしなければならない問題を解決するために、デバイス・ドライバ機能を実行し、入出力アダプタからの割込みをサービスする責任が、プロセッサ複合体の外部の入出力プロセッサに転嫁された。この状況が図３に示される。そこではプロセッサ複合体３０２が入出力バス３０４に接続される。同様に、入出力プロセッサ３１０及び入出力アダプタ３０６が、入出力バス３０４に接続される。プロセッサ複合体３０２は通常、プロセッサ（図示せず）、メモリ制御装置（図示せず）、及びバス制御装置（図示せず）を含む。バス制御装置は入出力バス３０４を生成及び管理し、例えば物理入出力バス・スロットから割込みビットへのマッピングを提供する。
【００１３】
図４は、図３に対応する機能図を示す。プロセッサ複合体３０２により実行される機能が、破線４０２により示され、オペレーティング・システム・サービス４０６、プロトコル・スタック４０８、及びアプリケーション４１０を含む。デバイス・ドライバ機能４１６が、プロセッサ複合体３０２の外部の入出力プロセッサ３１０（破線４０４で示される）に移動され、これは更に入出力オペレーティング・システム・サービス機能４１４を含む。プロセッサ複合体機能４０２は入出力プロセッサ機能４０４と、メッセージ・プロトコル４１２を介して通信する。入出力プロセッサ機能４０４は、ロード／ストア・コマンド及び割込み４２０の交換を介して、入出力適応機能４１８と通信する。
【００１４】
前述のように、入出力要求処理データ・フロー経路４２２が、アプリケーション機能４１０と入出力適応機能４１８との間で示される。入出力要求は、アプリケーション４１０により直接的に、または間接的に開始される。この入出力要求は、プロトコル・スタック４０８により処理され、総称入出力要求が、ディスク・ドライブ記憶装置などの周辺装置、またはＴＣＰ／ＩＰなどの通信リンクのための、特定のコマンド・プロトコルに変換される。プロトコル・スタック４０８は、オペレーティング・システム４０６により提供される様々なサービスを使用し得る。
【００１５】
プロトコル・スタック４０８はオペレーティング・システム４０６に、デバイス・ドライバ４１６への接続を問い合わせる。この接続はプロトコル・スタック４０８とデバイス・ドライバ４１６との間で、コマンド・メッセージ及び応答メッセージの転送を可能にする。一旦接続が確立されると、プロトコル・スタック４０８がオペレーティング・システム・サービス４０６を介して、コマンド・メッセージをデバイス・ドライバ４１６に送信する。
【００１６】
オペレーティング・システム・サービス４０２は、プロトコル・スタック４０８と入出力オペレーティング・システム・サービス４１４との間で、コマンド・メッセージ及び応答メッセージを送受信する。入出力オペレーティング・システム・サービス４１４は、これらのメッセージをデバイス・ドライバ４１６との間で送受信する。あらゆるオペレーションに対して、オペレーティング・システム・サービス４０６及び入出力オペレーティング・システム・サービス４１４の両方が、コマンド及び応答を伝達するために使用される。
【００１７】
デバイス・ドライバ４１６は、プロトコル・スタック４０８からコマンドを受諾し、入出力アダプタ３０６にコマンドを実行するように命令する役目をする。通常、デバイス・ドライバ４１６は、入出力アダプタ３０６内の全てのレジスタ（図示せず）への直接アクセスを有し、データを入出力アダプタ３０６のレジスタ空間からまたはレジスタ空間に、直接ロードまたは記憶する、すなわち読出しまたは書込む。或いは、プロトコル・スタック４０８の一部が、入出力オペレーティング・システム・サービス４１４の一部として実現され得る。
【００１８】
図３乃至図４は、ＰＣサーバの典型である。入出力プロセッサ３１０は、プロセッサ複合体３０２から入出力アダプタ３０６の制御をオフロードするために追加された。こうしたオフロードは、信号経路３０８及び３１２により表される。信号経路３０８は、プロセッサ複合体３０２と入出力プロセッサ３１０との間のメッセージ・プロトコルに従う、ロード／ストア・コマンド及び割込み情報の交換を表す。信号経路３１２は、入出力プロセッサ３１０と入出力アダプタ３０６との間での、割込み形式によるロード／ストア・コマンド及び応答の発行を表す。任意的に、図１及び図２に示されるように、プロセッサ複合体３０２がデバイス・ドライバ機能を保持し、信号経路３１４により示されるように、入出力アダプタ３０６と直接通信してもよい。
【００１９】
このアーキテクチャが最初に採用されたとき、入出力プロセッサ３１０は、各入出力コマンドに関連付けられる入出力アダプタ３０６からの３つ乃至４つの割込みをサービスした。次に、入出力プロセッサ３１０はプロセッサ複合体３０２に、１入出力コマンドにつき１つの割込みだけを生成した。従って、プロセッサ複合体３０２の多くの有用な作業が、もはや他の２つ乃至３つの割込みのサービスのために失われなくなった。
【００２０】
入出力処理における別の傾向は、入出力アダプタが１入出力コマンドにつき、３つ乃至４つの割込みではなく、１つの割込みを生成することであった。結果的に、入出力プロセッサは、入出力アダプタからの１つの割込み要求だけをサービスしなければならない。入出力プロセッサ３１０は次に、自分の割込み要求をプロセッサ複合体３０２に発行しなければならない。従って、プロセッサ複合体３０２が入出力プロセッサ３１０よりも少ない割込みをサービスしていることは、もはや必ずしも真実ではない。入出力プロセッサを使用する利点は、プロセッサ複合体を、ロード／ストア・コマンドを入出力アダプタに発行し、入出力アダプタから通常１つの割込み要求応答を待機することに関連する待ち時間から解放する能力となった。
【００２１】
【発明が解決しようとする課題】
コンピュータ技術の分野において一般的なように、入出力アダプタ技術の変化は迅速である。こうした変化には、イーサネット・カードの帯域幅の１０ＭＨｚから１００ＭＨｚへの向上などが含まれる。こうした変化に対応するため、プロセッサ複合体及び入出力プロセッサの両方が、適応化されなければならない。従って、２つの別々の改訂が設計され、サポートされなければならない。恐らく、コンパイラ及びデバッガなどの、２つの別々の開発ツールのセットが開発されなければならないであろう。こうした２重の開発は高価である。
【００２２】
本発明は部分的に、入出力プロセッサが、プロセッサ複合体がデータを入出力するためにサービスしなければならない割込みの数を低減することが、必ずしも妥当でないといった認識にもとづく。
【００２３】
本発明はまた、部分的に、入出力プロセッサのデバイス・ドライバ機能が、入出力プロセッサの入出力アダプタ対話機能から分離され、プロセッサ複合体に戻された場合、２重の開発コストが排除され得るといった認識にもとづく。
【００２４】
【課題を解決するための手段】
本発明は、プロセッサ複合体の外部にあって、レジスタ・ロード・オペレーション及びストア・オペレーションを支援する、ロード／ストア支援エンジンと呼ばれる安価なコプロセッサを提供する。ロード／ストア支援エンジンは、高性能メッセージ・ベースの機構、すなわちメッセージング・プロトコルを用いてホストと通信する。こうしたプロトコルは、処理複合体がロードを実行せず、非常に少数の、例えば３つの非機能停止及び非同期のストアを実行することを要求し、ロード／ストア支援エンジンに、入出力アダプタにロード及びストアを実行するように指示する。これによりプロセッサ複合体は、ロード／ストアが完了する、すなわち入出力アダプタが応答するのを待機するために、機能停止状態になる代わりに、有用な作業を実行することができる。
【００２５】
本発明の入出力バス・アーキテクチャは、入出力バスと、前記入出力バスに接続される入出力装置と、前記入出力バスに接続され、前記入出力装置に対してロード／ストア・コマンドを生成する、前記入出力装置に対応するデバイス・ドライバを実行する主プロセッサと、前記入出力バスに接続され、前記デバイス・ドライバからの前記ロード／ストア・コマンドに従い、前記入出力装置からまたは該装置にデータをロードまたは記憶し、前記主プロセッサを前記ロード／ストア・コマンドの実行に関連付けられる待ち時間から解放する、前記主プロセッサに独立なロード／ストア支援エンジンとを含む。
【００２６】
【発明の実施の形態】
従来、コンピュータ入出力アーキテクチャの設計者は、処理責任を処理複合体から、入出力バスに接続されるローカル・プロセッサにオフロードするように試みてきた。本発明は、入出力アーキテクチャの従来の設計見解を支持してきた事実が変化したといった認識を反映するものであり、そうした例には、入出力コマンドが現在では通常、３つ乃至４つの割込みではなしに、１つの割込みのサービスを要求するなどが挙げられる。更に、周辺装置及びそれらの関連入出力アダプタが改善される、すなわち変化する速度が、周辺装置のそうした改善を完全に利用できるように、入出力プロセッサ及びプロセッサ複合体を更新する２重の開発コストを、より一層多額なものにする。
【００２７】
本発明は、プロセッサ複合体をオフロードする従来技術の傾向を翻すことが有利になるといった認識を反映する。本発明は、幾つかの処理責任、例えばデバイス・ドライバを、プロセッサ複合体上にロードしたことを反映する。
【００２８】
図５は、本発明の入出力処理アーキテクチャに従うハードウェア図である。図５では、プロセッサ複合体５０２が好適には、メモリ・マップド入出力バス、例えばＰＣＩバスに接続される。プロセッサ複合体５０２はプロセッサ（図示せず）、メモリ制御装置（図示せず）、及びバス制御装置（図示せず）を含む。ロード／ストア・エンジン５０８及び入出力アダプタ５０６が、各々入出力バスに接続される。入出力アダプタ５０６は従来の入出力アダプタに類似または等価である。図５の信号経路５１０は、メッセージ移送機構などのメッセージング・プロトコルを用いた、プロセッサ複合体５０２とロード／ストア支援エンジン５０８との間の、ロード／ストア・コマンド及び割込みの通信を表す（メッセージ移送機構は、Nordstromらによる１９９７年１０月１５日付けの関連米国特許出願第９５０５９３号、"Message Transport Mechanism"等に記載されている）。
【００２９】
図５の命令経路５１２は、ロード／ストア支援エンジン５０８から入出力アダプタ５０６に至る。割込み信号経路５１４は、入出力アダプタ５０６からプロセッサ複合体５０２に至る。或いは、コマンドがプロセッサ複合体５０２からロード／ストア支援エンジン５０８を介して、入出力アダプタに転送される代わりに、プロセッサ複合体５０２が、プロセッサ複合体５０２と入出力アダプタ５０７との間の双方向命令及び割込み信号経路５１６などを介して直接通信し得る。
【００３０】
ロード／ストア支援エンジン５０８に代わるものが、図５において統合ロード／ストア支援エンジン及びブリッジ５１８として示される。エンジン及びブリッジ５１８は、入出力バス５０４を別の入出力バス５２０に接続する。入出力バス５２０には、入出力アダプタ５２４及び５２５が接続され、これらはそれぞれ入出力アダプタ５０６及び５０７に対応する。
【００３１】
図６は、図５のハードウェア図に対応する本発明の機能図である。図６では、プロセッサ複合体５０２により実行される機能が、破線６０２により示され、それらにはオペレーティング・システム・サービス６０４、プロトコル・スタック６０８、及びアプリケーション６１０が含まれる。更に、従来技術の傾向の逆転として、本発明はデバイス・ドライバ機能６０６を実行する責任を、プロセッサ複合体５０２に戻し、デバイス・ドライバ６０６が破線６０２内に示される。ロード／ストア支援機能６１２は、プロセッサ複合体機能６０２とは独立であり、その外部に存在する。入出力適応機能６１４及び６１５は、図５の入出力アダプタ５０６及び５０７にそれぞれ対応する。図５の命令信号経路５１０は、アプリケーション機能６１０をロード／ストア支援機能６１２に接続する、信号経路６１６及びメッセージ・プロトコル経路６１８に対応する。図５のコマンド信号経路５１２は、図６のロード／ストア・コマンド信号経路６２２に対応する。図５の割込み信号経路５１４は、図６の割込み信号経路６２４に対応する。信号経路６１６及び６１８は、ノード６１７で接続される。図５の代替コマンド信号経路５１６は、図６のノード６１７で接続される信号経路６１６及び６２０に対応する。
【００３２】
統合ロード／ストア支援エンジン及びブリッジ５１８及び入出力アダプタ５２４及び５２５に対応する機能図は、簡潔化のために省略する。なぜなら、それらは図６の機能図、及び対応する説明に類似であるからである。
【００３３】
プロセッサ複合体５０２のバス制御装置（図示せず）は、入出力バス５０４を生成し、管理する。バス制御装置（図示せず）は通常、物理入出力バス・スロットから割込みビットへのマッピングを提供する、割込み管理のための機能を含む。本発明は、入出力バス５０４がロード／ストア・コマンドをプロセッサ複合体５０２から伝達し、割込みをプロセッサ複合体５０２に伝達することにより、入出力アダプタ５０６乃至５０７及びロード／ストア支援エンジン５０８との間の、コマンド及びデータの流れを制御することを仮定する。
【００３４】
入出力アダプタ５０６及び５０７は、プロセッサ複合体５０２により論理的に管理される。これは入出力アダプタのプログラミング、入出力アダプタ５０６の場合における、ロード／ストア支援エンジン５０８を介するロード・コマンド及びストア・コマンドの発行、及び入出力アダプタからのサービス要求に対する、割込みまたはポーリング技術による応答を含む。
【００３５】
オペレーションに際して、入出力要求が、アプリケーション６１０により直接的または間接的に開始される。この入出力要求は、プロトコル・スタック６０８を介して処理され、総称入出力要求が、ディスク・ドライブ・メモリや他のリモート・メモリなどの周辺装置、またはＴＣＰ／ＩＰなどの通信リンクのための、特定のコマンド・プロトコルに変換される。プロトコル・スタックは、オペレーティング・システムにより提供される様々なサービスを使用し得る。
【００３６】
プロトコル・スタック６０８はオペレーティング・システム６０４に、デバイス・ドライバ６０６へのリンクを問い合わせる。一旦このリンクが獲得されると、プロトコル・スタック６０８は、デバイス・ドライバ６０６により提供されるサービスを直接呼び出す。
【００３７】
デバイス・ドライバ６０６は、プロトコル・スタック６０８からコマンドを受諾し、入出力適応機能６１４に、コマンドを実行するように命令する役目をする。ロード／ストア支援機能６１２を使用する場合、デバイス・ドライバ６０６は、入出力適応機能６１５内のレジスタ空間（図示せず）への直接アクセスを有さず、代わりにオペレーティング・システム・サービスを用いて、入出力適応機能６１５のレジスタ空間にロード・オペレーションまたはストア・オペレーションを実行する。このように、オペレーティング・システム６０４は、高い待ち時間が入出力アダプタ５０６に関連付けられる状況における処理のために、ロード・コマンド及びストア・コマンドのリストを、ロード／ストア支援機能６１２に送信する。ロード／ストア支援機能６１２は、ロード・コマンド及びストア・コマンドのリストを受諾し、入出力適応機能６１４との間で送受信することにより、それらを処理し、ロード・コマンドの場合、ロード・データをオペレーティング・システム６０４に返却する。入出力適応機能６１４の制御フローのあらゆる変更、例えば割込みの生成などが、ロード／ストア支援機能６１２を介してではなく、プロセッサ複合体５０２に直接経路指定される。
【００３８】
ロード／ストア支援エンジン５０８は、例えばプログラム式プロセッサ、またはプログラム式プロセッサに対応するプログラマブル論理アレイ、若しくは特定用途向け集積回路（ＡＳＩＣ）により実現される。入出力プロセッサに関わる当業者であれば、従来の入出力プロセッサ３１０からデバイス・ドライバ機能を除去し、プログラム式プロセッサの形式を取るロード／ストア支援エンジン５０８を生成することは容易であろう。更に、一旦対応するプログラム式プロセッサのコードが決定されれば、プログラマブル論理アレイをプログラムすることは容易である。しかしながら、改訂の確率が低くなるように、プログラム式プロセッサを使い込むまで、プログラム式プロセッサの代わりにプログラマブル論理アレイを用いて、ロード／ストア支援エンジンを実現することは不経済である。
【００３９】
本発明の代替実施例に戻り、ブリッジは第１の入出力バスを第２の入出力バスに接続する。第１及び第２の入出力バスが同一の場合、ブリッジは追加のファン・アウトを提供し、高度なバッファまたは再駆動装置として作用する。第１の入出力バスが第２の入出力バスと異なる場合、ブリッジは２つの入出力バス間の変換器として作用する。本発明の代替形式、すなわち統合ロード／ストア支援エンジン及びブリッジ５１８では、入出力バス５２０が入出力バス５０４と同一、すなわちＰＣＩバスの場合、ブリッジ部分が再駆動装置として作用し、入出力バス５２０が入出力バス５０４と異なり、例えば拡張業界標準アーキテクチャ（ＥＩＳＡ）・バスの場合、変換器として作用する。入出力アダプタ５２４及び５２５は、それぞれ入出力アダプタ５０６及び５０７に対応するので、入出力アダプタ５２４及び５２５のための信号経路は、経路５１０、５１２、５１４に対応し、図５では簡略化のために省略されている。
【００４０】
非常に低い待ち時間を有する幾つかの周辺装置が存在する。こうした装置は、入出力アダプタ５０７を介する入出力バス５０４への接続を正当化する。この代替ケースは、ロード／ストア支援エンジンの使用に関連付けられる性能的な犠牲またはオーバヘッドの存在を認識する。入出力アダプタ５０７を介する直接接続が、ロード／ストア支援エンジン５０８の使用に少なくとも匹敵する性能をもたらす場合、ロード／ストア支援エンジン５０８をバイパスすることは価値がある。
【００４１】
図６のロード／ストア支援機能６１２をバイパスする決定は、デバイス・ドライバ６０６とは独立に達成される。すなわち、この決定は、デバイス・ドライバが周辺装置への通信の送信を終了した後、ノード６１７において、オペレーティング・システム・サービス６０４の１つにより達成される。一旦デバイス・ドライバがオペレーティング・システム・サービス６０４を呼び出すと、デバイス・ドライバはそのコマンドが周辺装置に転送されることを想定するが、コマンドが転送される経路については気にかけない。
【００４２】
ロード／ストア・コマンドを開始するために、プロセッサ複合体５０２は割込みをロード／ストア支援エンジン５０８に発行し、ロード／ストア・コマンドをそれに送信する。ロード・コマンドの場合、プロセッサ複合体５０２は、ターゲット・アドレス及び命令コード（まとめてダブレットと呼ばれる）を、ロード／ストア支援エンジン５０８に提供する。ストア・コマンドの場合、プロセッサ複合体５０２は、ターゲット・アドレス、命令コード及びデータ（まとめてトリプレットと呼ばれる）を、ロード／ストア支援エンジン５０８に提供する。しかしながら、周辺装置特定の情報は、ロード／ストア支援エンジン５０８に提供されない。或いは、ロード／ストア支援エンジン５０８が、１つのロード／ストア・コマンドではなしに、それらのストリングを提供されてもよい。ロード／ストア支援エンジン５０８は、入出力アダプタ５０６のレジスタ空間へのデータのロード／ストアを、プロセッサ複合体５０２により指定されるように直接実行する。ロード／ストア・コマンドまたはロード／ストア・コマンドのストリングが完了するとき、ロード／ストア支援エンジン５０８はプロセッサ複合体５０２に割込みを生成し、ロード・コマンドに対する任意の検索データを提供する。
【００４３】
入出力装置５０６は、ロード／ストア支援エンジン５０８からの一連のロード及びストアを通じて、入出力オペレーションを実行するように命令される。入出力アダプタ５０６が接続される周辺装置（図示せず）の基本オペレーションに関連付けられる遅延の後、オペレーションが完了する。状況によっては、入出力アダプタ５０６からプロセッサ複合体５０２に割込みが生成され、入出力オペレーションが実行されたことを知らせる。従って、ロード／ストア支援エンジンを用い、装置オペレーションを実行するために、プロセッサ複合体５０２が１つの割込みを発行し、他の２つの割込み、すなわち一方はロード／ストア支援エンジン５０８からの、他方は入出力アダプタ５０６からの割込みをサービスすることが必要である。
【００４４】
プロセッサ複合体１０２が全ての入出力処理を扱う図１乃至図２の従来技術と比較して、本発明のプロセッサ複合体すなわち５０２は、入出力アダプタ５０６からの割込みに加え、ロード／ストア支援エンジン５０８からの割込みを処理しなければならない。しかしながら、プロセッサ複合体５０２が追加の割込みをサービスするために要する時間は、図１の従来のプロセッサ複合体１０２が、入出力アダプタ１０６がロード・コマンドに応答してデータを返却するのを待機するために、機能停止状態になる経過時間に比べ、著しく小さい。更に、プロセッサ性能が向上すると、プロセッサ複合体によりサービスされなければならない追加の割込みに関連付けられる損失時間が、一層小さくなる。更に、こうした割込みをサービスするために失われる時間、及びデータ・キャッシュ及び命令キャッシュの関連スラッシングが、割込みをバッチング（batching）またはグループ化することにより最小化され得る。こうしたバッチングは、Nordstromらによる１９９７年１０月１５日付けの関連米国特許出願第９５０７５５号、"Interrupt and Message Batching Apparatus and Method"等に記載されている。
【００４５】
図７は、入出力処理の間に実行される機能を列挙した表であり、従来技術と本発明との間で、どの構造がこれらの機能を実行するかに関する比較を示す。再度、本発明のロード／ストア支援機能は、入出力処理における設計要件の再考を表す。
【００４６】
本発明のロード／ストア支援エンジンは、外部入出力処理に勝る幾つかの利点を有する。デバイス・ドライバ及びプロトコル・スタック・コードの全てが、２つではなく、１つのプロセッサ内で実行される。その結果、コンパイラやデバッガなどの開発ツールの設計及びサポートの点で、入出力アーキテクチャを適応化及び発展することが容易になる。なぜなら、２重の開発ではなしに、単一の開発で済むからである。このことはキャッシュのより優れた利用を可能にする。ロード／ストア支援エンジン埋め込み型サービスを実行するために必要とされる、追加の少量のコードを除き、２セットではなく、１セットのデバイス・ドライバ及びプロトコル・スタックだけが、それぞれ要求される。更に、このことは外部入出力プロセッサと比較して、入出力オペレーションを実行するために、オペレーティング・システム・サービス内の非常に限られた経路長が必要とされるといった利点がある。所望の作業、例えばフォーマッティングを実行するために必要な命令の数が低減される。
【００４７】
直接入出力処理、すなわちプロセッサ複合体により完全に実行される入出力処理に比べ、本発明のロード／ストア支援エンジンは、プロセッサ複合体が、入出力アダプタへのアクセスに関連付けられる長い待ち時間を被らない利点を有する。その結果、プロセッサ複合体が入出力アダプタからの完了応答を待機するために機能停止状態にならず、他の作業のために使用可能になる。
【００４８】
それとは対照的に、本発明のロード／ストア支援エンジンは、追加の割込みをサービスするために必要とされる僅かなプロセッサ複合体サイクルと引き換えに、機能停止プロセッサ・サイクルを除去する。サービスされなければならない追加の割込みは、ロード／ストア支援エンジンに関連付けられるプロセッサ複合体の応答時間を増加させるが、ロード／ストア支援エンジンの使用は、非常に多くの浪費サイクルを除去し、プロセッサ複合体のスループットを大幅に向上させる。ロード／ストア・コマンドのストリングがロード／ストア支援エンジンに送信される場合、１ロード／ストア・コマンド当たりのオーバヘッドは一層低減される。
【００４９】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５０】
（１）入出力バスと、
前記入出力バスに接続される入出力装置と、
前記入出力バスに接続され、前記入出力装置に対してロード／ストア・コマンドを生成する、前記入出力装置に対応するデバイス・ドライバを実行する主プロセッサと、
前記入出力バスに接続され、前記デバイス・ドライバからの前記ロード／ストア・コマンドに従い、前記入出力装置からまたは該装置にデータをロードまたは記憶し、前記主プロセッサを前記ロード／ストア・コマンドの実行に関連付けられる待ち時間から解放する、前記主プロセッサに独立なロード／ストア支援エンジンと
を含む、入出力バス・アーキテクチャ。
（２）前記入出力装置が周辺装置と、該周辺装置を前記入出力バスに接続する入出力アダプタとを含む、前記（１）記載のアーキテクチャ。
（３）前記ロード／ストア支援エンジンがプログラム式プロセッサである、前記（１）記載のアーキテクチャ。
（４）前記ロード／ストア支援エンジンがプログラマブル論理アレイである、前記（１）記載のアーキテクチャ。
（５）前記入出力バスが第１の入出力バスであり、
前記アーキテクチャが第２の入出力バスと、前記第１の入出力バスを前記第２の入出力バスにインタフェースするホスト・ブリッジとを含み、
前記ホスト・ブリッジ及び前記ロード／ストア支援エンジンが、単一の装置として統合される、前記（１）記載のアーキテクチャ。
（６）前記第２の入出力バスが前記第１の入出力バスとは異なる、前記（５）記載のアーキテクチャ。
（７）前記入出力装置が第１の入出力装置であり、前記デバイス・ドライバが第１のデバイス・ドライバであり、
前記アーキテクチャが第２の入出力装置を含み、
前記主プロセッサが、前記第２の入出力装置に対してロード／ストア・コマンドを生成する、前記第２の入出力装置に対応する第２のデバイス・ドライバを実行可能で、
前記ロード／ストア支援エンジンが、前記第２のデバイス・ドライバからの前記ロード／ストア・コマンドに従い、前記第２の入出力装置からまたは該装置にデータをロードまたは記憶する、前記（１）記載のアーキテクチャ。
（８）前記入出力バスがメモリ・マップド・バスである、前記（１）記載のアーキテクチャ。
（９）前記入出力バスがＰＣＩバスである、前記（８）記載のアーキテクチャ。
（１０）前記入出力バスが、入出力アダプタから前記主プロセッサに割込み信号を伝達するように構成される、前記（１）記載のアーキテクチャ。
（１１）前記主プロセッサがオペレーティング・システムを実行可能である、前記（１）記載のアーキテクチャ。
（１２）前記主プロセッサがプロトコル・スタックを実行可能である、前記（１１）記載のアーキテクチャ。
（１３）前記主プロセッサがアプリケーション・プログラムを実行可能である、前記（１２）記載のアーキテクチャ。
（１４）前記オペレーティング・システムが、前記デバイス・ドライバとは無関係に、前記主プロセッサと前記周辺装置との間の直接経路により、または前記ロード／ストア支援エンジンを含む間接経路を介して、入出力アダプタのアクセスを選択可能である、前記（１１）記載のアーキテクチャ。
（１５）前記ロード／ストア支援エンジン及び前記主プロセッサが、メッセージング・プロトコルを用い、前記入出力バスを介して通信する、前記（１）記載のアーキテクチャ。
【図面の簡単な説明】
【図１】第１の従来の入出力処理アーキテクチャを示すハードウェア図である。
【図２】図１に対応する機能図である。
【図３】第２の従来の入出力処理アーキテクチャを示すハードウェア図である。
【図４】図３に対応する機能図である。
【図５】本発明に従う入出力処理アーキテクチャのハードウェア図である。
【図６】図５に対応する機能図である。
【図７】従来技術と本発明のロード／ストア支援エンジンとを比較した表である。
【符号の説明】
１０２、３０２、５０２  プロセッサ複合体
１０４、３０４、５０４、５２０  入出力バス
１０６、３０６、５０６、５０７、５２４、５２５  入出力アダプタ
２０２、４０２、６０２  プロセッサ複合体機能
２０４、４１６、６０６  デバイス・ドライバ機能
２０６、４０８、６０８  プロトコル・スタック機能
２０８、４１０、６１０  アプリケーション機能
２１０、４０６、６０４  オペレーティング・システム・サービス
２１２、４１８、６１４、６１５  入出力適応機能
３１０  入出力プロセッサ
４０４  入出力プロセッサ機能
４１２  メッセージ・プロトコル
４１４  入出力オペレーティング・システム・サービス機能
５０８  ロード／ストア支援エンジン
６１２  ロード／ストア支援機能
６１７  ノード
【図１】
0004012338.tif 000002
【図２】
0004012338.tif 000003
【図３】
0004012338.tif 000004
【図４】
0004012338.tif 000005
【図５】
0004012338.tif 000006
【図６】
0004012338.tif 000007
【図７】
0004012338.tif 000008