Πριν από ένα χρόνο ανακοίνωσε η Red Hatστην εργασία τους σε ένα νέο πρόγραμμα οδήγησης ανοιχτού κώδικα για τη διαχείριση των GPU της NVIDIA σε συστήματα Linux,Νέος". Σε αντίθεση με τον προκάτοχό του, το Nouveau, η Nova βασίζεται στην ανάθεση λειτουργιών προετοιμασίας και ελέγχου σε έναν μικροελεγκτή GSP (GPU System Processor) που είναι ενσωματωμένος στην ίδια την κάρτα γραφικών.
Και τώρα, μέσα σε λίγους μήνες (σε αντίθεση με άλλα νέα έργα), φαίνεται ότι το πρόγραμμα οδήγησης έχει αποκτήσει αρκετή ωριμότητα ώστε να προταθεί ως ένα σύνολο ενημερώσεων κώδικα που θα ενσωματωθεί στον πυρήνα του Linux 6.15, που είναι η αρχική έκδοση του προγράμματος οδήγησης στο Linux.
Nova, είναι έχει σχεδιαστεί ως λειτουργική μονάδα πυρήνα Linux, που βασίζεται στο υποσύστημα DRM για τη διαχείριση της αλληλεπίδρασης με τη GPU από το χώρο του χρήστη. Η ανάπτυξή του θεωρείται ως εξέλιξη του Nouveau, με τη βασική διαφορά ότι στοχεύει αποκλειστικά σε GPU με υλικολογισμικό GSP, το οποίο καλύπτει μοντέλα από τη σειρά NVIDIA GeForce RTX 2000 που βασίζονται στη μικροαρχιτεκτονική Turing.
Διαφορές με το Nouveau και τα πλεονεκτήματα της Nova
Nova επιδιώκει να λύσει δομικά προβλήματα της Nouveau, το οποίο απαιτεί σημαντική αναθεώρηση σε τομείς όπως η διαχείριση μνήμης (VMM/MMU) και το κλείδωμα του κώδικα. Σε αντίθεση με το Nouveau, η Nova αξιοποιεί το υλικολογισμικό GSP της NVIDIA για να απλοποιήσει την προετοιμασία και τον έλεγχο της GPU, μειώνοντας την πολυπλοκότητα του κώδικα και εξαλείφοντας την ανάγκη χειρισμού παλαιότερων καρτών.
Ο Κώδικας Nova είναι γραμμένο στο Rust, μια γλώσσα που όχι μόνο βελτιώνει την ασφάλεια ελαχιστοποιώντας τα σφάλματα στη διαχείριση της μνήμης, αλλά επιτρέπει επίσης τη δημιουργία επαναχρησιμοποιήσιμων επιπέδων και αφαιρέσεων για την ανάπτυξη άλλων προγραμμάτων οδήγησης.
Το έργο Υποστηρίζεται από διάφορες παράλληλες πρωτοβουλίες, όπως το rust-device για τη δημιουργία προγραμμάτων οδήγησης, rust-pci για αλληλεπίδραση με το δίαυλο PCI και το rust-drm για ενοποίηση με υποσυστήματα DRM και GEM. Αυτά τα εργαλεία χρησιμοποιούνται επίσης στην ανάπτυξη του drm-asahi, του προγράμματος οδήγησης Rust για τις Apple M1 και M2 GPU, υποδηλώνοντας μια σύγκλιση στην υποδομή των προγραμμάτων οδήγησης γραφικών γραμμένων σε Rust.
Η χρήση της γλώσσας Η σκουριά σε αυτή την εξέλιξη δεν είναι τυχαία, αφού η Rust προσφέρει μηχανισμούς που διευκολύνουν την αναθεώρηση και την ανακατασκευή, γεγονός που συμβάλλει στη μεγαλύτερη σταθερότητα του έργου. Η υιοθέτηση αυτής της γλώσσας στον πυρήνα του Linux ανταποκρίνεται σε μια ευρύτερη στρατηγική που επιδιώκει να εκσυγχρονίσει τη συγγραφή λειτουργιών και να κάνει την ανάπτυξη πιο προσιτή σε νέους συνεισφέροντες.
Αυτή δεν είναι η μόνη συνεχής προσπάθεια ενσωμάτωσης του Rust στον πυρήνα. Άλλα προγράμματα οδήγησης και συστήματα αναπτύσσονται αυτήν τη στιγμή σε αυτήν τη γλώσσα, όπως το πρόγραμμα οδήγησης Apple AGX GPU, η υποστήριξη αποθήκευσης NVMe, το σύστημα αρχείων PuzzleFS και διάφορες εφαρμογές ασφάλειας και διαχείρισης συσκευών. Η τάση προς το Rust συνεχίζει να κερδίζει δυναμική στο οικοσύστημα Linux, σηματοδοτώντας μια σημαντική αλλαγή στον τρόπο με τον οποίο αντιμετωπίζεται η ασφάλεια και η σταθερότητα στην ανάπτυξη πυρήνα λειτουργικών συστημάτων.
Φάσεις υλοποίησης
Επί του παρόντος, Η Nova βρίσκεται στην πρώτη φάση υλοποίησης, ενσωματώθηκε nova-core, μια ενότητα με περίπου 400 γραμμές κώδικα που καθορίζει τις απαραίτητες αφαιρέσεις για την επικοινωνία με το υλικολογισμικό GSP. Μαζί με το nova-core, έχουν προστεθεί και βασικοί σύνδεσμοι για ενσωμάτωση με το υλικολογισμικό NVIDIA.
Αξίζει να σημειωθεί ότι, Η Nova είχε αρχικά προγραμματιστεί να φτάσει στο Linux 6.14 με μια μονάδα nova-core που αποτελείται από 232 γραμμές κώδικα, αλλά τελικά δεν συμπεριλήφθηκε επειδή ο Greg Kroah-Hartman ανέφερε ορισμένες λεπτομέρειες που χρειαζόταν γυάλισμα.
Με τη νέα επιβεβαίωση ότι πλέον θα συμπεριληφθεί, Τώρα ο ελεγκτής θα προχωρήσει στις επόμενες φάσεις στο οποίο σχεδιάζεται να προστεθεί:
- nova-drm: ένα πρόγραμμα οδήγησης DRM (Direct Rendering Manager) για τη διαχείριση της αλληλεπίδρασης με τη GPU από το χώρο χρήστη.
- VFIO με vGPU manager: θα επιτρέψει τη χρήση εικονικών GPU της NVIDIA σε περιβάλλοντα εικονικοποίησης.
Τέλος, είναι σημαντικό να διευκρινιστεί ότι η Nova eΣτην τρέχουσα κατάστασή του, δεν είναι λειτουργικός ελεγκτής και ότι το αποστέλλονται μπαλώματα Αποτελούν μόνο τη βάση για την έναρξη της ανάπτυξης του ελεγκτή, δηλαδή είναι ο κώδικας που θα θέσει τα θεμέλια για μελλοντική ανάπτυξη.