(57)【要約】【解決手段】  処理システムが提供される。処理システムは、第１のメモリに結合される第１の処理ユニットと、第２のメモリに結合される第２の処理ユニットと、を含む。第２のメモリは、コヒーレントメモリと、第２の処理ユニットにプライベートなプライベートメモリと、を備える。【選択図】図２
2013504822.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリに結合される第１の処理ユニットと、第２のメモリに結合される第２の処理ユニットと、を備える処理システムであって、
前記第２のメモリは、コヒーレントメモリと、前記第２の処理ユニットにプライベートなプライベートメモリと、を備える処理システム。
【請求項２】
前記第１の処理ユニットは中央処理ユニット（ＣＰＵ）であり、前記第２の処理ユニットはグラフィクス処理ユニット（ＧＰＵ）である請求項１の処理システム。
【請求項３】
前記第２の処理ユニットはアドレス処理ユニットを備え、前記第２の処理ユニットの実行エンジンはメモリ要求を作成するように構成され、前記アドレス処理ユニットは経路付けテーブルを用いて前記メモリ要求に関連するメモリワードのロケーションを決定するように構成される請求項１の処理ユニット。
【請求項４】
前記第２の処理ユニットは、前記メモリワードが前記第１のメモリ内にある場合に前記第１のプロセッサに要求を送るように構成される請求項３の処理システム。
【請求項５】
前記第２の処理ユニットはプローブエンジン及びプローブフィルタを備え、前記プローブエンジンは、当該要求されたメモリワードが前記第１の処理デバイスのキャッシュ内にキャッシュされている場合にメモリプローブを送信するように構成される請求項３の処理システム。
【請求項６】
前記第１のメモリ及び前記第２のメモリは同じダイ上にある請求項１の処理システム。
【請求項７】
前記第１の処理ユニットは物理的にタグ付けされているキャッシュを備え、前記第２の処理ユニットは仮想的にタグ付けされているキャッシュを備え、前記第２の処理ユニットは、物理メモリアドレスを仮想メモリアドレスにトランスレートするように構成される逆ルックアップテーブルを更に備える請求項１の処理ユニット。
【請求項８】
前記第２の処理ユニットは第１の部分及び第２の部分を含むキャッシュを備え、前記キャッシュの前記第１の部分は前記コヒーレントメモリ内にあるメモリワードをキャッシュするように構成され、前記第１の部分は物理的にタグ付けされている請求項１の処理システム。
【請求項９】
前記キャッシュの前記第２の部分は仮想的にタグ付けされている請求項８の処理システム。
【請求項１０】
要求されたメモリワードのアドレスを検査して前記要求されたメモリワードに対して前記第１の部分又は前記第２の部分にクエリするかどうかを決定するように構成される範囲チェッカを更に備える請求項８の処理ユニット。
【請求項１１】
メモリ要求を処理する方法であって、
前記メモリ要求に関連するメモリワードがどこにあるのかを決定することと、
メモリ内にある前記メモリワードに応答して、前記メモリにアクセスして前記要求を処理することと、を備え、
前記メモリは、コヒーレントメモリと、第１の処理ユニットにプライベートなプライベートメモリと、を含む方法。
【請求項１２】
プローブが作成されるべきかを決定することを更に備える請求項１１の方法。
【請求項１３】
プローブが作成されるべきかを決定することは、第２の処理ユニットのキャッシュ内に前記メモリワードがキャッシュされているのを決定することを備える請求項１２の方法。
【請求項１４】
前記メモリは第１のメモリであって、第２の処理ユニットは第２のメモリに結合され、
メモリアドレスが前記第２のメモリ内にある場合に前記メモリワードに対する要求を前記第２の処理ユニットへ送ることを更に備える請求項１１の方法。
【請求項１５】
アクセスすることは前記コヒーレントメモリにアクセスすることを備える請求項１１の方法。
【請求項１６】
前記第１の処理ユニットのキャッシュが前記メモリ要求をサービスすることができないことを決定することを更に備える請求項１１の方法。
【請求項１７】
プローブを受信することと、
前記プローブに含まれているメモリアドレスを物理アドレスから仮想アドレスにトランスレートすることと、を更に備える請求項１１の方法。
【請求項１８】
前記メモリワードに関連するメモリアドレスに基づいて、前記メモリワードに対してキャッシュの第１の部分又はキャッシュの第２の部分にクエリするかどうかを決定することを更に備える請求項１１の方法。
【請求項１９】
前記メモリワードが前記コヒーレントメモリ内又は前記プライベートメモリ内にあるかどうか基づいて、前記メモリワードに対してキャッシュの第１の部分又はキャッシュの第２の部分にクエリするかどうかを決定することを更に備える請求項１１の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は処理環境に関し、より特定的には多重プロセッサシステムにおいてメモリ要求を処理することに関する。
【背景技術】
【０００２】
幾つかのグラフィクス処理システムは、多重処理ユニット、例えば幾つかのグラフィクス処理タスクを１つ以上のグラフィクス処理ユニット（ＧＰＵ）に割り当てる中央処理ユニット（ＣＰＵ）を含む。例えばＣＰＵは、レンダリングタスク(rendering tasks)を１つ以上のＧＰＵに割り当てることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
幾つかのシステムにおいては、ＣＰＵ及び各ＧＰＵは、各々それら自身に関連するメモリを有している。例えばＣＰＵ及びＧＰＵを有するシステムにおいては、ＣＰＵはシステムメモリに結合され得るし、またＧＰＵはローカルメモリに結合され得る。システムメモリはコヒーレントメモリを含むことができる。しかし、多くのシステムにおいて、ＧＰＵローカルメモリへのアクセスはコヒーレントではない。コヒーレンシが必要とされる場合には、コヒーレンシを確実にして性能オーバヘッドを生じさせるために、ソフトウエアが用いられる必要があるかもしれない。
【０００４】
従って、コヒーレンシを確実にするためにソフトウエアを用いることなしにＧＰＵのローカルメモリのコヒーレントアクセスを可能にする方法及びシステムが必要とされている。
【課題を解決するための手段】
【０００５】
ここに説明される実施形態は、概して、多重プロセッサシステムにおいてコヒーレントメモリを含むメモリを提供することに関連している。例えば、本発明の実施形態は、グラフィクス処理ユニット（ＧＰＵ）に結合されるメモリ内にコヒーレントメモリを設けることに関連し得る。
【０００６】
１つの実施形態においては、処理システムが提供される。処理システムは、第１のメモリに結合される第１の処理ユニットと、第２のメモリに結合される第２の処理ユニットと、を含む。第２のメモリは、コヒーレントメモリと、第２の処理ユニットにプライベートなプライベートメモリと、を備える。
【０００７】
別の実施形態においては、メモリ要求を処理する方法は、メモリ要求に関連するメモリワードがどこにあるのかを決定することと、メモリ内にあるメモリワードに応答して、メモリにアクセスして要求を処理することと、を含む。メモリは、コヒーレントメモリと、第１の処理ユニットにプライベートなプライベートメモリと、を含む。
【０００８】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。
【図面の簡単な説明】
【０００９】
ここに組み込まれ且つ出願書類の一部をなす添付の図面は、本発明を示し、そして明細書と共に、本発明の原理を説明すること及び関連分野を含めた当業者が本発明を作りそして使用するのを可能にすることに更に役立つ。
【００１０】
【図１】図１は本発明の実施形態に従う処理システムを示す図（その１）である。
【図２】図２は本発明の実施形態に従う処理システムを示す図（その２）である。
【図３】図３は本発明の実施形態に従う処理システムを示す図（その３）である。
【００１１】
【図４】図４は本発明の実施形態に従うグラフィクス処理ユニットを示す図である。
【００１２】
【図５】図５は本発明の実施形態に従いメモリ要求を処理する例示的な方法のフローチャート（その１）である。
【図６】図６は本発明の実施形態に従いメモリ要求を処理する例示的な方法のフローチャート（その２）である。
【００１３】
【図７】図７は本発明の実施形態に従う処理システムを示す図（その４）である。
【図８】図８は本発明の実施形態に従う処理システムを示す図（その５）である。
【００１４】
添付の図面を参照して本発明が説明されることになる。概して、ある要素が最初に現れる図面は、典型的には対応する参照番号の一番左の単一又は複数の桁によって示される。
【発明を実施するための形態】
【００１５】
概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の１つ以上であるが全てではない例示的な実施形態を記述している場合があり、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。
【００１６】
特定の実施形態の上述した説明は、本発明の一般的性質を十分に明らかにするであろうから、他者は、当業者の知識を適用することによって、過度の実験を必要とせず、本発明の一般的概念から逸脱することなく、そのような特定の実施形態を容易に修正し且つ／又は種々の応用に適用することができる。従って、そのような適用及び修正は、ここに提示されている教示及び指針に基いて、開示されている実施形態と均等なものの意味及び範囲の範疇にあることが意図されている。ここでの用語等は、本出願書類の用語等が教示及び指針の下で当業者によって解釈されるべきであるという点において、説明を目的としたものであって限定を目的としていないことが理解されるべきである。
【００１７】
図１は標準的な処理システム１００を示している。処理システム１００は、中央処理ユニット（ＣＰＵ）１０２、グラフィクス処理ユニット（ＧＰＵ）１０４、システムメモリ１１８、及びＧＰＵローカルメモリ１３０を含む。ＣＰＵ１０２は、実行エンジン１０６、アドレス処理ユニット１０８、キャッシュ１１０、及びノースブリッジ（ＮＢ）１１１を含む。ＧＰＵ１０４は、実行エンジン１２０、キャッシュ１２２、アドレス処理ユニット１２４、及びノースブリッジ１２５を含む。システムメモリ１１８は、コヒーレントメモリ１３２及び非コヒーレントメモリ１３４を含む。ＧＰＵローカルメモリ１３０は、可視メモリ１３６及びプライベートメモリ１３８を含む。関連分野を含めた当業者によって理解されるであろうように、処理システム１００は図１に示される要素に限定されず、図１に示されるよりも多くの要素を含み得る。
【００１８】
実行エンジン１０６は、ＣＰＵ１０２の動作の間、種々のコマンドを実行する。これらのコマンドの幾つかは、記憶されている情報にアクセスするためのメモリ要求を発行するように実行エンジン１０６に要求する。実行エンジン１０６がメモリワードに対するメモリ要求を発行すると、アドレス処理ユニット１０８は、最初に、メモリ要求に対応する仮想アドレスを物理アドレスにトランスレートする。アドレス処理ユニット１０８はまた、仮想アドレス及び／又は物理アドレスを検査して、要求されたメモリワードがどこにあるかを決定する。要求されたメモリワードがコヒーレントメモリ１３２内にある場合には、キャッシュ１１０は、メモリ要求をサービスすることができるかどうかを決定するためにクエリされる(queried)。例えば、キャッシュ１１０は、要求されたメモリワードを保持しているかどうか、そして保持している場合に、要求されたメモリワードを保持しているキャッシュラインが有効であるかを決定するために、クエリされ得る。キャッシュ１１０がメモリ要求をサービスすることができない場合、即ちキャッシュミスの場合には、メモリ要求はコヒーレントメモリ１３２によってサービスされる必要がある。具体的には、ＮＢ１１１がコヒーレントメモリ１３２にアクセスして要求をサービスする。ある実施形態においては、ＮＢ１１１は、ＣＰＵ１０２とシステム１００の他の要素との間でのマルチプレクサとして作用し得る。幾つかの実施形態においては、ＮＢ１１１は「メモリ制御器」と称されることがある。要求されたメモリワードが非コヒーレントメモリ１３４内にあるとアドレス処理ユニット１０８が決定した場合、ＮＢ１１１は非コヒーレントメモリ１３４にアクセスして要求をサービスする（先ずキャッシュ１１０にアクセスすることなしに）。
【００１９】
要求されたメモリワードは、ＧＰＵローカルメモリ１３０内にある場合もある。例えば、要求されたメモリワードは可視メモリ１３６内にあることがある。ある実施形態においては、可視メモリ１３６へのＣＰＵ１０２からの要求は、メモリマッピングされた(memory mapped)Ｉ／Ｏ（ＭＭＩＯ）要求であり得る。その場合、ＮＢ１１１は要求をＮＢ１２５に伝える（例えば周辺要素相互接続エクスプレス(peripheral component interconnect express)（ＰＣＩＥ）パスを介して）。ある実施形態においては、ＮＢ１２５はＮＢ１１１と実質的に同様である。ＮＢ１２５は可視メモリ１３６にアクセスして要求されたメモリワードを取得し、そしてメモリワードをＮＢ１１１へ戻す。
【００２０】
ＧＰＵプライベートメモリ１３８はＧＰＵ１０４にプライベートである（即ちＣＰＵ１０２はアクセスできない）。従って、要求されたメモリワードがメモリ１３８内にある場合には、アドレス処理ユニット１０８は、ＣＰＵ１０２がプライベートメモリ１３８にアクセスすることを阻むためにフォールト(fault)を生じさせることになる。
【００２１】
ＣＰＵ１０２と同様に、ＧＰＵ１０４の実行エンジン１２０は、ＧＰＵ１０４の動作の間、種々のコマンドを実行する。これらのコマンドの１つ以上に応答して、実行エンジン１２０は、メモリ要求を作成することができる。発行されるメモリ要求は、仮想要求メモリアドレスを含む。図１に示されるように、ＧＰＵ１０４は先ず、要求されたメモリワードを保持しているかどうかをキャッシュ１２２にクエリする（仮想メモリアドレスを用いて）。キャッシュ１２２がメモリ要求を保持していない、あるいは他の理由でメモリ要求をサービスすることができない場合には、メモリワードはメモリからリトリーブされる(retrieved)必要がある。
【００２２】
アドレス処理ユニット１２４は、仮想アドレスを物理アドレスにトランスレートし、そして要求されたメモリワードがどこにあるのかを決定する。例えば、要求されたメモリワードがＧＰＵローカルメモリ１３０の可視メモリ１３６内又はプライベートメモリ１３８内にあるとアドレス処理ユニット１２４が決定すると、ＮＢ１２５はＧＰＵローカルメモリ１３０と協働して要求をサービスする。
【００２３】
要求されたメモリワードがシステムメモリ１１８内にある場合には、ＮＢ１２５は、要求されたメモリワードを取得するための要求をＣＰＵ１０２に送る。例えば、要求されたメモリワードがコヒーレントメモリ１３２内にある場合には、ＮＢ１１１はコヒーレントメモリ１３２にアクセスして要求をサービスすることができる。別の実施形態においては、ＮＢ１１１はキャッシュ１１０にアクセスしてそのような要求をサービスすることができる。要求されたメモリワードが非コヒーレントメモリ１３４内にある場合には、ＮＢ１１１は非コヒーレントメモリ１３４にアクセスして要求をサービスすることができる。
【００２４】
ＧＰＵローカルメモリ１３０への全てのアクセスは非コヒーレントである。コヒーレンシが要求される場合には、それはソフトウエアによって提供される必要があり、結果として相当のオーバへットをもたらす。また、ＧＰＵローカルメモリ１３０内に記憶される情報をキャッシュするキャッシュ１２２は、非コヒーレントキャッシュである。他のデバイスとのコヒーレントな共有を可能にするためにＭＥＳＩプロトコル等のプロトコルを組み込んでいるＣＰＵ１０２のキャッシュ１１０とは対照的に、ＧＰＵ１０４のキャッシュ１２２は、異なるデバイスの間での共有を可能にするプロトコルを実装している。
【００２５】
ある実施形態においては、ＣＰＵ１０２及びＧＰＵ１０４の各々内には、書き込み結合(write combining)モジュールが設けられ得る。そうすることで、非コヒーレントメモリへの書き込み要求のための帯域幅がコヒーレントメモリへの書き込み要求のための帯域幅と同様になり得るように、多重書き込み要求を結合することができる。しかし、読み出し要求に対しては、同様のキャッシング最適化は多くの場合に利用可能ではない。従って、非コヒーレントメモリへの読み出し要求（例えばＣＰＵ１０２から可視メモリ１３６への）は、コヒーレントメモリへの読み出し要求よりも相当小さな帯域幅である可能性がある。幾つかの実施形態においては、非コヒーレントメモリへの読み出し要求は、「非パフォーマント(non-performant)」として指定されることがあり、また、もしあったとしても用いられるのは稀である。事実、ある実施形態においては、ＣＰＵ１０２から可視メモリ１３６への読み出し要求は、アドレス処理ユニット１０８がフォールトを生じさせ得るほどに小さい帯域であろうから、ＣＰＵ１０２が可視メモリ１３６から読み出すことを阻むかもしれない。
【００２６】
ここに説明される実施形態においては、コヒーレントメモリがＧＰＵローカルメモリ内に設けられる。従って、ＧＰＵローカルメモリへの幾つかの要求はハードウエアコヒーレントであることができ、即ちソフトウエアオーバヘッドを必要とせずにハードウエアによってコヒーレンシが確保される。更なる実施形態においては、ＣＰＵのコヒーレントメモリ（例えばシステムメモリ内に含まれる）及びＧＰＵローカルメモリ内に含まれるコヒーレントメモリは、システムに対してコードを書いているプログラマにとって本質的に区別がつかないであろう。この単純化されたメモリモデルは、コヒーレントメモリにアクセスするプログラムはもはやどのコヒーレントメモリがアクセスされるべきであるのかを指定していないことを理由として、プログラミングをより簡単にすることができる。更に、コヒーレンスを確保するのにソフトウエアオーバヘッドにはもはや依存していないし、しかも読み出し要求は、それらがコヒーレントメモリにアクセスする場合に、それらが非コヒーレントメモリにアクセスする場合よりも相当に大きな帯域幅で行われ得るので、ここに説明されるシステムはまた、性能優位性を有し得る。
【００２７】
図２は本発明の実施形態に従う処理システム２００を示している。図２に示されるように、処理システム２００は、第１のプロセッサ２０２、第２のプロセッサ２０４、システムメモリ２１８、及びメモリ２３４を含む。図２に示される実施形態においては、第１及び第２のプロセッサ２０２及び２０４は、それぞれＣＰＵ及びＧＰＵである。
【００２８】
ＣＰＵ２０２は、実行エンジン２０６、アドレス処理ユニット２０８、キャッシュ２１０、ＮＢ２１１、プローブエンジン２１４、及びプローブフィルタ２１６を含む。ある実施形態においては、実行エンジン２０６、アドレス処理ユニット２０８、キャッシュ２１０、及びＮＢ２１１は、図１に示されるＣＰＵ１０２の実行エンジン１０６、アドレス処理ユニット１０８、キャッシュ１１０、及びＮＢ１１１とそれぞれ実質的に同様である。
【００２９】
図２に示されるように、ＧＰＵ２０４は、実行エンジン２２０、キャッシュ２２２、アドレス処理ユニット２２４、プローブエンジン２２８、逆ルックアップテーブル２３０、及びプローブフィルタ２３２を含む。ある実施形態においては、実行エンジン２２０、キャッシュ２２２、アドレス処理ユニット２２４、及びＮＢ２２５は、図１に示されるＧＰＵ１０４の実行エンジン１２０、キャッシュ１２２、アドレス処理ユニット１２４、及びＮＢ１２５とそれぞれ実質的に同様である。
【００３０】
システムメモリ２１８は、非コヒーレントメモリ２４０及びコヒーレントメモリ２４２を含む。ＧＰＵローカルメモリは、可視コヒーレントメモリ２３８、可視非コヒーレントメモリ２３９、及びプライベートメモリ２３６を含む。上述したように、非コヒーレントメモリへの書き込み要求に対する性能は、書き込み結合の使用を通して改善され得る。従って、実施形態においては、非コヒーレントメモリ２４０及び可視非コヒーレントメモリ２３９の各々は、「書き込み結合メモリ」又は「書き込み結合ヒープ(write-combining heap)」と称されることがある。システムメモリ２１８及びメモリ２３４は、従来のランダムアクセスメモリ（ＲＡＭ）から形成され得る。例えば、システムメモリ２１８はＤＤＲ２又はＤＤＲ３のＲＡＭメモリから形成され得るし、またメモリ２３４はＤＤＲ５のＲＡＭメモリから形成され得る。
【００３１】
アドレス処理ユニット２０８及び２２４は、仮想アドレスを物理アドレスにトランスレートするように構成される処理ユニットである。更に、アドレス処理ユニットはまた、物理アドレスがどこにあるか（例えばシステムメモリ２１８及びＧＰＵローカルメモリ２３４のうちで）を決定するようにも構成され得る。ある実施形態においては、アドレス処理ユニット２０８及び／又はアドレス処理ユニット２２４は、仮想アドレスを物理アドレスにトランスレートするために用いられるトランスレーションルックアサイドバッファ(translation lookaside buffer)（ＴＬＢ）を含み得る。
【００３２】
ある実施形態においては、非コヒーレントメモリ２４０、可視非コヒーレントメモリ２３９及びプライベートメモリ２３６内にあるメモリワードを要求しているメモリ要求に関するＣＰＵ２０２の動作は、それぞれ非コヒーレントメモリ１３４、可視メモリ１３６及びプライベートメモリ１３８内にあるメモリワードを要求しているメモリ要求に関するＣＰＵ１０２の動作と実質的に同様である。また、プライベートメモリ２３６、可視非コヒーレントメモリ２３９及び非コヒーレントメモリ２４０内にあるメモリワードを要求しているメモリ要求に関するＧＰＵ２０４の動作は、それぞれプライベートメモリ１３８、可視メモリ１３６及び非コヒーレントメモリ１３４内にあるメモリワードを要求しているメモリ要求に関するＧＰＵ１０４の動作と実質的に同様である。
【００３３】
ＣＰＵ２０２はプローブエンジン２１４及びプローブフィルタ２１６を含む。プローブエンジン２１４は、キャッシュ２１０及びコヒーレントメモリ２４２とキャッシュ２２２及び可視コヒーレントメモリ２３８との間でのコヒーレンスを確保するために用いられる。例えば、要求されたメモリワードがシステムメモリ２１８のコヒーレントメモリ２４２内にある場合、プローブエンジン２１４は、ＧＰＵ２０４へ送られるプローブ(probes)を作成する。プローブは、ＧＰＵ２０４のキャッシュ２２２が、要求されたメモリワードをダーティキャッシュライン(dirty cache line)内に保持しているかどうか、即ちコヒーレントメモリ２４２内の値に対して修正された値を保持しているキャッシュライン内に保持しているかどうかを決定するために用いられる。キャッシュ２２２がそのようなダーティキャッシュラインを含む場合には、ＧＰＵ２０４は、プローブに応答して、キャッシュされている値をシステムメモリ２１８へ返送することになる。また、要求が書き込み要求である場合には、プローブは、要求されたメモリワードを保持しているキャッシュラインを無効にするように全てのキャッシュに要求することができる。
【００３４】
プローブフィルタ２１６は、要求されたメモリワードを他の要素がキャッシュしていなかった場合に何らかのプローブが作成されそして送信されることを防止することができる随意的な最適化である。多くの処理システムにおいて、システム内の異なる要素へプローブを送信することは、価値ある帯域幅を占有し得る。また多くの場合に、要求されたアドレスは、システム内の別の要素のキャッシュ内にはキャッシュされていないであろう。要求されたメモリワードをシステム２００内の他の要素がキャッシュしていなかった場合にプローブが作成されそして送信されることを防止するために、プローブフィルタ２１６は、システム２００の他の要素にキャッシュされているシステムメモリ２１８の全てのアドレスのリストを維持する。要求されたメモリワードをこのリストと比較することによって、プローブフィルタ２１６は、システム内の他の要素がそのメモリワードをキャッシュしていない場合にプローブが作成されそして送信されることを防止することができる。
【００３５】
ＣＰＵ２０２によって要求されたメモリワードがＧＰＵローカルメモリ２３４の可視コヒーレントメモリ２３８内にある場合、要求がキャッシュ２１０でミスした後に、ＮＢ２１１は要求をＧＰＵ２０４のＮＢ２２５へ送る。ＮＢ２２５は次いで要求をプローブエンジン２２８へ転送し、プローブエンジン２２８はプローブを送り出す（プローブフィルタ２３２に従って）。同様に、ＧＰＵ２０４がコヒーレントメモリ２４２のいずれかにアクセスする場合には、ＮＢ２２５は要求をＣＰＵ２０２のＮＢ２１１へ送る。ＮＢ２１１は次いで要求をプローブエンジン２１４へ送り、プローブエンジン２１４はプローブを送り出す（プローブフィルタ２１６に従って）。ＧＰＵ２０４によって要求されたメモリワードが可視コヒーレントメモリ２３８内にある場合には、ＧＰＵ２０４のプローブエンジン２２８がプローブを送る（プローブフィルタ２３２に従って）。
【００３６】
ＧＰＵ２０４がＣＰＵ２０２からプローブを受信すると、プローブはプローブエンジン２２８によって処理される。プローブに応答して、ＧＰＵ２０４はダーティキャッシュラインをシステムメモリ２１８に書き戻し、そして必要であれば、要求されたメモリワードを保持しているキャッシュラインを無効にする。このように、図２の実施形態においては、ＧＰＵ２０４のキャッシュ２２２は、他のデバイスとコヒーレント共有するためのプロトコル、例えばＭＥＳＩプロトコルを実装しているコヒーレントキャッシュである。更なる実施形態においては、プローブエンジン２１４は、ＧＰＵ２０４から受信したプローブを同様に処理する。
【００３７】
ＣＰＵ２０２のキャッシュ２１０は物理的にタグ付けされたキャッシュ(physically tagged cache)であり、そのキャッシュ内ではキャッシュラインは物理アドレスでタグ付けされている。対照的にＧＰＵ２０４のキャッシュ２２２は、仮想アドレスでタグ付けされたキャッシュラインを伴う仮想的にタグ付けされたキャッシュ(virtually tagged cache)である。プローブが作成されてＧＰＵ２０４から送信される前であれば、ＣＰＵ２０２のプローブエンジン２１４が、受信されたプローブを処理するために、要求されたアドレスをキャッシュ２１０内に保持されているアドレスと比較することができるように、要求されたアドレスは、アドレス処理ユニット２２４を用いて物理アドレスへとトランスレートされる。一方、ＣＰＵ２０２のプローブエンジン２１４がプローブを作成する場合には、要求されたアドレスは物理アドレスである。プローブを受信する際、ＧＰＵ２０４のプローブエンジン２２８は、要求されたメモリワードに対するキャッシュ２２２が仮想的にタグ付けされていることを理由として、即座にキャッシュ２２２にクエリすることはできない。そこで、ＧＰＵ２０４は逆ルックアップテーブル２３０を更に含む。逆ルックアップテーブル２３０は、受信した物理アドレスを仮想アドレスへマッピングするために用いられる。受信した物理アドレスを仮想アドレスへマッピングした後、ＧＰＵ２０４のプローブエンジン２２８は、上述したようにプローブを処理することができる。
【００３８】
図２に示されるように、ＣＰＵ２０２及びＧＰＵ２０４は、各々、キャッシュ及びアドレス処理ユニットに結合される単一の実行エンジンを含む。代替的な実施形態においては、ＣＰＵ２０２及び／又はＧＰＵ２０４は、２つ以上の実行エンジンを含む多重プロセッサシステムであってよい。そのような実施形態においては、キャッシュ及びアドレス処理ユニットは、各追加的実行エンジンのために複製され得る。更なる実施形態においては、それぞれのプローブエンジン及びプローブフィルタが各追加的実行エンジンのために複製されてもよい。例えばＧＰＵ２０４においては、各追加的実行エンジン２２０のために、追加的なキャッシュ２２２、アドレス処理ユニット２２４、プローブエンジン２２８及びプローブフィルタ２３２が設けられ得る。
【００３９】
システムメモリ２１８のコヒーレントメモリ２４２及びＧＰＵローカルメモリ２３４の可視コヒーレントメモリ２３８は両方ともコヒーレントであるから、これら２つのメモリは、プログラマの視点からは区別が付かないであろう。つまり、プログラマの視点からは、システムメモリ２１８のコヒーレントメモリ２４２及びＧＰＵローカルメモリ２３４の可視コヒーレントメモリ２３８は本質的に同じメモリの異なる部分であり、それによりプロブラミングモデルを極めて簡単にする。
【００４０】
図３は本発明の実施形態に従う処理システム３００を示している。システム３００は、システムメモリ２１８及びＧＰＵローカルメモリ２３４がメモリ３０２に置き換わっている点を除き、図２に示されるシステム２００と実質的に同様である。例えば、別個のダイ上に実装されていたであろうシステムメモリ２１８及びＧＰＵローカルメモリ２３４は、メモリ３０２内の同じダイ上に実装され得る。別の実施形態においては、システム３００の全てが単一のダイに含まれ得る。
【００４１】
メモリ３０２は、非コヒーレントメモリ３０１、コヒーレントメモリ３０４、及びプライベートメモリ３０６を含む。図３に示されるように、ＧＰＵ２０４は、メモリ３０２にアクセスするためにＣＰＵ２０２のＮＢ２１１にアクセスする必要がある。代替的な実施形態においては、ＧＰＵ２０４のＮＢ２２５は、メモリ３０２に直接アクセスすることが可能であってよい。
【００４２】
ある実施形態においては、プライベートメモリ３０６へのアクセスは、図２を参照して説明したプライベートメモリ２３６へのアクセスと実質的に同様である。システム３００の実施形態においては、システム２００のコヒーレントメモリ２４２及び可視コヒーレントメモリ２３８は、コヒーレントメモリ３０４としてメモリ３０２内に実装される。上述したように、コヒーレントメモリ２４２及び可視コヒーレントメモリ２３８は、プログラマの視点から区別が付かなくてよい。このように、システムメモリ２１８及びＧＰＵローカルメモリ２３４がメモリ３０２内で効率的に結合されている実施形態においては、コヒーレントメモリ２４２及び可視コヒーレントメモリ２３８は、コヒーレントメモリ３０４内で結合され得る。ＣＰＵ２０２及びＧＰＵ２０４からコヒーレントメモリ３０４へのアクセスは、ＣＰＵ２０２及びＧＰＵ２０４からコヒーレントメモリ２４２及び可視コヒーレントメモリ２３８へのアクセスと実質的に同様である。同様に、別の実施形態においては、非コヒーレントメモリ２４０及び可視非コヒーレントメモリ２３９は、非コヒーレントメモリ３０１を形成するように結合され得る。ＣＰＵ２０２及びＧＰＵ２０４と種々のコヒーレントメモリ及び非コヒーレントメモリとの間でのアクセスは、システム２００とシステム３００の間で同じままであるから、処理システム２００のために書かれたプログラムは、処理システム３００にも用いることができ、それにより、プログラムを更新する必要性なしに、同じダイ上に形成される多重要素を有するのことの利益を得ることができる。
【００４３】
図４は本発明の実施形態に従うＧＰＵ４００を示している。ＧＰＵ４００は、プローブフィルタ４０２、プローブエンジン４０６、実行エンジン４１０、範囲チェッカ４１２、第１のアドレス処理ユニット４１４、キャッシュ４１６、及び第２のアドレス処理ユニット４２２を含む。ある実施形態においては、プローブフィルタ４０２、プローブエンジン４０６及び実行エンジン４１０は、図２及び３を参照して説明したそれぞれプローブフィルタ２３２、プローブエンジン２２８及び実行エンジン２２０と実質的に同様である。ＧＰＵ４００は、それがシステム２００及び３００におけるＧＰＵ２０４の代わりに用いられる実施形態を参照して説明される。しかし、関連分野を含めた当業者に理解されるであろうように、ＧＰＵ４００はその実施形態に限定されない。
【００４４】
図４に示されるように、キャッシュ４１６は、仮想的にタグ付けされている部分４１８及び物理的にタグ付けされている部分４２０を含むハイブリッドキャッシュである。ある実施形態においては、部分４２０は、ＣＰＵ又はシステムの他の要素によってアクセスされるであろうメモリアドレスをキャッシュする。ＮＢ２２５等のＮＢを介して（ＮＢ２２５は簡素化を目的として図４では省略されている）、部分４２０は可視コヒーレントメモリ２３８内にあるメモリアドレスをキャッシュすることができ、また部分４１８はプライベートメモリ２３６内にあるメモリアドレスをキャッシュすることができる。そしてこの実施形態においては、ＣＰＵ２０２（又はシステム内の任意の他の要素）がアクセスすることができるメモリアドレスのみ、従ってＧＰＵ４００がプローブを受信することになるメモリアドレスのみが物理的にタグ付けされているので、逆ルックアップテーブルは必要とされない。
【００４５】
実行エンジン４１０がメモリ要求を作成すると、範囲チェッカ４１２は、要求されたアドレスを検査して、それがＧＰＵコヒーレントメモリ２３８内又はＧＰＵプライベートメモリ２３６内のどちらにあるのかを決定する。要求されたアドレスがＧＰＵコヒーレントメモリ２３８内にあるものと知られている範囲内にある場合には、要求されたアドレスは第１のアドレス処理ユニット４１４を用いて即座に物理アドレスへトランスレートされ、次いで部分４２０がクエリされてそれが要求をサービスすることができるかどうかを決定する。一方、要求されたアドレスがＧＰＵプライベートメモリ２３６内にあるものと知られている範囲内にあると範囲チェッカ４１２が決定すると、部分４１８がクエリされてそれがメモリ要求をサービスすることができるかどうか（要求されたアドレスを先ずトランスレートすることなしに）を決定する。キャッシュ４１６のクエリされた部分が要求をサービスすることができない場合、即ちキャッシュミスの場合には、メモリ要求をサービスすることにおけるＧＰＵ４００の動作は、キャッシュミスに際してメモリ要求をサービスすることにおけるＧＰＵ２０４の動作と実質的に同様である。
【００４６】
第２のアドレス処理ユニット４２２は、ＧＰＵプライベートメモリ２３６が物理的にタグ付けされていることを理由として、部分４１８内の仮想アドレスをトランスレートするために用いられる。ある実施形態においては、アドレス処理ユニット４１４及びアドレス処理ユニット４２２は、ＧＰＵ４００内の別個の要素である。代替的な実施形態においては、アドレス処理ユニット４１４及びアドレス処理ユニット４２２は、ＧＰＵ４００の動作の間に異なる点でアクセスされる同じアドレス処理ユニットである。
【００４７】
図７及び８はそれぞれ本発明の実施形態に従う処理ユニット７００及び８００を示している。処理ユニット７００及び８００は、処理ユニット７００及び８００がＧＰＵ２０４の代わりに図４に示されるＧＰＵ４００を含む点を除いて、それぞれ処理システム２００及び３００と実質的に同様である（簡素化のために範囲チェッカ４１２は図７及び８から省略されている）。図７及び８に示されるように、ハイブリッドキャッシュの使用は、ＣＰＵ及びＧＰＵの間での動作を単純化することができる。例えば、図７及び８に示されるように、ＣＰＵ２０２のキャッシュ２１０によってキャッシュされ得る全てのアドレスは、ハイブリッドキャッシュ４１６内で物理的にタグ付けされているので、ＧＰＵ４００は逆ルックアップテーブルを含まない。
【００４８】
図２、３、７及び８の各々は、ＣＰＵ及びＧＰＵの間で通信される各信号のためのこれらの間での接続を概念的に示している。ある実施形態においては、ＣＰＵ及びＧＰＵの間で伝送される異なる複数の信号が、１つ以上のバス（又はトレース(traces)）の同じセットを介して多重化され得る。別の実施形態においては、異なる複数の信号の各々に対して異なるバス又はトレースが用いられ得る。
【００４９】
図５は本発明の実施形態に従いメモリ要求を処理する例示的な方法５００のフローチャートである。以下の議論に基づいて他の構造及び動作の実施形態が関連分野を含めた当業者には明らかなはずである。図５に示されるステップは、図示される順序で必ずしも生じる必要はない。図５のステップが以下に詳細に説明される。
【００５０】
ステップ５０２では、メモリ要求が発行される。例えば図２においては、ＣＰＵ２０２の実行エンジン２０６又はＧＰＵ２０４の実行エンジン２２０が、メモリ要求を発行することができる。
【００５１】
ステップ５０４では、要求されたメモリワードがどこにあるかが決定される。例えば図２においては、要求されたメモリワードがどこにあるかをアドレス処理ユニット２０８又は２２４が決定する。
【００５２】
ステップ５０６では、ローカルキャッシュがメモリ要求をサービスすることができるかどうかが決定される。例えば、ローカルキャッシュが要求アドレスを保持しているかどうかを決定するために、そして要求されたメモリワードを保持しているキャッシュラインの状態に対して、ローカルキャッシュがクエリされ得る。例えば図２においては、要求されたメモリワードがコヒーレントメモリ２４２内又は可視コヒーレントメモリ２３８内にあるとアドレス処理ユニット２０８又は２２４がそれぞれ決定すると、それぞれキャッシュ２１０又は２２２は、それらが実行エンジン２０６又は実行エンジン２２０によってそれぞれ発行されたメモリ要求をサービスすることができるかどうかを決定するためにクエリされ得る。メモリ要求がローカルキャッシュ上でヒットすると、方法５００はステップ５１６へ進む。ステップ５１６では、メモリ要求はローカルキャッシュを用いて処理される。
【００５３】
メモリ要求がローカルキャッシュによってサービスされ得ない場合には、方法５００はステップ５０８へ進む。ステップ５０８では、要求されたアドレスがプライベートメモリ内にあるかどうかが決定される。プライベートメモリ内にある場合には、方法はステップ５１８へ進む。ステップ５１８では、メモリ要求がプライベートメモリを用いて処理される。例えば図２においては、要求されたアドレスがプライベートメモリ２３６内にある場合、ＮＢ２２５がプライベートメモリ２３６にアクセスして要求をサービスすることができる。
【００５４】
要求されたアドレスがプライベートメモリ内にない場合、処理５００はステップ５１０へ進む。ステップ５１０では、要求されたアドレスが遠隔メモリ内にあるかどうかが決定される。遠隔メモリ内にある場合には、方法５００はステップ５２０へ進む。ステップ５２０では、サービスのための要求が遠隔ノードへ送られる。例えば図２においては、ＧＰＵ２０４の実行エンジン２２０によって要求されたメモリワードがシステムメモリ２１８内にある場合、ＮＢ２２５はサービスのための要求をＣＰＵ２０２へ送る。代替的な実施形態においては、ＣＰＵ２０２の実行エンジン２０６によって要求されたメモリワードがＧＰＵコヒーレントメモリ２３８内にある場合、ＮＢ２１１はサービスのための要求をＧＰＵ２０４へ送る。
【００５５】
ステップ５１４では、メモリ要求を処理するためにローカルメモリが用いられる。例えば図２においては、ＣＰＵ２０２の実行エンジン２０６又はＧＰＵ２０４の実行エンジン２２０からの要求を処理するために、それぞれシステムメモリ２１８又はＧＰＵローカルメモリ２３４が用いられ得る。
【００５６】
図６は本発明の実施形態に従いメモリ要求を処理する例示的な方法６００のフローチャートである。以下の議論に基づいて他の構造及び動作の実施形態が関連分野を含めた当業者には明らかなはずである。図６に示されるステップは、図示される順序で必ずしも生じる必要はない。図６のステップが以下に詳細に説明される。
【００５７】
ステップ６０２では、サービスのための遠隔要求が受信される。例えば図２及び３においては、ＮＢ２１１及び２２５がサービスのための要求を受信することができる。
【００５８】
ステップ６０４では、ローカルメモリを用いてメモリ要求が処理される。例えば図２及び３においては、ＮＢ２１１及び２２５がシステムメモリ２１８又はＧＰＵローカルメモリ２３４にアクセスして要求メモリワードにアクセスすることができる。
【００５９】
ここでの説明に基づき当業者であれば理解するであろうように、方法５００及び６００で説明されるメモリアクセスの幾つかは、プローブが作成されることを必要としてよい。例えばコヒーレントメモリがアクセスされる場合、プローブが作成されることを必要であろう。別の実施形態においては、システム内の他のデバイスにプローブを送信するかどうかを決定するためにプローブフィルタが用いられ得る。更に別の実施形態においては、コヒーレントメモリアクセスについてもプローブが作成される必要がなくてもよいように、プローブが作成されるのに先立ちプローブフィルタが参考にされ得る。
【００６０】
本発明の実施形態は、複数の同時に実行中の処理の間でレジスタ資源が管理されるべき任意のコンピューティングデバイスにおいて用いられてよい。限定はされないが、例えば実施形態は、コンピュータ、ゲームプラットフォーム、エンタテーメントプラットフォーム、パーソナルデジタルアシスタント、及びビデオプラットフォームを含んでいてよい。本発明の実施形態は、ハードウエア記述言語（ＨＤＬ）、アセンブリ言語、及びＣ言語を含む多くのプログラミング言語において符号化されてよい。例えば、ベリログ(Verilog)等のＨＤＬが、本発明の１つ以上の実施形態の態様を実装するデバイスを合成し、シミュレートし、そして製造するために用いられ得る。例えば、図２、３、７、８及び４をそれぞれ参照して説明されたシステム２００，３００，７００，８００及び／又はＧＰＵ４００の要素をモデル化し、設計し、検証し且つ／又は実装するために用いられ得る。
【００６１】
結論
特定の機能の実装及びそれらの関係性を示す機能構築ブロックを補助として、本発明が上述のように説明されてきた。これらの機能構築ブロックの境界は、説明の便宜上ここでは適宜画定されてきた。特定の機能及びそれらの関係性が適切に実施される限りにおいて、代替的な境界が画定され得る。
【００６２】
本発明の広さ及び範囲は、上述したいかなる例示的な実施形態によっても限定されるべきではない一方で、以下の請求項及びそれらと均等なものに従ってのみ画定されるべきである。
【００６３】
本出願における請求項は親出願又は関連出願のそれらとは異なる。従って、出願人は、親出願又は本出願に関連する任意の先行する出願における特許請求の範囲のいかなるディスクレーマ(disclaimer)をも撤回する。従って、審査官は、任意のそのような先のディスクレーマ及び回避するためにディスクレーマがなされた引用例が再閲覧される必要があるかもしれないということを助言されている。また、審査官にあっては、本出願においてなされるいかなるディスクレーマも親出願において又は親出願に対して読まれるべきではないことを確認されたい。
【図１】
2013504822.tif 000003
【図２】
2013504822.tif 000004
【図３】
2013504822.tif 000005
【図４】
2013504822.tif 000006
【図５】
2013504822.tif 000007
【図６】
2013504822.tif 000008
【図７】
2013504822.tif 000009
【図８】
2013504822.tif 000010
【国際調査報告】
2013504822.tif 000011
2013504822.tif 000012
2013504822.tif 000013
2013504822.tif 000014