説明

処理ユニットのローカルメモリ読み出し

【解決手段】
処理ユニットのローカルメモリに対する効率的な読み出しを可能にするためのシステム、装置及び方法がここに開示される。ある実施形態においては、処理ユニットは、インタフェース及びバッファを含む。インタフェースは、(i)他の処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求を送ると共に(ii)要求に応答して領域からの全てのデータを受信するように構成される。バッファは、他の処理ユニットのローカルメモリの領域からのデータを記憶するように構成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は概してコンピューティングシステムにおいて行われるコンピューティング動作に向けられている。
【背景技術】
【0002】
従来のコンピューティングシステムは、中央処理ユニット(CPU)及びグラフィクス処理ユニット(GPU)等の複数のハードウエア要素を含む。CPUは、コンピューティングシステムの他の全てのデバイスの動作を連携させる集積回路(IC)である。GPUは、グラフィクス処理タスク等のデータ並列コンピューティングタスクを行うように適合させられている集積回路である。GPUは、例えば、ビデオゲームアプリケーション等のエンドユーザアプリケーションによって要求されるグラフィクス処理タスクを実行することができる。
【0003】
従来のコンピューティングシステムはまた、ランダムアクセスメモリ(RAM)等のシステムメモリを含む。典型的には、CPU及びGPUは各々システムメモリへのアクセスを有する。システムメモリに加えて、GPUはまたローカルメモリに結合されていることがある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
残念なことに、GPUローカルメモリに対するCPU読み出しは低速である。具体的には、読み出しはアンキャッシュ(uncached)(UC)で行われ、このことは読み出されるデータがローカルキャッシュメモリ内へ複製されないことを意味する。また、全てのアンキャッシュの読み出しは32ビット又は64ビットの幅でシリアル化されており、このことは、CPUは一度に1つの読み出し要求のみを発行し、そして別の読み出し要求を発行するのに先立ち読み出し要求からのデータを待ってデータを返送することを意味する。結果として、GPUローカルメモリに対するCPU読み出しは、通常、低速である。
【0005】
従って、第1の処理ユニット(例えばCPU)が第2の処理ユニット(例えばGPU)のローカルメモリを速やかに読むことを可能にするシステム、装置及び方法が必要とされている。
【課題を解決するための手段】
【0006】
本発明の実施形態は、処理ユニットのローカルメモリに対する高速な読み出しをもたらすシステム、装置及び方法を提供することによって、上述の必要性を満たす。
例えば、本発明の実施形態は、第1の処理ユニットが第2の処理ユニットのローカルメモリを効率的に読むことを可能にするためのコンピュータ実装の方法(computer-implemented method)を提供する。このコンピュータ実装の方法に従うと、第2の処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求は、第1の処理ユニット及び第2の処理ユニットの間のインタフェースを介してを送られる。要求に応答して、領域からの全てのデータが受信される。このコンピュータ実装の方法は、領域からのデータをバッファ内に記憶することを更に含んでいてよい。領域におけるデータに対する後続の要求は、バッファからサービスされてよい。
【0007】
本発明の別の実施形態は、インタフェース及びバッファを含む処理ユニットを提供する。インタフェースは、(i)他の処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求を送ると共に(ii)要求に応答して領域からの全てのデータを受信するように構成される。バッファは、他の処理ユニットのローカルメモリの領域からのデータを記憶するように構成される。例においては、領域におけるデータに対する後続の要求は、バッファからサービスされる。
【0008】
本発明の更なる実施形態は、第1の処理ユニット及び第2の処理ユニットを含むコンピューティングシステムを提供する。第2の処理ユニットはローカルメモリに結合されている。第1の処理ユニットは、(i)第2の処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求を送ると共に(ii)要求に応答して領域からの全てのデータを受信するように構成されるインタフェースを含む。第1の処理ユニットは、第2の処理ユニットのローカルメモリの領域からのデータを記憶するように構成されるバッファを含んでいてもよい。領域におけるデータに対する後続の要求は、バッファからサービスされてよい。
【0009】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。尚、本発明はここに説明される特定の実施形態に限定されない。そのような実施形態は例示の目的のみのためにここに提示されている。ここに含まれる教示に基き追加的な実施形態が関連分野を含めた当業者にとって明らかであろう。
【図面の簡単な説明】
【0010】
ここに組み込まれ且つ出願書類の一部をなす添付の図面は本発明を示し、そして明細書と共に、本発明の原理を説明すること及び関連分野を含めた当業者が本発明を作りそして使用するのを可能にすることに更に役立つ。
【0011】
【図1】図1は本発明の実施形態に従い第2の処理ユニットのローカルメモリを読むように構成される第1の処理ユニットを示す図である。
【0012】
【図2】図2は本発明の実施形態に従う例示的なコンピューティングシステムを示す図である。
【0013】
【図3】図3は本発明の実施形態に従う例示的なCPU及びGPUを示す図である。
【0014】
【図4】図4は本発明の実施形態に従い別の処理ユニットのローカルメモリ内に記憶されるデータをリトリーブするための例示的な方法を示すフローチャートである。
【0015】
【図5】図5は本発明の実施形態に従いデータに対する要求を受信するための例示的な方法を示すフローチャートである。
【0016】
本発明の特徴及び利益は、図面と共に以下に記述される詳細な説明からより明らかになり、図面において同様の参照符号は全体を通して対応する要素を識別する。図面において、同様の参照番号は一般的に同一の、機能的に類似の、且つ/又は構造的に類似の要素を示す。ある要素が最初に現れる図面は対応する参照番号の一番左の単一又は複数の桁によって示される。
【発明を実施するための形態】
【0017】
I.概説
本発明の実施形態は、処理ユニットのローカルメモリに対する高速な読み出し及びそのアプリケーションに向けられている。以下の詳細な説明において、「1つの実施形態」、「ある実施形態」、「例示的実施形態」等に対する言及は、説明される実施形態が特定の特徴、構造又は特性を含んでいてよいが、全ての実施形態が必ずしも当該特定の特徴、構造又は特性を含む必要がなくてよいことを示している。また、そのような表現は必ずしも同じ実施形態を参照しているとは限らない。更に、特定の特徴、構造又は特性がある実施形態に関連して説明されている場合には、明示的に説明されていようとなかろうと、他の実施形態に関連して当該特定の特徴、構造又は特性を具現化することは当業者の知識の範囲内にあることと言える。
【0018】
図1に示されるように、実施形態は、第1の処理ユニット104Aが第2の処理ユニット104Bのローカルメモリ106を効率的に読むことを可能にする。処理ユニット104はバスによって互いに結合されており、そして別個のパッケージ(又はチップ)内に含まれていてよく、あるいは単一のパッケージ(又はチップ)内に含まれていてよい。各処理ユニット104は、CPU、GPU、ビデオ処理ユニット、コプロセッサ(例えば浮動小数点プロセッサ等)、及び/又は別の種類の処理ユニットを備えていてよい。
【0019】
例示のみを目的とし且つ限定を目的とせずに、本発明の実施形態はGPUのローカルメモリを読むことに関してここに説明されることになる。しかし、関連分野を含めた当業者であれば、本発明の実施形態は、中央処理ユニット及びコプロセッサ等の他の種類の処理ユニットのローカルメモリを読むことにも適用され得ることを理解するはずである。そのような他の実施形態は本発明の精神及び範囲内で検討される。
【0020】
本発明の実施形態は、書き込み性能を損なうことなしにGPUローカルメモリに対するCPU読み出しの性能を向上させることに向けられている。例えば本発明の実施形態は、GPUローカルメモリに対する従来のCPU読み出しに比べて10倍を超えて高速な、GPUローカルメモリに対するCPU読み出しを提供し得る。GPUローカルメモリに対する高速なCPU読み出しを提供するために、WCメモリ種類の一部である読み出しメカニズムが、読み出し結合(read combining)(RC)に変更される。この点において、CPUノースブリッジは、読み出し結合をサポートするために1つ以上の読み出しバッファを含むように構成される。ある実施形態においては、1つ以上の読み出しバッファはキャッシュライン長(例えば64バイト幅)のものである。
【0021】
本発明の別の実施形態は、第1のGPUが第2のGPUのローカルメモリから効率的に読み出すことを可能にする。周辺要素相互接続エクスプレス(peripheral component interconnect express)(PCIE)バスによって接続される2つ以上のGPUを含む従来のシステムにおいては、第1のGPUは第2のGPUのローカルメモリから、それが低速すぎるという理由で、効率的に読み出すことはできない。本発明の実施形態に従いGPUローカルメモリに対するCPUからの読み出しパスを高速化することは、ピア・ツー・ピア(peer-to-peer)読み出しが効率的で且つ有用な様態で実装されることを可能にする。
【0022】
そのようなCPU及びGPUを詳細に説明するのに先立ち、そのようなCPU及びGPUが実装され得る例示的なコンピュータシステムを説明することはむしろ有益である。
【0023】
II.例示的なコンピューティングシステム
本発明の実施形態は、ハードウエア、ソフトウエア又はそれらの組み合わせを用いて実装されてよく、そして1つ以上のコンピューティングシステム内又は他の処理システム内に実装されてよい。図2は例示的なコンピューティングシステム200を示している。
【0024】
コンピューティングシステム200は1つ以上の処理ユニット104を含む。処理ユニット104は汎用処理ユニット(例えばCPU)又は専用処理ユニット(例えばGPU)であってよい。処理ユニット104は通信基盤206(例えば通信バス、クロスオーバーバー又はネットワーク)に接続される。処理ユニット104の少なくとも1つはまた、ローカルメモリ106に結合される。後で更に詳細に説明されるように、1つ以上の他の処理ユニット104は、本発明の実施形態に従ってローカルメモリ106に効率的にアクセスすることができる。
【0025】
コンピューティングシステム200はまた、通信基盤206からの(又は図示しないフレームバッファからの)グラフィクスデータ、テキストデータ及び他のデータをディスプレイユニット230(例えば液晶ディスプレイ)上での表示のために転送するディスプレイインタフェース202を含む。
【0026】
コンピューティングシステム200はまた、主メモリ208、望ましくはランダムアクセスメモリ(RAM)を含み、補助メモリ210を含んでいてもよい。補助メモリ210は例えば、ハードディスクドライブ212及び/又はリムーバブル記憶ドライブ214を含んでいてよく、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光学ディスクドライブ等を代表する。リムーバブル記憶ドライブ214は周知の方法でリムーバブル記憶ユニット218から読み出し且つ/又はリムーバブル記憶ユニット218へ書き込みする。リムーバブル記憶ユニット218はフロッピー(登録商標)ディスク、磁気テープ、光学ディスク等を代表し、リムーバブル記憶ドライブ214によって読まれ且つ書き込まれる。理解されるであろうように、リムーバブル記憶ユニット218はコンピュータソフトウエア及び/又はデータが既に記憶されたコンピュータ可読記憶媒体を含む。
【0027】
代替的な実装においては、補助メモリ210は、コンピュータプログラム又は他の命令がコンピュータシステム200にロードされることを可能にするための他の同様のデバイスを含んでいてよい。そのようなデバイスは例えばリムーバブル記憶ユニット222及びインタフェース220を含み得る。そのような例は、プログラムカートリッジ及びカートリッジインタフェース(ビデオゲームデバイスにおいて見られるようなもの)、リムーバブルメモリチップ(例えば消去可能プログラム可能リードオンリメモリ(EPROM)又はプログラム可能リードオンリメモリ(PROM))及び関連するソケット、並びにソフトウエア及びデータがリムーバブル記憶ユニット222からコンピューティングシステム200へ転送されることを可能にする他のリムーバブル記憶ユニット222及びインタフェース220を含み得る。
【0028】
コンピューティングシステム200はまた通信インタフェース224を含んでいてよい。通信インタフェース224は、ソフトウエア及びデータがコンピューティングシステム200と外部デバイスの間で転送されることを可能にする。通信インタフェース224の例は、モデム、ネットワークインタフェース(例えばイーサネット(登録商標)カード)、通信ポート、パーソナルコンピュータメモリカード国際協会(Personal Computer Memory Card International Association)(PCMCIA)スロット及びカード等を含み得る。通信インタフェース224を介して転送されるソフトウエア及びデータは、通信インタフェース224によって受信されることが可能な電子的信号、電磁気的信号、光学的信号又は他の信号であってよい信号228の形態にある。これらの信号228は通信パス(例えばチャネル)226を介して通信インタフェース224へ供給される。このチャネル226は信号を伝え、そしてワイヤ若しくはケーブル、光ファイバ、電話線、携帯電話リンク、ラジオ周波数(RF)リンク又は他の通信チャネルを用いて実装され得る。
【0029】
この文書では、「コンピュータ可読記憶媒体」の用語は、リムーバブル記憶ドライブ214、及びハードディスクドライブ212内に組み込まれるハードディスクを一般的には参照して用いられる。これらのコンピュータプログラム製品は、コンピューティングシステム200にソフトウエアを提供する。
【0030】
コンピュータプログラム(コンピュータ制御論理とも称される)は主メモリ208及び/又は補助メモリ210内に記憶される。コンピュータプログラムはまた、リムーバブル記憶ドライブ214、ハードドライブ212又は通信インタフェース224を用いてコンピューティングシステム200内へロードされてよい。そのようなコンピュータプログラムは、実行されるときに、ここで論じられるような本発明の特徴をコンピューティングシステム200が行うことを可能にする。特に、コンピュータプログラムは、実行されるときに、本発明の実施形態に従い処理ユニット104の1つが処理ユニット104の別の1つのローカルメモリ106を効率的に読むことを可能にする。従って、そのようなコンピュータプログラムは、コンピューティングシステム200の制御器を代表する。
【0031】
III.例示的な処理ユニット
図3は例示的な処理ユニット104を示しており、ここで第1の処理ユニットは、本発明の実施形態に従い第2の処理ユニットのローカルメモリを読む。例えば図3は、CPU302と、第1のローカルメモリ352Aに結合される第1のGPU350Aと、第2のローカルメモリ352Bに結合される第2のGPU350Bと、を示している。別個の且つ同様のデバイスとして図示されているが、GPU350B及び350Aは、単一のボードの一部、単一のパッケージの一部(例えば多重チップモジュールと同様の単一パッケージ内の2つの集積回路)、又は単一のデバイス内の別個のコアであってよい。追加的に又は代替的に、GPU350A及び350Bは同一である必要はなく異なっていてよい。例えば、GPU350Aは統合化グラフィクスデバイス(例えばチップセットノースブリッジ326内に統合化されているデバイス)として具現化されてよい一方で、GPU350Bは別個の又はディスクリートなGPUデバイスにおいて具現化されてよい。
【0032】
CPU302は1つ以上のコア310及びノースブリッジ320を含む。各コア310は、書き込み結合を可能にする1つ以上の書き込みバッファ306を含む。ある実施形態においては、ノースブリッジ320は、CPUノースブリッジ322及びチップセットノースブリッジ326を含む。別の実施形態においては、チップセットノースブリッジ326はCPU302内に組み込まれていない。ノースブリッジ320はシステムメモリ330に結合される。
【0033】
CPU302は、インタフェース356Aによって第1のGPU350Aに結合され、またインタフェース356Bによって第2のGPU350Bに結合される。インタフェース356は、例えば、周辺要素インタフェース(peripheral component interface)(PCI)バス、アクセラレーテッドグラフィクスポート(accelerated graphics port)(AGP)バス、PCIエクスプレス(PCIE)バス、又はコンピューティングシステムにおいて用いられる別の種類のバスであってよい。
【0034】
各GPU350は、バスインタフェース(BIF)354及びホストデータパス(HDP)356を含む。バスインタフェース354は、インタフェース356を介して通信するためのプロトコルを実装している。ホストデータパス356は、ローカルメモリ352へのCPU302アクセスを提供する。
【0035】
動作において、CPU302は、第1のGPU350Aの第1のローカルメモリ352Aに対する又は第2のGPU350Bの第2のローカルメモリ352Bに対する読み出し要求を作成してよい。64バイト領域におけるアドレスに対する各読み出し要求の最初の4バイト(32ビット)又は8バイト(64ビット)は、ローカルメモリ352内の全64バイトラインが読み出しバッファ324へと読み出されるようにする。同じ64バイトラインに対する後続の全ての読み出しは読み出しバッファ324内でヒットし、従って従来の読み出しよりも高速にデータをCPU302へ返す。
【0036】
また、CPU302は、多重のアンキャッシュの(uncached)読み出しが同時にインフライト(in flight)になることを可能にし得るので、それによりメモリ352に対する読み出しが更に高速に進行することが可能になる。この機能をサポートするために、GPU350のエンドポイントハードウエアが特別に構成される。具体的には、多重のアンキャッシュの読み出しが同時にインフライトになることを可能にするために、バスインタフェース(BIF)354及びホストデータパス(HDP)356が構成される。
【0037】
CPUノースブリッジ322内に多重読み出しバッファを含ませることによって、更なる改良が得られる。既にCPUノースブリッジ322内にある書き込みバッファ306を読み出しバッファのためにも用いられるように共有することは、幾つかの理由で更に性能を改善する。先ず、ハードウエアを共有することでコストが低減される。第2に、ハードウエアを共有することは、最も興味深いケースにおける性能に負担をかけない。第3に、書き込み及び読み出しのために共有されるバッファは、書き込み後読み出しハザード(read-after-write hazards)の検出及び訂正を容易にする。
【0038】
ある実施形態においては、ピア・ツー・ピア読み出し(例えば第2のGPU350Bに対する第1のGPU350Aからの読み出し、及びその逆)を可能にするために、チップセットノースブリッジ326にデータパスが追加される。1つ以上の読み出し結合バッファ(例えば読み出しバッファ324)が、ピア・ツー・ピア読み出しトラフィックをサポートするために専用にされてよい。この実施形態においては、第2のGPU350Bの第2のローカルメモリ352B上の64バイト領域におけるアドレスに対して第1のGPU350Aから読み出される最初の4バイト(32ビット)又は8バイト(64ビット)は、第2のローカルメモリ352B内の全64バイトラインがCPUノースブリッジ322の読み出しバッファ324へと読み出されるようにする。同じ64バイトラインに対する後続の全ての読み出しは読み出しバッファ324内でヒットし、従って従来のピア・ツー・ピア読み出しよりも高速にデータを第1のGPU350Aへ返す。同様のメカニズムは、第2のGPU350Bが第1のGPU350Aの第1のローカルメモリ352Aから読み出すことを可能にする。
【0039】
加えて、多重のピア読み出しがインフライトになることを可能にするためにGPU350を変更することは、ピア・ツー・ピア読み出しが更に高速に進行することを可能にする。また、性能を更に改良するために、CPUノースブリッジ322内に多重読み出しバッファが含まれていてよい。更に、追加的な性能向上をもたらすために、幾つかの理由で、書き込みバッファ306は読み出しバッファのために用いられてもよい。先ず、ハードウエアを共有することでコストが低減される。第2に、ハードウエアを共有することは、最も興味深いケースにおける性能に負担をかけない。第3に、書き込み及び読み出しのために共有されるバッファは、書き込み後読み出しハザードの検出及び訂正を容易にする。
【0040】
IV.例示的な動作
上述したように、本発明の実施形態は、第1の処理ユニットが第2の処理ユニットのローカルメモリを効率的に読むことを可能にする。以下に説明されるのは、(A)第2の処理ユニットのローカルメモリ内に記憶されているデータをリトリーブする(retrieving)ために第1の処理ユニットによって実装される例示的な方法、及び(B)第1の処理ユニットからの要求を処理するために第2の処理ユニットによって実装される例示的な方法である。
【0041】
A.処理ユニットのローカルメモリ内に記憶されているデータをリトリーブするための例示的な方法
図4は本発明の実施形態に従い第2の処理ユニットのローカルメモリ内に記憶されているデータをリトリーブするために第1の処理ユニットによって実装される例示的な方法400を示すフローチャートである。例えば方法400は、CPU302、第1のGPU350A、及び/又は第2のGPU350Bによって実装されてよい。図4の方法400は、図3に示される構成を参照して以下に説明される。
【0042】
方法400はステップ402で開始し、第1の処理ユニットは、第2の処理ユニットのローカルメモリからデータを読み出す必要性を識別する。例えば、CPU302が、第1のGPU350Aのローカルメモリ352A又は第2のGPU350Bのローカルメモリ352Bを読む必要性を識別してよい。別の例では、第1のGPU350A又は第2のGPU350Bのいずれかが、他のGPUのローカルメモリ352に対するピア・ツー・ピア読み出しの必要性を識別してよい。
【0043】
ステップ404では、要求されたデータが既にローカルバッファ内に記憶されているかどうかが決定される。他の処理ユニットのローカルメモリのある領域に対して先行する要求が作成されていた場合には、要求されたデータはローカルバッファ内に記憶されているであろう。例えば、上述したように、CPU302がローカルメモリ352のメモリ領域(例えば64バイト領域)に対して読み出し要求を作成すると、当該領域からの全てのデータが読み出しバッファ324内に記憶されていることになる。
【0044】
ステップ404においてデータがローカルバッファ内にあると決定されると、ステップ406に示されるように、要求されたデータはローカルバッファからリトリーブされる。一方、ステップ404においてデータがローカルバッファ内にないと決定されると、ステップ408に示されるように、要求されたデータに対するメモリ要求は、他の処理ユニットへ送られる。
【0045】
従来の読み出し要求とは異なり、多重読み出し要求が本発明の実施形態に従い並列に送られてよい。例えば、第1の処理ユニットは、第1の読み出し要求を第2の処理ユニットへ送ってよく、そして第1の読み出し要求に対応するデータを受信するのに先立ち、後続の読み出し要求を第2の処理ユニット又は別の処理ユニットへ送ってよい。第1及び第2の読み出し要求に対応するデータが準備されている場合にはいつでも、そのデータは第1の処理ユニットに提供される。このようにして、多重読み出し要求が並列に発行され得るので、1つ以上の他の処理ユニットのローカルメモリへのより高速なアクセスが可能である。
【0046】
ステップ410では、データの全領域が他の処理ユニットから受信される。例えば、第1の処理ユニット(例えばCPU302又はGPU350)は、第2の処理ユニットのローカルメモリの領域(例えば64バイトライン)の数バイト(例えば4又は8バイト)のみを読み出すように要求することがある。それにもかかわらず、第2の処理ユニットは全領域からのデータ(例えば64バイトのデータ)を送る。
【0047】
ステップ412では、全領域からのデータがローカルバッファ内に記憶される。当該領域内のデータに対する後続の読み出し要求は、他の処理ユニットのローカルメモリからよりはむしろ、ローカルバッファからサービスされることになる。
【0048】
B.ローカルメモリ内でデータの読み出し要求を処理するための例示的な方法
図5は本発明の実施形態に従い第2の処理ユニットのローカルメモリ内のデータを読み出す第1の処理ユニットからの要求を処理するために第2の処理ユニットによって実装される例示的な方法500を示すフローチャートである。例えば方法500は、第1のGPU350A又は第2のGPU350Bによって実装されてよい。図5の方法500は、図3に示される構成を参照して以下に説明される。
【0049】
方法500はステップ502で開始し、第2の処理ユニットは、第2の処理ユニットのローカルメモリ内に記憶されているデータを読み出す要求を受信する。例えば、第1のGPU350Aは、第1のGPU350Aのローカルメモリ352Aのある領域からデータを読み出すCPU302又は第2のGPU350Bのいずれかからの要求を受信してよい。同様に、第2のGPU350Bは、第2のGPU350Bのローカルメモリ352Bのある領域からデータを読み出すCPU302又は第1のGPU350Aのいずれかからの要求を受信してよい。
【0050】
ステップ504では、要求されたデータがスレッショルドを満足し又は超えているかが随意的に決定される。例えば、要求されたデータが少なくとも4バイト、8バイト、又は他の何らかのデータの最小量であるかどうかが随意的に決定されてよい。要求されたデータがスレッショルドを満足せず又は超えていない場合には、ステップ506に示されるように、要求されたデータのみが要求した処理ユニットへ送られる。
【0051】
要求されたデータがスレッショルドを満足し若しくは超えている場合又はステップ504が含まれていない場合には、制御はステップ508に進む。ステップ508では、要求されたデータを含む全領域からの全データが、要求している処理ユニットへ送られる。例えば、データの領域は、メモリの64バイトライン又はメモリの別の領域を備えていてよい。この例においては、要求されたデータが64バイトラインのデータに含まれている場合には、全64バイトのデータが、要求している処理ユニットへ送られる。このようにして、要求している処理ユニットは、全領域(例えばメモリの64バイトライン)をローカルバッファ内に記憶してその領域内のデータへのより高速なアクセスを可能にし得る。
【0052】
V.例示的なソフトウエア実装
CPU302及びGPU350のハードウエア実装に加えて、そのような処理ユニットはまた、例えばソフトウエア(例えばコンピュータ可読プログラムコード)を記憶するように構成されるコンピュータ可読媒体内に配置されるソフトウエアにおいて具現化されてもよい。プログラムコードは、(i)ここに開示されるシステムの機能及び技術(例えば図4の方法400及び/又は図5の方法500)、(ii)ここに開示されるシステムの製造及び技術(例えばCPU302及び/又はGPU350の製造)又は(iii)ここに開示されるシステムの機能及び製造並びに技術の組み合わせ、の実施形態を含めて本発明の実施形態の実施可能性を生じさせる。
【0053】
このことは、例えば、一般的なプログラミング言語(例えばC又はC++)、ベリログ(Verilog)HDL、VHDL、アルテラ(Altera)HDL(AHDL)等を含むハードウエア記述言語(hardware description languages)(HDL)、あるいは他の利用可能なプログラミング及び/又は回路図等(schematic)キャプチャツール(capture tools)(例えば回路キャプチャツール)の使用を通して達成され得る。プログラムコードは、半導体、磁気ディスク、又は光学ディスク(例えばCD−ROM、DVD−ROM)を含む任意の既知のコンピュータ可読媒体内に配置され得る。従って、コードは、インターネット及びそれと同等のもの(the Internet and internets)を含む通信ネットワークを介して伝送され得る。上述したシステム及び技術によって達成される機能及び/又は提供される構造は、プログラムコードにおいて具現化されるコア(例えばCPUコア又はGPUコア)内で表現することができ、また集積回路の生産の一部としてハードウエアに変換されてよいことが理解される。
【0054】
VI.結論
以上提示されているのは、第1の処理ユニット(例えばCPU又はGPU)が第2の処理ユニット(例えばGPU)のローカルメモリを効率的に読むことを可能にするための実施形態及びそのアプリケーションである。概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の1つ以上であるが全てではない例示的な実施形態を記述することができ、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。

