Bagikan melalui


Arsitektur MCDM

Driver Microsoft Compute Driver Model (MCDM) adalah kerangka kerja yang dirancang untuk mendukung tugas komputasi berperforma tinggi pada platform Windows. Ini menyediakan antarmuka standar untuk mengembangkan driver yang dapat menggunakan GPU, NPU, dan sumber daya komputasi lainnya untuk tugas pemrosesan paralel. Driver MCDM sangat penting untuk aplikasi yang membutuhkan daya komputasi intensif, seperti simulasi ilmiah, analisis data, dan pembelajaran mesin.

Artikel ini menjelaskan konsep arsitektur MCDM. Driver MCDM, atau driver khusus komputasi, memiliki driver mode kernel (driver .sys ) dan pustaka tautan dinamis mode pengguna (DLL).

Lihat juga:

Antrean Perintah

Antrean Perintah adalah konstruksi DirectCompute yang digunakan untuk pengiriman pekerjaan. Driver bertanggung jawab untuk membuat satu atau beberapa Konteks yang kemudian digunakannya untuk melakukan eksekusi pekerjaan yang dikirimkan. Driver bertanggung jawab untuk mengubah pekerjaan yang dinyatakan melalui panggilan ke DDI-nya menjadi Buffer DMA yang kemudian dikirimkan ke Konteks untuk dieksekusi.

Konteks

Konteks adalah antrean pekerjaan komputasi yang dikirimkan oleh driver yang menargetkan Mesin dengan status khusus instans. Pekerjaan komputasi dinyatakan sebagai Buffer DMA yang diadakan dalam Antrean SW menunggu pengiriman ke Mesin.

Antrean SW

Buffer DMA yang dikirimkan untuk eksekusi ke konteks diadakan dalam Antrean SW. Panjang Antrean SW hanya dibatasi oleh sumber daya. Ada hubungan satu-ke-satu antara Konteks dan Antrean SW yang sesuai. Penjadwal bertanggung jawab untuk menghapus Buffer DMA dari Antrean SW dan mengirimkan buffer ke Mesin yang sesuai yang pada gilirannya menempatkan buffer pada Antrean HW sendiri.

Scheduler

Scheduler diimplementasikan oleh OS dan driver tidak memiliki kontrol atas penjadwalan ini.

Scheduler bertanggung jawab untuk menjadwalkan pekerjaan yang diantrekan dalam Antrean SW yang menargetkan Mesin. Ini memastikan penggunaan sumber daya Mesin terbatas yang adil di semua Antrean SW dan preempts berfungsi sesuai kebutuhan untuk memastikan kewajaran ini dan untuk memastikan bahwa pekerjaan prioritas yang lebih tinggi selesai tepat waktu.

Ketika Penjadwal melakukan preempts bekerja, penjadwal bertanggung jawab untuk mengantre ulang sesuai pekerjaan yang didahulukan.

Mesin

Mesin menjalankan tindakan yang diperlukan untuk menyelesaikan pekerjaan yang dinyatakan dalam urutan Buffer DMA. Setiap Buffer DMA dijalankan dalam Konteks dan Ruang Alamat tertentu. Mesin harus menunjukkan kapan eksekusi Buffer DMA selesai dan indikasi ini harus diberikan dalam urutan yang sama di mana Buffer DMA diterima.

Mesin harus dapat membuat kemajuan secara independen tanpa adanya dependensi eksplisit atau implisit yang dinyatakan dalam Buffer DMA. Jika ada dua mesin atau lebih, mereka dijadwalkan dengan asumsi bahwa setiap pekerjaan Mesin akan dilanjutkan tepat waktu dan tanpa gangguan pekerjaan yang dilakukan di Mesin lain.

Karena Buffer DMA dijalankan dengan Ruang Alamat tertentu, beberapa Mesin hanya dapat didukung jika setiap Mesin mampu mengeksekusi Buffer DMA di Ruang Alamat yang berbeda.

Driver menentukan berapa banyak Mesin yang dilaporkan dan bagaimana Mesin ini digunakan oleh Konteks yang dibuatnya.

Antrean HW

Mesin akan diberikan urutan Buffer DMA yang secara konseptual ditempatkan dalam antrean yang disebut Antrean HW. Saat ini, antrean ini hanya diisi dengan paling banyak dua entri Buffer DMA. Mesin harus menyelesaikan Buffer DMA dalam urutan pengiriman.

Pendahuluan

Mesin harus mampu didahului, memungkinkan eksekusi Buffer DMA yang diselesaikan sebagian terganggu atau dibatalkan.

Ketika diminta untuk mendahului pekerjaan yang luar biasa, Mesin harus minimal mendukung penyelesaian Buffer DMA yang diselesaikan sebagian dan membatalkan semua Buffer DMA yang belum dimulai.

Indikasi penyelesaian atau pendahuluan Buffer DMA masih harus dilakukan sesuai urutan pengiriman Buffer DMA. Jika Buffer DMA didahului, semua Buffer DMA berikutnya (saat ini paling banyak satu buffer lainnya) juga didahului.

Jika Buffer DMA dijalankan sebagian, driver harus menyimpan informasi yang cukup untuk memulai kembali eksekusinya.

DMA Buffer

Driver mengonversi pekerjaan yang dikirimkan melalui panggilan ke DDI-nya menjadi Buffer DMA yang kemudian dikirimkan untuk eksekusi. Mesin menjalankan tindakan yang diperlukan untuk menyelesaikan pekerjaan yang dinyatakan dalam urutan Buffer DMA. Setiap Buffer DMA dijalankan dalam Konteks dan Ruang Alamat tertentu. Mesin harus menunjukkan kapan eksekusi Buffer DMA selesai dan indikasi ini harus diberikan dalam urutan yang sama di mana Buffer DMA diterima.

Ruang Alamat

Ruang Alamat digunakan untuk memetakan alamat perangkat virtual ke alamat perangkat fisik. Satu Ruang Alamat digunakan untuk setiap proses sisi host.

Mesin adalah sumber daya bersama di seluruh proses dan dengan demikian harus mendukung peralihan antara Ruang Alamat karena Buffer DMA dijalankan dari proses yang berbeda.

Perangkat yang hanya mendukung satu Ruang Alamat harus dibatasi dalam cara penggunaannya. Hanya satu proses pada saat yang diizinkan untuk menggunakan perangkat. Saat satu proses menggunakan perangkat, semua upaya oleh proses lain untuk mengakses perangkat akan gagal. Perangkat yang hanya dapat mendukung akses dengan satu proses disebut sebagai perangkat Penggunaan Tunggal.

Ruang Alamat ditentukan oleh satu penunjuk ke tabel halaman akar ruang alamat. Perubahan ke ruang alamat yang berbeda hanya memerlukan menentukan alamat tabel halaman akar yang berbeda.

OS mengelola tabel halaman ruang alamat. Untuk membuat perubahan pada tabel halaman, OS membuat permintaan kepada driver untuk merekam perubahan ini ke buffer DMA yang kemudian dikirimkan ke mesin yang sesuai pada waktu yang tepat.