(57)【要約】【課題】コンピュータシステム内に含まれる他のプロセッサとの競合を引き起こすことなしにハードウェアデバイスに対する、プロセッサによるアクセスを可能とする方法をていきょうすること。【解決手段】この方法は、第１のプロセッサから第１のアドレスマップを、また第２のプロセッサから第２のアドレスマップを受け取るステップであり、各アドレスマップは、プロセッサがアクセスするように構成されているハードウェアデバイスのセットのためのメモリマップド入出力アパーチャを含む、ステップと、第１と第２のアドレスマップを組み合わせることによってグローバルアドレスマップを生成するステップと、第１のプロセッサから第１のアクセス要求を受けるステップと、グローバルアドレスマップ内に含まれるアドレスマッピングに基づきハードウェアデバイスに第１のアクセス要求をルーティングするステップとを含む。【選択図】図１Ｄ
2010152892.tif 000002
【特許請求の範囲】
【請求項１】
処理ユニットからコンピュータシステム内に含まれる１つ又は複数のデバイスに、前記コンピュータシステム内に含まれる他の処理ユニットとの競合を引き起こすことなしに信号をルーティングするためのデバイスコントローラであって、
１つ又は複数のハードウェアデバイスと、
入出力（Ｉ／Ｏ）コントローラと
を備え、
前記Ｉ／Ｏコントローラが、
前記第１のプロセッサがアクセスするように構成されている第１のセットのハードウェアデバイスについてのメモリマップドＩ／Ｏアパーチャを含む第１のアドレスマップを、第１のプロセッサから受け取り、
前記第２のプロセッサがアクセスするように構成されている、第２のセットのハードウェアデバイスについてのメモリマップドＩ／Ｏアパーチャを含む第２のアドレスマップを、第２のプロセッサから受け取り、
前記第１のアドレスマップと前記第２のアドレスマップを組み合わせることによってグローバルアドレスマップを生成し、
前記第１のプロセッサから第１のアクセス要求を受け取り、
前記グローバルアドレスマップ内に含まれるアドレスマッピングに基づいて、前記第１のアクセス要求に関連付けられたハードウェアデバイスに前記第１のアクセス要求をルーティングするように構成されている、デバイスコントローラ。
【請求項２】
少なくとも１つのハードウェアデバイスが、前記第１のセットのハードウェアデバイス及び前記第２のセットのハードウェアデバイスのいずれにも含まれる、請求項１に記載のデバイスコントローラ。
【請求項３】
前記Ｉ／Ｏコントローラが、
前記第１のアクセス要求に関連付けられた第１の宛先アドレスに第１のグローバルアドレス部分を追加することによって第１のグローバル宛先アドレスを生成し、
前記グローバルアドレスマップに基づいて、前記第１のグローバル宛先アドレスを第１のデバイスアドレスに変換し、
前記第１のプロセッサを前記ハードウェアデバイスのオーナとして設定し、
前記変換された宛先アドレスから前記グローバルアドレス部分を除去し、
前記第１のアクセス要求を前記ハードウェアデバイスに送信する
ように構成されている、請求項１に記載のデバイスコントローラ。
【請求項４】
前記第１のグローバルアドレス部分を追加することが、ビットを前記第１のアクセス要求に含まれる前記第１の宛先アドレスの前に付加することを含む、請求項３に記載のデバイスコントローラ。
【請求項５】
前記第１のアクセス要求が前記第１のプロセッサから受け取られたとき、前記ビットがゼロの値を有し、前記第１のアクセス要求が前記第２のプロセッサから受け取られたとき、前記ビットが１ビットの値を有する、請求項４に記載のデバイスコントローラ。
【請求項６】
前記Ｉ／Ｏコントローラが、
前記ハードウェアデバイスからリターントランザクションを受け取り、
前記第１のプロセッサが前記ハードウェアデバイスのオーナであると決定し、
前記リターントランザクションに関連付けられた第２の宛先アドレスに第２のグローバルアドレス部分を追加することによって第２のグローバル宛先アドレスを生成し、
前記グローバルアドレスマップを使用して、前記第２のグローバル宛先アドレスを第２のデバイスアドレスに変換し、
前記グローバルアドレスマップ内に含まれるアドレスマッピングに基づいて、前記リターントランザクションを前記第１のプロセッサにルーティングし、
前記変換された宛先アドレスから前記第２のグローバルアドレス部分を除去し、
前記リターントランザクションを前記第１のプロセッサに送信する
ように構成されている、請求項１に記載のデバイスコントローラ。
【請求項７】
前記グローバルアドレス部分を追加することが、ビットを前記リターントランザクション内に含まれる前記第２の宛先アドレスの前に付加することを含む、請求項６に記載のデバイスコントローラ。
【請求項８】
前記リターントランザクションが、割込み又はデバイス完了メッセージを含む、請求項７に記載のデバイスコントローラ。
【請求項９】
前記第１のプロセッサ及び第２のプロセッサが、異なる命令セット、及び異なるオペレーティングシステムを実行するように構成されている、請求項１に記載のデバイスコントローラ。
【請求項１０】
コンピュータシステム内に含まれるハードウェアデバイスに対する、プロセッサによるアクセスを、前記コンピュータシステム内に含まれる他のプロセッサとの競合を引き起こすことなしに可能とするための方法であって、
前記第１のプロセッサがアクセスするように構成されている第１のセットのハードウェアデバイスについてのメモリマップド入出力（Ｉ／Ｏ）アパーチャを含む第１のアドレスマップを、第１のプロセッサから受け取るステップと、
前記第２のプロセッサがアクセスするように構成されている第２のセットのハードウェアデバイスについてのメモリマップドＩ／Ｏアパーチャを含む第２のアドレスマップを、第２のプロセッサから受け取るステップと、
前記第１のアドレスマップと前記第２のアドレスマップを組み合わせることによってグローバルアドレスマップを生成するステップと、
前記第１のプロセッサから第１のアクセス要求を受け取るステップと、
前記グローバルアドレスマップ内に含まれるアドレスマッピングに基づいて、前記第１のアクセス要求に関連付けられたハードウェアデバイスに前記第１のアクセス要求をルーティングするステップと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、一般にコンピュータアーキテクチャの分野に関し、より詳細には、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポートに関する。
【背景技術】
【０００２】
[0002]周知のように、オペレーティングシステム（ＯＳ）を実行する中央処理装置（ＣＰＵ）は、入出力（Ｉ／Ｏ）動作を実施するとき、システムメモリ及び／又は１つ若しくは複数のハードウェアデバイスにアクセスすることができる。Ｉ／Ｏ動作は、メモリブリッジ（たとえば「ノースブリッジ（Ｎｏｒｔｈｂｒｉｄｇｅ）」チップ）及び／又はＩ／Ｏブリッジ（たとえば「サウスブリッジ（Ｓｏｕｔｈｂｒｉｄｇｅ）」チップ）を含めて、１つ又は複数のブリッジを介してＣＰＵに、またＣＰＵからルーティング（ｒｏｕｔｅ）されることが可能である。１つ又は複数のハードウェアデバイスは、とりわけメモリモジュール、コンピュータモニタ、ハードディスクドライブ、ＣＤ−ＲＯＭドライブ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、ＰＣＩエクスプレス（ＰＣＩｅ）コントローラを含むことができる。ハードウェアデバイスは、集積ハードウェアデバイス又は周辺ハードウェアデバイスとすることができる。
【０００３】
[0003]従来のコンピュータアーキテクチャに伴う１つの問題は、コンピュータシステム内に含まれるＣＰＵが１つだけであるという仮定を基礎として設計されていることである。したがって、従来のアーキテクチャ方式を使用してマルチプロセッサシステムを実装すると、１つのＣＰＵがハードウェアデバイスにアクセスしようと試みたとき競合が生じるおそれがある。というのは、各ＣＰＵが、ハードウェアデバイスのすべてに完全かつ排他的にアクセスすることができると考えるからである。
【０００４】
[0004]従来のアーキテクチャに伴う１つのもう１つの問題は、チップセット、ハードウェアデバイスコントローラ、及び下にあるハードウェアデバイスが、一般に、マルチプロセッサコンピュータシステム内で使用するように設計されていないことである。この場合も、２つのプロセッサが同じハードウェアデバイスに同時に、又は非同時にアクセスしようと試みたとき競合及び／又はシステムクラッシュが発生するおそれがある。
【０００５】
[0005]いくつかの従来技術のコンピュータアーキテクチャは、２つのＣＰＵをコンピュータシステム内で共存させることによって、これらの欠点を克服しようと試みる。しかし、これらの従来技術のコンピュータアーキテクチャでは、各ＣＰＵが、コンピュータシステム内の他のどのＣＰＵにも気づいていなければならず、マルチプロセッサシステム内で動作するように特別に構成されていなければならない。さらに、多数の従来技術のマルチＣＰＵシステムでは、複数のプロセッサがホモジニアスであり、これは、これらのプロセッサが実質的に同じである、及び／又は同じベンダからのものであることを意味する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0006]したがって、当技術分野では、複数のヘテロジニアス処理ユニットが同じシステム内の複数のハードウェアデバイスにアクセスすることを可能にするための改善された技法が依然として求められている。
【課題を解決するための手段】
【０００７】
[0007]本発明の実施形態は、コンピュータシステム内に含まれる他のプロセッサとの競合を引き起こすことなしにコンピュータシステム内に含まれるハードウェアデバイスに対する、プロセッサによるアクセスを実現するためのシステム及び方法を提供する。この方法は、第１のプロセッサから、第１のプロセッサがアクセスするように構成されている、第１のセットのハードウェアデバイスについてのメモリマップド入出力（Ｉ／Ｏ）アパーチャを含む第１のアドレスマップを受け取るステップと、第２のプロセッサから、第２のプロセッサがアクセスするように構成されている、第２セットのハードウェアデバイスについてのメモリマップドＩ／Ｏアパーチャを含む第２のアドレスマップを受け取るステップとを含む。この方法は、第１のアドレスマップと第２のアドレスマップを組み合わせることによってグローバルアドレスマップを生成するステップと、第１のプロセッサから第１のアクセス要求を受け取るステップと、グローバルアドレスマップ内に含まれるアドレスマッピングに基づいて、第１のアクセス要求に関連付けられたハードウェアデバイスに第１のアクセス要求をルーティングするステップとをさらに含む。
【０００８】
[0008]本発明の他の実施形態は、プロセッサによって実行されたとき、上記の方法の１つ又は複数の変形形態を実施するようにコンピュータシステムを構成する命令を記憶するコンピュータ可読媒体、並びに上記の方法の１つ又は複数の変形形態を実施するように構成されたデバイスコントローラを含む。
【０００９】
[0009]開示されている方法の１つの利点は、マルチプロセッサシステム内に含まれるヘテロジニアスプロセッサが、チップセット内に含まれる任意の集積ハードウェアデバイス、又は外部バス（たとえば、ＰＣＩ、ＰＣＩｅなど）上に取り付けられた任意の周辺ハードウェアデバイスに、そのプロセッサ、オペレーティングシステム、又はそれらのハードウェアデバイスを修正することなしにアクセスすることができることである。
【００１０】
[0010]本発明の上述の特徴を詳細に理解することができるように、上記で簡単に述べた本発明について、添付の図面にそれらの一部が示されている実施形態を参照してより具体的に述べることができる。しかし、添付の図面は、本発明の典型的な実施形態を示しているにすぎず、したがって、本発明には他の均等に有効な実施形態の余地があり得るため、その範囲を限定するものとみなすべきでないことに留意されたい。
【図面の簡単な説明】
【００１１】
【図１Ａ】本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステムの概念図である。
【図１Ｂ】本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステムの概念図である。
【図１Ｃ】本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステムの概念図である。
【図１Ｄ】本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステムの概念図である。
【図２】本発明の一実施形態による、グローバルアドレスマップを生成するための方法ステップの流れ図である。
【図３】本発明の一実施形態による、グローバルアドレスマップを示す概念図である。
【図４】本発明の一実施形態による、グローバル構成空間マップを示す概念図である。
【図５】本発明の一実施形態による、プロセッサからのアクセス要求をハードウェアデバイスにルーティングするための方法ステップの流れ図である。
【図６】本発明の一実施形態による、ハードウェアデバイスからのリターントランザクションをプロセッサにルーティングするための方法ステップの流れ図である。
【発明を実施するための形態】
【００１２】
[0017]以下の説明では、本発明をより完全に理解するために、多数の特定の詳細について述べる。しかし、これらの特定の詳細の１つ又は複数がなくても本発明を実施することができることが、当業者には明らかになるであろう。他の場合には、本発明を不明瞭にするのを回避するために、周知の特徴は述べられていない。
【００１３】
[0018]図１Ａは、本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステム１００の概念図である。図では、コンピュータシステム１００は、プロセッサ１０２Ａと、プロセッサ１０２Ｂと、メモリブリッジ１０４Ａと、メモリブリッジ１０４Ｂと、メモリ１０６Ａと、メモリ１０６Ｂと、入出力（Ｉ／Ｏ）管理モジュール１０８とを含む。Ｉ／Ｏ管理モジュール１０８は、周辺ハードウェアデバイス１１２Ａ〜１１２Ｎに結合され、Ｉ／Ｏコントローラ１１４と、集積ハードウェアデバイス１１０Ａ〜１１０Ｎとを含む。
【００１４】
[0019]プロセッサ１０２Ａ、プロセッサ１０２Ｂ、周辺ハードウェアデバイス１１２Ａ〜１１２Ｎ、集積ハードウェアデバイス１１０Ａ〜１１０Ｎは、メモリ１０６Ａ及び／又はメモリ１０６Ｂ内に記憶された１つ又は複数のドライバに関連付けられている可能性がある。ドライバは、プロセッサ１０２Ａ及び／又はプロセッサ１０２Ｂによって実行されたとき、プログラム命令を様々なタイプの機械コードに変換するソフトウェアプログラムである。たとえば、プロセッサ１０２Ａは、プロセッサ１０２Ａに関連付けられたドライバを実行し、プログラム命令をプロセッサ１０２Ａネイティブの機械コードに変換することができる。
【００１５】
[0020]プロセッサ１０２Ａ及びプロセッサ１０２Ｂは、それぞれ、ソフトウェアプログラムを実行し、コンピュータシステム１００の様々な機能を実施するように構成された中央処理装置（ＣＰＵ）とすることができる。これらのソフトウェアプログラムは、プロセッサ１０２Ａ、１０２Ｂのそれぞれを実行する１つ又は複数のオペレーティングシステムを含む。オペレーティングシステムは、各コンピューティング環境に関連付けられたアプリケーションを実行するために使用することができる様々なコンピューティング環境をユーザに提供する。たとえば、プロセッサ１０２Ａによって実行される第１のオペレーティングシステムは、ユーザにマイクロソフト（Ｍｉｃｒｏｓｏｆｔ）（登録商標）オフィス（Ｏｆｆｉｃｅ）などのプログラムに対するアクセスを提供することができるウィンドウズ（Ｗｉｎｄｏｗｓ）（登録商標）オペレーティングシステムとすることができ、一方、プロセッサ１０２Ｂによって実行される第２のオペレーティングシステムは、ファイル転送プロトコル（ＦＴＰ）サーバとして機能するＵＮＩＸベースのオペレーティングシステムとすることができる。
【００１６】
[0021]プロセッサ１０２Ａはメモリブリッジ１０４Ａに結合され、プロセッサ１０２Ｂはメモリブリッジ１０４Ｂに結合されている。一実施形態では、メモリブリッジ１０４Ａ、１０４Ｂは、それぞれノースブリッジチップを含む。メモリブリッジ１０４Ａはメモリ１０６Ａに結合され、メモリブリッジ１０４Ｂはメモリ１０６Ｂに結合されている。プロセッサ１０２Ａは、メモリブリッジ１０４Ａを経てメモリ１０６Ａからデータを読み込む、且つそこにデータを書き込むことができ、プロセッサ１０２Ｂは、メモリブリッジ１０４Ｂを経てメモリ１０６Ｂからデータを読み込む、且つそこにデータを書き込むことができる。このデータは、ソフトウェアプログラム、並びに他のタイプのデータを含むことができる。
【００１７】
[0022]各メモリブリッジ１０４Ａ、１０４Ｂは、Ｉ／Ｏ管理モジュール１０８に結合されている。Ｉ／Ｏ管理モジュール１０８は、周辺ハードウェアデバイス１１２Ａ〜１１２Ｎ及び集積ハードウェアデバイス１１０Ａ〜１１０Ｎを、プロセッサ１０２Ａ、１０２Ｂ、及びこれらの処理ユニットによって実行されるソフトウェアプログラムからアクセス可能にする。一実施形態では、Ｉ／Ｏ管理モジュール１０８は、本明細書では「チップセット」１０８とも呼ばれ、サウスブリッジチップを含む。周辺ハードウェアデバイス１１２Ａ〜１１２Ｎは、たとえばユニバーサルシリアルバス（ＵＳＢ）コネクタ又はファイアウェアコネクタなど、コネクタを使用してＩ／Ｏ管理モジュール１０８に結合させることができる。周辺機器１１２Ａ〜１１２Ｎは、とりわけキーボード、マウス、プリンタ、スキャナ、ディスクドライブ、フラッシュドライブ、テープドライブ、マイクロフォン、スピーカ、コンピュータモニタ、デジタルビデオカメラ、又は別のコンピュータシステムを含む。
【００１８】
[0023]集積ハードウェアデバイス１１０Ａ〜１１０Ｎは、Ｉ／Ｏ管理モジュール１０８を記憶する同じチップ上に位置し、様々なシステム機能をコンピュータシステムに提供する。集積ハードウェアデバイス１１０Ａ〜１１０Ｎは、とりわけリアルタイムクロック、ＡＰＭ（ａｄｖａｎｃｅｄ  ｐｏｗｅｒ  ｍａｎａｇｅｍｅｎｔ）モジュール、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｆａｃｅ）バス、ＰＣＩエクスプレス（ＰＣＩｅ）バス、ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）コントローラ、割込みコントローラ、ベースボード管理コントローラ、ＰＡＴＡ（ｐｅｒｉｐｈｅｒａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）コントローラ、ＳＡＴＡ（ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）コントローラ、又は不揮発性の基本入出力システム（ＢＩＯＳ）メモリを含む。
【００１９】
[0024]周辺ハードウェアデバイス１１２Ａ〜１１２Ｎ及び集積ハードウェアデバイス１１０Ａ〜１１０Ｎは、本明細書ではまとめて「ハードウェアデバイス」と呼ばれ、それぞれメモリブリッジ１０４Ａ、１０４Ｂ、及びＩ／Ｏ管理モジュール１０８を介してプロセッサ１０２Ａ、１０２Ｂからアクセス可能である。
【００２０】
[0025]Ｉ／Ｏコントローラ１１４は、プロセッサ１０２Ａ、１０２Ｂとハードウェアデバイスとの間でアクセス要求をアービトレーション（ａｒｂｉｔｒａｔｅ：調停）及びルーティングするように構成された機能ユニットである。Ｉ／Ｏコントローラ１１４は、ハードウェアとしても、ソフトウェアとしても、ハードウェアとソフトウェアの組合せとしても実装することができる。たとえば、Ｉ／Ｏコントローラ１１４は、汎用プロセッサによって実行される、Ｉ／Ｏ管理モジュール１０８内に含まれるファームウェアとして実装することができる。
【００２１】
[0026]Ｉ／Ｏコントローラ１１４は、プロセッサ１０２Ａ、１０２Ｂによって送られるアクセス要求（本明細書では「下流トランザクション」とも呼ばれる）をインターセプトするように構成され、そのハードウェアデバイスにアクセスする複数のプロセッサ１０２Ａ、１０２Ｂ間の競合を回避するように機能し、アクセス要求を適切なハードウェアデバイスにルーティングする。また、Ｉ／Ｏコントローラ１１４は、ハードウェアデバイスによって送られるリターントランザクション及び割込み（本明細書では「上流トランザクション」とも呼ばれる）をインターセプトし、これらのトランザクションを対応するプロセッサにルーティングする。
【００２２】
[0027]本発明の実施形態は、プロセッサ又はオペレーティングシステムの修正なしに、コンピュータシステム１００内の各プロセッサ１０２Ａ、１０２Ｂがコンピュータシステム１００内に含まれる任意のハードウェアデバイスを使用し、それにアクセスすることを可能にするためのチップセットサポートを提供する。具体的には、本発明の実施形態は、各プロセッサ１０２Ａ、１０２Ｂとハードウェアデバイスとの間のトランザクションをルーティングするためのサポート、ハードウェアデバイスとメモリ１０６Ａ、１０６Ｂとの間のトランザクションをルーティングするためのサポート、ハードウェアデバイスを各プロセッサ１０２Ａ、１０２Ｂにバインドするためのサポート、プロセッサ１０２Ａ、１０２Ｂ間でデバイスを移行するためのサポート、及びハードウェアデバイス間でピアツーピアトランザクションをルーティングするためのサポートを提供する。さらに、本発明の実施形態は、どの特定のハードウェアデバイスコントローラに対する修正にも依拠しない。そうではなく、本発明の実施形態は、チップセット１０８内の修正に依拠する。
【００２３】
[0028]図１Ａに示されているコンピュータシステム１００は、２つのプロセッサ１０２Ａ、１０２Ｂと、２つのメモリブリッジ１０４Ａ、１０４Ｂとを含む。しかし、本発明の実施形態は、任意の数のプロセッサ及びメモリブリッジを有するシステムアーキテクチャにも等しく適用される。さらに、各プロセッサ１０２Ａ、１０２Ｂは、必須ではないがヘテロジニアスであってもよく、ヘテロジニアスは、おそらくは相異なるオペレーティングシステムを実行する、おそらくは相異なる命令セットを有し、また任意の数の他の違いを有する、相異なるベンダからのプロセッサを含む。
【００２４】
[0029]さらに、コンピュータシステム１００の追加の実施形態は、とりわけ、ネットワークアダプタ、システムディスク、アドインカード、ディスプレイデバイスなど、また、グラフィック処理装置（ＧＰＵ）など並列処理ユニット（ＰＰＵ）を含む並列処理サブシステムなどの構成要素を含む。
【００２５】
[0030]図１Ａに記載されているアーキテクチャは本発明の範囲を決して限定しないこと、また、本明細書で教示されている技法は、限定することなしに１つ又は複数のＣＰＵ、１つ又は複数のマルチコアＣＰＵ、１つ又は複数のＰＰＵ、１つ又は複数のプログラム可能な、及び／又はプログラム可能でないＣＰＵ、１つ又は複数の専用処理ユニットなどを含めて、本発明の範囲から逸脱することなしに、任意の適正に構成された（１つ又は複数の）処理ユニット上で実装することができることを、当業者なら理解するであろう。
【００２６】
[0031]また、図１Ａに示されているコンピュータシステム１００アーキテクチャは、図１Ｂ〜１Ｄにより詳細に記載されているように、任意の数のチップとして実施することができる。図１Ｂは、本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステム１２０の概念図である。コンピュータシステム１２０は、図１Ａに示されているコンピュータシステム１００と同じ構成要素を含むことができる。図では、プロセッサ１０２Ａ及びメモリブリッジ１０４Ａが、第１のチップ１１６上で集積されており、プロセッサ１０２Ｂ、メモリブリッジ１０４Ｂ、及びＩ／Ｏ管理モジュール１０８が、第２のチップ１１８上で集積されている。第２のチップ１１８は、第１のチップ１１６に対する外部接続をサポートする。一実施形態では、第２のチップ１１８は、アップグレードし追加の開部プロセッサ又はメモリブリッジを含める（すなわち、第１のチップ１１６に接続するようにアップグレードする）ことができる完全機能を有するシステム・オン・チップを含む。
【００２７】
[0032]図１Ｃは、本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステム１３０の概念図であるこの場合も、図１Ａに示されているコンピュータシステム１００と同じ構成要素を含むことができる。図では、プロセッサ１０２Ａ及びメモリブリッジ１０４Ａが、第１のチップ１３２上で集積されており、メモリブリッジ１０４Ｂ及びＩ／Ｏ管理モジュール１０８が、第２のチップ１３４上で集積されており、プロセッサ１０２Ｂが、第３のチップ１３６上で集積されている。一実施形態では、第１のチップ１３２は、プロセッサ及び対応するメモリブリッジを含むチップを供給する第１のベンダによって提供され、第２のチップ１３４及び／又は第３のチップ１３６は、第２のベンダによって提供される。
【００２８】
[0033]図１Ｄは、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステム１４０の概念図である本発明の一実施形態による、この場合も、コンピュータシステム１４０は、図１Ａに示されているコンピュータシステム１００と同じ構成要素を含むことができる。図では、プロセッサ１０２Ａ及びメモリブリッジ１０４Ａが、第１のチップ１４２上で集積されており、プロセッサ１０２Ｂ及びメモリブリッジ１０４Ｂが、第２のチップ１４４上で集積されており、Ｉ／Ｏ管理モジュール１０８が、第３のチップ１４６上で集積されている。
【００２９】
[0034]当業者には明らかなように、図１Ｂ〜１Ｄに示されているもの以外に、チップの他の組合せが本発明の実施形態の範囲内にある。様々な実施形態では、メモリブリッジとチップセットの間の接続は、ＰＣＩエクスプレス（ＰＣＩｅ）、デスクトップ管理インターフェース（ＤＭＩ）標準と組み合わされたＰＣＩｅ、ハイパートランスポート（ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、ＨＴ）、知的所有権のある、及び／又は内部のチップセットインターフェース、或いは任意の他のサウスブリッジからノースブリッジへの接続とすることができる。さらに、様々な実施形態では、特定のプロセッサと、対応するメモリブリッジとの間の接続は、プロセッサベンダ特有である。他の実施形態では、各プロセッサは、様々なオペレーティングシステムを含めて、任意のソフトウェアを実行中であってもよく、各プロセッサを、それ自体のアドレスマップを用いて、あたかもそのコンピュータシステム内の唯一のプロセッサであるかのように構成することができる。たとえば、各プロセッサ及び／又はオペレーティングシステムは、ハードウェアデバイスが、あたかもその特定のプロセッサ及び／又はオペレーティングシステム専用であるかのように見えることを予想することができる。この場合も、本発明の実施形態は、複数のプロセッサによるアクセスを受けることになるハードウェアデバイスが、マルチプロセッサ及び／又はヘテロジニアスプロセッサコンピューティング環境と共に動作するように特に設計されていないときでさえ、それらのハードウェアデバイスのためのサポートを提供する。
【００３０】
[0035]図２は、本発明の一実施形態による、グローバルアドレスマップを生成するための方法ステップの流れ図である。方法２００について図１Ａ〜１Ｄのシステムと共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の実施形態の範囲内にあることを、当業者なら理解するであろう。
【００３１】
[0036]図では、方法２００は、第１のプロセッサ（たとえば、プロセッサ１０２Ａ）に関連付けられたハードウェアデバイスが列挙されるステップ２０２で始まる。一実施形態では、ハードウェアデバイスを列挙することは、少なくとも一部には、第１のプロセッサによって実行されるファームウェアコード（たとえば、ＢＩＯＳ及び／又は他のシステムソフトウェア）によって実施される。代替の実施形態では、Ｉ／Ｏコントローラ１１４は、第１のプロセッサに関連付けられたハードウェアデバイスを列挙する。
【００３２】
[0037]ステップ２０４では、第１のプロセッサ用の「メモリ空間」を提供する第１のアドレスマップが生成される。第１のアドレスマップ内のメモリアドレスは、第１のプロセッサがアクセスするように構成されている列挙ハードウェアデバイスのための物理メモリを、又はメモリマップドＩ／Ｏアパーチャを指すことができる。
【００３３】
[0038]ステップ２０６では、第２のプロセッサ（たとえば、プロセッサ１０２Ｂ）に関連付けられたハードウェアデバイスが列挙される。ステップ２０６は、ステップ２０２と実質的に同様な仕方で実施することができる。しかし、第１のプロセッサに関連付けられた列挙デバイスは、第２のプロセッサに関連付けられた列挙デバイスと異なる可能性がある。一実施形態では、コンピュータシステム内に含まれるハードウェアデバイスのすべてが、各プロセッサによって列挙される。代替の実施形態では、各ハードウェアデバイスが、列挙中に、１つのプロセッサだけに統計的にバインドされ、その結果、そのプロセッサだけがその特定のハードウェアデバイスにアクセスすることができる。他の実施形態では、ハードウェアデバイスのうちのいくつかが両プロセッサによって列挙され、他のハードウェアデバイスは、一方のプロセッサだけによって列挙される。
【００３４】
[0039]ステップ２０８では、第２のプロセッサ用の「メモリ空間」を提供する第２のアドレスマップが生成される。ステップ２０４で生成された第１のアドレスマップと同様に、第２のアドレスマップ内のメモリアドレスは、第２のプロセッサがアクセスするように構成されている列挙ハードウェアデバイスのための物理メモリを、又はメモリマップドＩ／Ｏアパーチャを指すことができる。しかし、第２のプロセッサがアクセスすることができる列挙デバイスのリストは、第１のプロセッサがアクセスすることができる列挙デバイスのリストと異なる可能性があるため、第２のアドレスマップは、第１のアドレスマップと異なる可能性がある。さらに、列挙デバイスのリスト、及び各メモリマップドアパーチャのサイズが両プロセッサについて同じであるときでさえ、プロセッサ、及び／又は各プロセッサによって実行されるオペレーティングシステムは、アドレスマップを生成するとき、異なるスキームを実装することができる。したがって、このシナリオでさえ、第１のアドレスマップと第２のアドレスマップは異なる可能性がある。
【００３５】
[0040]ステップ２１０では、Ｉ／Ｏ管理モジュール１０８が第１のプロセッサから第１のアドレスマップを受け取る。上述のように、第１のアドレスマップは、システム内のハードウェアデバイスに対するプロセッサの「ビュー（ｖｉｅｗ）」を規定する。トランザクションが第１のプロセッサとハードウェアデバイスの間でルーティングされるためには、Ｉ／Ｏ管理モジュール１０８は、第１のアドレスマップを受け取り、記憶する。
【００３６】
[0041]ステップ２１２では、Ｉ／Ｏ管理モジュール１０８が第２のプロセッサから第２のアドレスマップを受け取る。ステップ２１２は、上述のステップ２１０と実質的に同様である。
【００３７】
[0042]ステップ２１４では、Ｉ／Ｏ管理モジュール１０８は、第１のアドレスマップと第２のアドレスマップを組み合わせることによって、グローバルアドレスマップを生成する。本明細書で述べるように、グローバルアドレスマップは、各プロセッサから始まるトランザクションを適切なハードウェアデバイスにルーティングすることを可能にし、ハードウェアデバイスから始まるトランザクションを適切なプロセッサにルーティングすることを可能にする。一実施形態では、グローバルアドレスマップに含まれるアドレスは、「０」が前に付加された第１のアドレスマップ内のアドレスと、「１」が前に付加された第２のアドレスマップ内のアドレスとを含む。このようにして、グローバルアドレス空間は、第１のアドレスマップ及び／又は第２のアドレスマップのアドレス空間に関する１つの追加ビットを含む。２つを超えるプロセッサがコンピュータシステム内に含まれる代替の実施形態では、追加の、前に付加されるビットを、プロセッサ間で曖昧さを除くために含むことができる。他の代替の実施形態では、第１のアドレスマップと第２のアドレスマップは、ビットをアドレスマップの前に付加することとは無関係な、且つ異なる、より複雑な技法を使用してグローバルアドレスマップに組み合わされる。
【００３８】
[0043]図３は、本発明の一実施形態による、グローバルアドレスマップ３０６を示す概念図である。図では、第１のＭＭＩＯ部分と第１の物理メモリ部分とを含む第１のアドレスマップ３０２が、第２のＭＭＩＯ部分と第２の物理メモリ部分とを含む第２のアドレスマップ３０４と組み合わされ、グローバルアドレスマップ３０６を生成する。
【００３９】
[0044]図２及び図３に記載されている方法及びシステムは、メモリ空間アドレスマップを具体的に説明する。さらに、同様の方法及びシステムを実装し、第１のプロセッサ用及び第２のプロセッサ用の「構成空間」アドレスマップを生成することができ、これらのマップがグローバル構成空間マップに組み合わされる。知られているように、構成空間アドレスは、＜ｂｕｓ，ｄｅｖｉｃｅ，ｆｕｎｃｔｉｏｎ＞という形態のものであり、プロセッサとハードウェアデバイスの間の構成サイクルのために、またいくつかのＰＣＩｅトランザクションパケットをルーティングするために使用されるアドレスである。
【００４０】
[0045]図４は、本発明の一実施形態による、グローバル構成空間マップ４０６を示す概念図である。図では、第１のプロセッサ（たとえば、プロセッサ１０２Ａ）に関連付けられた第１の構成空間アドレスマップ４０２を、第２のプロセッサ（たとえば、プロセッサ１０２Ｂ）に関連付けられた第２の構成空間アドレスマップ４０４と組み合わせ、グローバル構成空間アドレスマップ４０６を生成することができる。図３に記載されているグローバルアドレスマップ３０６と同様に、グローバル構成空間アドレスマップ４０６は、１つ又は複数の、前に付加されるビットを含むことや、任意の他の技術的に可能な技法を使用して第１の構成空間アドレスマップと第２の構成空間アドレスマップとを組み合わせることができる。
【００４１】
[0046]図５は、本発明の一実施形態による、プロセッサからのアクセス要求をハードウェアデバイスにルーティングするための方法ステップの流れ図である。方法５００について図１Ａ〜４のシステム及び／又は方法と共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の実施形態の範囲内にあることを、当業者なら理解するであろう。
【００４２】
[0047]図では、方法５００は、Ｉ／Ｏ管理モジュール１０８がプロセッサからアクセス要求を受け取るステップ５０２で始まる。プロセッサは、たとえば、プロセッサ１０２Ａ、１０２Ｂの一方とすることができる。アクセス要求は、上述のようにＭＭＩＯアドレス又は構成空間アドレスを含むことができる。
【００４３】
[0048]ステップ５０４では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレス部分を、アクセス要求内に含まれる下流宛先アドレスに追加し、グローバル宛先アドレスを生成する。一実施形態では、アクセス要求が第１のプロセッサ（たとえば、プロセッサ１０２Ａ）から受け取られた場合、「０」が下流宛先アドレスの前に付加され、一方、アクセス要求が第２のプロセッサ（たとえば、プロセッサ１０２Ｂ）から受け取られた場合、「１」が下流宛先アドレスの前に付加される。
【００４４】
[0049]ステップ５０６では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレスマップに基づいて、グローバル宛先アドレスをデバイスアドレスに変換する。一実施形態では、デバイスアドレスは、コンピュータシステム内のハードウェアデバイスの物理ハードウェアアドレスを含む。たとえば、グローバルアドレスマップは、図３に記載されているグローバルアドレスマップ３０６を含むことができる。ステップ５０８では、Ｉ／Ｏ管理モジュール１０８は、アクセス要求の入手元であるプロセッサを、そのハードウェアデバイスの「オーナ」として設定する。このようにして、ハードウェアデバイスは、そのハードウェアデバイスにアクセス要求を発行した最後のプロセッサに動的にバインドされる。このバインディングは、図６により詳細に記載されているように、ハードウェアデバイスからのリターントランザクションを適切なプロセッサにルーティングするとき有用である。
【００４５】
[0050]所有権のバインディングは、いくつかの仕方で行うことができる。一実施形態では、上述のように、ハードウェアデバイスを、そのハードウェアデバイスに向けて送られた下流トランザクションを発行した最後のプロセッサにバインドすることができる。この実施形態では、後続の上流トランザクションが、最後の下流トランザクションの「オーナ」に対応するグローバルアドレス空間に変換される。
【００４６】
[0051]代替の実施形態では、Ｉ／Ｏ管理モジュール１０８は、任意のハードウェアデバイスをコンピュータシステム内に含まれる任意のプロセッサにバインドするように構成されている集積ハードウェアデバイス（たとえば、「ＢｉｎｄＤｅｖ」デバイス）を含む。ＢＩＯＳ又はシステムソフトウェアがハードウェアデバイスを列挙するとき、ＢｉｎｄＤｅｖが発見され、使用可能なハードウェアデバイスのテーブルが生成され、どのプロセッサに各ハードウェアデバイスをバインドすべきか判定される。列挙ソフトウェアがこのテーブルをＢｉｎｄＤｅｖに書き込み、ＢｉｎｄＤｅｖは、そのテーブルをＩ／Ｏ管理モジュール１０８内に記憶する。ＢｉｎｄＤｅｖを使用するために、１つのプロセッサが最初にブートすることができ、そのＢＩＯＳが、システム内のデバイスすべてを列挙及びバインドすることができる。別法として、各プロセッサ上のＢＩＯＳ及び／又はシステムソフトウェアが、ＢｉｎｄＤｅｖを使用しデバイスをプロセッサにバインドするように調整することができる。デバイスがシステムを出入りすると、（ホットプラグイベントによってトリガされて）テーブルが更新される。さらに、ＢｉｎｄＤｅｖは、相異なるタイプのトランザクションについて異なるバインディングをサポートすることができる。たとえば、関係するトランザクションが構成トランザクションであるか、メッセージトランザクションであるか、Ｉ／Ｏトランザクションであるか、それともメモリマップドトランザクションであるかに応じて、デバイス所有権は、特定のハードウェアデバイスについて異なるものであってもよい。また、システムソフトウェアは、システムがブートした後いつでも、上述の技法を使用して、ハードウェアデバイスを異なるプロセッサに再バインドすることができる。
【００４７】
[0052]さらに、あるプロセッサが特定のハードウェアデバイスの「オーナ」に設定された後で、この情報は、「上流トランザクション」中に取り出せるように記憶される。「ＢｉｎｄＤｅｖ」ハードウェアデバイスがプロセッサを特定のデバイスにバインドするように構成されている実施形態では、「ＢｉｎｄＤｅｖ」ハードウェアデバイスが所有権情報を記憶する。さらに、「動的」バインディング実施形態では、この情報は、プロセッサとハードウェアデバイスの間のトランザクション経路上で使用可能な、Ｉ／Ｏ管理モジュール１０８内のどこに記憶されてもよい。一実施形態では、Ｉ／Ｏコントローラ１１４が所有権情報を記憶する。他の実施形態では、ハードウェアデバイスの周りの「ラッパ」が所有権情報を記憶する。他の実施形態では、いくつかのハードウェアデバイスそれら自体が所有権の概念をサポートし、所有権情報を記憶することができる。他の実施形態では、デバイス所有権は、メモリコントローラ１０４Ａ及び／又は１０４ＢとＩ／Ｏ管理モジュール１０８の間の入口／出口ポート内、或いはＩ／Ｏ管理モジュール１０８とハードウェアデバイスの間の入口／出口ポート内に記憶される。
【００４８】
[0053]ステップ５１０では、Ｉ／Ｏ管理モジュール１０８は、デバイスアドレスに基づいて、アクセス要求をハードウェアデバイスにルーティングする。ステップ５１２では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレス部分を除去し、ステップ５１４で、アクセス要求をハードウェアデバイスに送信する。一実施形態では、プロセッサもハードウェアデバイスも、コンピュータシステム内に、そのハードウェアデバイスにアクセスすることができる複数のプロセッサがあることに気づいていない。グローバルアドレス部分、たとえば前に付加されたビットが、アクセス要求のアドレス部分から除去される。というのは、ハードウェアデバイスは、アクセス要求がＩ／Ｏ管理モジュール１０８によって受け取られたときアクセス要求に含まれる元の下流宛先アドレスと同じ数のビットを有するアドレスを予想しているからである。
【００４９】
[0054]図６は、本発明の一実施形態による、ハードウェアデバイスからのリターントランザクションをプロセッサにルーティングするための方法ステップの流れ図である。方法６００について図１Ａ〜５のシステム及び方法と共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の範囲内にあることを、当業者なら理解するであろう。
【００５０】
[0055]図では、方法６００は、Ｉ／Ｏ管理モジュール１０８がハードウェアデバイスからリターントランザクションを受け取るステップ６０２で始まる。リターントランザクションは、本明細書では「上流トランザクション」とも呼ばれる。様々な実施形態では、リターントランザクションは、（ａ）以前の下流ノンポステッド（ｎｏｎ−ｐｏｓｔｅｄ）要求（たとえば、読取りリターンデータ）に起因する上流デバイス完了（ｃｏｍｐｌｅｔｉｏｎ）、（ｂ）デバイスコントローラのダイレクトメモリアクセス（ＤＭＡ）のための、システムメモリからの読取り及び／又はシステムメモリへの書込みを含むトランザクション、（ｃ）上流メッセージ（たとえば、割込み）、（ｄ）２つのハードウェアデバイス間のピアツーピアトランザクションを含む。ピアツーピアトランザクションは、本発明の実施形態によれば、他の３つのタイプの上流トランザクションに比べて、Ｉ／Ｏ管理モジュール１０８によって違うように処理される。したがって、ピアツーピアトランザクションを処理することは、図６に記載されている方法６００の範囲外であり、下記でさらに述べる。
【００５１】
[0056]ステップ６０４では、Ｉ／Ｏ管理モジュール１０８は、どのプロセッサが、上流トランザクションの入手元であるハードウェアデバイスのオーナであるか判定する。Ｉ／Ｏ管理モジュール１０８は、ステップ５０８で生成された所有権情報を検査することができる。
【００５２】
[0057]ステップ６０６では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレス部分を上流宛先アドレスに追加し、グローバル宛先アドレスを生成する。追加されるグローバルアドレス部分は、どのプロセッサが、上流トランザクションを送るハードウェアデバイスのオーナであるかによって決まる。一実施形態では、グローバルアドレス部分を追加することは、どのプロセッサがそのハードウェアデバイスのオーナであるかに基づいて、ビットを上流宛先アドレスの前に付加することを含む。
【００５３】
[0058]ステップ６０８では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレスマップに基づいて、グローバル宛先アドレスをデバイスアドレスに変換し、ステップ６１０で、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレスに基づいて、上流トランザクションを適切なプロセッサにルーティングする。一実施形態では、ステップ６０８及びステップ６１０は、本明細書で前述の、それぞれステップ５０６及びステップ５１０と実質的に同様である。
【００５４】
[0059]ステップ６１２では、Ｉ／Ｏ管理モジュール１０８は、デバイスアドレスからグローバルアドレス部分を除去し、ステップ６１４で、Ｉ／Ｏ管理モジュール１０８は、上流トランザクションをプロセッサに送信する。一実施形態では、ステップ６１２及びステップ６１４は、本明細書で前述の、それぞれステップ５１２及びステップ５１４と実質的に同様である。
【００５５】
[0060]代替の実施形態では、Ｉ／Ｏ管理モジュール１０８はまた、２つのハードウェアデバイス間でピアツーピアトランザクションをルーティングすることができる。たとえば、プロセッサが、アクセス要求を第１のハードウェアデバイス（たとえば、ハードウェアデバイスＡ）に発行することによってピアツーピアトランザクションを開始し、第１のハードウェアデバイスは、第２のハードウェアデバイス（たとえば、ハードウェアデバイスＢ）に向けて送られる上流トランザクションを発行する。一実施形態では、元のアクセス要求を発行したプロセッサは、両ハードウェアデバイスのオーナとして設定される。したがって、上流トランザクションの宛先アドレス（すなわち、ハードウェアデバイスＢの宛先アドレス）が両ハードウェアデバイスのローカルアドレスマップ内で同じであるため、ピアツーピアトランザクションをサポートするために追加の修正が必要とされない。他の実施形態では、ピアツーピアアパーチャをすべてのプロセッサアドレスマップ内で同じオフセットで割り振り、その結果、デバイス「所有権」が重要なものでなくなるように、コンピュータシステムを、ＢＩＯＳ、又はＩ／Ｏ管理モジュール１０８内に含まれるシステムソフトウェアによって構成することができる。このようにして、どのプロセッサがピアツーピアトランザクションを開始したかにかかわらず、各ハードウェアデバイスについての上流ピアツーピアトランザクションすべての宛先アドレスが同じであるため、ピアツーピアトランザクションルーティングは「まさに機能する（ｊｕｓｔ  ｗｏｒｋ）」。
【００５６】
[0061]有利には、マルチＣＰＵシステム内に含まれるヘテロジニアスＣＰＵが、チップセット内に含まれる任意の集積ハードウェアデバイス、又は外部バス（たとえば、ＰＣＩ、ＰＣＩｅなど）上に取り付けられた任意の周辺ハードウェアデバイスに、ＣＰＵ、オペレーティングシステム、又はそれらのハードウェアデバイスを修正することなしにアクセスすることができる。本発明の実施形態は、より複雑かつ興味深いコンピューティングシステムを組み上げることを可能にする。たとえば、比較的「弱い」プロセッサを有するシステム・オン・チップは、より高い処理性能をもたらすために高性能ＣＰＵ及び／又はＧＰＵを含むドッキングシステムに接続されることにより、容易に「アップグレード」することができる。さらに、これらの２つのＣＰＵは、ヘテロジニアスとする、及び／又は異なるベンダ製とすることができ、これは、さらに興味深いマルチＣＰＵコンピュータシステムを組み上げることを可能にする。
【００５７】
[0062]本発明の一実施形態は、コンピュータシステムと共に使用するためのプログラム製品として実施することができる。このプログラム製品の（１つ又は複数の）プログラムは、（本明細書で述べられている方法を含めて）諸実施形態の機能を規定し、様々なコンピュータ可読記憶媒体上に含むことができる。例示的なコンピュータ可読記憶媒体は、それだけには限らないが、（ｉ）情報が永続的に記憶される非書込み可能記憶媒体（たとえば、ＣＤ−ＲＯＭドライブによって読取り可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意のタイプのソリッドステート不揮発性半導体メモリ）、及び（ｉｉ）変更可能な情報が記憶される書込み可能記憶媒体（たとえば、ディスケットドライブ内のフロッピディスク、又はハードディスクドライブ、又は任意のタイプのソリッドステートランダムアクセス半導体メモリ）を含む。
【００５８】
[0063]以上、本発明について具体的な実施形態を参照して述べた。しかし、添付の特許請求の範囲に述べられている本発明の、より広い精神及び範囲から逸脱することなしに、様々な修正及び変更を本発明に加えることができることを、当業者なら理解するであろう。したがって、前述の説明及び図面は、限定的な意味ではなく例示的な意味で考えるべきである。
【符号の説明】
【００５９】
１００  コンピュータシステム
１０２Ａ  プロセッサ
１０２Ｂ  プロセッサ
１０４Ａ  メモリブリッジ
１０４Ｂ  メモリブリッジ
１０６Ａ  メモリ
１０６Ｂ  メモリ
１０８  入出力（Ｉ／Ｏ）管理モジュール
１１０Ａ〜１１０Ｎ  集積ハードウェアデバイス
１１２Ａ〜１１２Ｎ  周辺ハードウェアデバイス
１１４  Ｉ／Ｏコントローラ
１１６  第１のチップ
１１８  第２のチップ
１２０  コンピュータシステム
１３０  コンピュータシステム
１３２  第１のチップ
１３４  第２のチップ
１３６  第３のチップ
１４０  コンピュータシステム
１４２  第１のチップ
１４４  第２のチップ
１４６  第３のチップ
３０２  第１のアドレスマップ
３０４  第２のアドレスマップ
３０６  グローバルアドレスマップ
４０２  第１の構成空間アドレスマップ
４０４  第２の構成空間アドレスマップ
４０６  グローバル構成空間マップ
【図１Ａ】
2010152892.tif 000003
【図１Ｂ】
2010152892.tif 000004
【図１Ｃ】
2010152892.tif 000005
【図１Ｄ】
2010152892.tif 000006
【図２】
2010152892.tif 000007
【図３】
2010152892.tif 000008
【図４】
2010152892.tif 000009
【図５】
2010152892.tif 000010
【図６】
2010152892.tif 000011
【外国語明細書】
2010152892000001.pdf