Nova, το νέο πρόγραμμα οδήγησης γραμμένο σε Rust από την Red Hat για GPU της NVIDIA

Nova

Το Nova είναι ένα νέο πρόγραμμα οδήγησης πυρήνα Direct Rendering Manager (DRM) γραμμένο σε Rust

Από τότε που η Nvidia κυκλοφόρησε τις μονάδες πυρήνα της Η GPU ως ανοιχτού κώδικα, φαινόταν ότι τόσο το ιδιόκτητο πρόγραμμα οδήγησης Nvidia όσο και το πρόγραμμα οδήγησης ανοιχτού κώδικα Nouveau θα είχαν μεγάλες βελτιώσεις με τις συνεισφορές που θα μπορούσε να κάνει η κοινότητα και μάλιστα κάποια στιγμή Το Nouveau θα μπορούσε να είναι στο ύψος του καθήκοντος.

Μετά από αρκετούς μήνες και Η ανάπτυξη Nouveau θα επιβραδυνθεί, η Red Hat έχει αναλάβει δράση για το θέμα και πρόσφατα ανακοίνωσε την είδηση ​​ότι εργάζεται στο έργο Nova, το οποίο παρουσιάζεται ως νέο ανοιχτό πρόγραμμα οδήγησης για NVIDIA GPU που αναπτύσσεται στο Rust.

Αυτός ο οδηγός περιλαμβάνει λειτουργίες προετοιμασίας και ελέγχου GPU στο υλικολογισμικό, χρησιμοποιώντας έναν αυτόνομο μικροελεγκτή GSP. Η Nova έχει σχεδιαστεί ως λειτουργική μονάδα για τον πυρήνα Linux και χρησιμοποιεί το υποσύστημα DRM (Direct Rendering Manager). Αυτό το έργο θεωρείται συνέχεια της ανάπτυξης του προγράμματος οδήγησης Nouveau για GPU με υλικολογισμικό GSP.

Ο Danilo Krummrich (Red Hat) εξηγεί:

Με τη Nova έχουμε την ευκαιρία να μειώσουμε σημαντικά την πολυπλοκότητα σε σχέση με τη Nouveau, για δύο βασικούς λόγους. Πρώτα απ 'όλα, η ιστορική αρχιτεκτονική Nouveau, ειδικά γύρω από το nvif/nvkm, είναι αρκετά περίπλοκη και άκαμπτη και απαιτεί μια σημαντική αναθεώρηση για την επίλυση ορισμένων ζητημάτων. Στη συνέχεια, θέλουμε επίσης να εκμεταλλευτούμε την ευκαιρία για να συνεισφέρουμε στις προσπάθειες της Rust στον πυρήνα και να επωφεληθούμε από την αυξημένη ασφάλεια μνήμης που προσφέρει η γλώσσα προγραμματισμού Rust.

Επιπλέον, αναφέρεται ότι με την ανάπτυξη της Nova, Η Red Hat σκοπεύει να εκμεταλλευτεί την ευκαιρία για να συνεισφέρει στις προσπάθειες της Rust στον πυρήνα, καθώς όπως αναφέρθηκε ο κωδικός προγράμματος οδήγησης είναι γραμμένος σε Rust και χρησιμοποιεί πολλά επίπεδα για την ανάπτυξη προγραμμάτων οδήγησης βίντεο σε αυτή τη γλώσσα. Για παράδειγμα, το πρόγραμμα οδήγησης χρησιμοποιεί αφαιρέσεις από τον κλάδο Rust-Device για τη δημιουργία προγραμμάτων οδήγησης, στοιχεία από τον κλάδο Rust-Pci για εργασία με τον δίαυλο PCI και συνδέσεις για τα υποσυστήματα DRM και GEM από τον κλάδο Rust-DRM.

Αναφέρεται επίσης η ανάπτυξη του προγράμματος οδήγησης drm-asahi Rust για επεξεργαστές γραφικών γραφικών Apple M1 και M2 chip. Η χρήση του Rust αναμένεται να αυξήσει την ασφάλεια και την αξιοπιστία του προγράμματος οδήγησης μειώνοντας την πιθανότητα σφαλμάτων κατά την εργασία με μνήμη και επιτρέποντας τον συνδυασμό εργασίας στο πρόγραμμα οδήγησης βίντεο με την ανάπτυξη κοινών στοιχείων στο Rust.

Ο σκοπός από τη Nova είναι γίνει τελικά πρόγραμμα οδήγησης ανοιχτού κώδικα για το NVIDIA Linux, που απευθύνεται σε GPU Turing και νεότερα μοντέλα (ειδικά στη σειρά RTX 2000) που υποστηρίζουν GSP. Αυτός ο νέος ελεγκτής αναπτύσσεται στο Rust για να επιτύχει μεγαλύτερη ελαφρότητα και ευελιξία, η οποία παρουσιάζεται ως μια πολλά υποσχόμενη επιλογή.

Ένας οι λόγοι για τη δημιουργία ενός νέου ελεγκτή είναι η απλοποίηση της διαδικασίας σε σύγκριση με το Nouveau, χάρη στη χρήση έτοιμων προς χρήση προγραμμάτων οδήγησης που παρέχονται από το υλικολογισμικό GSP. Αυτό αποφεύγει την περιττή πολυπλοκότητα στον κώδικα του προγράμματος οδήγησης Nouveau, ο οποίος πρέπει να υποστηρίζει παλαιότερες GPU της NVIDIA και εισάγει ζητήματα όπως σφάλματα στον κώδικα VMM/MMU. Με την ανάπτυξη της Nova από την αρχή και την εστίαση μόνο σε GPU που βασίζονται σε GSP, ελπίζουμε να αποφύγουμε αυτά τα προβλήματα και επιπλοκές.

Από την άλλη πλευρά, η Red Hat αναφέρει επίσης ορισμένα από τα σημεία που πρέπει να αντιμετωπίσει, λέγοντας ότι με την επιλογή του Rust, το πρώτο πρόβλημα που πρέπει να λυθεί είναι η έλλειψη δεσμευτικών αφαιρέσεων C για την υποδομή του πυρήνα από άκρο σε άκρο:

"π.χ. αφαιρέσεις συσκευών/οδηγών... χρειαζόμαστε έναν χρήστη για τις αφαιρέσεις ανάντη, αλλά χρειαζόμαστε επίσης τις αφαιρέσεις για να δημιουργήσουμε ένα πρόγραμμα οδήγησης - θέλουμε να αναπτύξουμε τη Nova upstream και να ξεκινήσουμε με ένα στέλεχος που χρησιμοποιεί μόνο μερικές αφαιρέσεις Rust βασικά.

τελικά αν είσαι ενδιαφέρεται να μάθει περισσότερα για αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο, καθώς και συμβουλευτείτε την ανάπτυξη και συμβουλευτείτε τον πηγαίο κώδικα αυτού στο αποθετήριο σας.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.