(57)【要約】【課題】第２のプロセッサに関連付けられたメモリに第１のプロセッサがアクセスすることを可能にするための方法を提供すること。【解決手段】この方法は、第１のプロセッサから、ＮＵＭＡデバイスのためのＭＭＩＯアパーチャを含む第１のアドレスマップを受け取るステップと、第２のプロセッサから、ハードウェアデバイスのためのＭＭＩＯアパーチャを含む第２のアドレスマップを受け取るステップと、第１のアドレスマップと第２のアドレスマップを組み合わせることによってグローバルアドレスマップを生成するステップと、第１のプロセッサからＮＵＭＡデバイスに送られたアクセス要求を受け取るステップと、第１のアクセス要求と変換テーブルとに基づいて、メモリアクセス要求を生成するステップと、グローバルアドレスマップに基づいて、メモリアクセス要求をメモリにルーティングするステップとを含む。【選択図】図５
2010152891.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム内に含まれる第２のプロセッサに関連付けられた物理メモリに第１のプロセッサがアクセスすることを可能にするためのデバイスコントローラであって、
前記第１のプロセッサから受け取られた第１のアクセス要求と、メモリマップド入出力（Ｉ／Ｏ）アドレスを前記第２のプロセッサに関連付けられた物理メモリに関連付けられた物理アドレスに変換するための変換テーブルとに基づいて、メモリアクセス要求を生成するように構成されている不均一メモリアクセス（ＮＵＭＡ）デバイスであり、前記変換テーブルが、前記第１のアクセス要求に関連付けられた第１のアドレスを前記第２のプロセッサに関連付けられた前記物理メモリに関連付けられた第２のアドレスにマップする、デバイスと、
入出力（Ｉ／Ｏ）コントローラと
を備え、
前記Ｉ／Ｏコントローラが、
前記第１のプロセッサがアクセスするように構成されているＮＵＭＡデバイスについてのメモリマップドＩ／Ｏアパーチャを含む第１のアドレスマップを、前記第１のプロセッサから受け取り、
前記第２のプロセッサがアクセスするように構成されているハードウェアデバイスのセットについてのメモリマップドＩ／Ｏアパーチャを含む第２のアドレスマップを、前記第２のプロセッサから受け取り、
前記第１のアドレスマップと前記第２のアドレスマップを組み合わせることによってグローバルアドレスマップを生成し、
前記第１のプロセッサから前記ＮＵＭＡデバイスに送られた、前記第１のプロセッサが前記第２のプロセッサに関連付けられた前記物理メモリに対するアクセスを要求する前記第１のアクセス要求を受け取り、
前記グローバルアドレスマップに基づいて、前記メモリアクセス要求を前記物理メモリにルーティングする
ように構成されている、デバイスコントローラ。
【請求項２】
前記Ｉ／Ｏコントローラが、
前記メモリアクセス要求に応答するアクセス応答を、前記物理メモリから受け取り、
前記アクセス応答に関連付けられたデータに基づいて、前記第１のアクセス要求に応答する第２のリターン要求を生成する
ようにさらに構成されている、請求項１に記載のデバイスコントローラ。
【請求項３】
前記第２のリターン要求が、割込み又はデバイス完了メッセージを含む、請求項２に記載のデバイスコントローラ。
【請求項４】
前記Ｉ／Ｏコントローラが、
前記第１のアクセス要求に関連付けられた第１の宛先アドレスに第１のグローバルアドレス部分を追加することによって第１のグローバル宛先アドレスを生成し、
前記グローバルアドレスマップに基づいて、前記第１のグローバル宛先アドレスをＮＵＭＡデバイスアドレスに変換し、
前記変換された宛先アドレスから前記グローバルアドレス部分を除去し、
前記第１のアクセス要求を前記ＮＵＭＡデバイスに送信する
ようにさらに構成されている、請求項１に記載のデバイスコントローラ。
【請求項５】
前記変換テーブルが、前記第２のプロセッサに関連付けられた物理メモリの異なる部分にそれぞれマップされる１つ又は複数のベースアドレスレジスタ（ＢＡＲ）を含む、請求項１に記載のデバイスコントローラ。
【請求項６】
前記物理メモリの前記異なる部分が、キャッシュコヒーレント及び／又は非キャッシュコヒーレントである、請求項１に記載のデバイスコントローラ。
【請求項７】
前記ＮＵＭＡデバイスが、メモリコントローラクラスタイプに関連付けられた列挙クラスコードを有する、請求項１に記載のデバイスコントローラ。
【請求項８】
コンピュータシステム内に含まれる第２のプロセッサに関連付けられた物理メモリに第１のプロセッサがアクセスすることを可能にするための方法であって、
前記第１のプロセッサがアクセスするように構成されている不均一メモリアクセス（ＮＵＭＡ）デバイスについてのメモリマップド入出力（Ｉ／Ｏ）アパーチャを含む第１のアドレスマップを、前記第１のプロセッサから受け取るステップと、
前記第２のプロセッサがアクセスするように構成されているハードウェアデバイスのセットについてのメモリマップドＩ／Ｏアパーチャを含む第２のアドレスマップを、前記第２のプロセッサから受け取るステップと、
前記第１のアドレスマップと前記第２のアドレスマップを組み合わせることによってグローバルアドレスマップを生成するステップと、
前記第１のプロセッサから前記ＮＵＭＡデバイスに送られた、前記第１のプロセッサが前記第２のプロセッサに関連付けられた前記物理メモリに対するアクセスを要求する第１のアクセス要求を受け取るステップと、
前記第１のアクセス要求と、メモリマップドＩ／Ｏアドレスを物理メモリに関連付けられた物理アドレスに変換するための変換テーブルとに基づいて、メモリアクセス要求を生成するステップであり、前記変換テーブルが、前記第１のアクセス要求に関連付けられた第１のアドレスを前記第２のプロセッサに関連付けられた前記物理メモリに関連付けられた第２のアドレスにマップする、ステップと、
前記グローバルアドレスマップに基づいて、前記メモリアクセス要求を前記物理メモリにルーティングするステップと
を含む方法。
【請求項９】
前記メモリアクセス要求に応答するアクセス応答を、前記物理メモリから受け取るステップと、
前記アクセス応答に関連付けられたデータに基づいて、前記第１のアクセス要求に応答する第２のリターン要求を生成するステップと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記第１のアクセス要求に関連付けられた第１の宛先アドレスに第１のグローバルアドレス部分を追加することによって第１のグローバル宛先アドレスを生成するステップと、
前記グローバルアドレスマップに基づいて、前記第１のグローバル宛先アドレスをＮＵＭＡデバイスアドレスに変換するステップと、
前記変換された宛先アドレスから前記グローバルアドレス部分を除去するステップと、
前記第１のアクセス要求を前記ＮＵＭＡデバイスに送信するステップと
をさらに含む、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、一般にコンピュータアーキテクチャの分野に関し、より詳細には、ヘテロジニアス処理ユニット間で不均一メモリアクセスするためのチップセットサポートに関する。
【背景技術】
【０００２】
[0002]周知のように、オペレーティングシステム（ＯＳ）を実行する中央処理装置（ＣＰＵ）は、入出力（Ｉ／Ｏ）動作を実施するとき、ローカルシステムメモリ及び／又は１つ若しくは複数のハードウェアデバイスにアクセスすることができる。Ｉ／Ｏ動作は、メモリブリッジ（たとえば「ノースブリッジ（Ｎｏｒｔｈｂｒｉｄｇｅ）」チップ）及び／又はＩ／Ｏブリッジ（たとえば「サウスブリッジ（Ｓｏｕｔｈｂｒｉｄｇｅ）」チップ）を含めて、１つ又は複数のブリッジを介してＣＰＵに、またＣＰＵからルーティング（ｒｏｕｔｅ）されることが可能である。１つ又は複数のハードウェアデバイスは、とりわけメモリモジュール、コンピュータモニタ、ハードディスクドライブ、ＣＤ−ＲＯＭドライブ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、ＰＣＩエクスプレス（ＰＣＩｅ）コントローラを含むことができる。ハードウェアデバイスは、集積ハードウェアデバイス又は周辺ハードウェアデバイスとすることができる。
【０００３】
[0003]従来のコンピュータアーキテクチャに伴う１つの問題は、コンピュータシステム内に含まれるＣＰＵが１つだけであるという仮定を基礎として設計されていることである。したがって、従来のアーキテクチャ方式を使用してマルチプロセッサシステムを実装すると、各ＣＰＵが、他のＣＰＵに関連付けられた物理メモリにアクセスすることが可能でない。
【０００４】
[0004]従来のアーキテクチャに伴う１つのもう１つの問題は、チップセット及びメモリコントローラが、一般に、各プロセッサが他のプロセッサのローカルメモリにアクセスすることができるマルチプロセッサコンピュータシステム内で使用するように設計されていないことである。
【０００５】
[0005]いくつかの従来技術のコンピュータアーキテクチャは、２つのＣＰＵをコンピュータシステム内で共存させることによって、これらの欠点を克服しようと試みる。しかし、これらの従来技術のコンピュータアーキテクチャでは、各ＣＰＵが、コンピュータシステム内の他のどのＣＰＵにも気づいていなければならず、マルチプロセッサシステム内で動作するように特別に構成されていなければならない。さらに、多数の従来技術のマルチＣＰＵシステムでは、複数のプロセッサがホモジニアスであり、これは、これらのプロセッサが実質的に同じである、及び／又は同じベンダからのものであることを意味する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0006]したがって、当技術分野では、複数のヘテロジニアス処理ユニットが同じシステム内の他の処理ユニットに関連付けられた物理メモリにアクセスすることを可能にするための改善された技法が依然として求められている。
【課題を解決するための手段】
【０００７】
[0007]本発明の実施形態は、コンピュータシステム内に含まれる第２のプロセッサに関連付けられた物理メモリに第１のプロセッサがアクセスすることを可能にする方法を提供する。この方法は、第１のプロセッサから、第１のプロセッサがアクセスするように構成されている、不均一メモリアクセス（ＮＵＭＡ）デバイスのためのメモリマップド入出力（Ｉ／Ｏ）アパーチャを含む第１のアドレスマップを受け取るステップと、第２のプロセッサから、第２のプロセッサがアクセスするように構成されている、ハードウェアデバイスのセットのためのメモリマップドＩ／Ｏアパーチャを含む第２のアドレスマップを受け取るステップと、第１のアドレスマップと第２のアドレスマップを組み合わせることによってグローバルアドレスマップを生成するステップとを含む。この方法は、第１のプロセッサからＮＵＭＡデバイスに送られた、第１のプロセッサが第２のプロセッサに関連付けられた物理メモリに対するアクセスを要求する第１のアクセス要求を受け取るステップと、第１のアクセス要求と、メモリマップドＩ／Ｏアドレスを物理メモリに関連付けられた物理アドレスに変換するための変換テーブルとに基づいて、メモリアクセス要求を生成するステップであり、変換テーブルが、第１のアクセス要求に関連付けられた第１のアドレスを第２のプロセッサに関連付けられた物理メモリに関連付けられた第２のアドレスにマップする、ステップと、グローバルアドレスマップに基づいて、メモリアクセス要求を物理メモリにルーティングするステップとをさらに含む。
【０００８】
[0008]本発明の他の実施形態は、プロセッサによって実行されたとき、上記の方法の１つ又は複数の変形形態を実施するようにコンピュータシステムを構成する命令を記憶するコンピュータ可読媒体、並びに上記の方法の１つ又は複数の変形形態を実施するように構成されたデバイスコントローラを含む。
【０００９】
[0009]開示されている方法の１つの利点は、マルチプロセッサシステム内に含まれるヘテロジニアスプロセッサが、それらのプロセッサ、オペレーティングシステム、又はメモリコントローラを修正することなしに、コンピュータシステム内に含まれる任意の物理メモリにアクセスすることができることである。
【００１０】
[0010]本発明の上述の特徴を詳細に理解することができるように、上記で簡単に述べた本発明について、添付の図面にそれらの一部が示されている実施形態を参照してより具体的に述べることができる。しかし、添付の図面は、本発明の典型的な実施形態を示しているにすぎず、したがって、本発明には他の均等に有効な実施形態の余地があり得るため、その範囲を限定するものとみなすべきでないことに留意されたい。
【図面の簡単な説明】
【００１１】
【図１Ａ】本発明の一実施形態による、ヘテロジニアス処理ユニット間でのキャッシュコヒーレント及び／又はキャッシュ非コヒーレントな不均一メモリアクセス（ＮＵＭＡ）のためのチップセットサポートを提供するように構成されたコンピュータシステムの概念図である。
【図１Ｂ】本発明の一実施形態による、ヘテロジニアス処理ユニット間でのキャッシュコヒーレント及び／又はキャッシュ非コヒーレントな不均一メモリアクセス（ＮＵＭＡ）のためのチップセットサポートを提供するように構成されたコンピュータシステムの概念図である。
【図１Ｃ】本発明の一実施形態による、ヘテロジニアス処理ユニット間でのキャッシュコヒーレント及び／又はキャッシュ非コヒーレントな不均一メモリアクセス（ＮＵＭＡ）のためのチップセットサポートを提供するように構成されたコンピュータシステムの概念図である。
【図１Ｄ】本発明の一実施形態による、ヘテロジニアス処理ユニット間でのキャッシュコヒーレント及び／又はキャッシュ非コヒーレントな不均一メモリアクセス（ＮＵＭＡ）のためのチップセットサポートを提供するように構成されたコンピュータシステムの概念図である。
【図２】本発明の一実施形態による、グローバルアドレスマップを生成するための方法ステップの流れ図である。
【図３】本発明の一実施形態による、グローバルアドレスマップを示す概念図である。
【図４】本発明の一実施形態による、グローバル構成空間マップを示す概念図である。
【図５】本発明の一実施形態による、第２のプロセッサに関連付けられた物理メモリに第１のプロセッサがアクセスすることを可能にするアドレスマッピングを示す概念図である。
【図６】本発明の一実施形態による、第１のＮＵＭＡに関連付けられたベースアドレスレジスタ（ＢＡＲ）を、物理メモリに関連付けられた物理アドレスに変換するための変換テーブルを示す概念図である。
【図７】本発明の一実施形態による、第２のプロセッサに関連付けられたメモリに第１のプロセッサがアクセすることを可能にするための方法ステップの流れ図である。
【図８】本発明の一実施形態による、プロセッサ及び／又はメモリブリッジからのアクセス要求をＮＵＭＡデバイスにルーティングするための方法ステップの流れ図である。
【図９】本発明の一実施形態による、第１のプロセッサから受け取られたアクセス要求を、第２のプロセッサに関連付けられたメモリにアクセスするための上流メモリアクセス要求に変換するための方法ステップの流れ図である。
【図１０】本発明の一実施形態による、ＮＵＭＡデバイスからの上流トランザクションを、プロセッサに、又は物理メモリにルーティングするための方法ステップの流れ図である。
【発明を実施するための形態】
【００１２】
[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]図８は、本発明の一実施形態による、プロセッサ及び／又はメモリブリッジからのアクセス要求をＮＵＭＡデバイスにルーティングするための方法ステップの流れ図である。方法８００について図１Ａ〜７のシステム及び方法と共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の範囲内にあることを、当業者なら理解するであろう。
【００５５】
[0064]図では、方法８００は、Ｉ／Ｏ管理モジュール１０８がプロセッサ又はメモリブリッジからアクセス要求を受け取るステップ８０２で始まる。プロセッサは、たとえば、プロセッサ１０２Ａ、１０２Ｂの一方とすることができる。アクセス要求は、上述のようにＭＭＩＯアドレス又は構成空間アドレスを含むことができる。一実施形態では、アクセス要求は、ＮＵＭＡデバイスのＭＭＩＯアパーチャ内のアドレスを含む。
【００５６】
[0065]ステップ８０４では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレス部分を、アクセス要求内に含まれる下流宛先アドレスに追加し、グローバル宛先アドレスを生成する。一実施形態では、アクセス要求が第１のプロセッサ／メモリブリッジ（たとえば、プロセッサ１０２Ａ／メモリブリッジ１０４Ａ）から受け取られた場合、「０」が下流宛先アドレスの前に付加され、一方、アクセス要求が第２のプロセッサ／メモリブリッジ（たとえば、プロセッサ１０２Ｂ／メモリブリッジ１０４Ｂ）から受け取られた場合、「１」が下流宛先アドレスの前に付加される。
【００５７】
[0066]ステップ８０６では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレスマップに基づいて、グローバル宛先アドレスをデバイスアドレスに変換する。一実施形態では、デバイスアドレスは、コンピュータシステム内のＮＵＭＡデバイスの物理ハードウェアアドレスを含む。ステップ８０８では、Ｉ／Ｏ管理モジュール１０８は、デバイスアドレスに基づいて、アクセス要求をＮＵＭＡデバイスにルーティングする。ステップ８１０では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレス部分を除去し、ステップ８１２で、アクセス要求をＮＵＭＡデバイスに送信する。一実施形態では、プロセッサは、コンピュータシステム内に、ＮＵＭＡデバイス及び／又はメモリ１０６Ａ、１０６Ｂにアクセスすることができる複数のプロセッサがあることに気づいていない。グローバルアドレス部分、たとえば前に付加されたビットが、アクセス要求のアドレス部分から除去される。というのは、ハードウェアデバイス（たとえば、ＮＵＭＡデバイス）は、アクセス要求がＩ／Ｏ管理モジュール１０８によって受け取られたときアクセス要求に含まれる元の下流宛先アドレスと同じ数のビットを有するアドレスを予想しているからである。
【００５８】
[0067]図９は、本発明の一実施形態による、プロセッサ１０２Ａから受け取られたアクセス要求を、第２のプロセッサ１０２Ｂに関連付けられたメモリ１０６Ｂにアクセスするための上流メモリアクセス要求に変換するための方法ステップの流れ図である。方法９００について図１Ａ〜８のシステム及び方法と共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の範囲内にあることを、当業者なら理解するであろう。
【００５９】
[0068]図では、方法９００は、ＮＵＭＡデバイスがプロセッサ１０２Ａからアクセス要求を受け取るステップ９０２で始まる。アクセス要求は、プロセッサ１０２Ｂに関連付けられたメモリ１０６Ｂに対するアクセスを実現するように構成される。図５に記載されているように、アクセス要求は、ＮＵＭＡデバイス、たとえばＮＵＭＡデバイス５０４Ａに関連付けられた宛先アドレスを含むことができる。一実施形態では、アクセス要求は、図８に記載されている方法８００のステップに基づいて、第１のプロセッサからＮＵＭＡデバイスにルーティングされる。
【００６０】
[0069]ステップ９０４では、ＮＵＭＡデバイスは、アクセス要求に関連付けられた宛先アドレスからベースアドレス部分を除去する。一実施形態では、ベースアドレス部分を除去することは、宛先アドレスの第１の部分を「消去する」ことを含む。
【００６１】
[0070]ステップ９０６では、ＮＵＭＡデバイスは、物理メモリベースアドレスを、アクセス要求に関連付けられた宛先アドレスに追加する。図６に記載されているように、ＮＵＭＡデバイスに関連付けられた変換テーブル６０２内に含まれる１つ又は複数のＢＡＲが、物理メモリ１０６Ｂの一部分にマップされる。一実施形態では、ステップ９０４及びステップ９０６は、このマッピングを実施するための技法について述べている。
【００６２】
[0071]ステップ９０８では、ＮＵＭＡデバイスは、上流アクセス要求を生成し、ステップ９１０で、ＮＵＭＡデバイスは、その上流メモリアクセス要求を、第２のプロセッサに関連付けられた物理メモリに送る。上流メモリアクセス要求は、メモリアドレスに関連付けられた変換テーブル内の特定のＢＡＲの構成に応じて、キャッシュコヒーレントなメモリトランザクション、又はキャッシュ非コヒーレントなメモリトランザクションである。第２のプロセッサに関連付けられたメモリブリッジ１０４Ｂが、上流メモリアクセス要求を受け取り、その要求を処理する。その要求がキャッシュ非コヒーレントである場合、メモリブリッジ１０４Ｂは、その要求をメモリコントローラに直接発行する。その要求が読取りトランザクションである場合、メモリブリッジ１０４Ｂはまた、読取り応答データを返す。その要求がキャッシュコヒーレント読取りである場合、メモリブリッジ１０４Ｂは、最初に、第２のプロセッサに関連付けられたキャッシュがメモリ１０６Ｂとコヒーレントであることを保証してから、読取り応答データを読み取り、且つ返す。その要求がキャッシュコヒーレント書込みである場合、メモリブリッジ１０４Ｂは、最初に、第２のプロセッサに関連付けられたキャッシュがメモリ１０６Ｂとコヒーレントであることを保証してから、書込み要求を、第２のプロセッサに関連付けられたキャッシュ内にすでに存在し得るデータと組み合わせ、次いで、結果を物理メモリに書き込む。こうして、第１のプロセッサ１０２Ａは、第２のプロセッサ１０２Ｂに関連付けられた物理メモリ１０６Ｂに対するキャッシュコヒーレント又はキャッシュ非コヒーレントなメモリアクセスを達成する。本発明の実施形態は、どの特定のＣＰＵ又はメモリコントローラ機構にも依拠することなしに、ＮＵＭＡデバイスから始まるアクセス要求とＣＰＵキャッシュ／メモリとの間でコヒーレント性を保証することが重要である。
【００６３】
[0072]図１０は、本発明の一実施形態による、ＮＵＭＡデバイスからの上流トランザクションを、プロセッサに、又は物理メモリにルーティングするための方法ステップの流れ図である。方法１０００について図１Ａ〜９のシステム及び方法と共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の範囲内にあることを、当業者なら理解するであろう。
【００６４】
[0073]図では、方法１０００は、Ｉ／Ｏ管理モジュール１０８がＮＵＭＡデバイスからリターントランザクションを受け取るステップ１００２で始まる。リターントランザクションは、本明細書では「上流トランザクション」とも呼ばれる。様々な実施形態では、リターントランザクションは、（ａ）以前の下流ノンポステッド（ｎｏｎ−ｐｏｓｔｅｄ）要求（たとえば、読取りリターンデータ）に起因する上流デバイス完了（ｃｏｍｐｌｅｔｉｏｎ）、（ｂ）デバイスコントローラのダイレクトメモリアクセス（ＤＭＡ）のための、システムメモリからの読取り及び／又はシステムメモリへの書込みを含むトランザクション、（ｃ）上流メッセージ（たとえば、割込み）、（ｄ）２つのハードウェアデバイス間のピアツーピアトランザクションを含む。ピアツーピアトランザクションは、本発明の実施形態によれば、他の３つのタイプの上流トランザクションに比べて、Ｉ／Ｏ管理モジュール１０８によって違うように処理される。したがって、ピアツーピアトランザクションを処理することは、図１０に記載されている方法１０００の範囲外であり、下記でさらに述べる。
【００６５】
[0074]ステップ１００４では、Ｉ／Ｏ管理モジュール１０８は、リターントランザクションを向けて送るプロセッサを決定する。一実施形態では、リターントランザクションの入手元であるＮＵＭＡデバイスは、各プロセッサに特有のものであり、したがって、Ｉ／Ｏ管理モジュール１０８は、どのＮＵＭＡデバイスがリターントランザクションを発行するかに基づいて、どのプロセッサにリターントランザクションを向けて送るか判定することができる。代替の実施形態では、下流トランザクションがＩ／Ｏ管理モジュール１０８によって処理されるとき（すなわち、図８に記載されているように）、アクセス要求をＮＵＭＡデバイスに発行する最後のプロセッサを、そのＮＵＭＡデバイスの「オーナ」としてマークすることができる。この実施形態では、Ｉ／Ｏ管理モジュール１０８は、所有権情報を検査し、リターントランザクションがハードウェアデバイスのオーナに向けて送られると決定することができる。他の実施形態では、Ｉ／Ｏ管理モジュールは、どのプロセッサに、任意の他の技術的に実行可能な仕方でリターントランザクションを向けて送るか判定することができる。
【００６６】
[0075]ステップ１００６では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレス部分を上流宛先アドレスに追加し、グローバル宛先アドレスを生成する。追加されるグローバルアドレス部分は、どのプロセッサに上流トランザクションが向けて送られるかによって決まる。一実施形態では、グローバルアドレス部分を追加することは、どのプロセッサがそのハードウェアデバイスのオーナであるかに基づいて、ビットを上流宛先アドレスの前に付加することを含む。
【００６７】
[0076]ステップ１００８では、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレスマップに基づいて、グローバル宛先アドレスをデバイスアドレスに変換し、ステップ１０１０で、Ｉ／Ｏ管理モジュール１０８は、グローバルアドレスに基づいて、上流トランザクションを適切なプロセッサ又はメモリブリッジにルーティングする。一実施形態では、ステップ１００８及びステップ１０１０は、本明細書で前述の、それぞれステップ８０６及びステップ８０８と実質的に同様である。
【００６８】
[0077]ステップ１０１２では、Ｉ／Ｏ管理モジュール１０８は、デバイスアドレスからグローバルアドレス部分を除去し、ステップ１０１４で、Ｉ／Ｏ管理モジュール１０８は、上流トランザクションをプロセッサ及び／又はメモリブリッジに送信する。一実施形態では、ステップ１０１２及びステップ１０１４は、本明細書で前述の、それぞれステップ８１０及びステップ８１２と実質的に同様である。
【００６９】
[0078]代替の実施形態では、Ｉ／Ｏ管理モジュール１０８はまた、２つのハードウェアデバイス間でピアツーピアトランザクションをルーティングすることができる。たとえば、プロセッサが、アクセス要求を第１のハードウェアデバイス（たとえば、ハードウェアデバイスＡ）に発行することによってピアツーピアトランザクションを開始し、第１のハードウェアデバイスは、第２のハードウェアデバイス（たとえば、ハードウェアデバイスＢ）に向けて送られる上流トランザクションを発行する。一実施形態では、元のアクセス要求を発行したプロセッサは、両ハードウェアデバイスのオーナとして設定される。したがって、上流トランザクションの宛先アドレス（すなわち、ハードウェアデバイスＢの宛先アドレス）が両ハードウェアデバイスのローカルアドレスマップ内で同じであるため、ピアツーピアトランザクションをサポートするために追加の修正が必要とされない。他の実施形態では、ピアツーピアアパーチャをすべてのプロセッサアドレスマップ内で同じオフセットで割り振り、その結果、デバイス「所有権」が重要なものでなくなるように、コンピュータシステムを、ＢＩＯＳ、又はＩ／Ｏ管理モジュールシステムソフトウェアによって構成することができる。このようにして、どのプロセッサがピアツーピアトランザクションを開始したかにかかわらず、各ハードウェアデバイスについての上流ピアツーピアトランザクションすべての宛先アドレスが同じであるため、ピアツーピアトランザクションルーティングは「まさに機能する（ｊｕｓｔ  ｗｏｒｋ）」。
【００７０】
[0079]有利には、マルチＣＰＵシステム内に含まれるヘテロジニアスＣＰＵが、コンピュータシステム内に含まれる任意のメモリに、ＣＰＵ、オペレーティングシステム、又はメモリコントローラを修正することなしにアクセスすることができる。したがって、本発明の実施形態は、より複雑かつ興味深いコンピューティングシステムを組み上げることを可能にする。さらに、これらの２つのＣＰＵは、ヘテロジニアスとする、及び／又は異なるベンダ製とすることができ、これは、さらに興味深いマルチＣＰＵコンピュータシステムを組み上げることを可能にする。
【００７１】
[0080]本発明の一実施形態は、コンピュータシステムと共に使用するためのプログラム製品として実施することができる。このプログラム製品の（１つ又は複数の）プログラムは、（本明細書で述べられている方法を含めて）諸実施形態の機能を規定し、様々なコンピュータ可読記憶媒体上に含むことができる。例示的なコンピュータ可読記憶媒体は、それだけには限らないが、（ｉ）情報が永続的に記憶される非書込み可能記憶媒体（たとえば、ＣＤ−ＲＯＭドライブによって読取り可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意のタイプのソリッドステート不揮発性半導体メモリ）、及び（ｉｉ）変更可能な情報が記憶される書込み可能記憶媒体（たとえば、ディスケットドライブ内のフロッピディスク、又はハードディスクドライブ、又は任意のタイプのソリッドステートランダムアクセス半導体メモリ）を含む。
【００７２】
[0081]以上、本発明について具体的な実施形態を参照して述べた。しかし、添付の特許請求の範囲に述べられている本発明の、より広い精神及び範囲から逸脱することなしに、様々な修正及び変更を本発明に加えることができることを、当業者なら理解するであろう。したがって、前述の説明及び図面は、限定的な意味ではなく例示的な意味で考えるべきである。
【符号の説明】
【００７３】
１００  コンピュータシステム
１０２Ａ  プロセッサ
１０２Ｂ  プロセッサ
１０４Ａ  メモリブリッジ
１０４Ｂ  メモリブリッジ
１０６Ａ  メモリ
１０６Ｂ  メモリ
１０８  入出力（Ｉ／Ｏ）管理モジュール
１１０Ａ〜１１０Ｎ  集積ハードウェアデバイス
１１２Ａ〜１１２Ｎ  周辺ハードウェアデバイス
１１４  Ｉ／Ｏコントローラ
１１６  第１のチップ
１１８  第２のチップ
１２０  コンピュータシステム
１３０  コンピュータシステム
１３２  第１のチップ
１３４  第２のチップ
１３６  第３のチップ
１４０  コンピュータシステム
１４２  第１のチップ
１４４  第２のチップ
１４６  第３のチップ
３０２  第１のアドレスマップ
３０４  第２のアドレスマップ
３０６  グローバルアドレスマップ
３０８  第１のＭＭＩＯ部分
３１０  物理メモリ部分
４０２  第１の構成空間アドレスマップ
４０４  第２の構成空間アドレスマップ
４０６  グローバル構成空間マップ
５０２−１〜５０２−Ｎ  ハードウェアデバイス
５０４Ａ  ＮＵＭＡデバイス
５０４Ｂ  ＮＵＭＡデバイス
６０２  変換テーブル
【図１Ａ】
2010152891.tif 000003
【図１Ｂ】
2010152891.tif 000004
【図１Ｃ】
2010152891.tif 000005
【図１Ｄ】
2010152891.tif 000006
【図２】
2010152891.tif 000007
【図３】
2010152891.tif 000008
【図４】
2010152891.tif 000009
【図５】
2010152891.tif 000010
【図６】
2010152891.tif 000011
【図７】
2010152891.tif 000012
【図８】
2010152891.tif 000013
【図９】
2010152891.tif 000014
【図１０】
2010152891.tif 000015
【外国語明細書】
2010152891000001.pdf