RISC-V
Designer | Universität von Kalifornien, Berkeley |
---|---|
Bits | 32, 64, 128 |
Eingeführt | 2010 |
Ausführung | |
Entwurf | RISC |
Typ | Ladengeschäft |
Codierung | Variable |
Verzweigung | Vergleiche und Branch |
Endiangess | Wenig[1]: 9[3] |
Seitengröße | 4 Kib |
Erweiterungen |
|
Offen | Ja, lizenzfrei |
Register | |
Allgemeiner Zweck |
|
Schwimmender Punkt |
|
Risc-v (ausgesprochen "Risiko-Five"[1]: 1 wo fünf bezieht sich auf die Anzahl der Generationen von RISC die Architektur das wurden am entwickelt an der Universität von Kalifornien, Berkeley Seit 1981[4]) ist ein offener Standard Anweisungsset Architektur (ISA) basierend auf etablierten RISC -Prinzipien. Im Gegensatz zu den meisten anderen ISA-Designs wird RISC-V unter zur Verfügung gestellt Open Source -Lizenzen Das erfordert keine Gebühren. Eine Reihe von Unternehmen bietet RISC-V-Hardware an oder hat angekündigt, Open Source-Betriebssysteme mit RISC-V-Support sind verfügbar, und der Anweisungssatz wird in mehreren beliebten Software unterstützt Toolchains.
Als RISC-Architektur ist die RISC-V ISA a Last -Store -Architektur. Seine schwebenden Punktanweisungen verwenden IEEE 754 Schwimmpunkt. Bemerkenswerte Merkmale des RISC-V-ISA umfassen Anweisungsbit-Field-Standorte, die zur Vereinfachung der Verwendung von von vereinfacht werden Multiplexer in einer CPU,[1]: 17 ein Design, das architektonisch neutral und meist signifikant ist unmittelbare Werte an einer festen Stelle zur Geschwindigkeit platziert Zeichenerweiterung.[1]: 17
Der Befehlssatz ist für eine Vielzahl von Verwendungsmöglichkeiten ausgelegt. Der Basisanweisungssatz hat eine feste Länge von 32-Bit Natürlich ausgerichtete Anweisungen, und die ISA unterstützt variable Länge Erweiterungen, bei denen jede Anweisung eine beliebige Anzahl von sein kann 16-Bit Parzellen in Länge.[1]: 7–10 Untergruppen Support Small eingebettete Systeme, persönliche Computer, Supercomputer mit Vektorprozessoren und Lagerstättenskala 19 Zoll Rack-Montiert Parallele Computer.
Die Anweisungssatzspezifikation definiert 32-Bit und 64-Bit Adressraum Varianten. Die Spezifikation enthält eine Beschreibung von a 128-Bit Flat-Adress-Raum-Variante als Extrapolation von 32 und 64 Bitvarianten, aber der 128-Bit-ISA bleibt absichtlich "nicht gefroren", da es noch so wenig praktische Erfahrungen mit so großen Speichersystemen gibt.[1]: 41
Das Projekt begann 2010 an der University of California in Berkeley, aber jetzt sind viele aktuelle Mitwirkende Freiwillige, die nicht mit der Universität verbunden sind.[5] Im Gegensatz zu anderen akademischen Entwürfen, die normalerweise nur für die Einfachheit der Exposition optimiert werden, beabsichtigten die Designer, dass der RISC-V-Unterrichtssatz für praktische Computer verwendet werden kann. Ab Juni 2019 ist Version 2.2 des Benutzerraums ISA[6] und Version 1.11 der privilegierten ISA[2] sind gefrorenErmöglichen der Software- und Hardwareentwicklung, um fortzufahren. Der Benutzerraum ISA, der jetzt in der nicht privilegierten ISA umbenannt wurde, wurde aktualisiert, ratifiziert und als Version 20191213 gefroren.[1] Eine externe Debug -Spezifikation ist als Entwurf erhältlich, Version 0.13.2.[7]
Begründung
CPU -Design Benötigt Design -Expertise in mehreren Spezialitäten: elektronisch Digitale Logik, Compiler, und Betriebssysteme. Um die Kosten eines solchen Teams zu decken, kommerzielle Anbieter von Computerdesigns, wie z. Arm Ltd. und MIPS -Technologien, aufladen Lizenzgebühren Für die Verwendung ihrer Entwürfe, Patente und Urheberrechte.[8][9][10] Sie benötigen auch oft Geheimhaltungsvereinbarungen Vor der Veröffentlichung von Dokumenten, die die detaillierten Vorteile ihrer Entwürfe beschreiben. In vielen Fällen beschreiben sie nie die Gründe für ihre Designentscheidungen.
RISC-V wurde mit dem Ziel begonnen, eine praktische ISA zu erstellen, die offen, akademisch und in einem Hardware- oder Softwaredesign ohne Lizenzgebühren eingesetzt und eingesetzt werden konnte.[1]: 1[11] Außerdem werden zumindest in großem Umfang die Begründung für jede Designentscheidung des Projekts erläutert. Die RISC-V-Autoren sind Akademiker, die über umfassende Erfahrung im Computerdesign verfügen, und die RISC-V ISA ist eine direkte Entwicklung aus einer Reihe von akademischen Computer-Design-Projekten, insbesondere aus Berkeley Risc. RISC-V stammte teilweise, um alle diese Projekte zu unterstützen.[1]: 1[11]
Um eine große, kontinuierliche Community von Benutzern aufzubauen und damit Designs und Software zu sammeln, unterstützen die RISC-V-ISA-Designer absichtlich eine Vielzahl praktischer Anwendungsfälle[1]: 1–2, 153–154[12] ohne zu übergreifend für eine gegebene Mikroarchitektur.[1]: 1[13][14][15] Die Anforderungen einer großen Basis von Mitwirkenden sind Teil des Grundes, warum RISC-V so konstruiert wurde, dass viele mögliche Verwendungszwecke angegangen werden.
Die primäre Behauptung der Designer ist, dass der Befehlssatz die Schlüsselschnittstelle in einem Computer ist, da er sich an der Schnittstelle zwischen Hardware und Software befindet. Wenn ein guter Anweisungssatz offen und für alle verfügbar war, kann er die Softwarekosten drastisch senken, indem sie weitaus mehr Wiederverwendung ermöglicht. Es sollte auch einen verstärkten Wettbewerb zwischen Hardwareanbietern auslösen, die dann mehr Ressourcen für das Design und weniger für die Softwareunterstützung widmen können.[11]
Die Designer behaupten, dass neue Prinzipien im Unterrichtssatz für das Design der Unterrichtsstörung immer selten sind, da die erfolgreichsten Designs der letzten vierzig Jahre immer ähnlicher geworden sind. Von denjenigen, die scheiterten, taten dies die meisten, weil ihre Sponsor -Unternehmen finanziell erfolglos waren, nicht weil die Unterrichtssets technisch schlecht waren. Ein gut konzipiertes offenes Unterrichtssatz, das mit gut etablierten Prinzipien entwickelt wurde, sollte daher eine langfristige Unterstützung vieler Anbieter anziehen.[11]
RISC-V fördert auch den akademischen Gebrauch. Die Einfachheit der Integer -Untergruppe ermöglicht grundlegende Schülerübungen und ist ein einfacher ISA, um die Software zu ermöglichen, Forschungsgeräte zu steuern. Die ISA mit variabler Länge bietet Raum für Unterrichtssatzerweiterungen für Schülerübungen und Forschung.[1]: 7 und der getrennte privilegierte Anweisungssatz ermöglicht die Forschung in der Unterstützung des Betriebssystems, ohne Compiler neu zu gestalten.[16] Das offene geistiges Eigentumsparadigma von RISC-V ermöglicht die Veröffentlichung, Wiederverwendung und Veränderung der Derivatentwürfe.[17]
Geschichte
Der Begriff RISC Daten von ungefähr 1980.[18] Vorher gab es einige Kenntnisse, dass einfachere Computer wirksam sein können (z. B.,, John Cocke bei IBM -Forschung), aber die Designprinzipien wurden nicht weit verbreitet. Einfache, effektive Computer waren schon immer von akademischem Interesse und führten zum RISC -Unterrichtssatz DLX für die erste Ausgabe von Computerarchitektur: Ein quantitativer Ansatz im Jahr 1990 davon David Patterson war Co-Autor, und später nahm er an der Entstehung von RISC-V teil. DLX war für den Bildungsgebrauch gedacht; Akademiker und Hobbyisten implementierten es mit Verwendung Feldprogrammierbare Gate-Arrays, aber es war nie wirklich für den kommerziellen Einsatz gedacht. ARM CPUs, Versionen 2 und früher, hatten einen Unterrichtssatz für öffentliche Domänen und werden weiterhin von der unterstützt GNU Compiler -Sammlung (GCC), eine beliebte gratis Software Compiler. Drei Open-Source Kerne existieren für diese ISA, wurden aber nie hergestellt.[19][20] OpenRISC ist eine Open-Source-ISA, die auf DLX basiert, mit assoziierten RISC-Designs und wird mit GCC und voll unterstützt Linux Implementierungen, obwohl es auch nur wenige kommerzielle Implementierungen gibt.
Krste Asanović An der University of California, Berkeley, hatte er eine Forschung für ein Open-Source-Computersystem und entschloss sich 2010, ein "kurzes, dreimonatiges Projekt über den Sommer" mit mehreren seiner Doktoranden zu entwickeln und zu veröffentlichen . Der Plan war es, sowohl akademische als auch industrielle Nutzer zu helfen.[11] David Patterson in Berkeley trat der Zusammenarbeit bei, als er der Urheber des Berkeley Risc,[18] Und der RISC-V ist die gleichnamige fünfte Generation seiner langen Reihe kooperativer RISC-basierter Forschungsprojekte. Zu diesem Zeitpunkt stellten die Schüler erste Software-, Simulationen- und CPU -Designs zur Verfügung.[5]
Die RISC-V-Autoren und ihre Institution haben ursprünglich die ISA-Dokumente bezogen[21] und mehrere CPU -Designs unter BSD -Lizenzen, die ermöglichen Ableitungen-wie Risc-V-Chip-Designs-entweder offen und frei oder geschlossen und proprietär. Die ISA -Spezifikation selbst (d. H. Die Codierung des Anweisungssatzes) wurde 2011 als Open Source veröffentlicht.[22] mit allen Rechten vorbehalten. Der tatsächliche technische Bericht (ein Ausdruck der Spezifikation) wurde später unter a platziert Creative Commons License Verbesserung durch externe Mitwirkende durch die RISC-V Foundation und später RISC-V International.
Eine vollständige Geschichte von RISC-V wurde auf der Internationaler RISC-V-Website veröffentlicht.[23]
RISC-V Foundation und RISC-V International
Kommerzielle Benutzer benötigen eine ISA, um stabil zu sein, bevor sie sie in einem Produkt verwenden können, das viele Jahre dauern kann. Um dieses Problem anzugehen, wurde die RISC-V-Stiftung im Jahr 2015 gegründet, um geistiges Eigentum in Bezug auf die Definition von RISC-V zu besitzen, zu pflegen und zu veröffentlichen.[24] Die ursprünglichen Autoren und Eigentümer haben ihre Rechte der Stiftung übergeben.[25] Die Stiftung wird vom CEO geleitet Calista Redmond, der 2019 die Rolle übernahm, nachdem sie offene Infrastrukturprojekte bei der Leitung von Projekten bei IBM.[26]
Im November 2019 gab die RISC-V Foundation bekannt, dass sie umziehen würde Schweizunter Berufung auf Bedenken hinsichtlich der US -Handelsvorschriften.[27] Ab März 2020 wurde die Organisation zum RISC-V International ernannt, einer schweizerischen gemeinnützigen Business Association.[28]
Ab 2019[aktualisieren], RISC-V International veröffentlicht frei die Dokumente, die RISC-V definieren, und ermöglicht die uneingeschränkte Verwendung des ISA für das Design von Software und Hardware. Nur Mitglieder von RISC-V International können jedoch stimmen, um Änderungen zu genehmigen, und nur Mitgliedsorganisationen verwenden die Markenzeichen Kompatibilitätslogo.[25]
Auszeichnungen
- 2017: Der Choice Award der Linley Group für die beste Technologie (für den Anweisungssatz)[29]
Entwurf
ISA -Basis und Erweiterungen
RISC-V hat ein modulares Design, das aus alternativen Basisteilen besteht, mit zusätzlichen optionalen Erweiterungen. Die ISA -Basis und ihre Erweiterungen werden in einer kollektiven Bemühungen zwischen Industrie, Forschungsgemeinschaft und Bildungseinrichtungen entwickelt. Die Basis gibt Anweisungen (und ihre Codierung), Steuerfluss, Register (und ihre Größen), Speicher und Adressierung, logische (d. H. Ganzzahl) Manipulation und Nebenregare an. Allein die Basis kann einen vereinfachten allgemeinen Computer mit vollständiger Softwareunterstützung implementieren, einschließlich eines allgemeinen Compilers.
Die Standardverlängerungen werden so angegeben, dass sie mit allen Standardbasen und miteinander ohne Konflikte arbeiten.
Viele RISC-V-Computer können die Erweiterung der komprimierten Anweisungen implementieren, um den Stromverbrauch, die Codegröße und den Speichergebrauch zu verringern.[1]: 97–99 Es gibt auch zukünftige Pläne zur Unterstützung Hypervisoren und Virtualisierung.[16]
Zusammen mit einer Aufsichtsanweisungssatzerweiterung definiert s ein RVGC alle Anweisungen, die erforderlich sind, um einen allgemeinen Zweck bequem zu unterstützen Betriebssystem.
Name | Beschreibung | Ausführung | Status[a] | Anweisungsanzahl |
---|---|---|---|---|
Base | ||||
Rvwmo | Schwache Speicherordnung | 2.0 | Ratifiziert | |
Rv32i | Basisgleger-Befehlssatz, 32-Bit | 2.1 | Ratifiziert | 40 |
Rv32e | Basisgleger-Befehlssatz (eingebettet), 32-Bit, 16 Register | 1.9 | Offen | 40 |
Rv64i | Basisbefehlsanweisungssatz, 64-Bit | 2.1 | Ratifiziert | 15 |
Rv128i | Basisbefehlsanweisungssatz, 128-Bit | 1.7 | Offen | 15 |
Verlängerung | ||||
M | Standardverlängerung für Ganzzahl -Multiplikation und Abteilung | 2.0 | Ratifiziert | 8 ( RV32) / 13 ( Rv64)) |
EIN | Standardverlängerung für Atomanweisungen | 2.1 | Ratifiziert | 11 ( RV32) / 22 ( Rv64)) |
F | Standardverlängerung für ein Prezisions-Schwimmpunkt | 2.2 | Ratifiziert | 26 ( RV32) / 30 ( Rv64)) |
D | Standardverlängerung für den Gleitpunkt doppelte Präzision | 2.2 | Ratifiziert | 26 ( RV32) / 32 ( Rv64)) |
ZICSR | Steuer- und Statusregister (CSR) | 2.0 | Ratifiziert | 6 |
Zifecei | Anleitungsfänen | 2.0 | Ratifiziert | 1 |
G | Abkürzung für die Basis und Erweiterung der IMAFDZICSR Zifecei, die einen Standard-Allzweck-ISA darstellen soll | — | - | |
Q | Standardverlängerung für Quad-Precision-Gleitkomma | 2.2 | Ratifiziert | 28 ( RV32) / 32 ( Rv64)) |
L | Standardverlängerung für Dezimalerschwimmpunkte | 0,0 | Offen | |
C | Standardverlängerung für komprimierte Anweisungen | 2.0 | Ratifiziert | 40 |
B | Standardverlängerung für die Bitmanipulation | 1.0 | Ratifiziert | 43[30] |
J | Standarderweiterung für dynamisch übersetzte Sprachen | 0,0 | Offen | |
T | Standardverlängerung für den Transaktionsspeicher | 0,0 | Offen | |
P | Standardverlängerung für Anweisungen mit gepackten SIMD | 0.9.10 | Offen | |
V | Standardverlängerung für Vektoroperationen | 1.0 | Ratifiziert | 187[31] |
K | Standardverlängerung für die Skalarkryptographie | 1.0.1 | Ratifiziert | 49 |
N | Standarderweiterung für Interrupts auf Benutzerebene | 1.1 | Offen | 3 |
H | Standardverlängerung für Hypervisor | 1.0 | Ratifiziert | 15 |
S | Standardverlängerung für Anweisungen auf Supervisorebene | 1.12 | Ratifiziert | 4 |
Zam | Falsch ausgerichtete Atomik | 0,1 | Offen | |
ZTSO | Gesamtgeschäftsbestellung | 0,1 | Gefroren |
- ^ Von gefrorenen Teilen wird erwartet, dass sie ihre endgültige Funktionset haben und nur Erläuterungen erhalten, bevor sie ratifiziert werden.
Format | Bisschen | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Register/Register | funct7 | RS2 | RS1 | funct3 | Rd | Opcode | ||||||||||||||||||||||||||
Sofort | Imm [11: 0] | RS1 | funct3 | Rd | Opcode | |||||||||||||||||||||||||||
Obere unmittelbare | IMM [31:12] | Rd | Opcode | |||||||||||||||||||||||||||||
Speichern | Imm [11: 5] | RS2 | RS1 | funct3 | Imm [4: 0] | Opcode | ||||||||||||||||||||||||||
Zweig | [12] | Imm [10: 5] | RS2 | RS1 | funct3 | Imm [4: 1] | [11] | Opcode | ||||||||||||||||||||||||
Springen | [20] | Imm [10: 1] | [11] | Imm [19:12] | Rd | Opcode | ||||||||||||||||||||||||||
|
Um die Kombinationen von Funktionen zu zähmen, die implementiert werden können, wird eine Nomenklatur definiert, um sie in Kapitel 27 der derzeit ratifizierten, nicht privilegierten ISA -Spezifikation anzugeben. Die Befehlssatzbasis wird zunächst angegeben und codiert für RISC-V, die Register-Bit-Width und die Variante. z.B., Rv64i oder Rv32e. Anschließend folgt Briefen, die implementierte Erweiterungen in der Reihenfolge der obigen Tabelle angegeben haben. Auf jeden Brief kann ein Major optional von "P" und einer kleinen Optionsnummer gefolgt werden. Es ist standardmäßig 0, wenn eine Nebenversionsnummer fehlt, und 1.0, wenn alle Versionsnummer nicht vorhanden sind. Daher Rv64imafd kann geschrieben werden als Rv64i1p0m1p0a1p0f1p0d1p0 oder einfacher als Rv64i1m1a1f1d1. Unterstriche können beispielsweise zwischen Erweiterungen zur Lesbarkeit verwendet werden Rv32i2_m2_a2.
Die Basis-, erweiterte Ganzzahl- und Gleitkomma-Berechnungen sowie die Synchronisationsprimitive für Multi-Core-Computing, die Basis und die Erweiterungen MAFD werden für die allgemeine Berechnung als notwendig angesehen und haben somit die Kurzschrift, G.
Ein kleiner 32-Bit-Computer für eine Eingebettetes System könnte sein Rv32ec. Ein großer 64-Bit-Computer könnte sein RV64GC; d.h. Rv64imafdczicsr_zifencei.
Mit dem Wachstum der Anzahl der Erweiterungen sieht der Standard nun die Erweiterungen von einem einzigen "z" an, gefolgt von einem alphabetischen Namen und einer optionalen Versionsnummer. Zum Beispiel, Zifecei Benennt die Erweiterung der Anweisungen. Zifencei2 und Zifencei2p0 Nennen Sie Version 2.0 desselben. Der erste Buchstaben nach der "z" nach Übereinkommen zeigt die am engsten verwandte alphabetische Erweiterungskategorie an. IMAFDQLCBJTPVN. Somit bezieht sich die ZAM -Erweiterung für falsch ausgerichtete Atomik auf die "A" -Standard -Erweiterung. Im Gegensatz zu Extensionen der einzelnen Zeichen müssen Z -Erweiterungen durch Unterstriche getrennt, nach Kategorie und dann in jeder Kategorie alphabetisch gruppiert werden. Zum Beispiel, ZICSR_ZIFENCEI_ZAM.
Erweiterungen, die für den Aufsichtsberechtigungsstufe spezifisch sind, werden mit "S" für das Präfix genauso benannt. Erweiterungen für Hypervisor -Ebene werden unter Verwendung von "H" für Präfix benannt. Die Erweiterungen der Maschinenebene werden mit den drei Buchstaben "ZXM" vorangestellt. Die Anweisungsverlängerung des Supervisors, Hypervisors und Maschinenebene werden nach weniger privilegierten Erweiterungen benannt.
RISC-V-Entwickler können ihre eigenen nicht standardmäßigen Anweisungssatzerweiterungen erstellen. Diese folgen der Namenskonvention "Z", jedoch mit "x" als Präfix. Sie sollten nach allen Standardverlängerungen angegeben werden, und wenn mehrere nicht standardmäßige Erweiterungen aufgeführt sind, sollten sie alphabetisch aufgeführt werden.
Profile und Plattformen
Profile und Plattformen für Standard -ISA -Auswahllisten werden diskutiert.
... Diese Flexibilität kann verwendet werden, um ein spezielles Design stark zu optimieren, indem nur die genauen Satz von ISA -Funktionen für eine Anwendung erforderlich ist. Die gleiche Flexibilität führt jedoch auch zu einer kombinatorischen Explosion bei möglichen ISA -Auswahlmöglichkeiten. Profile geben eine viel kleinere gemeinsame Reihe von ISA -Auswahlmöglichkeiten an, die für die meisten Benutzer den größten Wert erfassen und damit der Software -Community die Ressourcen auf den Aufbau eines reichhaltigen Software -Ökosystems konzentrieren können.[32]
Die Plattformspezifikation definiert eine Reihe von Plattformen, die Anforderungen für die Interoperabilität zwischen Software und Hardware festlegen. Die Plattformrichtlinie definiert die verschiedenen in dieser Plattformspezifikation verwendeten Begriffe. Die Plattformpolitik enthält auch die erforderlichen Details zu Umfang, Abdeckung, Benennung, Versioning, Struktur, Lebenszyklus und Kompatibilitätsansprüchen für die Plattformspezifikation.[33]
Registrieren Sie Sets
Registrieren Name | Symbolisch Name | Beschreibung | Gerettet von |
---|---|---|---|
32 ganze Zahl Register | |||
x0 | Null | Immer Null | |
x1 | ra | Absender | Anrufer |
x2 | sp | Stapelzeiger | Callee |
x3 | GP | Globaler Zeiger | |
x4 | tp | Fadenzeiger | |
x5 | t0 | Temporäre / alternative Rückgabemitteladresse | Anrufer |
x6–7 | T1–2 | Vorübergehend | Anrufer |
x8 | S0/FP | Speicherner Register- / Frame -Zeiger | Callee |
x9 | S1 | Gespeichertes Register | Callee |
x10–11 | A0–1 | Funktionsargument / Rückgabewert | Anrufer |
x12–17 | A2–7 | Funktionsargument | Anrufer |
x18–27 | S2–11 | Gespeichertes Register | Callee |
x28–31 | T3–6 | Vorübergehend | Anrufer |
32 Schwimmpunkt Verlängerungsregister | |||
F0–7 | ft0–7 | Schwimmpunkte vorübergehend | Anrufer |
F8–9 | FS0–1 | Schwimmpunkte gerettete Register | Callee |
F10–11 | FA0–1 | Schwimmpunktargumente/Rückgabewerte | Anrufer |
F12–17 | FA2–7 | Schwimmende Punkte Argumente | Anrufer |
F18–27 | FS2–11 | Schwimmpunkte gerettete Register | Callee |
F28–31 | ft8–11 | Schwimmpunkte vorübergehend | Anrufer |
RISC-V hat 32 (oder 16 in der eingebetteten Variante) ganze Zahl Register und, wenn die Gleitkomma-Erweiterung implementiert wird, separat 32 Schwimmpunkt Register. Mit Ausnahme von Anweisungen für Speicherzugriffsanweisungen befassen sich die Anweisungen nur Register.
Das erste Ganzzahlregister ist ein Nullregister, und der Rest sind allgemeine Register. Ein Speicher in das Nullregister hat keinen Einfluss, und eine Lektüre stellt immer 0 vor. Die Verwendung des Nullregisters als Platzhalter sorgt für einen einfacheren Anweisungssatz.
move rx to ry
wird add immediate 0 to rx and store in ry
.[1]: 18
Kontroll- und Statusregister existieren, aber Benutzer-Mode-Programme können nur auf diejenigen zugreifen, die für die Leistungsmessung und das Schwimmpunktmanagement verwendet werden.
Es gibt keine Anweisungen zum Speichern und Wiederherstellen mehrerer Register. Diese wurden als unnötig, zu komplex und vielleicht zu langsam angesehen.[17]
Speicherzugriff
Wie viele RISC-Designs ist RISC-V a Last -Store -Architektur: Anweisungen werden nur Register ansprechen, wobei Last- und Speicheranweisungen Daten zum und vom Speicher enthalten.
Die meisten Ladungs- und Speicheranweisungen umfassen einen 12-Bit-Offset und zwei Registerkennungen. Ein Register ist das Basisregister. Das andere Register ist die Quelle (für ein Speicher) oder ein Ziel (für eine Last).
Der Offset wird einem Basisregister hinzugefügt, um die Adresse zu erhalten.[1]: 24 Durch die Bildung der Adresse als Basisregister plus Offset können einzelne Anweisungen auf Datenstrukturen zugreifen. Wenn das Basisregister beispielsweise auf einen Stapel zeigt, können einzelne Anweisungen im Stapel auf die lokalen Variablen eines Unterprogramms zugreifen. Ebenso können die Last- und Speicheranweisungen auf eine Aufzeichnungsstruktur oder ein mit Speicherkarta abgebildeter E/A-Gerät zugreifen. Durch die Verwendung des Registers mit konstantem Zero als Basisadresse können einzelne Anweisungen in der Nähe von Adressnull zugreifen.
Der Speicher wird als 8-Bit-Bytes behandelt, wobei Anweisungen in der Little-Endian bestellen,[1]: 9–10 und mit Daten in der Byte -Reihenfolge, die von der Ausführungsumgebung der Umgebung definiert ist, in der Code ausgeführt wird.[1]: 3, 9–10, 24 Wörter bis zur Registergröße können mit den Anweisungen für Last und Speichern zugegriffen werden.
RISC-V wurde ursprünglich als Little-Endian spezifiziert, um beispielsweise anderen bekannten, erfolgreichen Computern zu ähneln. x86.[1]: 9–10 Dies reduziert auch die Komplexität einer CPU und kostet leicht, da sie alle Wörtergrößen in derselben Reihenfolge liest. Zum Beispiel decodiert der RISC-V-Befehlssatz mit dem am niedrigsten adressierten Byt der Anweisung. Big-Endian- und Bi-Endian-Varianten wurden zur Unterstützung von Legacy-Code-Grundlagen definiert, die eine Big-Endian-Ausrichtung annehmen.[1]: 9–10
Eine Ausführungsumgebungsinterface kann es ermöglichen, auf Zugriffsspeicheradressen nicht an ihrer Wortbreite ausgerichtet zu werden, sondern auf ausgerichtete Adressen zugreifen, können möglicherweise schneller sein. Beispielsweise kann ein einfacher CPUs nicht ausgerichtete Zugriffe mit langsamer Software -Emulation implementieren, die von einem Ausrichtungsversagen unterrupt wurde.[1]: 3, 24–25
Wie viele RISC -Anweisungssätze (und einige andere Komplexer Befehlssatz Computer (CISC) Anweisungssätze wie z. x86 und IBM System/360 und seine Nachfolger durch Z/Architektur), Risc-V fehlen Adressmodes, die an die Register zurückschreiben. Zum Beispiel ist es nicht automatisch inkrementiert.[1]: 24
RISC-V verwaltet Speichersysteme, die zwischen CPUs oder gemeinsam genutzt werden Themen Durch die Gewährleistung eines Ausführungsthreads wird immer seine Speicheroperationen in der programmierten Reihenfolge festgelegt. Zwischen Threads und I/O-Geräten ist RISC-V jedoch vereinfacht: Es garantiert nicht die Reihenfolge der Speichervorgänge, außer durch spezifische Anweisungen wie z. fence
.
A fence
Anweisungen garantiert, dass die Ergebnisse des Vorgängerbetriebs für den Nachfolgerbetrieb anderer Threads oder E/A -Geräte sichtbar sind. fence
Kann die Reihenfolge der Kombinationen sowohl von Speicher- als auch von Speicher-abgebildeten E/A-Operationen garantieren. Z.B. Es kann Speicherlesen- und Schreibvorgänge trennen, ohne die E/A -Operationen zu beeinflussen. Oder wenn ein System E/A -Geräte parallel zum Speicher bedienen kann, fence
zwingt sie nicht, aufeinander zu warten. Eine CPU mit einem Thread kann dekodieren fence
wie nop
.
Einige RISC -CPUs (wie z. MIPS, Powerpc, DLXund Berkeleys RISC-I) Platzieren Sie 16 Bit Offset in den Lasten und Geschäften. Sie stellten die oberen 16 Bits durch a Laden Sie das obere Wort Anweisung. Dies ermöglicht es, die oberen Halbword-Werte leicht festzulegen, ohne Bits zu verschieben. Die meiste Verwendung der oberen Halbwortanweisung macht jedoch 32-Bit-Konstanten wie Adressen. RISC-V verwendet a Sparc-ähnliche Kombination von 12-Bit-Offsets und 20-Bit obere setzen Anweisungen. Der kleinere 12-Bit-Offset hilft kompakt, 32-Bit-Last- und Speichern von Anweisungen auszuwählen, die zwei von 32 Registern ausgewählt haben und dennoch über genügend Bits verfügen, um die Befehlscodierung von RISC-V zu unterstützen.[1]: 16
Unmittelbar
RISC-V verarbeitet 32-Bit-Konstanten und adressiert mit Anweisungen, die die oberen 20 Bit eines 32-Bit-Registers festlegen. Last obere unmittelbare lui
lädt 20 Bit in die Teile 31 bis 12. Dann eine zweite Anweisung wie z. addi
kann die unteren 12 Bit einstellen. Kleine Zahlen oder Adressen können gebildet werden, indem das Nullregister statt von verwendet wird lui
.
Diese Methode wird erweitert, um zuzulassen Positionsunabhängiger Code durch Hinzufügen einer Anweisung, auipc
Dies erzeugt 20 obere Adressbits, indem ein Offset zum Programmzähler hinzugefügt und das Ergebnis in ein Basisregister gespeichert wird. Dies ermöglicht ein Programm, um 32-Bit-Adressen zu generieren, die relativ zum Programmzähler sind.
Das Basisregister kann häufig als IS mit den 12-Bit-Offsets der Lasten und Geschäfte verwendet werden. Wenn benötigt, addi
Kann die unteren 12 Bit eines Registers einstellen. In 64-Bit- und 128-Bit-ISAs,lui
und auipc
Vergrößern Sie das Ergebnis, um die größere Adresse zu erhalten.[1]: 37
Einige schnelle CPUs können Kombinationen von Anweisungen als Single interpretieren verschmolzen Anweisungen. lui
oder auipc
kann gute Kandidaten sein, mit denen sie verschmelzen können addi
, Ladungen oder Geschäfte.
Unterroutine -Anrufe, Sprünge und Zweige
Unterroutine-Anruf von RISC-V jal
(Sprung und Link) legt seine Absenderadresse in ein Register ein. Dies ist in vielen Computerdesigns schneller, da es einen Speicherzugriff im Vergleich zu Systemen speichert, die eine Renditeadresse direkt auf einen Stapel im Speicher verschieben. jal
Hat eine 20-Bit-Unterschrift (Zwei ergänzt) Offset. Der Offset wird mit 2 multipliziert und dann zum PC hinzugefügt, um eine relative Adresse zu einer 32-Bit-Anweisung zu generieren. Wenn sich das Ergebnis nicht an einer 32-Bit-Adresse befindet (d. H. Durch 4 gleichmäßig teilbar), kann die CPU eine erzwingen Ausnahme.[1]: Abschnitt 2.5
Risc-V-CPUs springen zu berechneten Adressen mit a Sprung- und Linkregister, jalr
Anweisung. jalr
ist ähnlich wie jal
, erhält aber die Zieladresse, indem ein 12-Bit-Offset zu einem Basisregister hinzugefügt wird. (Im Gegensatz,jal
Fügt dem PC einen größeren 20-Bit-Versatz hinzu.)
jalr
Das Bitformat ist wie die Register-Relativlasten und -Speores. Wie sie, jalr
kann mit den Anweisungen verwendet werden, die die oberen 20 Bit eines Basisregisters festlegen, um 32-Bit lui
) oder ein PC-relatives (mit Verwendung auipc
zum Positionsunabhängiger Code). (Mithilfe einer Basisadresse mit konstanter Null ermöglicht Einzelantriebsaufrufe zu einem kleinen (Offset), festen positiven oder negativen Adresse.)
RISC-V-Recycles jal
und jalr
um bedingungslose 20-Bit-PC-relative Sprünge und bedingungsregistrierende 12-Bit-Sprünge zu erhalten. Sprünge machen einfach das Verknüpfungsregister 0, damit keine Absenderadresse gespeichert wird.[1]: Abschnitt 2.5
RISC-V recycelt auch jalr
Aus einer Unterprogramme zurückkehren: Um dies zu tun, jalr
Das Basisregister ist das von der Verknüpfungsregister gespeicherte Verknüpfungsregister jal
oder jalr
. jalr
Der Offset ist Null und das Verknüpfungsregister ist Null, so dass kein Versatz vorhanden ist und keine Rückgabeadresse gespeichert wird.
Wie bei vielen RISC-Designs muss ein RISC-V-Compiler in einem Unterroutine-Aufruf einzelne Anweisungen verwenden, um Register am Stapel am Start zu speichern und diese dann vom Stapel beim Ausgang aus dem Stapel wieder herzustellen. RISC-V hat keine Mehrfach speichern oder Mehrfach wiederherstellen Anweisungen registrieren. Es wurde angenommen, dass die CPU die CPU zu komplex und möglicherweise langsam machen.[34] Dies kann mehr Coderaum einnehmen. Die Designer wollten die Codegröße mit Bibliotheksroutinen reduzieren, um Register zu sparen und wiederherzustellen.[35]
RISC-V hat keine Bedingungscode Register oder Bit tragen. Die Designer waren der Ansicht, dass Bedingungscodes schnelle CPUs komplexer machen, indem sie Wechselwirkungen zwischen Anweisungen in verschiedenen Ausführungsstadien erzwingen. Diese Auswahl macht mehr Präzisionsarithmetiker komplexer. Außerdem benötigen einige numerische Aufgaben mehr Energie. Als Ergebnis, Prädikation (Die bedingte Ausführung von Anweisungen) wird nicht unterstützt. Die Designer behaupten, dass sehr schnelle CPU-Designs außerhalb der Reihenfolge ohnehin Prädikation durchführen, indem sie den Vergleichszweig und den bedingten Code parallel durchführen und dann die Effekte des ungenutzten Pfades verwerfen. Sie behaupten auch, dass die Prädikation selbst bei einfacherem CPUs weniger wertvoll ist als Zweigvorhersage, was die meisten Stände verhindern kann, die mit bedingten Zweigen verbunden sind. Code ohne Prädikation ist größer, mit mehr Zweigen, aber sie behaupten auch, dass a Komprimierter Befehlssatz (wie Risc-V's Set C) Löst dieses Problem in den meisten Fällen.[17][Fehlgeschlagene Überprüfung]
Stattdessen verfügt RISC-V über kurze Zweige, die Vergleiche durchführen: gleich, nicht gleich, weniger als weniger als weniger als mehr oder gleicher und unsigniertes größeres oder gleiches. Zehn Vergleichs-Branch-Operationen werden mit nur sechs Anweisungen implementiert, indem die Reihenfolge der Operanden in der Umgebung umgekehrt wird Assembler. Zum Beispiel, Zweig, wenn größer als kann von erledigt werden durch weniger als mit einer umgekehrten Reihenfolge der Operanden.[1]: Abschnitt 2.5
Die Vergleichszweige haben einen zwölf-Bit-Signierbereich und springen relativ zum PC.[1]: Abschnitt 2.5
Im Gegensatz zu einigen RISC-Architekturen enthält RISC-V keine a Zweigverzögerungsschlitz, eine Position nach einer Zweiganweisung, die mit einer Anweisung gefüllt werden kann, die ausgeführt wird, unabhängig davon, ob der Zweig genommen wird oder nicht.[1]: Abschnitt 2.5 RISC-V lässt einen Zweig-Verzögerungs-Steckplatz aus, da er Multycle-CPUs, superscalar-CPUs und lange Pipelines kompliziert. Dynamisch Zweigprädiktoren haben gut genug gelungen, um die Notwendigkeit verzögerter Zweige zu verringern.[17]
Bei der ersten Begegnung mit einem Zweig sollte RISC-V-CPUs davon ausgehen, dass ein negativer relativer Zweig (d. H. Das Vorzeichenbit des Versatzes "1" ist).[1]: Abschnitt 2.5 Dies setzt voraus, dass ein Rückwärtszweig eine Schleife ist, und bietet eine Standardrichtung, sodass einfache Pipel -CPUs ihre Anweisungsleitungen füllen können. Abgesehen davon erfordert RISC-V nicht Zweigvorhersage, aber Kernimplementierungen dürfen es hinzufügen. RV32I behält sich einen "Hinweis" -Anweisungsraum vor, der derzeit keine Hinweise auf Zweige enthält.[1]: Abschnitt 2.9 Rv64i macht dasselbe.[1]: Abschnitt 5.4
Arithmetische und logische Sets
RISC-V unterteilt Mathematik in einen minimalen Satz von ganze Zahl Anweisungen (festgelegt I) mit Hinzufügen, Subtrahieren, Verschiebungen, bitweise Logik und Vergleich von Branchen. Diese können die meisten anderen RISC-V-Anweisungssätze mit Software simulieren. (Die Atomanweisungen sind eine bemerkenswerte Ausnahme.) RISC-V fehlt derzeit die Graf Leading Zero und Bitfeldvorgänge, die normalerweise verwendet werden, um die Software-Floating-Punkte in einem reinen Integer-Prozessor zu beschleunigen.
Die Ganzzahl -Multiplikationsanweisungen (festgelegt M) Geben Sie signierte und unsignierte Multiplikationen ein und teilen Sie sie. Ganzzahl mit doppelter Präzision multipliziert sich Hoches Wort des Ergebnisses. Das ISA -Dokument empfiehlt den Implementierern von CPUs und Compilern Sicherung Eine standardisierte Folge von Anweisungen mit hohem und niedrigem Multiplizieren und Teilen von Anweisungen in einen Vorgang, wenn möglich.[1]: 43–45
Das Schwimmpunkt Anweisungen (festgelegt F) Einfacher Präzisionsarithmetik und auch Vergleichsbranchen ähnlich der ganzzahligen Arithmetik. Es erfordert einen zusätzlichen Satz von 32 Floating-Punkt-Registern. Diese sind von den Ganzzahlregistern getrennt. Die Anweisungen für schwimmende Punkte doppelte Präzision (festgelegt D) Im Allgemeinen nehmen die Gleitkomma-Register 64-Bit (d. H. Doppelbreite) und die an F Untergruppe ist mit dem koordiniert D einstellen. Ein Quad-Precision 128-Bit-Gleitkomma-ISA (Q) ist auch definiert.[1]: 63–82 RISC-V-Computer ohne Floating-Punkt können eine Floating-Punkt-Softwarebibliothek verwenden.
RISC-V verursacht nicht Ausnahmen auf arithmetischen Fehlern, einschließlich Überlauf,[1]: 17–20 Unterlauf, subnormal und durch Null unterteilt.[1]: 44–45 Stattdessen erzeugen sowohl ganzzahlige als auch Gleitkomma-Arithmetik angemessene Standardwerte, und die Gleitkommaanweisungen setzen Statusbits.[1]: 66 Divide-by-Null kann nach der Division von einem Zweig entdeckt werden.[1]: 44–45 Die Statusbits können durch ein Betriebssystem oder periodische Interrupt getestet werden.
Atomgedächtnisoperationen
RISC-V unterstützt Computer, die den Speicher zwischen mehreren CPUs und teilen Themen. Das Standard-Speicherkonsistenzmodell von RISC-V ist Freisetzungskonsistenz. Das heißt, Lasten und Geschäfte können im Allgemeinen neu angeordnet werden, aber einige Lasten können als als bezeichnet werden erwerben Vorgänge, die einem späteren Speicherzugriff vorangehen müssen, und einige Geschäfte können als als bezeichnet werden Veröffentlichung Vorgänge, die frühere Speicherzugriffe folgen müssen.[1]: 83–94
Der Basisanweisungssatz enthält minimale Unterstützung in Form von a fence
Anweisung zur Durchsetzung der Speicherbestellung.[1]: 26–27 Obwohl dies ausreicht (fence r, rw
bietet erwerben und fence rw, w
bietet Veröffentlichung), kombinierte Operationen können effizienter sein.[1]: Kapitel 8
Die Erweiterung der Atomspeicherbetrieb unterstützt zwei Arten von Atomspeichervorgängen für die Freisetzungskonsistenz. Erstens bietet es allgemeine Zwecke lastreserviert lr
und Laden-Konditional sc
Anweisungen. lr
führt eine Ladung durch und versucht, diese Adresse für ihren Thread zu reservieren. Ein späterer Laden-Konditional sc
Die reservierte Adresse wird nur ausgeführt, wenn die Reservierung nicht von einem dazwischen liegenden Geschäft von einer anderen Quelle unterbrochen wird. Wenn der Laden erfolgreich ist, wird eine Null in ein Register gelegt. Wenn es fehlgeschlagen ist, gibt ein Wert ungleich Null an, dass die Software den Betrieb wiederholen muss. In beiden Fällen wird die Reservierung freigegeben.[1]: Kapitel 8
Die zweite Gruppe von Atomanweisungen leistet Read-Modify-Write Sequenzen: Eine Last (die optional ein Last-Akquire in ein Zielregister ist, dann ein Betrieb zwischen dem geladenen Wert und einem Quellregister, dann ein Speicher des Ergebnisses (das optional eine Store-Freisetzung sein kann). Machen Sie die Speicherbarrieren optionale Genehmigungen, die die Operationen kombinieren. Die optionalen Vorgänge sind durch aktiviert von erwerben und Veröffentlichung Bits, die in jeder Atomanweisung vorhanden sind. RISC-V definiert neun mögliche Operationen: Swap (den Wert des Quellregisters direkt verwenden); hinzufügen; bitweise und oder exklusiv oder; und signiert und nicht signiert minimal und maximal.[1]: Kapitel 8
Ein Systemdesign kann diese kombinierten Operationen mehr als optimieren als lr
und sc
. Wenn das Zielregister für einen Swap beispielsweise die konstante Null ist, kann die Last übersprungen werden. Wenn der gespeicherte Wert seit der Last nicht modifiziert ist, kann das Geschäft übersprungen werden.[6]: 44
Das IBM System/370 und seine Nachfolger, einschließlich Z/Architektur, und x86, beide implementieren a vergleiche und swap (cas
) Anweisung, die einen Ort im Speicher testet und bedingt aktualisiert: Wenn der Ort einen erwarteten alten Wert enthält, enthält cas
ersetzt es durch einen bestimmten neuen Wert; Es gibt dann einen Hinweis darauf zurück, ob es die Änderung vorgenommen hat. Eine einfache Lastanweisung wird jedoch normalerweise vor dem durchgeführt cas
den alten Wert holen. Das klassische Problem ist, dass wenn ein Thread ein Wert liest (geladen) Aberechnet einen neuen Wert Cund verwendet dann (cas
) ersetzen A mit CEs hat keine Möglichkeit zu wissen, ob die gleichzeitige Aktivität in einem anderen Thread ersetzt wurde A mit einem anderen Wert B und stellte dann die restauriert A zwischen. In einigen Algorithmen (z. B. solche, bei denen die Werte im Speicher Zeiger auf dynamisch zugewiesene Blöcke sind), ist dies ABA -Problem kann zu falschen Ergebnissen führen. Die häufigste Lösung verwendet a doppelte Breite cas
Anweisung zum Aktualisieren des Zeigers und eines angrenzenden Zählers; Leider erfordert eine solche Anweisung ein spezielles Anweisungsformat, um mehrere Register anzugeben, mehrere Lesevorgänge und Schreibvorgänge auszuführen und einen komplexen Busbetrieb zu haben.[1]: 48–49
Das lr
/sc
Alternative ist effizienter. Normalerweise erfordert es nur eine Speicherlast, und es ist wünschenswert, langsame Speichervorgänge zu minimieren. Es ist auch genau: Es steuert alle Zugriffe auf die Speicherzelle, anstatt nur ein bisschen Muster zu gewährleisten. Im Gegensatz zu cas
, es kann zulassen Lebensunterhalt, in denen zwei oder mehr Themen wiederholt die Anweisungen des anderen scheitern lassen. RISC-V garantiert den Fortschritt des Vorlaufs (kein Lebensunterhalt) Wenn der Code die Regeln für das Timing und die Abfolge von Anweisungen befolgt: 1) muss nur die Verwendung der Verwendung des Timings und der Abfolge von Anweisungen I Teilmenge. 2) Um sich wiederholende Cache -Fehler zu vermeiden, darf der Code (einschließlich der Wiederholungsschleife) nicht mehr als 16 aufeinanderfolgende Anweisungen belegen. 3) Es darf keine System- oder Zaunanweisungen enthalten oder zwischen dem rückwärts geraten lr
und sc
. 4) Der Rückwärtszweig zur Wiederholungsschleife muss zur ursprünglichen Sequenz sein.[1]: 48–49
Die Spezifikation enthält ein Beispiel für die Verwendung der read-modify-write Atomanweisungen, um eine Datenstruktur zu sperren.[1]: 54
Komprimierte Untergruppe
Der Standard RISC-V ISA gibt an, dass alle Anweisungen 32 Bit sind. Dies sorgt für eine besonders einfache Implementierung, führt jedoch wie andere RISC-Prozessoren mit 32-Bit-Befehlskodierung zu einer größeren Codegröße als in Anweisungssätzen mit Anweisungen mit variabler Länge.[1]: 99[34]
Um zu kompensieren, RISC-V's 32-Bit Anweisungen sind tatsächlich 30 Bit; 3⁄4 des Opcode Der Platz ist für eine optionale (aber empfohlene) variable Länge reserviert komprimiert Anweisungssatz, RVC, das 16-Bit-Anweisungen enthält. Wie bei Arm's Daumen und der MIPS16 sind die komprimierten Anweisungen einfach Aliase für eine Teilmenge der größeren Anweisungen. Im Gegensatz zu Arms Daumen oder dem MIPS -komprimierten Set war der Raum von Anfang an reserviert, sodass es keinen separaten Betriebsmodus gibt. Standard- und komprimierte Anweisungen können frei verschärft werden.[1]: 97[34] (Erweiterungsbrief ist C.))[1]: 97
Da (wie Thumb-1 und MIPS16) die komprimierten Anweisungen einfach alternative Codierungen (Aliase) für eine ausgewählte Teilmenge größerer Anweisungen sind, kann die Komprimierung im Assembler implementiert werden und es ist nicht wichtig, dass der Compiler überhaupt darüber Bescheid wissen.
Ein Prototyp von RVC wurde 2011 getestet.[34] Der Prototypcode war 20% kleiner als ein x86 PC und MIPS Druckcode und 2% größer als Arm Daumen-2 Code.[34] Es reduzierte sowohl den erforderlichen Cache -Speicher als auch die geschätzte Leistung des Speichersystems erheblich.[34]
Der Forscher beabsichtigte, die Binärgröße des Codes für kleine Computer zu verringern, insbesondere für kleine Computer eingebetteter Computer Systeme. Der Prototyp enthielt 33 der am häufigsten verwendeten Anweisungen, die als kompakte 16-Bit-Formate unter Verwendung von Betriebscodes rekodiert wurden, die zuvor für den komprimierten Satz reserviert waren.[34] Die Komprimierung wurde in der durchgeführt Assembler, ohne Änderungen am Compiler. Komprimierte Anweisungen ließ Felder aus, die häufig Null sind, kleine unmittelbare Werte oder auf Zugriffe zu Teilmengen (16 oder 8) der Register verwendeten. addi
ist sehr häufig und oft komprimierbar.[34]
Ein Großteil der Größe der Größe im Vergleich zum Daumensatz des Arms trat auf, da RISC-V und der Prototyp keine Anweisungen zum Speichern und Wiederherstellen mehrerer Register haben. Stattdessen generierte der Compiler herkömmliche Anweisungen, die auf den Stapel zugreifen. Der Prototyp RVC -Assembler wandelte diese dann häufig in komprimierte Formen um, die halb so groß waren. Dies erforderte jedoch immer noch mehr Coderaum als die ARM -Anweisungen, die mehrere Register speichern und wiederherstellen. Der Forscher schlug vor, den Compiler so zu ändern, dass Bibliotheksroutinen aufgerufen werden, um Register zu speichern und wiederherzustellen. Diese Routinen würden tendenziell in einem Code-Cache bleiben und daher schnell ausgeführt werden, wenn auch wahrscheinlich nicht so schnell wie eine Save-Multiple-Anweisung.[34]
Standard RVC erfordert gelegentliche Verwendung von 32-Bit-Anweisungen. Mehrere nicht standardmäßige RVC-Vorschläge sind abgeschlossen, die keine 32-Bit-Anweisungen erfordern, und sollen höhere Dichten als Standard-RVC aufweisen.[36][37] Ein weiterer Vorschlag baut auf diesen auf und behauptet, auch weniger Codierungsbereiche zu verwenden.[38]
Eingebettete Untergruppe
Ein Anweisungssatz für den kleinsten eingebettet CPUS (SET E) wird auf andere Weise reduziert: Nur 16 der 32 Ganzzahlregister werden unterstützt.[1]: Kapitel 4 Alle aktuellen Erweiterungen können verwendet werden; Es wird eine Gleitkomma-Erweiterung zur Verwendung der Ganzzahlregister für Gleitkommawerte berücksichtigt. Der privilegierte Befehlssatz unterstützt nur Maschinenmodus, Benutzermodus und Speicherschemata, die Basis-und-gebundene Adressverschiebung verwenden.[16]
Die Diskussion ist für ein Mikrocontroller-Profil für RISC-V aufgetreten, um die Entwicklung von tiefgreifend zu erleichtern eingebettete Systeme. Es konzentriert sich auf eine schnellere, einfache C-Sprache-Unterstützung für Interrupts, vereinfachte Sicherheitsmodi und eine vereinfachte Unterstützung Posix Anwendung Binärschnittstelle.[39]
Korrespondenten haben auch kleinere, nicht standardmäßige 16-Bit vorgeschlagen Rv16e ISAs: Mehrere schwerwiegende Vorschläge würden den 16-Bit verwenden C Anweisungen mit 8 × 16-Bit-Registern.[37][36] Ein Witz der Aprilscherze schlug ein sehr praktisches Arrangement vor: Verwenden Sie 16 × 16-Bit-Ganzzahlregister mit dem Standard EIMC ISAs (einschließlich 32-Bit-Anweisungen) Der Witz war zu verwenden Bankwechsel Wenn eine 32-Bit-CPU mit dem größeren Adressraum eindeutig überlegen wäre.[40]
Privilegierter Anweisungssatz
ISA von RISC-V enthält eine separate privilegierte Anweisungssatzspezifikation. Ab August 2019[aktualisieren], Version 1.11 wird von RISC-V International ratifiziert.[2][16]
Version 1.11 der Spezifikation unterstützt verschiedene Arten von Computersystemen:
- Systeme, die nur haben Maschinenmodusvielleicht für eingebettete Systeme,
- Systeme mit beiden Maschinenmodus (für die Supervisor) und Benutzermodus, um Betriebssysteme zu implementieren, die die ausführen Kernel in einem privilegierten Modus.
- Systeme mit Maschinenmodus, Hypervisoren, mehrere Vorgesetzte und Benutzermodes unter jedem Vorgesetzten.
Diese entsprechen ungefähr Systemen mit bis zu vier Ringe von Privilegien und Sicherheit, höchstens: Maschine, Hypervisor, Supervisor und Benutzer. Es wird auch erwartet, dass jede Schicht eine dünne Schicht standardisierter unterstützender Software hat, die mit einer mehr privilegierten Ebene oder Hardware kommuniziert.[16]
Die ISA enthält auch einen Hypervisor -Modus, der ist senkrecht an die Benutzer- und Supervisor -Modi.[41] Die grundlegende Funktion ist ein Konfigurationsbit, das entweder den Code auf Supervisor-Ebene ermöglicht, auf Hypervisor-Register zuzugreifen, oder einen Interrupt für Zugriffe verursacht. Mit diesem Bit können der Supervisor -Modus die von einem Hypervisor benötigte Hardware direkt verarbeiten. Dies vereinfacht die Implementierung von Hypervisoren, die von einem Betriebssystem gehostet werden. Dies ist ein beliebter Modus, in dem Computer im Lagermaßstab ausgeführt werden können. Um nicht veranstaltete Hypervisoren zu unterstützen, kann das Bit dazu führen, dass diese Zugriffe zu einem Hypervisor unterbrechen. Das Design vereinfacht auch die Verschachtelung von Hypervisoren, bei denen ein Hypervisor unter einem Hypervisor läuft und bei Bedarf den Kernel -Hypervisor -Funktionen in seinem eigenen Kernelcode verwendet. Infolgedessen unterstützt die Hypervisor-Form des ISA fünf Modi: Maschine, Supervisor, Benutzer, Supervisor-unter-Hypervisor und User-unter-Hypervisor.
Die privilegierte Anweisungssatzspezifikation definiert ausdrücklich ausdrücklich Hardware- Themen, oder Hirsche. Mehrere Hardware-Threads sind in fähigeren Computern üblich. Wenn ein Thread ins Stocken gerät und auf das Gedächtnis wartet, können andere oft fortfahren. Hardware-Threads können dazu beitragen, die große Anzahl von Registern und Ausführungseinheiten in einem schnellen CPUs außerhalb der Reihenfolge besser zu nutzen. Schließlich können Hardware -Threads eine einfache, leistungsstarke Möglichkeit sein, um zu handhaben Interrupts: Es ist kein Speichern oder Wiederherstellen von Registern erforderlich, einfach einen anderen Hardware -Thread auszuführen. Der einzige in einem RISC-V-Computer benötigte Hardware-Thread ist jedoch Thread Null.[16]
Die vorhandenen Definitionen für Steuerungs- und Statusregister unterstützen die Fehler- und Speicherausnahmen von RISC-V sowie eine kleine Anzahl von Interrupts. Für Systeme mit mehr Interrupts definiert die Spezifikation auch einen Interrupt -Controller. Interrupts beginnen immer auf der höchsten privilegierten Maschinenebene, und die Kontrollregister jeder Ebene haben explizit Weiterleitung Bits, um Interrupts zu weniger privilegiertem Code zu übertragen. Zum Beispiel muss der Hypervisor keine Software einbeziehen, die auf jedem Interrupt ausführt, um einen Interrupt an ein Betriebssystem weiterzuleiten. Stattdessen kann es beim Setup Bits einstellen, um den Interrupt weiterzuleiten.[16]
In der Spezifikation werden mehrere Speichersysteme unterstützt. Nur physisch ist für die einfachsten geeignet eingebettete Systeme. Es gibt auch drei Unix-Stil virtueller Speicher Systeme für Speicher, die in Massen-Storage-Systemen zwischengespeichert werden. Die virtuellen Speichersysteme haben drei Größen mit Adressen mit 32, 39 und 48 Bit. Alle virtuellen Speichersysteme unterstützen 4 KIB-Seiten, mehrstufige Seiten-Tisch-Bäume und verwenden sehr ähnliche Algorithmen, um die Seitentabellenbäume zu wandern. Alle sind entweder für Hardware- oder Software-Seiten-Tisch-Gehen ausgelegt. Um optional die Kosten für Seitenspaziergänge zu senken, können übergroße Seiten Blattseiten in höheren Ebenen des Seitenstabs eines Systems sein. SV32 verfügt über einen zweischichtigen Seitenbaum und unterstützt 4 MIB-Superpages. SV39 verfügt über eine Seitentabelle mit drei Ebenen und unterstützt 2 MIB -Superpages und 1 GIB -Gigapagen. SV48 ist erforderlich, um SV39 zu unterstützen. Es hat auch eine 4-Level-Seitentabelle und unterstützt 2 MIB-Superpages, 1 GIB-Gigapages und 512 Gib-Terapages. Superpages sind an den Seitengrenzen für die nächstniedrigste Größe der Seite ausgerichtet.[16]
Bitmanipulation
Eine nicht genehmigte Bit-Manipulation (B) ISA für RISC-V ist eine laufende Arbeit, die ab Januar 2021 überprüft wird.[42] Gut gemacht, eine Bit-Manipulations-Untergruppe kann kryptografische, grafische und mathematische Operationen helfen. Die im Entwurf dokumentierten Kriterien für die Einbeziehung waren mit RV5-Philosophien und ISA-Formaten, wesentliche Verbesserungen der Codedichte oder Geschwindigkeit (d. H. Mindestens eine 3-gegen-1-Reduzierung der Anweisungen) und erhebliche reale Anwendungen, einschließlich vorab bestehender Compiler Unterstützung. Version 0.93 enthält[43] Anweisungen zum Zählen von führenden Nullen, Zählen von Bits, Logikoperationen mit Negate durchführen, zwei Wörter in ein Register einpacken, min oder max, markieren, ein Bit-Operationen, Schicht, drehen, ein verallgemeinertes Bit-Reverse, Shuffle und Kreuzungsdurchdringungen, verallgemeinerte Orkombinationen, Bitfeldplatz, Extrakt und Ablagerung, Carry-Less-Multiplikum, CRC-Anweisungen, Bitmatrix-Operationen (nur RV64), bedingte Mischung, bedingte Bewegung, Trichterverschiebungen und unsignierte Adressberechnungen.
Die Bit-Manipulation ISA-Extensionen wurden im November 2021 ratifiziert (ZBA, ZBB, ZBC, ZBS).[30]
Packed Simd
Gepackte SIMD-Anweisungen werden von kommerziellem CPUs häufig verwendet, um kostengünstig Multimedia und andere zu beschleunigen digitale Signalverarbeitung.[17] Für einfache, kostenreduzierte RISC-V-Systeme wurde die Spezifikation der Basis-ISA vorgeschlagen, die Bits der Floating-Punkt-Register zu verwenden, um parallele einzelne Anweisungen auszuführen, mehrere Daten (Simd) Sub-Wort-Arithmetik.
Im Jahr 2017 veröffentlichte ein Anbieter einen detaillierteren Vorschlag für die Mailingliste, die als Version 0.1 bezeichnet werden kann.[44] Ab 2019[aktualisieren]Die Effizienz dieses vorgeschlagenen ISA variiert für eine Vielzahl von DSP -Codecs von 2x bis 5x A Basis -CPU.[45] Dem Vorschlag fehlten Anweisungsformate und eine Lizenzaufgabe an RISC-V International, wurde jedoch von der Mailingliste überprüft.[44] Einige unpopuläre Teile dieses Vorschlags waren, dass es einen Bedingungscode hinzugefügt hat, der erste in einem RISC-V-Design, den angrenzenden Register (ebenfalls zuerst) verknüpft und über einen Schleifenzähler verfügt, der in einigen Mikroarchitekturen schwer zu implementieren kann.
Eine frühere, angesehene Implementierung für eine 64-Bit-CPU waren die Multimedia-Anweisungen von PA-RISC: Multimedia -Beschleunigungserweiterungen. Es erhöhte die Leistung der CPU bei digitalen Signalverarbeitungsaufgaben um 48-fach oder mehr und ermöglicht praktische Echtzeitvideos Codecs im Jahr 1995.[46][47] Neben seiner nativen 64-Bit-Mathematik konnte die PA-RISC MAX2-CPU mit mehreren Überlaufmethoden auf vier 16-Bit-Unterwörtern gleichzeitig Arithmetik ausführen. Es könnte auch Subwords in verschiedene Positionen verschieben. PA-RISCs max2 wurde absichtlich vereinfacht. Es fehlte die Unterstützung von 8-Bit- oder 32-Bit-Unterwörtern. Die 16-Bit-Subword-Größe wurde ausgewählt, um die meisten digitalen Signalverarbeitungsaufgaben zu unterstützen. Diese Anweisungen waren kostengünstig zu entwerfen und zu bauen.
Vektor -Set
Die vorgeschlagene Vektorverarbeitung Der Anweisungssatz kann das verpackte machen Simd veraltet einstellen. Die Designer hoffen, genügend Flexibilität zu haben, damit eine CPU Vektoranweisungen in den Registern eines Standardprozessors implementieren kann. Dies würde minimale Implementierungen mit einer ähnlichen Leistung wie oben mit einer Multimedia -ISA ermöglichen. Allerdings ein wahrer Vektor -Koprozessor könnte den gleichen Code mit höherer Leistung ausführen.[48]
Zum 29. Juni 2015[aktualisieren]Der Vektorverarbeitungsvorschlag ist ein konservatives, flexibles Design einer allgemeinen Mischprezision Vektorprozessor, geeignet, um auszuführen Kernel berechnen. Der Code würde mit unterschiedlichen Vektorlängen einfach zu CPUs portieren, idealerweise ohne Neukompilieren.[48]
Im Gegensatz dazu sind Kurzvektor-SIMD-Erweiterungen weniger bequem. Diese werden in verwendet x86, Arm und Pa-risc. In diesen zwingt eine Änderung der Wortbreitungen eine Änderung des Anweisungssatzes, um die Vektorregister (im Fall von x86, von 64-Bit zu erweitern MMX Register bis 128-Bit Streaming -SIMD -Erweiterungen (SSE) bis 256-Bit Advanced Vector Extensions (AVX) und AVX-512). Das Ergebnis ist ein wachsender Anweisungssatz und die Notwendigkeit, Arbeitscode in die neuen Anweisungen zu portieren.
Im RISC-V-Vektor ISA, anstatt die Vektorlänge in der Architektur zu reparieren, einer Anweisung (setvl
) ist verfügbar, die eine angeforderte Größe nimmt und die Vektorlänge auf das Minimum des Hardwarelimits und die angeforderte Größe festlegt. Der RISC-V-Vorschlag ist also eher wie a Cray's Long-Vector-Design oder skalierbare Vektorerweiterung von Arm. Das heißt, jeder Vektor in bis zu 32 Vektoren ist die gleiche Länge.[48]
Die Anwendung gibt die Gesamtvektorbreite an, die er benötigt, und der Prozessor bestimmt die Vektorlänge, die er mit verfügbaren On-Chip-Ressourcen bereitstellen kann. Dies erfolgt in Form einer Anweisung (vsetcfg
) mit vier unmittelbaren Operanden, die die Anzahl der Vektorregister jeder verfügbaren Breite angeben. Die Gesamtzahl darf nicht mehr als die adressierbare Grenze von 32 sein, kann jedoch geringer sein, wenn die Anwendung nicht alle benötigt. Die Vektorlänge wird durch den verfügbaren On-Chip-Speicher begrenzt, geteilt durch die Anzahl der für jeden Eintrag benötigten Speicherbytes. (Es können auch hinzugefügte Hardware-Grenzwerte vorhanden sein, was wiederum SIMD-Implementierungen ermöglichen kann.)[48]
Außerhalb von Vektorschleifen kann die Anwendung die Anzahl der angeforderten Vektorregister null sein, wodurch das Betriebssystem gespeichert wird, um sie aufrechtzuerhalten Kontextschalter.[48]
Die Vektorlänge ist nicht nur architektonisch variabel, sondern auch in der Laufzeit variieren. Um diese Flexibilität zu erreichen, wird der Befehlssatz wahrscheinlich variable Breitendatenpfade und Operationen vom variablen Typ unter Verwendung der polymorphen Überladung verwendet.[48] Der Plan ist, dass diese die Größe und Komplexität des ISA und des Compilers verringern können.[48]
Jüngste experimentelle Vektorprozessoren mit Datenpfaden mit variabler Breite zeigen auch profitable Erhöhungen des Betriebs per: Sekunde (Geschwindigkeit), Fläche (niedrigere Kosten) und Watt (längere Akkulaufzeit).[49]
Im Gegensatz zu einer typischen Moderne GrafikkarteEs gibt keine Pläne, spezielle Hardware zur Unterstützung zur Verfügung zu stellen Branchenprädikation. Stattdessen wird eine niedrigere, kostengünstigere Compiler-basierte Prädikation verwendet.[48][50]
Externes Debug -System
Es gibt eine vorläufige Spezifikation für Hardware-unterstützte Hardware von RISC-V Debugger. Der Debugger wird ein Transportsystem wie gemeinsame Testaktionsgruppe verwenden (Jtag) oder universeller Serienbus (USB) Zugang zu Debug -Registern. Eine Standard -Hardware -Debug -Schnittstelle kann entweder a unterstützen Standardisierte abstrakte Schnittstelle oder Anweisungsfütterung.[51][52]
Ab Januar 2017[aktualisieren]die genaue Form der Abstrakte Schnittstelle bleibt undefiniert, aber die Vorschläge enthalten ein Speicher -kartiertes System mit standardisierten Adressen für die Register von Debug -Geräten oder ein Befehlsregister und ein für das Kommunikationssystem zugängliches Datenregister.[51] Korrespondenten behaupten, dass ähnliche Systeme von verwendet werden von Freizusagen's Hintergrund -Debug -Modus -Schnittstelle (BDM) für einige CPUs, ARM, OpenRISC, und Aeroflex's LEON.[51]
Im AnweisungsfütterungDie CPU verarbeitet eine Debug -Ausnahme, um einzelne Anweisungen auszuführen, die in ein Register geschrieben wurden. Dies kann durch ein Datenveranstalter und ein Modul ergänzt werden, um direkt auf den Speicher zuzugreifen. Durch Anweisungs -Feeding können der Debugger genau so zugreifen wie die Software. Es minimiert auch Änderungen in der CPU und passt sich an viele Arten von CPU an. Dies soll besonders für RISC-V geeignet sein, da es für viele Arten von Computern explizit entwickelt wurde. Mit dem Data-Passing-Register kann ein Debugger eine Datenbewegungsschleife zum RAM schreiben und dann die Schleife ausführen, um Daten mit einer Geschwindigkeit nahe der maximalen Geschwindigkeit des Datenkanals des Debug-Systems in oder aus dem Computer zu verschieben.[51] Korrespondenten sagen, dass ähnliche Systeme von verwendet werden von MIPS -Technologien MIPS, Intel Quark, Tensilica's XTensa, und für Freizusagen Macht ISA CPUs ' Hintergrund -Debug -Modus -Schnittstelle (BDM).[51]
Ein Anbieter schlug ein Hardware -Trace -Subsystem für die Standardisierung vor, spendete ein konformes Design und leitete eine Überprüfung ein.[53][54] Der Vorschlag gilt für ein Hardwaremodul, das die Codeausführung auf den meisten RV5 -CPUs verfolgen kann. Um die Datenrate zu reduzieren und einfachere oder weniger ausgiebige Pfade für die Trace-Daten zu ermöglichen, generiert der Vorschlag keine Trace-Daten, die aus einem binären Bild des Codes berechnet werden können. Es sendet nur Daten, die über das Programm "unbefristbare" Pfade anzeigen, z. B. welche bedingten Zweige aufgenommen werden. Um die Datenraten zu reduzieren, werden Zweige, die berechnet werden können, wie bedingungslose Zweige, nicht verfolgt. Die vorgeschlagene Schnittstelle zwischen dem Modul und der Steuereinheit ist ein logisches Signal für jeden unbefristbaren Anweisungsart. Adressen und andere Daten sind in einem spezialisierten Bus in einer CPU zur Verfügung zu stellen. Die an eine externe Trace -Einheit gesendete Datenstruktur ist eine Reihe von Kurznachrichten mit den erforderlichen Daten. Die Details des Datenkanals werden absichtlich nicht im Vorschlag beschrieben, da mehrere wahrscheinlich sinnvoll sind.
Implementierungen
Die RISC-V-Organisation unterhält eine Liste der RISC-V-CPU- und SOC-Implementierungen.[55]
Vorhandenen
Bestehende proprietäre Implementierungen umfassen:
- Allwinner -Technologie hat die Xuantie C906 -CPU in ihren D1 -Anwendungsprozessor implementiert.[56]
- Andes Technology Corporation, ein Gründungsmitglied von RISC-V International.[57] Die RISC-V-CPU-Familien reichen von winzigen 32-Bit-Kernen bis hin zu fortgeschrittenen 64-Bit-Kernen mit DSP-, FPU-, Vektor-, Linux-, Superscalar- und/oder Multicore-Funktionen.
- Bouffalo Lab hat eine Reihe von MCUs, die auf RISC-V (RV32IMACF, BL60X/BL70X-Serie) basieren.[58]
- CloudBear ist ein Prozessor-IP-Unternehmen, das eigene RISC-V-Kerne für eine Reihe von Anwendungen entwickelt.[59]
- Codasip, Gründungsmitglied von RISC-V International,[57] hat eine Reihe von eingebetteten, leistungsstarken und Anwendungsprozessorkernen entwickelt.[60][61]
- Cortus, ein Gründungsmitglied des RISC-V International, Gründungs-Platin-Mitglied,[57] hat eine Reihe von RISC-V-Implementierungen und ein vollständiges IDE/Toolchain/Debugg-Ökosystem, das es als Teil seines SOC-Designgeschäfts kostenlos anbietet.
- Espresssif hat ihr einen RISC-V ULP-Coprozessor hinzugefügt ESP32-S2 Mikrocontroller.[62] Im November 2020 kündigte Espressif ihren ESP32-C3, einen einkernigen, 32-Bit-Risc-V (RV32IMC) -Basierten MCU an.[63]
- Fraunhofer IPMS war die erste Organisation, die einen RISC-V-Kern entwickelte, der den funktionalen Sicherheitsanforderungen entsprechen kann. Der IP Core EMSA5 ist ein 32-Bit-Prozessor mit einer fünfstufigen Pipeline und ist als Allzweckvariante (EMSA5-GP) und als Sicherheitsvariante (EMSA5-FS) erhältlich ISO 26262 Integritätsniveau der Automobilsicherheit-D Standard.[64]
- Gigadevice hat eine Reihe von MCUs, die auf RISC-V (RV32IMAC, GD32V-Serie) basieren,[65] mit einem von ihnen im Longan Nano Board verwendet, der von einer chinesischen elektronischen Firma hergestellt wurde Sipeed.[66]
- Google hat die entwickelt Titan M2 Sicherheitsmodul für die Pixel 6[67]
- Greenwaves Technologies kündigte die Verfügbarkeit von GAP8, einem 32-Bit-1-Controller plus 8 Compute Cores, 32-Bit SOC (RV32IMC) und dem Entwicklerausschuss im Februar 2018 an. Ihr Gapuino GAP8-Entwicklungsausschuss begann im Mai 2018 den Versand.[68][69][70]
- Sofortiger Soc Risc-V-Kerne von FPGA-Kernen. System auf Chip, einschließlich RISC-V-Kernen, definiert durch C ++.
- Micro Magic Inc. kündigte im Oktober 2020 den weltweit schnellsten 64-Bit-RISC-V-Kern der Welt an, der 5 GHz und 13.000 Krone erzielt hat.
- SeagateIm Dezember 2020 kündigte es an, zwei RISC-V-Allzweckkerne für die Verwendung in den kommenden Controllern für seine Speichergeräte entwickelt zu haben.[71]
- SiebenEin Unternehmen, das speziell für die Entwicklung von RISC-V-Hardware eingerichtet wurde, hat 2017 Prozessormodelle veröffentlicht.[72][73] Dazu gehören ein Quad-Core, 64-Bit (RV64GC) System auf einem Chip (SOC) in der Lage, allgemeine Betriebssysteme wie Linux auszuführen.[74]
- Syntacore,[75] Ein Gründungsmitglied von RISC-V International und einem der ersten kommerziellen RISC-V-IP-Anbieter, entwickelt und lizenziert seit 2015 Familie von RISC-V IP. Ab 2018[aktualisieren]Die Produktlinie umfasst acht 32- und 64-Bit-Kerne, einschließlich Open-Source SCR1 MCU-Kern (RV32I/E [MC]).[76] First Commercial SoCs, basierend auf der Syntacore -IP, wurden 2016 nachgewiesen.[77]
- Codasip und Ultrasoc haben vollständig unterstütztes geistiges Eigentum für RISC-V-eingebettete SOCs entwickelt, die die RISC-V-Kerne von Codasip und andere IP mit Ultrasoc-Debug, Optimierung und Analyse kombinieren.[78]
- Ab 2020 begann der indische Verteidigungs- und strategische Sektor mit dem 64-Bit-RISC-V-basierten 100-350 MHz Risecreek Prozessor entwickelt von IIT-Madras das wird hergestellt von Intel mit 22 nm Flossen Prozess.[79][80]
In Entwicklung
- ASTC entwickelte eine RISC-V-CPU für eingebettete ICs.[81]
- Zentrum für Entwicklung des fortschrittlichen Computers (C-DAC) In Indien entwickelt ein einzelnes Core-32-Bit Vega -Mikroprozessoren Serie.[82][83][84]
- Cobham Gaisler Noel-V 64-Bit.[85]
- Computerlabor, Universität von Cambridgein Zusammenarbeit mit dem Freebsd Project hat dieses Betriebssystem auf 64-Bit-RISC-V portiert, um sie als Hardware-Software-Forschungsplattform zu verwenden.[86]
- Esperanto Technologies gab bekannt, dass sie drei RISC-V-basierte Prozessoren entwickeln: die ET-Maxion Hochleistungskern, Et-Minion energieeffizienter Kern und ET-Graphics Grafikprozessor.[87]
- Eth Zürich und die Universität Bologna haben kooperativ den Open-Source RISC-V Pulpino-Prozessor entwickelt[88] Im Rahmen des parallelen Ultra-Low-Leistungsprojekts (PULP) für energieeffizientes IoT-Computing.[89]
- Europäische Prozessorinitiative (EPI), RISC-V-Beschleunigerstrom.[90][91]
- Rekonfigurierbare intelligente Systemtechnik Group (Aufstieg) von IIT-Madras entwickelt sechs Shakti Serie RISC-V Open-Source-CPU-Designs für sechs unterschiedliche Verwendungszwecke von einem kleinen 32-Bit-CPU für die Internet der Dinge (IoT) zu groß, 64-Bit-CPUs Entwickelt für Computer im Lagermaßstab wie Computer wie Serverfarmen bezogen auf Rapidio und Hybrid -Speicherwürfel Technologien.[92][14][93] 32-Bit Moushik erfolgreich durch Rise für die Anwendung von Kreditkarten, Elektronische Abstimmungsmaschinen (EVMS), Überwachungskameras, sichere Schlösser, personalisierte Gesundheitsmanagementsysteme.[80][94]
- Lowrisc ist ein Nicht -Profit -Projekt zur vollständigen Umsetzung eines Open-Source-Hardware System auf einem Chip (SOC) basierend auf dem 64-Bit-RISC-V ISA.[95]
- Nvidia Pläne, RISC-V zu nutzen, um ihren Falcon-Prozessor auf ihrem zu ersetzen Geforce Grafikkarten.[96]
- Das RV64X-Konsortium arbeitet an einer Reihe von Grafikerweiterungen gegenüber RISC-V und hat angekündigt, dass sie einen Open-Source-RISC-V-Kern mit einer GPU-Einheit entwickeln.[97]
- Sieben kündigte ihren ersten RISC-V an außer Betrieb Hochleistungs -CPU -Kern, der U8 -Serienprozessor IP.[98]
- Esperanto ET-SOC-1, ein 200 Top "Kilocore" -Supercomputer auf einem Chip mit 1088 kleinen 64-Bit-In-Ordnung ET-Minion-Kernen mit Tensor-/Vektoreinheiten und 4 Big 64-Bit-Out-of-Order ET-Maxion Kerne [99]
- Ventana gab bekannt, dass sie Hochleistungs-RISC-V-CPU-IP- und Chiplet-Technologie-Targeting-Anwendungen für die RISC-V-CPU- und Chiplet-Technologie entwickeln.[100][101]
Open Source
Es gibt viele Open-Sourcing-Risc-V-CPU-Designs, darunter:
- Der Berkeley CPUs. Diese werden in einer einzigartigen Hardware -Designsprache implementiert. Meißelund einige sind nach berühmten Zugmotoren benannt:
- 64-Bit-Rakete.[102] Rakete kann kompakte, intermediäre Computer mit geringer Leistung wie persönliche Geräte entsprechen. Benannt nach Stephensons Rakete.
- Das 64-Bit Berkeley außerhalb der Bestellmaschine (Boom).[103] Die Berkeley Out-of-Order Machine (Boom) ist ein synthetisierbarer und parameterizierbarer Open-Source-RV64GC-RISC-V-Kern, der in der Konstruktionssprache der Meißelhardware geschrieben wurde. Boom verwendet einen Großteil der für Raketen erstellten Infrastruktur und kann für persönliche, Supercomputer- und Lager- und Lagermaßstäbe verwendet werden.
- Fünf 32-Bit Sodor CPU -Designs aus Berkeley,[104] für Studentenprojekte entwickelt.[105] Sodor ist die fiktive Insel der Züge in Kindergeschichten über Kinder Thomas der Tankmotor.
- Picorv32 von Claire Wolf,[106] ein 32-Bit Mikrocontroller -Einheit (MCU) Klasse RV32IMC -Implementierung in Verilog.
- scr1 von syntacore,[107] ein 32-Bit Mikrocontroller -Einheit (MCU) Klasse RV32IMC -Implementierung in Verilog.
- Servieren[108] ist ein physikalisch kleiner, validierter Bit-serieller RV32I-Kern in Verilog. Es ist sowohl in die Litex- als auch in FuSesoc SoC -Konstruktionssysteme integriert. Eine FPGA -Implementierung[109] war 354 Nachschlagetabellen (LUTS) und 345 Flip Flopsmit 1,5 Laufen MIPSIn einem 130-nm-Knoten-Asic betrug es 0,04 mm2[110] und ein High-End-FPGA könnte 6.000 Kerne halten.[111]
- Pulpino (Riscy und Zero-Riscy) von ETH Zürich / Universität Bologna.[112] Das Kerne Im Pulpino implementieren Sie eine einfache RV32IMC-ISA für Mikrocontroller (Null-RISCY) oder eine leistungsstärkere RV32IMFC-ISA mit benutzerdefinierten DSP-Erweiterungen für die eingebettete Signalverarbeitung.
- Western DigitalIm Dezember 2018 kündigte ein RV32IMC-Kern namens SWERV EH1 mit einem 2-Wege-2-Wege-Superscalar- und neunstufigen Pipeline-Design an. Im Dezember 2019 kündigte WD den Swerv EH2 an In-Ordnung-Kern mit zwei Hardware-Threads und einer neunstufigen Pipeline und dem Swerv EL2 A-Ausgabe-Kern mit einer 4-stufigen Pipeline an[113] WD plant, SWERV-basierte Prozessoren in ihren Flash-Controllern und SSDs zu verwenden, und veröffentlichte sie im Januar 2019 als Open-Source an Dritte.[114][115][116]
- Neorv32 von Stephan Nolting,[117] Ein hochkonfigurierbarer 32-Bit Mikrocontroller -Einheit (MCU) Klasse RV32 [I/E] macux_zbb_zfinx_zicsr_zifence CPU mit On-Chip-Debugger-Unterstützung, die in plattformunabhängiger Unterstützung geschrieben wurde VHDL. Das Projekt umfasst einen Mikrocontroller-ähnlichen SOC, der bereits gemeinsame Module wie UART, Timer, SPI, TWI, TRNG und eingebettete Erinnerungen enthält.
- Alibaba -Gruppe, im Juli 2019 kündigte der 2,5 GHz 16-Core 64-Bit (RV64GCV) Xuantie 910 an außer Betrieb Prozessor.[118] Im Oktober 2021 wurde der Xuantie 910 als Open-Source veröffentlicht.[119]
- Das Institut für Computertechnologie der Chinesische Akademie der Wissenschaft (ICT CAS) startete im Juni 2020 das RISC-V-Prozessorprojekt von Xiangshan High-Performance.[120][121]
Software
Ein normales Problem für einen neuen Anweisungssatz ist ein Mangel an CPU -Designs und -Software - beide Probleme begrenzen die Benutzerfreundlichkeit und verringern die Akzeptanz.[11] RISC-V hat eine große Anzahl von CPU-Designs. Die RISC-V-Software umfasst Toolchains, Betriebssysteme, Middleware[vage] und Designsoftware.
Zu den verfügbaren RISC-V-Software-Tools gehören a GNU Compiler -Sammlung (GCC) Toolchain (mit GDB, der Debugger), und Llvm Toolchain, die Ovpsim Simulator (und Bibliothek von RISC-V-Fast-Prozessormodellen), dem Spike-Simulator und einem Simulator in Qemu (RV32GC/RV64GC). JEP 422: Linux/Risc-V-Port ist bereits in die Mainline integriert OpenJDK Repository.
Der Betriebssystemunterstützung gibt es für die Linux Kernel, Freebsd, Netbsd, und OpenBSD Die Anweisungen zum Supervisor-Modus wurden jedoch vor Juni 2019 nicht standardisiert.[16] Diese Unterstützung ist also vorläufig. Der vorläufige FreeBSD-Hafen zur RISC-V-Architektur wurde im Februar 2016 vorgelöst und in FreeBSD 11.0 verschickt.[122][86] Ports der Debian[123] und Fedora[124] Linux -Verteilungenund ein Hafen von Haiku,[125] stabilisieren sich (beide unterstützen nur 64-Bit-RISC-V, ohne die 32-Bit-Version zu unterstützen). Ein Port von Das U-Boot existiert.[126] UEFI-Spezifikation v2.7 hat die RISC-V-Bindung und a definiert Tianocore Port wurde von durchgeführt von HPE Ingenieure[127] und wird erwartet, dass es stromaufwärts ist. Es gibt einen vorläufigen Port von Der Sel4 Microkernel.[128][129] Hex Five veröffentlichte den ersten sicheren IoT-Stack für RISC-V mit Freertos Unterstützung.[130] Ebenfalls xv6, eine moderne Neuimplementierung von Sechste Ausgabe Unix in Ansi c verwendet für pädagogische Zwecke in MIT, wurde portiert. Pharos rtos wurde auf 64-Bit-RISC-V portiert[131] (einschließlich Zeit- und Speicherschutz). Siehe auch Vergleich von Echtzeit-Betriebssystemen.
Ein Simulator existiert ein RISC-V-Linux-System auf a Webbrowser Verwendung JavaScript.[132][133][134]
Qemu Unterstützt das Laufen (mit Verwendung binäre Übersetzung) 32- und 64-Bit-RISC-V-Systeme (z. B. Linux) mit einer Reihe von emulierten oder virtualisierten Geräten (seriell, parallel, USB, Netzwerk, Speicher, Echtzeituhr, Watchdog, Audio) sowie Ausführung von RISC-V Linux -Binärdateien (Übersetzungssyscalls in den Host -Kernel). Es unterstützt Multi-Core-Emulation (SMP).[135]
Der Schöpfer Simulator ist tragbar und ermöglicht es dem Benutzer, verschiedene Montagesprachen verschiedener Prozessoren zu lernen (Creator hat Beispiele mit einer Implementierung von RISC-V- und MIPS32-Anweisungen).[136][137][138][139]
Der erweiterbare Bildungssimulator Wepsim implementiert a (mikroprogrammiert) Teilmenge von RISC-V-Anweisungen (Rv32i+m) und ermöglicht die Ausführung von Unterroutinen in der Versammlung.[140][141]
Eine Reihe von Sprachen wurde angewendet, um RISC-V-IP-Kerne einschließlich einer scala-basierten Hardware-Beschreibung zu erstellen. Meißel,[142] was die Designs auf reduzieren kann Verilog Für die Verwendung in Geräten und die Beschreibung der kodalen Prozessor, die verwendet wurde, um RISC-V-Prozessorkernen zu beschreiben und entsprechende HDKs zu generieren (RTL, testbench und UVM) und SDKs.[143] Die RISC-V International Compliance Task Group verfügt über ein Github-Repository für RV32IMC.[144]
Entwicklungswerkzeuge
- IAR -Systeme veröffentlichte die erste Version von IAR Embedded Workbench für RISC-V, die RV32 32-Bit-RISC-V-Kerne und Erweiterungen in der ersten Version unterstützt. Zukünftige Veröffentlichungen umfassen 64-Bit-Unterstützung und Unterstützung für den kleineren RV32E-Basisanweisungssatz sowie die Funktionssicherheits- und Sicherheitslösungen für die Funktionssicherheit.
- Lauterbach Unterstützung für RISC-V für ihre Trace32 hinzugefügt Jtag Debugger.[145][146] Gab auch Lauterbach bekannt [147] Unterstützung für Sifiven Risc-v Nexus basierter Prozessorspur.
- Segger Unterstützung für RISC-V-Kerne bei ihrer Debug-Sonde hinzugefügt J-Link,[148] ihre integrierte Entwicklungsumgebung eingebettete Studio,[149] und ihre RTOs bos und eingebettete Software.[150]
- Ultrasoc schlug ein Standard -Trace -System vor und spendete eine Implementierung.
Siehe auch
Verweise
- ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab AC Anzeige ae af Ag Ah ai AJ AK al bin ein ao AP aq ar wie bei AU ein V aw Axt Waterman, Andrew; Asanović, Krste (13. Dezember 2019). "Das RISC-V-Befehlssatzhandbuch, Band I: Unrivilegierte ISA-Version 20191213" (PDF). RISC-V International. Abgerufen 5. November 2021.
- ^ a b c Waterman, Andrew; Asanović, Krste (3. Dezember 2021). "Der RISC-V-Befehlssatz Handbuch Band II: Privilegierte Architektur-Dokument Version 20211203" (PDF). RISC-V International. Abgerufen 5. November 2021.
- ^ Big und Bi-Endianess als Erweiterungen unterstützt
- ^ Urquhart, Roddy (29. März 2021). "Wofür steht Risc-V? Eine kurze Geschichte der offenen Isa". Systeme & Design: Meinung. Halbleitertechnik.
- ^ a b "Mitwirkende". riscv.org. Regenten der University of California. Archiviert von das Original am 7. September 2018. Abgerufen 25. August 2014.
- ^ a b Waterman, Andrew; Asanović, Krste (7. Mai 2017). "Das RISC-V-Befehlssatzhandbuch, Band I: Basis-Benutzer-Niveau-Version 2.2" (PDF). RISC-V International. Abgerufen 5. November 2021.
- ^ Newsome, Tim; Wachs, Megan (22. März 2019). "RISC-V externe Debug-Unterstützung Version 0.13.2 D5029366d59e8563C08B6B9435F82573B603E48E" (PDF). RISC-V International. Abgerufen 7. November 2021.
- ^ Demerjian, Chuck (7. August 2013). "Ein langer Blick darauf, wie ARM -Lizenzen Chips lizenziert: Teil 1". Semiccurate.
- ^ Demerjian, Chuck (8. August 2013). "Wie ARM seine IP für die Produktion lizenziert: Teil 2". Semiccurate.
- ^ "Wave Computing schließt seine MIPS Open -Initiative mit sofortiger Wirkung, Null Warnung". 15. November 2019.
- ^ a b c d e f Asanović, Krste. "Anweisungssätze sollten frei sein" (PDF). U.C. Berkeley Technische Berichte. Regenten der University of California. Abgerufen 15. November 2016.
- ^ "Raketenkerngenerator". Risc-v. Regenten der University of California. Abgerufen 1. Oktober 2014.
- ^ Celio, Christopher; Liebe, Eric. "UCB-Bar/RISCV-Soodor". GitHub. Regenten der University of California. Abgerufen 12. Februar 2015.
- ^ a b "Shakti -Prozessorprogramm". Indisches Institut für Technologie Madras. Abgerufen 3. September 2019.
- ^ Celio, Christopher. "CS 152 Laborausübung 3" (PDF). UC Berkeley. Regenten der University of California. Abgerufen 12. Februar 2015.
- ^ a b c d e f g h i Waterman, Andrew; Lee, Yunsup; Avizienas, Rimas; Patterson, David; Asanović, Krste. "Entwurf privilegierter ISA -Spezifikation 1.9". Risc-v. RISC-V International. Abgerufen 30. August 2016.
- ^ a b c d e Waterman, Andrew; Asanović, Krste (31. Mai 2016). "Das Handbuch für RISC-V-Befehlssatz, Band I: Basis-Benutzerebene ISA Version 2.1" (PDF). Universität von Kalifornien, Berkeley. EECS-2016-118. Abgerufen 5. November 2021.
- ^ a b Patterson, David A.; Ditzel, David R. (Oktober 1980). "Der Fall für den reduzierten Befehlssatzcomputer". ACM Sigarch Computer Architecture News. 8 (6): 25. doi:10.1145/641914.641917. S2CID 12034303.
- ^ "Bernsteinarm-kompatibler Kern". OpenCores. Abgerufen 26. August 2014.
- ^ "Arm4u". OpenCores. OpenCores. Abgerufen 26. August 2014.
- ^ Asanović, Krste. "Das RISC-V-Befehlssatzhandbuch, Volume I: Basis-Benutzerebene ISA" (PDF). U.C. Berkeley Technische Berichte. Regenten der University of California. Abgerufen 13. Mai 2011.
- ^ Hruska, Joel (21. August 2014). "RISC fährt wieder: Neue RISC-V-Architektur hofft, Arms und x86 zu bekämpfen, indem sie völlig open Source sind". Extremetech.
- ^ "Risc-V-Geschichte". Abgerufen 19. November 2019.
- ^ "Eine neue Blaupause für Mikroprozessoren fordert die Riesen der Branche in Frage.". Der Ökonom. 3. Oktober 2019. ISSN 0013-0613. Abgerufen 10. November 2019.
- ^ a b "RISC-V Foundation". RISC-V Foundation. Abgerufen 15. März 2019.
- ^ "Design Automation Conference". DAC.com. Abgerufen 6. Februar 2021.
- ^ "Die in den USA ansässige Chip-Tech-Gruppe, die in die Schweiz umgezogen ist, wegen der Befürchtungen des Handelsbestandes". Reuters. 26. November 2019. Abgerufen 26. November 2019.
- ^ "RISC-V HISTORY-RISC-V International". RISC-V International. Abgerufen 14. Mai 2020.
- ^ "Die Linley Group kündigt die Gewinner der jährlichen Analysten -Choice Awards an" (Pressemitteilung). Die Linley -Gruppe. 12. Januar 2017. Abgerufen 21. Januar 2018.
- ^ a b "Bit-Manipulation isa-oxtesions" (PDF). RISC-V International. November 2021.
- ^ "Vektorerweiterung". RISC-V International. November 2021.
- ^ "RISC-V-Profile". Diskussion. 2022.
- ^ RISC-V-Plattform Horizontaler Unterausschuss (Dezember 2021). "RISC-V-Plattformspezifikation" (PDF). Version 0.3-Draft.
- ^ a b c d e f g h i Waterman, Andrew (13. Mai 2011). Verbesserung der Energieeffizienz und Reduzierung der Codegröße mit RISC-V-Komprimierung. U.C. Berkeley: Regenten der University of California. p. 32. Abgerufen 25. August 2014.
- ^ Waterman, Andrew; et al. "Der RISC-V-Komprimierungsanweisungssatz Handbuch Version 1.9 (Entwurf)" (PDF). Risc-v. Abgerufen 18. Juli 2016.
- ^ a b Brusee, Rogier. "Ein komplettes 16-Bit-RVC". Google -Gruppen. RISC-V Foundation. Abgerufen 18. Juli 2019.
- ^ a b Brusee, Rogier. "Vorschlag: xcondensed, [a] ... kompakt ... 16 Bit eigenständiges G-ISA". RISC-V ISA Mail Server. Google -Gruppen. Abgerufen 10. November 2016.
- ^ Phung, Xan. "Verbessert xcondensed". Google -Gruppen. RISC-V Foundation. Abgerufen 18. Juli 2019.
- ^ Ionescu, Liviu. "Das RISC-V-Mikrocontroller-Profil". GitHub. Abgerufen 5. April 2018.
- ^ Barros, Cesar. "Vorschlag: RV16E". RISC-V ISA-Entwickler (Mailingliste). Abgerufen 2. April 2018.
- ^ Bonzini, Paolo; Waterman, Andrew. "Vorschlag für die Virtualisierung ohne H -Modus". RISC-V ISA-Entwickler (Mailingliste). Abgerufen 24. Februar 2017.
- ^ RISCV/RISCV-BITMANIP, RISC-V, 24. Februar 2021, abgerufen 9. März 2021
- ^ Wolf, Claire (11. Januar 2021). "Riscv-Bitmanip" (PDF). GitHub. RISC-V Foundation. Abgerufen 9. März 2021.
- ^ a b "Anweisungszusammenfassung für einen" P "ISA -Vorschlag". Google -Gruppen. Andes Technologies. Abgerufen 13. Januar 2020.
- ^ Andes -Technologie. "Umfassende RISC-V-Lösungen" (PDF). RISC-V-Inhalt. RISC-V Foundation. Abgerufen 13. Januar 2020.
- ^ Lee, Ruby; Huck, Jerry (25. Februar 1996). "64-Bit- und Multimedia-Erweiterungen in der PA-RISC 2.0-Architektur". Verfahren von Compcon 96: 152–160. doi:10.1109/cmpcon.1996.501762. ISBN 0-8186-7414-8. S2CID 13081443.
- ^ Lee, Ruby B. (April 1995). "Beschleunigung von Multimedia mit verbesserten Mikroprozessoren" (PDF). IEEE MICRO. 15 (2): 22–32. Citeseerx 10.1.1.74.1688. doi:10.1109/40.372347. Abgerufen 21. September 2014.
- ^ a b c d e f g h Schmidt, Colin; OU, Albert; Lee, Yunsup; Asanović, Krste. "RISC-V-Vektorverlängerungsvorschlag" (PDF). Risc-v. Regenten der University of California. Abgerufen 14. März 2016.
- ^ OU, Albert; Nguyen, Quan; Lee, Yunsup; Asanović, Krste. "Ein Fall für MVPs: Vektorprozessoren mit gemischten Präzision" " (PDF). UC Berkeley EECs. Regenten der University of California. Abgerufen 14. März 2016.
- ^ Lee, Yunsup; Grover, Vinod; Krashinsky, Ronny; Stephenson, Mark; Keckler, Stephen W.; Asanović, Krste. "Erforschung des Designraums des SPMD-Divergenzmanagements auf datenparallelen Architekturen" (PDF). Berkeleys EECS -Site. Regenten der University of California. Abgerufen 14. März 2016.
- ^ a b c d e Bradbury, Alex; Wallentowitz, Stefan. "RISC-V Run Control DebugG". Google Dokumente. RISC-V Foundation. Abgerufen 20. Januar 2017.
- ^ Newsome, Tim. "RISC-V-Debug-Gruppe> Umfrageergebnisse". Google Groups, RISC-V-Debug-Gruppe. RISC-V Foundation. Abgerufen 20. Januar 2017.
- ^ McGooganus. "RISCV-Trace-Spec". GitHub. Abgerufen 13. Januar 2020.
- ^ Dahad, Nitin. "Ultrasoc packt die RISC-V-Support-Challenge durch, indem sie Spendencodierer spenden". EE mal. Aspencore. Abgerufen 13. Januar 2020.
- ^ "RISC-V-Kerne und SOC-Übersicht". Risc-v. 25. September 2019. Abgerufen 5. Oktober 2019.
- ^ "D1". Abgerufen 30. September 2021.
- ^ a b c "RISC-V Internationale Mitglieder". RISC-V International. Abgerufen 22. Januar 2021.
- ^ "Auf der CES2022 zeigt Bouffalo seine Materie schlüsselfertige Lösung". www.eetimes.com. Abgerufen 20. Januar 2022.
- ^ "CloudBear". Abgerufen 16. Oktober 2018.
- ^ RISCV/RISCV-CORES-LISTE, RISC-V, 6. Februar 2021, abgerufen 9. Februar 2021
- ^ "Codasip kündigt Risc-V-Prozessorkerne an, die Multi-Core- und SIMD-Funktionen bieten". www.newelectronics.co.uk. Abgerufen 9. Februar 2021.
- ^ "3.6.2 Co-Prozessor Ultra-Low-Power". ESP32-S2 Familien Datenblatt v1.1 (PDF). Espresssif -Systeme. 2020. Abgerufen 9. Juni 2020.
- ^ "ESP32-C3 Family Datasheet v0.4" (PDF). Espresssif -Systeme. 2020. Abgerufen 27. Dezember 2020.
- "ESP32-C3 einführen". Espresssif (Pressemitteilung). 27. November 2020.
- ^ Manners, David (8. Juni 2021). "Fraunhofer Lizenzierungsfehler-tolerantes RISC-Kern für sicherheitskritische Anwendungen". Elektronik wöchentlich. Abgerufen 13. April 2022.
- ^ "Gigadevice enthüllt die GD32V-Serie mit dem RISC-V-Kern in einem brandneuen 32-Bit-Mikrocontroller mit allgemeinem Zweck". www.gigadevice.com. Abgerufen 29. August 2019.
- ^ "Sipeed Longan Nano - RISC -V GD32VF103CBT6 Development Board". www.seeedstudio.com. Abgerufen 29. August 2019.
- ^ Grüner, Sebastian (28. Oktober 2021). "Googles Security-Chip Nuttzt Risc-V" [Google's Security Chip verwendet RISC-V]. Golem.de: it-News für Profis (auf Deutsch).
- ^ "Greenwaves GAP8 ist ein Risc-V-IoT-Prozessor mit geringer Leistung, das für Anwendungen für künstliche Intelligenz optimiert ist.". CNXSoft: Embedded Systems News. 27. Februar 2018. Abgerufen 4. März 2018.
- ^ Yoshida, Junko (26. Februar 2018). "KI kommt zum Erfassen von Geräten". EE mal. Abgerufen 10. Juli 2018.
- ^ "Greenwaves Technologies kündigt die Verfügbarkeit des GAP8 -Softwareentwicklungs -Kits und des Gapuino Development Board an." (Pressemitteilung). 22. Mai 2018.
- ^ Shilov, Anton (9. Dezember 2020). "Seagate entwickelt eigene RISC-V-Kerne für Speichercontroller". Toms Hardware.
- ^ "Hifive1". Sieben. Abgerufen 10. Juli 2018.
- ^ Sieben. "Hi-Five1: Open-Source Arduino-kompatible Entwicklungskit". Crowd -Versorgung. Abgerufen 2. Dezember 2016.
- ^ "FU540 SOC CPU". Sieben. Abgerufen 24. Oktober 2018.
- ^ "Syntacore". Abgerufen 11. Dezember 2018.
- ^ "SCR1, Open-Source RISC-V-Kern". GitHub. Abgerufen 11. Dezember 2018.
- ^ "RISC-V Workshop Proceedings". 11. Dezember 2016. Abgerufen 11. Dezember 2018.
- ^ Manners, David (23. November 2016). "Codasip und Ultrasoc kombinieren Risc-V". Elektronik wöchentlich. Metropolis International Group, Ltd.. Abgerufen 23. November 2016.
- ^ Desikan, Shubashree (6. August 2018). "IIT-Madras erhält einen Desi-Chip". Der Hindu. ISSN 0971-751X. Abgerufen 25. September 2020.
- ^ a b "Treffen Sie Indiens Atmanirbhar -Mikroprozessor -Chip 'Moushik', das für IoT -Geräte bestimmt ist.". Wion. Abgerufen 25. September 2020.
- ^ Ashenden, Peter (9. November 2016). "Re: [ISA-dev] Risc gegen ISA für eingebettete Systeme". RISC-V ISA-Entwickler (Mailingliste). Abgerufen 10. November 2016.
Bei ASTC (www.astcdesign.com) haben wir eine Implementierung von RV32EC als synthetisierbarem IP-Kern für kleine eingebettete Anwendungen wie Smart Sensors und IoT.
- ^ "C-DAC kündigt die Tech-Konklave 2019 an". Die Zeiten Indiens. Abgerufen 12. April 2019.
- ^ Sharwood, Simon (19. August 2020). "Indien wählt RISC-V für den Semiconductor-Selbstversorgerwettbewerb aus: Verwenden Sie diese einheimischen Kerne, um Kit zu bauen.". Das Register. Abgerufen 9. Juli 2021.
- ^ "Vega -Mikroprozessoren". Vega -Prozessor - CDAC. 9. Juli 2021. Abgerufen 9. Juli 2021.
- ^ "Noel-V-Prozessor". Cobham Gaisler. Abgerufen 14. Januar 2020.
- ^ a b "FreeBSD Foundation: Erste FreeBSD RISC-V-Architektur-Port verpflichtet". 4. Februar 2016.
- ^ "Esperanto verlässt den Stealth-Modus, zielt auf AI mit einem 4.096 Core 7nm Risc-V-Monster ab". Wikichip.org. Januar 2018. Abgerufen 2. Januar 2018.
- ^ "Pulpino Github -Projekt". GitHub. Abgerufen 2. Februar 2018.
- ^ "Zellstoffplattform". Zellstoffplattform. Abgerufen 2. Februar 2018.
- ^ "Gaspedal Stream". Europäische Prozessorinitiative (EPI). Abgerufen 22. Februar 2020.
- ^ Redmond, Calista (20. August 2019). "Wie die Europäische Prozessorinitiative RISC-V für die Zukunft des Supercomputings nutzt". RISC-V Internationale Nachrichten. RISC-V International.
- ^ Halfacree, Gareth (10. Juni 2021). "RISC-V-Boffine stellen einen Plan aus, um die Architektur in Hochleistungs-Computing zu bringen.". Das Register. Abgerufen 9. Juli 2021.
- ^ "IIT Madras Open Source -Prozessorprojekt". Schnelles io. IIT Madras. 26. August 2014. Abgerufen 13. September 2014.
- ^ "IIT Madras entwickelt sich und stellt Moushik -Mikroprozessor für IoT -Geräte auf". IIT Madras. 24. September 2020. Abgerufen 9. Juli 2021.
- ^ "Lowrisc -Website". Abgerufen 10. Mai 2015.
- ^ Xie, Joe (Juli 2016). Nvidia Risc gegen Bewertungsgeschichte. 4. RISC-V-Workshop. Youtube. Archiviert vom Original am 13. November 2021.
- ^ "RV64X: Eine kostenlose Open-Source-GPU für RISC-V". Eetimes. Abgerufen 9. Februar 2021.
- ^ Frumusanu, Andrei (30. Oktober 2019). "Sifive kündigt den ersten RISC-V OOO CPU-Kern an: der Prozessor IP der U8-Serie". Anandtech.
- ^ "Esperanto ET-SOC-1 1092 RISC-V AI Accelerator-Lösung bei Hot Chips 33". 24. August 2021.
- ^ Gwennap, Linley (13. Dezember 2021). "Ventana entwickelt Risc-V-Chiplet". Mikroprozessorbericht.
- ^ Dahad, Nitin (6. September 2021). "Startup des RISC-V-Chiplets erhöht 38 Mio. USD, zielt auf Rechenzentrum von Data Center". EE mal.
- ^ Asanović, Krste; et al. "Rocket-Chip". GitHub. RISC-V International. Abgerufen 11. November 2016.
- ^ Celio, Christopher. "riscv-boom". GitHub. Regenten der University of California. Abgerufen 29. März 2020.
- ^ Celio, Christopher. "RISCV-Soodor". GitHub. Regenten der University of California. Abgerufen 11. November 2016.
- ^ Celio, Chris. "UCB-Bar/RISCV-Soodor". Github. Regenten der University of California. Abgerufen 25. Oktober 2019.
- ^ Wolf, Claire. "Picorv32". GitHub. Abgerufen 27. Februar 2020.
- ^ "SCR1". GitHub. Syntacore. Abgerufen 13. Januar 2020.
- ^ Kindgren, Olof. "Serv - die serielle RISC -V -CPU". Github. Abgerufen 7. November 2021.
- ^ Windgren, Olof. "Stück für Stück, wie man 8 RISC-V-Kerne in 28 FPGA-$ einfügt" (Video, 4:23). Youtube. RISC-V Foundation. Archiviert vom Original am 13. November 2021. Abgerufen 8. November 2021.
- ^ Kindgren, Olof. "Serv M Extension" (Video, um 2:39). Diodenzone. Abgerufen 7. November 2021.
- ^ Halfakree, Gareth. "Neue Corescore-Weltrekord crams 6.000 Serv Risc-V-Kerne in eine einzelne FPGA". Hackster.io. Avnet. Abgerufen 7. November 2021.
- ^ Traber, Andreas; et al. "Pulp: Parallel Ultra niedriger Leistung". Eth Zürich, Universität Bologna. Abgerufen 5. August 2016.
- ^ Shilov, Anton. "Western Digital Rolls-out Zwei neue Swerv Risc-V-Kerne für Mikrocontroller". www.anandtech.com. Abgerufen 9. Februar 2021.
- ^ Shilov, Anton. "Western Digital zeigt den Risc-V-Kern von SWERV, Cache-Kohärenz über die Ethernet-Initiative". www.anandtech.com. Abgerufen 23. Mai 2019.
- ^ "Western Digital Releases Swerv Risc-V Core Quellcode". Ab offen. 28. Januar 2019. Archiviert vom Original am 21. Mai 2019.
- ^ Kerne an GitHub
- ^ Nolting, Stephan. "Neorv32". GitHub. Abgerufen 9. September 2021.
- ^ "Chinas Alibaba macht einen 16-Kern-Risc-V-Prozessor mit einem Kern von 2,5 GHz". www.techspot.com. Abgerufen 30. Juli 2019.
- ^ "Alibaba Offene Quellen vier Risc-V-Kerne: Xuantie E902, E906, C906 und C910". 20. Oktober 2021. Abgerufen 20. Oktober 2021.
- ^ Xiangshan Repository auf GitHub
- ^ Xiangshan Open-Source 64-Bit RISC-V-Prozessor zum Konkurrenz von Arm Cortex-A76 - CNX -Software
- ^ "RISCV - FreeBSD Wiki". wiki.freebsd.org.
- ^ Montezelo, Manuel. "Debian GNU/Linux-Port für RISC-V 64". Google -Gruppen. Abgerufen 19. Juli 2018.
- ^ "Architekturen/RISC-V". Fedora Wiki. roter Hut. Abgerufen 26. September 2016.
- ^ "Mein Haiku Risc-V-Port Fortschritt". Haiku -Gemeinschaft. 12. Mai 2021.
- ^ Bari, Padmarao. "U-Boot-Port auf RISC-V 32-Bit ist verfügbar". Google -Gruppen. Microsemi. Abgerufen 15. Februar 2017.
- ^ Riscvedk2 an GitHub
- ^ Almatary, Hesham. "RISC-V, SEL4". SEL4 -Dokumentation. Commonwealth Scientific and Industrial Research Organization (CSIRO). Abgerufen 13. Juli 2018.
- ^ Almatary, Hesham. "Heshamelmatary". GitHub. Abgerufen 13. Juli 2018.
- ^ "Multizone Secure IoT Stack, der erste sichere IoT-Stack für RISC-V". Hex Five Security. Hex Five Security, Inc. 22. Februar 2019. Abgerufen 3. März 2019.
- ^ "Pharos". SourceForge. Abgerufen 1. April 2020.
- ^ "Angel ist ein JavaScript RISC-V ISA (RV64) -Simulator, der RISCV-Linux mit Busybox ausführt". Riscv.org. Archiviert von das Original am 11. November 2018. Abgerufen 17. Januar 2019.
- ^ Lee, Yunsup (5. März 2014). "Boot RISC-V Linux in Ihrem Webbrowser!". RISC-V International. Abgerufen 4. September 2020.
- ^ "Angel-Risc-V". riscv.org.s3-website-us-west-1.amazonaws.com. Abgerufen 4. September 2020.
- ^ "Dokumentation/Plattformen/RISCV". Qemu Wiki. Abgerufen 7. Mai 2020.
- ^ Camarmas-Alonso, Diego; Garcia-Carballeira, Felix; Del-pozo-puñal, Elias; Mateos, Alejandro Calderon (23. Juli 2021). Schöpfer: Simulador didáctico y Genérico para la programmación en enssamblador [Schöpfer: didaktischer und generischer Simulator für die Montageprogrammierung]. XXXI Jornadas de Paralelismo (JP20/21) (auf Spanisch). Malaga. doi:10.5281/Zenodo.5130302.
- ^ "Ein neuer generischer Simulator für die Lehre der Montageprogrammierung" (in Spanisch). 2. August 2022. Abgerufen 2. August 2022.
{{}}
: CS1 Wartung: URL-Status (Link) - ^ Creator Web mit RISC-V-Beispiel: https://creatorsim.github.io/creator/?example_set=default_rv&example=e12
- ^ Erstellerquellcode auf GitHub: https://github.com/creatorsim/creator
- ^ "Wepsim mit RISC-V_IM-Beispiel". Wepsim.
- ^ "Wepsim Homepage".
- ^ "Meißel: Hardware in einer skala eingebetteten Sprache konstruieren". UC Berkeley. Regenten der University of California. Abgerufen 12. Februar 2015.
- ^ "Codasip Studio". Codasip. Abgerufen 19. Februar 2021.
- ^ RISCV/RISCV-Compliance, RISC-V, 12. Februar 2021, abgerufen 19. Februar 2021
- ^ "Risc-V-Debugger". www.lauterbach.com Trace32 Debugger für RISC-V..
- ^ "Lauterbach und Sifive bringen Trace32-Unterstützung für leistungsstarke RISC-V-Kerne". www.sifive.com.
- ^ "Trace32 unterstützt die RISC-V-Spur von Sifive". www.lauterbach.com.
- ^ "Segger fügt seine branchenführende J-Link-Debug-Sonde von Sifives Coreplex IP zu unterstützen". Abgerufen 19. September 2017.
- ^ "PR: Segger Embedded Studio unterstützt die RISC-V-Architektur". Abgerufen 23. November 2017.
- ^ "PR: Segger präsentiert RTOs, Stapel, Middleware für RISC-V". Abgerufen 8. Dezember 2017.
Weitere Lektüre
- "Das Handbuch für RISC-V-Befehlssatz". RISC-V International.
- "RISC-V-Assembler-Sprachprogrammierung". GitHub. 8. November 2019.
- Waterman, Andrew (Januar 2016). "Design der RISC-V-Unterrichts-Architektur" (PDF). EECS -Abteilung, Universität von Kalifornien, Berkeley. EECS-2016-1.
- Asanović, Krste; Patterson, David A. (6. August 2014). "Anweisungssätze sollten kostenlos sein: Der Fall für RISC-V". EECS -Abteilung, Universität von Kalifornien, Berkeley. UCB/EECS-2014-146.
- Waterman, Andrew; Lee, Yunsup; Avizienis, Rimas; Koch, Henry; Patterson, David A.; Asanović, Krste (25. bis 27. August 2013). Der RISC-V-Befehlssatz (PDF). Heiße Chips 25. Stanford University, Palo Alto, Kalifornien, USA.
- Dabbelt, Palmer (7. bis 11. Februar 2015). RISC-V-Software-Ökosystem (PDF). Hochleistungs-Computerarchitektur (HPCA) 2015. San Francisco, Kalifornien, USA.
- Lee, Yunsup (7. bis 11. Februar 2015). RISC-V "Rocket Chip" Soc-Generator in Meißel (PDF). Hochleistungs-Computerarchitektur (HPCA) 2015. San Francisco, Kalifornien, USA.
- Waterman, Andrew; Lee, Yunsup; Patterson, David A.; Asanović, Krste (5. November 2015). "Der RISC-V-Komprimierungsanweisungssatz Handbuch Version 1.9 (Entwurf)" (PDF). Risc-v.
Externe Links
- Offizielle Website
- RISC-V-Befehlssatzreferenzkarte an GitHub
- "RISC-V: Ein offener Standard für SOCS: Der Fall für eine offene ISA". Eetimes. 8. Juli 2014.
- "Analyse der RISC-V-Befehls-Architektur". Adapteva. 11. August 2014.
- Celio, Christopher; Dabbelt, Palmer; Patterson, David A.; Asanović, Krste (8. Juli 2016). Der erneuerte Fall für den reduzierten Befehlssatzcomputer: Vermeiden Sie ISA-Aufblähen mit Makro-Op-Fusion für RISC-V (Technischer Bericht). Universität von Kalifornien, Berkeley. Arxiv:1607.02318. UCB/EECS-2016-130.
- "Was ist RISC-V?". Elektromacher. 14. Juli 2021.