Nova: Shofer i ri Rust për GPU-të NVIDIA që vjen në Linux 6.15

Nova, Rust

Një vit më parë njoftoi Red Hatpër punën e tyre në një drejtues të ri me burim të hapur për menaxhimin e GPU-ve NVIDIA në sistemet Linux,E re». Ndryshe nga paraardhësi i tij, Nouveau, Nova mbështetet në delegimin e operacioneve të inicializimit dhe kontrollit te një mikrokontrollues GSP (GPU System Processor) i integruar në vetë kartën grafike.

Dhe tani, në pak muaj (ndryshe nga projektet e tjera të reja), duket se drejtuesi ka fituar pjekuri të mjaftueshme për t'u propozuar si një grup arnimesh për t'u integruar në kernelin Linux 6.15, ky është versioni fillestar i drejtuesit në Linux.

Nova, është projektuar si një modul kernel Linux, e cila mbështetet në nënsistemin DRM për të menaxhuar ndërveprimin me GPU nga hapësira e përdoruesit. Zhvillimi i tij shihet si një evolucion i Nouveau, me ndryshimin kryesor është se ai synohet ekskluzivisht në GPU me firmware GSP, i cili mbulon modele nga seria NVIDIA GeForce RTX 2000 bazuar në mikroarkitekturën Turing.

Dallimet me Nouveau dhe Avantazhet e Nova

Yll i ri kërkon të zgjidhë problemet strukturore të Nouveau, e cila kërkon një rregullim të madh në fusha të tilla si menaxhimi i kujtesës (VMM/MMU) dhe kyçjet në kod. Ndryshe nga Nouveau, Nova përdor firmware-in GSP të NVIDIA për të thjeshtuar inicializimin dhe kontrollin e GPU-së, duke reduktuar kompleksitetin e kodit dhe duke eliminuar nevojën për të trajtuar kartat e vjetra.

Kodi Nova eshte shkruar ne Rust, një gjuhë që jo vetëm përmirëson sigurinë duke minimizuar gabimet në menaxhimin e kujtesës, por gjithashtu lejon krijimin e shtresave të ripërdorshme dhe abstraksioneve për zhvillimin e drejtuesve të tjerë.

El Proyecto Ai mbështetet nga iniciativa të ndryshme paralele, të tilla si rust-device për krijimin e drejtuesve, rust-pci për ndërveprim me autobusin PCI dhe rust-drm për integrimin me nënsistemet DRM dhe GEM. Këto mjete po përdoren gjithashtu në zhvillimin e drm-asahi, drejtuesi Rust për GPU-të Apple M1 dhe M2, duke sugjeruar një konvergjencë në infrastrukturën e drejtuesve grafikë të shkruar në Rust.

Përdorimi i gjuhës Ndryshku në këtë zhvillim nuk është rastësi, pasi Rust ofron mekanizma që lehtësojnë rishikimin dhe rifaktorimin, gjë që kontribuon në stabilitet më të madh të projektit. Miratimi i kësaj gjuhe në kernelin Linux i përgjigjet një strategjie më të gjerë që kërkon të modernizojë shkrimin e moduleve dhe ta bëjë zhvillimin më të aksesueshëm për kontribuuesit e rinj.

Kjo nuk është e vetmja përpjekje e vazhdueshme për të integruar Rust në kernel. Drejtues dhe sisteme të tjera janë duke u zhvilluar në këtë gjuhë, të tilla si drejtuesi i GPU-së Apple AGX, mbështetja e ruajtjes së NVMe, sistemi i skedarëve PuzzleFS dhe zbatime të ndryshme të sigurisë dhe menaxhimit të pajisjes. Tendenca drejt Rust vazhdon të fitojë vrull në ekosistemin Linux, duke shënuar një ndryshim të rëndësishëm në mënyrën se si trajtohen siguria dhe stabiliteti në zhvillimin e kernelit të sistemit operativ.

Fazat e zbatimit

Aktualisht, Nova është në fazën e parë të zbatimit, inkorporuar nova-core, një modul me afërsisht 400 rreshta kodi që përcakton abstraksionet e nevojshme për të komunikuar me firmware-in GSP. Së bashku me nova-core, janë shtuar edhe lidhje thelbësore për integrimin me firmware NVIDIA.

Vlen të theksohet se, Nova fillimisht ishte planifikuar të mbërrinte në Linux 6.14 me një modul nova-core të përbërë nga 232 rreshta kodi, por në fund nuk u përfshi sepse Greg Kroah-Hartman përmendi disa detaje që kishte nevojë për lustrim.

Me konfirmimin e ri që tani do të përfshihet, Tani kontrolluesi do të kalojë në fazat e ardhshme në të cilën planifikohet të shtohet:

  • nova-drm: një drejtues DRM (Direct Rendering Manager) për të menaxhuar ndërveprimin me GPU nga hapësira e përdoruesit.
  • VFIO me menaxher vGPU: do të lejojë përdorimin e GPU-ve virtuale NVIDIA në mjediset e virtualizimit.

Së fundi, është e rëndësishme të sqarohet se Nova eNë gjendjen e tij aktuale, ai nuk është një kontrollues funksional dhe se arna të dërguara Ato janë vetëm baza për fillimin e zhvillimit të kontrolluesit, domethënë është kodi që do të hedhë themelet për zhvillimin e ardhshëm.