GpuMmu モデル

GpuMmu モデルでは、グラフィックス処理ユニット (GPU) に独自のメモリ管理ユニット (MMU) があり、プロセスごとの GPU 仮想アドレスを物理アドレスに変換します。

各プロセスには、個別のページ テーブルを使用する個別の CPU と GPU の仮想アドレス空間があります。 ビデオ メモリ マネージャーは、すべてのプロセスの GPU 仮想アドレス空間を管理し、割り当て、拡張、更新、常駐の確保、およびページ テーブルの解放を担当します。 GPU MMU によって使用されるページ テーブルのハードウェア形式は、ビデオ メモリ マネージャーでは不明であり、デバイス ドライバー インターフェイス (DDI) によって抽象化されます。 抽象化では、固定サイズのページ テーブルやサイズ変更可能なルート ページ テーブルなど、複数レベルの翻訳がサポートされています。

ビデオ メモリ マネージャーは、GPU 仮想アドレス空間とその基になるページ テーブルの管理を担当しますが、ビデオ メモリ マネージャーは GPU 仮想アドレスを割り当てに自動的に割り当てません。 この責任は、ユーザー モード ドライバーに発生します。

ビデオ メモリ マネージャーは、ユーザー モード ドライバーに 2 つのサービス セットを提供します。 まず、ユーザー モード ドライバーは、既存の割り当て コールバックを通じてビデオ メモリを割り当て、既存の割り当て解除コールバックを使用してそのメモリを解放できます。 現在と同様に、これはユーザー モード ドライバーに、GPU エンジンで操作できるビデオ メモリ マネージャー割り当てへのハンドルを返します。 このような割り当ては、割り当ての物理的な部分のみを表し、割り当てリスト参照を介して物理的に動作するエンジンによって参照できます。

仮想モードで実行されているエンジンの場合、仮想アクセスする前に、GPU 仮想アドレスを割り当てに明示的に割り当てる必要があります。 この目的のために、ビデオ メモリ マネージャーは、GPU 仮想アドレスを予約または解放し、特定の割り当て範囲をプロセスの GPU 仮想アドレス空間にマップするユーザー モード ドライバー サービスを提供します。 これらのサービスは非常に柔軟で、ユーザー モード ドライバーはプロセス GPU 仮想アドレス空間をきめ細かく制御できます。 ユーザー モード ドライバーは、割り当てに非常に特定の GPU 仮想アドレスを割り当てるか、ビデオ メモリ マネージャーが使用可能な仮想アドレスを自動的に選択できるようにするか、場合によっては最小および最大 GPU 仮想アドレスの制約を指定することができます。 1 つの割り当てに複数の GPU 仮想アドレス マッピングが関連付けられている場合があり、タイル リソース コントラクトを実装するためにサービスがユーザー モード ドライバーに提供されます。

同様に、リンクされたディスプレイ アダプター構成では、ユーザー モード ドライバーは、GPU 仮想アドレスを特定の割り当てインスタンスに明示的にマップし、マッピングを自己または特定のピア GPU のいずれにするかをマッピングごとに選択できます。 このモデルでは、割り当てに割り当てられた CPU と GPU の仮想アドレスは独立しています。 ユーザー モード ドライバーは、両方のアドレス空間で同じ状態を維持するか、独立した状態に保つかを決定できます。

GPU 仮想アドレスは、DDI インターフェイスを介して 4 KB の固定ページ粒度で論理的に管理されます。 GPU 仮想アドレスは、メモリ セグメントまたはシステム メモリのいずれかに常駐する割り当てを参照できます。 システム メモリは 4 KB (キロバイト) 物理粒度で管理され、メモリ セグメントはドライバーの選択に応じて 4 KB (キロバイト) または 64 KB (キロバイト) で管理されます。 すべてのビデオ メモリ マネージャーの割り当ては、ドライバーによって選択されたページ サイズの倍数に合わせて調整され、サイズが設定されます。

無効な範囲の GPU 仮想アドレスにアクセスすると、アクセス違反が発生し、アクセスエラーの原因となったコンテキストやデバイスが終了します。 このような障害から回復するために、ビデオ メモリ マネージャーはエンジンのリセットを開始します。このリセットは、失敗した場合はアダプター全体のタイムアウト検出復旧 (TDR) に昇格されます。

GpuMmu モデルを次に示します。

Diagram that shows the GpuMmu model with its components and interactions.