システムメモリ(RAM)はGPUアクセス用にどのようにマッピングされていますか?CPUで仮想メモリがどのように機能するかは明らかですが、GPUがGPUにマップされたシステムメモリ(ホスト)にアクセスするときにどのように機能するかはわかりません。基本的に、データがシステムメモリからホストメモリに、またはその逆にコピーされる方法に関連するものです。参考記事に裏打ちされた説明をお願いします。
1 に答える
次のスライドセットが非常に便利であることがわかりました: http://developer.amd.com/afds/assets/presentations/1004_final.pdf
FUSIONAPUSのメモリシステムゼロコピーのメリットPierreBoudierOpenGL/OpenCLのAMDフェローGrahamセラーズOpenGLのAMDマネージャー
AMDFusion開発者サミット2011年6月
ただし、これは動きの速い領域であることに注意してください。仮想メモリのような概念をGPUに(最終的に)適用する場合のように、新しい概念を開発することはそれほど多くありません。要約させてください。
昔、たとえば2010年以前は、GPUは通常個別のPCIまたはPCI-excpressカードまたはボードでした。彼らはGPUカードにいくつかのDRAMを搭載していました。このオンボードDRAMはかなり高速です。また、通常はPCI全体のDMAコピーエンジンを介して、CPU側のDRAMにアクセスすることもできます。このようなCPUメモリへのGPUアクセスは、通常、非常に低速です。
GPUメモリがページングされませんでした。さらに言えば、テクスチャキャッシュのように、GPU内のソフトウェア管理キャッシュを除いて、GPUメモリは通常キャッシュされていません。「ソフトウェア管理」とは、これらのキャッシュがキャッシュコヒーレントではなく、手動でフラッシュする必要があることを意味します。
通常、CPUDRAMのごく一部のみがGPUによってアクセスされました-アパーチャ。通常、これは固定されていました-ページングの対象ではありません。通常、仮想アドレス変換の対象にはなりません。通常、仮想アドレス=物理アドレス、+オフセットがあります。
(もちろん、残りのCPUメモリは適切に仮想メモリであり、ページングされ、確実に変換され、キャッシュされます。GPUは仮想メモリサブシステムとキャッシュにアクセスできないため、GPUはこれに安全にアクセスできません。コヒーレンスシステム。
さて、上記は機能しますが、それは苦痛です。最初にCPU内で、次にGPU内で何かを操作するのは遅いです。エラーを起こしやすい。また、セキュリティ上の大きなリスクもあります。ユーザーが提供するGPUコードは、多くの場合、すべてのCPU DRAMに(ゆっくりと安全に)アクセスできないため、マルウェアによって使用される可能性があります。
AMDは、GPUとCPUをより緊密に統合するという目標を発表しました。最初のステップの1つは、CPUとGPUの両方を含むチップである「Fusion」APUを作成することでした。(IntelはSandybridgeでも同様のことを行っています。私は、ARMもそうすることを期待しています。)
AMDはまた、GPUに仮想メモリサブシステムを使用させ、キャッシュを使用させる予定であることも発表しました。
GPUに仮想メモリを使用させる方向へのステップはAMDIOMMUです。Intelも同様です。ただし、IOMMUは、非仮想マシンOSの仮想メモリよりも仮想マシンを対象としています。
CPUとGPUが同じチップ内にあるシステムでは、通常、CPUとGPUが同じDRAMチップにアクセスします。そのため、「オンGPUボード」および「オフGPU--CPU」DRAMはなくなりました。
ただし、通常は、システムマザーボード上のDRAMが、主にCPUによって使用されるメモリと、主にGPUによって使用されるメモリに分割されます。メモリは同じDRAMチップ内にある場合でも、通常、大きなチャンクは「グラフィックス」です。上記の論文では、歴史的な理由から「ローカル」メモリと呼ばれています。CPUとグラフィックスのメモリは異なる方法で調整される場合があります。通常、GPUメモリは、ビデオの更新を除いて優先度が低く、バーストが長くなります。
私が参照している論文では、さまざまな内部バスがあります。「システム」メモリ用のオニオンと、グラフィックスメモリパーティションへのより高速なアクセス用の「ガーリック」です。ニンニクのメモリは通常、キャッシュされていません。
私が参照している論文では、CPUとGPUのページテーブルがどのように異なるかについて説明しています。彼らのサブタイトルである「ゼロコピーの利点」は、CPUデータストラクチャーをGPUページテーブルにマッピングすることを示しているため、コピーする必要はありません。
等、
システムのこの領域は急速に進化しているため、2011年の論文はすでにほとんど時代遅れになっています。しかし、あなたは傾向に注意する必要があります
(a)ソフトウェアはCPUとGPUメモリへの均一なアクセスを望んでいます-仮想メモリとキャッシュ可能
しかし
(b)ハードウェアは(a)を提供しようとしますが、特別なグラフィックスメモリ機能により、同じDRAMのパーティションだけでも、ほとんどの場合、専用のグラフィックスメモリが大幅に高速化または電力効率が向上します。
ギャップは狭くなっているかもしれませんが、それがなくなると思うたびに、別のハードウェアトリックをプレイすることができます。
-
ところで、2012年からのこの回答は更新する必要があります-私はこれを2019年に書いています。たとえば、CPU / GPUメモリの区別など、多くのことが当てはまります。GPUメモリはさらに高速ですが、少なくともデータセンターDLシステムでは、CPUよりも多くのGPUメモリが使用されることがよくあります。家庭用PCではそれほど多くはありません。また、GPUは仮想メモリをサポートするようになりました。これは決して完全な更新ではありません。