OpenRISC - OpenRISC

OpenRISC
Designer Ursprünglich Damjan Lampret, jetzt die OpenRISC Community (Stafford Horne etc.)
Bits 32-Bit , 64-Bit
Eingeführt 2000 ; Vor 21 Jahren ( 2000 )
Ausführung 1.3
Entwurf RISC
Codierung Fest
Endianität Groß; nicht implementierter Stub für Little
Seitengröße 8 KiB
Erweiterungen ORFPX32/64, ORVDX64
Offen Ja (LGPL / GPL), daher lizenzfrei
Register
Allgemeiner Zweck 16 oder 32
Gleitkomma Optional

OpenRISC ist ein Projekt zur Entwicklung einer Reihe von Open-Source-Hardware- basierten zentralen Verarbeitungseinheiten (CPUs) auf den etablierten Prinzipien von Computern mit reduziertem Befehlssatz (RISC). Es enthält eine Befehlssatzarchitektur (ISA) unter Verwendung einer Open-Source-Lizenz . Es ist das ursprüngliche Flaggschiff-Projekt der OpenCores- Community .

Die erste (und erst ab 2019) Architekturbeschreibung bezieht sich auf OpenRISC 1000 ("OR1k") und beschreibt eine Familie von 32-Bit- und 64-Bit- Prozessoren mit optionaler Unterstützung von Gleitkomma-Arithmetik und Vektorverarbeitung . Die OpenRISC 1200- Implementierung dieser Spezifikation wurde im Jahr 2000 von Damjan Lampret entworfen und in der Hardwarebeschreibungssprache (HDL) von Verilog geschrieben . Die spätere mor1kx-Implementierung , die einige Vorteile gegenüber dem OR 1200 hat, wurde von Julius Baxter entworfen und ist ebenfalls in Verilog geschrieben. Zusätzlich existieren Softwaresimulatoren, die die OR1k-Spezifikation implementieren.

Das Hardwaredesign wurde unter der GNU Lesser General Public License (LGPL) bzw. der Open Hardware Design License (OHDL) veröffentlicht, während die Modelle und die Firmware unter der GNU General Public License (GPL) veröffentlicht wurden.

Es wurde eine auf OpenRISC 1200 basierende Referenzsystem -on-a-Chip- Implementierung (SoC) entwickelt, die als OpenRISC-Referenzplattform System-on-Chip (ORPSoC) bezeichnet wird. Mehrere Gruppen haben ORPSoC- und andere OR1200-basierte Designs demonstriert, die auf feldprogrammierbaren Gate-Arrays (FPGAs) laufen , und es wurden mehrere kommerzielle Derivate hergestellt.

Spätere SoC-Designs, die ebenfalls auf einer OpenRisc 1000-CPU-Implementierung basieren, sind FuseSoC, minSoC, OpTiMSoC und MiSoC.

Befehlssatz

Der Befehlssatz ist eine einigermaßen einfache MIPS-Architektur - wie herkömmliches RISC unter Verwendung einer 3-Operanden-Lade-Speicher-Architektur mit 16 oder 32 Universalregistern und einer festen 32-Bit-Befehlslänge. Der Befehlssatz ist zwischen den 32- und 64-Bit-Versionen der Spezifikation größtenteils identisch, der Hauptunterschied besteht in der Registerbreite (32 oder 64 Bit) und dem Seitentabellen-Layout. Die OpenRISC-Spezifikation umfasst alle Funktionen, die modernen Desktop- und Serverprozessoren gemeinsam sind: einen Supervisor-Modus und ein virtuelles Speichersystem, optionale Lese-, Schreib- und Ausführungssteuerung für Speicherseiten sowie Anweisungen zum Synchronisieren und Interrupt-Handling zwischen mehreren Prozessoren.

Ein weiteres bemerkenswertes Merkmal ist ein umfangreicher Satz von SIMD- Befehlen ( Single Instruction, Multiple Data ), die für die digitale Signalverarbeitung bestimmt sind .

Implementierungen

Image
OpenRISC-Prototyp auf Flextronics (Flex) FPGA-Entwicklungsplatine mit uClinux

Die meisten Implementierungen basieren auf feldprogrammierbaren Gate-Arrays (FPGAs), die die Möglichkeit bieten, das Design auf Kosten der Leistung zu iterieren.

Bis 2018 galt OpenRISC 1000 als stabil, daher startete ORSoC (Eigentümer von OpenCores) ein Crowdfunding- Projekt, um einen kosteneffizienten anwendungsspezifischen integrierten Schaltkreis (ASIC) zu bauen, um eine verbesserte Leistung zu erzielen. Dafür wurde der ORSoC von der Community kritisiert. Das Projekt hat das Ziel nicht erreicht.

