Bagikan melalui


Model IoMmu

Halaman ini menjelaskan model IoMmu yang diperkenalkan di WDDM 2.0. Lihat Isolasi GPU berbasis IOMMU dan remapping DMA IOMMU untuk pembaruan IOMMU yang lebih baru.

Gambaran Umum

Unit Manajemen Memori Input-Output (IOMMU) adalah komponen MMU yang menghubungkan bus I/O berkemampuan DMA ke memori sistem. Ini memetakan alamat virtual yang terlihat perangkat ke alamat fisik, sehingga berguna dalam virtualisasi.

Dalam model IoMmu WDDM 2.0, setiap proses memiliki satu ruang alamat virtual yaitu:

  • Dibagikan antara CPU dan GPU.
  • Dikelola oleh manajer memori OS.

Untuk mengakses memori, GPU mengirimkan permintaan data ke IOMMU yang sesuai. Permintaan ini mencakup alamat virtual bersama dan pengidentifikasi ruang alamat proses (PASID). IOMMU melakukan terjemahan alamat menggunakan tabel halaman bersama. Tindakan ini diilustrasikan dalam diagram berikut.

Diagram yang memperlihatkan terjemahan ruang alamat proses IOMMU di WDDM 2.0.

Driver tampilan mode kernel (KMD) mengekspresikan dukungan untuk model IoMmu dengan mengatur batas DXGK_VIDMMCAPS::IoMmuSupported . Ketika bendera ini diatur, manajer memori video (VidMm) secara otomatis mendaftarkan proses apa pun menggunakan GPU dengan IOMMU dan mendapatkan PASID untuk ruang alamat proses tersebut. PASID diteruskan ke driver selama pembuatan perangkat.

VidMm memetakan alokasi utama ke segmen aperture sebelum ditampilkan, memastikan bahwa pengontrol tampilan memiliki akses fisik ke alokasi ini.

Dalam model IoMmu, driver tampilan mode pengguna (UMD) terus mengalokasikan memori video untuk GPU menggunakan layanan Alokasi VidMm. Proses ini memungkinkan UMD untuk:

  • Ikuti model residensi.
  • Mendukung model berbagi sumber daya DirectX.
  • Pastikan permukaan utama terlihat oleh kernel dan dipetakan ke dalam aperture sebelum ditampilkan.

UMD sepenuhnya mengelola tingkat terjemahan pertama (alamat sumber daya petak ke alamat CPU/GPU bersama) dalam mode pengguna.