【特許請求の範囲】
【請求項1】
コンピュータ実装の方法であって、
第1の処理ユニット及び第2の処理ユニットの間のインタフェースを介して前記第2の処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求を送ることと、
前記要求に応答して前記領域からの全てのデータを受信することと、を備えるコンピュータ実装の方法。
【請求項2】
前記領域はキャッシュラインを備える請求項1のコンピュータ実装の方法。
【請求項3】
前記受信することに先立ち前記インタフェースを介して前記第2の処理ユニットの前記ローカルメモリの別の領域におけるデータに対する別の要求を送ることを更に備える請求項1のコンピュータ実装の方法。
【請求項4】
前記送ることは、周辺要素相互接続エクスプレス(PCIE)バスを介して前記第2の処理ユニットの前記ローカルメモリの前記領域におけるデータの前記一部分に対する前記要求を送ることを備える請求項1のコンピュータ実装の方法。
【請求項5】
前記送ることは、中央処理ユニット及びグラフィクス処理ユニットの間のインタフェースを介して前記グラフィクス処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求を送ることを備える請求項1のコンピュータ実装の方法。
【請求項6】
前記送ることは、第1のグラフィクス処理ユニット及び第2のグラフィクス処理ユニットの間のインタフェースを介して前記第2のグラフィクス処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求を送ることを備える請求項1のコンピュータ実装の方法。
【請求項7】
前記領域からの前記データをバッファ内に記憶することを更に備える請求項1のコンピュータ実装の方法。
【請求項8】
前記バッファ内に記憶されるデータを用いて前記領域内のデータに対する後続の要求をサービスすることを更に備える請求項7のコンピュータ実装の方法。
【請求項9】
処理ユニットであって、
(i)他の処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求を送ると共に(ii)前記要求に応答して前記領域からの全てのデータを受信するように構成されるインタフェースと、
前記他の処理ユニットの前記ローカルメモリの前記領域からの前記データを記憶するように構成されるバッファと、を備える処理ユニット。
【請求項10】
前記領域におけるデータに対する後続の要求は前記バッファからサービスされる請求項9の処理ユニット。
【請求項11】
前記領域はキャッシュラインを備える請求項9の処理ユニット。
【請求項12】
前記領域からの全ての前記データを受信することに先立ち前記インタフェースは前記他の処理ユニットの前記ローカルメモリの別の領域におけるデータの一部分に対する後続の要求を送るように更に構成される請求項9の処理ユニット。
【請求項13】
前記インタフェースは周辺要素相互接続エクスプレス(PCIE)バスへの結合を備える請求項9の処理ユニット。
【請求項14】
前記処理ユニットは中央処理ユニットであり、前記他の処理ユニットはグラフィクス処理ユニットである請求項9の処理ユニット。
【請求項15】
前記処理ユニットは第1のグラフィクス処理ユニットであり、前記他の処理ユニットは第2のグラフィクス処理ユニットである請求項9の処理ユニット。
【請求項16】
第1の処理ユニットと、ローカルメモリに結合される第2の処理ユニットと、を備えるコンピューティングシステムであって、
前記第1の処理ユニットは、(i)前記第2の処理ユニットの前記ローカルメモリの領域におけるデータの一部分に対する要求を送ると共に(ii)前記要求に応答して前記領域からの全てのデータを受信するように構成されるインタフェースを備えるコンピューティングシステム。
【請求項17】
前記領域はキャッシュラインを備える請求項16のコンピューティングシステム。
【請求項18】
前記領域からの全ての前記データを受信することに先立ち前記インタフェースは前記第2の処理ユニットの前記ローカルメモリの別の領域におけるデータの一部分に対する後続の要求を送るように更に構成される請求項16のコンピューティングシステム。
【請求項19】
前記インタフェースは周辺要素相互接続エクスプレス(PCIE)バスへの結合を備える請求項16のコンピューティングシステム。
【請求項20】
前記第1の処理ユニットは中央処理ユニットであり、前記第2の処理ユニットはグラフィクス処理ユニットである請求項16のコンピューティングシステム。
【請求項21】
前記第1の処理ユニットは第1のグラフィクス処理ユニットであり、前記第2の処理ユニットは第2のグラフィクス処理ユニットである請求項16のコンピューティングシステム。
【請求項22】
前記第1の処理ユニットは、前記第2の処理ユニットの前記ローカルメモリの前記領域からの前記データを記憶するように構成されるバッファを更に備える請求項16のコンピューティングシステム。
【請求項23】
前記領域におけるデータに対する後続の要求は前記バッファからサービスされる請求項22のコンピューティングシステム。
【請求項24】
コンピューティングデバイス上で実行される場合に処理ユニットを定義する命令が入っているコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記処理ユニットは、
(i)他の処理ユニットのローカルメモリの領域におけるデータの一部分に対する要求を送ると共に(ii)前記要求に応答して前記領域からの全てのデータを受信するように構成されるインタフェースと、
前記他の処理ユニットの前記ローカルメモリの前記領域からの前記データを記憶するように構成されるバッファと、を備えるコンピュータプログラム製品。
【請求項25】
前記処理ユニットは第1のグラフィクス処理ユニットであり、前記他の処理ユニットは第2のグラフィクス処理ユニットである請求項24のコンピュータプログラム製品。
【請求項26】
前記処理ユニットはハードウエア記述言語ソフトウエアにおいて具現化される請求項24のコンピュータプログラム製品。
【請求項27】
前記処理ユニットはベリログハードウエア記述言語ソフトウエア、ベリログAハードウエア記述言語ソフトウエア及びVHDLハードウエア記述言語ソフトウエアの1つにおいて具現化される請求項26のコンピュータプログラム製品。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2013−504814(P2013−504814A)
【公表日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2012−528888(P2012−528888)
【出願日】平成22年9月9日(2010.9.9)
【国際出願番号】PCT/US2010/048214
【国際公開番号】WO2011/031823
【国際公開日】平成23年3月17日(2011.3.17)
【出願人】(591016172)アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド (439)
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
【出願人】(508301087)エーティーアイ・テクノロジーズ・ユーエルシー (68)
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
【Fターム(参考)】