(57)【特許請求の範囲】
【請求項１】
所定の第１の規格のホスト・バスと、
ホスト・バスに結合されたプロセッサと、
前記第１の規格とは異なる第２の規格の入出力バスと、
前記入出力バスと前記ホスト・バスとの間に結合され、前記ホスト・バスと前記入出力バスとの間で情報を転送するために使用されるバス・ブリッジと、
コンピュータ・システム用のメイン・メモリと
を備え、
前記メイン・メモリが、前記ホスト・バスに結合された第１のメイン・メモリ・セグメントと、前記入出力バスに結合された第２のメイン・メモリ・セグメントと
を備え、
前記第１のメイン・メモリ・セグメントおよび前記第２のメイン・メモリ・セグメントが、前記プロセッサから単一の論理メモリ・イメージとして見えるように構成されること
を特徴とするコンピュータ・システム。
【請求項２】
前記入出力バスに結合された第１の入出力装置と、
前記入出力バスに結合された第２の入出力装置と
を有し、
前記第１の入出力装置と前記第２の入出力装置との間の第１のデータ転送が前記プロセッサによって制御され、前記第１のデータ転送時に、転送されたデータが前記第２のメイン・メモリ・セグメントに記憶されること
を特徴とする請求項１に記載のコンピュータ・システム。
【請求項３】
前記第２の規格の第２の入出力バスと、
第２の入出力バスと前記ホスト・バスとの間に結合され、前記ホスト・バスと第２の入出力バスとの間で情報を転送するために使用される第２のバス・ブリッジ
を備え、
前記メイン・メモリが、
前記第２の入出力バスに結合された第３のメイン・メモリ・セグメントをも
備え、
前記第１のメイン・メモリ・セグメント、前記第２のメイン・メモリ・セグメントおよび前記第３のメイン・メモリ・セグメントが、前記プロセッサから単一の論理メモリ・イメージとして見えるように構成されること
を特徴とする請求項２に記載のコンピュータ・システム。
【請求項４】
前記第２の入出力バスに結合された第３の入出力装置から前記第２の入出力装置への第３のデータ転送が前記プロセッサによって制御され、前記第３のデータ転送時に、転送されたデータが前記第２のメイン・メモリ・セグメントに記憶されること
を特徴とする請求項３に記載のコンピュータ・システム。
【請求項５】
前記入出力バスがＰＣＩバス規格に従って動作すること
を特徴とする請求項１に記載のコンピュータ・システム。
【請求項６】
前記第２の入出力バスと、
前記第２の入出力バスとホスト・バスとの間に結合され、前記ホスト・バスと前記第２の入出力バスとの間で情報を転送するために使用される第２のバス・ブリッジと
を備え、
前記第２のメイン・メモリ・セグメントが前記第２の入出力バスに結合されること
を特徴とする請求項３に記載のコンピュータ・システム。
【請求項７】
前記第２の入出力バスに結合された第３の入出力装置と、
前記第２の入出力バスに結合された第４の入出力装置と
を備え、
前記第３の入出力装置と前記第４の入出力装置との間の第２のデータ転送がプロセッサによって制御され、前記第２のデータ転送時に、転送されたデータが前記第２のメイン・メモリ・セグメントに記憶されること
を特徴とする請求項６に記載のコンピュータ・システム。
【請求項８】
前記第３の入出力装置から前記第２の入出力装置への第３のデータ転送が前記プロセッサによって制御され、前記第３のデータ転送時に、転送されたデータが前記第２のメイン・メモリ・セグメントに記憶されること
を特徴とする請求項７に記載のコンピュータ・システム。
【請求項９】
第１の規格のホスト・バスとは異なる第２の規格の第１の入出力バスに接続された第１の入出力装置から前記第１の入出力バスに接続された第２の入出力装置へのデータ転送を実行する方法であって、
（ａ）ホスト・バスに接続された第１のメイン・メモリ・セグメントおよび前記第１の入出力バスに接続された第２のメイン・メモリ・セグメントを、コンピュータ・システム用のオペレーティング・システムから単一の論理メモリ・イメージとして見えるように構成するステップと、
（ｂ）前記入出力バスと前記ホスト・バスとの間に接続されたバス・ブリッジを介して、第１の入出力装置と前記ホスト・バスに接続されたプロセッサとの間で制御情報を送るステップと、
（ｃ）前記入出力バスと前記ホスト・バスとの間に接続された前記バス・ブリッジを介さずに、前記第１の入出力装置から前記第２のメイン・メモリ・セグメントへデータを転送するステップと、
（ｄ）前記入出力バスと前記ホスト・バスとの間に接続された前記バス・ブリッジを介さずに、前記第２のメイン・メモリ・セグメントから第２の入出力装置へデータを転送するステップと
を有することを特徴とする方法。
【請求項１０】
入出力装置間のデータ転送を実行する方法であって、
（ａ）所定の第１の規格のホスト・バスに接続された第１のメイン・メモリ・セグメントおよび前記第１の規格とは異なる第２の規格の第１の入出力バスに接続された第２のメイン・メモリ・セグメントを、コンピュータ・システム用のオペレーティング・システムから単一の論理メモリ・イメージとして見えるように構成するステップと、
（ｂ）第１のデータ転送を実行するステップとして、
（ｂ．１）第１の制御情報を、前記第１の入出力バスとホスト・バスとの間に接続された第１のバス・ブリッジを介して、前記第１の入出力バスに接続された第１の入出力装置とホスト・バスに接続されたプロセッサとの間で送るサブステップと、
（ｂ．２）第１の入出力バスとホスト・バスとの間に接続された第１のバス・ブリッジを介さずに、第１の入出力装置から第２のメイン・メモリ・セグメントへデータを転送するサブステップと、
（ｂ．３）第１の入出力バスとホスト・バスとの間に接続された第１のバス・ブリッジを介さずに、第２のメイン・メモリ・セグメントから第１の入出力バスに接続された第２の入出力装置へデータを転送するサブステップと
を有することを特徴とする方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、入出力（Ｉ／Ｏ）バスを含むコンピュータ・システムに関し、詳細には、コンピュータ・システム中のデータ経路を合理化するようにメイン・メモリの複数セグメント化を行うことに関する。
【０００２】
【従来の技術】
ネットワーク・サーバとして働くコンピュータ・システムでは、ホスト（プロセッサ／メモリ）バスによって相互接続された複数の中央演算処理装置（ＣＰＵまたはプロセッサ）を使用することがますます一般的になっている。そのようなシステムでは、システム用のメイン・メモリもホスト・バスに接続される。入出力装置との通信は一般に、バス・ブリッジを通じてホスト・バスに接続されたＩ／Ｏバスを介して行われる。
【０００３】
マルチプロセッサ・システム中の入出力用のバス・ブリッジの動作では、かなりの量のホスト・バス帯域幅が使用される。バス・ブリッジは、ホスト・バスを介したデータ転送に必要な帯域幅だけでなく、ホスト・バスとＩ／Ｏバスの両方のすべての機能を実施する必要がある。
【０００４】
たとえば、１つまたは複数のプロセッサがキャッシュを使用するシステム中のメイン・メモリにバス・ブリッジがアクセスする際、メモリ内でアクセスされるデータの完全性を確保する措置を講じる必要がある。たとえば、バス・ブリッジがメイン・メモリのデータにアクセス（書込みまたは読取り）する際、そのデータの更新されたバージョンがシステム上のプロセッサのキャッシュに存在しているかどうかを判定することが重要である。データの更新バージョンが存在する場合、バス・ブリッジがその更新バージョンにアクセスするような措置を講じなければならない。メモリ参照時に確実にデータの更新バージョンが使用されるようにする操作を本明細書では、キャッシュ・コヒーレンス操作と呼ぶ。バス・ブリッジによってアクセスされるシステム・メモリのデータのコヒーレンスを確保するために様々な方式が使用されている。たとえば、ある種のシステムでは、入出力動作を実行する前にキャッシュがフラッシュされる。
【０００５】
同様に、ある種のＩ／Ｏバスでは、データ・トランザクションはアトミックである必要がある。すなわち、アトミック・データ・トランザクション中は他のトランザクションを「ロックアウト」する必要がある。そのようなＩ／Ｏバスとのインタフェースをとるバス・ブリッジは、この機能を実施できる必要がある。しかし、バス・ブリッジがアトミック・トランザクションを実行するとき、このためにシステム性能全体が低下する。
【０００６】
【発明が解決しようとする課題】
ホスト・バスを介したメモリへのアクセスを求めてバス・ブリッジと競合する複数のプロセッサがシステムにあるとき、このためにバス・ブリッジのメイン・メモリへのアクセスが低速になり、したがって、システム入出力の性能の顕著なボトルネックがもたらされる。
【０００７】
【課題を解決するための手段】
本発明の好ましい実施例によれば、Ｉ／Ｏ装置間のデータ・トランザクション用のデータ経路を合理化するようにメイン・メモリがセグメント化されるコンピュータ・システムが提供される。本発明は、ホスト・バスとＩ／Ｏバスの両方を含むコンピュータ・システムで使用される。１つまたは複数のプロセッサがホスト・バスに接続される。バス・ブリッジがＩ／Ｏバスをホスト・バスに接続する。バス・ブリッジは、ホスト・バスとＩ／Ｏバスとの間で情報を転送するために使用される。コンピュータ・システム用のメイン・メモリは下記のようにセグメント化される。第１のメイン・メモリ・セグメントはホスト・バスに接続される。第２のメイン・メモリ・セグメントはＩ／Ｏバスに接続される。第１のメイン・メモリ・セグメントおよび第２のメイン・メモリ・セグメントは、プロセッサから単一の論理メモリ・イメージとして見えるように構成される。これが意味することは、第１のメイン・メモリ・セグメントと第２のメイン・メモリ・セグメントが共に、メイン・メモリの一部である場合と同様にオペレーティング・システム・ソフトウェアによってアドレスされ管理されるということである。オペレーティング・システム・ソフトウェアの視点からは、第１のメイン・メモリ・セグメントと第２のメイン・メモリ・セグメントとの間の違いは、それぞれに割り当てられるアドレスの範囲である。
【０００８】
セグメント化されたメイン・メモリを使用して、コンピュータ・システム用のデータ経路が合理化される。たとえば、第１のＩ／Ｏ装置と第２のＩ／Ｏ装置との間のデータ転送は、プロセッサによって制御される。しかし、第１のデータ転送時に、データ自体は一時的に第２のメイン・メモリ・セグメントに記憶される。これによって、バス・ブリッジ内を制御情報のみが流れることによってデータ転送を行うことができる。実際のデータが転送されるのは、第２のメイン・メモリ・セグメントと第１のＩ／Ｏ装置との間、および第２のメイン・メモリ・セグメントと第２のＩ／Ｏ装置との間のＩ／Ｏバス上だけである。
【０００９】
本発明は、複数のＩ／Ｏバスがあるときに使用することもできる。たとえば、前述のコンピュータ・システムは、第２のＩ／Ｏバスと、第２のＩ／Ｏバスとホスト・バスとの間に接続された第２のバス・ブリッジとを含むことができる。第２のバス・ブリッジは、ホスト・バスと第２のＩ／Ｏバスとの間で情報を転送するために使用される。この場合、メイン・メモリは、第２のＩ／Ｏバスに接続された第３のメイン・メモリ・セグメントを含む。第１のメイン・メモリ・セグメント、第２のメイン・メモリ・セグメント、第３のメイン・メモリ・セグメントは、プロセッサから単一の論理メモリ・イメージとして見えるように構成される。
【００１０】
コンピュータ・システムのデータ経路を合理化するためにメイン・メモリの追加セグメントも使用される。たとえば、第３のＩ／Ｏ装置と第４のＩ／Ｏ装置との間のデータ転送はプロセッサによって制御される。しかし、第１のデータ転送時に、データ自体は一時的に第３のメイン・メモリ・セグメントに記憶される。これによって、第２のバス・ブリッジ内を制御情報のみが流れることによってデータ転送を行うことができる。実際のデータが転送されるのは、第３のメイン・メモリ・セグメントと第３のＩ／Ｏ装置との間、および第３のメイン・メモリ・セグメントと第４のＩ／Ｏ装置との間の第２のＩ／Ｏバス上だけである。
【００１１】
好ましい実施例では、一般的な規則は、データの最終宛先の最も近くにあるデータ・メモリ・セグメントにデータが記憶されることである。したがって、第３のＩ／Ｏ装置から第２のＩ／Ｏ装置への第３のデータ転送では、第３のデータ転送の対象であるデータは第２のメイン・メモリ・セグメントに記憶される。
【００１２】
本発明は、いくつかの重要な利点を有する。たとえば、本発明を使用すると、ホスト（プロセッサ）バス上のトラフィックが著しく低減する。これは、ホスト・バスが、メイン・メモリへのアクセスを求めてメイン・プロセッサと競合するバス・マスタを含む際に特に重要である。マルチプロセッサ環境では、追加ＣＰＵからのトラフィックが増大するためだけでなく、性能を低下させずにホスト・バス上に配置できるＣＰＵの数に強制的に上限を課す傾向があるキャッシュ・コヒーレンシ・プロトコルのために競合がずっと激しくなる。
【００１３】
本発明では、バス境界を横切るトラフィックの量を制限することによって並行性を向上させることもできる。マルチバス・アーキテクチャでは、バスは並行動作を実行することができ、あるバスから他のバスへ送られるデータの量を減少させ、実際には総バス使用率を低減させることによって、総システム・スループットを大幅に向上させることができる。
【００１４】
本発明では、データの最終宛先のできるだけ近くにデータを一時的に記憶することもできる。システムの視点からは、あるＩ／Ｏ装置から他のＩ／Ｏ装置へ転送されるデータをデータの最終宛先のできるだけ近くに配置すると、クロス・バス・トラフィックが減少され、総待ち時間が短縮され、Ｉ／Ｏ装置が停止する可能性が低減される。
【００１５】
最後に、本発明によって、既存のオペレーティング・システム・ソフトウェアを修正せずに従来型のコンピュータ・システムにすべてのこれらの利点が与えられる。
【００１６】
【実施例】
図１は、バス・ブリッジ１４を介してＩ／Ｏバス２０に接続されたホスト・バス１０を使用する従来のコンピュータ・システムを示す。ホスト・バス１０上に、中央演算処理装置（ＣＰＵ）１１および１２、メイン・メモリ１３が接続される。システム構成に応じて他のプロセッサまたは装置、あるいはその両方をホスト・バス１０に接続することもできる。様々なＩ／Ｏ装置がＩ／Ｏバス２０に接続される。たとえば、ネットワーク２６がネットワーク・インタフェース２１を介してＩ／Ｏバス２０に接続される。同様に、システム大容量記憶装置２７が大容量記憶装置インタフェース２２を介してＩ／Ｏバス２０に接続される。
【００１７】
ネットワーク・サーバとして働く、図１に示したような従来技術のシステムでは、ネットワーク２６からデータを受信する際の通常のデータ経路は、データをネットワーク・インタフェース２１を介しバス・ブリッジ１４を介してメイン・メモリ１３へ転送する経路である。データの最終宛先が大容量記憶装置２７である場合、データは次いで、メイン・メモリ１３からバス・ブリッジ１４を介し大容量記憶装置インタフェース２２を介して大容量記憶装置２７へ転送される。通常のファイル／プリント・サーバ環境では、一般にプロセッサ１１および１２がこのデータ自体にアクセスする必要はないことに留意されたい。プロセッサ１１および１２は、データがどこから転送され、どこへ転送されるかを判定する制御構造を提供するに過ぎない。
【００１８】
図２は、本発明の好ましい実施例による、バス・ブリッジ３４を介してＩ／Ｏバス４０に接続されたホスト・バス３０を使用するコンピュータ・システムを示す。ホスト・バス３０上に、中央演算処理装置（ＣＰＵ）３１および３２、メイン・メモリ・セグメント３３が接続される。システム構成に応じて他のプロセッサをホスト・バス３０に接続することもできる。様々なＩ／Ｏ装置がＩ／Ｏバス４０に接続される。たとえば、ネットワーク４６がネットワーク・インタフェース４１を介してＩ／Ｏバス４０に接続される。同様に、システム大容量記憶装置４７が大容量記憶装置インタフェース４２を介してＩ／Ｏバス４０に接続される。メイン・メモリ・セグメント４３もＩ／Ｏバス４０に接続される。
【００１９】
たとえば、ホスト・バス３０は６４ビットであり、たとえばＸＸＰＲＥＳＳバス規格、またはＰ−６バス規格、またはその他のホスト・バス規格に従って動作する。ＣＰＵ３１はたとえば、ペンティアム(Pentium)プロセッサ、またはＰ−６(Pentium Pro)プロセッサ、またはその他のプロセッサである。ペンティアム・プロセッサ、Ｐ−６プロセッサ、それらのそれぞれのホスト・バスに関する情報は、米国2200 Mission College Boulevard, Santa Clara, California 95050に本社を置くインテル社（Intel Corporation）から入手することができる。
【００２０】
ＣＰＵ３２はたとえば、ペンティアム・プロセッサ、またはＰ−６プロセッサ、またはその他のプロセッサである。メイン・メモリ・セグメント３３はたとえば、ＳＩＭＭを使用して実施され、１０２４メガバイトに拡張することができる。
【００２１】
Ｉ／Ｏバス４０はたとえば、幅３２ビットであり、ＰＣＩ２．１仕様に記載された周辺構成要素相互接続（ＰＣＩ）バス規格に従って動作する。ネットワーク４６はたとえば、ＩＥＥＥ８０２．３規格に記載されたイーサネット・プロトコルに従って動作する。大容量記憶装置４７はたとえば、１つまたは複数の市販のハード・ディスク・ドライブを使用して実施される。メイン・メモリ・セグメント４３はたとえば、ＳＩＭＭを使用して実施され、２５６メガバイトに拡張することができる。
【００２２】
ホスト・バス３０とＩ／Ｏバス４０は共に、３２ビット・アドレスを使用する。アドレス空間はホスト・バス３０でもＩ／Ｏバス４０でも同じであり、バス・ブリッジ３４がアドレス変換を実行する必要ない。
【００２３】
図２に示したコンピュータ・システムでは、メイン・メモリ・アドレス空間５０のメモリ・アドレス・セグメント５１がメイン・メモリ・セグメント３３に割り振られる。メイン・メモリ・アドレス空間５０のメモリ・アドレス・セグメント５２はメイン・メモリ・セグメント４３に割り振られる。メモリ・アドレス・セグメント５１とメモリ・アドレス・セグメント５２が連続する必要はなく、これらのセグメントは共に、メイン・メモリの一部である場合と同様にオペレーティング・システム・ソフトウェアによってアドレスされ管理されるだけでよい。たとえば、メイン・メモリ・アドレス・セグメント５１にはアドレス０16ないし２ＦＦＦＦＦＦＦ16が割り振られる。メイン・メモリ・アドレス・セグメント５２にはアドレス４０００００００16ないし４ＦＦＦＦＦＦＦ16が割り振られる。
【００２４】
図２に示したコンピュータ・システムは、米国16011 NE 36th Way, Redmond, WA 98073-9717に本社を置くマイクロソフト社（Microsoft Corporation）から市販されているウィンドウズＮＴ（Windows NT）オペレーティング・システム・ソフトウェア、または米国122 East 1700 South, Provo, Utah 94601に本社を置くノベル社（Novell,Inc）から市販されているネットウェア（Netware）オペレーティング・システム・ソフトウェア、またはＵＮＩＸオペレーティング・システム・ソフトウェアに従って動作する。メイン・メモリ・セグメント３３とメイン・メモリ・セグメント４３は、物理的に分離されているが、単一の論理メモリ・イメージとして構成され、このことはオペレーティング・システム・ソフトウェアを修正せずに行うことができる。したがって、データ用のメイン・メモリ・アドレスは、データをメイン・メモリ・セグメント３３に配置すべきか、それともメイン・メモリ・セグメント４３に配置すべきかを決定する。
【００２５】
メイン・メモリを２つのセグメントに物理的に分割することによって、オペレーティング・システム・ソフトウェアを変更せずにホスト・バス３０上のデータ・トラフィックを低減させることができる。このことを図３ないし図５に示す。
【００２６】
たとえば、データをネットワーク４６からネットワーク・インタフェース４１を介して受信し大容量記憶装置４７に配置することは一般に、２つのステップで実施される。第１のステップでは、データはネットワーク４６からネットワーク・インタフェース４１を介して受信され、メイン・メモリに配置される。第２のステップでは、データはメイン・メモリから大容量記憶装置インタフェース４２を介して大容量記憶装置４７へ転送される。
【００２７】
図３は、データ転送に関するセットアップ時の制御情報６０の流れを示す。たとえば、ＣＰＵ３１またはＣＰＵ３２の一方がデータ転送をセットアップする。このデータ・セットアップ時には、データ転送に関する制御情報６０がバス・ブリッジ３４を介して流れる。しかし、データ転送をセットアップする際、責任あるプロセッサは、データをデータ・トランザクションのために一時的に記憶するためのメイン・メモリ・セグメント４３内のアドレス可能なメモリを指定する。
【００２８】
図４に示したように、転送されたデータ６１をネットワーク４６からネットワーク・インタフェース４１を介して受信する際、転送されたデータ６１は、メイン・メモリ・セグメント４３に配置される。図５に示したように、転送されたデータ６１は次いで、メイン・メモリ・セグメント４３から大容量記憶装置インタフェース４２を介して大容量記憶装置４７へ転送される。図から明らかなように、メイン・メモリ・セグメント４３をこのデータ用に使用することによって、バス・ブリッジ３４を介したトラフィックが低減された。バス・ブリッジ３４を介して流れたのは制御情報だけであった。すべてのデータ転送はＩ／Ｏバス４０のみを使用して実行された。
【００２９】
本発明の１つの大きな利点は、オペレーティング・システム・ソフトウェアを変更せずに性能が著しく向上することであるが、オペレーティング・システムがメイン・メモリのセグメント化を認識し、データ経路の合理化および短縮を積極的に助けるようにオペレーティング・システム内のコードを修正することによって、より高いレベルの性能向上を達成することができる。
【００３０】
また、図２の実施例は単一のＩ／Ｏバスを含むシステムで実施された本発明を示すものであるが、本発明の原則は多数のシステム構成に拡張される。たとえば、図６は、バス・ブリッジ７４を介してＩ／Ｏバス８０に接続され、バス・ブリッジ７５を介してＩ／Ｏバス９０にも接続されたホスト・バス７０を使用するコンピュータ・システムを示す。ホスト・バス７０上に、プロセッサ（ＣＰＵ）７１および７２、メイン・メモリ・セグメント７３が接続される。システム構成に応じて他のプロセッサをホスト・バス７０に接続することもできる。様々なＩ／Ｏ装置がＩ／Ｏバス８０に接続される。たとえば、Ｉ／Ｏ装置８１およびＩ／Ｏ装置８２がＩ／Ｏバス８０に接続される。メイン・メモリ・セグメント８３もＩ／Ｏバス８０に接続される。同様に、様々なＩ／Ｏ装置がＩ／Ｏバス９０に接続される。たとえば、Ｉ／Ｏ装置９１およびＩ／Ｏ装置９２がＩ／Ｏバス９０に接続される。メイン・メモリ・セグメント９３もＩ／Ｏバス９０に接続される。
【００３１】
図２に示したコンピュータ・システムの場合と同様に、Ｉ／Ｏ装置間でデータ転送を実行する際、制御情報の流れはバス・ブリッジ７４およびバス・ブリッジ７５を介してプロセッサ７１またはプロセッサ７２、あるいはその両方へ移動する。プロセッサは、２つのＩ／Ｏ装置間のデータ転送をセットアップする際、データが最終宛先の最も近くのメモリ・セグメントに配置されるようにする。したがって、Ｉ／Ｏ装置８１とＩ／Ｏ装置８２との間のデータ転送では、メイン・メモリ・セグメント８３が使用される。Ｉ／Ｏ装置９１とＩ／Ｏ装置９２との間のデータ転送では、メイン・メモリ・セグメント９３が使用される。Ｉ／Ｏ装置９２からＩ／Ｏ装置８２へのデータ転送では、メイン・メモリ・セグメント８３が使用される。これによって、クロス・バス・トラフィックが減少され、ホスト・バスでもＩ／Ｏバスでも総待ち時間が短縮され、Ｉ／Ｏバスが停止する可能性が低減される。代替実施例では、プロセッサは、２つのＩ／Ｏ装置間のデータ転送をセットアップする際、データが情報の最初の発信元の最も近くのメモリ・セグメントに配置されるようにする。
【００３２】
図７は、好ましい他の代替実施例における、バス・ブリッジ１０４を介してＩ／Ｏバス１１０に接続され、バス・ブリッジ１０５を介してＩ／Ｏバス１２０にも接続されたホスト・バス１００を使用するコンピュータ・システムを示す。ホスト・バス１００上に、プロセッサ（ＣＰＵ）１０１および１０２、メイン・メモリ・セグメント１０３が接続される。システム構成に応じて他のプロセッサをホスト・バス１００に接続することもできる。様々なＩ／Ｏ装置がＩ／Ｏバス１１０に接続される。たとえば、Ｉ／Ｏ装置１１１およびＩ／Ｏ装置１１２がＩ／Ｏバス１１０に接続される。メイン・メモリ・セグメント１１３もＩ／Ｏバス１１０に接続される。同様に、様々なＩ／Ｏ装置がＩ／Ｏバス１２０に接続される。たとえば、Ｉ／Ｏ装置１２１およびＩ／Ｏ装置１２２がＩ／Ｏバス１２０に接続される。メイン・メモリ・セグメント１１３もＩ／Ｏバス１２０に接続される。
【００３３】
図６に示したコンピュータ・システムの場合と同様に、Ｉ／Ｏ装置間でデータ転送を実行する際、制御情報の流れはバス・ブリッジ１０４およびバス・ブリッジ１０５を介してプロセッサ１０１またはプロセッサ１０２、あるいはその両方へ移動する。プロセッサは、２つのＩ／Ｏ装置間のデータ転送をセットアップする際、データが最終宛先の最も近くのメモリ・セグメントに配置されるようにする。図７中のアーキテクチャは、データをあるＩ／Ｏバス上の位置から受信し他のＩ／Ｏバス上の位置へ転送する場合に特に有利である。したがって、Ｉ／Ｏ装置１２２とＩ／Ｏ装置１１２との間のデータ転送では、ホスト・バス１００を介してデータを転送する必要がなくなるようにメイン・メモリ・セグメント１１３が使用される。これによって、クロス・バス・トラフィックが減少され、ホスト・バスでもＩ／Ｏバスでも総待ち時間が短縮され、Ｉ／Ｏバスが停止する可能性が低減される。
【００３４】
図８は、Ｉ／Ｏプロセッサを使用してメイン・メモリ・セグメント１１３をどのように実施できるかの実施態様のブロック図である。Ｉ／Ｏプロセッサは、図のように、すべて、ローカル・バス１３０に接続された、ローカル・プロセッサ１３２と、フラッシュ・メモリ１３３と、メモリ制御装置１３４と、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）１３５と、Ｉ／Ｏブリッジ１３６と、Ｉ／Ｏブリッジ１３８と、ＵＡＲＴ(Universal Asynchronous Receiver/Transmitter)１３１と、調停およびその他の論理機構１３７とを含む。たとえば、ローカル・プロセッサ１３２は、米国2200 Mission College Boulevard, Santa Clara, California 95050に本社を置くインテル社から市販されているｉ９６０ＪＦプロセッサである。ローカル・バス１３０は、幅３２ビットであり、ｉ９６０バス規格に従って動作する。フラッシュ・メモリ１３３は、たとえば２５６キロバイトであり、プロセッサ１３２用のプログラミング・コードを記憶するために使用される。ＤＲＡＭメモリ１３５はたとえば２５６メガバイトである。前述のように、ＤＲＡＭメモリ１３５の一部はプロセッサ１３２によってローカル・メモリとして使用され、ＤＲＡＭメモリ１３５の一部はメイン・メモリ・セグメント１３３として使用される。メモリ制御装置１３４は、フラッシュ・メモリ１３３およびＤＲＡＭメモリ１３５に制御信号を提供する。Ｉ／Ｏブリッジ１３６および１３８は、米国625 Clyde Avenue, Mountain View, California 94043に本社を置くＰＬＸテクノロジーズ社（PLX Technologies,Inc.）から市販されているｉ９６０／ＰＣＩブリッジ集積回路を使用して実施される。Ｉ／Ｏブリッジ１３６からＩ／Ｏバスへの接続は線１４１で表されている。Ｉ／Ｏブリッジ１３８からＩ／Ｏバスへの接続は線１４２で表されている。調停およびその他の論理機構１３７はローカル・バス１３０に接続される。ＵＡＲＴ１３１は、Ｉ／Ｏプロセッサの試験および補修に使用されるＩ／Ｏプロセッサとの直列接続１４３を提供する。
【００３５】
前記の議論は、本発明の例示的な方法および実施例を開示し説明したものに過ぎない。当業者には理解されるように、本発明は、その趣旨からも基本的特徴からも逸脱せずに他の特定の形態で実施することができる。したがって、本発明の開示は、本発明の範囲を例示するものであり、制限するものではない。本発明の範囲は特許請求の範囲に記載されている。
【００３６】
以上、本発明の実施例について詳述したが、以下、本発明の各実施態様の例を示す。
【００３７】
（実施態様１）
ホスト・バスと、
ホスト・バスに結合されたプロセッサと、
入出力バスと、
前記入出力バスと前記ホスト・バスとの間に結合され、前記ホスト・バスと前記入出力バスとの間で情報を転送するために使用されるバス・ブリッジと、
コンピュータ・システム用のメイン・メモリとを備え、前記メイン・メモリが、
前記ホスト・バスに結合された第１のメイン・メモリ・セグメントと、
前記入出力バスに結合された第２のメイン・メモリ・セグメントとを備え、前記第１のメイン・メモリ・セグメントおよび前記第２のメイン・メモリ・セグメントが、前記プロセッサから単一の論理メモリ・イメージとして見えるように構成されることを特徴とするコンピュータ・システム。
【００３８】
（実施態様２）
前記入出力バスに結合された第１の入出力装置と、
前記入出力バスに結合された第２の入出力装置を有し、
前記第１の入出力装置と前記第２の入出力装置との間の第１のデータ転送が前記プロセッサによって制御され、前記第１のデータ転送時に、転送されたデータが前記第２のメイン・メモリ・セグメントに記憶されることを特徴とする実施態様１に記載のコンピュータ・システム。
【００３９】
（実施態様３）
第２の入出力バスと、
第２の入出力バスと前記ホスト・バスとの間に結合され、前記ホスト・バスと第２の入出力バスとの間で情報を転送するために使用される第２のバス・ブリッジを備え、
前記メイン・メモリが、前記第２の入出力バスに結合された第３のメイン・メモリ・セグメントをも備え、前記第１のメイン・メモリ・セグメント、前記第２のメイン・メモリ・セグメント、前記第３のメイン・メモリ・セグメントが、前記プロセッサから単一の論理メモリ・イメージとして見えるように構成されることを特徴とする実施態様２に記載のコンピュータ・システム。
【００４０】
（実施態様４）
前記第２の入出力バスに結合された第３の入出力装置と、
前記第２の入出力バスに結合された第４の入出力装置を備え、
前記第３の入出力装置と前記第４の入出力装置との間の第２のデータ転送が前記プロセッサによって制御され、前記第２のデータ転送時に、転送されたデータが前記第３のメイン・メモリ・セグメントに記憶されることを特徴とする実施態様３に記載のコンピュータ・システム。
【００４１】
（実施態様５）
前記第３の入出力装置から前記第２の入出力装置への第３のデータ転送が前記プロセッサによって制御され、前記第３のデータ転送時に、転送されたデータが前記第２のメイン・メモリ・セグメントに記憶されることを特徴とする実施態様３に記載のコンピュータ・システム。
【００４２】
（実施態様６）
前記入出力バスがＰＣＩバス規格に従って動作することを特徴とする実施態様１に記載のコンピュータ・システム。
【００４３】
（実施態様７）
前記第２の入出力バスと、
前記第２の入出力バスとホスト・バスとの間に結合され、前記ホスト・バスと前記第２の入出力バスとの間で情報を転送するために使用される第２のバス・ブリッジを備え、
前記第２のメイン・メモリ・セグメントが前記第２の入出力バスに結合されることを特徴とする実施態様２に記載のコンピュータ・システム。
【００４４】
（実施態様８）
前記第２の入出力バスに結合された第３の入出力装置と、
前記第２の入出力バスに結合された第４の入出力装置を備え、前記第３の入出力装置と前記第４の入出力装置との間の第２のデータ転送がプロセッサによって制御され、前記第２のデータ転送時に、転送されたデータが前記第２のメイン・メモリ・セグメントに記憶されることを特徴とする実施態様７に記載のコンピュータ・システム。
【００４５】
（実施態様９）
前記第３の入出力装置から前記第２の入出力装置への第３のデータ転送が前記プロセッサによって制御され、前記第３のデータ転送時に、転送されたデータが前記第２のメイン・メモリ・セグメントに記憶されることを特徴とする実施態様３に記載のコンピュータ・システム。
【００４６】
（実施態様１０）
第１の入出力バスに接続された第１の入出力装置から前記第１の入出力バスに接続された第２の入出力装置へのデータ転送を実行する方法であって、
（ａ）ホスト・バスに接続された第１のメイン・メモリ・セグメントおよび前記第１の入出力バスに接続された第２のメイン・メモリ・セグメントを、コンピュータ・システム用のオペレーティング・システムから単一の論理メモリ・イメージとして見えるように構成するステップと、
（ｂ）前記入出力バスと前記ホスト・バスとの間に接続されたバス・ブリッジを介して、第１の入出力装置と前記ホスト・バスに接続されたプロセッサとの間で制御情報を送るステップと、
（ｃ）前記入出力バスと前記ホスト・バスとの間に接続された前記バス・ブリッジを介さずに、前記第１の入出力装置から前記第２のメイン・メモリ・セグメントへデータを転送するステップと、
（ｄ）前記入出力バスと前記ホスト・バスとの間に接続された前記バス・ブリッジを介さずに、前記第２のメイン・メモリ・セグメントから第２の入出力装置へデータを転送するステップとを有することを特徴とする方法。
【００４７】
（実施態様１１）
前記ステップ（ｃ）および前記ステップ（ｄ）で、前記入出力バスがＰＣＩバス規格に従って動作することを特徴とする実施態様１０に記載のコンピュータ・システム。
【００４８】
（実施態様１２）
入出力装置間のデータ転送を実行する方法であって、
（ａ）ホスト・バスに接続された第１のメイン・メモリ・セグメントおよび第１の入出力バスに接続された第２のメイン・メモリ・セグメントを、コンピュータ・システム用のオペレーティング・システムから単一の論理メモリ・イメージとして見えるように構成するステップと、
（ｂ）第１のデータ転送を実行するステップとして、
（ｂ．１）第１の制御情報を、前記第１の入出力バスとホスト・バスとの間に接続された第１のバス・ブリッジを介して、前記第１の入出力バスに接続された第１の入出力装置とホスト・バスに接続されたプロセッサとの間で送るサブステップと、
（ｂ．２）第１の入出力バスとホスト・バスとの間に接続された第１のバス・ブリッジを介さずに、第１の入出力装置から第２のメイン・メモリ・セグメントへデータを転送するサブステップと、
（ｂ．３）第１の入出力バスとホスト・バスとの間に接続された第１のバス・ブリッジを介さずに、第２のメイン・メモリ・セグメントから第１の入出力バスに接続された第２の入出力装置へデータを転送するサブステップとを有する、
ことを特徴とする方法。
【００４９】
（実施態様１３）
前記ステップ（ｂ．１）および前記ステップ（ｂ．２）で、入出力バスがＰＣＩバス規格に従って動作することを特徴とする実施態様１２に記載のコンピュータ・システム。
【００５０】
（実施態様１４）
前記ステップ（ａ）が、第２の入出力バスに接続された第３のメイン・メモリ・セグメントを前記第１のメイン・メモリ・セグメントおよび前記第２のメイン・メモリ・セグメントと共に、コンピュータ・システム用のオペレーティング・システムから単一の論理メモリ・イメージとして見えるように構成することを有することを特徴とする実施態様１２に記載のコンピュータ・システム。
【００５１】
（実施態様１５）
（ｃ）第２のデータ転送を実行するステップとして、
（ｃ．１）第２の制御情報を、前記第２の入出力バスと前記ホスト・バスとの間に接続された第２のバス・ブリッジを介して、前記第２の入出力バスに接続された第３の入出力装置とホスト・バスに接続されたプロセッサとの間で送信するサブステップと、
（ｃ．２）前記第２の入出力バスと前記ホスト・バスとの間に接続された前記第２のバス・ブリッジを介さずに、前記第３の入出力装置から前記第３のメイン・メモリ・セグメントへデータを転送するサブステップと、
（ｃ．３）前記第２の入出力バスと前記ホスト・バスとの間に接続された前記第２のバス・ブリッジを介さずに、前記第３のメイン・メモリ・セグメントから、前記第２の入出力バスに接続された第４の入出力装置へデータを転送するサブステップとを有する、
ことを特徴とする実施態様１４に記載の方法。
【００５２】
（実施態様１６）
（ｃ）第２のデータ転送を実行するステップとして、
（ｃ．１）第２の制御情報を、前記第２の入出力バスと前記ホスト・バスとの間に接続された第２のバス・ブリッジを介して、前記第２の入出力バスに接続された第３の入出力装置とホスト・バスに接続されたプロセッサとの間で送信するサブステップと、
（ｃ．２）前記第２のバス・ブリッジを介し前記第１のバス・ブリッジを介して、前記第３の入出力装置から前記第２のメイン・メモリ・セグメントへデータを転送するサブステップと、
（ｃ．３）前記第２の入出力バスと前記ホスト・バスとの間に接続された前記第１のバス・ブリッジを介さずに、前記第２のメイン・メモリ・セグメントから前記第１の入出力装置へデータを転送するサブステップとを有する、
ことを特徴とする実施態様１４に記載の方法。
【００５３】
（実施態様１７）
前記ステップ（ａ）で、第２のメイン・メモリ・セグメントが第２の入出力バスに接続されることを特徴とする実施態様１２に記載のコンピュータ・システム。
【００５４】
（実施態様１８）
（ｃ）第２のデータ転送を実行するステップとして、
（ｃ．１）第２の制御情報を、前記第２の入出力バスと前記ホスト・バスとの間に接続された第２のバス・ブリッジを介して、前記第２の入出力バスに接続された第３の入出力装置と前記ホスト・バスに接続されたプロセッサとの間で送るサブステップと、
（ｃ．２）前記第２の入出力バスと前記ホスト・バスとの間に接続された前記第２のバス・ブリッジを介さずに、前記第３の入出力装置から前記第２のメイン・メモリ・セグメントへデータを転送するサブステップと、
（ｃ．３）前記第２の入出力バスと前記ホスト・バスとの間に接続された前記第２のバス・ブリッジを介さずに、前記第２のメイン・メモリ・セグメントから、前記第２の入出力バスに接続された第４の入出力装置へデータを転送するサブステップとを有する、
ことを特徴とする実施態様１７に記載の方法。
【００５５】
（実施態様１９）
（ｃ）第２のデータ転送を実行するステップとして、
（ｃ．１）第２の制御情報を、第２の入出力バスと前記ホスト・バスとの間に接続された第２のバス・ブリッジを介して、前記第２の入出力バスに接続された第３の入出力装置と前記ホスト・バスに接続された前記プロセッサとの間で送るサブステップと、
（ｃ．２）前記第２の入出力バスと前記ホスト・バスとの間に接続された前記第２のバス・ブリッジを介さず、かつ前記第１の入出力バスと前記ホスト・バスとの間に接続された前記第１のバス・ブリッジを介さずに、前記第３の入出力装置から前記第２のメイン・メモリ・セグメントへデータを転送するサブステップと、
（ｃ．３）前記第２の入出力バスと前記ホスト・バスとの間に接続された前記第１のバス・ブリッジを介さずに、前記第２のメイン・メモリ・セグメントから前記第１の入出力装置へデータを転送するサブステップとを有する、
ことを特徴とする実施態様１７に記載の方法。
【００５６】
【発明の効果】
以上のように、本発明を使用すると、ホスト（プロセッサ）バス上のトラフィックが著しく低減する。また、本発明では、バス境界を横切るトラフィックの量を制限することによって並行性を向上させることもできる。つまり、総バス使用率を低減させることによって、総システム・スループットを大幅に向上させることができる。さらに、本発明では、データの最終宛先のできるだけ近くにデータを一時的に記憶することもできる。システムの視点からは、あるＩ／Ｏ装置から他のＩ／Ｏ装置へ転送されるデータをデータの最終宛先のできるだけ近くに配置すると、クロス・バス・トラフィックが減少され、総待ち時間が短縮され、Ｉ／Ｏ装置が停止する可能性の低減がもたらされる。最後に、本発明は、既存のオペレーティング・システム・ソフトウェアを修正せずに従来型のコンピュータ・システムにすべてのこれらの利点を得ることもできる。
【図面の簡単な説明】
【図１】従来技術による、バス・ブリッジを介してＩ／Ｏバスに接続され、かつメイン・メモリに接続されたホスト・バスを使用するコンピュータ・システムを示す図である。
【図２】本発明の好ましい実施例による、メイン・メモリの一部がホスト・バス上に配置され、一部がＩ／Ｏバス上に配置されるようにメイン・メモリがセグメント化されたコンピュータ・システムを示す図である。
【図３】本発明の好ましい実施例による、図２に示したコンピュータ・システム中の制御情報の流れを示す図である。
【図４】本発明の好ましい実施例による、図２に示したコンピュータ・システム中のデータの流れを示す図である。
【図５】本発明の好ましい実施例による、図２に示したコンピュータ・システム中のデータの流れを示す図である。
【図６】本発明の好ましい代替実施例による、メイン・メモリの一部がホスト・バス上に配置され、一部が第１のＩ／Ｏバス上に配置され、一部が第２のＩ／Ｏバス上に配置されるようにメイン・メモリがセグメント化されたコンピュータ・システムを示す図である。
【図７】本発明の好ましい他の代替実施例による、メイン・メモリの一部がホスト・バス上に配置され、一部が第１のＩ／Ｏバスと第２のＩ／Ｏバスとの間に配置されるようにメイン・メモリがセグメント化されたコンピュータ・システムを示す図である。
【図８】２本のＩ／Ｏバスによって共有される資源を含むＩ／Ｏプロセッサのブロック図である。
【符号の説明】
１０：ホスト・バス
１１、１２：中央処理装置
１３：メイン・メモリ
１４：バス・ブリッジ
１６：大容量記憶装置
１７、１８：内部バス
２０：Ｉ／Ｏバス
２１：ネットワーク・インタフェース
２２：大容量記憶装置インタフェース
２６：ネットワーク
２７：大容量記憶装置
３０：ホスト・バス
３１、３２：中央処理装置
３３：メイン・メモリ・セグメント
３４：バス・ブリッジ
４０：Ｉ／Ｏバス
４１：ネットワーク・インターフェース
４２：大容量記憶装置インターフェース
４３：メイン・メモリ・セグメント
４６：ネットワーク
４７：大容量記憶装置
５０：メイン・メモリ・アドレス空間
５１、５２：メモリ・アドレス・セグメント
６０：制御情報
６１：転送されたデータ
７０：ホスト・バス
７１、７２：プロセッサ
７３、８３、９３：メイン・メモリ・セグメント
７４、７５：バス・ブリッジ
８０、９０：Ｉ／Ｏバス
８１、８２、９１、９２：Ｉ／Ｏ装置
１００：ホスト・バス
１０１、１０２：プロセッサ
１０３、１１３：メイン・メモリ・セグメント
１０４、１０５：バス・ブリッジ
１１０、１２０：Ｉ／Ｏバス
１１１、１１２、１２１、１２２：Ｉ／Ｏ装置
１３１：ＵＡＲＴ
１３２： プロセッサ
１３３：フラッシュ・メモリ
１３４：メモリ制御装置
１３５：ＤＲＡＭ
１３６、１３８：Ｉ／Ｏブリッジ
１３７：調停とその他の論理回路
【図１】
0003701076.tif 000002
【図２】
0003701076.tif 000003
【図３】
0003701076.tif 000004
【図４】
0003701076.tif 000005
【図５】
0003701076.tif 000006
【図６】
0003701076.tif 000007
【図７】
0003701076.tif 000008
【図８】
0003701076.tif 000009