説明

CPU及びGPUの間のリソース共有

【課題】CPUとGPUとの間で処理するワークの種類に応じてコンピューティングリソースを共有する。
【解決手段】プロセッサ100は、複数のプロセッシングコア100−1〜100−Nと、専用スループットアプリケーションハードウェア110(例えば、グラフィックス・テクスチャ・サンプリングハードウェア)と、メモリインターフェースロジック120とを含み、リング相互接続に沿って配置されている。CPUはそれぞれ、GPUハードウェアにスケジュールされたオペレーションのいくつかを、共有メモリ又はダイレクトリンク(又は環状リンク)を通じて転送することにより、これらのオペレーションを実行することができる。反対に、グラフィックスハードウェアにスケジュールされたオペレーションを、同様のメカニズムを用いて利用可能なCPUに転送することもできる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理の分野に関し、特に、中央演算処理装置(CPU)、グラフィックス・プロセッシング・ユニット(GPU)又はこれらの組み合わせといったプロセッサ内の共有コンピューティングリソースの分野に関する。
【背景技術】
【0002】
多くのアプリケーションが、マルチプロセッシングシステム及びマイクロプロセッサの並列処理(parallel processing)能力を利用するようになり、処理するワークの種類に応じてコンピューティングリソースを共有する要求が高まっている。例えば、並列プログラムは、GPUのような特定の処理に特化したハードウェアを利用することができ、一方、順次的に実行されるプログラムは、汎用CPUを利用することができる。現代のプログラムでは、並列及び順次オペレーションが入り交じって実行されることがあり、CPU及びGPUリソースを並行して、又は連続的に使用することにより、オペレーションの種類又は実行されるプログラムに応じて、コンピューティングリソースの最適化を図ることが考えられる。
【0003】
本発明の実施形態は、例示の目的で示されるものであり、本発明を限定することを意図していない。また、添付の図面において、同様な構成要素には、同じ参照番号を付与している。
【図面の簡単な説明】
【0004】
【図1】本発明の少なくとも1つの実施形態を利用することが考えられるマイクロプロセッサシステムのブロック図である。
【図2】一実施形態に係るCPU及びGPUが共有するリソースを示した図である。
【図3】一実施形態に係る3Dグラフィックス・レンダリング・パイプラインを示した図である。
【図4】一実施形態に係る、複数のプロセッサによって共有される浮動小数点ロジックを示した図である。
【図5】一実施形態に従って実行されるオペレーションのフロー図である。
【図6】少なくとも一実施形態を使用可能な共有接続システムを示した図である。
【図7】本発明の少なくとも一実施形態を使用可能なポイント・ツー・ポイント接続コンピュータシステムを示した図である。
【発明を実施するための形態】
【0005】
本発明の実施形態は、並列アプリケーション又は"スループット"アプリケーションを処理する、及び順次的にプログラムを実行するプロセッシングデバイス及びシステムに関する。ある実施形態は、より順次的なコードを実行するCPU及びより並列的なコードを実行するGPUといった少なくとも2つのプロセッシングユニットを含む。並列的なプログラムの例としては、例えば、単一命令複数データ流(SIMD)若しくは"パックされた"命令又は"ベクトル"命令を使用して、並列処理を利用する3Dグラフィックスプログラム、科学的プログラム又は金融プログラムが挙げられる。一実施形態では、基礎となっているプロセッシングリソース(CPU又はGPU)を考慮することなくプログラムが書かれた場合であって、いずれのプロセッシングリソースを使用すればプログラムの命令又はスレッドを最も好適に実行できるかという判断は、ハードウェア自身、ドライバ、ドライバのようなプログラム、仮想マシンマネージャ又は"ハイパーバイザ"のようなミドルウェアソフトウェアが行ってもよい。また、ある実施形態では、CPU又はGPUで実行されるスレッド又は命令グループは、スレッド又は命令によって実行されるオペレーションの複数部分について、CPU又はGPUといった他のプロセッシングリソースの処理能力を利用してもよく、この場合、共有メモリスペース又はダイレクトリンク接続を通じて、情報が共有される。
【0006】
様々な種類のオペレーション及びプログラムが、実施形態を利用可能であり、この実施形態において、タスクはGPU及びCPUの間で共有され、GPUオペレーション"パイプライン"に従ってオペレーションを実行する3Dグラフィックスレンダリングプログラムを含む。例えば、視錐台クリッピングは、多くの3Dグラフィックスアプリケーションで使用され、所与の時間に、どの多角形が視錐台に現れるかを決定する。これは、計算を主としたオペレーションであり、必ずしも、GPUの並列リソースを必要とするようなオペレーションではない。したがって、一実施形態では、視錐台クリッピングにおける一部又は全てのオペレーションを、GPUが他のオペレーションを実行している間に、利用可能な処理能力を有するCPUに対して、"オフロード"することが可能である。CPUが視錐台クリッピングを実行するのに必要なデータは、ダイレクトリンクを使用してGPUからCPUへと直接的に送信してもよいし、PCIメモリ又は共有キャッシュ等の共有メモリスペースを通じて送信してもよい。視錐台クリッピングの結果は、共有記憶装置又はダイレクトリンクを通じて、CPUからGPUへと戻され、GPUは、CPUから送信された視錐台クリッピングの結果を使用してシーン(scene)のレンダリングを続けることができる。一実施形態において、この種のリソース共有は、CPU及び/又はGPU(又は、これらの外側のロジック)内のロジックにより制御され、他の実施形態においては、リソース共有は、ドライバ、ハイパーバイザ等のミドルウェアソフトウェアにより制御されるが、ユーザーソフトウェアは、リソース共有については認識していない。
【0007】
本発明の実施形態は、ソフトウェアアプリケーションが、複数のプロセッサに対応して設けられた複数のストレージ構造にアクセスし、情報を格納するのを可能にする。例えば、単一命令複数データ流(SIMD)オペレーション又は複数命令複数データ流(MIMD)オペレーションを使用する並列命令又は並列アプリケーションを処理する場合に、このような構成が有用である。というのも、各SIMD又はMIMDオペレーションは、それらが位置する特定のメモリ構造を考慮することなく、共有メモリ構造から、オペランドデータ要素にアクセスできるからである。大量の情報の処理を並行して行うことができるため、特に、3Dグラフィックスアプリケーションや、金融アプリケーションに有効である。しかしながら、より順次的(sequential)な典型的なCPUアプリケーションであっても、複数の異なるロケーションに格納された情報を利用できるので、有用である。
【0008】
ある実施形態では、プログラム又はスレッドが、GPUでの処理が適している部分を含むCPUで実行されることが考えられる。この場合、GPUで実行可能な命令及びスレッドは、上述したのと同様な形で、GPUで実行されてもよく、実行結果はCPUに戻されて、さらなる処理を実行してもよい。典型的なGPUは、非常に並列的な浮動小数点リソースを含むので、例えば、CPUにスケジュールされている浮動小数点命令を、共有メモリ又はダイレクトリンクを通じてGPUに転送し、CPUが他の命令を実行している間に、GPUにて実行してもよい。そして、浮動小数点オペレーションは、結果を、共有メモリ又はダイレクトリンクを通じてCPUに戻し、CPUは、これらの結果を、プログラムで実行されるべきオペレーションの残りの部分に取り込んでもよい。一実施形態において、CPUは、浮動小数点リソースを全く含まない又はほんの僅かな浮動小数点リソースを含み、例えば、GPUとCPUとで浮動小数点リソースを共有するといった形で、CPUは、GPUの浮動小数点リソースに実質的に依存している。
【0009】
ある実施形態では、メモリは、例えば、"ページ"のようなセグメントに従って編成及びアクセスされ、ページにアクセスするプロセッサ(又はメモリインターフェースロジック)は、構造(例えば、"ページテーブル")を維持して、特定のメモリ構造のページサイズ又は組織を、プロセッサの又はメモリコントローラのページングサイズ又はスキームへと変換(map)してもよい。一実施形態では、例えば、プロセッサ又はメモリコントローラが、特定のメモリの物理ページを、一連の複数の仮想ページに変換してもよく、プログラムがページにアクセスするのに応答して、プロセッサ又はメモリコントローラはページの開閉をしてもよい。
【0010】
ある実施形態では、プロセッサ又はメモリインターフェースのそれぞれは、他のメモリ構造にアクセスし、そのアクセスは他のプロセッサメモリインターフェースによって制御される又は他のプロセッサメモリインターフェースに対応することから、各プロセッサ又はメモリコントローラのページ状態(オープン/クローズ)間の一貫性を保つために、複数のプロセッサ及び複数のメモリコントローラ間で通信を行うことが望ましい。一実施形態において、n幅の相互接続("n"は、チャネル/ピン/レーン/トレースの数を表す可変数であり、1以上の数)を使用して、様々なプロセッサ又はメモリコンローラ間のページ状態を通信してもよく、ある1つのプロセッサは、別のプロセッサがアクセスを必要とするようなメモリのページを閉じない。様々なプロセッサ(GPU及びCPUのような)又は1つ以上のメモリにアクセスするメモリコントローラ間のページ状態を通信することにより、不必要なページ開閉オペレーションを回避することができ、様々なプロセッサ又はメモリコントローラ間のアクセス性能を改善することができる。また、ある実施形態では、n幅の相互接続は、相対的に低い帯域幅のものであってもよく、過度の数のピン、電力、又はその他のリソースを不要とすることができる。
【0011】
本発明の実施形態によれば、データが格納されている又は格納される予定であるメモリデバイスを考慮することなく、複数のプロセッサでアプリケーションを実行することが可能となる。これは、例えば、一のグラフィックプロセッサが、ピクセルスクリーンの1/2をレンダリングし、別のグラフィックプロセッサが、残りの1/2をレンダリングするといったようなグラフィックスアプリケーションにおいて、特に有用である。このような場合では、一のプロセッサが、一のメモリから、隣接するテクセル情報(対応するプロセッサの1/2スクリーンにおけるに対応する情報)にアクセスする必要があり、別のプロセッサが、別のメモリから、隣接する情報(対応するプロセッサの1/2スクリーンにおけるに対応する情報)にアクセスする必要があることから、境界上のトライアングルは、フィルタされる場合に遅延を生じさせてしまう場合がある。この時、対応していないメモリから情報を必要としているプロセッサは、対応しているプロセッサを通じて情報を要求する必要があり、対応しているプロセッサは、要求元のプロセッサに情報を返答しなければならないため、プロセッサ間で比較的高い帯域幅のバスを必要とする帯域幅を使用してしまうことになる。このようなことを防ぐために、ソフトウェア開発者は、データの格納場所に制限を設けることを考えるが、特に、境界をまたぐようなトライアングルをレンダリングする場合などは、制限を設けることは非常に困難である。
【0012】
一実施形態において、ページテーブルは、ソフトウェアによって提供されるアドレスを、スループットアプリケーションを実行するのに使用される2つのプロセッサに対応する2つのメモリにおけるロケーションに変換(map)する。特に、ページテーブルは、アドレスの複数のビットを使用して、2つのメモリ内の交互(alternating)のロケーションに格納されたアドレス情報を含むテーブルのエントリ(要素)にアクセスする。したがって、ソフトウェアが情報を格納する又は情報にアクセスする時には、ページテーブルにより自動的にそのアクセスについて適切なメモリへのルートが提示されるので、要求元のソフトウェア(OS又はアプリケーション)が、情報が実際に格納されている場所を探索する又は考慮する必要がない。このようにして、いずれかのメモリから交互に、バースト速度で情報がアクセスされ、各プロセッサのメモリインターフェースの帯域幅を最大化することができ、相対的に高い帯域幅のバスを回避することができ、クロスメモリ/プロセッサアクセスをサポートすることができる。
【0013】
ある実施形態では、コヒーレンシフィルタを使用する等の効率的な方法で要求を管理することにより、複数のプロセッサ(例えば、CPU及びGPU)が、要求元アプリケーションにデータを提供してもよい。一実施形態では、コヒーレンシフィルタは、1つ以上のコヒーレンシテーブル、又は1つ以上のプロセッサによりアクセス可能な又は対応するその他の構造を含んでもよく、一のプロセッサで実行されているアプリケーションからのデータ要求が発生すると、別のプロセッサが現在アクセス可能なデータ(プロセッサのキャッシュ、バッファ又は他の構造における対応するデータ、又はプロセッサの対応するメモリにおいて現在オープンとなっているページにおける対応データ)のアドレスを示すテーブルに、このプロセッサがアクセスするようにしてもよい。要求されたデータの直近のバージョンが、別のプロセッサのキャッシュに存在する場合、要求を受信したプロセッサは、別のプロセッサに対して、要求されたデータを要求元アプリケーションに返答するよう信号で通知してもよいし、あるいは、要求を受信したプロセッサが、n幅のプロセッサ間相互接続を通じて、別のプロセッサからデータを読み出してもよい。ある実施形態では、プロセッサは、複数のプロセッサを含んでもよく、この場合、各プロセッサは、プロセッサソケットに対応していてもよい。
【0014】
ある実施形態では、上述した技術は、2、4、8又はそれ以上の数のプロセッサ又はコアを有するプロセッサ又はシステムに適用してもよく、同じ種類(CPU)又は異なる種類(CPUとGPU)、若しくはその他のアクセラレータが含まれていてもよい。また、本発明の実施形態は、汎用コンピュータ、グラフィックスゲームコンソール、グラフィックスカードアプリケーションなどを含む様々なシステム、処理構成又はアプリケーションに適用可能である。一実施形態では、ここに記載される技術は、金融アプリケーション、医療アプリケーション、イメージングアプリケーションなどの3Dグラフィックス又は他のアプリケーションの実行する1つ以上のプロセッサに関する。他の実施形態では、ここに記載される技術は、順次的な又は典型的なワークロードを実行するため汎用CPUと共に利用される場合もある。また、他の実施形態では、ここに記載される技術は、典型的なCPU及びグラフィック専用ロジック(CPU+GPU)を含むプロセッサなど、典型的なCPUワークロードとスループットアプリケーションの両方を実行するよう設計されたハイブリッドプロセッサに関連して、利用されてもよい。また、一実施形態では、ここに記載される技術は、グラフィックテクスチャサンプリングロジックなど、並列アプリケーション専用ロジックと共に相互接続に連結され、SIMD命令を実行可能ないくつかのCPUプロセッサコアを有する1以上のプロセッサに関連して、利用される。
【0015】
図1は、本発明の少なくとも1つの実施形態を利用することが考えられるマイクロプロセッサを示す。図1には、典型的なCPUアプリケーション、スループットアプリケーション(例えば、3Dグラフィックスアプリケーション)又は典型的なCPUアプリケーションとスループットアプリケーションとの組み合わせに対して、利用可能なプロセッサが示されている。プロセッサ100は、複数のプロセッシングコア100−1〜100−Nと、専用スループットアプリケーションハードウェア110(例えば、グラフィックス・テクスチャ・サンプリングハードウェア)と、メモリインターフェースロジック120とを含み、リング相互接続130に沿って配置されている。ある実施形態では、プロセッサ100は、コア100−1〜100−Nそれぞれに位置するキャッシュ101−1〜101−Nからの情報を包含する1つ以上のラストレベルキャッシュ135を含んでもよい。一実施形態では、1つ以上のプロセッシングコア100−1〜100−Nは、SIMD処理を実行可能である。
【0016】
一実施形態では、CPUはそれぞれ、GPUハードウェアにスケジュールされたオペレーションのいくつかを、共有メモリ又はダイレクトリンク(又は図1に示す実施形態における環状リンク)を通じて転送することにより、これらのオペレーションを実行することができる。反対に、グラフィックスハードウェアにスケジュールされたオペレーションを、同様のメカニズムを用いて利用可能なCPUに転送することもできる。
【0017】
ある実施形態では、グラフィックテクスチャのような情報又は比較的大量のメモリ帯域幅を必要とする他の情報に対して、アプリケーションソフトウェアが当該情報を格納するメモリを認識せず又は考慮することなく、他のプロセッサ(図示せず)に対応する他のメモリからアクセスがある場合が考えられる。また、ある実施形態では、プロセッサ100は、図1に示されるより多くの又は少ない数のメモリコントローラを含んでもよい。また、図1のメモリコントローラは、プロセッサ100の内部又は外部に設けられていてもよい。
【0018】
図2は、一実施形態に係るGPU及びCPUが共有するリソースを示したものである。一実施形態において、CPU201は、順次的な(sequential)プログラムを実行するのに優先的に使用され、一方、GPU205は、並列的(parallel)なプログラムを実行するのに使用される。一実施形態において、CPU又はGPUのいずれかにスケジュールされた命令を、共有ストレージ210を使用してCPUとGPUとの間で転送又は"移動"することができる。一実施形態において、共有ストレージは、PCI共有メモリとして数えられるメモリの領域であり、CPU又はGPUは、移動された命令に関連する情報を読み書きすることができる。例えば、グラフィックスオペレーションがGPUにより実行される一実施形態において、グラフィックスオペレーションの一部は、CPUが利用可能である場合は、CPUへと転送し処理することができる。CPUが実行すべき命令及びデータを共有メモリに書き込み、また、割り込み又はCPU及びGPU間のダイレクトリンクを通じて、CPUが共有メモリリソースから情報を読み出すべきであり、そこに示された情報を実行すべきであることを指示する。一実施形態において、CPUが転送されてきたタスクを処理している間に、GPUはその他のオペレーションの処理を続けてもよい。CPUのタスクが完了すると、CPUは結果を共有メモリに書き込み、割り込み又はダイレクト通信リンクを使用して、GPUに結果が利用可能になったことを通知する、例えば、GPUが結果を読み込むことが可能であり、グラフィックス・レンダリング・パイプラインに取り込み可能であることを通知する。一実施形態において、共有メモリリソースの逆の使用方法を実行してもよく、CPUがオペレーションを実行し、そのうちの一部をGPUに実行させてもよい。
【0019】
一実施形態において、CPU及びGPU間で転送される情報を共有する(例えば、共有メモリを使用する替わりに)及び/又は共有メモリにおいて利用可能な情報を互いに信号で伝えるのに、ダイレクトリンク(直接結合)215が使用される。一実施形態では、ダイレクトリンクは、ページ情報を共有するのに使用され、一のプロセッサが、他のプロセッサが必要とするかもしれないページを閉じてしまわないようにしている。一実施形態では、CPUとGPUとの間でのリソースの共有は、CPU、GPU又はこれらの両方に位置するロジック、又はシステムのその他の位置に存在するロジックによって制御される。ある実施形態では、リソースの共有は、ミドルウェア、ドライバ、ドライバ状ソフトウェア、又は仮想マシンマネージャ、又はハイパーバイザにより制御される。利点として、アプリケーションソフトウェア又はOSが、リソースの共有について何も認識することなく、実施形態を利用することができるということが挙げられる。一実施形態において、グラフィックスAPIの複数部分が、CPU及びGPUのリソース共有を制御してもよい。特に、基礎となるリソースを認識しているAPIは、自身のグラフィックス・レンダリング・パイプラインで実行されるオペレーションに基づいて、リソースを使用してもよい。
【0020】
図3は、一実施形態に係るグラフィックス・レンダリング・パイプラインを示したものである。一実施形態において、図3のグラフィックス・レンダリング・パイプラインは、入力アセンブラステージ301、頂点シェーダ(shader)ステージ305、ジオメトリシェーダステージ310、ストリーム出力ステージ315、ラスタライザ(rasterizer)ステージ320、ピクセルシェーダステージ325及び出力合成ステージ330を含む。また、グラフィックス・レンダリング・パイプラインは、共有メモリリソース335に位置するバッファのような、共有メモリリソースを利用してもよい。
【0021】
一実施形態において、図3に示したグラフィックス・レンダリング・パイプラインの1以上のステージ又は1以上のステージの一部を、実行されるオペレーション及びハードウェアリソースの利用可能度に応じて、CPUリソース又は別のGPUリソースに転送してもよい。例えば、一実施形態では、利用可能なハードウェアリソースを持つCPUにより、頂点シェーダステージを実行し、この場合、例えば、共有メモリリソースを使用して、APIにより命令をこのCPUに転送又はスケジュールする。CPUがオペレーションを完了したら、共有メモリリソースを使用して、その結果をGPUに転送してもよい。一実施形態において、API又はその他のソフトウェアは、実行すべき命令をCPUにスケジュールし、また一部をGPUにスケジュールしてもよく、この場合、CPU及びGPUはそれぞれ、独自のスケジューリングロジック又は共有スケジューリングロジック、及び浮動小数点ロジックのような共有リソースを有する。一実施形態において、整数オペレーションを、(CPU内に位置してもよい)整数ロジックにスケジュールし、浮動小数点オペレーションを、(GPU内に位置してもよい)浮動小数点ロジックにスケジュールしてもよい。
【0022】
図4は、CPU及びGPUが、浮動小数点リソース及び整数リソースを共有する1つの実施形態を示したものである。図4に示すように、プロセッサ400は、命令をフェッチするフェッチロジック401、命令をデコードするデコードロジック405、命令が使用するデータを格納するL1データキャッシュ410a〜b、複数のエージェントによって使用される共有L2キャッシュ415及び共有L3キャッシュ420を有する。また、図4には、整数命令を実行する整数実行リソース425a〜h、及び浮動小数点命令を実行する浮動小数点実行リソース430a〜bが示されている。また、一実施形態では、浮動小数点実行リソース及び整数実行リソースは、それぞれ自身専用のスケジューリングロジック435a〜b及び440を有する。一実施形態では、浮動小数点リソースは、128ビット浮動小数点乗算累算(FMAC)ロジックを含む。ある実施形態では、スケジューリングリソースは、少なくとも一部共有される。
【0023】
一実施形態では、浮動小数点リソースを必要とする命令を、浮動小数点スケジューラを使用して、浮動小数点リソースにスケジュールすることができ、整数実行リソースを必要とする命令を、整数スケジューラを使用して、整数実行ユニットにスケジュールすることができる。一実施形態では、ハイパーバイザ、ミドルウェアドライバ、又はAPIは、浮動小数点リソースを必要とするプログラムの複数部分を、浮動小数点スケジューラロジックを使用して、浮動小数点リソースにスケジュールすることができ、これと並行して又は順次的に、整数命令も、整数スケジューラにより整数実行リソースにスケジュールされる。一実施形態において、図4が示す構成はCPUであり、他の実施形態では、図4が示す構成はGPUであり、また別の実施形態では、図4が示す構成はCPU及びGPUであある。
【0024】
図5は、一実施形態に従って実行されるオペレーションのフロー図である。501において、命令が、GPU又はCPUにスケジュールされる。オペレーション505において、GPU又はCPUにスケジュールされた命令を、共有メモリ又はダイレクトリンクを使用して情報を共有するため、情報を共有メモリ又はダイレクトリンクに書き込む。オペレーション510において、共有された情報を利用するユーザーは、共有メモリ又はダイレクトリンクから情報を読み出す。他の実施形態では、その他のオペレーションを実行してもよい。
【0025】
図6は、本発明の一実施形態を使用可能な共有バスコンピュータシステム(例えば、フロントサイドバス(FSB)コンピュータシステム)を示している。プロセッサ601、605、610又は615のいずれも、非対称コア(性能、パワー、動作電圧、クロックスピード又はISAが異なる)を含んでもよく、非対称コアは、そこに位置するローカルレベル1(L1)のキャッシュメモリ620、625、630、235、640、645、650、655からの情報にアクセスすることができる、又はプロセッサコア623、627、633、637、643、647、653、657のうちの1つと関連付けられていてもよい。また、プロセッサ601、605、610又は615は、共有レベル2(L2)キャッシュ603、607、613、617からの情報、又はシステムメモリ660からの情報に、チップセット665を通じてアクセスしてもよい。
【0026】
本発明の実施形態は、図6に示すプロセッサ又はエージェントのいずれに存在してもよい。例えば、ロジック619を、プロセッサ623、627、633、637、643、647、653、657のいずれか又は全てに組み込んで、少なくとも一実施形態の側面を実行するようにしてもよい。特に、ロジック619を使用して、システム内の他のエージェントからの信号の検出、送信及び割り込みを行い、ページが現在、別のエージェントによってアクセスされているかに基づいて、メモリのページがオープンとなっているか、又はクローズとなっているのかを判断してもよい。他の実施形態では、ロジック619は、複数エージェントに分配されてもよい。また、別の実施形態では、ロジック660は、ソフトウェア、ハードウェア又はこれらの組み合わせを含んでもよい。
【0027】
図6に示したFSBコンピュータシステムの他に、他のシステム構成を、本発明の様々な実施形態に関連して使用してもよく、ポイント・ツー・ポイント(P2P)相互接続システム又はリング相互接続システムなどを使用してもよい。図7のP2Pシステムは、例えば、図には、2つのプロセッサ770、780しか示されていないが、それ以上の個数のプロセッサを含んでもよい。プロセッサ770、780はそれぞれ、ローカル・メモリコントローラハブ(MCH)772、782を有し、メモリ72、74と接続されている。プロセッサ770、780は、ポイント・ツー・ポイント(PtP)インターフェース回路778、788を使用して、PtPインターフェース750を通じたデータ交換をしてもよい。プロセッサ770、780はそれぞれ、ポイント・ツー・ポイントインターフェース回路776、794、786、798を使用して、別個のPtPインターフェース752、754を通じて、チップセット790とデータを交換してもよい。チップセット790も、高性能グラフィックスインターフェース739を介して、高性能グラフィックス回路738とデータを交換してもよい。
【0028】
本発明の実施形態は、図7に示すあらゆるプロセッサ又はエージェントに取り込んでもよい。例えば、ロジック799を、プロセッサ770、780のいずれか一方又は両方に組み込み、少なくとも一実施形態の側面を実行するようにしてもよい。特に、ロジック799を使用して、システム内の他のエージェントからの信号の検出、送信及び割り込みを行い、ページが現在、別のエージェントによってアクセスされているか否かに基づいて、メモリのページがオープンとなっているか、又はクローズとなっているのかを判断してもよい。他の実施形態では、ロジック799は、複数エージェントに分配されてもよい。また、別の実施形態では、ロジック799は、ソフトウェア、ハードウェア又はこれらの組み合わせを含んでもよい。
【0029】
多数の異なる種類のプロセッシングデバイスが、このようなプロセス再割当技術を利用することの利益を享受できる。例えば、処理ユニット600−1〜600−Nは、汎用プロセッサ(例えば、マイクロプロセッサ)であってもよいし、又は(1つのダイ上の)複数コア・マイクロプロセッサのマイクロプロセッサコアであってもよい。あるいは、複数の並列ユニット又はコアを備えるシステムにおいて使用されるデジタル信号プロセッサ、グラフィックスプロセッサ、ネットワークプロセッサ又はあらゆる種類の特定用途プロセッサが、熱(又はパワー)に起因した、プロセッシングユニット間のプロセスシフトの恩恵を享受することができる。プロセッシングユニット又はプロセッサは、少なくとも部分的に重複をした機能を有するか、又は互いに同じであってもよい。すなわち、複数のプロセッシングユニット又はプロセッサ上で実行可能なプロセスが少なくとも(全部ではないが)複数存在するように、各プロセッシングユニットは、共通の命令セット又はコマンドセットを有する。他の実施形態では、複数のプロセッシングユニットは非対称であってもよく、パフォーマンス能力、トランジスタの個数、電力消費、熱特性、クロック周波数又はISAのいずれか又はこれらの組み合わせにおいて、異なっていてもよい。
【0030】
迅速な処理及び要求データの返答を促進するため、少なくとも1つの実施形態において、アプリケーションにより要求されたデータを抽出読み出す最善の(例えば、最速の)方法を決定するために、コヒーレンシフィルタを採用してもよい。例えば、一実施形態において、コヒーレンシフィルタは、システムの1つ以上のプロセッサが現在アクセス可能なデータに関する情報を各エントリに含むコヒーレンシテーブルを有してもよい。一実施形態では、プロセッサのコヒーレンシテーブルは、システムの他のプロセッサのキャッシュ、バッファ又はその他のストレージ構造において利用可能なデータを示すアドレスのリストを含んでもよく、アプリケーションがデータを要求する時に、プロセッサは、最初に自身のコヒーレンシテーブルをチェックして、他のプロセッサがこのデータを現在有しているか確認することができる。他のプロセッサがデータを有する場合は、要求を受け付けたプロセッサが、プロセッサ間のn幅の相互接続に渡ってデータを読み出すことにより、データが読み出されてもよい。一実施形態において、テーブルは、プロセッサのキャッシュ/バッファなどにおいて利用可能なデータの一部しか示さないため(実際には、テーブルによって含まれる情報の量は様々であるが)、n幅のプロセッサ間相互接続のトラフィックは、コヒーレンシテーブルの情報又はサイズにより、削減又は少なくとも制御可能である。
【0031】
図12は、コヒーレンシフィルタを含む本発明の一実施形態で利用可能なシステムを示す。図12において、プロセッサ1205上で実行されるアプリケーション又はスレッド1240は、プロセッサ1205にアドレスを提供することによって、データを要求してもよい。そして、プロセッサ1205は、要求されたデータがプロセッサ1200内のバッファ又はキャッシュ内に現在存在するかを判断するため、プロセッサがアクセス可能なメモリ又はプロセッサに格納されているコヒーレンシテーブル1245にアクセスしてもよい。例えば、テーブルが、要求されたデータがプロセッサ1200において現在利用可能であることを示している場合、プロセッサ1205は、相互接続1208を介しプロセッサ1200からデータを読み出すので、これにより、最も迅速に、プログラムにデータを提供することができる。一実施形態において、テーブルは、アプリケーション又はスレッド1240によりプロセッサ1205に提供されるアドレスの一部に関して参照される。さらに少なくとも1つの実施形態において、異なるテーブル(又は同一のテーブル)が、システムのプロセッサそれぞれに対応し、他のプロセッサにおいて検出される要求された各アドレスについてテーブル内にエントリを生成することにより、テーブルが維持される。さらに、各エントリは、データが他のプロセッサ内に検出されない場合を示す情報を有してもよく、又はエントリが一緒に削除されてもよい。様々なコヒーレンシテーブルのメンテナンススキーム及びアルゴリズムを使用して、相互接続1208を介して複数のプロセッサ間で共有される情報を追跡してもよい。
【0032】
機械に読み出された場合に当該機械に上述の技術を実行させるロジックを生成させ、プロセッサ内の様々なロジックを表す機械可読媒体に格納される典型的なデータにより、少なくとも一実施形態の1以上の側面を実装してもよい。"IPコア"として知られるこのような表現は、有形の機械可読媒体(テープ)に格納され、実際のロジック又はプロセッサを生成する製造装置にロードする製造者、又は様々なカスタマに供給されると考えられる。
【0033】
以上、マイクロアーキテクチャメモリ領域アクセスに関する方法及び装置について記載した。上記説明は、例示的なものであって限定することを意図していないことが理解されるべきである。上述の説明を読み理解することで、その他多くの実施形態が可能であることは、当業者にとって明白である。したがって、本発明の範囲は、添付の特許請求の範囲、及び請求項の均等物の全範囲を参照することにより決定されるべきである。

