Ένας εξομοιωτής RISC-V σε μορφή pixel shader που σας επιτρέπει να εκτελείτε Linux στο VRChat

Δημοσιεύτηκαν τα αποτελέσματα ενός πειράματος για την οργάνωση της κυκλοφορίας του Linux μέσα στον εικονικό τρισδιάστατο χώρο του διαδικτυακού παιχνιδιού VRChat για πολλούς παίκτες, το οποίο επιτρέπει τη φόρτωση μοντέλων 3D με τους δικούς τους shader. Για την υλοποίηση της συλληφθείσας ιδέας, δημιουργήθηκε ένας εξομοιωτής της αρχιτεκτονικής RISC-V, ο οποίος εκτελέστηκε στην πλευρά της GPU με τη μορφή ενός σκιαδιστή pixel (fragment) (το VRChat δεν υποστηρίζει υπολογιστικούς σκιαδιστές και UAV). Ο κωδικός εξομοιωτή δημοσιεύεται με την άδεια MIT.

Ο εξομοιωτής βασίζεται σε μια υλοποίηση στη γλώσσα C, η δημιουργία της οποίας, με τη σειρά της, χρησιμοποίησε τις εξελίξεις του μινιμαλιστικού εξομοιωτή riscv-rust, που αναπτύχθηκε στη γλώσσα Rust. Ο προετοιμασμένος κώδικας C μεταφράζεται σε ένα εικονοστοιχείο shader σε HLSL, κατάλληλο για φόρτωση στο VRChat. Ο εξομοιωτής παρέχει πλήρη υποστήριξη για την αρχιτεκτονική του συνόλου εντολών rv32imasu, τη μονάδα διαχείρισης μνήμης SV32 και ένα ελάχιστο σύνολο περιφερειακών (UART και χρονοδιακόπτη). Οι προετοιμασμένες δυνατότητες είναι αρκετές για να φορτώσετε τον πυρήνα Linux 5.13.5 και το βασικό περιβάλλον γραμμής εντολών BusyBox, με το οποίο μπορείτε να αλληλεπιδράσετε απευθείας από τον εικονικό κόσμο του VRChat.

Ένας εξομοιωτής RISC-V σε μορφή pixel shader που σας επιτρέπει να εκτελείτε Linux στο VRChat
Ένας εξομοιωτής RISC-V σε μορφή pixel shader που σας επιτρέπει να εκτελείτε Linux στο VRChat

Ο εξομοιωτής υλοποιείται στο shader με τη μορφή της δικής του δυναμικής υφής (Unity Custom Render Texture), που συμπληρώνεται από σενάρια Udon που παρέχονται για το VRChat, που χρησιμοποιούνται για τον έλεγχο του εξομοιωτή κατά την εκτέλεσή του. Τα περιεχόμενα της μνήμης RAM και η κατάσταση του επεξεργαστή του εξομοιούμενου συστήματος αποθηκεύονται με τη μορφή υφής, μεγέθους 2048x2048 pixel. Ο εξομοιούμενος επεξεργαστής λειτουργεί σε συχνότητα 250 kHz. Εκτός από το Linux, ο εξομοιωτής μπορεί επίσης να τρέξει το Micropython.

Ένας εξομοιωτής RISC-V σε μορφή pixel shader που σας επιτρέπει να εκτελείτε Linux στο VRChat

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

Όταν εφαρμόζετε σκίαστρους εικονοστοιχείων, εκκινείται μια ξεχωριστή παρουσία σκίασης παράλληλα για κάθε εικονοστοιχείο υφής. Αυτό το χαρακτηριστικό περιπλέκει σημαντικά την υλοποίηση και απαιτεί ξεχωριστό συντονισμό της κατάστασης ολόκληρου του εξομοιούμενου συστήματος και σύγκριση της θέσης του επεξεργασμένου εικονοστοιχείου με την κατάσταση της CPU που κωδικοποιείται σε αυτό ή τα περιεχόμενα της μνήμης RAM του εξομοιούμενου συστήματος (κάθε εικονοστοιχείο μπορεί να κωδικοποιήσει 128 κομμάτια πληροφοριών). Ο κώδικας shader απαιτεί τη συμπερίληψη ενός τεράστιου αριθμού ελέγχων, για να απλοποιηθεί η υλοποίηση των οποίων χρησιμοποιήθηκε ο προεπεξεργαστής perl perlpp.



Πηγή: opennet.ru

Προσθέστε ένα σχόλιο