CPU ホスト アパーチャ
サイズ変更可能な BAR をサポートしていない 32 ビット OS ディスクリート グラフィックス処理装置 (GPU) の場合、またはフレーム バッファー BAR のサイズ変更が失敗した場合、Windows ディスプレイ ドライバー モデル (WDDM) v2 では、ディスクリート GPU VRAM に効率的にアクセスできる代替メカニズムが提供されます。 プログラミング可能な BAR アドレス空間をサポートする GPU の場合、その機能を抽象化するために、WDDM v2 に新しい CPU ホスト アパーチャ機能が導入されます。
CPU ホスト アパーチャを公開すると、カーネル モード ドライバーは、CPU ホスト アパーチャをサポートするすべてのセグメントの新しい DXGK_CPUHOSTAPERTURE キャップ構造を入力します。 これにより CPU ホスト アパーチャのサイズが定義され、ドライバーは内部目的で一部の BAR を予約できます。 ページ サイズは、メモリ セグメントの GPU ページと同じです。
カーネル モード ドライバーは、2 つの新しいデバイス ドライバー インターフェイス (DDI) を公開して、BAR アドレス空間 (特に DxgkDdiMapCpuHostAperture と DxgkDdiUnmapCpuHostAperture) を管理します。
CPU ホスト アパーチャの背後にあるページ テーブルのメモリは、ドライバーによって管理され、ドライバーの初期化の早い段階で設定されます。 DxgkDdiMapCpuHostAperture と DxgkDdiUnmapCpuHostAperture はどちらも、セグメント列挙の直後に動作することが想定されており、ビデオ メモリ マネージャーの初期化中に使用され、アダプターの初期化中にシステム ページング プロセスのページ ディレクトリとページ テーブルに CPU 仮想アドレスをマップします。
メモリ セグメントへの CPU アクセスが必要な場合、ビデオ メモリ マネージャーは CPU ホストの アパーチャ内のページを予約し、それを介してメモリ セグメント ページをマップします。 これについて次に示します。
リンクされたディスプレイ アダプターの構成は、次の点を除いて似ています。
- 既定または LinkMirrored の割り当ては常に GPU0 にマップされます。
- LinkInstanced 割り当てには、割り当てのさまざまな部分が異なる GPU にマップされている割り当てに関連付けられている AllocationSize*NumberOfGPUInLink の仮想アドレス範囲があります。
これについて次に示します。