(57)【要約】【課題】１つのデータ要求の処理を、前の要求の処理が完全に完了する前に開始することのできる、接続された拡張デバイスからの複数の未処理データ要求を処理する方法を提供すること。【解決手段】コンピュータシステムに接続された拡張デバイスから要求された複数の未処理のデータを処理する方法、装置、およびシステムを提供する。１つのデータ要求の処理は、前の要求が完全に処理される前に開始する。複数のデータ要求は、コンピュータシステムからフェッチされ、重複するものについて実行されることができる。後続するデータ要求からのデータは、前の要求のデータの帰還の完了前にフェッチされることもできる。未処理データ要求のそれぞれの記録および帰還した要求データは記憶される。帰還した要求データは、要求データが要求された順序で拡張デバイスに戻る。【選択図】図１
2004303239.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムのＩ／Ｏブリッジチップに接続された拡張デバイスからの複数の未処理データ要求を処理する方法であって、
前記拡張デバイスから２つ以上のデータ要求を受け取るステップであって、前記データ要求はそれぞれ、被要求データのロケーションおよび被要求データの長さを含む、前記２つ以上のデータ要求を受け取るステップと、
前記拡張デバイスから送られた各データ要求にしたがって、前記コンピュータシステム内の他の構成要素にデータを要求するステップであって、他の構成要素へのデータ要求は、他の構成要素への前のデータ要求が完了する前に発行される、前記他の構成要素にデータを要求するステップと、
前記Ｉ／Ｏブリッジチップから前記他の構成要素が受け取ったデータ要求にしたがって、前記Ｉ／Ｏブリッジチップによる前記他の構成要素から被要求データを受け取るステップと、
受け取った被要求データを前記拡張デバイスに返すステップと、
を含む、拡張デバイスからの複数の未処理データ要求を処理する方法。
【請求項２】
前記拡張デバイスから送られた各データ要求にしたがって、前記コンピュータシステム内の他の構成要素にデータを要求するステップは、前記Ｉ／Ｏブリッジチップによって行われる、請求項１記載の拡張デバイスからの複数の未処理データ要求を処理する方法。
【請求項３】
前記被要求データを前記拡張デバイスに返すステップは、前記Ｉ／Ｏブリッジチップによって行われる、請求項１記載の拡張デバイスからの複数の未処理データ要求を処理する方法。
【請求項４】
各未処理要求の記録を格納するステップと、
前記他の構成要素から前記Ｉ／Ｏブリッジチップに返された前記被要求データをデータ記憶デバイスに格納するステップと、
前記被要求データを前記拡張デバイスに、前記被要求データが要求された順に返すステップと、
をさらに含む、請求項１記載の拡張デバイスからの複数の未処理データ要求を処理する方法。
【請求項５】
コンピュータシステムに接続された拡張デバイスからの複数の未処理データ要求を処理する装置であって、
命令を実行するプロセッサを備え、前記命令は前記プロセッサに、
（ａ）前記拡張デバイスから受け取った各データ要求に従って、前記コンピュータシステムからデータをフェッチすることと、
（ｂ）フェッチされた各データ要求の結果を前記拡張デバイスに返すステップであって、その後のデータ要求からのデータは、前のデータ要求のデータが返る前にフェッチされる、前記フェッチされた各データ要求の結果を前記拡張デバイスに返すことと、
を実行させる、拡張デバイスからの複数の未処理データ要求を処理する装置。
【請求項６】
前記プロセッサは、前記拡張デバイスおよび前記コンピュータに接続されたＩ／Ｏブリッジチップを備える、請求項５記載の拡張デバイスからの複数の未処理データ要求を処理する装置。
【請求項７】
（ａ）各未処理要求の記録と（ｂ）前記コンピュータシステムから返された、フェッチされた各データ要求の結果とを格納するメモリをさらに備え、
前記プロセッサは、前記メモリに格納されているフェッチされた各データ要求の前記結果を、該装置が前記拡張デバイスから前記データ要求を受け取った順序で返すように構成される、請求項５記載の拡張デバイスからの複数の未処理データ要求を処理する装置。
【請求項８】
接続デバイスと併用するためのシステムであって、
拡張デバイスに接続されるように適合されたコンピュータシステムと、
前記拡張デバイスからの複数の未処理データ要求を処理するＩ／Ｏブリッジチップであって、
（ａ）拡張デバイスから受け取った各データ要求に従って、前記コンピュータシステムからデータをフェッチすることと、
（ｂ）フェッチされた各データ要求の結果を前記拡張デバイスに返すことと、
を実行するように構成され、前記Ｉ／Ｏブリッジチップは、前記コンピュータシステムからデータが返る前の所定の時間量でデータをフェッチし、前記時間量は複数のデータ要求にまたがりうる時間量である、前記Ｉ／Ｏブリッジチップと、
前記コンピュータシステムに物理的にそれぞれ接続された、前記Ｉ／Ｏブリッジチップの第１端および第２端と、
プロトコルに従って動作する拡張デバイス用バスであって、該バスに接続されるように適合された拡張デバイスが複数の未処理データ要求を有し、前記コンピュータシステムに送られた各データ要求の長さを指定できるようにする、拡張デバイス用バスと、
を備えるシステム。
【請求項９】
前記拡張デバイス用バスに物理的に接続されるとともに、前記Ｉ／Ｏブリッジチップを介して前記コンピュータシステムに論理的に接続される拡張デバイスをさらに備えた、請求項８記載のシステム。
【請求項１０】
前記Ｉ／Ｏブリッジチップは、
（ａ）各未処理要求の記録を格納し、（ｂ）前記コンピュータシステムから返された、フェッチされた各データ要求の前記結果を順不同で格納するメモリをさらに備え、
前記Ｉ／Ｏブリッジチップの前記メモリは、該メモリに格納されている、フェッチされた各データ要求の前記結果を、前記Ｉ／Ｏブリッジチップが前記拡張デバイスから前記データ要求を受け取った順で返すように構成された、請求項８記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的に拡張デバイスとシステムリソースの間の通信に関し、特に、システムリソースからのデータに関する、拡張デバイスからの複数の未処理データ要求を処理する方法、装置、およびシステムに関する。
【背景技術】
【０００２】
コンピュータシステムに取り付けられた拡張デバイスは、周辺構成要素相互接続（ＰＣＩ）および業界標準アーキテクチャ（ＩＳＡ）等のプロトコルに従って動作するバスを介して、コンピュータシステムの残りの部分と通信する。拡張デバイスの例としては、入出力（Ｉ／Ｏ）カード、ビデオカード、ネットワークカード、サウンドカード、および記憶デバイスが挙げられる。
【０００３】
拡張デバイスは、Ｉ／Ｏブリッジチップと呼ばれるチップを通してシステムリソースにアクセスする。Ｉ／Ｏブリッジの主なタスクは、データを拡張デバイスとシステムリソースの間で伝送することである。ブリッジチップは、拡張デバイスが要求するデータを検索し、そのデータをカードに向ける。
【０００４】
従来の拡張デバイス通信プロトコルでは、必要なデータブロックのサイズを指定することなしで、拡張デバイスが１つのデータロケーションについての２つ以上の未処理要求を有することができなかった。代表的な従来の拡張デバイスは、単一のロケーションからデータ要求を行い、Ｉ／Ｏブリッジチップが、要求されたロケーションから始まるデータをフェッチして返し、拡張デバイスがＩ／Ｏブリッジにストップ要求を送るまで、メモリを通して逐次続ける。ＰＣＩ−Ｘ等、最近開発された拡張デバイス通信プロトコルでは、拡張デバイスが複数の未処理データ要求を有し、各要求に必要とされるデータブロックの長さを指定することが可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
こういった新しい拡張デバイス通信プロトコルでは、拡張デバイスが複数の未処理データ要求を有することが可能であるが、依然として、現在のＩ／Ｏブリッジチップ技術における制約により、一度に処理されるのは１つのデータ要求のみである。このようなデータ要求の逐次処理は、Ｉ／Ｏバス帯域の不効率な利用につながり、したがってこのようなプロトコルを介して接続された拡張デバイスのパフォーマンスを低下させる。ブリッジチップは、次のデータを被要求システムリソースから検索するために可変量の時間を要し、要求される時間は比較的長くなりうる。逐次処理の場合、ブリッジチップは、次のデータ要求を処理する前に、１つの要求が被要求システムリソースから検索され、拡張デバイスに返されるのを待たなければならない。したがって、当分野において、１つのデータ要求の処理を、前の要求の処理が完全に完了する前に開始することのできる、接続された拡張デバイスからの複数の未処理データ要求を処理する方法、装置、およびシステムが必要である。
【課題を解決するための手段】
【０００６】
したがって、本発明の目的は、１つのデータ要求の処理を、前の要求の処理が完全に完了する前に開始することのできる、コンピュータシステムに接続された拡張デバイスからの複数の未処理データ要求を処理する新しい、改良された方法、装置、およびシステムを提供することにある。
【０００７】
本発明の一態様によれば、コンピュータシステムに接続された拡張デバイスからの複数の未処理データ要求が、拡張デバイスからの各データ要求を、コンピュータシステムの残りの部分に接続されたＩ／Ｏブリッジチップに送ることによって処理され、各データ要求は、被要求データのロケーションの指示および被要求データの長さの指示を含む。データは、拡張デバイスから送られた各データ要求に従って、コンピュータシステム中の他の構成要素からフェッチされる。フェッチされたデータが、行われたデータフェッチに従ってコンピュータシステムからＩ／Ｏブリッジチップに返される。フェッチされた各データ要求の結果が、Ｉ／Ｏブリッジチップから拡張デバイスに返される。
【０００８】
本発明の別の態様は、コンピュータシステムに接続された拡張デバイスからの複数の未処理データ要求を処理する装置に関する。この装置は、（１）拡張デバイスから受け取った各要求に従って、コンピュータシステムからデータをフェッチし、（２）フェッチされた各データ要求の結果を拡張デバイスに返すように構成される。
【０００９】
本発明のさらなる態様は、複数の未処理データ要求が同時に処理される、拡張デバイスと、拡張デバイスが接続されたコンピュータシステムとの間の通信帯域の利用を最大化するシステムに関する。このシステムは、コンピュータシステムと、コンピュータシステムに接続された拡張デバイスからの複数の未処理データ要求を処理可能なＩ／Ｏブリッジチップと、拡張デバイスと、を備える。Ｉ／Ｏブリッジチップは、（１）拡張デバイスから受け取った各要求に従って、コンピュータシステムからデータをフェッチし、（２）フェッチされた各データ要求の結果を拡張デバイスに返すように構成される。Ｉ／Ｏブリッジチップの両端は、コンピュータシステムおよび拡張デバイス用バスに物理的に接続される。拡張デバイス用バスは、接続された拡張デバイスが複数の未処理データ要求を有し、各データ要求の長さを指定することのできるプロトコルに従って動作する。拡張デバイスは、拡張バスに物理的に接続され、Ｉ／Ｏブリッジチップを介してコンピュータシステムに論理的に接続される。
【００１０】
本発明のさらに他の態様および利点は、本発明を実行するのに考えられる最良の形態の単なる例示として、本発明の好ましい実施形態を図示し説明する以下の詳細な説明から当業者に容易に理解されよう。認められるように、本発明は他の異なる実施形態も可能であり、本発明のいくつかの詳細は、明確な様々な点で変更が可能であり、これらはすべて本発明から逸脱しない。したがって、図面および図面の説明は、制限ではなく例示的な性質のものであるとみなすべきである。
【００１１】
本発明は、制限ではなく例として添付図面の中の図に示され、図面中、同じ参照番号表示を有する要素は、全体を通して同様の要素を表している。
【発明を実施するための最良の形態】
【００１２】
本明細書において使用する「コンピュータシステム」という語は、「コンピュータ」の代わりに使用される。一般にコンピュータと呼ばれるものは、実際には、少なくとも１つのプロセッサ、メインメモリ、および入力デバイスを備えたシステムである。コンピュータシステムは、任意選択で、ハードディスク等の固定記憶媒体、フロッピーディスクまたはＣＤ−ＲＯＭドライブ等のリムーバブル記憶デバイス、モニタ等の出力デバイス、追加の入力デバイス、および拡張バスを介してシステムに接続された１つまたは複数の拡張デバイスを備える。図示の本発明の実施形態は、拡張バスを介してシステムに接続されたデータ要求デバイスを対象とするが、実際に、本発明は、Ｉ／Ｏブリッジを介してプロセッサとインタフェースする任意のコンピュータシステム構成要素によるデータ要求を対象とすることができる。
【００１３】
まず最初に、本発明のチップアーキテクチャの高レベルブロック図を示す図１を参照する。本発明の好ましい一実施形態において、Ｉ／Ｏブリッジチップ１０は拡張デバイス２０とメモリ３０の間をインタフェースする。好ましい実施形態において、Ｉ／Ｏブリッジチップ１０は、拡張デバイス２０によるダイレクトメモリアクセス（ＤＭＡ）要求を処理する場合について示されている。代替として、Ｉ／Ｏブリッジチップ１０は、他のシステムリソースからのデータについての、拡張デバイス２０による他の種類の要求も処理することが可能である。
【００１４】
拡張デバイス２０は、最大で固定数までの未処理要求を有することができる。拡張デバイス２０は、データ要求をＩ／Ｏブリッジチップ１０に送る。図１の実施形態において、拡張デバイス２０は一度に最大で８つの未処理要求を有するが、代替として、拡張デバイス２０は別の数の未処理要求を有することが可能であることを当業者は理解しよう。代替として、拡張デバイス２０を他の任意の拡張デバイスで置き換えてもよい。
【００１５】
拡張デバイス２０とＩ／Ｏブリッジチップ１０の間の接続は、一度に複数のデータ要求を行い、各要求の長さを指定するＰＣＩ−Ｘバスである。代替として、異なる接続を使用してもよい。
【００１６】
Ｉ／Ｏブリッジチップ１０は、フェッチマシン１００およびデータリターンマシン１１０を含み、これらは一緒になって状態マシン１１５を形成する。拡張デバイス２０はＤＭＡ要求をＩ／Ｏブリッジチップ１０に送り、ＤＭＡ要求は、要求先入れ先出し（ＦＩＦＯ）キューに各ＤＭＡ要求を格納するように構成されたレジスタ１４０に格納される。ＦＩＦＯキューは、キュー中の最も古いアイテムがキューから取り出されてレジスタ１４０の出力に供給される次のアイテムになるキューである。
【００１７】
各要求は、メモリから要求されたデータの最初のラインのアドレス、および要求の長さ（行数で）を含む。好ましい実施形態において、ラインは６４バイト長であるが、この長さは本発明に影響を及ぼすことなく変化しうることを当業者は理解しよう。
【００１８】
拡張デバイス２０がＤＭＡ要求を受け取ると、要求が要求ＦＩＦＯキュー１４０の最後に配置される。以下にさらに詳細に述べるように、状態マシン１１５は、準備ができると、要求ＦＩＦＯキュー１４０の最初にあるＤＭＡ要求を取り出す。進行中のＤＭＡ要求がない場合、キューの最初にある要求が第１の要求レジスタ１１２に移される。第１の要求レジスタ１１２は、Ｉ／Ｏブリッジチップ１０から拡張デバイス２０に返す次のラインのデータのアドレスを常に保持している。状態マシン１１５は、第１の要求レジスタ１１２中の最初のラインの要求のアドレスをフェッチＦＩＦＯキュー１２０内に配置する。
【００１９】
フェッチＦＩＦＯキュー１２０中の被要求アドレスが取り出され、チップ１０によってメモリ３０に送られる。
【００２０】
ＤＭＡ要求が１ラインよりも多い場合は、第１の要求レジスタ１１２中のＤＭＡ要求の２番目のラインのアドレスおよび対応する要求の長さ（すなわち、第１の要求レジスタ１１２中のＤＭＡ要求の長さから１を引いたもの）からなる要求が、フェッチ要求レジスタ１０３にロードされる。たとえば、４ラインの要求が要求ＦＩＦＯキュー１４０から取り出される場合、要求の２番目のラインのアドレスが、要求が他に３つのライン、すなわち長さ３を含むことを示すビットとともに、フェッチ要求レジスタ１０３にロードされる。
【００２１】
次に、フェッチマシン１００が、フェッチ要求レジスタ１０３中の値に従ってデータをフェッチする。フェッチ要求レジスタ１０３中の要求の長さがゼロよりも大きい場合、フェッチマシン１００は、フェッチ要求レジスタ１０３中の要求のアドレスをフェッチＦＩＦＯキュー１２０に配置する。フェッチ要求レジスタ１０３中の要求の長さがゼロよりも大きい場合、フェッチマシン１００はこの長さを１だけ減分し、フェッチ要求レジスタ１０３中の要求のアドレスをメモリの次のラインのアドレスに増分する。フェッチ要求レジスタ１０３中の要求の長さがゼロに達した場合、これは、要求のすべてのラインがフェッチされたという信号である。
【００２２】
状態マシン１１５が要求ＦＩＦＯキュー１４０の最初にあるＤＭＡ要求を取り出すときに、すでに進行中のＤＭＡ要求がある場合、要求は第２の要求レジスタ１０２にロードされる。
【００２３】
フェッチマシン１００は、要求のフェッチを終えると、第２の要求レジスタ１０２中にＤＭＡ要求があるか否かをチェックする。マシン１００が要求のフェッチを終えたときに、第２の要求レジスタ１０２中に要求がある場合、その要求がフェッチ要求レジスタ１０３にロードされる。フェッチマシン１００は次に、上に述べたように、フェッチ要求レジスタ１０３中の値に従ってデータをフェッチする。
【００２４】
フェッチ深度、すなわちフェッチするデータのライン数に対する限度、たとえばプログラム可能な、または設定可能な限度が使用される。たとえば、第１および第２の要求が４ラインであり、深度限度が６に設定される場合、フェッチマシン１００は最終的に、第２の要求の３ラインをフェッチする。動作にあたり、第１の要求の最初のラインがフェッチされ、深度限度に対応する追加の６ラインがフェッチされ、第１の要求からの３ラインおよび第２の要求からの３ラインが残る。
【００２５】
ラインがメモリ３０から拡張デバイス２０に返される都度、追加の１ラインが第２の要求からフェッチされる。プリフェッチ量とも呼ばれるフェッチ深度、たとえば上記例では６は、図２を参照して図示し以下に述べる代替の設計では複数の要求にまたがることができる。たとえば、深度限度が６であり、複数の１ライン要求を受け取った場合、第１の要求は１ラインフェッチされることになり、次の６つの要求は、要求毎に１ラインがフェッチされることになる。このようにして、深度限度は複数のフェッチ要求にまたがる。深度限度は、個々の要求のサイズに関わりなく、要求のリストにわたってスクロールするウィンドウとして動作する。
【００２６】
データがメモリ３０からＩ／Ｏブリッジチップ１０に返ると、そのデータがデータ記憶デバイス１３０に格納される。データ記憶デバイス１３０は、完全アソシアティブキャッシュである。代替として、他の任意の種類のデータ記憶デバイスを完全アソシアティブキャッシュの代わりに使用してもよい。
【００２７】
データリターンマシン１１０は、拡張デバイス２０にデータを返す。データリターンマシン１１０は、第１の要求レジスタ１１２中のアドレスに対応するデータがメモリ３０から返されたこと、また現在、データ記憶デバイス１３０内に配置されていることをチェックする。これらデータが存在する場合、データリターンマシン１１０は、これらデータを検索し、データ記憶デバイス１３０から取り出して拡張デバイス２０に返す。
【００２８】
拡張デバイス２０に返す次のラインがメモリ３０からＩ／Ｏブリッジチップ１０に返されたかもしれないが、次のラインを拡張デバイス２０に返す必要のあるときにデータ記憶デバイス１３０内に存在しない場合もある。データ記憶デバイス１３０中のラインに対応するメモリロケーションにあるデータが、そのラインがデータ記憶デバイス１３０に格納された後であるが、拡張デバイス２０に返される前に変更された場合、そのラインはデータ記憶デバイス１３０から取り出される。この場合、データリターンマシン１１０は、返すべき次のラインをフェッチする。
【００２９】
データリターンマシン１１０は、ラインを拡張デバイス２０に返した後、第１の要求レジスタ１１２中の値を更新する。要求の長さが１だけ減分され、アドレスは、返すべき次のラインに設定される。現在処理されているＤＭＡ要求中にまだラインがある場合、これは、アドレスをメモリ中の次のラインのアドレスに増分することを単に含むことになる。
【００３０】
動作は先に述べたように、現在の要求のすべてのラインが拡張デバイス２０に返されるまで続けられる。データリターンマシン１１０は、要求を返し終える（第１の要求レジスタ１１２中の要求の長さがゼロに達することによって通知される）と、第２の要求レジスタ１０２中に要求があるか否かをチェックする。要求がある場合、その要求が第２の要求レジスタ１０２から第１の要求レジスタ１１２にコピーされ、データリターンマシン１１０はそのＤＭＡ要求を拡張デバイス２０に返す。
【００３１】
図１のシステムが、Ｉ／Ｏブリッジチップ１０とメモリ３０の間に有することのできる未処理ＤＭＡ要求の数には制限がある。未処理ＤＭＡ要求の数は、１つのみの第２の要求レジスタ１０２を使用することによって制限される。Ｉ／Ｏブリッジチップ１０とメモリ３０の間に２つの未処理要求がある場合、第３の要求は、図１のシステムを使用して処理することができない。第１の要求情報は第１の要求レジスタ１１２中に保持される。第２の要求情報は第２の要求レジスタ１０２に保持される。これらレジスタのいずれか一方が第３の要求についての情報で上書きされると、上書きされた要求にデータを返せるようにする情報が失われる。第３の未処理要求を処理するために、追加の要求レジスタを追加して、第３の要求情報を格納する必要がある。Ｉ／Ｏブリッジチップ１０は、以前と同様に引き続き動作する。これにより、状態マシン１１５が要求ＦＩＦＯキュー１４０に存在している追加の要求を処理する準備ができていないことの理由が提供される。
【００３２】
図２のシステムにおいて、追加のＦＩＦＯキューである、キューを有するリターン要求ＦＩＦＯ１５０が追加される。リターン要求ＦＩＦＯ１５０は第１および第２の要求レジスタ１１２および１０２に接続される。図２での動作方法は、図２では、フェッチマシン１００が、要求を第２の要求レジスタ１０２からフェッチマシン１００にロードすると、要求のコピーもリターン要求ＦＩＦＯキュー１５０に配置することを除き、図１での動作方法と同じである。データリターンマシン１１０が、第１の要求レジスタ１１２中の要求の長さがゼロに達したことによって通知されるように、要求全体を返し終えると、マシン１１０は、リターン要求ＦＩＦＯキュー１５０が要求を保持しているか否かをチェックする。リターン要求ＦＩＦＯキュー１５０が要求を保持している場合、データリターンマシン１１０は次の要求をリターン要求ＦＩＦＯキュー１５０から取り出して第１の要求レジスタ１１２に入れ、それからそのＤＭＡ要求を拡張デバイス２０に返す。
【００３３】
図１および図２のシステムでは、データが拡張デバイス２０に返される際のギャップがなくなる。このために、図１および図２のシステムは、データラインが実際に返されるときに先だって特定量の時間、各データラインをフェッチするように設計されなければならない。データを返す際のギャップをなくすように図１および図２のシステムの厳密な構成を決定するために、システムは以下に従って構成されなければならない。
【数１】
2004303239.tif 000003
【００３４】
式中、ｒｍ＝平均メモリ待ち時間、すなわちフェッチが行われてからデータがＩ／Ｏブリッジチップ１０に返されるまでの平均待ち時間であり、ｒｃ＝Ｉ／Ｏブリッジチップ１０が各データラインをＩ／Ｏブリッジチップから拡張デバイス２０に返すためにかかる微分時間であり、Ｌ＝ラインサイズ、ｖ＝拡張デバイス２０とＩ／Ｏブリッジチップ１０の間の接続を横切るバイト転送速度、ｎ＝データを返す際のギャップをなくすために、本発明によりＩ／Ｏブリッジチップ１０が返す前にフェッチすべきライン数である。
【００３５】
たとえば、ｒｍ＝１０００ナノ秒／メモリから要求されるライン、Ｌ＝６４バイト、およびｖ＝１ＧＢ／秒の場合、ｒｃ＝６４ｎｓ、かつｎ＝１５．６２５ラインである。この場合、Ｉ／Ｏブリッジチップ１０は、データを返す際のギャップをなくすために、データを返すに先だって１６ラインをフェッチしなければならない。
【００３６】
同時に、Ｉ／Ｏブリッジチップ１０とメモリ３０の間に存在することが可能な未処理要求の数にも制限がある。Ｉ／Ｏブリッジチップ１０は、メモリ３０から返すために第１のフェッチに十分に長い時間がかかる場合、メモリ３０から返されたすべてのデータ（潜在的にすべての未処理のフェッチから１を引いたものでありうる）を順不同でデータ記憶デバイス１３０に格納しなければならない。データ記憶デバイス１３０は有限の容量を有するため、フェッチの持続時間は、潜在的に、Ｉ／Ｏブリッジカード１０によって行われる未処理フェッチの数に制約を課しうる。したがって、Ｉ／Ｏブリッジカード１０が行うことができるフェッチの数に上限が設けられる。これにより、状態マシン１１５が、要求ＦＩＦＯキュー１４０中に存在するさらなる要求を処理する準備ができないときがあることの理由についての第２の説明が提供される。Ｉ／Ｏブリッジチップ１０は、データ記憶デバイス１３０中のスペースよりも多くの、メモリ３０への未処理フェッチを有することができない。
【００３７】
図３は、拡張デバイス２０、ブリッジチップ１０、およびメモリ３０の間のトランザクションシーケンス例を示す。このトランザクション例では、チップ１０が、それぞれ４ラインの３つの要求、すなわちＡ、Ｂ、およびＣをデバイス２０から受け取る。上の動作説明によれば、チップ１０は要求をメモリ３０に提供し、メモリ３０からデータリターンを受け取る。データリターンを受け取ると、チップ１０はデータリターンをデバイス２０に提供する。セクション３００（破線）に示すように、要求Ｂのラインは、要求Ａを満たすデータのすべてのラインを返すことが完了する前に要求されることに留意されたい。
【００３８】
本発明の特徴は、第１の要求に応答するデータがシステムリソースからＩ／Ｏブリッジチップに返される前に、または返されている間に、Ｉ／Ｏブリッジがシステムリソースからより多くのデータ要求をフェッチすることができることにある。データは、システムから順不同で戻る場合があり、この場合は、Ｉ／Ｏブリッジチップがデータをシステムリソースから戻されたときに処理し、データが拡張デバイスに予期される順で返されるように保証する。このようにして、複数の未処理データ要求を処理することができ、したがってＩ／Ｏカードからの各要求の待ち時間を隠すことができる。処理可能な未処理要求の数は、データが拡張デバイスに予期される順で返されるように保証するため、返されたメモリのバッファを保持し、未処理要求を追跡しなければならないＩ／Ｏブリッジチップの記憶容量によってのみ制限される。
【００３９】
本発明が上に述べたすべての態様および利点を満たすことが、当業者により容易に理解されよう。上記明細書を読んだ後、当業者は、本明細書に大まかに開示した本発明の同等物および各種他の態様に各種変更、置換を行うことが可能になろう。したがって、本発明に認められる保護は、併記の特許請求の範囲に含まれる規定およびその同等物によってのみ制限されるものと意図される。
【図面の簡単な説明】
【００４０】
【図１】本発明の好ましい一実施形態のチップアーキテクチャの高レベルブロック図。
【図２】本発明の代替の一実施形態のチップアーキテクチャの高レベルブロック図。
【図３】本発明の一実施形態により実行されるトランザクションシーケンス例のトランザクションシーケンス図。
【図１】
2004303239.tif 000004
【図２】
2004303239.tif 000005
【図３】
2004303239.tif 000006