Setahun yang lalu Red Hat mengumumkankepada kerja mereka pada pemacu sumber terbuka baharu untuk mengurus GPU NVIDIA pada sistem Linux,baharu». Tidak seperti pendahulunya, Nouveau, Nova bergantung pada menugaskan operasi permulaan dan kawalan kepada mikropengawal GSP (Pemproses Sistem GPU) yang disepadukan ke dalam kad grafik itu sendiri.
Dan kini, dalam masa beberapa bulan (tidak seperti projek baharu yang lain), nampaknya pemacu telah mendapat kematangan yang mencukupi untuk dicadangkan sebagai satu set patch untuk disepadukan ke dalam kernel Linux 6.15, ini merupakan versi awal pemacu pada Linux.
Nova, memang direka sebagai modul kernel Linux, yang bergantung pada subsistem DRM untuk mengurus interaksi dengan GPU dari ruang pengguna. Perkembangannya dilihat sebagai evolusi Nouveau, dengan perbezaan utama ialah ia disasarkan secara eksklusif pada GPU dengan perisian tegar GSP, yang meliputi model daripada siri NVIDIA GeForce RTX 2000 berdasarkan mikroarkitektur Turing.
Perbezaan dengan Nouveau dan Kelebihan Nova
Nova berusaha untuk menyelesaikan masalah struktur Nouveau, yang memerlukan baik pulih besar dalam bidang seperti pengurusan memori (VMM/MMU) dan kunci dalam kod. Tidak seperti Nouveau, Nova memanfaatkan perisian tegar GSP NVIDIA untuk memudahkan pemulaan dan kawalan GPU, mengurangkan kerumitan kod dan menghapuskan keperluan untuk mengendalikan kad lama.
Kod Nova ia ditulis dalam Rust, bahasa yang bukan sahaja meningkatkan keselamatan dengan meminimumkan ralat dalam pengurusan memori, tetapi juga membenarkan penciptaan lapisan dan abstraksi boleh guna semula untuk pembangunan pemacu lain.
Projek itu Ia disokong oleh pelbagai inisiatif selari, seperti peranti karat untuk mencipta pemandu, rust-pci untuk interaksi dengan bas PCI dan rust-drm untuk penyepaduan dengan subsistem DRM dan GEM. Alat ini juga digunakan dalam pembangunan drm-asahi, pemacu Rust untuk GPU Apple M1 dan M2, mencadangkan penumpuan dalam infrastruktur pemacu grafik yang ditulis dalam Rust.
Penggunaan bahasa Karat dalam perkembangan ini bukan kebetulan, memandangkan Rust menawarkan mekanisme yang memudahkan semakan dan pemfaktoran semula, yang menyumbang kepada kestabilan projek yang lebih besar. Penggunaan bahasa ini dalam kernel Linux bertindak balas kepada strategi yang lebih luas yang bertujuan untuk memodenkan penulisan modul dan menjadikan pembangunan lebih mudah diakses oleh penyumbang baharu.
Ini bukan satu-satunya usaha berterusan untuk mengintegrasikan Rust ke dalam kernel. Pemacu dan sistem lain sedang dibangunkan dalam bahasa ini, seperti pemacu GPU Apple AGX, sokongan storan NVMe, sistem fail PuzzleFS dan pelbagai pelaksanaan pengurusan keselamatan dan peranti. Trend ke arah Rust terus mendapat momentum dalam ekosistem Linux, menandakan peralihan ketara dalam cara keselamatan dan kestabilan ditangani dalam pembangunan kernel sistem pengendalian.
Fasa-fasa pelaksanaan
Pada masa ini, Nova berada dalam fasa pertama pelaksanaannya, diperbadankan nova-core, modul dengan kira-kira 400 baris kod yang menetapkan abstraksi yang diperlukan untuk berkomunikasi dengan perisian tegar GSP. Bersama-sama dengan teras-nova, pautan penting untuk penyepaduan dengan perisian tegar NVIDIA juga telah ditambah.
Perlu dinyatakan bahawa, Nova pada mulanya dirancang untuk tiba di Linux 6.14 dengan modul teras nova yang terdiri daripada 232 baris kod, tetapi pada akhirnya ia tidak disertakan kerana Greg Kroah-Hartman menyebut beberapa butiran yang memerlukan penggilap.
Dengan pengesahan baharu bahawa ia kini akan disertakan, Sekarang pengawal akan beralih ke fasa seterusnya di mana ia dirancang untuk menambah:
- nova-drm: pemacu DRM (Pengurus Render Langsung) untuk mengurus interaksi dengan GPU dari ruang pengguna.
- VFIO dengan pengurus vGPU: akan membenarkan penggunaan GPU maya NVIDIA dalam persekitaran virtualisasi.
Akhir sekali, adalah penting untuk menjelaskan bahawa Nova eDalam keadaan semasa, ia bukan pengawal berfungsi dan bahawa patch dihantar Mereka hanya asas untuk memulakan pembangunan pengawal, iaitu kod yang akan meletakkan asas untuk pembangunan masa depan.