(57)【特許請求の範囲】
【請求項１】
（ｉ）複数の処理コンポーネント及び（ｉｉ）前記複数のコンポーネントを相互接続するバスをデバイスが有する場合に、メモリマッピングされた資源にアクセスすることを必要としている開始コンポーネントを動作させる方法であって、
メモリマッピングされた資源にアクセスすることを必要としている前記開始コンポーネントから、メモリマッピングされた資源を有している前記デバイスの目標コンポーネントへ向けて前記バス上の接続を介して、チャネルを確立するためのトランザクションユニット（ＴＵ）であって前記チャネルに対する構成パラメータを各々が有する１つ以上の構成ＴＵを備えたＴＵを送ることと、
メモリアクセス要求を有するメモリアクセス要求ＴＵを前記開始コンポーネントから前記目標コンポーネントへ向けて前記チャネルを介して送ることとを備え、
前記構成パラメータは、インタフェースメモリ空間内のアドレスを、前記目標コンポーネントのローカルメモリ内のアドレスにマッピングするための値を含み、
前記メモリアクセス要求は、前記目標コンポーネントの前記ローカルメモリ内のアドレスにマッピングされた、前記インタフェースメモリ空間内のアドレスを有する、
方法。
【請求項２】
前記開始コンポーネントのバスプロトコルに従うサブコンポーネントメモリアクセス要求を前記開始コンポーネントのサブコンポーネントから受け取ることと、前記メモリアクセス要求ＴＵを前記サブコンポーネントメモリアクセス要求から編成することとを更に備えた請求項１の方法。
【請求項３】
各ＴＵに対するトランザクションタイプを各ＴＵのタイプフィールド内に表示することを更に備えた請求項１の方法。
【請求項４】
前記タイプフィールドは読み出し要求を表示する請求項３の方法。
【請求項５】
前記読み出し要求は直接的読み出し要求及び間接的読み出し要求の１つである請求項４の方法。
【請求項６】
前記読み出し要求はメモリ読み出し要求及び構成パラメータ読み出し要求の１つである請求項５の方法。
【請求項７】
前記タイプフィールドは書き込み要求を表示する請求項３の方法。
【請求項８】
前記書き込み要求は直接的書き込み要求及び間接的書き込み要求の１つである請求項７の方法。
【請求項９】
前記書き込み要求はメモリ書き込み要求及び構成パラメータ書き込み要求の１つである請求項８の方法。
【請求項１０】
各前記ＴＵのタグフィールド内にタグを含ませることを更に備えた請求項３の方法。
【請求項１１】
前記開始コンポーネントで前記チャネル上の応答ＴＵを前記タグと等価なタグと共に監視することを更に備えた請求項１０の方法。
【請求項１２】
前記メモリ要求ＴＵは書き込み要求を表示し、前記応答ＴＵの前記タイプフィールドは承認を表示する請求項１１の方法。
【請求項１３】
前記メモリ要求ＴＵは読み出し要求を表示し、前記応答ＴＵの前記タイプフィールドは読み出し応答を表示する請求項１１の方法。
【請求項１４】
構成ＴＵ又はメモリアクセス要求ＴＵである各所与のＴＵに対して、前記所与のＴＵのペイロードの長さを前記所与のＴＵの長さフィールドに含ませることを更に備えた請求項３の方法。
【請求項１５】
前記メモリアクセス要求ＴＵを前記サブコンポーネントメモリアクセス要求から編成することは、ローカルアドレス空間とインタフェースメモリアドレス空間の間でマッピングすることを備えており、前記１つ以上の構成ＴＵを送ることは、前記インタフェースメモリアドレス空間と前記目標コンポーネントでのローカルアドレス空間との間でのマッピングを可能にする構成値を伴う構成ＴＵを送ることを備えている請求項２の方法。
【請求項１６】
前記１つ以上の構成ＴＵを送ることは、インタフェースメモリアドレス空間内の先頭アドレスを表示する構成値及び長さを表示する構成値を伴う構成ＴＵを送ることを備えている請求項１５の方法。
【請求項１７】
前記先頭メモリアドレスは間接的読み出し要求又は間接的書き込み要求の１つに対する先頭メモリアドレスであり、前記長さは間接的読み出し要求又は間接的書き込み要求の前記１つに対するメモリアパーチャのための長さである請求項１６の方法。
【請求項１８】
前記先頭メモリアドレスは直接的書き込み及び読み出し要求に対する前記インタフェースメモリアドレス空間内のメモリアパーチャのための先頭メモリアドレスであり、前記長さは前記アパーチャの長さである請求項１６の方法。
【請求項１９】
前記チャネルは第１のチャネルであり、前記ＴＵは前記第１のチャネルを確立する第１のＴＵであり、前記第１のチャネルはメモリアクセス要求を前記開始コンポーネントから前記目標コンポーネントへ向けて送るためのものであり、前記方法は前記接続を介して第２のチャネルを確立するために第２のＴＵを送ることを更に備えており、前記第２のチャネルはメモリアクセス要求を前記目標コンポーネントから前記開始コンポーネントへ向けて送るためのものである請求項１の方法。
【請求項２０】
複数のコンポーネントと、前記複数のコンポーネントの各々への物理接続を有するバスとを有するデバイスにおける使用のための、メモリマッピングされた資源にアクセスする第１のコンポーネントであって、
第１のプロセッサと、
前記第１のコンポーネントが前記バスへの物理接続を有するような前記バスへの接続のためのコネクタと、を備え、
前記第１のプロセッサは、
チャネルを確立するために前記バスへの物理接続を有する第２のコンポーネントへ向けて前記バス上の接続を介してトランザクションユニット（ＴＵ）を送り、メモリアクセス要求ＴＵを前記第２のコンポーネントへ向けて前記チャネルを介して送るように動作し、
前記第２のコンポーネントはプロセッサ及びメモリを有するタイプのものであり、前記ＴＵは１つ以上の構成ＴＵを備えており、各構成ＴＵは前記チャネルのための構成パラメータを有しており、前記メモリアクセス要求ＴＵはメモリアクセス要求を有しており、
前記構成パラメータは、インタフェースメモリ空間内のアドレスを、前記第２のコンポーネントの前記メモリ内のアドレスにマッピングするための値を含み、
前記メモリアクセス要求は、前記第２のコンポーネントの前記メモリ内のアドレスにマッピングされた、前記インタフェースメモリ空間内のアドレスを有する、
第１のコンポーネント。
【請求項２１】
前記第１のプロセッサは、前記第１のコンポーネントの内部バスプロトコルに従うメモリアクセス要求を前記メモリアクセス要求ＴＵへ変換するようにも動作する請求項２０の第１のコンポーネント。
【請求項２２】
前記第１のプロセッサは、前記第１のコンポーネントの内部バスプロトコルに従う前記メモリアクセス要求を前記メモリアクセス要求ＴＵへ変換するに際して、前記第１のコンポーネントでのローカルアドレス空間とインタフェースメモリアドレス空間との間でマッピングし、前記第１のプロセッサはまた、１つ以上の構成ＴＵを送るに際して、前記インタフェースメモリアドレス空間と前記第２のコンポーネントでのローカルアドレス空間との間でマッピングすることを可能にする構成値を伴う構成ＴＵを送るようにも動作する請求項２１の第１のコンポーネント。
【請求項２３】
前記第１のプロセッサは更に、
各前記構成ＴＵが構成ＴＵであることを表示するタイプフィールドを伴う各前記構成ＴＵを構成し、
前記メモリアクセス要求ＴＵがメモリアクセス要求ＴＵであることを表示するタイプフィールドを伴う前記メモリアクセス要求ＴＵを構成するように動作する請求項２２の第１のコンポーネント。
【請求項２４】
複数の処理コンポーネントを有するデバイスにおいてメモリマッピングされた資源を共有することを容易にするための方法であって、
メモリマッピングされた資源にアクセスすることを必要としている前記デバイスの開始コンポーネントからメモリマッピングされた資源を有している前記デバイスの目標コンポーネントへ前記デバイスの前記複数のコンポーネントを相互接続しているバス上の接続を介して、チャネルを確立するためのトランザクションユニット（ＴＵ）であって前記チャネルに対する構成パラメータを各々が有する１つ以上の構成ＴＵを備えたＴＵを送ることと、
メモリアクセス要求を有するメモリアクセス要求ＴＵを前記開始コンポーネントから前記目標コンポーネントへ前記チャネルを介して送ることとを備え、
前記構成パラメータは、インタフェースメモリ空間内のアドレスを、前記目標コンポーネントのローカルメモリ内のアドレスにマッピングするための値を含み、
前記メモリアクセス要求は、前記目標コンポーネントの前記ローカルメモリ内のアドレスにマッピングされた、前記インタフェースメモリ空間内のアドレスを有する、
方法。
【請求項２５】
前記開始コンポーネントのバスプロトコルに従うサブコンポーネントメモリアクセス要求を前記開始コンポーネントのサブコンポーネントから受け取ることと、前記メモリアクセス要求ＴＵを前記サブコンポーネントメモリアクセス要求から編成することとを更に備えた請求項２４の方法。
【請求項２６】
前記メモリアクセス要求ＴＵを前記目標コンポーネントで受け取ることと、前記メモリアクセス要求ＴＵから値を抽出して前記目標コンポーネントのバスプロトコルに従いローカルメモリアクセス要求を編成することとを更に備えた請求項２５の方法。
【請求項２７】
前記メモリアクセス要求ＴＵを受け取ることに応答して応答ＴＵを前記目標コンポーネントから前記開始コンポーネントへ送ることを更に備えた請求項２５の方法。
【請求項２８】
メモリマッピングされた資源を複数のコンポーネント間で共有するためのデバイスであって、
第１のプロセッサを有する第１のコンポーネントと、
第２のプロセッサ及びメモリを有する第２のコンポーネントと、
バスと、を備え、
前記第１のコンポーネント及び前記第２のコンポーネントは前記バスへの物理接続を有しており、
前記第１のプロセッサは、
チャネルを確立するために前記第２のコンポーネントへ前記バス上の接続を介してトランザクションユニット（ＴＵ）を送り、メモリアクセス要求ＴＵを前記第２のコンポーネントへ前記チャネルを介して送るように動作し、
前記ＴＵは１つ以上の構成ＴＵを備えており、各構成ＴＵは前記チャネルのための構成パラメータを有しており、前記メモリアクセス要求ＴＵはメモリアクセス要求を有しており、
前記構成パラメータは、インタフェースメモリ空間内のアドレスを、前記第２のコンポーネントの前記メモリ内のアドレスにマッピングするための値を含み、
前記メモリアクセス要求は、前記第２のコンポーネントの前記メモリ内のアドレスにマッピングされた、前記インタフェースメモリ空間内のアドレスを有する、
デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、デバイスの複数のコンポーネントの間でのメモリ資源共有及び通信に関する。
【背景技術】
【０００２】
最新のコンピュータデバイスは、種々の個別の機能を実装すると共にコンピュータデバイス全体において相互作用する多くの独立してインテリジェントな複数のコンポーネントから構成される。例えば、アプリケーションプロセッサ及びグラフィクスプロセッサが相互作用して、システムディスプレイにコンテンツを供給する。各独立したインテリジェントコンポーネントは、典型的には、可変な程度のインテリジェンス及び、メモリ資源のような利用可能な特定コンポーネント向けローカル資源を有している。
【０００３】
コンピュータデバイス内の複数の集積回路の間でのデータの転送を可能にするために、バスアーキテクチャを採用することが知られている。メモリ転送動作に対しては、バス及びメモリ転送動作の監視を中央処理ユニット（ＣＰＵ）から解放してＣＰＵが他の機能を実行することを可能にする一方でメモリ転送は継続するために、直接メモリアクセス（ＤＭＡ）制御器が用いられることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コンピュータデバイスがより複雑になると共にデバイス内のメモリ資源がより拡散したものになるにつれて、メモリ資源を共有するための複数のコンポーネント間での効率的な通信方法が望ましいであろう。
【課題を解決するための手段】
【０００５】
携帯電話のようなデバイスにおいて、各々がメモリ資源を有する集積回路のような複数のコンポーネントの間で、メモリ資源共有が可能になる。このことは、複数のコンポーネント間での相互接続を提供すると共に、メモリアクセス動作を開始するために相互接続を介して送られるトランザクションユニット(transaction units)を構成することによって達成され得る。その手法はまた、複数のデバイスコンポーネント間でのある程度の通信を可能にするためにも用いられ得る。
【０００６】
本発明によると、（ｉ）複数の処理コンポーネント及び（ｉｉ）前記複数のコンポーネントを相互接続するバスをデバイスが有する場合に、メモリマッピングされた資源にアクセスすることを必要としている開始コンポーネントを動作させる方法であって、メモリマッピングされた資源にアクセスすることを必要としている前記開始コンポーネントから、メモリマッピングされた資源を有している前記デバイスの目標コンポーネントへ向けて前記バス上の接続を介して、チャネルを確立するための複数のトランザクションユニット（ＴＵ）であって前記チャネルに対する構成パラメータを各々が有する１つ以上の構成ＴＵを備えた複数のＴＵを送ることと、メモリアクセス要求を有するメモリアクセス要求ＴＵを前記開始コンポーネントから前記目標コンポーネントへ向けて前記チャネルを介して送ることとを備えた方法が提供される。
【０００７】
本発明の他の側面によると、複数のコンポーネントと前記複数のコンポーネントの各々への物理接続を有するバスとを有するデバイスにおける使用のための第１のコンポーネントであって、第１のプロセッサと、前記第１のコンポーネントが前記バスへの物理接続を有するような前記バスへの接続のためのコネクタと、を備え、前記第１のプロセッサは、チャネルを確立するために前記バスへの物理接続を有する第２のコンポーネントへ向けて前記バス上の接続を介して複数のトランザクションユニット（ＴＵ）を送り、メモリアクセス要求ＴＵを前記第２のコンポーネントへ向けて前記チャネルを介して送るように動作し、前記第２のコンポーネントはプロセッサ及びメモリを有するタイプのものであり、前記複数のＴＵは１つ以上の構成ＴＵを備えており、各構成ＴＵは前記チャネルのための構成パラメータを有しており、前記メモリアクセス要求ＴＵはメモリアクセス要求を有している第１のコンポーネントが提供される。
【０００８】
本発明の更なる側面によると、複数の処理コンポーネントを有するデバイスにおいてメモリマッピングされた資源を共有することを容易にするための方法であって、メモリマッピングされた資源にアクセスすることを必要としている前記デバイスの開始コンポーネントからメモリマッピングされた資源を有している前記デバイスの目標コンポーネントへ前記デバイスの前記複数のコンポーネントを相互接続しているバス上の接続を介して、チャネルを確立するための複数のトランザクションユニット（ＴＵ）であって前記チャネルに対する構成パラメータを各々が有する１つ以上の構成ＴＵを備えた複数のＴＵを送ることと、メモリアクセス要求を有するメモリアクセス要求ＴＵを前記開始コンポーネントから前記目標コンポーネントへ前記チャネルを介して送ることとを備えた方法が提供される。
【０００９】
本発明の別の側面によると、複数のコンポーネントを有するデバイスであって、第１のプロセッサを有する第１のコンポーネントと、第２のプロセッサ及びメモリを有する第２のコンポーネントと、バスと、を備え、前記第１のコンポーネント及び前記第２のコンポーネントは前記バスへの物理接続を有しており、前記第１のプロセッサは、チャネルを確立するために前記第２のコンポーネントへ前記バス上の接続を介して複数のトランザクションユニット（ＴＵ）を送り、メモリアクセス要求ＴＵを前記第２のコンポーネントへ前記チャネルを介して送るように動作し、前記複数のＴＵは１つ以上の構成ＴＵを備えており、各構成ＴＵは前記チャネルのための構成パラメータを有しており、前記メモリアクセス要求ＴＵはメモリアクセス要求を有しているデバイスが提供される。
【図面の簡単な説明】
【００１０】
本発明の例示的な実施形態を示す図面は以下の通りである。
【００１１】
【図１】図１は本発明に従う動作に適したデバイスの模式図である。
【００１２】
【図２】図２は図１のデバイスにおいて採用され得るプロトコルスタックの模式図である。
【００１３】
【図３】図３は図１のデバイスにおけるメモリ空間の模式図である。
【００１４】
【図４】図４は図１のデバイスの一部分の模式的な動作説明図である。
【００１５】
【図５】図５は図１のデバイスにおいて伝送され得るトランザクションユニットの模式図（その１）である。
【図６】図６は図１のデバイスにおいて伝送され得るトランザクションユニットの模式図（その２）である。
【図７】図７は図１のデバイスにおいて伝送され得るトランザクションユニットの模式図（その３）である。
【図８】図８は図１のデバイスにおいて伝送され得るトランザクションユニットの模式図（その４）である。
【図９】図９は図１のデバイスにおいて伝送され得るトランザクションユニットの模式図（その５）である。
【発明を実施するための形態】
【００１６】
概説すると、デバイスの複数のコンポーネントは、ポイント・ツー・ポイント形態(point-to-point fashion)で且つ／又はネットワークの一部として相互接続されてよい。各コンポーネントの内部には、内部へのアクセスを必要とする他に外部のメモリ及び入力／出力（ＩＯ）資源へのアクセスを必要とする何らかのインテリジェンス(intelligence)（例としては、コンポーネントはＣＰＵ若しくはＤＳＰであり又は状態マシンを有している）があってよい。例えばＣＰＵは、ローカルメモリ及びＩＯ資源にアクセスするために、内部バス構造を経由して読み出し及び書き込みのサイクルを発行することができ、内部バス構造は、例としてはＡＸＩバス構造内で通常はパラレルである。また、ＣＰＵ要求は、ＯＣＰのような異なる内部バス構造で設計されたであろう他の外部デバイスの遠隔資源へ向けて発行され得る。プロトコルは、外部デバイスの遠隔メモリマッピングされた資源にアクセスするための内部システム・オン・ア・チップ(System on a Chip)（ＳｏＣ）バストランザクションを伝達するのに適したものとしてここでは説明されており、外部デバイスは異なる内部ＳｏＣバス構造を有していてよい。プロトコルは、ポイント・ツー・ポイント物理リンクを介しての送信に先立ちトランスポート層によってカプセル化され得るトランザクションユニット（ＴＵ）を定義する。
【００１７】
図１を参照すると、例示的なデバイス１０は携帯電話であり、アプリケーション・プロセッサ（ＡＰ）集積回路（ＩＣ）である第１の処理コンポーネント２０を有していてよく、第１の処理コンポーネント２０は、グラフィクス・マルチメディアＩＣ（ＧＭＩＣ）である第２の処理コンポーネント５０にポイント・ツー・ポイント・バス６０を介して接続されている。各コンポーネントは、バスへの接続を可能にするコネクタ２３，５３を有している。バス６０は、複数のコンポーネント間のパラレル又はシリアルの経路であってよい。コンポーネント２０は、バス６０を制御するバス制御器２２の他、ディスプレイ制御器２４及びカメラ制御器２８を有している。ポイント・ツー・ポイント接続２６はディスプレイ制御器２４をディスプレイ３０に接続し、また第２のポイント・ツー・ポイント接続３２はカメラ制御器２８をカメラ３４に接続している。コンポーネント２０はまた、システムメモリ３８とのポイント・ツー・ポイント接続３６と、ベースバンド及び／又は無線周波数集積回路（ＢＢ／ＲＦＩＣ）４２とのポイント・ツー・ポイント接続４０とを有している。
【００１８】
コンポーネント５０は、バス６０を制御するバス制御器５２を有している。コンポーネント５０はまた、ローカルメモリ５８とのポイント・ツー・ポイント接続５６を有している。
【００１９】
バス６０を介しての通信は、例えば、当該分野において十分に理解されている階層化されたオープンシステム相互接続参照モデル（ＯＳＩモデル）を用いて達成することができ、あるいは同様のネットワーク又はポイント・ツー・ポイント相互接続を用いて達成することができる。例えば、開始コンポーネント(initiating component)（即ちコンポーネント２０又は５０の一方）が目標コンポーネント(target component)（コンポーネント２０又は５０の他方）のメモリ資源に直接アクセスすることを可能にするために、５層のアーキテクチャが実装されてよい。階層化されたアーキテクチャは例えば図２に示されているようなものであってよく、ここでは、Ｌ１〜Ｌ４で表される層は、一般的にＯＳＩモデルの層１〜４によって提供される機能性に対応している。
【００２０】
層Ｌ５をプロセッサ・インタフェース・エミュレーション（ＰＩＥ）プロトコル層として構成することによって、メモリ資源への所望の遠隔アクセスが実装されてよい。ＯＳＩモデルとの比較のため、本明細書における層Ｌ５は、ＯＳＩモデルの層Ｌ４よりも上方に実装されるハードウエア又はソフトウエアの機能性に対応するものと見なされてよい。
【００２１】
ＯＳＩモデルに類似して、各逐次的な層は、階層内でその層の上方及び下方に位置する層と関係してデータ及びコマンドが層間で受け渡されることを可能にするインタフェースを提供する。ＰＩＥプロトコル層Ｌ５は、トランザクションを実装するためにトランスポート層Ｌ４と通信する独立し且つカプセル化された層として設計される。ＰＩＥプロトコルは、トランスポート層Ｌ４機能を呼び出すと共にトランスポート層Ｌ４にデータを受け渡すことによってトランザクションを開始する。この要求に応答して、トランスポート層Ｌ４は、ネットワーク層Ｌ３によって提供されるファシリティを利用し、ネットワーク層Ｌ３は同様に下層によって提供されるファシリティを利用する。
【００２２】
図１に戻り、コンポーネント２０のサブコンポーネント、例えばディスプレイ制御器２４がコンポーネント５０のローカルメモリ５８内のメモリのブロックにアクセスしたい場合、コンポーネント２０はメモリアクセス動作を開始することができ、それ故コンポーネント２０は開始コンポーネントと称されてよく、一方コンポーネント５０は目標コンポーネントと称されてよい。コンポーネント２０内の内部バス構造がＡＸＩであると仮定すると、ディスプレイ制御器からのこの要求は、コンポーネント２０内のＡＸＩバストランザクションとして現れるであろう（即ちＡＸＩバスプロトコルに従うメモリアクセス要求として）。コンポーネント２０内のＰＩＥ層Ｌ５（バス制御器２２の一部であってよい）は、このＡＸＩバス要求を取り込むと共にそれをＰＩＥトランザクションに変換し、ＰＩＥトランザクションは層Ｌ４〜Ｌ１を用いてバス６０を介して運ばれることになる。コンポーネント５０内の対応するＰＩＥ層Ｌ５は、到着するＰＩＥトランザクションを解釈すると共にそれをそれ自身の内部バス要求に従って変換する（即ちそれ自身のバスプロトコルに従うメモリアクセス要求として）。従って、コンポーネント５０がＡＸＩバス構造よりもむしろＯＣＰバス構造向けに設計されている場合には、コンポーネント５０内のＰＩＥ層Ｌ５は、メモリアクセス要求ＴＵからの値を抽出すると共にこれらを用いてＯＣＰバス要求を編成することになる。このようにして、目標コンポーネント５０のメモリブロックは、開始コンポーネント２０のメモリアドレス空間内のブロックとして、コンポーネント２０上で実行中のアプリケーションによって効率的に取り扱われる。同様に、コンポーネント５０が開始側として作用する場合には、システムメモリ３８内のメモリのブロックは、コンポーネント５０内のメモリのブロックとして取り扱われ得る。
【００２３】
当業者によって理解されるであろうように、メモリの各ブロックは、典型的には、物理メモリロケーションにマッピングするメモリの論理ブロックであってよい。当業者によってこれもまた理解されるであろうように、コンポーネント内のメモリ資源は、それ自身がメモリである必要はない一方で、任意のデータ記憶ファシリティ（例えばレジスタ）であってよい。
【００２４】
図３は開始コンポーネントとして作用しているコンポーネント２０でのメモリマッピングの説明的な例を示している。具体的には、コンポーネント５０のローカルアドレス空間５８内でメモリマッピングされたアパーチャ(aperture)５８Ａは、ＰＩＥメモリアドレス空間７０内のアパーチャ７０Ａにマッピングされる。ＰＩＥメモリアドレス空間内のアパーチャ７０Ａは、次いでコンポーネント２０のシステムメモリ３８内のアパーチャ３８Ａにマッピングされる。ＰＩＥメモリアドレス空間７０は、開始メモリアドレス空間及び目標メモリアドレス空間の間でのマッピングを容易にする仮想アドレス空間を代表する。ＰＩＥメモリ空間７０は、メモリマッピングを支援するために採用される抽象(an abstraction)であり、そしてどのような物理メモリロケーションにも対応していない。開始コンポーネント２０及び目標コンポーネント５０の両方は、ＰＩＥメモリ空間７０と相互作用して、目標コンポーネントのメモリアパーチャ５８Ａから開始コンポーネントのメモリアパーチャ３８ＡへのＰＩＥアパーチャ７０Ａを介してのマッピングを達成する。従って、コンポーネント５０のメモリ５８内の所与のアドレスは、コンポーネント２０のメモリ３８内では異なるアドレスを有するであろうし、またＰＩＥメモリ空間７０内でも異なるアドレスを有するであろう。
【００２５】
ＰＩＥメモリ空間へのメモリのマッピングは、それぞれＡＰ２０及びＧＭＩＣ５０での構成レジスタ(configuration registers)９０，１００を採用する任意の適切なやり方で達成され得る。従って、開始コンポーネント及び目標コンポーネントの間でのアドレス翻訳(address translation)又はメモリマッピングは、開始コンポーネントのメモリ３８内のローカルアドレスと目標コンポーネントの目標メモリ５８内の遠隔アドレスとの間で翻訳するためにＰＩＥメモリ空間７０を介して達成される。
【００２６】
開始アドレス空間（即ちローカルアドレス空間）、目標アドレス空間（即ち遠隔アドレス空間）又はＰＩＥアドレス空間におけるアドレス及びサイズによって画定されるメモリのブロックが、メモリアパーチャであると考えられてよい。各アパーチャは、一方のコンポーネントから他方へマッピングするメモリアドレスの連続的なブロックを代表する。
【００２７】
図１に戻り、デバイス１０によって採用されているプロトコルは、ポイント・ツー・ポイントバス６０を介してのＡＰ２０とＧＭＩＣ５０の間での接続を確立するために用いられる。ＰＩＥプロトコルは次いで、この接続を介しての１つ以上のチャネル及び、各チャネル上の１つ以上のアパーチャを確立するために用いられてよい。より具体的には、例として図４を参照すると、ネットワークプロトコルの層Ｌ１、Ｌ２、及びＬ３を通してのポイント・ツー・ポイントバスを介して、３つの接続８０Ａ，８０Ｂ，８０ＣがＡＰ２０とＧＭＩＣ５０の間で確立されてよい。層Ｌ４は各コンポーネントでの各接続を終端するポートを確立してよい。具体的には、ポート８２Ａ，８４ＡはそれぞれＡＰ２０及びＧＭＩＣ５０で接続８０Ａを終端してよい一方で、ポート８２Ｂ，８４Ｂは接続８０Ｂを終端してよく、またポート８２Ｃ，８４Ｃは接続８０Ｃを終端してよい。これらのネットワーク接続の各々は、異なるトラフィッククラスをサポートしていてよい（即ち、各接続は異なる接続パラメータ、例えば待ち時間を有していてよい）。ＡＰ２０でのＰＩＥプロトコルは次いで、ノード（８６Ａ，８６Ｂ，８６Ｃ）を各ポート（それぞれ８２Ａ，８２Ｂ，８２Ｃ）に関連付けることができる。同様に、ＧＭＩＣ５０でのＰＩＥプロトコルは、ノード（８８Ａ，８８Ｂ，８８Ｃ）を各ポート（それぞれ８４Ａ，８４Ｂ，８４Ｃ）に関連付けることができる。ローカルコンポーネントがリンクを介して遠隔コンポーネントのメモリ資源にアクセスするために、ローカルコンポーネントでのノードは開始ノードになり、そして遠隔コンポーネントでのノードは目標ノードになる。従って、ノードは、開始ノード（例えばノード８６Ａ）、目標ノード（例えばノード８６Ｂ）又は開始及び目標ノードの両方（例えばノード８６Ｃ）であり得る。開始ノードは、チャネルをセットアップし、そして随意的には当該チャネル内の１つ以上のアパーチャをセットアップするために、接続を介して目標ノードへ要求を送ることができる。具体的には、より完全に以下に説明されるように、開始ノード（例えばノード８６Ｃ）は、接続を介して構成パラメータ(configuration parameters)を伴うトランザクションユニット（ＴＵ）を目標ノード（８８Ｃ）へ送ってチャネル（チャネル９０）及びアパーチャをセットアップすることができる。ＴＵを経て受信される構成パラメータは、構成レジスタ９２，９４内に記憶される。従って、所与のチャネルは、特定の開始ノード（例えばＡＰ２０のノード８６Ｃ）とそれに関連する特定の目標ノード（例えばＧＭＩＣ５０のノード８８Ｃ）とを有している。また、各接続は、各方向１チャネルを伴う２チャネルまでサポートすることができ、その結果、単一の接続上では、１つのノード（例えばノード８６Ｃ）は、１つのチャネル上で開始ノードとして作用することができ且つ第２のチャネル上で目標ノードとして作用することができる。
【００２８】
単一のチャネル上に多重アパーチャが規定される場合、各アパーチャは同一のチャネルパラメータを共有することになる。
【００２９】
既に示唆されているように、コンポーネント間の通信は、開始コンポーネントから目標コンポーネントへの受け渡し(delivery)のためのトランスポート層Ｌ４に渡されるトランザクションユニット（ＴＵ）の使用を通してＰＩＥプロトコル層Ｌ５によって達成され得る。一般に、Ｌ５でのプロトコルデータユニット（ＰＤＵ）はメッセージと称されることがあり、メッセージは、物理層を介して送信される前に、多重セグメント（即ちＬ４ＰＤＵ）、多重パケット（即ちＬ３ＰＤＵ）及び多重フレーム（Ｌ２ＰＤＵ）内に割り込まされてよい。ＰＩＥメッセージはトランザクションユニットからなる。見込まれるトランザクションユニットフォーマットの一般的な描写が図５に示されている。トランザクションユニット１１０の第１のバイトは、ＴＵの性質を記憶するためのタイプ１１２フィールドと、トランザクション識別子を記憶するためのタグ１１４フィールドとに分割されている。トランザクションユニット１１０の残りは、トランザクションユニット１１０のタイプ１１２に応じて存在しまた変化し得る随意的情報１１５からなる。例えば、トランザクションユニット１１０の随意的な第２のバイトは、ＴＵ１１０が拡張されたタイプである場合にＴＵの性質を記憶するためのＥｘｔ＿Ｔｙｐｅフィールド１１６を代表してよい。
【００３０】
タイプフィールド１１２は、トランザクションユニット１１０の目的を識別するために用いられる。サポートされるトランザクションユニットタイプは表１に記載されるものを含む。
【表１】
0005624997.tif 000002
【００３１】
図５におけるＥｘｔ＿Ｔｙｐｅフィールド１１６は、拡張されたタイプのトランザクションユニット１１０内にのみ存在する（即ち表１におけるタイプ＝１１１０又は１１１１）。Ｅｘｔ＿Ｔｙｐｅフィールド１１６の存在は、このフィールド内に追加的なトランザクションユニットタイプが規定されることを可能にする。タイプフィールド１１２の実装は例示的であり、トランザクションユニットのタイプを識別するためにユニーク値が用いられていることを条件に、他の変形が設けられ得る。例えば、特定のアプリケーションにおいて望ましい場合には、より大きなタイプフィールドによってより多くのトランザクションユニットタイプがサポートされ得る。
【００３２】
タグフィールド１１４は、特定のスプリット(split)トランザクションに関連するＴＵを結びつけるために用いられる。より具体的には、ネットワーク接続に関連する各開始側ノードは、タグプール(tag pool)、例えば１６個の連続した値を割り当てられる。次いで、直接的書き込み要求（ＷＲ）のようなＴＵを送ることを開始側が望む場合には、次に利用可能なタグが当該ＴＵのタグフィールド内に置かれる。チャネルに対する構成パラメータの１つは、書き込み要求が承認される(acknowledged)ことになるか否かであってよい。書き込み要求が承認されることになる場合には、目標は、書き込み承認ＴＵ（即ちＡＣＫ）を構成することによって書き込み要求ＴＵ（即ちＷＲ）に応答するであろうし、開始ＴＵ内に挿入されていたのと同一のタグ値を目標が書き込み承認ＴＵ内に挿入することになる。開始側がこの書き込み承認ＴＵを受け取った場合、タグフィールドが読まれて開始ＴＵへの応答として当該ＴＵを相互に関連付ける。タグ値は、それが開始ＴＵ内に挿入された後、当該ＴＵによって開始されたトランザクションの完了までリザーブされる。トランザクションは、典型的には応答が開始ＴＵで受け取られるときに完了する。
【００３３】
表１から明らかであろうように、構成書き込み（ＷＲｃ）及び構成読み出し（ＲＤｃ）はＴＵの２つの規定されたタイプである。ＷＲｃＴＵは、例えばチャネルを確立し又はチャネル内にアパーチャを確立するために構成レジスタ値を目標に設定する開始側によって用いられる。ＷＲｃＴＵの具体的なフォーマットが図６に示されている。同図を参照すると、表１によって示唆されるように、ＷＲｃＴＵ１１０Ａのタイプフィールド１１２Ａは１０００に設定され、そしてタグフィールド１１４Ａは次に利用可能なタグ値に設定される。
【００３４】
ＷＲｃＴＵは、パラメータ値フィールド１１８ＡＣの長さを表示する長さフィールド１１８ＡＡを有している。これにより、ＴＵの目標がパラメータ値フィールド及びＴＵの終点を表すことが可能になる。別の実施形態においては、長さフィールドは、ＴＵの終点に挿入されるＴＵマーカの終点によって置換されてよい。トランザクションユニットの残りは、どの構成パラメータがＷＲｃＴＵによって修正されることになるかを識別する４バイトのパラメータフィールド１１８ＡＢ（パラメータＩＤを伴う）と、記憶されるべき構成パラメータの値を表すパラメータ値フィールド１１８ＡＣとから構成される。ＷＲｃＴＵに応答して、書き込み承認トランザクションユニット（ＡＣＫＴＵ）が目標によって生成されてよい。ＡＣＫＴＵはタイプ及びタグのみからなる。
【００３５】
構成パラメータの値は、構成読み出し要求トランザクションユニット（ＲＤｃＴＵ）を用いてアクセスされ得る。ＲＤｃＴＵは、パラメータ値フィールドが無いことを除いてＷＲｃＴＵと同一のフォーマットを有している。ＲＤｃＴＵのパラメータフィールドは、どのパラメータ値が返送されることになるかを表示するのに役立つパラメータＩＤを有しており、そして長さフィールドは返送されることになるパラメータの長さを表示する。ＲＤｃＴＵに応答して、目標は、意図されるパラメータ値を含むタイプフィールド、タグフィールド及び長さフィールドからなる読み出し応答（ＲＥＳ）ＴＵを返送する。
【００３６】
コンポーネント間での通信のレベルを提供するために構成読み出し要求が用いられてよい。例えば、特定のパラメータＩＤがコンポーネントの製造業者の識別のためにリザーブされてよく、また別のパラメータＩＤがコンポーネントのモデルの識別のためにリザーブされてよい。開始側コンポーネントは、種々の具体的なコンポーネントを種々の能力に関連付けるデータベースを有していてよい。従って、目標コンポーネントを識別することによって、開始側コンポーネントは、目標コンポーネントのメモリ資源のより効率的な使用を活かすことにおいて開始側コンポーネントを支援するであろう目標コンポーネントの能力を知ることができる。また、接続を確立した後の特定の場合には、構成読み出し及び書き込みを用いるコンポーネント間では低レベルの通信で十分かもしれない。そのような場合には、コンポーネント間でチャネルが確立される必要はない。
【００３７】
直接的書き込みトランザクションユニット（ＷＲＴＵ）の具体的なフォーマットが図７に示されている。同図を参照すると、ＷＲＴＵ１１０Ｂは、表１に従って００００に設定されるタイプフィールド１１２Ｂを有している。ＷＲＴＵはまた、ＷＲｃＴＵと同様にタグフィールド１１４Ｂ及び長さフィールド１１８ＢＡを有している。アドレスフィールド１１８ＢＢは、書き込み動作が開始させられることになる基本アドレスを記憶するために３２ビットフィールドである。（前述したように、この基本アドレスはＰＩＥ空間内にあり、目標での別のアドレスにマッピングされていてよい。また、基本アドレスは、直接的読み出し及び書き込み要求に対して先行して規定されたメモリアパーチャ内にあるであろう。）データフィールド１１８ＢＣは、書き込まれるべきデータのブロックを記憶するためのものである。長さフィールド内の値は、データフィールドの長さを表示する。最大長さは８ビット長フィールドによって表されるので、データフィールドの最大長さは２５６バイトであることが当業者によって理解されるであろう。代替的な実施形態は、より大きなデータブロックを可能にするために、より大きな長さフィールド又は拡張されたタイプのＴＵを利用することができる。
【００３８】
ＷＲＴＵの目標コンポーネントでの受け取りに際して、アドレスフィールド内のアドレスは、ＰＩＥアドレス空間７０（図３）から目標アドレス空間内のアドレスへ翻訳される。直接的書き込み要求トランザクションユニット１１０Ｂに応答して、ＷＲｃＴＵの議論と共に上述した書き込み承認トランザクションユニットは、目標コンポーネントによって生成されてよく（同一のタグフィールド値を用いて）、そして開始コンポーネントへ送信されてよい。
【００３９】
直接的読み出しトランザクションユニット（ＲＤＴＵ）に対するトランザクションユニットフォーマットは、直接的読み出し要求トランザクションユニットがデータフィールドを有していないであろうことを除いて、上述した直接的書き込みトランザクションユニットに対するフォーマットと同一であってよい。ＲＤＴＵにおいては、長さフィールド内の値は、返送されることになるデータブロックの長さを表示するであろう。直接的読み出し要求に応答して、ＲＥＳＴＵが目標によって生成されてよい。
【００４０】
間接的な読み出し要求及び書き込み要求もまた、データストリーミングアプリケーションのためにサポートされてよい。間接的要求を可能にするために、開始側は、チャネルを確立し且つ間接的読み出し要求に対するメモリアパーチャを生成するための基本アドレス及び長さ並びに間接的書き込み要求に対するメモリアパーチャを生成するための基本アドレス及び長さを構成するために、構成ＴＵを送信してよい。間接的基本アドレスはＰＩＥアドレス空間内にある。間接的書き込み要求（ＷＲｉ）トランザクションユニット１１０Ｃの具体的なフォーマットが図８に示されている。ＴＵ１１０Ｃは、値が０００１であるタイプフィールド１１２Ｃと、タグフィールド１１４Ｃと、長さフィールド１１８ＣＡと、データフィールド１１８ＣＢとを有している。そのようなＴＵを目標が受け取ると、目標は、データフィールド内のデータのブロックをそのメモリへ書き込み、メモリは、その構成レジスタ内に記憶されている間接的書き込み基本アドレスがマッピングするアドレスで開始する。このレジスタ内のアドレスは、更新されたアドレスがチャネル上の次の間接的書き込みに対して使用されるようにインクリメントされる。（間接的書き込みが間接的書き込みのためのアパーチャの終点を越えて延長している場合には、間接的書き込みは、アパーチャの始点を包含する。）間接的読み出しＴＵ（ＲＤｉＴＵ）は、データフィールドが無いことを除いてＷＲｉＴＵと同一のフォーマットを有している。これらの間接的要求は、アドレス情報を伝送するオーバヘッドを招くことなしに、連続的な読み出し動作及び書き込み動作を可能にする。
【００４１】
間接的書き込みトランザクションユニットに応答して、承認のためにチャネルが構成される場合には、目標はＡＣＫＴＵで応答することになる。また、既に論じられたように、間接的読み出しトランザクションに応答してＲＥＳＴＵが発行されることになる。
【００４２】
拡張されたトランザクションユニットの例として、バルク書き込みトランザクションユニット１１０Ｄが図９に示されている。タイプフィールド１１２Ｄは、トランザクションユニットが拡張されたトランザクションユニットであることを表示する１１１１の値を有しており、そして具体的なタイプはＥｘｔ＿Ｔｙｐｅフィールド１１６Ｄによって識別される。トランザクションユニットはタグフィールド１１４Ｄを有している。長さフィールド１１８ＤＡは、バイト内に書き込まれることになるデータフィールド１１８ＤＣの長さを表し、そしてより大きなデータブロックを可能にする１６ビットフィールドによって代表される。アドレス１１８ＤＢは書き込みのための先頭アドレスを表示する。バルク書き込みトランザクションユニット１１０Ｄは、大きなブロックのデータがコンポーネント間で転送される必要がある場合に有利である。バルク書き込みトランザクションユニットに応答して、ＡＣＫＴＵが生成されてよい。
【００４３】
バルク読み出しＴＵはまた、バルク読み出し機能性を提供するために用いられてよい。このＴＵは、直接的読み出し要求と同等な拡張されたタイプである。このＴＵに応答して、目標は、バルク読み出し応答ＴＵを、表１に示されるようなＴｙｐｅ＝ＥＸＴ＿ＲＳＰ、及び要求されたデータを含む専用のＥｘｔ＿Ｔｙｐｅと共に発行する。
【００４４】
ハードウエア割り込み及び他のエラー報告機能と類似の機能性を提供するために、ＲＥＰＴＵがサポートされてよい。ＲＥＰＴＵは、タイプフィールド、タグフィールド、長さフィールド、コードフィールド及び他の随意的なデータフィールドを有していてよい。コードフィールドは、ＴＵが割り込み要求であるかどうかを表示し、あるいは割り込み要求でない場合にエラーの性質を表示する。最後に、ＲＥＰＴＵは、種々の可能なタイプの報告に密接に関係するデータのためのデータフィールドを有していてよい。ＲＥＰＴＵに応答して、割り込み又はエラー報告メカニズムの成功又は失敗を知らせ且つ表示するために、受信側によってＲＥＰ−ＡＣＫＴＵが発行されてよい。
【００４５】
ＳＹＮＣＴＵは、再同期のために用いられ、そしてタイプフィールド及びタグフィールドからなる。例えば、ＴＵが適切でない(out-of-order)タグ値で目標に到達する場合には、目標は、ＲＥＰＴＵにエラーを出しそのエラーを開始側へ報告することができる。開始側は次いで、ＳＹＮＣＴＵを用いて再同期することになる。これにより、両側でタグ値を効率的にリセットすることができる。ＳＹＮＣＴＵに応答して、目標はＳＹＮＣ−ＡＣＫを発行し、また開始側は次いで通常動作をレジュームして、タグプール内で最初のの値である値を有するタグを伴う最初のＴＵを開始する。
【００４６】
直接的及び間接的なアドレス要求の両方を検出しそしてそれに応答するために、チャネルが構成され得る。直接的な要求に応答するために各チャネルにおいて構成される、通常はＰＩＥアドレス空間内では重複しない多重アパーチャがあり得る。全てのアパーチャは、一連の属性(attributes)及びレジスタ、例えば個々に構成され得るセキュリティのための基本アドレスレジスタ、長さレジスタ及びアクセス制御レジスタを有している。また、全てのチャネルは、間接的読み出し動作のための基本アドレスレジスタ及び長さレジスタ並びに間接的書き込み動作のための別の基本アドレスレジスタ及び長さレジスタをサポートすることができる。
【００４７】
前述したように、チャネル及びそのチャネル上の１つ以上のアパーチャをセットアップするために、開始側コンポーネントは、ＷＲｃＴＵを送って構成レジスタ内に構成パラメータを書き込むことができる。具体的な構成パラメータは以下のものを含み、即ち、
特定のネットワーク接続に対する同一性(identity)を与えるＣＯＮＮＥＣＴＩＯＮ＿ＩＤパラメータであって、１つ又は２つのチャネルが次いで特定のＣＯＮＮＥＣＴＩＯＮ＿ＩＤに関連付けられてよいＣＯＮＮＥＣＴＩＯＮ＿ＩＤパラメータと、
目標によって受け取られた直接的な書き込みＴＵが承認される必要があることを選択的に要求する各チャネルに対するＥＮＡＢＬＥ＿ＷＲ＿ＡＣＫパラメータであって、間接的な書き込み要求ＴＵの承認を可能にするために同様のパラメータが用いられてよいＥＮＡＢＬＥ＿ＷＲ＿ＡＣＫパラメータと、
最初の（又は次の）間接的な読み出しが実行されることになるＰＩＥアドレス空間内の基本アドレスを特定するＲｄｉ＿ＢＡＳＥ＿ＡＤＤＲＥＳＳであって、各チャネルに対する最初の間接的な書き込みのためのアドレスを同様のパラメータが特定してよいＲｄｉ＿ＢＡＳＥ＿ＡＤＤＲＥＳＳと、
チャネル内のアパーチャの基本アドレス（ＰＩＥアドレス空間内のアドレス）を特定するためのＡＰＥＲＴＵＲＥ＿ＢＡＳＥパラメータと、
アパーチャサイズを特定するためのＡＰＥＲＴＵＲＥ＿ＬＥＮＧＴＨパラメータと、である。
【００４８】
代替案としては、各コンポーネントは、起動の後にそれ自身の構成レジスタを規定値又は他の特定の値に設定してよく、また、それらの値は、任意のメモリ共有トランザクションを開始するのに先立ち開始側コンポーネントによって読まれてよい（ＲＤｃＴＵを用いて）。更に、そのような場合には、開始側コンポーネントは、任意の当該構成パラメータをリセットするためにＷＲｃＴＵを送ることができる（但し、目標のグローバル構成内のＲｅｍｏｔｅ＿Ｃｏｎｆｉｇ＿Ｂｌｏｃｋｅｄパラメータが遠隔構成を回避するようにセットされた場合を除く）。
【００４９】
ＰＩＥプロトコルは一般的プロトコルであり、また、ＰＩＥプロトコルをサポート可能な２つ以上のコンポーネント間での種々の状況において実装され得る。例えば、既に説明したように、ＰＩＥプロトコルは、ポイント・ツー・ポイントネットワークを介して接続されるアプリケーションプロセッサ（ＡＰ）及びグラフィクスプロセッサ（ＧＭＩＣ）の間で実装されてよい。代替的には、当該プロトコルは、共有ネットワークバス又はスイッチによって互いに接続される３つ以上の異なるコンポーネントにわたって実装されてよい。
【００５０】
ＰＩＥプロトコルを実装しているデバイスの各コンポーネントは、機能を実行するための要素の集合であってよく、あるいは単一の集積回路であってよい。
【００５１】
他の修正は当業者にとって明白であろうし、従って、本発明は特許請求の範囲において画定される。
【図１】
0005624997.tif 000003
【図２】
0005624997.tif 000004
【図３】
0005624997.tif 000005
【図４】
0005624997.tif 000006
【図５】
0005624997.tif 000007
【図６】
0005624997.tif 000008
【図７】
0005624997.tif 000009
【図８】
0005624997.tif 000010
【図９】
0005624997.tif 000011