【特許請求の範囲】
【請求項1】
中央処理演算装置(CPU)と、
前記CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
前記CPU及び前記GPUの実行リソースを共有するためのロジックと
を備える装置。
【請求項2】
前記CPUと前記GPUとの間でページ情報を通信するためのロジックをさらに備える請求項1に記載の装置。
【請求項3】
前記ロジックは、前記CPU及び前記GPUに共有される情報を格納する共有メモリリソースを有する請求項1に記載の装置。
【請求項4】
前記ロジックは、情報共有を促進するための、前記CPUと前記GPUとの間のダイレクトリンクを有する請求項1に記載の装置。
【請求項5】
前記GPUは、前記CPUによって使用される浮動小数点実行リソースを有する請求項2に記載の装置。
【請求項6】
前記CPUは、前記GPUによって使用される整数実行リソースを有する請求項2に記載の装置。
【請求項7】
前記GPUにスケジュールされる命令が、前記CPUに移動され、前記移動された命令の結果が、前記GPUに転送される請求項1に記載の装置。
【請求項8】
前記CPUにスケジュールされる命令が、前記GPUに移動され、前記移動された命令の結果が、前記CPUに転送される請求項1に記載の装置。
【請求項9】
中央処理演算装置(CPU)と
前記CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
前記CPU及び前記GPUの実行リソースを共有するためのロジックと、
前記CPU又は前記GPUによって使用されるシステムメモリと
を備えるシステム。
【請求項10】
前記CPUと前記GPUとの間でページ情報を通信するためのロジックをさらに備える請求項9に記載のシステム。
【請求項11】
前記ロジックは、前記CPU及び前記GPUに共有される情報を格納する共有メモリリソースを有する請求項9に記載のシステム。
【請求項12】
前記ロジックは、情報共有を促進するための、前記CPUと前記GPUとの間のダイレクトリンクを有する請求項9に記載のシステム。
【請求項13】
前記GPUは、前記CPUによって使用される浮動小数点実行リソースを有する請求項10に記載のシステム。
【請求項14】
前記CPUは、前記GPUによって使用される整数実行リソースを有する請求項10に記載のシステム。
【請求項15】
前記GPUにスケジュールされる命令が、前記CPUに移動され、前記移動された命令の結果が、前記GPUに転送される請求項9に記載のシステム。
【請求項16】
前記CPUにスケジュールされる命令が、前記GPUに移動され、前記移動された命令の結果が、前記CPUに転送される請求項9に記載のシステム。
【請求項17】
中央処理演算装置(CPU)と、
前記CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
前記CPU及び前記GPUの実行リソースを共有するためのロジックと、
前記CPU及び前記GPUに連結され、命令をデコードするデコードロジックと、
前記命令を格納する命令キャッシュと、
前記命令をスケジュールするスケジューラロジックと
を備えるプロセッサ。
【請求項18】
前記CPUと前記GPUとの間でページ情報を通信するためのロジックをさらに備える請求項17に記載のプロセッサ。
【請求項19】
前記ロジックは、前記CPU及び前記GPUに共有される情報を格納する共有メモリリソースを有する請求項17に記載のプロセッサ。
【請求項20】
前記ロジックは、情報共有を促進するための、前記CPUと前記GPUとの間のダイレクトリンクを有する請求項17に記載のプロセッサ。
【請求項21】
前記GPUは、前記CPUによって使用される浮動小数点実行リソースを有する請求項19に記載のプロセッサ。
【請求項22】
前記CPUは、前記GPUによって使用される整数実行リソースを有する請求項19に記載のプロセッサ。
【請求項23】
前記GPUにスケジュールされる命令が、前記CPUに移動され、前記移動された命令の結果が、前記GPUに転送される請求項17に記載のプロセッサ。
【請求項24】
前記CPUにスケジュールされる命令が、前記GPUに移動され、前記移動された命令の結果が、前記CPUに転送される請求項17に記載のプロセッサ。
【請求項25】
前記スケジューラロジックは、整数命令をスケジュールする第1のスケジューラロジックと、浮動小数点命令をスケジュールする第2のスケジューラロジックとを有する請求項17に記載のプロセッサ。
【請求項26】
前記CPUと前記GPUとが、前記第2のスケジューラロジックを共有する請求項25に記載のプロセッサ。
【請求項27】
命令を、実行リソースの第1セットを有する第1のプロセッサにスケジュールする段階と、
前記命令を、実行リソースの第2セットを有する第2のプロセッサに移動させる段階と、
前記第2のプロセッサにおいて前記命令を実行して得られた情報を、前記第1のプロセッサに転送する段階とを備える方法。
【請求項28】
前記第1のプロセッサは、中央演算処理装置(CPU)であり、前記第2のプロセッサは、グラフィックスプロセッシングユニット(GPU)である請求項27に記載の方法。
【請求項29】
前記第1のプロセッサは、GPUであり、前記第2のプロセッサは、CPUである請求項27に記載の方法。
【請求項30】
前記第1のプロセッサと前記第2のプロセッサとの間で、ページング情報を通信する段階をさらに備える請求項27に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−175624(P2011−175624A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【外国語出願】
【出願番号】特願2010−279280(P2010−279280)
【出願日】平成22年12月15日(2010.12.15)
【出願人】(591003943)インテル・コーポレーション (1,101)