Share via


IoMmu 模型

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

概觀

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

在 WDDM 2.0 IoMmu 模型中,每個進程都有在 CPU 與 GPU 之間共用的單一虛擬位址空間,並由 OS 記憶體管理員管理。

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

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

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

主要配置會先由視訊記憶體管理員對應到光圈區段,再顯示,確保顯示控制器可以實際存取這些配置。

在IoMmu模型中,使用者模式驅動程式會繼續使用視訊記憶體管理員的 Allocate 服務,為 GPU 配置視訊記憶體。 這可讓使用者模式驅動程式:

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

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