(57)【特許請求の範囲】
【請求項１】
ホスト・バスと、
前記ホスト・バスに結合されたホスト・プロセッサと、入出力バスと、
前記入出力バスと前記ホスト・バスの間に結合され、前記ホスト・バスと前記入出力バスの間で情報を転送するために使用されるバス・ブリッジと、
前記入出力バスに結合され、第１の外部入出力システムと前記入出力バスの間のインタフェースをとる第１の入出力インタフェースと、
前記入出力バスに結合され、第２の外部入出力システムと前記入出力バスの間のインタフェースをとる第２の入出力インタフェースと、
前記入出力バスに接続された入出力プロセッサとを備え、前記入出力プロセッサはローカル・メモリに結合された組込みプロセッサを有し、前記入出力プロセッサは前記第１の入出力インタフェースを介してデータ・トランザクションを制御し、前記入出力プロセッサは前記第２の入出力インタフェースを介してデータ・トランザクションを制御し、前記ローカル・メモリは前記第１の入出力インタフェースを介したデータ・トランザクションと前記第２の入出力インタフェースを介したデータ・トランザクションのために一時記憶域を提供する、
コンピュータ・システム。
【請求項２】
前記第１の入出力インタフェースと前記第２の入出力インタフェースの間の第１のデータ転送が、前記ホスト・プロセッサと前記組込みプロセッサの間で転送される制御情報によってセット・アップされること
を特徴とする請求項１に記載のコンピュータ・システム。
【請求項３】
前記コンピュータ・システムのためのメイン・メモリが、
前記ホスト・バスに結合された第１のメイン・メモリ・セグメントと、
前記ローカル・メモリの一部である第２のメイン・メモリ・セグメントと
を有し、
前記第１のメイン・メモリ・セグメントと前記第２のメイン・メモリ・セグメントとが前記ホスト・プロセッサには単一の論理メモリ・イメージとして見えるように構成されていることを特徴とする前記コンピュータ・システムのための前記メイン・メモリ
を有する請求項１に記載のコンピュータ・システム。
【請求項４】
前記第１の入出力インタフェースと前記第２の入出力インタフェースの間の第１のデータ転送が、前記ホスト・プロセッサと前記組込みプロセッサの間で転送される制御情報によってセット・アップされること
を特徴とする請求項３に記載のコンピュータ・システム。
【請求項５】
第２の入出力バスと、第２の入出力バスと前記ホスト・バスの間に結合され、前記ホスト・バスと前記第２の入出力バスの間で情報を転送するために使用される第２のバス・ブリッジと、
前記第２の入出力バスに結合され、第３の外部入出力システムと前記第２の入出力バスの間のインタフェースをとる第３の入出力インタフェースと
を備え、
前記入出力プロセッサが前記第２の入出力バスにも結合され、前記入出力プロセッサは前記第３の入出力インタフェースを介してデータ・トランザクションを制御し、前記ローカル・メモリは前記第３の入出力インタフェースを介したデータ・トランザクションのために一時記憶域を提供すること
を特徴とする請求項１に記載のコンピュータ・システム。
【請求項６】
前記第１の入出力インタフェースと前記第３の入出力インタフェースの間の第１のデータ転送が、前記ホスト・プロセッサと前記組込みプロセッサの間で転送される制御情報によってセット・アップされること
を特徴とする請求項５に記載のコンピュータ・システム。
【請求項７】
前記コンピュータ・システムのためのメイン・メモリが、
前記ホスト・バスに結合された第１のメイン・メモリ・セグメントと、
前記ローカル・メモリの一部である第２のメイン・メモリ・セグメントと
を有し、
前記前記第１のメイン・メモリ・セグメントと前記第２のメイン・メモリ・セグメントとが前記ホスト・プロセッサには単一の論理メモリ・イメージとして見えるように構成されていることを特徴とする前記コンピュータ・システムのためのメイン・メモリ
を備える請求項５に記載のコンピュータ・システム。
【請求項８】
前記入出力バスがＰＣＩバス標準に従って動作すること
を特徴とする請求項１に記載のコンピュータ・システム。
【請求項９】
コンピュータ・システムにおいて、入出力バスを介したデータ転送を制御する方法であって、
（ａ）前記入出力バスに接続された複数の入出力インタフェースのうちの１つと入出力プロセッサ内のローカル・メモリとの間のデータ転送が、前記入出力プロセッサとホスト・バスに接続されたホスト・プロセッサとの間で送信される制御情報によってセット・アップされるようにし、制御情報が前記入出力バスと前記ホスト・バスの間に接続されたバス・ブリッジを通るようにして、前記入出力バスを介して行うすべてのデータ転送を前記入出力プロセッサを使用してセット・アップするステップと、
（ｂ）前記ステップ（ａ）でセット・アップされた各データ転送中に、前記入出力バスを介して前記複数の入出力インタフェースのうちの１つと前記入出力プロセッサ内の前記ローカル・メモリの間でデータを転送するステップと
を有する方法。
【請求項１０】
コンピュータ・システムにおいて、第１の入出力バスと第２の入出力バスを介したデータ転送を制御する方法であって、
（ａ）前記第１の入出力バスに接続された第１の複数の入出力インタフェースのうちの１つと入出力プロセッサ内のローカル・メモリの間のデータ転送が、前記入出力プロセッサとホスト・バスに接続されたホスト・プロセッサとの間で送信される制御情報によってセット・アップされるようにし、制御情報が前記第１の入出力バスと前記ホスト・バスの間に接続されたバス・ブリッジを通るようにして、前記第１の入出力バスを介して行われるすべてのデータ転送を前記入出力プロセッサを使用してセット・アップするステップと、
（ｂ）前記第２の入出力バスに接続された第２の複数の入出力インタフェースのうちの１つと前記入出力プロセッサ内の前記ローカル・メモリの間のデータ転送が、前記入出力プロセッサと前記ホスト・バスに接続された前記ホスト・プロセッサの間で送信される制御情報によってセット・アップされるようにして、前記第２の入出力バスを介して行われるすべてのデータ転送を入出力プロセッサを使用してセット・アップするステップと、
（ｃ）前記ステップ（ａ）でセット・アップされた各データ転送中に、前記第１の複数の入出力インタフェースのうちの１つと前記入出力プロセッサ内の前記ローカル・メモリとの間で前記第１の入出力バスを介してデータを転送するステップと、
（ｄ）前記ステップ（ｂ）でセット・アップされた各データ転送中に、前記第２の複数の入出力インタフェースのうちの１つと前記入出力プロセッサ内の前記ローカル・メモリとの間で前記第２の入出力バスを介してデータを転送するステップと
を有する方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、入出力（Ｉ／Ｏ）バスを備えたコンピュータ・システムに関し、具体的には処理資源およびメモリ資源を共有する複数の入出力装置に係わる。
【０００２】
【従来の技術】
ネットワーク・サーバとして機能するコンピュータ・システムでは、ホスト（プロセッサ／メモリ）バスによって相互接続された複数の中央処理装置（ＣＰＵまたはプロセッサ）を使用することがますます一般的になっている。このようなシステムでは、システム用のメイン・メモリもホスト・バスに接続されている。Ｉ／Ｏ装置との通信は、一般に、バス・ブリッジを介してホスト・バスに接続されたＩ／Ｏバスを介して行われる。
【０００３】
たとえばネットワークまたは大容量記憶装置などの外部入出力システムをコンピュータ・システムに接続するには、一般にＩ／Ｏ装置を使用する。各Ｉ／Ｏ装置は通常、専用プロセッサとローカル・メモリを備える。ローカル・メモリは、外部Ｉ／Ｏシステムとの間で送受信するデータを一時的に記憶するために使用される。外部Ｉ／Ｏシステム・インタフェースが一般に外部Ｉ／Ｏシステムとローカル・メモリとの間のデータ転送を制御する。専用プロセッサは、ローカル・メモリとＩ／Ｏバスとの間のデータ転送を制御するために使用される。
【０００４】
正常に機能するためには、バス・ブリッジがホスト・バスとＩ／Ｏバスの両方のすべての機能を実現する必要がある。さらに、バス・ブリッジは、パフォーマンス低下を防ぐために、ホスト・バスでのデータ転送を十分な帯域幅で行う必要がある。
【０００５】
一部のＩ／Ｏバスは、データ・トランザクションがアトミックであることを必要とする。すなわち、アトミック・データ・トランザクション中は、他のトランザクションを「ロック・アウト」する必要がある。このようなＩ／Ｏバスとインタフェースするバス・ブリッジは、この機能を実現することができなければならない。しかし、バス・ブリッジがアトミック・トランザクションを実行すると、それによってシステム・パフォーマンスが低下する。
【０００６】
【発明が解決しようとする課題】
システム内に、ホスト・バスを介したメモリへのアクセスをめぐってバス・ブリッジと競合する複数のプロセッサがある場合、それによってバス・ブリッジのメイン・メモリへのアクセスが低速になることがあり、したがって、システム入出力に重大なボトルネックが生ずる可能性がある。
【０００７】
【課題を解決するための手段】
本発明の実施例によると、入出力プロセッサが、いくつかの入出力インタフェースによって共有される資源を提供するコンピュータ・システムが提供される。本発明は、ホスト・バスと入出力バスの両方を備えるコンピュータ・システムで使用される。ホスト・バスには１つまたは複数のホスト・プロセッサが接続されている。バス・ブリッジによって入出力バスがホスト・バスに接続される。バス・ブリッジは、ホスト・バスと入出力バスの間で情報を転送するために使用される。第１の入出力インタフェースが、第１の外部入出力システムと入出力バスとのインタフェースをとる。第２の入出力インタフェースが、第２の外部入出力システムと入出力バスとのインタフェースをとる。入出力バスにも接続されている入出力プロセッサには、ローカル・メモリに接続された組込みプロセッサが組み込まれている。入出力プロセッサは、第１の入出力インタフェースを介してデータ・トランザクションを制御し、第２の入出力インタフェースを介してデータ・トランザクションを制御する。ローカル・メモリは、第１の入出力インタフェースを介したデータ・トランザクションと、第２の入出力インタフェースを介したデータ・トランザクションのために一時記憶域を提供する。
【０００８】
好ましい実施例では、入出力バスに接続された入出力インタフェースを必要とするデータ転送は、ホスト・プロセッサと組込みプロセッサとの間で転送される制御情報によってセット・アップされる。データ転送中は、転送データのための一時記憶域がローカル・メモリによって提供される。
【０００９】
本発明の１つの実施例では、コンピュータ・システムのためのホスト・メイン・メモリは、以下のようにセグメント化される。第１のメイン・メモリ・セグメントはホスト・バスに接続されている。第２のメイン・メモリ・セグメントは入出力プロセッサ内のローカル・メモリの一部である。第１のメイン・メモリ・セグメントと第２のメイン・メモリ・セグメントとは、プロセッサには単一の論理メモリ・イメージとして見えるように構成されている。これは、第１のメイン・メモリ・セグメントと第２のメイン・メモリ・セグメントの両方が、オペレーティング・システム・ソフトウェアによって、両方ともメイン・メモリの一部であるかのようにアドレス指定され、管理されるという意味である。オペレーティング・システム・ソフトウェアから見ると、第１のメイン・メモリ・セグメントと第２のメイン・メモリ・セグメントの唯一の相違は、それぞれに割り当てられたアドレスの範囲である。
【００１０】
このセグメント化されたメイン・メモリを使用して、コンピュータ・システムのデータ経路が簡素化される。たとえば、第１の入出力インタフェースと第２の入出力インタフェースの間のデータ転送はプロセッサによって制御される。しかし、第１のデータ転送時にデータ自体は第２のメイン・メモリ・セグメントに一時的に記憶される。これによって、バス・ブリッジを介して制御情報が流れるだけでデータ転送が行われる。実際のデータは、第２のメイン・メモリ・セグメントと第１の入出力インタフェースの間と、第２のメイン・メモリ・セグメントと第２の入出力インタフェースの間で、入出力バスでのみ移送される。
【００１１】
本発明は、複数の入出力バスがある場合にも使用することができる。たとえば、前述のコンピュータ・システムは、第２の入出力バスと、第２の入出力バスとホスト・バスの間に接続された第２のバス・ブリッジとを備えることができる。第２のバス・ブリッジは、ホスト・バスと第２の入出力バスの間で情報を転送するために使用される。入出力プロセッサは、第１の入出力バスに接続されているほかに、第２の入出力バスにも接続されている。したがって、第１の入出力バスまたは第２の入出力バスに接続されている入出力インタフェースを必要とするデータ転送は、ホスト・プロセッサと組込みプロセッサの間で転送される制御情報によってセット・アップされる。データ転送中、転送データの一時記憶域がローカル・メモリによって提供される。
【００１２】
本発明にはいくつかの重要な利点がある。たとえば、別個の入出力プロセッサの使用によって入出力バスに接続する入出力ボードの設計を格段に簡略化することができる。入出力プロセッサによって処理能力とローカル記憶域が提供されるため、その機能をすべての入出力ボードに設ける必要がなくなる。入出力バスに十分な帯域幅があり、入出力プロセッサに十分な処理能力と記憶空間があることを前提とすれば、これによってシステム・パフォーマンスが低下することはない。
【００１３】
さらに、前述のようにホスト・メイン・メモリをセグメント化すれば、それによってホスト（プロセッサ）バス上の通信量を大幅に減少させることができる。これは、ホスト・バスが、メイン・メモリへのアクセスをメイン・プロセッサと競合するバス・マスタを備えている場合に特に重要である。マルチプロセッサ環境では競合はさらに激しくなるが、それは追加のＣＰＵからの増加する通信量のためばかりではなく、パフォーマンスを低下させることなくホスト・バス上に配置することができるＣＰＵの数に上限を設けることになるキャッシュ・コヒーレンス・プロトコルにもよる。
【００１４】
【実施例】
図１に、バス・ブリッジ１４を介してＩ／Ｏ（入出力）バス２０に接続されたホスト・バス１０を使用する従来のコンピュータ・システムを示す。ホスト・バス１０上には、中央処理装置（ＣＰＵ）１１および１２、およびメイン・メモリ１３が接続されている。システム構成によっては、ホスト・バス１０には他のプロセッサまたは装置あるいはその両方も接続することができる。Ｉ／Ｏバス２０には様々なＩ／Ｏ（入出力）装置が接続されている。たとえば、Ｉ／Ｏ装置２１を介してネットワーク２６がＩ／Ｏバス２０に接続されている。同様に、Ｉ／Ｏ装置２２を介してシステム大容量記憶装置１６がＩ／Ｏバス２０に接続されている。
【００１５】
Ｉ／Ｏ装置２１は、図のように内部バス１７に接続されたネットワーク・インタフェース２５、ローカル・メモリ２４、および組込みプロセッサ２３を含む。Ｉ／Ｏ装置２２は、図のように内部バス１８に接続された大容量記憶装置インタフェース２９、ローカル・メモリ２８、および組込みプロセッサ２７を含む。
【００１６】
図１に示すような、ネットワーク・サーバとして機能する従来の技術のシステムの場合、ネットワーク２６からデータを受信するときの典型的なデータ経路は、ネットワーク・インタフェース２５を介し、ローカル・メモリ２４に一時的に記憶してから、バス・ブリッジ１４を介してメイン・メモリ１３に移送するという経路である。データの最終的な送り先が大容量記憶装置１６の場合、データは次にメイン・メモリ１３からバス・ブリッジ１４を介して移送され、ローカル・メモリ２８に一時的に記憶される。次にデータは大容量記憶装置インタフェース２９を介して、大容量記憶装置１６に送られる。典型的なファイル／プリント・サーバ環境では、プロセッサ１１および１２は一般にデータ自体にはアクセスする必要がないことに留意されたい。プロセッサ１１および１２は、単にデータがどこから来てどこへ行くかを決定する制御構造となるに過ぎない。
【００１７】
図２に、本発明の好ましい実施例による、バス・ブリッジ３４を介してＩ／Ｏバス４０に接続されたホスト・バス３０を使用するコンピュータ・システムを示す。ホスト・バス３０には、中央処理装置（ＣＰＵ）３１および３２、およびメイン・メモリ３３が接続されている。システム構成によっては、ホスト・バス３０にはその他のプロセッサも接続することができる。Ｉ／Ｏバス４０には様々なＩ／Ｏ装置が接続されている。たとえば、ネットワーク・インタフェース４１を介してネットワーク４６がバス４０に接続されている。同様に、大容量記憶装置インタフェース４２を介してシステム大容量記憶装置４７がバス４０に接続されている。さらに、Ｉ／Ｏ（入出力）プロセッサ４３がＩ／Ｏバス４０に接続されている。
【００１８】
ホスト・バス３０は、たとえば６４ビット幅で、たとえばＸＸＰＲＥＳＳバス標準、Ｐ−６バス標準、または他の何らかのホスト・バス標準に従って動作する。ＣＰＵ３１は、たとえばペンティアム(Pentium)・プロセッサ、Ｐ−６(Pentium Pro) プロセッサ、またはその他のプロセッサである。ペンティアム・プロセッサ、Ｐ−６プロセッサ、およびそれぞれのホスト・バスに関する情報は、米国９５０５０カリフォルニア州サンタクララ、ミッション・カレッジ・ブールバード２２００を所在地とするインテル・コーポレイションから入手することができる。
【００１９】
ＣＰＵ３２はたとえばペンティアム・プロセッサ、Ｐ−６プロセッサ、またはその他の何らかのプロセッサである。メイン・メモリ・セグメント３３は、たとえばＳＩＭＭを使用して実現され、１０２４メガバイトまで拡張可能である。
【００２０】
Ｉ／Ｏバス４０は、たとえば３２ビット幅であって、ＰＣＩ２．１仕様で規定されている周辺装置インタフェース（ＰＣＩ）バス標準に従って動作する。ネットワーク４６は、たとえばＩＥＥＥ８０２．３標準で規定されているイーサネット・プロトコルに従って動作する。大容量記憶装置４７は、たとえば１つまたは複数の市販ハード・ディスク・ドライブを使用して実現される。メイン・メモリ・セグメント４９は、たとえばＳＩＭＭを使用して実現され、２５６メガバイトまで拡張可能である。
【００２１】
Ｉ／Ｏプロセッサ４３は、組込みプロセッサ４４と共有メモリ４５を備える。Ｉ／Ｏプロセッサは、Ｉ／Ｏバス４０に接続されている他の要素の共有資源として機能する。図２に図示するコンピュータ・システムでは、ネットワーク４６からデータを受信したときの典型的なデータ経路は、データをネットワーク・インタフェース４１を介し、Ｉ／Ｏバス４０を介して送り、共有メモリ４５に一時的に記憶するという経路である。データは次にバス・ブリッジ３４を介してメイン・メモリ３３に移送される。データの最終的な送り先が大容量記憶装置４７の場合、データは次にメイン・メモリ３３からバス・ブリッジ３４を介して移送され、共有メモリ４５に一時記憶される。次にデータは大容量記憶装置インタフェース４２を介して大容量記憶装置４７に送られる。
【００２２】
好ましい実施例では、Ｉ／Ｏプロセッサ４３がネットワーク・インタフェース４１および大容量記憶装置インタフェース４２との低水準プログラミング・インタラクションを処理する。たとえば、このような低水準プログラミング・インタラクションには、データ完了、再試行、エラー条件などの場合の割込みの処理が含まれる。低水準プログラミング・インタラクションには、たとえば、ネットワーク・インタフェース４１または大容量記憶装置インタフェース４２内のレジスタの読み取り、レジスタへの書込み、レジスタ内の状況ビットの検査など、ネットワーク・インタフェース４１および大容量記憶装置インタフェース４２とのレジスタ・レベルのインタラクションも含まれる。
【００２３】
典型的なファイル／プリンタ・サーバ環境では、プロセッサ（ＣＰＵ）３１および３２は一般にこのデータ自体にはアクセスする必要がないことに留意されたい。プロセッサ３１および３２は、単にデータがどこから来てどこへ行くかを決定する制御構造となるにすぎない。
【００２４】
したがって、様々な適用例について、バス・ブリッジ３４を介してデータを転送しなくても済むように、図２に示すコンピュータ・システムを変更することが望ましい。それによって、ホスト・バス３０の帯域が大幅に節約されることになる。そのようなコンピュータ・システムを図３に示す。図３では、メイン・メモリ３３がホスト・バス３０上のメモリ・セグメント３５とＩ／Ｏバス４０上のメイン・メモリ・セグメント４９とによって置き換えられている。たとえば、Ｉ／Ｏプロセッサ４３内のメモリの大半をメイン・メモリ・セグメント４９として使用する。Ｉ／Ｏプロセッサ内の残りのメモリは、組込みプロセッサ４４用のローカル・メモリ４５として使用される。
【００２５】
たとえば、図３に示すようにメイン・メモリ・アドレス空間５０のメモリ・アドレス・セグメント５１をメイン・メモリ・セグメント３５に割り振る。メイン・メモリ・アドレス空間５０のメモリ・アドレス・セグメント５２をメイン・メモリ・セグメント４９に割り振る。メモリ・アドレス・セグメント５１とメモリ・アドレス・セグメント５２が連続していることは必要条件ではなく、オペレーティング・システム・ソフトウェアによって両者があたかもメイン・メモリの一部であるかのようにアドレス指定され、管理されることが必要であるに過ぎない。たとえば、メイン・メモリ・アドレス・セグメント５１にはアドレス０16から２ＦＦＦＦＦＦＦ16までを割り振る。メイン・メモリ・アドレス・セグメント５２には、アドレス４０００００００16から４ＦＦＦＦＦＦＦ16までを割り振る。
【００２６】
ホスト・バス３０とＩ／Ｏバス４０は両方とも３２ビット・アドレスを使用する。アドレス空間はホスト・バス３０でもＩ／Ｏバス４０でも同じであり、バス・ブリッジ３０が行う必要のあるアドレス変換はない。
【００２７】
図３に示すコンピュータ・システムは、たとえば、米国９８０７３−９７１７ワシントン州レドモンド、ノースイースト３６ウェイ１６０１１を所在地とするマイクロソフト・コーポレイションから市販されているウィンドウズＮＴ(Windows NT)オペレーティング・システム・ソフトウェア、または米国９４６０１ユタ州プロボ、イースト１７００サウス１２２を所在地とするノベル・インコーポレイテッドから市販されているネットウェア(Netware)オペレーティング・システム・ソフトウェアに従って動作する。ＵＮＩＸオペレーティング・システム・ソフトウェアなど、他のオペレーティング・システムも使用することができる。メイン・メモリ・セグメント３５およびメイン・メモリ・セグメント４９は、物理的には別々であるが、単一の論理メモリ・イメージとして構成される。これは、オペレーティング・システム・ソフトウェアを変更することなく行うことができる。したがって、データの格納場所がメイン・メモリ・セグメント３５とメイン・メモリ・セグメント４９のどちらであるかは、データのメイン・メモリ・アドレスによって判断することができる。
【００２８】
メイン・メモリが２つのセグメントに物理的に分割されていることによって、オペレーティング・システム・ソフトウェアに変更を加えることなく、ホスト・バス３０上のデータ通信量を減少させることができる。
【００２９】
たとえば、ネットワーク・インタフェース４１を介したネットワーク４６からのデータの受信と大容量記憶装置４７へのデータの格納は、通常、２段階で実行される。第１段階では、ネットワーク・インタフェース４１を介してネットワーク４６からデータを受信し、メイン・メモリに格納する。第２段階では、そのデータをメイン・メモリから大容量記憶装置インタフェース４２を介して大容量記憶装置４７に転送する。
【００３０】
データ転送のセットアップ時には、制御情報がバス・ブリッジ３４を通って流れる。たとえば、ＣＰＵ３１とＣＰＵ３２のいずれ一方がデータ転送をセットアップする。このデータ・セットアップ中、データ転送に関する制御情報がバス・ブリッジ３４を通って流れることになる。しかし、データ転送をセットアップするとき、担当プロセッサがメイン・メモリ・セグメント４９内のアドレス可能メモリをそのデータ・トランザクションのためのデータの一時記憶域として指定する。
【００３１】
ネットワーク４６からネットワーク・インタフェース４１を介して転送データを受信すると、転送データはメイン・メモリ・セグメント４９に格納される。転送データは次にメイン・メモリ・セグメント４９から大容量記憶装置インタフェース４２を介して大容量記憶装置４７に転送される。これでわかるように、このデータ転送のためのメイン・メモリ・セグメント４９の使用によってバス・ブリッジ３４を通る通信量が減少した。バス・ブリッジ３４を通って流れたのは制御情報だけである。データ転送はすべて、Ｉ／Ｏバス４０のみを使用して行われた。
【００３２】
本発明の１つの大きな利点はオペレーティング・システム・ソフトウェアに変更を加えることなく、パフォーマンスを大幅に向上させることができることであるが、オペレーティング・システムがメイン・メモリの区画化を認識し、データ経路の簡素化と短縮に積極的な役割を果たすように、オペレーティング・システム内のコードを修正することによって、より大きなレベルのパフォーマンス向上を実現することができる。
【００３３】
さらに、図３の実施例は単一のＩ／Ｏバスを有するシステムで実現された本発明を示しているが、本発明の原理は多くのシステム構成に及ぶ。
【００３４】
たとえば図４に、他の好ましい実施例において、バス・ブリッジ１０４を介してＩ／Ｏバス１１０に接続され、バス・ブリッジ１０５を介してＩ／Ｏバス１２０にも接続されているホスト・バス１００を使用するコンピュータ・システムを示す。ホスト・バス１００にはプロセッサ（中央処理装置）１０１、プロセッサ１０２、およびメイン・メモリ・セグメント１０３が接続されている。システム構成によっては、ホスト・バス１００には他のプロセッサも接続することができる。Ｉ／Ｏバス１１０には様々なＩ／Ｏインタフェースが接続されている。たとえば、Ｉ／Ｏインタフェース１１１およびＩ／Ｏインタフェース１１２がＩ／Ｏバス１１０に接続されている。Ｉ／Ｏバス１１０にはＩ／Ｏプロセッサ１１３も接続されている。同様に、Ｉ／Ｏバス１２０には様々なＩ／Ｏインタフェースが接続されている。たとえば、Ｉ／Ｏインタフェース１２１およびＩ／Ｏインタフェース１２２がＩ／Ｏバス１２０に接続されている。Ｉ／Ｏプロセッサ１１３もＩ／Ｏバス１２０に接続されている。
【００３５】
Ｉ／Ｏプロセッサ１１３は組込みプロセッサ１２４を備える。Ｉ／Ｏプロセッサは、組込みプロセッサ１２４用のローカル・メモリ１２５と、メイン・メモリ・セグメント１２９も備える。メイン・メモリ・セグメント１２９には、Ｉ／Ｏバス１１０とＩ／Ｏバス１２０の両方からアクセスすることができる。
【００３６】
Ｉ／Ｏインタフェース間でデータ転送を行うときには、制御情報の流れはバス・ブリッジ１０４およびバス・ブリッジ１０５を通ってプロセッサ１０１またはプロセッサ１０２あるいはその両方に進む。２つのＩ／Ｏインタフェース間のデータ転送をセットアップするとき、担当プロセッサであるプロセッサ１０１または１０２あるいはその両方が、最終送り先に最も近いメモリ・セグメントにデータが格納されるように調整する。図４のアーキテクチャは、一方のＩ／Ｏバスに接続された場所からデータを受信し、他方のＩ／Ｏバスに接続された場所に転送する場合に、特に有利である。したがって、Ｉ／Ｏインタフェース１２２とＩ／Ｏインタフェース１１２の間のデータ転送の場合は、ホスト・バス１００でデータを転送する必要がないようにメイン・メモリ・セグメント１２９を使用する。これによって、バス間通信量、ホスト・バスとＩ／Ｏバスの両方の合計待ち時間、およびＩ／Ｏインタフェースの機能停止の可能性が減少する。
【００３７】
図５は、Ｉ／Ｏプロセッサ１１３の実施例を示すブロック図である。Ｉ／Ｏプロセッサ１１３は、ローカル・プロセッサ７２、フラッシュ・メモリ７３、メモリ制御装置７４、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）７５、Ｉ／Ｏブリッジ７６、Ｉ／Ｏブリッジ７８、ＵＡＲＴ(Universal Asynchronous Receiver/Transmitter)７１、および調停とその他の論理回路７７を備え、それらのすべてが図のようにローカル・バス７０に接続されている。ローカル・プロセッサ７２は、たとえば、米国９５０５０カリフォルニア州サンタクララ、ミッション・カレッジ・ブールバード２２００を所在地とするインテル・コーポレイションから市販されているｉ９６０ＪＦプロセッサである。ローカル・バス７０は３２ビット幅で、ｉ９６０バス標準に従って動作する。フラッシュ・メモリ７３は、たとえば２５６キロバイトであり、プロセッサ７２のプログラミング・コードを格納するために使用される。ＤＲＡＭメモリ７５は、たとえば２５６メガバイトである。前述のように、ＤＲＡＭメモリ７２の一部は、プロセッサ７２によってローカル・メモリとして使用され、ＤＲＡＭメモリ７２の一部はホスト・メイン・メモリのセグメントとして使用される。メモリ制御装置７４がフラッシュ・メモリ７３とＤＲＡＭメモリ７５に制御信号を供給する。Ｉ／Ｏブリッジ７６およびＩ／Ｏブリッジ７８は、米国９４０４３カリフォルニア州マウンテンビュー、クライドアベニュー６２５を所在地とするＰＬＸテクノロジーズ・インコーポレイテッドから市販されているｉ９６０／ＰＣＩブリッジ集積回路を使用して実現される。Ｉ／Ｏブリッジ７６からＩ／Ｏバスへの接続は線６１によって表されている。Ｉ／Ｏブリッジ７８からＩ／Ｏバスへの接続は線６２によって表されている。調停その他の論理回路は、ローカル・バス７０へのアクセスを調停する。ＵＡＲＴ７１は、Ｉ／Ｏプロセッサ１１３のテストとサービスのために使用されるＩ／Ｏプロセッサ１１３への直列接続６３を実現する。
【００３８】
以上の説明では、単に本発明の例示的な方法と実施例を開示し、説明したに過ぎない。当業者なら、本発明の本質的な特徴から逸脱することなく本発明を他の特定の形態でも実施することができることを理解されよう。したがって、本発明の開示は例示的なものであって本発明の範囲を限定することを意図したものではなく、本発明の範囲は特許請求の範囲に記載されている。
【００３９】
以上、本発明の実施例について詳述したが、以下、本発明の各実施態様の例を示す。
【００４０】
（実施態様１）
ホスト・バスと、
前記ホスト・バスに結合されたホスト・プロセッサと、
入出力バスと、
前記入出力バスと前記ホスト・バスの間に結合され、前記ホスト・バスと前記入出力バスの間で情報を転送するために使用されるバス・ブリッジと、
前記入出力バスに結合され、第１の外部入出力システムと前記入出力バスの間のインタフェースをとる第１の入出力インタフェースと、
前記入出力バスに結合され、第２の外部入出力システムと前記入出力バスの間のインタフェースをとる第２の入出力インタフェースと、
前記入出力バスに接続された入出力プロセッサとを備え、前記入出力プロセッサはローカル・メモリに結合された組込みプロセッサを有し、前記入出力プロセッサは前記第１の入出力インタフェースを介してデータ・トランザクションを制御し、前記入出力プロセッサは前記第２の入出力インタフェースを介してデータ・トランザクションを制御し、前記ローカル・メモリは前記第１の入出力インタフェースを介したデータ・トランザクションと前記第２の入出力インタフェースを介したデータ・トランザクションのために一時記憶域を提供する、コンピュータ・システム。
【００４１】
（実施態様２）
前記第１の入出力インタフェースと前記第２の入出力インタフェースの間の第１のデータ転送が、前記ホスト・プロセッサと前記組込みプロセッサの間で転送される制御情報によってセット・アップされることを特徴とする、実施態様１に記載のコンピュータ・システム。
【００４２】
（実施態様３）
第１のデータ転送中に、転送データが前記ローカル・メモリに格納されることを特徴とする、実施態様２に記載のコンピュータ・システム。
【００４３】
（実施態様４）
前記コンピュータ・システムのためのメイン・メモリが、
前記ホスト・バスに結合された第１のメイン・メモリ・セグメントと、
前記ローカル・メモリの一部である第２のメイン・メモリ・セグメントとを有し、前記第１のメイン・メモリ・セグメントと前記第２のメイン・メモリ・セグメントとが前記ホスト・プロセッサには単一の論理メモリ・イメージとして見えるように構成されていることを特徴とする、前記コンピュータ・システムのための前記メイン・メモリを有する、実施態様１に記載のコンピュータ・システム。
【００４４】
（実施態様５）
前記第１の入出力インタフェースと前記第２の入出力インタフェースの間の第１のデータ転送が、前記ホスト・プロセッサと前記組込みプロセッサの間で転送される制御情報によってセット・アップされることを特徴とする、実施態様４に記載のコンピュータ・システム。
【００４５】
（実施態様６）
前記第１のデータ転送中に、転送データが前記ローカル・メモリに格納されることを特徴とする、実施態様２に記載のコンピュータ・システム。
【００４６】
（実施態様７）
第２の入出力バスと、
第２の入出力バスと前記ホスト・バスの間に結合され、前記ホスト・バスと前記第２の入出力バスの間で情報を転送するために使用される第２のバス・ブリッジと、
前記第２の入出力バスに結合され、第３の外部入出力システムと前記第２の入出力バスの間のインタフェースをとる第３の入出力インタフェースとを備え、
前記入出力プロセッサが前記第２の入出力バスにも結合され、前記入出力プロセッサは前記第３の入出力インタフェースを介してデータ・トランザクションを制御し、前記ローカル・メモリは前記第３の入出力インタフェースを介したデータ・トランザクションのために一時記憶域を提供することを特徴とする、実施態様１に記載のコンピュータ・システム。
【００４７】
（実施態様８）
前記第１の入出力インタフェースと前記第３の入出力インタフェースの間の第１のデータ転送が、前記ホスト・プロセッサと前記組込みプロセッサの間で転送される制御情報によってセット・アップされることを特徴とする、実施態様７に記載のコンピュータ・システム。
【００４８】
（実施態様９）
前記第１のデータ転送中に転送データが前記ローカル・メモリに格納されることを特徴とする、実施態様８に記載のコンピュータ・システム。
【００４９】
（実施態様１０）
前記コンピュータ・システムのためのメイン・メモリが、
前記ホスト・バスに結合された第１のメイン・メモリ・セグメントと、
前記ローカル・メモリの一部である第２のメイン・メモリ・セグメントとを有し、前記前記第１のメイン・メモリ・セグメントと前記第２のメイン・メモリ・セグメントとが前記ホスト・プロセッサには単一の論理メモリ・イメージとして見えるように構成されていることを特徴とする、前記コンピュータ・システムのためのメイン・メモリを備える、実施態様７に記載のコンピュータ・システム。
【００５０】
（実施態様１１）
前記入出力バスがＰＣＩバス標準に従って動作することを特徴とする、実施態様１に記載のコンピュータ・システム。
【００５１】
（実施態様１２）
コンピュータ・システムにおいて、入出力バスを介したデータ転送を制御する方法であって、
（ａ）前記入出力バスに接続された複数の入出力インタフェースのうちの１つと入出力プロセッサ内のローカル・メモリとの間のデータ転送が、前記入出力プロセッサとホスト・バスに接続されたホスト・プロセッサとの間で送信される制御情報によってセット・アップされるようにし、制御情報が前記入出力バスと前記ホスト・バスの間に接続されたバス・ブリッジを通るようにして、前記入出力バスを介して行うすべてのデータ転送を前記入出力プロセッサを使用してセット・アップするステップと、
（ｂ）前記ステップ（ａ）でセット・アップされた各データ転送中に、前記入出力バスを介して前記複数の入出力インタフェースのうちの１つと前記入出力プロセッサ内の前記ローカル・メモリの間でデータを転送するステップとを有する方法。
【００５２】
（実施態様１３）
前記ステップ（ａ）の前に、
（ｃ）前記ホスト・バスに接続された第１のメイン・メモリ・セグメントと前記ローカル・メモリ内の第２のメイン・メモリ・セグメントを、コンピュータ・システムのオペレーティング・システムには単一の論理メモリ・イメージとして見えるように構成するステップを
有する実施態様１２に記載の方法。
【００５３】
（実施態様１４）
前記ステップ（ａ）および前記ステップ（ｂ）において前記入出力バスがＰＣＩバス標準に従って動作することを特徴とする、実施態様１２に記載のコンピュータ・システム。
【００５４】
（実施態様１５）
コンピュータ・システムにおいて、第１の入出力バスと第２の入出力バスを介したデータ転送を制御する方法であって、
（ａ）前記第１の入出力バスに接続された第１の複数の入出力インタフェースのうちの１つと入出力プロセッサ内のローカル・メモリの間のデータ転送が、前記入出力プロセッサとホスト・バスに接続されたホスト・プロセッサとの間で送信される制御情報によってセット・アップされるようにし、制御情報が前記第１の入出力バスと前記ホスト・バスの間に接続されたバス・ブリッジを通るようにして、前記第１の入出力バスを介して行われるすべてのデータ転送を前記入出力プロセッサを使用してセット・アップするステップと、
（ｂ）前記第２の入出力バスに接続された第２の複数の入出力インタフェースのうちの１つと前記入出力プロセッサ内の前記ローカル・メモリの間のデータ転送が、前記入出力プロセッサと前記ホスト・バスに接続された前記ホスト・プロセッサの間で送信される制御情報によってセット・アップされるようにして、前記第２の入出力バスを介して行われるすべてのデータ転送を入出力プロセッサを使用してセット・アップするステップと、
（ｃ）前記ステップ（ａ）でセット・アップされた各データ転送中に、前記第１の複数の入出力インタフェースのうちの１つと前記入出力プロセッサ内の前記ローカル・メモリとの間で前記第１の入出力バスを介してデータを転送するステップと、
（ｄ）前記ステップ（ｂ）でセット・アップされた各データ転送中に、前記第２の複数の入出力インタフェースのうちの１つと前記入出力プロセッサ内の前記ローカル・メモリとの間で前記第２の入出力バスを介してデータを転送するステップとを有する方法。
【００５５】
（実施態様１６）
前記ステップ（ａ）の前に、
（ｅ）前記ホスト・バスに接続された第１のメイン・メモリ・セグメントと前記ローカル・メモリ内の第２のメイン・メモリ・セグメントとがコンピュータ・システムのオペレーティング・システムには単一の論理メモリ・イメージとして見えるように構成するステップを有する、実施態様１５に記載の方法。
【００５６】
（実施態様１７）
前記ステップ（ａ）ないし（ｄ）において前記第１の入出力バスと前記第２の入出力バスがＰＣＩバス標準に従って動作することを特徴とする、実施態様１５に記載のコンピュータ・システム。
【００５７】
【発明の効果】
以上のように、本発明を用いると、システム内に、ホスト・バスを介したメモリへのアクセスをめぐってバス・ブリッジと競合する複数のプロセッサがある場合、それによってバス・ブリッジのメイン・メモリへのアクセスが低速になることを、避けることができる。また、本発明により、入出力バスに接続する入出力ボードの設計を格段に簡略化することができ、開発コストの短縮と、製品コストの減少をもたらすことができる。
【図面の簡単な説明】
【図１】従来の技術による、バス・ブリッジを介してホスト・バスに接続され、様々なＩ／Ｏ装置に接続された入出力（Ｉ／Ｏ）バスを使用するコンピュータ・システムを示す図である。
【図２】本発明の好ましい実施例による、Ｉ／Ｏバス上に共有資源としてプロセッサと共有メモリが配置されたコンピュータ・システムを示す図である。
【図３】本発明の好ましい実施例による、Ｉ／Ｏバス上に共有資源としてプロセッサと共有メモリが配置され、ホスト・メイン・メモリがセグメント化されているコンピュータ・システムを示す図である。
【図４】本発明の好ましい実施例による、２本のＩ／Ｏバスの間に共有資源としてプロセッサと共有メモリが配置され、ホスト・メイン・メモリがセグメント化されているコンピュータ・システムを示す図である。
【図５】２本のＩ／Ｏバスによって共有される資源を含むＩ／Ｏプロセッサのブロック図である。
【符号の説明】
１０：ホスト・バス
１１、１２：中央処理装置
１３：メイン・メモリ
１４：バス・ブリッジ
１６：大容量記憶装置
１７、１８：内部バス
２０：Ｉ／Ｏバス
２１、２２：Ｉ／Ｏ装置
２３、２７：組込みプロセッサ
２４、２８：ローカル・メモリ
２５：ネットワーク・インターフェース
２６：ネットワーク
２８：ローカル・メモリ
２９：大容量記憶装置インターフェース
３０：ホスト・バス
３１、３２：中央処理装置
３３：メイン・メモリ
３４：バス・ブリッジ
３５、４９：メイン・メモリ・セグメント
４０：Ｉ／Ｏバス
４１：ネットワーク・インターフェース
４２：大容量記憶装置インターフェース
４３：Ｉ／Ｏプロセッサ
４４：組込みプロセッサ
４５：共有メモリ
４６：ネットワーク
４７：大容量記憶装置
５０：メイン・メモリ・アドレス空間
５１、５２：メモリ・アドレス・セグメント
７０：ローカル・バス
７１：ＵＡＲＴ
７２：ローカル・プロセッサ
７３：フラッシュ・メモリ
７４：メモリ制御装置
７５：ＤＲＡＭ
７６、７８：Ｉ／Ｏブリッジ
７７：調停とその他の論理回路
１００：ホスト・バス
１０１、１０２：プロセッサ
１０３、１２９：メイン・メモリ・セグメント
１０４、１０５：バス・ブリッジ
１１０、１２０：Ｉ／Ｏバス
１１１、１１２、１２１、１２２：Ｉ／Ｏインターフェース
１１３：Ｉ／Ｏプロセッサ
１２４：組込みプロセッサ
１２５：ローカル・メモリ
【図１】
0003669653.tif 000002
【図２】
0003669653.tif 000003
【図３】
0003669653.tif 000004
【図４】
0003669653.tif 000005
【図５】
0003669653.tif 000006