(57)【特許請求の範囲】
【請求項１】
第１のデバイスから第２のデバイスへの情報転送リクエストを受け取り、前記第２のデバイスからブリッジ・デバイス内の中継バッファを経て前記第１のデバイスへ、前記リクエストに応答する情報を返送する方法であって、
前記第１のデバイスからの情報転送リクエストを、前記ブリッジ・デバイスにより受け取るステップと、
前記中継バッファの記憶容量よりも大きい値に調整可能な許容オーバーコミットメント値Ｚを決定するステップと、
次の情報転送リクエストに応答する情報量Ｒと、未処理の情報転送リクエストに応答する情報量Ｘとの合計値を、前記決定された許容オーバーコミットメント値Ｚと比較するステップと、
前記比較するステップで前記合計値Ｒ＋Ｘ＜＝Ｚとなる場合、前記ブリッジ・デバイスによる前記次の情報転送リクエストを発行するステップと、
を含む方法。
【請求項２】
前記ブリッジ・デバイスは、第１のＰＣＩバスに接続されたＰＣＩブリッジ回路であり、
前記第１のデバイスは、前記ＰＣＩバスに接続された第１のＰＣＩデバイスである、請求項１に記載の方法。
【請求項３】
前記第２のデバイスは、前記ＰＣＩブリッジ回路に接続されたメモリユニットであり、前記情報転送リクエストは、前記第１のＰＣＩデバイスから前記メモリユニットに送られる、請求項２に記載の方法。
【請求項４】
前記メモリユニットは、システムメモリである、請求項３に記載の方法。
【請求項５】
前記第２のデバイスは、第２のＰＣＩデバイスである、請求項２に記載の方法。
【請求項６】
前記第２のＰＣＩデバイスは、前記第１のＰＣＩバスに接続される、請求項５に記載の方法。
【請求項７】
前記第２のＰＣＩデバイスは、第２のＰＣＩバスに接続される、請求項６に記載の方法。
【請求項８】
前記中継バッファは、前記ＰＣＩブリッジ回路内に配置される、請求項２に記載の方法。
【請求項９】
前記情報転送リクエストは、第１の方向の情報転送に対するものであり、前記ブリッジ・デバイスは、第２の中継バッファをさらに有し、前記第２の中継バッファは、第２の方向の情報転送に対する情報転送リクエストを発行するために、選択的に動作可能である、請求項１に記載の方法。
【請求項１０】
処理デバイスと、
前記処理デバイスに接続されたシステムバスと、
前記システムバスに接続されたＰＣＩホストブリッジと、
前記ＰＣＩホストブリッジに接続されたＰＣＩブリッジと、
前記ＰＣＩブリッジに接続されたＰＣＩバスと、
前記ＰＣＩバスに接続された複数のＰＣＩデバイスとを備えた情報システムであって、
前記ＰＣＩブリッジは、前記ＰＣＩバスを経て、前記複数のＰＣＩデバイスのうちの１つ以上に選択的に接続され、前記ＰＣＩデバイスから受け取った情報転送のためのリクエストに応答して、前記ＰＣＩブリッジに返送された情報を記憶する中継バッファと、
前記ＰＣＩデバイスへの情報転送のために、前記ＰＣＩデバイスから次の情報転送リクエストを受け取る手段と、
前記中継バッファの記憶容量よりも大きい値に調整可能な許容オーバーコミットメント値Ｚを決定する手段と、
次の情報転送リクエストに応答する情報量Ｒと、未処理の情報転送リクエストに応答する情報量Ｘとの合計値を、前記決定された許容オーバーコミットメント値Ｚと比較する手段と、
前記比較する手段により前記合計値Ｒ＋Ｘ＜＝Ｚとなる場合、前記ＰＣＩブリッジによる前記次の情報転送リクエストを発行する手段とを含む、情報処理システム。
【請求項１１】
情報処理システム内に配置され、第１のサイドから第２のサイドへの情報転送リクエストを管理するブリッジ回路において、
前記ブリッジ回路に接続された前記第１のサイドのリクエスティング・デバイスからの情報転送リクエストを受け取る手段と、
前記リクエスティング・デバイスへ返送される情報を一時的に記憶する中継バッファと、
前記中継バッファの記憶容量よりも大きい値に調整可能な許容オーバーコミットメント値Ｚを決定する手段と、
次の情報転送リクエストに応答する情報量Ｒと、未処理の情報転送リクエストに応答する情報量Ｘとの合計値を、前記決定された許容オーバーコミットメント値Ｚと比較する手段と、
前記比較する手段により前記合計値Ｒ＋Ｘ＜＝Ｚとなる場合、前記ブリッジ回路による前記次の情報転送リクエストを発行する手段と
を含むブリッジ回路。
【請求項１２】
前記中継バッファの容量を表す数を記憶する第１のレジスタをさらに備える、請求項１１に記載のブリッジ回路。
【請求項１３】
前記許容オーバーコミットメント値Ｚを調整するために指定された量を表す数を記憶する第２のレジスタ手段をさらに備える、請求項１２に記載のブリッジ回路。
【請求項１４】
前記中継バッファによる情報転送に対する未処理リクエストの数を表す数を記憶する第３のレジスタ手段をさらに備える、請求項１３に記載のブリッジ回路。
【請求項１５】
リトライ信号の発生を表すリトライ・ビットを記憶する第４のレジスタ手段をさらに有し、前記リトライ・ビットは、情報転送リクエストが、情報の完全な転送を完了したか否かを判断する際に用いられる、請求項１４に記載のブリッジ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、情報処理システムに関し、特に、コンピュータ関連環境における改良された情報転送方法に関する。
【０００２】
【従来の技術】
コンピュータシステムおよびネットワーク化されたコンピュータシステムが急増し、ビジネスおよび産業に必要不可欠な情報処理システムに益々統合されるにつれて、より高速の情報処理および増大されたデータ処理容量の必要性が増大している。プロセッサ技術においてかなり急速に最新式の技術が進歩し、その結果プロセッサ速度が増大しても、より高速のプロセッサ、および増大されたシステム速度および帯域幅への必要性が依然として存在する。コンピュータの新しい応用例が実現されるにつれて、新しいプログラムが開発され、これらのプログラムは、日ごとに新しい性能に富んでいる。このような急速な開発は、非常に望ましいが、システム速度および帯域幅に関して性能コストがかかる。
【０００３】
本明細書では、“帯域幅（ｂａｎｄｗｉｄｔｈ）”という用語は、一般に、一定期間内に転送することができる情報量を表すのに用いられる。コンピュータシステムのデバイス間で情報を転送する際、情報は、情報転送パスに沿った“保留（ｈｏｌｄｉｎｇ）”バッファ内に一時的に記憶されることが多い。このようなバッファは、一般に、情報が転送されるデバイスまたはバス間を接続するブリッジ回路内に配置されるブリッジ・バッファを含む。一例では、周辺コンポーネント相互接続、すなわち“ＰＣＩ”システムのブリッジ回路のバッファは、ＰＣＩデバイスに割り当てられ、ＰＣＩデバイスは、ＰＣＩの“スロット（ｓｌｏｔ）”内にインストールされ、関連するＰＣＩバスに接続される。複雑なコンピュータシステムは、個々のＰＣＩバス間に接続されるか、あるいは、ＰＣＩバスをシステムバスに接続する多数のブリッジ回路を有することができる。ＰＣＩシステムでは、コンピュータシステム・エンハンスメント・デバイスまたはアダプタの全ては、一般に、ＰＣＩ“スロット”内に、すなわちシステム・マザーボード上に設けられたボード・コネクタ・ターミナル内に取り付けられるか、または挿入される１つ以上の回路基板上に含まれる。
【０００４】
かつては、“保留”または“中継（ｉｎ  ｔａｒａｎｓｉｔ）”バッファは、通常、用いるデバイスに対して利用され、或る場合にはアービタに依存して、幾つかのデバイスは、利用できるバッファが一時的に得られなかった。というのは、デバイスがバスに許可される度に、デバイスは、“リターン（ｒｅｔｕｒｎ）”バッファがフルであり、この場合には、適切な数の転送バッファがエンプティとなり、他のトランザクションに対してデータを一時的に記憶するとき使用するために利用できるようになるまで、リクエストされたトランザクションは停止される。拡張されたブリッジ回路アーキテクチャを含むシステムにおいては、下位のブリッジ回路上のデバイスから発生されるトランザクション・リクエストは、このようなリクエストが、システムメモリ、あるいはシステム内の他のＰＣＩまたは他のデバイスへのパス上を、システムブリッジ・アーキテクチャーに沿って、次のブリッジ・バッファまで移動できる前に、下位のブリッジ回路で利用可能なバッファを待たなければならない。このプロセスは、より先のトランザクションから解放される利用可能なブリッジ保留バッファを待つ間、固有の待ち時間を有する。バッファが、新しいトランザクションにおける使用に対し利用可能であると指示された後でも、待ちトランザクションに、他の現在のバス・アクティビティのために、システムデータパス上の次の“より高位（ｈｉｇｈｅｒ）”のブリッジに、トランザクション・リクエストを渡すときに、バッファが解放されており、使用可能であることを通知する際に含まれる待ち時間または遅延がある。
【０００５】
【発明が解決しようとする課題】
従って、情報処理システム内で接続されたデバイス間での情報を転送する際に、バッファのより有効な使用を可能にする、改良された方法および実行システムの必要性がある。
【０００６】
【課題を解決するための手段】
システムメモリまたは他のシステムデバイスのような指示されたターゲット・デバイスから、リクエストした情報をリターンされて受け取るために、ブリッジ回路の現在の容量を超える情報転送に対して、システム・ブリッジ回路が、システムデバイスからのトランザクション・リクエストを実行またはオーバーコミットすることができる、方法および実行システムが提供される。トランザクション・リクエストは、データパスに沿って指示されたターゲット・デバイスに移動し、リクエストした情報は、典型的な実施例では、リクエスティング・デバイスにリターンされる。オーバーコミットメントは、次のように制御される。すなわち、良好に調整されたシステムにおいて、読取り完了データがリクエスティング・デバイスにリターンされるときに、そのデータを受け取るのに間に合うようにバッファ・スペースが解放されるようにである。説明した実施例においては、オーバーコミットメントの量は、プログラマブルであり、トランザクション・リクエストに対するオーバーコミットメントの量は、特定のシステム要求および現在のデータ転送のトラフィック・レベルに従って、情報転送を最適化するように自動的に調整することができる。データ転送方法は、ＰＣＩシステムにおいて説明されるが、多くのバス・プロトコルにおいて使用でき、システム・メモリの情報転送のやりとり、および対等デバイス間の情報転送に応用できる。
【０００７】
【発明の実施の形態】
ここで説明する種々の方法は、サーバ，ワークステーション，またはパーソナルコンピュータを備えることができる典型的なコンピュータシステム内で実行することができる。一般に、実行コンピュータシステムは、同様のシステムのネットワーク内のマルチバス・システムに複数のプロセッサを備えることができる。しかしながら、本発明を実行することができるワークステーションまたはコンピュータシステムは、一般に、技術上既知であり、また一般に、当業者に既知である電子部品および電子回路より構成されるので、本発明の基本概念の理解および認識のために、および本発明の教示を不明瞭にし、または逸脱させないために、図示したもの以上の回路詳細は、必要と考えられる範囲より広い範囲にまで詳細に説明はしない。
【０００８】
以下に詳細に説明するように、開示された方法は、有効なポスティド（ｐｏｓｔｅｄ）メモリ書込みトランザクションと、遅延読取りおよび遅延書込みトランザクションとを用いる典型的なＰＣＩバス・システムに関連して有効である。この手法はまた、ポスティド・メモリ書込みトランザクションと、分割読取りおよび分割書込みトランザクションとを用いるＰＣＩローカル・バス仕様（“ＰＣＩ−Ｘ”）の高性能の将来的拡張に関して有効である。ＰＣＩの順序規則は、読取りトランザクションが、それらの前に以前の書込みトランザクションを“プッシュ（ｐｕｓｈ）”することを要求する。ＰＣＩの遅延トランザクションの場合は、リクエストを開始するマスターが、バス上に戻り、トランザクションが完了するまで、何度も最初のリクエストを繰り返さなければならない。分割トランザクションは、分割リクエストが、リトライの代わりにバス上に分割レスポンスを受け取る点で、遅延トランザクションとは異なる。マスタは、リクエストの繰り返しを続けることを必要としない。そのリクエストのターゲットは、後にバスを得て、そのときバス上のマスタとして働き、分割完了データまたはメッセージを元のマスタにリターンする。従って、元のマスタは、完了データまたはメッセージを受け取るために、ターゲットとして働く。開示された実施例に関しては、ＰＣＩコンピュータ・システムが説明されているが、本発明はまた、拡張処理または通信システムにおける複数の“保留”または“中継”の記憶位置間でデータが転送される他の情報処理システムに応用できることに注意されたい。説明される典型的なＰＣＩシステムでは、各々のバスは、ＰＣＩブリッジ回路を経てシステム内の次の高レベルのバスに接続される。システム内の各々のＰＣＩバスは、多数のスロットを有することができる。ＰＣＩバスに接続されたアダプタに対して許容できるスロットの実際の数は、目的とする動作周波数と、動作モード（ＰＣＩまたはＰＣＩＸモード）とに依存する。拡張コンピュータシステムでは、ＰＣＩバスは、高レベルのＰＣＩバス上の１つ以上のスロットに順次接続されるＰＣＩ−ＰＣＩ・ブリッジ回路を経て、他のＰＣＩバスに接続される。システム内の各々のブリッジ回路は、システムのＰＣＩスロット内にインストールされた対応する割り当てられたデバイスとやりとりする情報を一時的に記憶する際に使用するために、ＰＣＩスロット内のデバイスのうち対応するデバイスに割り当てられる多数のバッファを有している。例えば、図１では、典型的なＰＣＩシステムは、システムバス１０３に接続される１つ以上のＣＰＵ１０１，１０５を備える。メモリコントローラ１０７およびメモリユニット１０９もまた、システムバス１０３に接続される。システムバス１０３は、技術上既知の他のシステムデバイスおよびネットワークへのさらなるシステム接続のために拡張される（図中、１１１で示す）が、図面を不明瞭にせず、また、本発明の開示から逸脱しないように、特に図示しない。
【０００９】
システムバス１０３はまた、ＰＣＩホストブリッジ（ＰＨＢ）回路１１３を経て、第１のＰＣＩバス１１４に接続される。このシステムは、ＰＨＢ（ｎ）回路１１２で示される付加的なＰＣＩ−ホスト・ブリッジ回路を備えることができる。第１のＰＣＩバス１１４は、第１のＰＣＩ−ＰＣＩ・ブリッジ回路（ＰＰＢ）１１５に接続され、第１のＰＣＩ−ＰＣＩ・ブリッジ回路１１５は、第２のＰＣＩバス１１７に接続される。第２のＰＣＩバス１１７は、図示のように、第１の群のＰＣＩデバイス（ＰＰＢ−１デバイス）に選択的に接続されるように配置される。第２のＰＣＩバス１１７はまた、第２のＰＣＩ−ＰＣＩ・ブリッジ回路（ＰＰＢ−２）１１９に接続されるように配置され、第２のＰＣＩ−ＰＣＩ・ブリッジ回路１１９は、本実施例における第３のＰＣＩバス１２１を経て、第２の群のＰＣＩデバイス（ＰＰＢ−２デバイス）のうちの１つ以上に選択的に接続されるように配置される。２つのカスケード接続されたＰＣＩ−ＰＣＩ・ブリッジ回路のみが、本実施例で示されているが、本発明はまた、ＰＣＩブリッジ回路およびホスト・ブリッジ回路をさらに備えることができる他の構成にも適用されることに注意されたい。
【００１０】
図２に、本発明の説明された実施で用いられる幾つかの主要なコンポーネントを備える典型的なＰＰＢ回路２０１を示す。ＰＰＢ２０１は、高レベルのブリッジ回路にＰＰＢを接続し、他のブリッジ回路を経て他の対等ＰＣＩデバイスにＰＰＢ２０１を接続する接続手段２０３を有する。ＰＰＢ２０１はまた、低レベルのブリッジ回路および他の対等ＰＣＩデバイスにＰＰＢを接続する接続手段２０５を有する。図示のように、ＰＰＢ回路２０１は、“アウト（ＯＵＴ）”の組のバッファ２０７、および“イン（ＩＮ）”の組のバッファ２０９を有する。バッファ２０７および２０９は、情報転送トランザクションの際に情報を記憶するのに用いられる中継バッファとして働く。“ＯＵＴ”バッファは、システムメモリ１０９から、例えばＰＰＢ２０１の“下位（ｂｅｌｏｗ）”のＰＣＩデバイスの１つに、“ｏｕｔ”に転送されるデータを一時的に記憶するのに用いられる。同様にして、“ＩＮ”バッファ２０９は、ＰＰＢ２０１の “下位（ｂｅｌｏｗ）”のＰＣＩデバイスの１つから、システムメモリ１０９に、または、ＰＰＢ２０１の“上位（ａｂｏｖｅ）”の他のデバイスに、“ｉｎ”に転送される情報を記憶する際に用いられる。典型的な動作では、情報転送リクエストが、ＰＰＢ２０１の下位のＰＣＢデバイスからコネクタ２０５を経て送られると、ＰＰＢ２０１は、アウトバッファ２０７をチェックし、システムメモリから、例えば、リクエスティングＰＣＩデバイスへのリターン・トリップ上にリクエストされた情報を保留するために、バッファ内に十分の未使用な記憶スペースがあるか否かを判断する。以下に詳細に説明するように、このとき、アウトバッファが情報でフルであったとしても、本発明は、ＰＰＢが、情報に対するリクエストを“オーバーコミット（ｏｖｅｒ−ｃｏｍｍｉｔ）”し、指定されたターゲット・デバイス（システムメモリまたは他のＰＣＩデバイスのような）に向かう次の高レベル（例えば、次の高レベルＰＰＢ）へリクエストを渡すことを可能にする。従って、本発明は、リクエストされた情報がリクエスティング・デバイスにリターンされるときまで、多数のアウトバッファ２０７が、一般に解放され、リターン情報を受け取るのに使用可能であるという事実を利用している。バッファ・オーバーコミットメントのこの方法は、システムが、これまで避けられなかった情報転送待ち時間の遅延をかなり減少させることを可能にする。
【００１１】
また、ＰＰＢ２０１は、２つの読取り専用バッファ容量レジスタ（ＢＣＲ）２１１および２１３を有する。ＢＣＲ２１１および２１３は、現在リクエストされている情報がリクエスティング・デバイスにリターンされているとき、これを記憶するために、各方向における特定のブリッジ内で実行される全バッファ容量を指示するために用いられる。バッファ２０７および２０９は、対称であり、いずれの方向のリターン情報をも記憶するために動作することができることに注意されたい。従って、上述した情報フローに加えて、ＰＰＢ２０１の上位のデバイスから、ＰＰＢ２０１の下位のデバイスへの情報リクエストは、“アウト”バッファ２０７を経てチャネルされ、ＰＰＢ２０１は、リクエストを渡す前に、“イン”バッファ２０９内のバッファ・スペースをチェックする。典型的には、図２に示すように、“アウト”バッファ２０７および“イン”バッファ２０９は、それぞれ、ポスティド・メモリ書込み（ＰＭＷ），分割リクエスト（ＳＲ），および分割完了（ＳＣ）のセクションに分離するように分割される。ＢＣＲレジスタ２１１および２１３は、分割完了セクションの容量を指示する。分割読取り完了および分割書込み完了は、同じバッファ・セクションに記憶することができ、あるいは、各々が、それら自身のバッファの分離セクションを有することができる。読取り完了が、それら自身のバッファの分離の組に記憶されると、ＢＣＲレジスタ２１１および２１３は、分割読取り完了データを記憶するために実行されるバッファの全容量のみを指示する。
【００１２】
ＰＰＢ２０１はまた、“許容された（ａｌｌｏｗｅｄ）”オーバーコミットメント・ファクタ（ＰＰＢがトランザクション・リクエストにどのくらいオーバーコミットするかを示す）を記憶するための、一対の“許容オーバコミットメント（Ｚ）レジスタ（Ａｌｌｏｗｅｄ  Ｏｖｅｒ−ｃｏｍｍｉｔｍｅｎｔ（Ｚ）ｒｅｇｉｓｔｅｒ）”２１５および２１７を示す。後で説明するように、“Ｚ”ファクタは、まず、所定のレベルに設定され、その後、特定のシステムの情報転送ダイナミックスに適合するように、オーバーコミットメント・レベルを最適化または“微調整（ｆｉｎｅ−ｔｕｎｅ）”するために調整される。“Ｚ”の値は、以下のように初期化することができる。すなわち、（ａ）ＦＦｈ（まず、フラッド・モードで、オーバーコミットメント値を下方に自動調整可能にする、または、（ｂ）バッファ容量レジスタＢＣＲに等しい値（まず、“ノー・オーバーコミット（ｎｏ  ｏｖｅｒ−ｃｏｍｍｉｔ）”モードで、許容オーバーコミットメントを上方に自動調整可能にする）、あるいは、（ｃ）ＢＣＲよりも大きな所定の想定された最適な設定のために、オーバーコミットメントを可能にし、適正な上方または下方への許容オーバーコミットメントの自動調整を可能にする。最終結果は同じであり、バス・トラフィックが時間にわたって変動するにつれて、許容オーバーコミットメントが上方または下方に調整される。Ｚの初期化されたスターティング・ポイントの好適な実施例は、ここでは、ケース（ｂ）として用いられ、最初のＺ値はＢＣＲ値に等しい。
【００１３】
また、一対の“Ｘ”すなわちトランザクション・カウンタ２１９および２２１が、ＰＰＢ２０１内に設けられている。Ｘカウンタ２１９および２２１は、いかなる時点でも、未処理のトランザクション（またはコミットメント）を追跡する。また、典型的なＰＰＢ回路２０１は、一対のＣＡＷＯＲ（“Ｃｏｍｐｌｅｔｉｏｎ  Ａｃｃｅｐｔｅｄ  Ｗｉｔｈｏｕｔ  Ｒｅｔｒｙ”）カウンタ２２３および２２５が設けられている。これらは、実施例では、分割トランザクション完了を追跡するカウントダウン・カウンタである。実施例では、これは、プログラマブルなＳＴＡＲＴ値に設定することができる８ビットカウンタであり、“０”までカウントダウンする。このＣＡＷＯＲカウンタのリセットは、プログラムされたＳＴＡＲＴ値にリセットする。また、ＰＰＢ２０１には、Ｒ／Ｄ（リトライ／切断）ビット２２７および２２９，ＴＲＨ（トランザクション・リクエスト阻止）ビット２３１および２３３，ＨＷＡＤ（ハードウェア調整ディスエーブル）ビット２３５および２３７を含む条件ビットの対応対が含まれる。ＴＲＨおよびＲ／Ｄビットは、“Ｚ”ファクタの値を決定する際に、ハードウェア手段または他のソフトウェア手段のいずれかが実行されることを可能にするのに有効である。ハードウェア調整ディスエーブル・ビットは、許容オーバーコミットメントの量を上下に制御する２ビットをテストするハードウェア方法またはソフトウェア方法のいずれかの選択を可能にする。条件ビットは、多数の既知の方法のいずれかで実行することができ、以下により詳細に説明するように、ＰＰＢ２０１の動作シーケンスの際の参照用に用いられる。実施例では、Ｒ／Ｄ，ＴＲＨ，およびＸのデフォルト値が、“０”に設定され、システムソフトウェアは、ＣＡＷＯＲカウンタの下位６ビットを、全て“１”に設定し、最初に、“Ｚ“を、ＢＣＲ値に設定する。
【００１４】
図３に示した典型的な動作では、システムが初期化されるとき（３０１）、パワーオン・リセット（ＰＯＲ）があると（３０５）、上述したデフォルト値が設定され（３０７）、デフォルト値は、ハードウェアまたはソフトウェアのオプションにより、ユーザによって変更または更新することができる（３０９）。初期化後、データ転送トランザクション・リクエストが、ＰＰＢ回路２０１から発行する準備ができたか否かを判断するチェックが行われる（３１０）。準備ができると、次のトランザクション・リクエスト“Ｒ”と未処理のトランザクション“Ｘ”とのサイズの合計が、現在の許容オーバーコミットメント値“Ｚ”以下であるか否かを判断するチェックが行われる（３１５）。以下であれば、リクエスティング・デバイスとＰＰＢ回路との間のバスは、リクエスティング・デバイスによってリクエストされ（３１７）、次の高位のブリッジ内のアービタは、リクエスティング・デバイスが、バスを同時にリクエストしている他のデバイス間にＰＣＩバスを許可するか否かを判断する。リクエスティング・デバイスが、アービトレーションを得ると（３１９）、リクエストが、バス上に発行される（３２１）。リクエストが受け取られると、未処理のトランザクション・カウンタ“Ｘ”が、現在のリクエスト“Ｒ”だけインクリメントされ（３２７）、プロセスは、スタートポイント“Ａ”に戻り（３０３）、他のサイクルを開始する。リクエスティング・デバイスが、アービトレーション（３１９）を得ないと、プロセスは、リクエストを発行しないで、スタートポイントＡに戻る（３０３）。未処理のリクエストＸに加算された現在のリクエストＲが、Ｚの値より大きいと判断されると（３１５）、オーバーコミットメント・レベルを超過していることを意味し、現在のリクエストが発行されると、現在のリクエストは阻止されなければならない。従って、Ｒ＋Ｘが、Ｚより大きいと（３１５）、ＴＲＨ（トランザクション阻止）ビットは、“１”に設定され（３２８）、バスは、リクエストされない（３２９）。プロセスは、ポイントＢに進み（３２５）、さらに、いずれの完了バッファが解放されたか否かを判断する。
【００１５】
許容オーバーコミットメント・レベルＺが、現在のリクエストだけ超過されていると（３１５）、または、リクエストが受け取られないと（３２３）、あるいは、トランザクション・リクエストが発行する準備ができていないと（３１０）、全ての完了バッファが、解放されたか否かを判断するチェックが行われる（３３１）。いずれかの完了バッファが、解放されていないと（３３１）、プロセスは、続いて図４に示すポイントに進む（４００）。しかし、いずれかの完了バッファが、解放されていると（３３１）、未処理トランザクション・レジスタＸは、解放バッファの数だけデクリメントされ（３３３）、プロセスは、スタートポイントＡに戻り（３０３）、リサイクルする。リサイクルまたは次のパスのときに、解放バッファの数が、次のリクエストに要求される数よりも多く、Ｚ値が超過されていないと（３１５）、プロセスは、前述したように、バスをリクエストする（３１７）ことにより続けられる。
【００１６】
図４において、完了バッファが解放されていないとき、完了が試行されたか否かを判断するチェックが行われる（４０１）。完了が試行されないと（４０１）、プロセスは、スタートポイントＡに戻る。しかし、完了が、リクエスティング・デバイスによって試行されると（４０１）、完了リトライがあるかを判断するチェックが行われる（４０２）。完了リトライ４０２があったならば（４０２）、完了はＰＰＢ２０１によって受け取られなかったことを意味する。次に、Ｒ／Ｄ（リセット／切断）ビットが“１”に設定され（４０３）、適切なＣＡＷＯＲ（Ｃｏｍｐｌｅｔｉｏｎ  Ａｃｃｅｐｔｅｄ  Ｗｉｔｈｏｕｔ  Ｒｅｔｒｙ）カウンタ２２３／２２５がリセットされ（４０５）、プロセスは、図５のポイント“Ｃ” に進む（４１５）。完了リトライがなかったならば（４０２）、完了は、ＰＰＢ２０１によって受け取られたことを意味し、完了が切断なしに受け取られたか否かを判断するチェックが行われる（４０７）。受け取られなかったばらば、Ｒ／Ｄビットは、“１”に設定され（４１９）、プロセスは、図５のポイント“Ｃ”に進む（４１５）。しかし、完了が切断なしに受け取られると（４０７）、全完了トランザクションが、同じバス転送の際、完全に受け取られた（転送されることをリクエストされた完了データの全てが、受け取られた）ことを意味する。その場合、ハードウェア・オーバーコミットメント調整がイネーブルされるか否かを判断するチェックが行われる（４０９）。イネーブルされないと、プロセスは、リサイクルのためにスタートポイントＡに戻る。しかし、ハードウェア・オーバーコミットメントがイネーブルされると（４０９）、適切なＣＡＷＯＲカウンタ２２３／２２５がデクリメントし（４１１）、ＣＡＷＯＲカウンタが、本実施例において０に等しいか否かを判断するチェックが行われる（４１３）。（ＣＡＷＯＲカウンタが、アップカウンタで実現されていると、このチェックは、所定のアップカウントに達したか否かを判断する）。ＣＡＷＯＲカウンタが、０までカウントダウンされていないと、プロセスは、スタートポイントＡに戻る（３０３）。しかし、ＣＡＷＯＲカウンタが、０までカウントダウンされていると（４１３）、プロセスは、図５のポイントＣに進む（４１５）。
【００１７】
図５において、“Ｚ”の値が、同じのままであるべきか、オーバーコミットメントのレベルを調整するために、下方または上方に調整されるべきかを判断するために、ＴＲＨおよびＲ／Ｄビットがテストされる。図に示すように、ポイントＣ（４１５）から、ＴＲＨビットが０に等しいか否か（５０１）、すなわち、トランザクション・リクエスト阻止であったか否かを判断するチェックが行われる（例えば、図３のステップ３１５によって）。トランザクション・リクエストが阻止されたならば（５０１）、リセットまたは切断があったか否かを判断するチェックが行われる。Ｒ／Ｄビットが“０”に等しいと（５１１）、最後のトランザクションにリセットまたは切断がなかったことを意味する。次に、“Ｚ”の値が、“ＡＬＬ  １”（すなわち、全ビットが論理“１”にある）に等しいか否かを判断するチェックが行われる（５１２）。等しいならば、Ｚは、それ以上インクリメントされ得ず、プロセスは、次のステップ５１３を迂回する。等しくないと、Ｚの値は、所定の量だけ（実施例では“１”のように）インクリメントされる。その場合、システムは、リクエストを阻止しているが、バッファは、リターニング・データを受け取る時間内は解放されていることが判断される。従って、許容オーバーコミットメント値Ｚは増大し、さらに多くのオーバーコミットメントが、リターン・バッファのＢＣＲの容量を超える未処理リクエストの数に相当するリクエストを転送することを可能にする。Ｒ／Ｄビットが“０”に等しくないと（５１１）、リトライまたは切断があり、ＰＰＢバッファは、リクエスティング・デバイスにリターンするデータを受け取ることができなかったことを意味する。次に、ＺがＢＣＲの値に等しいか否かを判断するチェックが行われる（５１４）。等しいならば、Ｚはそれ以上減少し得ず、プロセスは、次のステップ５１５を迂回する。等しくないと、オーバーコミットメントのＺ値は、“１”だけデクリメントされる（５１５）。
【００１８】
ＴＲＨビットが、“０”に等しいと（５０１）、すなわち、トランザクション・リクエストが、ＰＰＢ２０１によって阻止されなかったならば、Ｒ／Ｄビットが“０”に等しいか否かを判断するチェックが行われる（５０３）。Ｒ／Ｄビットが、“０”に等しいと、リセットまたは切断がなかったことを意味し、プロセスは、スタートポイントＡに戻る（３０３）。Ｒ／Ｄビットが、“０”に等しくないと、リセットまたは切断があり、ＰＰＢバッファが、リターニング・データを受け取ることができなかったことを意味する。次に、ＺがＢＣＲの値に等しいか否かを判断するチェックが行われる（５０４）。等しいと、Ｚは、それ以上減少し得ないことを意味し、プロセスは、次のステップ５０５を迂回する。等しくないと、オーバーコミットメント値Ｚは、非常に大きく、データのバックアップを軽減するために、１だけデクリメントする（５０５）。全ての場合において、“Ｚ”の値が、図５に示す方法に従って調整された後は、Ｒ／ＤおよびＴＲＨビットがリセットされ（５０７）、ＣＡＷＯＲカウンタがリセットされ（５０９）、プロセスは、他のサイクルのために、スタートポイントＡ（３０３）に戻る。本明細書で開示され説明された方法に従ったオーバーコミットメント値Ｚの調整は、ハードウェアまたはソフトウェアのいずれかの実施によって容易に実現することができる。
【００１９】
従って、システムブリッジ回路が、システムメモリまたは他のシステムデバイスのような指定されたターゲット・デバイスからのリターン上にリクエストされた情報を受け取るのに、ブリッジ回路の現在の容量を超過する情報転送のために、システムデバイスからのトランザクション・リクエストを実行またはオーバーコミットするブリッジ回路が、イネーブルな方法および実行システムを開示した。トランザクション・リクエストは、指定されたターゲット・デバイスへのデータパスに沿って移動し、リクエストされた情報は、典型的な実施例では、リクエスティング・デバイスに戻される。オーバーコミットメントは、十分調整されたシステム内で、そのデータがリクエスティング・デバイスに戻されるとき、バッファ・スペースが、読取り完了データを受け取る時間内に正確に常に解放するように制御される。例示した実施例では、オーバーコミットメントの量は、プログラマブルであり、トランザクション・リクエストへのオーバーコミットメントの量は、自動的に調整され、特定のシステム要求および現在のデータ転送トラフィック・レベルに従って情報転送を最適にすることができる。データ転送方法は、ＰＣＩシステムで例示されているが、多くのバス・プロトコルでは用いられず、システムメモリとやりとりする情報転送、および対等デバイス間の情報転送に応用できる。
【００２０】
本発明の方法および装置を、本明細書で開示された好適な実施例とともに説明した。開示された方法は、ここで説明した所望の結果を実現するために、広範囲のシーケンスで実行することができる。本発明の実施例を、特定の変形例と共に詳細に示し説明したが、当業者によれば、本発明の教示を含む多くの他の変形例を容易に構成でき、さらに、プロセッサまたはＣＰＵ、あるいは他のシステムの集積回路またはチップに含ませ、集積することができる。また、開示された方法は、ディスクまたはディスケット（ポータブルまたは固定），あるいは他のメモリデバイス上に記憶されたプログラムコードで単独にまたは部分的に実行でき、これにより、ここに説明された有利な結果を実現するために実行することができる。従って、本発明は、ここに説明された特定の実施例に限定されることを意図するものではなく、逆に、本発明の主旨および範囲内に含めることができるような変形，変更，および均等のものを含むことを意図する。
【００２１】
まとめとして、本発明の構成に関して、以下の事項を開示する。
（１）第１のデバイスから第２のデバイスへの情報転送リクエストを処理し、前記第２のデバイスからブリッジ・デバイス内の中継バッファを経て前記第１のデバイスへ、完了情報をリターンする方法であって、
前記第１のデバイスからの現在の情報転送リクエストを、前記ブリッジ・デバイスにより受け取るステップと、
前記中継バッファの記憶容量と、以前の未処理の情報転送リクエストからの完了情報を記憶するのに必要とされる記憶容量とを決定するステップと、
前記現在の情報転送リクエストを、前記ブリッジ・デバイスによって実行するステップであって、前記現在の情報転送リクエストと、前記以前の未処理の情報転送リクエストからの前記完了情報とを加えると、前記決定された記憶容量を超える情報量となるステップと、
を含む方法。
（２）前記現在の情報転送リクエストからの完了情報と、前記以前の未処理の情報転送リクエストからの完了情報とを加えたものは、前記決定された記憶容量を、指定された量より少ない量だけ超過する情報量に対するものである、上記（１）に記載の方法。
（３）前記指定された量は、選択的に調整可能である、上記（２）に記載の方法。
（４）前記指定された量は、現在の情報転送リクエストの前に完全に実行された情報転送完了の数に関連して決定される、上記（３）に記載の方法。
（５）前記指定された量は、前記完全に実行された以前の情報転送完了の数が、少なくとも１である場合に、増大する、上記（４）に記載の方法。
（６）前記指定された量は、少なくとも１つの以前の情報転送完了が、前記ブリッジ・デバイスによって完全に受け取られなかったときに、減少する、上記（４）に記載の方法。
（７）前記指定された量は、前記完全に実行された以前の情報転送完了の数が、少なくとも１であるときに増大し、前記指定された量は、少なくとも１つの以前の情報転送が、前記第２のデバイスに完全にリターンされなかったときに、減少する、上記（４）に記載の方法。
（８）前記ブリッジ・デバイスは、第１のＰＣＩバスに接続されたＰＣＩブリッジ回路であり、前記第１のデバイスは、前記ＰＣＩバスに接続された第１のＰＣＩデバイスである、上記（１）に記載の方法。
（９）前記第２のデバイスは、前記ＰＣＩブリッジ回路に接続されたメモリユニットであり、前記情報転送リクエストは、前記第１のＰＣＩデバイスから前記メモリユニットに送られる、上記（８）に記載の方法。
（１０）前記メモリユニットは、システムメモリである、上記（９）に記載の方法。
（１１）前記第２のデバイスは、第２のＰＣＩデバイスである、上記（８）に記載の方法。
（１２）前記第２のＰＣＩデバイスは、前記第１のＰＣＩバスに接続される、上記（１１）に記載の方法。
（１３）前記第２のＰＣＩデバイスは、第２のＰＣＩバスに接続される、上記（１２）に記載の方法。
（１４）前記中継バッファは、前記ＰＣＩブリッジ回路内に配置される、上記（８）に記載の方法。
（１５）前記情報転送リクエストは、第１の方向の情報転送に対するものであり、前記ブリッジ・デバイスは、第２の中継バッファをさらに有し、前記第２の中継バッファは、第２の方向の情報転送に対する情報転送リクエストを実行するために、選択的に動作可能である、上記（１）に記載の方法。
（１６）処理デバイスと、
前記処理デバイスに接続されたシステムバスと、
前記システムバスに接続されたＰＣＩホストブリッジと、
前記ＰＣＩホストブリッジに接続されたＰＣＩブリッジと、
前記ＰＣＩブリッジに接続されたＰＣＩバスと、
前記ＰＣＩバスに接続されたＰＣＩデバイスとを備えた情報システムであって、
前記ＰＣＩブリッジは、前記ＰＣＩデバイスから受け取った情報転送のためのリクエストに応答して、前記ＰＣＩブリッジにリターンされた完了情報を記憶する中継バッファを有し、
前記ＰＣＩブリッジは、選択的に動作可能であり、
前記ＰＣＩデバイスへの情報転送のために、前記ＰＣＩデバイスから現在の情報転送リクエストを受け取り、
前記中継バッファの記憶容量と、以前の未処理の情報転送リクエストからの完了情報を記憶するのに必要とされる記憶容量とを決定し、
前記ブリッジ・デバイスによって、前記現在の情報転送リクエストを実行し、前記現在の情報転送リクエストと、前記以前の未処理の情報転送リクエストからの前記完了情報とを加えると、前記決定された記憶容量を超える情報量となる、情報処理システム。
（１７）情報処理システム内に配置され、第１のサイドから第２のサイドへの情報転送リクエストを管理するブリッジ回路において、
前記ブリッジ回路に接続されたリクエスティング・デバイスからの情報転送リクエストを受け取る手段と、
前記リクエスティング・デバイスへリターンされる完了情報を一時的に記憶する中継バッファと、
前記中継バッファの記憶容量を決定する手段と、
前記リクエスティング・デバイスからの情報転送リクエストを実行する実行手段であって、以前の転送リクエストによってリクエストされた情報に加えられるときに、前記中継バッファの前記決定された記憶容量を超過する情報量に対する情報転送リクエストを実行するために、選択的に動作可能である実行手段と、
を含むブリッジ回路。
（１８）前記現在の情報転送リクエストからの完了情報と、前記以前の未処理の情報転送リクエストからの完了情報とを加えると、前記決定された記憶容量を、指定された量より少ない量だけ超過する情報量となる、上記（１７）に記載のブリッジ回路。
（１９）前記指定された量は、現在の情報転送リクエストの前に完全に実行された情報転送の数に関して決定される、上記（１８）に記載のブリッジ回路。
（２０）完全に実行された以前の情報転送完了の数をカウントするカウント手段と、完全に実行された以前の情報転送完了の前記数が、所定の数に一致するとき、前記指定された量を増大する手段とをさらに備える、上記（１９）に記載のブリッジ回路。
（２１）前記完全に実行された以前の情報転送完了の数が、少なくとも１である、上記（２０）に記載のブリッジ回路。
（２２）前記指定された量は、少なくとも１つの以前の情報転送完了が、完全に実行されなかったとき減少する、上記（２１）に記載のブリッジ回路。
（２３）前記中継バッファの容量を表す数を記憶する第１のレジスタをさらに備える、上記（２２）に記載のブリッジ回路。
（２４）前記指定された量を表す数を記憶する第２のレジスタ手段をさらに備える、上記（２３）に記載のブリッジ回路。
（２５）前記中継バッファによる情報転送に対する未処理リクエストの数を表す数を記憶する第３のレジスタ手段をさらに備える、上記（２４）に記載のブリッジ回路。
（２６）リトライ信号の発生を表すリトライ・ビットを記憶する第４のレジスタ手段をさらに有し、前記リトライ・ビットは、情報転送リクエストが、情報の完全な転送を実現したか否かを判断する際に用いられる、上記（２５）に記載のブリッジ回路。
（２７）切断生起の発生を表す切断ビットを記憶する第５のレジスタ手段をさらに備え、前記切断ビットは、情報転送リクエストが、情報の完全な転送を実現したか否かを判断する際に用いられる、上記（２６）に記載のブリッジ回路。
（２８）阻止されるトランザクションの発生を表すトランザクション保留ビットを記憶する第６のレジスタ手段をさらに有し、前記トランザクション保留ビットは、情報転送リクエストが、情報の完全な転送を実現したか否かを判断する際に用いられる、上記（２７）に記載のブリッジ回路。
【図面の簡単な説明】
【図１】本発明を実行する典型的なコンピュータシステムを示す図である。
【図２】本発明の実行に用いられる幾つかの主要なコンポーネントを示す概略図である。
【図３】本発明の方法の動作シーケンスを示すフローチャートである。
【図４】図３に示されるフローチャートの続きである。
【図５】ブリッジ・バッファのバッファ・オーバーコミットメント・レベルを調整する典型的な方法を説明するフローチャートである。
【符号の説明】
１０１，１０５  ＣＰＵ
１０３  システムバス
１０７  メモリ・コントローラ
１０９  メモリ
１１２，１１３  ＰＨＢ
１１４  第１のＰＣＩバス
１１５  ＰＣＩ−ＰＣＩ・ブリッジ
１１７  第２のＰＣＩバス
１１９  ＰＣＩ−ＰＣＩ・ブリッジ
１２１  第３のＰＣＩバス
２０１  ＰＣＩブリッジ回路
２０３  接続手段
２０５  コネクタ
２０７  ＯＵＴバッファ
２０９  ＩＮバッファ
２１１，２１３  ＢＣＲ
２１５，２１７  Ｚレジスタ
２１９，２２１  Ｘカウンタ
２２３  ，２２５  ＣＡＷＯＲカウンタ
２２７，２２９  Ｒ／Ｄビット
２３１，２３３  ＴＲＨビット
２３５，２３７  ＨＷＡＤビット
【図１】
0004267177.tif 000002
【図２】
0004267177.tif 000003
【図３】
0004267177.tif 000004
【図４】
0004267177.tif 000005
【図５】
0004267177.tif 000006