(57)【要約】回路構成、装置および方法は、分割トランザクション相互接続、即ちバス１６ａを伴う中間バッファ２８内へのデータの転送を、中間バッファ２８内の空きペースの量とそのデータ転送に結び付けられたデータ転送リクエストがデータ転送リクエストのターゲットである共有リソース１２において処理される準備がされているか否かとの両方に基づいてそのような転送を調整することによって、制御する。従って、少なくともある形式のデータ転送リクエストのための中間バッファ２８内へのデータ待機転送が共有リソース１２によって処理される準備がまだできていないデータ転送リクエストと関連付けられている場合は、いつでも、中間バッファ２８内へのデータ転送が禁止され、よって、相互接続１６ａは自由に他の形式の未処理の転送リクエストを処理し、それによって、そのリクエストは待ち時間の削減を達成させることが可能となる。例えば、データ転送リクエストは共有メモリ６２へのグラフィック専用高速ポート（Ａｃｃｅｌｅｒａｔｅｄ Ｇｒａｐｈｉｃｓ Ｐｏｒｔ（ＡＧＰ））書き込みトランザクションを示し、それにより、中間バッファ２８のための制御ロジック３４はそのトランザクションに関連付けられた書き込みデータを記憶するために使用され、少なくとも１ブロックの空きペース（書き込みトランザクションを開始するのに必要なスペースの最小量を表す）が中間バッファ２８内に存在し、並びに、その共有メモリ６２においてトランザクションを処理する準備ができているということの両方を満たさない限り、ＡＧＰ書き込みトランザクションと関連付けられた書き込みデータの記憶を選択的に禁止するように構成されている。
2004508634.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）　複数のリクエスタからの複数のデータ転送リクエストを受け取るように構成されたリクエスタインタフェースであって、前記複数のデータ転送リクエストのうち第１のデータ転送リクエストが前記複数のリクエスタのうち第１のリクエスタと関連するリクエスタインタフェースと、
（ｂ）　　　　前記リクエスタインタフェースによって受け取られた前記データ転送リクエストを共有リソースへ転送するように構成された共有リソースインタフェースと、
（ｃ）　　　　前記第１のデータ転送リクエストに応答して前記第１のリクエスタから前記第１のデータ転送リクエストに関連するデータを受け取り、その後、該データを前記共有リソースへ転送するように構成された中間バッファと、
（ｄ）　　　　前記中間バッファと結合された中間バッファ制御ロジックであって、前記第１のデータ転送リクエストが前記共有リソースにおいて処理される準備がなされかつ前記中間バッファにおいて所定の量のスペースが使用可能になるまで、前記第１のリクエスタから前記中間バッファへの前記第１のデータ転送リクエストと関連するデータの転送を禁止するように構成された中間バッファ制御ロジックとを備えた回路構成。
【請求項２】
前記リクエスタインタフェースは、複数のリクエスタコントローラを含み、各リクエスタコントローラは前記複数のリクエスタのうちの１つを前記共有リソースインタフェースとインタフェースするように構成されていることを特徴とする請求項１に記載の回路構成。
【請求項３】
前記リクエスタインタフェースは、
（ａ）　前記第１のリクエスタからデータ転送リクエストを受け取るように構成されたリクエストバッファと、
（ｂ）　　　　前記リクエストバッファと結合されたリクエストバッファ制御ロジックであって、該リクエストバッファ制御ロジックは前記リクエストバッファから前記共有リソースインタフェースへデータ転送リクエストを転送するように構成されたリクエストバッファ制御ロジックとを含み、
前記中間バッファ制御ロジックは、前記第１のデータ転送リクエストが前記共有リソースにおいて処理される準備ができているときを決定するために、さらに前記リクエストバッファへ結合されていることを特徴とする請求項１に記載の回路構成。
【請求項４】
前記中間バッファ制御ロジックは、前記第１のデータ転送リクエストが前記共有リソースにおいて処理される準備ができておりかつ前記中間バッファにおいて所定の量のスペースが使用可能であるときに、前記中間バッファへ前記第１のデータ転送リクエストと関連するデータを転送するように構成され、前記リクエストバッファ制御ロジックは、前記中間バッファから前記共有リソースへの前記第１のデータ転送リクエストと関連するデータの転送を開始するために、前記中間バッファへ結合されていることを特徴とする請求項３に記載の回路構成。
【請求項５】
前記中間およびリクエストバッファのそれぞれはキューを含むことを特徴とする請求項３に記載の回路構成。
【請求項６】
前記中間バッファ制御ロジックは、前記中間バッファにおいて前記第１の所定量のスペースよりも大きい第２の所定量のスペースが利用可能になっている場合に、前記第１のデータ転送リクエストが前記共有リソースにおいて処理される準備ができているか否かに関わらず、前記中間バッファへ前記第１のデータ転送リクエストに関連するデータの転送をするようにさらに構成されていることを特徴とする請求項１に記載の回路構成。
【請求項７】
前記第１の所定量のスペースは、前記第１のデータ転送リクエストに関連するデータの一部分を記憶するために必要とされる最小量のスペースを含み、前記第２の所定量のスペースは、前記第１のデータ転送リクエストに関連するデータの全てを記憶するために必要とされる最小量のスペースを含むことを特徴とする請求項６に記載の回路構成。
【請求項８】
前記第１のデータ転送リクエストは、グラフィック専用高速ポート（ＡＧＰ）書き込みトランザクションを含み、前記第１の所定量のスペースはＡＧＰブロックを含むことを特徴とする請求項７に記載の回路構成。
【請求項９】
前記共有リソースインタフェースは、前記共有リソースへ前記中間バッファによって転送されたデータを受け取り、そのようなデータを前記共有リソースへ転送するために、前記中間バッファおよび前記共有リソースの中間に結合されることを特徴とする請求項１に記載の回路構成。
【請求項１０】
請求項１の回路構成を備えた集積回路装置。
【請求項１１】
請求項１の回路構成を備えたデータ処理システム。
【請求項１２】
請求項１の回路構成を定めるハードウェア定義プログラムを備え、該ハードウェア定義プログラムを搬送する信号搬送媒体およびプログラム製品。
【請求項１３】
（ａ）　共有リソースと、
（ｂ）　　　　前記共有リソースへアクセスするためにデータ転送リクエストを生成するようにそれぞれ構成された複数のリクエスタであって、第１のデータ転送リクエストを生成するように構成された第１のリクエスタを含む複数のリクエスタと、
（ｃ）　　　　前記第１のリクエスタからデータ転送リクエストを受け取り、そのデータ転送リクエストを前記共有リソースへ転送するように構成されたリクエストバッファと、
（ｄ）　　　　前記第１のデータ転送リクエストに応答して、前記第１のリクエスタから前記第１のデータ転送リクエストに関連するデータを受け取り、その後、該データを前記共有リソースへ転送するように構成された中間バッファと、
（ｅ）　　　　前記中間バッファと結合された中間バッファ制御ロジックであって、前記第１のデータ転送リクエストが前記共有リソースにおいて処理される準備がなされかつ前記中間バッファにおいて所定の量のスペースが使用可能になるまで、前記第１のリクエスタから前記中間バッファへの前記第１のデータ転送リクエストと関連するデータの転送を禁止するように構成された中間バッファ制御ロジックとを備えた装置。
【請求項１４】
（ａ）　メモリバスに結合され、第１の長さを有するトランザクションを処理するように構成された共有メモリと、
（ｂ）　　　　プロセッサバスと結合され、前記第１の長さを有するトランザクションを発するように構成されたプロセッサと、
（ｃ）　　　　ＡＧＰバスと結合され、前記第１の長さよりも長い第２の長さを有するトランザクションを発するように構成されたグラフィック専用高速ポート（ＡＧＰ）リクエスタと、
（ｄ）　　　　前記メモリバス、プロセッサバスおよびＡＧＰバスに結合されたチップセットであって、
該チップセットは、
（１）　　前記ＡＧＰバスに結合されたＡＧＰインタフェースと、
（２）　　前記プロセッサバスに結合されたプロセッサインタフェースと、
（３）　　前記メモリバスに結合された共有メモリインタフェースと、
（４）　　前記ＡＧＰバスからトランザクションを受け取るように構成されたリクエストバッファと、
（５）　　前記ＡＧＰバスから受け取ったトランザクションと関連するデータを受け取るように構成された中間バッファと、
（６）　　前記リクエストバッファに結合された中間バッファであって、前記トランザクションが前記共有メモリによって処理される準備ができているときに、前記共有メモリインタフェースへ前記リクエストバッファに記憶されたトランザクションを転送するように構成された中間バッファと、
（７）　　前記中間バッファに結合された中間バッファ制御ロジックであって、前記ＡＧＰバスから受け取った第１のトランザクションに関連するデータを、（ｉ）前記中間バッファ内に前記第１のトランザクションを達成するために充分なスペースが存在する、（ｉｉ）中間バッファ内に前記第１のトランザクションを開始するために充分なスペースが存在し、かつ前記第１のトランザクションが前記共有メモリによって処理される準備ができている、のいずれかである場合に、前記中間バッファ内へ転送するように構成された中間バッファ制御ロジックとを備えた装置。
【請求項１５】
共有リソースを複数のリクエスタとインタフェースする方法であって、
（ａ）　前記複数のリクエスタから複数のデータ転送リクエストを受け取り、前記複数のデータ転送リクエストのうち第１のデータ転送リクエストは前記複数のリクエスタのうち第１のリクエスタに関連し、
（ｂ）　　　　前記共有リソースへ前記データ転送リクエストを転送し、
（ｃ）　　　　前記第１のリクエスタから中間バッファへの第１のデータ転送リクエストに関連するデータの転送を、前記第１のデータ転送リクエストが前記共有リソースにおいて処理される準備ができ、かつ前記中間バッファにおいて所定の量のスペースが利用可能になるまで、禁止し、
（ｄ）　　　　前記中間バッファ内に記憶されたデータを前記共有リソースへ転送することを具備する方法。
【請求項１６】
前記第１のデータ転送リクエストが前記共有リソースにおいて処理される準備ができており、かつ前記中間バッファにおいて前記所定の量のスペースが利用可能になっているときに、前記第１のデータ転送リクエストに関連するデータを前記中間バッファへ転送することをさらに具備することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記中間バッファにおいて、前記第１の所定量のスペースよりも大きい第２の所定量のスペースが利用可能となっている場合に、前記第１のデータ転送リクエストが前記共有リソースにおいて処理される準備ができているか否かに関わらず、前記第１のデータ転送リクエストに関連するデータを前記中間バッファへ転送することをさらに具備することを特徴とする請求項１５に記載の方法。
【請求項１８】
前記第１の所定量のスペースは、前記第１のデータ転送リクエストに関連するデータの一部分を記憶する必要のある最小量のスペースを含み、前記第２の所定量のスペースは、前記第１のデータ転送リクエストに関連するデータの全てを記憶する必要のある最小量のスペースを含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記第１のデータ転送リクエストは、グラフィック専用高速ポート（ＡＧＰ）書き込みトランザクションを含み、前記第１の所定量のスペースはＡＧＰブロックを含むことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、一般に、電子バスアーキテクチャおよびそのような相互接続に関し、特に、分割トランザクションを用いた複数のリクエスタによるメモリなどの共有リソースのアクセスに関する。
【０００２】
コンピュータや他の電子装置に益々困難なタスクを処理することを要求するのに従い、そのような装置には益々高い性能が求められることになる。情報がそのような装置間にて転送される速度は電子システムの全体の性能に重要な影響をもたらし得るので、多くの装置に特に関連するものとしては、例えば、相互接続された装置間の通信速度または“バンド幅” がある。
【０００３】
複数の電子装置を互いに結合する１つの方法としては、“バス”を用いることによって、多くの電子装置がメモリなどの共有リソースにアクセスすることを可能とするために頻繁に用いられる相互接続をすることである。バス構造において、バスと結合された各装置は、バスに送信された信号を、送信された信号に注意を払っている（バス上への“アドレス”送信によってしばしば示される）意図された目的の装置のみで受信する。アドレス指定されていないいずれの装置もその送信信号を無視する。
【０００４】
分割トランザクションバスは、情報転送がリクエスタによって発せられている個々の“トランザクション”を用いて、アドレス相（ａｄｄｒｅｓｓ ｐｈａｓｅ）およびデータ相（ｄａｔａ ｐｈａｓｅ）の両方を含む各トランザクションで処理されるバス構造の特定の構成である。典型的には、アドレス相の間に、データ転送のロケーションおよびデータの両方は、（例えば、読み出し、書き込みなどの）実行をさせる種のトランザクションと同様に指定される。例えば、トランザクションのアドレス相は、読み出しリクエストがターゲットとなる装置の特定のアドレスに記憶されている情報のうち１６バイトを得ることを実行する、という要求をしてもよい。次に、データ相の間に、要求された現在の情報は、ターゲットとなる装置から要求をした装置までをバスを介して転送される。
【０００５】
分割トランザクションバスの重要な特徴は、トランザクションのアドレス相およびデータ相が互いに“分割（ｓｐｌｉｔ）”されており若しくは逆多重化されており、それによりそのデータ相が任意の固定された時点においてアドレス相に関連して機能することを要求されないことである。アドレス相およびデータ相の分割は、他の生成動作（ｐｒｏｄｕｃｔｉｖｅ ｗｏｒｋ）がトランザクションのアドレス相およびデータ相の間の期間に機能し得るので、分割トランザクションバスの性能をしばしば改善する。例えば、ターゲットとなる装置にとってトランザクションのアドレス相を受信した後バスを介して要求されたデータを送信するためには、２、３バスサイクルかかる場合がある。従って、そのしばらくの間、要求されたデータが送信されるのを待機し、バスをアイドル状態にしておくことなく、他のトランザクションがそのバスを介し始めることができる（“パイプライン”として知られる処理である）。いすれのバスからも得られる最高の性能は、有用な情報がサイクルごとに送信されたときであり、従って、トランザクションを分割できることは、不使用のサイクルの量を最小限にし、即ち、バス効率を最大限にするように役立つことを可能にする。
【０００６】
分割トランザクションの１つの特別な用途としては、グラフィック専用高速ポートバス（Ａｃｃｅｌｅｒａｔｅｄ Ｇｒａｐｈｉｃｓ Ｐｏｒｔ（ＡＧＰ） ｂｕｓ）である。それは、コンピュータにおいて、グラフィック・アクセラレータ（リクエスタとして機能する）とシステムメモリ（共有リソースとして機能する）との間にグラフィカルデータを送信するために用いられる高性能相互接続である。特に３Ｄの用途においては、多くのグラフィック用途が比較的高いバンド幅リクエストを有し、ＡＧＰバスは、そのようなメモリ集約型の用途（ｍｅｍｏｒｙ−ｉｎｔｅｎｓｉｖｅ ａｐｐｌｉｃａｔｉｏｎ）におけるグラフィックデータの送信の高速化に役立つ。
【０００７】
ＡＧＰバスは、最優先読み出し、優先度の低い読み出し、最優先書き込み、優先度の低い書き込みなどを含む多くの異なる種のトランザクションを補助する。各種のトランザクションに対するトランザクションリクエスト（そのトランザクションのアドレス相を示す）は、典型的には、共通のリクエストキュー（ａ ｃｏｍｍｏｎ ｒｅｑｕｅｓｔ ｑｕｅｕｅ）に位置付けられ、そのリクエストは、所定の規則に基づいてそのキューに従って順序付けられる。しかし、各種のトランザクションは、典型的には、それ自体のデータ記憶領域、または、“中間バッファ”を有し、その中のデータはＡＧＰ装置とシステムメモリとの間で転送されるときに一時的に記憶される。ＡＧＰトランザクションに分割特性が与えられると、そのリクエストに関連付けられたデータ転送は、いずれか単一種類のアクセスのためのデータ転送が特定の順序で実行される限りにおいて、異なる順序で実行され得る。
【０００８】
典型的には、ＡＧＰバスは、メモリインタフェースを介して、コンピュータのメインプロセッサによってシステムメモリへのアクセスをも処理するシステムメモリと、そのプロセッサを管理するためのメモリインタフェースおよびシステムメモリへアクセスするＡＧＰに含まれる任意の機能性（ｆｕｎｃｔｉｏｎａｌｉｔｙ）でもって、インタフェースされる。多くの例において、そのシステムは、時にはＡＧＰバスの損失になるが、メインプロセッサとシステムメモリとの間のデータ転送を最適化するように構成される。例えば、ｘ８６プロセッサ構造によって、メインプロセッサおよびシステムメモリは、４クロックサイクルの長さ（クロックサイクルはバス上における最小単位時間を示す）までの比較的“短い”トランザクションを処理するために構成されている。しかし、多くのＡＧＰトランザクションは、比較的長く、従って、メモリインタフェースによって複数のより小さいトランザクションへ分割される必要がある。
【０００９】
部分的には、ＡＧＰバスと多くのメモリインタフェースとの両方の高いパイプライン特性のために、“待機状態”として知られる遅延がある環境においてＡＧＰバスに挿入される必要があるという非効率の潜在的根源が確認された。特に、ＡＧＰ装置は、典型的には、リクエストキューにリクエストを位置付けること並びに利用可能な異なるトランザクションの種類にサポートされた様々な中間バッファとＡＧＰ装置との間のデータ転送を処理することに用いられるＡＧＰバスへ結合されたＡＧＰインタフェースを用いてメモリとインタフェースされている。メモリインタフェースは、順にリクエストキューからリクエストを引き出し、メモリと中間バッファとの間のデータ転送を処理する。結果として、この構成により、メモリインタフェースおよびＡＧＰインタフェースは、典型的に、所与のいずれの時点においても異なるリクエストを処理することができる。
【００１０】
従来のＡＧＰの実施によって、データの１ブロック（４クロックに相当する）を保持するためにトランザクションに関連付けられた中間バッファ内に充分なスペースがある場合に、トランザクションを介して転送されるデータの総てを記憶するために充分な空きスペースが無くとも、ＡＧＰバスにおいて書き込みトランザクションが開始されることが可能になる。ＡＧＰ２．０仕様は、トランザクションにおいて転送される情報のうち最大６４バイトで、３つの速さ、即ち、１Ｘ、２Ｘおよび４Ｘ、に対応する。従って、３２ビット（４バイト）バスによって、１Ｘの速さでは、最大４ブロックが転送のために要求され、２Ｘの速さでは、最大２ブロックが転送のために要求されることができる。しかし、書き込みアクセスがトランザクションを開始するために必要とされる最小スペースが利用可能であるときであって、しかし、そのトランザクションを成し遂げるために必要とされる最小スペースが利用可能でないときに開始された場合には、そのメモリインタフェースが中間バッファ内へのＡＧＰ転送を達成するのに充分なスペースを中間バッファに空けるまで、ＡＧＰバスにおける動作を遅延させるために、待機状態がＡＧＰバスに挿入される必要がある。
【００１１】
待機状態がＡＧＰバスに挿入される期間においては、次のＡＧＰリクエストトランザクションがＡＧＰインタフェースによって開始されることはない。このことは、異なる種のトランザクション（例えば、読み取りトランザクション）が他方でこの期間の間に実行され得るという事実にもかかわらない。さらに、関連する中間バッファにおいてスペースが空けられる前に複数の短いトランザクションがメモリインタフェースに発せられる必要があるので、この問題は、メモリへアクセスするために長いＡＧＰトランザクションを複数の短いトランザクションに分割する必要のために悪化してしまう。
【００１２】
前述した待機状態の問題は典型的には関心事でないという事実にかかわらず、順序規則が他のトランザクションを停滞させるために、性能は依然として最適ではないので、データを記憶するために必要とするスペースの総てが利用可能になるまで中間バッファにおいてトランザクションに関連するデータ転送の開始を待機することは望ましくない選択である。
【００１３】
中間バッファ内で利用可能なスペースの量に依ってのみ分割トランザクションに関連するデータの記憶を調整することは、結果的に、分割トランザクションバスまたは他の相互接続のピーク時の効率を限定してしまう。従って、当該技術において、分割トランザクションバスにおけるトランザクション処理の効率を、特にＡＧＰおよびそれに類似する用途において、改善する必要性がある。
【００１４】
中間バッファ内へのデータの転送制御が、中間バッファ内の空きスペースの量に基づき調整されることに加え、そのデータ転送に関連付けられたデータ転送リクエストがデータ転送リクエストのターゲットである共有リソースにおいて処理される準備ができているか否かに基づき調整される、という回路構成、装置および方法を提供することによって、本発明は従来技術に関連するこれらのおよび他の問題点を処理する。従って、少なくともある種のデータ転送リクエストのための中間バッファ内への転送を待機しているデータが、共有リソースによって処理される準備が未だできていないデータ転送リクエストに関連しているときにはいつでも、中間バッファ内へのデータ転送が禁止される。従って、停滞している他の種の転送リクエストを処理するためのバッファを供給する相互接続を空けることにより、そのリクエストが潜在的に待ち時間の削減を達成し得る。
【００１５】
共有リソースによって処理される準備ができているそのようなデータ転送リクエストに関連するデータ転送は、リクエスタおよび共有リソースの両方が同じリクエストを処理するので、そのリクエストがより速く達成され、比較的短時間しか停滞しないという確率が高くなる。
【００１６】
１つの特定の、しかし排他的なものではないが、本発明の用途において、データ転送リクエストは共有メモリへのＡＧＰ書き込みトランザクションを示し、そのトランザクションに関連付けられた書き込みデータを記憶するために用いられる中間バッファのための制御ロジックは、少なくとも１ブロックの空きペース（書き込みトランザクションを開始するのに必要なスペースの最小量を表す）が中間バッファ内にあるのにおいて存在し、並びに、その共有メモリにおいてトランザクションを処理する準備ができているということの両方を満たさない限り、ＡＧＰ書き込みトランザクションと関連付けられた書き込みデータの記憶を選択的に禁止するように構成されている。
【００１７】
本発明を特徴付けるこれらのおよび他の利点および特徴は、本明細書に記載され、本明細書のさらなる部分を構成する請求項において規定されている。しかし、本発明のより良き理解と、その用途を通して得られる利点および目的のより良き理解のためには、添付図面および本発明による実施の形態を記述した次の記載事項を参照すべきである。
【００１８】
図面を参照して、いくつかの図を通して同じ番号は同様の要素を示す。図１は、本発明に対応する中間バッファ制御を組み込んだ装置１０を示している。装置１０は、複数のリクエスタまたはイニシエータ１４、１６へ結合された共有リソース１２を含む。（図１においてコントローラ１９によって実施されている）共有リソースインタフェースおよびリクエスタインタフェース２０を組み込んだ制御ロジック１８は、共有リソース１２および各リクエスタ１４、１６の間のデータの転送を管理する。
【００１９】
共有リソース１２は、共有アクセスが望ましく、例えば、周辺機器相互接続（ａ ｐｅｒｉｐｈｅｒａｌ ｃｏｍｐｏｎｅｎｔ ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ））バスなどの共有メモリを介して結合された装置などの様々な内部または外部に相互接続された装置のほか、例えば、主メモリ、ワーキングメモリ、様々な補助レベルのメモリなど、種々のレベルのメモリを表す。共有リソース１２は、データベースや大容量記憶装置などの情報記憶システムをも表してもよい。この記載において共有リソースは、典型的には、任意の数のリクエスタに対する“スレーブ”であり、その各々は、共有リソースをアクセスためのリクエストを発することのできる“マスタ”コントローラとして機能する。
【００２０】
各リクエスタは、マイクロプロセッサや他の中央演算処理装置（ＣＰＵ）装置などのように、グラフィックコントローラ、デバイスコントローラ、メモリコントローラなどの他の様々なコントローラと同様に、任意の数のリソースアクセス装置を用いて実施されることができる。
【００２１】
以下に考察される特定の実施の形態においては、例えば、共有リソースはコンピュータのメインメモリとして実施され、リクエスタ１４はコンピュータのＣＰＵとして実施され、リクエスタ１６はグラフィック専用高速ポート（ＡＧＰ）を介してメインメモリとインタフェースされたグラフィックコントローラとして実施されている。しかし、幅広い種類のマスタおよびスレーブ装置が装置１０のリクエスタおよび共有リソースを実施するために利用され得るので、従って、本発明が本明細書に記載した特定の実施の形態に限定されないことを充分に理解されたい。
【００２２】
制御ロジック１８は、複数のリクエスタと共有リソースとの間のインタフェースを表す。共有リソースとの通信は、例えば、コントローラ１９などの共有リソースインタフェースによって、リクエスタ１４、１６の各々との通信をもたらすために用いられるリクエスタインタフェース２０に直接にもたらされる。リクエスタインタフェースが、例えば、コントローラ２１、２２などの複数の専用コントローラであって、それぞれリクエスタ１４、１６とインタフェースするために専用される専用コントローラを含む。
【００２３】
共有リソース１２との通信は、共有リソースバス１２ａを介してもたらされ、リクエスタ１４、１６のそれぞれとの通信は、同様に、それぞれリクエスタバス、即ち、相互接続１４ａ、１６ａによってもたらされる。制御ロジック１８と共有リソースとリクエスタとの間の相互接続は、ポイント−ｔｏ−ポイント（ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔ）またはマルチドロップバス（ｍｕｌｔｉ−ｄｒｏｐ ｂｕｓｅｓ）または他の相互接続を含む任意の数の相互接続技術を用いて実施されることができ、個々のリクエスタはいくつかの環境において同じ相互接続を共有することができることを充分に理解されたい。従って、“バス”という文言の使用は、本発明に対応する任意の数の異なる相互接続技術を含むことを充分に理解されたい。
【００２４】
図示された実施の形態において制御ロジック１８はリクエスタおよび共有リソースとの通信を管理するためにコントローラを用いるが、この機能は他の種の制御ロジックによって処理されることができ、よって、“コントローラ”という文言は、バスまたは他の相互接続の通信を管理するのに適した任意の制御ロジックを含むように理解されるべきであることを充分に理解されたい。さらに、制御ロジック１８は各リクエスタおよび共有リソースへのアクセスをもたらすために互いにインタフェースされた個々のコントローラの使用を通して表されてきたが、これらの様々なコントローラの間に割り当てられた機能は他の環境においては異なるように分割されることを充分に理解されたい。
【００２５】
さらに、“装置”という文言は、コンピュータや他の電子装置などの様々なデータ処理システムを、そのシステムの範囲内の様々な要素と同様に含み、個々の集積回路装置またはその組合せを含むと考慮され得ることに充分に理解されたい。さらに、装置内は、１またはそれ以上の回路構成が組み込まれ、典型的には、１またはそれ以上の集積回路装置で実施され、最も好ましくは、それとインタフェースされた追加の個々の要素を含む。回路構成は、典型的には、ここではハードウェア定義プログラム（ｈａｒｄｗａｒｅ ｄｅｆｉｎｉｔｉｏｎ ｐｒｏｇｒａｍｓ）として記載するが、集積回路装置上に回路構成のレイアウトを定義する１またはそれ以上のコンピュータデータファイルを少なくとも部分的に用いて設計され、製造されることにも認識されたい。そのプログラムは、代表的には、設計ツールによって公知の手法で生成され、続いて、半導体ウェハへ適用される回路構成を規定するレイアウトマスクを作製するために製造の間に用いられる。代表的には、そのプログラムは、ベリログ（ｖｅｒｉｌｏｇ）、ＥＤＩＦ、ＶＨＤＬのようなハードウェア規定言語（ａ ｈａｒｄｗａｒｅ ｄｅｆｉｎｉｔｉｏｎ ｌａｎｇｕａｇｅ（ＨＤＬ））を用いる予め定められたフォーマットで提供される。従って、本発明は、集積回路装置完全に機能させることで実施される回路構成という環境で記述されてきており、また、以下、記述され、当業者は、本発明に対応する回路構成が様々な形態でのプログラム製品として頒布され得ること、および、本発明がその頒布の実際の実行に利用される特定の種類の信号搬送媒体に関係なく等しく適用されることを理解されたい。信号搬送媒体の例としては、揮発性および不揮発性メモリ装置、フロッピディスク、ハードディスク装置、ＣＤ−ＲＯＭおよびＤＶＤなどの記録可能型の媒体に限定することなく、他の中でも、デジタルおよびアナログ通信リンクなどの伝送型の媒体をも含む。
【００２６】
バッファが本発明に対応する中間バッファ制御を図示する目的のために、バス１６ａが分割トランザクションバスとして実施され、コントローラ２２内において本発明に対応する中間バッファ制御が実施されると想定する。従って、以下における検討は、リクエスタコントローラ２２に注目している。この特定の実施のために、コントローラ１９および２１が従来の手法によって実施され得ることが想定される。さらに、いくつかの実施の形態において、バス１２ａもバス１４ａもともに分割トランザクションを補助するために構成されることを要しない。
【００２７】
しかし、ここで記載される機能は、コントローラ２２内の他の中間バッファを制御するために用いられているのと同様に、他のリクエストや共有リソースとのインタフェースをもたらすように用いられてもよい。従って、本発明は図１に示した特定の実施の形態に限定されない。
【００２８】
コントローラ２２はリクエストバッファ２４、データインバッファ２６およびデータアウトバッファ２８を組み込んでいる。リクエストバッファ２４はコントローラによって処理されるべき分割トランザクションのアドレス相を記憶するために用いられ、キューまたは他の適切なデータ構造を用いて実施され得る。リクエスタ１６からの入ったリクエストはコントローラによって自動的に受信され、リクエストバッファ２４に位置付けられる。リソース状態マシーンとしてここで実施されているリソース制御ロジック３０は、共有リソースへ転送するために用いられる共有リソースコントローラ１９へのそのようなリクエストの出力を制御する。以下により詳細に記述されるように、リソース制御ロジック３０は、さらに、各データバッファ２６、２８のリソースの“エンド（ｅｎｄ）”を制御する。
【００２９】
図示された実施の形態において、分離したデータ相はデータを取り込みおよびデータを取り出すために与えられる。そのようなデータ経路にはそれぞれデータバッファ２６、２８が組み込まれている。特に、バッファ２６内のデータは、リクエストに応答して、例えば、共有リソース内に記憶されたデータを取り出すためにリクエスタ１６によって開始された読み出しリクエストに応答して、共有リソースから受け取った取り込みデータを記憶するために用いられる中間バッファを示す。リソース制御ロジック３０は、バッファ２６内のバッファ２６内のデータに結合され、それにより、そのバッファ内の共有リソースから受け取ったデータの記憶を制御する。バス１６ａを介してリクエスタへそのデータを転送する場合には、一旦、バッファ内へそのデータが記憶され、“Ｘ”状態マシーンとしても参照されているように状態マシーンとして示された形態で実施されている制御ロジック３２の中のデータを介して制御される。制御ロジック３２内のデータは、リクエストバッファ２４のリソースエンドにおいて記憶されるアドレス情報と同様に、リクエスタ１６によって送信されるアドレス情報を入力として受信し、そのそれぞれのアドレス情報は、リクエストがリクエスタバス１６ａにおいて処理されていること、および、そのリクエストが共有リソースによって処理される準備ができていることを示す。
【００３０】
データアウトバッファ２８もまた、例えば、共有リソースにデータを記憶するためにリクエスタによって発せられた書き込みリクエストに応答して、リクエスタ１６から共有リソース１２への転送データに用いる中間バッファとして機能する。バッファ２８内に既に記憶されている共有リソースへのデータ転送は、リソース制御ロジック３０によって制御される。一方で、データバッファ２８内のデータの記憶は、データアウト制御ロジック３４を介して制御され、制御ロジック３４は、制御ロジック３２のように、リクエスタ１６によって与えられ、共有リソースによって処理される準備ができている現在のリクエストの表示と同様に、リクエストバッファ２４のリソースエンドからもたらされるアドレス情報を入力として受信する。本発明に対応する中間バッファ制御が装置１０において実施されるのは、制御ロジック３４内においてである。
【００３１】
各バッファ２６および２８は、キューとして実施され得る。他のデータ構造も代替的に用いられてもよい。さらに、バッファ２４から２８のそれぞれは、環境に依存して異なる大きさ（ｓｉｚｅ）を有する。
【００３２】
従って、図示された実施の形態においては、読み出しリクエストは、制御ロジック３０および３２の組合せによってインタフェース２２内において処理され、それにより、読み出しリクエストと関連付けられたアドレス情報は、リクエスタによってリクエストバッファ２４へ転送され、並びに、共有リソースへのそのリクエストの転送は制御ロジック３０を介して制御される。次に、リクエストのデータ相の間に、共有リソースからの取り込みデータは制御ロジック３０によってバッファ２６内に中間データとして制御可能に記憶され、結局制御ロジック３２によって制御されるバス１６ａを介してのリクエスタへのその情報の転送がなされる。
【００３３】
一方で、書き込みリクエストのために、そのようなリクエストのアドレス相は、共通リクエストバッファ２４へ転送され、制御ロジック３０によって制御される共有リソースへのそのようなリクエストの発生がなされる。共有リソースへのデータの書き込みの転送は制御ロジック３０および３４の組合せによって制御され、制御ロジック３４は中間データアウトバッファ２８内へ書き込みデータの記憶を制御し、かつ、制御ロジック３０は共有リソースへのそのデータの転送を制御する。
【００３４】
本発明に対応して、データアウト制御ロジック３４は、中間バッファ２８内にデータを記憶することができないためにリクエスタバス１６ａに要される待機状態の可能性を最小限にするように、そのような手法で、中間バッファ２８内への書き込みデータの記憶を制御する。図２は、例えば、制御ロジック３４の１つの適切な制御アルゴリズムを示す状態図４０を図示している。制御ロジック３４は、４つの状態４２、４４、４６および４８を用いて実施されることができ、また、図２においては、状態Ｓ１からＳ４としても設けられている。状態Ｓ１は、アイドル状態を示し、中間バッファ２８内の記憶のために現在保留している書き込みリクエストが無いときにはいつでも生じる。新しい書き込みリクエストの受信の際に、状態遷移が状態Ｓ２に生じ、現在のリクエストを達成するために充分なスペースが中間バッファ内に存在するか否か、即ち、中間バッファ内のリクエストと関連する総てのデータを記憶するために充分なスペースがあるか否か、を決定する。代表的には、状態Ｓ２における決定は、（そのリクエストのアドレス相から得られる）現在のリクエストに関連するデータの量と、中間バッファ内の既知の利用可能なスペースとを比較することによって実行される。
【００３５】
まず、バッファ内において現在のリクエストを達成するために利用可能であるスペースが不充分であると想定すると、状態遷移は状態Ｓ３に生じ、それにより、リクエストバッファ２４のリソースエンドにおいて処理される現在のリクエストがそのリクエスタエンドにおいて処理される現在のリクエストと同じであるか否かを決定する。さらに、現在のリクエストを開始するために充分なスペースが中間バッファ内に存在するか否かをも決定する。状態マシーンは、その条件が両方とも満たされるまで状態Ｓ３を維持する。次に、一旦、両条件が満たされると、状態遷移は状態Ｓ４に生じ、それにより、現在のリクエストのためのデータ転送を開始する、即ち、リクエストと関連する書き込みデータを中間バッファ内へ転送する処理を開始する。さらに、状態Ｓ２へ戻り、現在のリクエストを達成するために充分なスペースが中間バッファにおいて利用可能である場合には、状態遷移は状態Ｓ４に直接生じ、それによりリクエストのデータ転送を開始する。一旦、データ転送が開始されると、状態遷移はＳ１に戻って生じる。
【００３６】
現在のリクエストを開始しかつ達成するために必要なスペースの量は、代表的には、異なる環境において変化し、リクエストを開始するために必要とされるスペースの量は、代表的には、そのリクエストを達成するために必要とされるスペースの量よりも少ない。ＡＧＰ環境において、例えば、代表的には、ＡＧＰトランザクションを開始するためにリクエストされる中間バッファにおいて最小のスペース量はデータの１ブロック相当であり、一方、ＡＧＰトランザクションを達成するためにリクエストされるスペース量は利用されるアクセスモードに依存して変化し、代表的には、１Ｘモードにおいてデータの４ブロック相当と同程度の量である。しかし、他の環境においては、必要な関連のスペースは変化し得る。
【００３７】
図１へ戻り、共有リソースへアドレスおよび書き込みデータを転送するのに用いられるリソース制御ロジック３０の構成は当業者にとって周知である。例えば、ＡＧＰ実施形態において、制御ロジック３０の実施の形態は公知のＡＧＰ仕様に従って実施され得る。同様に、多くの環境において、例えば、ＡＧＰ環境において、共有リソースから発するデータが典型的にはリクエスタによって直ちに処理されることが可能であるので、制御ロジック３２は典型的にはここで検討されているアルゴリズムを制御する独自の中間バッファを必要としない。従って、受信してすぐにリクエスタバスに位置させることができる。しかし、いくつかの実施の形態においては、このようにすることができない。従って、類似のバッファ制御機能も制御ロジック３２において実施され得る。また、追加的な種類のリクエスト（例えば、高優先度または低優先度のリクエストのような他の種の書き込みリクエスト）が追加的な中間バッファを介して分離して処理され、類似の制御機能はその中間バッファの制御ためにも用いられる。
【００３８】
状態Ｓ１からＳ４によって表される制御アルゴリズムが本発明に対応して変更され得ることを理解されたい。例として、状態Ｓ２はいくつかの実施の形態においては省略できる。
【００３９】
次に、図３および図４は、本発明に対応した方法で、装置１０によって例示的なリクエストを処理することを図示している。例えば、図３は、特定の時点におけるリクエストバッファ２４および中間バッファ２８の例示的な内容を図示し、リクエストバッファ２４は多くの停滞しているリクエストＹ１、Ｘ２、Ｘ３、Ｙ４、Ｙ５、Ｙ６およびＸ７を有し、“Ｙ”種のリクエストは書き込みリクエストであり、“Ｘ”種のリクエストは読み出しリクエストである。リソース状態マシーン（図１の制御ロジック３０）の透視（ｐｅｒｓｐｅｃｔｉｖｅ）から、“Ｙ”および“Ｘ”リクエストの両方ともが図示されている。理解を容易にするために、リクエストバッファの代替的な表示２４が、“Ｙ”種のリクエストの順序のみを示すＹ状態マシーン（図１の制御ロジック３４）の透視から示されている。また、本実施の形態のために、中間バッファ２８は、データ保存の２つの空きブロックと共に、リクエストＹ５と関連する現在そこに記憶されているデータを有する。
【００４０】
本実施の形態においては、Ｙ状態マシーンが現在リクエストＹ６を処理しているときに、リソース状態マシーンは現在リクエストＹ５を処理しているとも考えられる。まず、現在のリクエストＹ６が受信されたと想定すると、Ｙ状態マシーンは状態Ｓ１からＳ２へ遷移する。また、例えば、リクエストＹ６が中間バッファ２８内においてスペースの４ブロックを必要とすると想定する。それにより、状態Ｓ２は、中間バッファ内に存在するスペースがリクエストを達成するためには不充分であると決定され、遷移は状態Ｓ３に生じるであろう。一方で、リクエストＹ６が中間バッファ２８内において２ブロックまたはそれ以下のブロックのスペースしか必要としない場合には、状態Ｓ２から状態Ｓ４への直接遷移が生じ、そのリクエストに関連するデータは中間バッファ内へ直ちに転送される。
【００４１】
また、実施の形態として、バッファ内へのデータ転送を開始するために少なくとも１ブロックのスペースが中間バッファ内に必要とされる、と想定する。しかし、図３に示すとおり、リソース状態マシーンはＹ状態マシーンとは異なるリクエストを処理する（Ｙ状態マシーンによって処理される現在のリクエストは共有リソースによって処理される準備ができていないことを意味する）場合、Ｙ状態マシーンは状態Ｓ３に維持される。次に、図４に示すとおり、一旦、リソース状態マシーンがリクエストＹ６を処理し始めると、遷移は状態Ｓ４に生じ、中間バッファ（ここでは、リクエストＹ６と関連する最初の２ブロックのデータである）内へデータの転送を開始する。
【００４２】
Ｙ状態マシーンが状態Ｓ３に維持されている間、“Ｘ”種のリクエストはインタフェースにおいて他の制御ロジックによって処理され続けることができ、例えば、それによって、共有リソースから来た読み出しデータがバス１６ａを介してリクエスタへ転送されることができ、従って、“Ｙ”リクエストの処理が行き詰まっている間にリクエスタバスの使用を最大化する。さらに、新しいリクエストがリクエスタからリクエストバッファまで転送され続けてもよい。
【００４３】
上述したとおり、本発明の１つの特に好ましい適用としては、グラフィック専用高速ポート相互接続（Ａｃｃｅｌｅｒａｔｅｄ Ｇｒａｐｈｉｃｓ Ｐｏｒｔ（ＡＧＰ） ｉｎｔｅｒｃｏｎｎｅｃｔ）を介してグラフィックアクセラレータをシステムメモリとインタフェースすることである。例えば、図５は、ＣＰＵ６４とインタフェースされたシステムメモリ６２を含むコンピュータ６０およびチップセット６８によってグラフィックアクセラレータ６６を示す。チップセット６８はメモリバス７２を介してシステムメモリ６２との通信をもたらすメモリインタフェース７０を含む。同様に、チップセット６８は、ＣＰＵバス７６を介してチップセットをＣＰＵ６４とインタフェースするＣＰＵバス７４を含む。ＡＧＰインタフェース７８はＡＧＰバス８０を介してチップセットをグラフィックアクセラレータ６６とインタフェースする。グラフィックアクセラレータ６６は、ＣＲＴ、ＬＣＤまたは他のディスプレイなどのディスプレイ８２を駆動するために用いられる。さらに、チップセット６８は、複数のアクセス可能なＩ／Ｏ装置８６を含むＰＣＩバス８４へのインタフェースをももたらすように構成されている。
【００４４】
従って、図５の実施の形態において、チップセット６８は、コンピュータ６０の“ノースブリッジ（ｎｏｒｔｈ ｂｒｉｄｇｅ）”機能を示す。メモリバス７２およびＣＰＵバス７６のそれぞれは、代表的には、短い（４ブロックまたはそれ以下の）分割トランザクションを受け入れる。しかし、ＡＧＰ仕様に対応して、ＡＧＰバス８０は、４ブロック以上の長さであるトランザクションを導入することができる。
【００４５】
さらに、メモリインタフェース７０は共有リソースコントローラに対して類似の機能を有し、一方、ＣＰＵ７４は、ＣＰＵ６４のための専用リクエスタインタフェースとして機能し、リクエスタとして機能する。ＡＧＰインタフェース７８はグラフィックアクセラレータ６６へのリクエスタインタフェースを示し、本発明の内容においては、リクエスタとしても機能する。ここで検討された独自の中間バッファ制御は、ＡＧＰインタフェース７８内において実施され得る。従って、この実施におけるリクエストは、例えば、書き込みトランザクションなどのＡＧＰ互換トランザクション（ＡＧＰ−ｃｏｍｐａｔｉｂｌｅ ｔｒａｎｓａｃｔｉｏｎｓ）の形態を採る。さらに、他の種のＡＧＰトランザクション（例えば、低優先度および高優先度の書き込みトランザクション）が別々に処理されることができ、従って、専用中間バッファおよび関連の制御ロジックは、ＡＧＰインタフェースによって処理される複数種類のトランザクションのために設けられてもよい。
【００４６】
ＡＧＰインタフェース７８内にここに記載されたバッファ制御機能を実施することは、本開示の利益を有する当業者の能力範囲内であることを理解されたい。しかし、本発明はＡＧＰに基づくシステムとは異なる環境における適用可能性をも有することも理解されたい。
【００４７】
様々な変更が本発明の目的および範囲から逸脱することなく示された実施の形態から成し得る。従って、本発明は特許請求の範囲内にある。
【図面の簡単な説明】
【図１】
本発明に対応した装置のブロック図。
【図２】
図１の装置において、Ｙ状態機の動作を示す状態図。
【図３】
図１の装置によって処理されるトランザクションの例を示したブロック図。
【図４】
図１の装置によって処理されるトランザクションの例を示したブロック図。
【図５】
グラフィック専用高速ポートインタフェース（Ａｃｃｅｌｅｒａｔｅｄ Ｇｒａｐｈｉｃｓ Ｐｏｒｔ（ＡＧＰ） ｉｎｔｅｒｆａｃｅ）を組み込んだ、本発明に対応する他の装置のブロック図。
【図１】
2004508634.tif 000003
【図２】
2004508634.tif 000004
【図３】
2004508634.tif 000005
【図４】
2004508634.tif 000006
【図５】
2004508634.tif 000007
【国際公開パンフレット】
2004508634.tif 000008
2004508634.tif 000009
2004508634.tif 000010
2004508634.tif 000011
2004508634.tif 000012
2004508634.tif 000013
2004508634.tif 000014
2004508634.tif 000015
2004508634.tif 000016
2004508634.tif 000017
2004508634.tif 000018
2004508634.tif 000019
2004508634.tif 000020
2004508634.tif 000021
2004508634.tif 000022
2004508634.tif 000023
2004508634.tif 000024
2004508634.tif 000025
2004508634.tif 000026
2004508634.tif 000027
【国際公開パンフレット（コレクトバージョン）】
2004508634.tif 000028
【国際調査報告】
2004508634.tif 000029
2004508634.tif 000030