共用方式為


IoMmu 模型

此頁面描述 WDDM 2.0 中引進的 IoMmu 模型。 如需最新的 IOMMU 更新,請參閱 IOMMU 型 GPU 隔離IOMMU DMA 重新對應

概觀

輸入輸出記憶體管理單位 (IOMMU) 是 MMU 元件,可連接支援 DMA 的 I/O 總線至系統記憶體。 它會將裝置可見的虛擬位址對應至實體位址,使其在虛擬化中很有用。

在 WDDM 2.0 IoMmu 模型中,每個進程都有一個虛擬位址空間,也就是:

  • 在 CPU 與 GPU 之間共用。
  • 由OS記憶體管理員管理。

為了存取記憶體,GPU 會將數據要求傳送至相容的 IOMMU。 要求包含共用虛擬位址和 進程位址空間標識碼 (PASID)。 IOMMU 會使用共用頁面表來執行地址轉譯。 下圖說明此動作。

顯示WDDM 2.0 中IOMMU進程位址空間轉譯的圖表。

核心模式顯示驅動程式 (KMD) 藉由設定 DXGK_VIDMMCAPS::IoMmuSupported caps 來表示 IoMmu 模型的支援。 設定此旗標時,視訊記憶體管理員 (VidMm) 會自動使用 GPU 向 IOMMU 註冊任何進程,並取得 該進程地址空間的 PASIDPASID 會在裝置建立期間傳遞至驅動程式。

VidMm 會在顯示之前將主要配置對應到光圈區段,確保顯示控制器能夠實際存取這些配置。

在IoMmu模型中,使用者模式顯示驅動程式 (UMD) 會繼續使用 VidMm 的 Allocate 服務,為 GPU 配置視訊記憶體。 此程式可讓 UMD:

  • 遵循落地模型。
  • 支援 DirectX 資源分享模型。
  • 確定核心可以看到主要表面,並在顯示之前對應到光圈。

UMD 會在使用者模式中完全管理第一層轉譯(磚資源位址共用 CPU/GPU 位址)。