Sdílet prostřednictvím


Model IoMmu

Tato stránka popisuje model IoMmu zavedený v WDDM 2.0. Další nejnovější aktualizace IOMMU najdete v tématu Izolace GPU založené na IOMMU a přemapování ioMMU DMA .

Přehled

Jednotka pro správu paměti Input-Output (IOMMU) je hardwarová komponenta, která připojuje vstupně-výstupní sběrnici DMA se systémovou pamětí. Mapuje virtuální adresy viditelné pro zařízení na fyzické adresy, což usnadňuje virtualizaci.

V modelu IoMMU WDDM 2.0 má každý proces jeden virtuální adresní prostor, který je:

  • Sdílí se mezi procesorem a GPU.
  • Spravuje správce paměti operačního systému.

Pokud chcete získat přístup k paměti, GPU odešle žádost o data do kompatibilního objektu IOMMU. Požadavek zahrnuje sdílenou virtuální adresu a identifikátor adresního prostoru procesu (PASID). IoMMU provádí překlad adres pomocí tabulky sdílených stránek. Tato akce je znázorněna v následujícím diagramu.

Diagram znázorňující překlad adresního prostoru procesu IOMMU v WDDM 2.0

Ovladač zobrazení v režimu jádra (KMD) vyjadřuje podporu modelu IoMmu nastavením limitu DXGK_VIDMMCAPS::IoMmuSupported . Když je tento příznak nastaven, správce paměti videa (VidMm) automaticky zaregistruje jakýkoli proces s procesorem GPU pomocí IOMMU a získá PASID v adresním prostoru tohoto procesu. PASID se předá ovladači během vytváření zařízení.

VidMm mapuje primární přidělení do segmentu clony před zobrazením a zajišťuje, že řadič zobrazení má k těmto přidělením fyzický přístup.

V modelu IoMmu bude ovladač zobrazení v uživatelském režimu (UMD) nadále přidělovat grafickému procesoru paměť pomocí služby VidMm Allocate . Tento proces umožňuje UMD:

  • Postupujte podle modelu rezidence.
  • Podpora modelu sdílení prostředků DirectX
  • Před zobrazením se ujistěte, že jsou primární povrchy viditelné pro jádro a mapují se na clonu.

UmD zcela spravuje první úroveň překladu (adresa prostředku dlaždice na sdílenou adresu procesoru nebo GPU) v uživatelském režimu.