Bagikan melalui


Perlindungan pengemudi

Seiring dengan setiap alamat virtual, manajer memori video memungkinkan vendor perangkat keras independen (IHV) untuk menentukan perlindungan khusus driver / perangkat keras (yaitu pengodean entri tabel halaman) yang terkait secara khusus dengan alamat virtual tersebut. Bayangkan perlindungan driver sebagai bit tambahan dalam entri tabel halaman yang tidak diketahui oleh manajer memori video tetapi harus dikontrol oleh driver untuk memungkinkan unit pemrosesan grafis (GPU) mengakses memori secara optimal.

Perlindungan driver bersifat opsional dan dapat dibiarkan pada nol pada platform apa pun yang tidak memerlukan fungsionalitas ini.

Saat memetakan atau mempertahankan rentang alamat virtual GPU, driver dapat menentukan nilai perlindungan driver 64-bit. Perlindungan driver yang ditentukan digunakan oleh manajer memori video saat menginisialisasi entri tabel halaman yang sesuai dengan alamat virtual tertentu. Secara khusus, perlindungan driver diberikan kembali ke driver untuk setiap BuildPagingBufferDXGK_OPERATION_UPDATE_PAGE_TABLE yang sesuai dengan alamat virtual yang ditentukan.

Beberapa alamat virtual dapat dipetakan ke satu alokasi menggunakan perlindungan driver yang berbeda. Entri tabel halaman untuk masing-masing alamat virtual ini akan diperbarui menggunakan perlindungan driver yang sesuai.

Perlindungan driver hanya berlaku untuk entri tabel halaman tingkat 0 dan akan diatur ke nol untuk tingkat entri tabel halaman lainnya.

Pemanggilan dan perlindungan pengemudi unik

Saat paging pemasukan atau pengeluaran alokasi dari segmen memori, manajer memori video menetapkan alamat virtual sementara dari ruang alamat perangkat sistem untuk mentransfer konten alokasi. Saat membuat pemetaan ini, perlindungan driver yang terkait dengan alokasi menjadi ambigu karena mungkin ada beberapa pemetaan pada berbagai ruang alamat proses dengan perlindungan driver yang berbeda.

Karena itu, manajer memori video akan menentukan perlindungan driver nol untuk pemetaan perangkat sistem apa pun yang digunakan untuk pemetaan halaman secara default.

Driver dapat mengubah perilaku ini dengan mengatur bit unik saat menentukan perlindungan driver yang terkait dengan alamat virtual.

#define D3DGPU_UNIQUE_DRIVER_PROTECTION 0x8000000000000000ULL

Ketika bit ini diatur, manajer memori video akan memberlakukan bahwa pemetaan apa pun ke rentang alokasi yang sama menggunakan nilai perlindungan driver yang sama, atau permintaan pemetaan akan gagal dengan STATUS_INVALID_PARAMETER.

Rentang alokasi yang dipetakan dengan nilai perlindungan driver yang unik, tidak dapat dipetakan lagi dengan nilai perlindungan yang berbeda. Satu-satunya cara untuk mengubah pembatasan akses dalam kasus ini adalah dengan memetakan rentang tanpa akses.

Rentang alokasi yang dipetakan dengan nilai perlindungan driver non-unik dapat dipetakan lagi dengan nilai perlindungan apa pun.

Saat mengusir alokasi yang memiliki rentang alamat virtual yang dipetakan dengan perlindungan driver diatur ke unik, manajer memori video akan mengatur pemetaan proses halaman yang digunakan untuk rentang tersebut dengan nilai perlindungan driver yang sesuai tanpa ambiguitas.

Gambar berikut menunjukkan pemetaan VA untuk alokasi dengan nilai perlindungan driver yang berbeda.

Diagram memperlihatkan pemetaan alamat virtual untuk alokasi dengan nilai perlindungan driver yang berbeda.

Selama operasi pemanggilan halaman, alokasi akan disalin dalam potongan.

  1. Salin rentang alokasi [0, A1] dengan perlindungan driver 0
  2. Salin rentang alokasi [A1, A2] dengan perlindungan driver P1
  3. Salin rentang alokasi [A2, A4] dengan perlindungan driver 0
  4. Salin rentang alokasi [A4, A5] dengan perlindungan driver P4
  5. Salin rentang alokasi [A5, Ukuran] dengan perlindungan driver 0 Ada kemungkinan bahwa entri tabel halaman proses halaman akan diatur dengan satu nilai perlindungan driver ketika alokasi dikeluarkan dan diatur ke nilai yang berbeda ketika alokasi dilakukan. Diasumsikan driver harus memperbarui data alokasi setelah pemetaan alamat virtual diperbarui. Misalnya, pertimbangkan kasus ketika set pemetaan alokasi saat ini adalah M1 dan driver mode pengguna yang disebut UpdateGpuVirtualAddress dengan set pemetaan M2. Tepat sebelum set pemetaan M2 diterapkan, alokasi dapat dicabut oleh manajer memori video. Set pemetaan M2 diterapkan dan alokasi dialokasikan kembali. Sekarang konten alokasi di segmen memori lokal mungkin berbeda dari aslinya.

Sumber Daya Berubin

Untuk sumber daya berjenjang, perlindungan driver ditentukan saat menservasi rentang alamat virtual. Panggilan driver mode pengguna ke UpdateGpuVirtualAddress akan mewarisi perlindungan alamat virtual driver saat ini.