RISC-V
Σχεδιαστής | Πανεπιστήμιο της Καλιφόρνια (Μπέρκλεϋ) |
---|---|
Bits | 32, 64, 128 |
Κυκλοφόρησε | 6 Αυγούστου 2014[1] |
Έκδοση | |
Σχεδίαση | RISC |
Τύπος | Load–store |
Κωδικοποίηση | Variable |
Διακλάδωση | Σύγκριση και διακλάδωση |
Endianness | Little[2](p9)[α] |
Μέγεθος σελίδας | 4 KiB |
Επεκτάσεις |
|
Ανοιχτός | Ναι |
Καταχωρητές | |
Γενικής χρήσης |
|
Κινητής υποδιαστολής |
|
Το RISC-V (προφέρεται "ρισκ-φάιβ" ) είναι μια αρχιτεκτονική ανοιχτού προτύπου συνόλου εντολών (ISA) που βασίζεται σε καθιερωμένες αρχές υπολογιστή μειωμένου συνόλου εντολών (RISC). Σε αντίθεση με τις περισσότερα άλλα ISA, το RISC-V παρέχεται με άδειες ανοιχτού κώδικα χωρίς δικαιώματα εκμετάλλευσης. Πολλές εταιρείες προσφέρουν ή έχουν ανακοινώσει υλικό RISC-V. Διατίθενται λειτουργικά συστήματα ανοιχτού κώδικα με υποστήριξη RISC-V και το σύνολο εντολών υποστηρίζεται σε πολλές δημοφιλείς αλυσίδες εργαλείων λογισμικού.
Το έργο ξεκίνησε το 2010 στο Πανεπιστήμιο της Καλιφόρνιας, στο Μπέρκλεϋ. Υπάρχουν τώρα μέλη σε περισσότερες από 70 χώρες που συμβάλλουν και συνεργάζονται για τον καθορισμό των ανοιχτών προδιαγραφών RISC-V. Η RISC-V International, η μη κερδοσκοπική εταιρεία που διαχειρίζεται το RISC, έχει επί του παρόντος την έδρα της στην Ελβετία.[4][5]
Η αρχιτεκτονική πρότυπου συνόλου εντολών (ISA) έχει άδεια λειτουργίας βάσει της Άδειας BSD. Τον Ιούλιο του 2023, το RISC-V, με τη 64-bit παραλλαγή του που ονομάζεται riscv64, συμπεριλήφθηκε ως επίσημη αρχιτεκτονική της μεγάλης διανομής Linux Debian στην ασταθή έκδοσή της. [6][7] Ο στόχος αυτού του έργου ήταν "να είναι έτοιμο το Debian να εγκατασταθεί και να εκτελεσθεί σε συστήματα που εφαρμόζουν μια παραλλαγή του RISC-V ISA". [8]
Επισκόπηση
[Επεξεργασία | επεξεργασία κώδικα]Ως αρχιτεκτονική RISC, το RISC-V ISA είναι μια αρχιτεκτονική load-store. Οι οδηγίες κινητής υποδιαστολής χρησιμοποιούν IEEE 754. Τα αξιοσημείωτα χαρακτηριστικά του RISC-V ISA περιλαμβάνουν: θέσεις πεδίου bit εντολών που επιλέχθηκαν για την απλοποίηση της χρήσης πολυπλέκτη σε μια CPU και μια σταθερή θέση για το bit πρόσημου άμεσων τιμών για επιτάχυνση της επέκτασης προσήμου.
Το σύνολο εντολών έχει σχεδιαστεί για ένα ευρύ φάσμα χρήσεων. Το βασικό σύνολο εντολών έχει σταθερό μήκος εντολών 32-bit φυσικά ευθυγραμμισμένες και το ISA υποστηρίζει επεκτάσεις μεταβλητού μήκους όπου κάθε εντολή μπορεί να έχει μήκος οποιουδήποτε αριθμού πακέτων 16-bit. Οι επεκτάσεις υποστηρίζουν μικρά ενσωματωμένα συστήματα, προσωπικούς υπολογιστές, υπερυπολογιστές με διανυσματικούς επεξεργαστές και παράλληλους υπολογιστές σε μεγάλη κλίμακα.
Η προδιαγραφή του συνόλου εντολών ορίζει παραλλαγές χώρου διευθύνσεων 32-bit και 64-bit. Η προδιαγραφή περιλαμβάνει μια περιγραφή μιας παραλλαγής επίπεδου χώρου διευθύνσεων 128 bit, ως παρέκταση παραλλαγών 32 και 64 bit, αλλά το ISA 128 bit παραμένει "μη παγωμένο" σκόπιμα, επειδή από το 2023, υπάρχει ακόμα μικρή πραγματική εμπειρία με συστήματα μνήμης αυτού του μεγέθους.
Σε αντίθεση με άλλα ακαδημαϊκά σχέδια που συνήθως βελτιστοποιούνται μόνο για την απλότητα της έκθεσης, οι σχεδιαστές σκόπευαν το σύνολο εντολών RISC-V να μπορεί να χρησιμοποιηθεί για πρακτικούς υπολογιστές. Από τον Ιούνιο του 2019, η έκδοση 2.2 του ISA χώρου χρήστη και η έκδοση 1.11 του προνομιούχου ISA έχουν παγώσει, επιτρέποντας τη συνέχιση της ανάπτυξης λογισμικού και υλικού. Το ISA χώρου χρήστη, που μετονομάστηκε τώρα σε Unprivileged ISA, ενημερώθηκε, επικυρώθηκε και παγώθηκε ως έκδοση 20191213. Μια εξωτερική προδιαγραφή εντοπισμού σφαλμάτων είναι διαθέσιμη ως πρόχειρο, με έκδοση 0.13.2.
Λογική
[Επεξεργασία | επεξεργασία κώδικα]Ο σχεδιασμός της CPU απαιτεί τεχνογνωσία σχεδιασμού σε διάφορες ειδικότητες: ηλεκτρονική ψηφιακή λογική, μεταγλωττιστές και λειτουργικά συστήματα. Για να καλύψουν το κόστος μιας τέτοιας ομάδας, εμπορικοί προμηθευτές πνευματικής ιδιοκτησίας επεξεργαστών (IP), όπως η Arm Ltd. και η MIPS Technologies, χρεώνουν δικαιώματα για τη χρήση των σχεδίων, των διπλωμάτων ευρεσιτεχνίας και των πνευματικών δικαιωμάτων τους. [9] [10] [11] Επίσης, συχνά απαιτούν συμφωνίες μη δημοσιοποίησης (NDA) πριν από τη δημοσιοποίηση εγγράφων που περιγράφουν τα λεπτομερή πλεονεκτήματα των σχεδίων τους. Σε πολλές περιπτώσεις, δεν εξηγούν τους λόγους για τις επιλογές τους στη σχεδίαση.
Το RISC-V ξεκίνησε με στόχο να δημιουργήσει ένα πρακτικό ISA που θα ήταν ανοιχτού κώδικα, θα μπορούσε να χρησιμοποιηθεί ακαδημαϊκά και θα μπορούσε να αναπτυχθεί σε οποιοδήποτε σχεδιασμό υλικού ή λογισμικού χωρίς δικαιώματα. [12] Επίσης, εξηγούνται οι σκέψεις για κάθε απόφαση σχεδιασμού του έργου, τουλάχιστον σε γενικές γραμμές. Οι συγγραφείς του RISC-V είναι ακαδημαϊκοί που έχουν ουσιαστική εμπειρία στον σχεδιασμό υπολογιστών και το RISC-V ISA είναι μια άμεση εξέλιξη από μια σειρά ακαδημαϊκών έργων σχεδιασμού υπολογιστών, ειδικά του Berkeley RISC. Το RISC-V αρχικά δημιουργήθηκε και για να βοηθήσει όλα αυτά τα έργα. [12]
Για τη δημιουργία μιας μεγάλης κοινότητας χρηστών και τη συγκέντρωση σχεδίων και λογισμικού, οι σχεδιαστές RISC-V ISA υποστηρίζουν σκόπιμα μια μεγάλη ποικιλία πρακτικών χρήσεων: πυκνότητα, επιδόσεις και χαμηλή κατανάλωση σε πραγματικές υλοποιήσεις χωρίς υπερβολική αρχιτεκτονική για μια δεδομένη μικροαρχιτεκτονική. [13][14] Η μεγάλη βάση από συνεισφέροντες είναι μέρος του λόγου για τον οποίο το RISC-V σχεδιάστηκε για να αντιμετωπίζει πολλές περιπτώσεις χρήσης.
Ο κύριος ισχυρισμός των σχεδιαστών είναι ότι το σύνολο εντολών είναι η βασική διεπαφή σε έναν υπολογιστή καθώς βρίσκεται στη διεπαφή μεταξύ του υλικού και του λογισμικού. Εάν ένα καλό σύνολο οδηγιών ήταν ανοιχτό και διαθέσιμο για χρήση από όλους, τότε μπορεί να μειώσει σημαντικά το κόστος του λογισμικού επιτρέποντας πολύ περισσότερη χρήση. Θα πρέπει επίσης να προκαλέσει αυξημένο ανταγωνισμό μεταξύ των παρόχων υλικού υπολογιστή, οι οποίοι μπορούν στη συνέχεια να αφιερώσουν περισσότερους πόρους για τον σχεδιασμό και λιγότερους για την υποστήριξη λογισμικού.[12]
Οι σχεδιαστές υποστηρίζουν ότι οι νέες αρχές γίνονται σπάνιες στη σχεδίαση συνόλων εντολών, καθώς τα πιο επιτυχημένα σχέδια των τελευταίων σαράντα ετών μοιάζουν όλο και περισσότερο μεταξύ τους. Από αυτές που απέτυχαν, οι περισσότερες ήταν επειδή οι εταιρείες χορηγοί τους ήταν οικονομικά ανεπαρκείς και όχι επειδή τα σύνολα οδηγιών ήταν τεχνικά φτωχά. Έτσι, ένα καλά σχεδιασμένο σύνολο ανοιχτών εντολών που έχει σχεδιαστεί με βάση καθιερωμένες αρχές θα πρέπει να προσελκύει μακροπρόθεσμη υποστήριξη από πολλούς προμηθευτές.[12]
Το RISC-V ενθαρρύνει επίσης την ακαδημαϊκή χρήση. Η απλότητα του ακέραιου υποσυνόλου επιτρέπει βασικές ασκήσεις των μαθητών και είναι ένα αρκετά απλό σύνολο εντολών που επιτρέπει στο λογισμικό να ελέγχει μηχανές για έρευνα. Το ISA μεταβλητού μήκους παρέχει χώρο για επεκτάσεις συνόλου εντολών τόσο για ασκήσεις μαθητών όσο και για έρευνα, και το ξεχωριστό προνομιακό σύνολο εντολών επιτρέπει την έρευνα στην υποστήριξη λειτουργικών συστημάτων χωρίς επανασχεδιασμό μεταγλωττιστών. Το ανοιχτό παράδειγμα πνευματικής ιδιοκτησίας του RISC-V επιτρέπει τη δημοσίευση, επαναχρησιμοποίηση και τροποποίηση παραγώγων σχεδίων.
Ιστορία
[Επεξεργασία | επεξεργασία κώδικα]Ο όρος RISC χρονολογείται από το 1980 περίπου. Πριν από τότε, υπήρχε κάποια γνώση (βλ. John Cocke) ότι οι απλούστεροι υπολογιστές μπορούν να είναι αποτελεσματικοί, αλλά οι αρχές σχεδιασμού δεν περιγράφηκαν ευρέως. Οι απλοί, αποτελεσματικοί υπολογιστές είχαν πάντα ακαδημαϊκό ενδιαφέρον και είχαν ως αποτέλεσμα το σύνολο οδηγιών RISC DLX για την πρώτη έκδοση του Computer Architecture: A Quantitative Approach το 1990 του οποίου ο David Patterson ήταν συν-συγγραφέας, και αργότερα συμμετείχε στην προέλευση RISC- V. Το DLX προοριζόταν για εκπαιδευτική χρήση. Ακαδημαϊκοί και χομπίστες το εφάρμοσαν χρησιμοποιώντας συστοιχίες πυλών με δυνατότητα προγραμματισμού πεδίου (FPGA), αλλά ποτέ δεν προοριζόταν πραγματικά για εμπορική ανάπτυξη. Οι επεξεργαστές ARM, εκδόσεις 2 και προγενέστερες, είχαν ένα σύνολο εντολών δημόσιου τομέα και εξακολουθούν να υποστηρίζονται από τη συλλογή GNU Compiler Collection (GCC), έναν δημοφιλή μεταγλωττιστή ελεύθερου λογισμικού. Υπάρχουν τρεις πυρήνες ανοιχτού κώδικα για αυτό το ISA, αλλά δεν κατασκευάστηκαν ποτέ. Το OpenRISC είναι ένα ISA ανοιχτού κώδικα που βασίζεται στο DLX, με συσχετισμένα σχέδια RISC και υποστηρίζεται πλήρως με από το GCC και το Linux, αν και έχει λίγες εμπορικές υλοποιήσεις.
Ο Krste Asanović στο Μπέρκλεϋ είχε μια απαίτηση έρευνας για ένα σύστημα υπολογιστή ανοιχτού κώδικα και το 2010 αποφάσισε να αναπτύξει και να δημοσιεύσει ένα σε ένα «σύντομο, τρίμηνο έργο το καλοκαίρι» με πολλά από τα μεταπτυχιακούς φοιτητές. Το σχέδιο ήταν να βοηθήσει τόσο τους ακαδημαϊκούς όσο και τους βιομηχανικούς χρήστες.[12] Ο David Patterson στο Berkeley εντάχθηκε στη συνεργασία καθώς ήταν ο δημιουργός του Berkeley RISC, και το RISC-V είναι η ομώνυμη πέμπτη γενιά της μακράς σειράς συνεργατικών ερευνητικών του έργων που βασίζονται στο RISC στο Πανεπιστήμιο της Καλιφόρνια στο Μπέρκλεϋ (RISC -I και RISC-II που δημοσιεύθηκαν το 1981 από τον Patterson, ο οποίος αναφέρεται στην αρχιτεκτονική SOAR από το 1984 ως "RISC-III" και στην αρχιτεκτονική SPUR από το 1988 ως "RISC-IV"). Σε αυτό το στάδιο, οι μαθητές παρείχαν αρχικό λογισμικό, προσομοιώσεις και σχέδια CPU.
Οι δημιουργοί του RISC-V και το ίδρυμά τους προμηθεύτηκαν αρχικά τα έγγραφα ISA [15] και πολλά σχέδια CPU υπό άδειες BSD, που επιτρέπουν σε παράγωγα έργα — όπως τα σχέδια RISC-V— να είναι είτε ανοιχτά και δωρεάν, είτε κλειστά και ιδιόκτητα. Η ίδια η προδιαγραφή ISA (δηλαδή η κωδικοποίηση του συνόλου εντολών) δημοσιεύτηκε το 2011 ως ανοιχτού κώδικα, [16] με την επιφύλαξη όλων των δικαιωμάτων. Η πραγματική τεχνική αναφορά (έκφραση της προδιαγραφής) τέθηκε αργότερα σε άδεια Creative Commons για να επιτρέπεται η βελτίωση από εξωτερικούς συνεργάτες μέσω του Ιδρύματος RISC-V και αργότερα του RISC-V International.
Ένα πλήρες ιστορικό του RISC-V έχει δημοσιευτεί στον ιστότοπο RISC-V International.
Ίδυμα RISC-V και RISC-V International
[Επεξεργασία | επεξεργασία κώδικα]Οι εμπορικοί χρήστες απαιτούν ένα ISA να είναι σταθερό για να μπορέσουν να το χρησιμοποιήσουν σε ένα προϊόν που μπορεί να διαρκέσει πολλά χρόνια. Για την αντιμετώπιση αυτού του ζητήματος, το Ίδρυμα RISC-V ιδρύθηκε το 2015 για να κατέχει, να διατηρεί και να δημοσιεύει πνευματική ιδιοκτησία που σχετίζεται με τον ορισμό του RISC-V. [17]
Σχεδίαση
[Επεξεργασία | επεξεργασία κώδικα]Βάση και επεκτάσεις ISA
[Επεξεργασία | επεξεργασία κώδικα]Το RISC-V έχει αρθρωτό σχεδιασμό, που αποτελείται από εναλλακτικά εξαρτήματα βάσης, με πρόσθετες προαιρετικές επεκτάσεις. Η βάση του ISA και οι επεκτάσεις του αναπτύσσονται σε μια συλλογική προσπάθεια μεταξύ της βιομηχανίας, της ερευνητικής κοινότητας και των εκπαιδευτικών ιδρυμάτων. Η βάση καθορίζει τις οδηγίες (και την κωδικοποίησή τους), τη ροή ελέγχου, τους καταχωρητές (και τα μεγέθη τους), τη μνήμη και τη διευθυνσιοδότηση, τον λογικό (δηλαδή, τον ακέραιο) χειρισμό και τα βοηθητικά στοιχεία. Η βάση από μόνη της μπορεί να εφαρμόσει έναν απλοποιημένο υπολογιστή γενικής χρήσης, με πλήρη υποστήριξη λογισμικού, συμπεριλαμβανομένου ενός μεταγλωττιστή γενικής χρήσης.
Οι τυπικές επεκτάσεις έχουν καθοριστεί να λειτουργούν με όλες τις τυπικές βάσεις και μεταξύ τους χωρίς σύγκρουση.
Πολλοί υπολογιστές RISC-V ενδέχεται να εφαρμόσουν την επέκταση συμπιεσμένων οδηγιών για να μειώσουν την κατανάλωση ενέργειας, το μέγεθος του κώδικα και τη χρήση μνήμης. Υπάρχουν επίσης μελλοντικά σχέδια για υποστήριξη hypervisors και εικονικοποίηση.
Μαζί με την επέκταση hypervisor, S, ένα σύνολο εντολών RVGC, το οποίο περιλαμβάνει ένα από τα σύνολα εντολών βάσης RV, τη συλλογή επεκτάσεων G (που περιλαμβάνει το "I", που σημαίνει ότι η βάση δεν είναι ενσωματωμένη) και την επέκταση C, καθορίζει όλες τις οδηγίες που απαιτούνται για την εύκολη υποστήριξη ενός λειτουργικού συστήματος γενικής χρήσης. (pp129, 154)
Όνομα | Περιγραφή | Version | Κατάσταση | Πλήθος εντολών |
---|---|---|---|---|
Βάση | ||||
RVWMO | Weak Memory Ordering | 2.0 | Επικυρωμένο | |
RV32I | Βασικό σύνολο εντολών ακεραίων, 32-bit | 2.1 | Επικυρωμένο | 40 |
RV32E | Βασικό σύνολο εντολών ακεραίων (ενσοματομένο), 32-bit, 16 καταχηρητές | 2.0 | Επικυρωμένο | 40 |
RV64I | Βασικό σύνολο εντολών ακεραίων, 64-bit | 2.1 | Επικυρωμένο | 15 |
RV64E | Βασικό σύνολο εντολών ακεραίων (ενσοματομένο), 64-bit | 2.0 | Επικυρωμένο | |
RV128I | Βασικό σύνολο εντολών ακεραίων, 128-bit | 1.7 | Ανοιχτό | 15 |
Επέκταση | ||||
M | Πρότυπη επέκταση για πολλαπλασιασμό και διαίρεση ακεραίων | 2.0 | Επικυρωμένο | 8 (RV32)
13 (RV64) |
A | Βασική επέκταση για atomic εντολές | 2.1 | Επικυρωμένο | 11 (RV32)
22 (RV64) |
F | Πρότυπη επέκταση για μονής ακρίβειας κινητή υποδιαστολή | 2.2 | Επικυρωμένο | 26 (RV32)
30 (RV64) |
D | Πρότυπη επέκταση για διπλής ακρίβειας κινητή υποδιαστολή | 2.2 | Επικυρωμένο | 26 (RV32)
32 (RV64) |
Zicsr | Εντολές καταχωρητή ελέγχου και κατάστασης | 2.0 | Επικυρωμένο | 6 |
Zifencei | Instruction-Fetch Fence | 2.0 | Επικυρωμένο | 1 |
G | Συντομογραφία για IMAFD_Zicsr_Zifencei βάση και επεκτάσεις | - | - | |
Q | Πρότυπη επέκταση για τετραπλής ακρίβειας κινητή υποσιαστολή | 2.2 | Επικυρωμένο | 28 (RV32)
32 (RV64) |
L | Πρότυπη επέκταση για δεκαδική κινητή υποδιαστολή | 0.0 | Ανοιχτό | |
C | Πρότυπη επέκταση για συμπιεσμένες εντολές | 2.0 | Επικυρωμένο | 40 |
B | Πρότυπη επέκταση για bit manipulation | 1.0 | Επικυρωμένο | 43[18] |
J | Βασική επέκταση για δυναμικά μεταφραζόμενες γλώσσες | 0.0 | Ανοιχτό | |
T | Πρότυπη επέκταση για transactional memory | 0.0 | Ανοιχτό | |
P | Πρόρυπη επέκταση για Packed-SIMD εντολές | 0.9.10 | Ανοιχτό | |
V | Πρότυπη επέκταση για λειτουργίες διανυσμάτων | 1.0 | Επικυρωμένο | 187[19] |
Zk | Πρότυπη επέκταση για μονόμετρη (scalar) κρυπτογραφία | 1.0.1 | Επικυρωμένο | 49[20] |
H | Πρόυπη επέκταση για hypervisor | 1.0 | Επικυρωμένο | 15 |
S | Πρότυπη επέκταση για εντολές σε επίπεδο supervisor | 1.12 | Επικυρωμένο | 4 |
Zam | Μη ευθυγραμμισμένα Atomics | 0.1 | Ανοιχτό | |
Zihintpause | Pause Hint | 2.0 | Επικυρωμένο | |
Zihintntl | Non-Temporal Locality Hints | 0.3 | Επικυρωμένο | |
Zfa | Επιπλέον εντολές κινητής υποδιαστολής | 1.0 | Επικυρωμένο | |
Zfh | Μισής ακρίβειας κινητή υποδιαστολή | 1.0 | Επικυρωμένο | |
Zfhmin | Ελάχιστη μίσης ακρίβειας κινητή υποδιαστολή | 1.0 | Επικυρωμένο | |
Zfinx | Μονής ακρίβειας κινητή υποδιαστολή σε καταχωρητή ακεραίου | 1.0 | Επικυρωμένο | |
Zdinx | Διπλής ακρίβειας κινητή υποδιαστολή σε καταχωρητή ακεραίου | 1.0 | Επικυρωμένο | |
Zhinx | Μισής ακρίβειας κινητή υποδιαστολή σε καταχωρητή ακεραίου | 1.0 | Επικυρωμένο | |
Zhinxmin | Ελάχιστη μισής ακρίβειας κινητή υποδιαστολή σε καταχωρητή ακεραίου | 1.0 | Επικυρωμένο | |
Zmmul | Υποσύνολο πολλαπλασιαμού της επέκτασης M | 1.0 | Επικυρωμένο | |
Ztso | Total Store Ordering | 1.0 | Επικυρωμένο |
Η βάση, οι υπολογισμοί εκτεταμένου ακέραιου και κινητής υποδιαστολής, με πρωτόκολλα συγχρονισμού για υπολογιστές πολλαπλών πυρήνων, θεωρούνται απαραίτητοι για υπολογιστές γενικής χρήσης, και έτσι έχουμε τη συντομογραφία, "G".
Ένας μικρός υπολογιστής 32-bit για ένα ενσωματωμένο σύστημα μπορεί να είναι RV32EC. Ένας μεγάλος υπολογιστής 64-bit μπορεί να είναι RV64GC, δηλαδή, RV64IMAFDCZicsr_Zifencei.
Με την αύξηση του αριθμού των επεκτάσεων, το πρότυπο προβλέπει τώρα τις επεκτάσεις να ονομάζονται με ένα μόνο "Z" ακολουθούμενο από ένα αλφαβητικό όνομα και έναν προαιρετικό αριθμό έκδοσης. Για παράδειγμα, Zifencei ονομάζει την επέκταση ανάκτησης εντολών. Zifencei2Zifencei2 και Zifencei2p0 όνομα έκδοση 2.0 του ίδιου. Το πρώτο γράμμα που ακολουθεί το "Z" κατά σύμβαση υποδεικνύει την πιο στενά συνδεδεμένη κατηγορία αλφαβητικής επέκτασης, IMAFDQLCBJTPVN. Έτσι, η επέκταση Zam για κακώς ευθυγραμμισμένα άτομα σχετίζεται με την τυπική επέκταση "Α". Σε αντίθεση με τις επεκτάσεις μεμονωμένων χαρακτήρων, οι επεκτάσεις Z πρέπει να διαχωρίζονται με υπογράμμιση, να ομαδοποιούνται ανά κατηγορία και, στη συνέχεια, αλφαβητικά σε κάθε κατηγορία. Για παράδειγμα, Zicsr_Zifencei_Zam .
Οι επεκτάσεις ειδικά για το επίπεδο προνομίων επόπτη ονομάζονται με τον ίδιο τρόπο χρησιμοποιώντας το "S" για το πρόθεμα. Οι επεκτάσεις ειδικά για το επίπεδο hypervisor ονομάζονται χρησιμοποιώντας το "H" για το πρόθεμα. Οι επεκτάσεις επιπέδου μηχανής έχουν το πρόθεμα με τα τρία γράμματα "Zxm". Οι επεκτάσεις συνόλου εντολών επόπτη, υπερεπόπτη και μηχανήματος ονομάζονται από λιγότερο προνομιούχες επεκτάσεις.
Πρόσβαση στη μνήμη
[Επεξεργασία | επεξεργασία κώδικα]Όπως πολλά σχέδια RISC, το RISC-V είναι μια αρχιτεκτονική load-store: οι εντολές διευθύνουν μόνο καταχωρητές, με οδηγίες φόρτωσης και αποθήκευσης που μεταφέρουν δεδομένα από και προς τη μνήμη.
Οι περισσότερες εντολές φόρτωσης και αποθήκευσης περιλαμβάνουν μια μετατόπιση 12-bit και δύο αναγνωριστικά καταχωρητή. Ένας καταχωρητής είναι ο βασικός, ο άλλος είναι ο προορισμός (για ένα load) ή η πηγή (για ένα store).
Υπορουτίνα κλήσεις, άλματα και διακλαδώσεις
[Επεξεργασία | επεξεργασία κώδικα]Η υπορουτίνα κλήσης jal
(άλμα και σύνδεση) του RISC-V τοποθετεί τη διεύθυνση επιστροφής του σε έναν καταχωρητή. Αυτό είναι ταχύτερο σε πολλά σχέδια υπολογιστών, επειδή εξοικονομεί πρόσβαση στη μνήμη σε σύγκριση με συστήματα που ωθούν μια διεύθυνση επιστροφής απευθείας σε μια στοίβα στη μνήμη. jal
έχει μια μετατόπιση 20-bit υπογεγραμμένη (συμπλήρωμα δύο). Η μετατόπιση πολλαπλασιάζεται επί 2 και στη συνέχεια προστίθεται στον υπολογιστή (μετρητής προγράμματος) για να δημιουργηθεί μια σχετική διεύθυνση σε μια εντολή 32 bit. Εάν η διεύθυνση που προκύπτει δεν είναι ευθυγραμμισμένη 32-bit (δηλαδή ομοιόμορφα διαιρούμενη με το 4), η CPU μπορεί να επιβάλει exception.
Οι CPU RISC-V κάνουν άλματα (jump) σε υπολογιζόμενες διευθύνσεις χρησιμοποιώντας μια εντολή jump και link-register, jalr
, παρόμοια με τη jal
, αλλά λαμβάνει τη διεύθυνση προορισμού του προσθέτοντας μια μετατόπιση 12 bit σε έναν βασικό καταχωρητή. Αντίθετα, jal
προσθέτει μεγαλύτερη μετατόπιση 20 bit.
Το RISC-V δεν έχει καταχωρητή κωδικού συνθήκης ή bit μεταφοράς. Οι σχεδιαστές πίστευαν ότι οι κώδικες συνθηκών καθιστούν τις γρήγορες CPU πιο πολύπλοκες επιβάλλοντας τις αλληλεπιδράσεις μεταξύ των εντολών σε διαφορετικά στάδια εκτέλεσης. Αυτή η επιλογή κάνει την αριθμητική πολλαπλής ακρίβειας πιο πολύπλοκη. Επίσης, μερικές αριθμητικές εργασίες χρειάζονται περισσότερη ενέργεια. Ως αποτέλεσμα, η πρόβλεψη (η εκτέλεση εντολών υπό όρους) δεν υποστηρίζεται. Οι σχεδιαστές ισχυρίζονται ότι τα πολύ γρήγορα, εκτός σειράς σχέδια CPU κάνουν πρόβλεψη ούτως ή άλλως, κάνοντας παράλληλα τη διακλάδωση σύγκρισης και τον υπό όρους κώδικα και στη συνέχεια απορρίπτοντας τα εφέ της αχρησιμοποίητης διαδρομής. Ισχυρίζονται επίσης ότι ακόμη και σε απλούστερες CPU, η πρόβλεψη είναι λιγότερο πολύτιμη από την πρόβλεψη διακλάδωσης, η οποία μπορεί να αποτρέψει τους περισσότερους πάγκους που σχετίζονται με διακλαδώσεις υπό όρους. Ο κώδικας χωρίς πρόβλεψη είναι μεγαλύτερος, με περισσότερους κλάδους, αλλά ισχυρίζονται επίσης ότι ένα συμπιεσμένο σύνολο εντολών (όπως το σύνολο C του RISC-V) λύνει αυτό το πρόβλημα στις περισσότερες περιπτώσεις.
Αντίθετα, το RISC-V έχει σύντομους κλάδους που εκτελούν συγκρίσεις: ίσο, μη-ίσο, μικρότερο-από, χωρίς πρόσημο μικρότερο-από, μεγαλύτερο από ή ίσο και χωρίς πρόσημο μεγαλύτερο από ή ίσο. Δέκα πράξεις διακλάδωσης σύγκρισης υλοποιούνται με μόνο έξι εντολές, αντιστρέφοντας τη σειρά των τελεστών στον συμβολομεταφραστή. Για παράδειγμα, η διακλάδωση αν μεγαλύτερο-από μπορεί να γίνει με μικρότερο-από με αντίστροφη σειρά τελεστών.
Οι κλάδοι σύγκρισης έχουν εύρος δώδεκα bit υπογεγραμμένο και που κάνουν άλμα σχετικά με τον υπολογιστή. (pp20–23)
Αριθμητικά και λογικά σύνολα
[Επεξεργασία | επεξεργασία κώδικα]Το RISC-V διαχωρίζει τα μαθηματικά σε ένα ελάχιστο σύνολο ακέραιων εντολών (σύνολο I) με πρόσθεση, αφαίρεση, μετατόπιση, λογική bitwise και σύγκριση-διακλάδωση. Αυτά μπορούν να προσομοιώσουν τα περισσότερα από τα άλλα σύνολα εντολών RISC-V με λογισμικό. (Οι ατομικές εντολές είναι μια αξιοσημείωτη εξαίρεση.) Οι εντολές ακέραιου αριθμού RISC-V δε διαθέτουν τις λειτουργίες πλήθους οδηγών μηδέν και πεδίου bit που χρησιμοποιούνται συνήθως για την επιτάχυνση της κινητής υποδιαστολής λογισμικού σε έναν επεξεργαστή καθαρού ακέραιου αριθμού, Ωστόσο, ενώ ονομαστικά στην επέκταση χειρισμού bit, οι επικυρωμένες επεκτάσεις Zbb, Zba και Zbs περιέχουν περαιτέρω ακέραιες οδηγίες, συμπεριλαμβανομένης μιας εντολής μέτρησης που οδηγεί στο μηδέν.
Λειτουργίες ατομικής μνήμης
[Επεξεργασία | επεξεργασία κώδικα]Το RISC-V υποστηρίζει υπολογιστές που μοιράζονται τη μνήμη μεταξύ πολλών CPU και νημάτων. Το τυπικό μοντέλο συνέπειας μνήμης του RISC-V είναι η συνέπεια απελευθέρωσης. Δηλαδή, τα φορτία και οι χώροι αποθήκευσης μπορούν γενικά να αναδιαταχτούν, αλλά ορισμένα φορτία μπορεί να χαρακτηριστούν ως λειτουργίες λήψης που πρέπει να προηγούνται των μεταγενέστερων προσβάσεων στη μνήμη και ορισμένες αποθήκες μπορεί να οριστούν ως λειτουργίες αποδέσμευσης που πρέπει να ακολουθούν προηγούμενες προσβάσεις στη μνήμη.
Packed SIMD
[Επεξεργασία | επεξεργασία κώδικα]Οι οδηγίες Packed-SIMD χρησιμοποιούνται ευρέως από εμπορικές CPU για να επιταχύνουν φθηνά την επεξεργασία πολυμέσων και άλλης ψηφιακής επεξεργασίας σήματος. Για απλά συστήματα RISC-V με μειωμένο κόστος, η βασική προδιαγραφή ISA πρότεινε τη χρήση των δυαδικών ψηφίων των καταχωρητών κινητής υποδιαστολής για την εκτέλεση παράλληλων μεμονωμένων εντολών, αριθμητικής υπο-λέξεων πολλαπλών δεδομένων (SIMD).
Διάνυσμα σύνολο
[Επεξεργασία | επεξεργασία κώδικα]Το προτεινόμενο σύνολο εντολών επεξεργασίας διανύσματος μπορεί να καταστήσει το γεμάτο σύνολο SIMD ξεπερασμένο. Οι σχεδιαστές ελπίζουν να έχουν αρκετή ευελιξία ώστε μια CPU να μπορεί να εφαρμόσει διανυσματικές οδηγίες σε τυπικούς καταχωρητές επεξεργαστή. Αυτό θα επέτρεπε ελάχιστες υλοποιήσεις με παρόμοια απόδοση με ένα ISA πολυμέσων, όπως παραπάνω. Ωστόσο, ένας πραγματικός διανυσματικός συνεπεξεργαστής θα μπορούσε να εκτελέσει τον ίδιο κώδικα με υψηλότερη απόδοση. [21]
Από τις 19 Σεπτεμβρίου 2921, η επέκταση διανυσμάτων είναι στην έκδοση 1.0.[22] Είναι ένα συντηρητικό, ευέλικτο σχέδιο ενός γενικού σκοπού επεξεργαστή διανυσμάτων μικτής ακρίβειας, κατάλληλο να εκτελεί υπολογισμούς πυρήνα. Ο κώδικας μπορεί να μεταφερθεί σε άλλους επεξεργαστές εύκολα με διαφορετικά μήκη διανυσμάτων, ιδανικά χωρίς να χρειάζεται να ξαναγίνει η μεταγλώττιση.[21]
Αντίθετα, οι επεκτάσεις SIMD μικρού διανύσματος είναι λιγότερο βολικές. Αυτά χρησιμοποιούνται σε x86, ARM και PA-RISC. Σε αυτά, μια αλλαγή στο πλάτος λέξης αναγκάζει μια αλλαγή στο σύνολο εντολών για την επέκταση των διανυσματικών καταχωρητών (στην περίπτωση του x86, από καταχωρητές MMX 64-bit σε επεκτάσεις SIMD ροής 128-bit (SSE), σε 256-bit Advanced Vector Extensions (AVX) και AVX-512 ). Το αποτέλεσμα είναι ένα αυξανόμενο σύνολο εντολών και μια ανάγκη μεταφοράς κώδικα εργασίας στις νέες οδηγίες.
Υλοποιήσεις
[Επεξεργασία | επεξεργασία κώδικα]Ο οργανισμός RISC-V διατηρεί μια λίστα με υλοποιήσεις RISC-V CPU και SoC. [23] Λόγω εμπορικών πολέμων και πιθανών κυρώσεων που θα εμπόδιζαν την Κίνα από την πρόσβαση σε ιδιόκτητους ISA, από το 2023 η χώρα σχεδίαζε να μετατοπίσει τις περισσότερες από τις αρχιτεκτονικές της CPU και MCU σε πυρήνες RISC-V. [24]
Το 2023, η Ευρωπαϊκή Ένωση παρείχε 270 εκατομμύρια ευρώ στο πλαίσιο της λεγόμενης Συμφωνίας Πλαίσιο Συνεργασίας (FPA) σε μια μεμονωμένη εταιρεία που ήταν σε θέση και πρόθυμη να πραγματοποιήσει ένα έργο ανάπτυξης CPU RISC-V με στόχο υπερυπολογιστές, διακομιστές και κέντρα δεδομένων. [25] Στόχος της Ευρωπαϊκής Ένωσης ήταν να ανεξαρτητοποιηθεί από τις πολιτικές εξελίξεις σε άλλες χώρες και να «ενδυναμώσει την ψηφιακή της κυριαρχία και να θέσει πρότυπα, αντί να ακολουθεί αυτά των άλλων». [26]
Σημειώσεις
[Επεξεργασία | επεξεργασία κώδικα]Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ Asanović, Krste; Patterson, David A. (August 6, 2014). «Instruction Sets Should Be Free: The Case For RISC-V». EECS Department, University of California, Berkeley. UCB/EECS-2014-146. http://www2.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-146.pdf.
- ↑ 2,0 2,1 2,2 Waterman, Andrew· Asanović, Krste, επιμ. (Δεκεμβρίου 2019). «The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 20191213» (PDF). RISC-V Foundation. Ανακτήθηκε στις 5 Νοεμβρίου 2021.
- ↑ Waterman, Andrew· Asanović, Krste (3 Δεκεμβρίου 2021). «The RISC-V Instruction Set Manual Volume II: Privileged Architecture Document Version 20211203» (PDF). RISC-V International. Ανακτήθηκε στις 5 Νοεμβρίου 2021.
- ↑ «About RISC-V, RISC-V International is the global non-profit home of the open standard RISC-V Instruction Set Architecture (ISA)». RISC-V International.
- ↑ «RISC-V To Move HQ to Switzerland Amid Trade War Concerns». EE Times Europe. 28 Νοεμβρίου 2019.
- ↑ «RISC-V - Debian Wiki». wiki.debian.org. Ανακτήθηκε στις 13 Αυγούστου 2024.
- ↑ «riscv64 is now an official architecture». lists.debian.org. Ανακτήθηκε στις 13 Αυγούστου 2024.
- ↑ «RISC-V - Debian Wiki». wiki.debian.org. Ανακτήθηκε στις 13 Αυγούστου 2024.
- ↑ Demerjian, Chuck (7 Αυγούστου 2013). «A long look at how ARM licenses chips: Part 1». SemiAccurate. Αρχειοθετήθηκε από το πρωτότυπο στις 24 Οκτωβρίου 2022. Ανακτήθηκε στις 17 Αυγούστου 2024.
- ↑ Demerjian, Chuck (8 Αυγούστου 2013). «How ARM licenses its IP for production: Part 2». SemiAccurate. Αρχειοθετήθηκε από το πρωτότυπο στις 25 Οκτωβρίου 2022. Ανακτήθηκε στις 17 Αυγούστου 2024.
- ↑ «Wave Computing Closes Its MIPS Open Initiative with Immediate Effect, Zero Warning». 15 Νοεμβρίου 2019.
- ↑ 12,0 12,1 12,2 12,3 12,4 Asanović, Krste. «Instruction Sets Should be Free» (PDF). U.C. Berkeley Technical Reports. Regents of the University of California. Ανακτήθηκε στις 15 Νοεμβρίου 2016.
- ↑ Celio, Christopher· Love, Eric. «riscv-sodor: educational microarchitectures for risc-v isa». GitHub. Regents of the University of California. Ανακτήθηκε στις 25 Οκτωβρίου 2019.
- ↑ Celio, Christopher. «CS 152 Laboratory Exercise 3» (PDF). UC Berkeley. Regents of the University of California. Αρχειοθετήθηκε από το πρωτότυπο (PDF) στις 12 Φεβρουαρίου 2015. Ανακτήθηκε στις 12 Φεβρουαρίου 2015.
- ↑ Asanović, Krste. «The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA» (PDF). U.C. Berkeley Technical Reports. Regents of the University of California. Ανακτήθηκε στις 13 Μαΐου 2011.
- ↑ Hruska, Joel (21 August 2014). «RISC rides again: New RISC-V architecture hopes to battle ARM and x86 by being totally open source». ExtremeTech. https://www.extremetech.com/computing/188405-risc-rides-again-new-risc-v-architecture-hopes-to-battle-arm-and-x86-by-being-totally-open-source.
- ↑ «A new blueprint for microprocessors challenges the industry's giants». The Economist. 2019-10-03. ISSN 0013-0613. https://www.economist.com/science-and-technology/2019/10/03/a-new-blueprint-for-microprocessors-challenges-the-industrys-giants. Ανακτήθηκε στις 2019-11-10.
- ↑ «Bit-Manipulation ISA-extensions» (PDF). RISC-V International. Νοεμβρίου 2021.
- ↑ «Vector Extension». RISC-V International. Νοεμβρίου 2021.
- ↑ «RISC-V Cryptography Extensions Volume I Scalar & Entropy Source Instructions» (PDF). GitHub. 18 Φεβρουαρίου 2022. Ανακτήθηκε στις 28 Ιανουαρίου 2023.
- ↑ 21,0 21,1 Schmidt, Colin· Ou, Albert· Lee, Yunsup· Asanović, Krste. «RISC-V Vector Extension Proposal» (PDF). RISC-V. Regents of the University of California. Ανακτήθηκε στις 14 Μαρτίου 2016.
- ↑ «Release Vector Extension 1.0, frozen for public review · riscv/Riscv-v-spec». GitHub.
- ↑ «RISC-V Cores and SoC Overview». RISC-V. 25 Σεπτεμβρίου 2019. Ανακτήθηκε στις 5 Οκτωβρίου 2019.
- ↑ «China Is All In on a RISC-V Future». 8 Ιανουαρίου 2024. Ανακτήθηκε στις 7 Μαΐου 2024.
- ↑ online, heise (21 Δεκεμβρίου 2022). «270 Millionen Euro für CPUs und Beschleuniger: EuroHPC fördert RISC-V-Technik». heise online (στα Γερμανικά). Ανακτήθηκε στις 13 Αυγούστου 2024.
- ↑ «A Europe fit for the digital age - European Commission». commission.europa.eu (στα Αγγλικά). 19 Φεβρουαρίου 2020. Ανακτήθηκε στις 13 Αυγούστου 2024.
Εξωτερικοί σύνδεσμοι
[Επεξεργασία | επεξεργασία κώδικα]- Πολυμέσα σχετικά με το θέμα RISC-V στο Wikimedia Commons