Bis September 2021 wurde kein Open-Source-ASIC produziert.

Kommerzielle Implementierungen

Mehrere kommerzielle Organisationen haben Derivate der OpenRISC 1000-Architektur entwickelt, darunter ORC32-1208 von ORSoC und BA12, BA14 und BA22 von Beyond Semiconductor. Dynalith Systems stellt das iNCITE FPGA-Prototyping-Board bereit, auf dem sowohl OpenRISC 1000 als auch BA12 ausgeführt werden können. Flextronics (Flex) und Jennic Limited stellten OpenRISC als Teil einer anwendungsspezifischen integrierten Schaltung (ASIC) her. Samsung verwendet OpenRISC 1000 in seinen DTV-System-on-Chips (SDP83 B-Serie, SDP92 C-Serie, SDP1001/SDP1002 D-Serie, SDP1103/SDP1106 E-Serie). Allwinner Technology verwendet Berichten zufolge einen OpenRISC-Kern in ihrem AR100-Leistungsregler, der Teil des A31 ARM-basierten SoCs ist.

Cadence Design Systems hat damit begonnen, OpenRISC als Referenzarchitektur für die Dokumentation von Werkzeugkettenabläufen zu verwenden (zum Beispiel den UVM-Referenzablauf, der jetzt zu Accellera beigetragen hat ).

TechEdSat , der erste auf der OpenRISC-Architektur basierende Linux-Computer der NASA , wurde im Juli 2012 auf den Markt gebracht und im Oktober 2012 auf der Internationalen Raumstation mit Hardware bereitgestellt, gebaut und getestet von ÅAC Microtec und ÅAC Microtec North America.

Akademische und nicht-kommerzielle Nutzung

Als Open Source hat sich OpenRISC in akademischen und Hobbykreisen als beliebt erwiesen. So haben Stefan Wallentowitz und sein Team am Institut für Integrierte Systeme der Technischen Universität München OpenRISC bei der Erforschung von Mehrkernprozessorarchitekturen eingesetzt . Die Open Source Hardware User Group ( OSHUG ) in Großbritannien hat zwei Mal Sitzungen zu OpenRISC durchgeführt, während der Bastler Sven-Åke Andersson einen umfassenden Blog zu OpenRISC für Anfänger geschrieben hat, der das Interesse der Electronic Engineering Times ( EE Times ) geweckt hat . Sebastian Macke hat jor1k, einen OpenRISC 1000-Emulator in JavaScript implementiert , auf dem Linux mit X Window System und Wayland- Unterstützung läuft .

Toolchain-Unterstützung

Die OpenRISC-Community hat die GNU-Toolchain auf OpenRISC portiert , um die Entwicklung in den Programmiersprachen C und C++ zu unterstützen . Mit dieser Toolchain wurden die Bibliotheken newlib , uClibc , musl (ab Release 1.1.4) und glibc auf den Prozessor portiert. Dynalith bietet OpenIDEA, eine grafische integrierte Entwicklungsumgebung (IDE), die auf dieser Toolchain basiert. Ein Projekt zur Portierung von LLVM auf die OpenRISC 1000-Architektur begann Anfang 2012.

GCC 9 mit OpenRISC-Unterstützung veröffentlicht. [1]

Das OR1K-Projekt stellt einen Befehlssatzsimulator , or1ksim, bereit. Die Flaggschiff-Implementierung, der OR1200, ist ein RTL-Modell ( Register Transfer Level ) in Verilog HDL, aus dem ein SystemC- basiertes zyklusgenaues Modell in ORPSoC erstellt werden kann. Ein Hochgeschwindigkeitsmodell von OpenRISC 1200 ist auch über die Initiative Open Virtual Platforms (OVP) verfügbar (siehe OVPsim ), die von Imperas eingerichtet wurde.

Betriebssystemunterstützung

Linux-Unterstützung

Der Mainline- Linux-Kernel unterstützt seit Version 3.1 OpenRISC. Die in dieser Version zusammengeführte Implementierung ist die 32-Bit-OpenRISC 1000-Familie (or1k). Die frühere OpenRISC 1000-Architektur wurde durch den Mainline-Port abgelöst.

RTOS-Unterstützung

Mehrere Echtzeit-Betriebssysteme (RTOS) wurden auf OpenRISC portiert, darunter RTEMS , FreeRTOS und eCos .

QEMU-Unterstützung

Seit Version 1.2 unterstützt QEMU die Emulation von OpenRISC-Plattformen.

Siehe auch

Verweise

Externe Links