Bagikan melalui


Memori virtual GPU di WDDM 2.0

Artikel ini menyediakan detail tentang manajemen memori virtual GPU yang dimulai di Windows 10 (WDDM 2.0). Ini menjelaskan mengapa WDDM diubah untuk mendukung alamat virtual GPU dan bagaimana driver menggunakannya.

Pendahuluan

Sebelum Windows Display Driver Model (WDDM) 2.0, antarmuka driver perangkat (DDI) dibangun sedemikian rupa sehingga mesin GPU diharapkan mereferensikan memori melalui alamat fisik segmen. Karena segmen dibagikan di seluruh aplikasi dan berkomitmen berlebihan, sumber daya direlokasi selama masa pakainya dan alamat fisik yang ditetapkan berubah. Proses ini memerlukan referensi memori untuk dilacak di dalam buffer perintah melalui alokasi dan daftar lokasi patch. Buffer tersebut kemudian perlu di-patch dengan referensi memori fisik yang benar sebelum pengiriman ke mesin GPU. Pelacakan dan patching ini mahal. Ini pada dasarnya memberlakukan model penjadwalan di mana manajer memori video (VidMm) harus memeriksa setiap paket sebelum dapat dikirimkan ke mesin.

Seiring waktu, lebih banyak vendor perangkat keras dipindahkan ke model penjadwalan berbasis perangkat keras. Dalam model ini, pekerjaan dikirimkan ke GPU langsung dari mode pengguna dan GPU mengelola berbagai antrean pekerjaan itu sendiri. Evolusi ini membuatnya perlu untuk menghilangkan kebutuhan VidMm untuk memeriksa dan menambal setiap buffer perintah sebelum pengiriman ke mesin GPU.

Untuk melakukannya, WDDM mendukung alamat virtual GPU mulai dari WDDM 2.0. Dalam model ini, setiap proses diberi ruang alamat virtual GPU unik (GPUVA) yang dapat dijalankan oleh setiap konteks GPU. Alokasi yang dibuat atau dibuka oleh proses akan diberi GPUVA unik dalam ruang alamat virtual GPU proses tersebut. GPUVA yang ditetapkan ini tetap konstan dan unik untuk masa pakai alokasi. Driver tampilan mode pengguna (UMD) dengan demikian dapat mereferensikan alokasi melalui alamat virtual GPU mereka tanpa harus khawatir tentang perubahan memori fisik yang mendasarinya selama masa pakainya.

Masing-masing mesin GPU dapat beroperasi dalam mode fisik atau virtual:

  • Dalam mode fisik, model penjadwalan tetap sama seperti dengan WDDM v1.x. UMD terus menghasilkan daftar lokasi alokasi dan patch. Daftar alokasi ini dikirimkan dengan buffer perintah dan digunakan untuk menambal buffer perintah ke alamat fisik aktual sebelum pengiriman ke mesin.

  • Dalam mode virtual, mesin mereferensikan memori melalui alamat virtual GPU. UMD menghasilkan buffer perintah langsung dari mode pengguna dan menggunakan layanan baru untuk mengirimkan perintah tersebut ke kernel. UMD tidak menghasilkan daftar lokasi alokasi atau patch, meskipun masih bertanggung jawab untuk mengelola residensi alokasi. Untuk informasi selengkapnya tentang residensi driver, lihat Residensi driver di WDDM 2.0.

Model memori GPU

WDDM v2 mendukung dua model berbeda untuk alamat virtual GPU, GpuMmu dan IoMmu. Driver harus ikut serta untuk mendukung salah satu atau kedua model. Satu simpul GPU dapat mendukung kedua mode secara bersamaan.

Model GpuMmu

Dalam model GpuMmu, VidMm mengelola unit manajemen memori GPU dan tabel halaman yang mendasar. VidMm juga mengekspos layanan ke UMD yang memungkinkannya mengelola pemetaan alamat virtual GPU ke alokasi. GpuMmu menyiratkan bahwa GPU menggunakan tabel halaman GPU untuk mengakses data. Tabel halaman dapat menunjuk ke memori sistem atau memori perangkat lokal.

Untuk informasi selengkapnya, lihat Model GpuMmu.

Model IoMmu

Dalam model IoMmu, CPU dan GPU berbagi ruang alamat umum dan tabel halaman CPU. Hanya memori sistem yang dapat diakses dalam kasus ini, sehingga IoMmu cocok untuk GPU terintegrasi. IoMmu menyediakan model pemrograman yang lebih sederhana, di mana GPU dan CPU dapat menggunakan pointer yang sama untuk mengakses memori. Tidak perlu mengelola sekumpulan tabel halaman terpisah dalam memori yang dapat diakses GPU. Meskipun demikian, model IoMmu dapat mengakibatkan penurunan performa karena overhead terjemahan alamat dan manajemen.

Untuk informasi selengkapnya, lihat Model IoMmu.