„Reduced Instruction Set Computer“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
K inkonsistentes Markup korrigiert |
Aka (Diskussion | Beiträge) K →Blütezeit: Leerzeichen vor Link eingefügt |
||
(46 dazwischenliegende Versionen von 38 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Weiterleitungshinweis|RISC}} |
{{Weiterleitungshinweis|RISC}} |
||
'''Reduced Instruction Set Computer''' ('''RISC''', {{enS}} für ''Rechner mit reduziertem [[Befehlssatz]]'') ist eine [[Prozessorarchitektur|Designphilosophie]] für [[Prozessor|Computerprozessoren]]. Der Begriff wurde 1980 von [[David A. Patterson]] und Carlo H. Séquin geprägt.<ref>{{Literatur |Autor=David A. Patterson, Carlo H. Sequin |Titel=RISC I: a reduced instruction set VLSI computer |Sammelwerk=25 years of the international symposia on Computer architecture (selected papers) |Reihe=ISCA ’98 |Verlag=Association for Computing Machinery |Ort=New York, NY, USA |Datum=1998 |ISBN=978-1-58113-058-4 |Seiten=216–230 |DOI=10.1145/285930.285981}}</ref> Das Designziel war der Verzicht auf einen komplexen, für die [[Assemblersprache|Assemblerprogrammierung]] komfortablen Befehlssatz hin zu einfach zu dekodierenden und schnell auszuführenden Befehlen („eigentliche Befehlsausführung“ meist nur 1 Takt). Dies ermöglichte zudem höhere [[Taktsignal|Taktfrequenzen]]. |
|||
'''Reduced Instruction Set Computer''' ('''RISC''', {{enS}} für ''Rechner mit reduziertem [[Befehlssatz]]'') ist eine [[Rechnerarchitektur|Designphilosophie]] für [[Prozessor|Computerprozessoren]]. Der Begriff wurde 1980 von [[David A. Patterson]] und [[Carlo H. Séquin]] geprägt.<ref>David A. Patterson, Carlo H. Séquin: RISC I: A Reduced Instruction Set VLSI Computer. (englisch)</ref> |
|||
Das Designziel war der Verzicht auf einen komplexen, für die [[Assemblersprache|Assemblerprogrammierung]] komfortablen [[Befehlssatz]] hin zu einfach zu dekodierenden und extrem schnell auszuführenden Befehlen („eigentliche Befehlsausführung“ meist nur 1 Takt). Dies ermöglichte zudem höhere [[Taktsignal|Taktfrequenz]]en. |
|||
Die RISC entgegengesetzte Designphilosophie wird als [[Complex Instruction Set Computer]] (CISC) bezeichnet. In der heutigen Zeit hat die Unterscheidung in RISC und CISC weitgehend an Bedeutung verloren. Ehemalige RISC-[[Prozessorfamilie]]n haben mittlerweile auch komplexere Befehle aufgenommen, CISC-Prozessoren haben seit Mitte der 1990er Jahre RISC-ähnliche Designkomponenten erhalten und sind ebenfalls [[superskalar]]. Die Dekodierung von Befehlen nimmt unabhängig von RISC oder CISC nur noch einen kleinen Teil der Chipfläche ein. Die Hauptfläche der Chips nehmen mittlerweile Verarbeitungseinheiten ein, die erst seit Anfang der 1990er Jahre in Prozessoren auftauchen. |
Die RISC entgegengesetzte Designphilosophie wird als [[Complex Instruction Set Computer]] (CISC) bezeichnet. In der heutigen Zeit hat die Unterscheidung in RISC und CISC weitgehend an Bedeutung verloren. Ehemalige RISC-[[Prozessorfamilie]]n haben mittlerweile auch komplexere Befehle aufgenommen, CISC-Prozessoren haben seit Mitte der 1990er Jahre RISC-ähnliche Designkomponenten erhalten und sind ebenfalls [[superskalar]]. Die Dekodierung von Befehlen nimmt unabhängig von RISC oder CISC nur noch einen kleinen Teil der Chipfläche ein. Die Hauptfläche der Chips nehmen mittlerweile Verarbeitungseinheiten ein, die erst seit Anfang der 1990er Jahre in Prozessoren auftauchen. |
||
== RISC-Designphilosophie == |
== RISC-Designphilosophie == |
||
{{ |
{{Belege fehlen|z.B: Das Wort „balancieren“ kommt in [[Pipeline (Prozessor)]] nicht vor. --[[Benutzer:Arilou|arilou]] ([[Benutzer Diskussion:Arilou|Diskussion]]) 09:39, 26. Nov. 2012 (CET)}} |
||
⚫ | Befehlssätze von Prozessoren der 1980er Jahre wurden zunehmend größer. Neue Befehle kamen hinzu, alte Befehle, die kaum noch gebraucht wurden, blieben erhalten. Es tauchten sehr komplexe Befehle und Adressierungsarten auf, welche durch Compiler und selbst durch Assemblerprogrammierer schwer nutzbar waren. |
||
⚫ | Der RISC-Prozessor der 1980/90er Jahre sollte unter Anwendung des [[KISS-Prinzip]]s einen einfachen Befehlssatz erhalten, der schnell zu dekodieren und einfach auszuführen ist. Ein RISC-Befehlssatz verzichtet auf komplexe Befehle – insbesondere auf solche, die Speicherzugriffe (langsam) mit arithmetischen Operationen (schnell) kombinieren. Dadurch lassen sich die Stufen der Prozessorpipeline gut abstimmen, die Stufen werden kürzer, die Pipeline lässt sich schneller takten und sie ist besser ausgelastet, da weniger „Blockaden“ (''stalls'') auftreten.<!-- Diese Eigenschaften ergeben große Effizienzgewinne.--> Einfachere Befehle lassen sich darüber hinaus einheitlicher kodieren als bei CISC-Architekturen, was den Dekodieraufwand und damit die Pipelinelatenz weiter verringert. |
||
⚫ | Befehlssätze von Prozessoren der 1980er Jahre |
||
Der klassische RISC-Prozessor der 1980/90er Jahre vermeidet genau dieses. Zurückbesinnung auf das, was unbedingt notwendig ist. Anwendung des [[KISS-Prinzip]]s, ein einfacher Befehlssatz, der einfach zu dekodieren und einfach auszuführen ist. |
|||
⚫ | Ein RISC-Befehlssatz verzichtet auf komplexe Befehle – insbesondere auf solche, die Speicherzugriffe (langsam) mit arithmetischen Operationen (schnell) kombinieren. Dadurch lassen sich die Stufen der Prozessorpipeline gut abstimmen, die Stufen werden kürzer, die Pipeline lässt sich schneller takten und sie ist besser ausgelastet, da weniger „Blockaden“ (''stalls'') auftreten.<!-- Diese Eigenschaften ergeben große Effizienzgewinne.--> Einfachere Befehle lassen sich darüber hinaus einheitlicher kodieren als bei CISC-Architekturen, was den Dekodieraufwand und damit die Pipelinelatenz weiter verringert. |
||
Der Befehlssatz von CISC-Prozessoren ist meist in Form von [[Mikroprogrammsteuerwerk|Microcode]] implementiert. Bei RISC-Prozessoren hingegen sind die einzelnen Befehle fest verdrahtet. |
Der Befehlssatz von CISC-Prozessoren ist meist in Form von [[Mikroprogrammsteuerwerk|Microcode]] implementiert. Bei RISC-Prozessoren hingegen sind die einzelnen Befehle fest verdrahtet. |
||
Das ermöglicht, den Befehlssatz mit relativ wenig |
Das ermöglicht, den Befehlssatz mit relativ wenig [[Transistor]]en umzusetzen; die Befehle werden teilweise parallel und sehr schnell verarbeitet. |
||
Berücksichtigung von damals neuen Erkenntnissen beim Compilerbau |
Berücksichtigung von damals neuen Erkenntnissen beim Compilerbau: |
||
Aus der Verschiebung von Aufgaben der [[Hardware]] ([[CPU]]) in die [[Software]] ([[Compilerbau]]) erfolgte auch eine Optimierung von RISC-CPUs für [[Compiler]], die sich u.a. in vielen, in gleicher Weise benutzbaren [[Register (Computer)| |
* Aus der Verschiebung von Aufgaben der [[Hardware]] ([[CPU]]) in die [[Software]] ([[Compilerbau]]) erfolgte auch eine Optimierung von RISC-CPUs für [[Compiler]], die sich u. a. in vielen, in gleicher Weise benutzbaren [[Register (Computer)|Registern]] niederschlägt. |
||
Hintergrund der Entwicklung von RISC-Architekturen waren: |
Hintergrund der Entwicklung von RISC-Architekturen waren: |
||
Zeile 21: | Zeile 18: | ||
* Genügend Hauptspeicher, um komplexe Optimierungen in Compilern überhaupt erst durchführen zu können.<br />Genügend Hauptspeicher für den etwas längeren Code (den RISC damals mit sich brachte). |
* Genügend Hauptspeicher, um komplexe Optimierungen in Compilern überhaupt erst durchführen zu können.<br />Genügend Hauptspeicher für den etwas längeren Code (den RISC damals mit sich brachte). |
||
* Man wollte viel Rechenleistung aus den damals möglichen 0,2 bis 2 Millionen Transistoren einer CPU herausholen. |
* Man wollte viel Rechenleistung aus den damals möglichen 0,2 bis 2 Millionen Transistoren einer CPU herausholen. |
||
<!-- * Die Freiheit, die es nur bei der Entwicklung neuer Architekturen gibt. Sie ermöglichte es überhaupt, alte Zöpfe abzuschneiden und ganz neue Ansätze auszuprobieren. // "Hype des Neuen"? Bitte belegen. --> |
|||
Folgende Eigenschaften sind typisch für RISC-Prozessoren: |
Folgende Eigenschaften sind typisch für RISC-Prozessoren: |
||
* Alle Befehle folgen dem gleichen oder sehr wenigen Ablaufschemata (Fetch, Decode, |
* Alle Befehle folgen dem gleichen oder sehr wenigen Ablaufschemata (Fetch, Decode, …) |
||
* Sich weitgehend daraus ergebende Eigenschaften: |
* Sich weitgehend daraus ergebende Eigenschaften: |
||
** Die Befehle haben konstante Länge (meist 32 |
** Die Befehle haben eine konstante Länge (meist 32 Bit). |
||
** Geringe Variation der Ausführungszeit, häufig sogar konstant. In ersten Designs betrug die tatsächliche Ausführungszeit oft 1 Takt. Spätere Designs verwenden eher 1 Takt pro Pipelinestufe, erreichen dank [[Superskalarität]] jedoch dennoch einen Durchsatz von 1 Befehl pro Takt.<br />Befehle, die sich nicht so implementieren ließen (Ganzzahldivision), wurden meist weggelassen und durch mehrere einfachere Befehle ersetzt, die diese Aufgabe zusammen erledigten. |
** Geringe Variation der Ausführungszeit, häufig sogar konstant. In ersten Designs betrug die tatsächliche Ausführungszeit oft 1 Takt. Spätere Designs verwenden eher 1 Takt pro Pipelinestufe, erreichen dank [[Superskalarität]] jedoch dennoch einen Durchsatz von 1 Befehl pro Takt.<br />Befehle, die sich nicht so implementieren ließen (Ganzzahldivision), wurden meist weggelassen und durch mehrere einfachere Befehle ersetzt, die diese Aufgabe zusammen erledigten. |
||
** Entkopplung von Speicherlese-Operationen und Arithmetik („[[Load/Store-Architektur]]“). |
** Entkopplung von Speicherlese-Operationen und Arithmetik („[[Load/Store-Architektur]]“). |
||
* Superskalare Architektur, Pipelining mit mindestens 4 Stages (seit 1990er auch bei CISC). |
* Superskalare Architektur, Pipelining mit mindestens 4 Stages (seit 1990er auch bei CISC). |
||
* Entwicklung von CPU und von ([[C (Programmiersprache)|C]]-)Compiler laufen parallel und beeinflussen sich massiv gegenseitig. |
* Entwicklung von CPU und von ([[C (Programmiersprache)|C]]-)Compiler laufen parallel und beeinflussen sich massiv gegenseitig. |
||
* RISC-Architekturen führen zu mehr temporären Zwischenergebnissen, daher haben diese mindestens 16 General-Purpose-Register (mittlerweile auch bei CISC). |
* RISC-Architekturen führen zu mehr temporären Zwischenergebnissen, daher haben diese mindestens 16 General-Purpose-Register (mittlerweile auch bei CISC). |
||
* Häufig Harvard- oder Super-Harvard-Architekturen |
* Häufig [[Harvard-Architektur|Harvard-]] oder Super-Harvard-Architekturen. |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
<!-- |
<!-- |
||
RISC bedeutet nicht, egal wie häufig behauptet |
RISC bedeutet nicht, egal wie häufig behauptet |
||
* zwangsläufig einfache Befehle. RISC-Befehle sind fast genauso komplex wir CISC-Befehle. Es gab einfache und orthogonale Befehlssätze lange vor RISC (z.B. PDP-11). Es gibt sehr komplexe RISC-Befehle. |
* zwangsläufig einfache Befehle. RISC-Befehle sind fast genauso komplex wir CISC-Befehle. Es gab einfache und orthogonale Befehlssätze lange vor RISC (z. B. PDP-11). Es gibt sehr komplexe RISC-Befehle. |
||
* einfache Chips. Pro Kern haben aktuelle Hochleistungs-CPUs 320 bis 350 Millionen Transistoren.<br>Egal, ob POWER8, Sparc M-7 oder Xeon-Haswell. |
* einfache Chips. Pro Kern haben aktuelle Hochleistungs-CPUs 320 bis 350 Millionen Transistoren.<br />Egal, ob POWER8, Sparc M-7 oder Xeon-Haswell. |
||
* keine Spezialbefehle: |
* keine Spezialbefehle: |
||
** Befehle für Prüfsummen und Verschlüsselung findet man bei RISC wie bei CISC. |
** Befehle für Prüfsummen und Verschlüsselung findet man bei RISC wie bei CISC. |
||
** Komplexe Vektorbefehle (für die man vor wenigen Jahren noch 40 Befehle benötigt hätte) findet man auch sowohl bei RISC wie bei CISC. Beispiel: [[ |
** Komplexe Vektorbefehle (für die man vor wenigen Jahren noch 40 Befehle benötigt hätte) findet man auch sowohl bei RISC wie bei CISC. Beispiel: [[Fused multiply-add]] von 8 Gleitkommazahlen mit anschließender Permulation der 8 Ergebnisse. |
||
// sollte erst diskutiert werden. --> |
// sollte erst diskutiert werden. --> |
||
<!-- |
<!-- |
||
Zeile 55: | Zeile 49: | ||
// dass später gewissen Angleichungen stattgefunden haben, ist unstrittig. --> |
// dass später gewissen Angleichungen stattgefunden haben, ist unstrittig. --> |
||
<!-- |
<!-- |
||
Ist man bei RISC-Prozessoren auf höherer [[Höhere Programmiersprache|Hochsprachen]] angewiesen, |
Ist man bei RISC-Prozessoren auf höherer [[Höhere Programmiersprache|Hochsprachen]] angewiesen, |
||
weil Assembler-Programmierung auf ihnen kompliziert geworden ist? |
weil Assembler-Programmierung auf ihnen kompliziert geworden ist? |
||
Nein! Selbst für Assemblerprogrammierer ist der reguläre Befehlssatz mit mehr Registern angenehmer als z.B. ein x86-Befehlssatz. Man kann hervorragend mit einem Makroassembler relativ komplexen Code schreiben, was so bei den irregulären Befehlssätzen mit zusätzlicher Registerknappheit vieler CISC-Prozessoren nicht geht. RISC ist nicht für Assemblerprogrammierung vorgesehen, es ist weitaus weniger notwendig dies zu tun, es ist aber genauso machbar. |
Nein! Selbst für Assemblerprogrammierer ist der reguläre Befehlssatz mit mehr Registern angenehmer als z. B. ein x86-Befehlssatz. Man kann hervorragend mit einem Makroassembler relativ komplexen Code schreiben, was so bei den irregulären Befehlssätzen mit zusätzlicher Registerknappheit vieler CISC-Prozessoren nicht geht. RISC ist nicht für Assemblerprogrammierung vorgesehen, es ist weitaus weniger notwendig dies zu tun, es ist aber genauso machbar. |
||
// etwas |
// etwas „proletiger“ Stil |
||
--> |
--> |
||
== Typische Eigenschaften von RISC-Prozessoren == |
== Typische Eigenschaften von RISC-Prozessoren == |
||
Es gibt keine formale Definition des Begriffes RISC. Die Mehrheit der RISC-Prozessoren besitzt folgende Eigenschaften: |
|||
=== Superskalarität === |
=== Superskalarität === |
||
Zeile 70: | Zeile 64: | ||
=== Load-Store-Architektur === |
=== Load-Store-Architektur === |
||
Bei einer [[Load/Store-Architektur|Load-Store-Architektur]] greifen nur Load- und Store-Befehle auf den [[Hauptspeicher]] zu. Alle anderen Befehle arbeiten ausschließlich mit [[Operator (Mathematik)#Operand|Registeroperanden]] und [[Literal]]en. Diese Load- und Store-Befehle besitzen keine komplexen [[Adressierung (Rechnerarchitektur)|Adressmodi]], stattdessen werden die Adressen in [[Register (Computer)# |
Bei einer [[Load/Store-Architektur|Load-Store-Architektur]] greifen nur Load- und Store-Befehle auf den [[Hauptspeicher]] zu. Alle anderen Befehle arbeiten ausschließlich mit [[Operator (Mathematik)#Operand|Registeroperanden]] und [[Literal]]en. Diese Load- und Store-Befehle besitzen keine komplexen [[Adressierung (Rechnerarchitektur)|Adressmodi]], stattdessen werden die Adressen in [[Register (Computer)#Frei verwendbare Register|frei verwendbaren Registern]] berechnet. |
||
Allerdings weisen nur wenige RISC-CPUs eine Load-Store-Architektur auf, die meisten erlauben einen Speicheroperanden. |
Allerdings weisen nur wenige RISC-CPUs eine klassische Load-Store-Architektur auf, die meisten erlauben einen Speicheroperanden. |
||
=== Große Anzahl frei verwendbarer Register und Drei-Adress-Code === |
=== Große Anzahl frei verwendbarer Register und Drei-Adress-Code === |
||
Um dem [[Compiler]] eine effiziente Codeerzeugung und Programmoptimierung zu ermöglichen, haben RISC-Prozessoren eine große Anzahl [[Register (Computer)# |
Um dem [[Compiler]] eine effiziente Codeerzeugung und Programmoptimierung zu ermöglichen, haben RISC-Prozessoren eine große Anzahl [[Register (Computer)#Frei verwendbare Register|frei verwendbarer Register]] (typisch sind 16 oder 32) und Befehle im [[Adressrechner (Maschinenbefehl)#3-Adressbefehle / typisch RISC-Rechner|Drei-Adress-Code]]. Befehle im Drei-Adress-Code haben ein Ziel- und zwei Quellregister. Der [[Berkeley RISC|Berkeley-RISC-Prozessor]] und seine Nachkommen (u. a. [[Sun SPARC]], [[AMD Am29000]] und [[Intel i960]]) besitzen zusätzlich [[Registerfenster]], die eine besonders große Anzahl an Registern erlauben und den Aufruf von [[Unterprogramm]]en beschleunigen. |
||
=== Befehle mit fester Länge und wenigen Formaten === |
=== Befehle mit fester Länge und wenigen Formaten === |
||
Alle Befehle sind gleich lang und es gibt nur wenige [[Befehlssatz|Befehlsformate]]. Das heißt, dass bei fast allen Befehlen die Lage von [[Opcode]], Registeroperanden und [[Literal]]en gleich ist, was das Dekodieren wesentlich vereinfacht und damit beschleunigt. Typisch sind 32 |
Alle Befehle sind gleich lang und es gibt nur wenige [[Befehlssatz|Befehlsformate]]. Das heißt, dass bei fast allen Befehlen die Lage von [[Opcode]], Registeroperanden und [[Literal]]en gleich ist, was das Dekodieren wesentlich vereinfacht und damit beschleunigt. Typisch sind 32 Bit breite Befehlsworte und fünf verschiedene Befehlsformate. Erwähnenswerte Ausnahmen sind [[IBM 801|IBMs ursprünglicher 801]], [[ARM-Architektur#Thumb-Befehlssatz|ARMs Thumb]], microMIPS und [[Infineon TriCore]]. Diese RISC-Architekturen benutzen variable Befehlslängen von 16 und 32 Bit, um so den Programmcode zu verkürzen. |
||
== Geschichte == |
== Geschichte == |
||
=== Anfänge === |
=== Anfänge === |
||
Die Anfänge von RISC reichen bis in die 60er Jahre zurück. Ende der 70er und Anfang der 80er Jahre kamen schließlich mehrere Faktoren zusammen, die zu einer neuen Designphilosophie und einer Welle neuer Prozessordesigns führten:<ref>George Radin: The 801 Minicomputer, 1976. (englisch)</ref><ref>David A. Patterson, David R. Ditzel |
Die Anfänge von RISC reichen bis in die 60er Jahre zurück. Ende der 70er und Anfang der 80er Jahre kamen schließlich mehrere Faktoren zusammen, die zu einer neuen Designphilosophie und einer Welle neuer Prozessordesigns führten:<ref>George Radin: The 801 Minicomputer, 1976. (englisch)</ref><ref>{{Literatur |Autor=David A. Patterson, David R. Ditzel |Titel=The case for the reduced instruction set computer |Sammelwerk=Readings in computer architecture |Verlag=Morgan Kaufmann Publishers Inc. |Ort=San Francisco, CA, USA |Datum=2000 |ISBN=978-1-55860-539-8 |Seiten=135–143 |Sprache=en |Online=https://dl.acm.org/doi/pdf/10.1145/641914.641917?casa_token=5ZZkCVUd-e8AAAAA:USLKyyHZHpRHHyEusoMoBg5dOjiBVVBBTS1B5YLhUq6KC450lh95GOAPMj4TBmWkGV1JnSWfgBEv |Format=PDF |Abruf=2021-09-12 |DOI=10.1145/641914.641917}}</ref><ref>{{Literatur |Autor=David A. Patterson |Titel=Reduced instruction set computers |Sammelwerk=Communications of the ACM |Band=28 |Nummer=1 |Datum=1985-01-02 |Seiten=8–21 |Sprache=en |DOI=10.1145/2465.214917}}</ref><ref>{{Literatur |Autor=John Cocke, V. Markstein |Titel=The evolution of RISC technology at IBM |Sammelwerk=IBM Journal of Research and Development |Band=34 |Nummer=1 |Datum=1990-01 |Seiten=4–11 |Sprache=en |DOI=10.1147/rd.341.0004}}</ref><ref>{{Literatur |Autor=M. Alsup |Titel=Motorola’s 88000 family architecture |Sammelwerk=IEEE Micro |Band=10 |Nummer=3 |Datum=1990-06 |Seiten=48–66 |Sprache=en |DOI=10.1109/40.56325}}</ref> |
||
* Durch die Einführung der [[Cache#Cachehierarchie|Speicherhierarchie]] aus schnellen [[Cache |
* Durch die Einführung der [[Cache#Cachehierarchie|Speicherhierarchie]] aus schnellen [[Cache]]s und billigem [[Hauptspeicher]] wurden die Geschwindigkeitsvorteile der [[Mikroprogrammierung|Mikroprogrammspeicher]] hinfällig. |
||
* Die [[Compiler]] wurden aufwändiger und erzeugten schnelleren Code, etwa indem sie die Registervergabe durch [[ |
* Die [[Compiler]] wurden aufwändiger und erzeugten schnelleren Code, etwa indem sie die Registervergabe durch [[Färbung (Graphentheorie)|Graphfärbung]] lösten, gemeinsame Teilausdrücke entfernten, schnellere äquivalente Anweisungen verwendeten, durch das statische Auswerten von Ausdrücken zur Übersetzungszeit und durch das Entfernen von totem Programmcode. Viele dieser Optimierungen können auf [[Mikroprogrammierung|mikroprogrammierten]] Prozessoren nicht ihr volles Potential ausschöpfen, weil sie nicht direkt auf den internen [[Mikroprogrammierung|Mikrocode]] angewendet werden können. |
||
* Fortschritte in der [[Strukturgröße|Halbleiter-Integration]] erlaubten es, schnelle, komplexere Prozessoren aus immer mehr Transistoren auf einem [[Integrierter Schaltkreis|Chip]] zu integrieren. Zusammen mit neuen VLSI-CAD-Werkzeugen führte die Integration zu einer deutlich höheren Produktivität, so dass neue Entwicklungen mit relativ wenig Personal möglich wurden. Die kürzeren Entwicklungszyklen erlaubten eine schnelle Evolution der Designphilosophie. |
* Fortschritte in der [[Strukturgröße|Halbleiter-Integration]] erlaubten es, schnelle, komplexere Prozessoren aus immer mehr Transistoren auf einem [[Integrierter Schaltkreis|Chip]] zu integrieren. Zusammen mit neuen VLSI-CAD-Werkzeugen führte die Integration zu einer deutlich höheren Produktivität, so dass neue Entwicklungen mit relativ wenig Personal möglich wurden. Die kürzeren Entwicklungszyklen erlaubten eine schnelle Evolution der Designphilosophie. |
||
* Die [[DARPA |
* Die [[DARPA]], die Forschungsagentur des amerikanischen Verteidigungsministeriums, unterstützte in dieser Zeit gezielt Projekte zur Entwicklung [[integrierter Schaltkreis]]e, darunter auch das [[Berkeley RISC|RISC-Projekt]] in Berkeley, das [[Stanford MIPS|MIPS-Projekt]] in Stanford und viele weitere Nachfolgeprojekte. |
||
Wichtige Wegbereiter für RISC waren die [[CDC 6600]] ([[Seymour Cray]] und [[Jim Thornton]], 1964) und [[IBM ACS-1|IBMs ACS-Projekt]] ([[Jack Bertram]] und [[John Cocke]], ab 1963). Einige frühe RISC-Projekte und -Architekten: |
Wichtige Wegbereiter für RISC waren die [[CDC 6600]] ([[Seymour Cray]] und [[Jim Thornton]], 1964) und [[IBM ACS-1|IBMs ACS-Projekt]] ([[Jack Bertram]] und [[John Cocke]], ab 1963). Einige frühe RISC-Projekte und -Architekten: |
||
Zeile 94: | Zeile 88: | ||
=== Blütezeit === |
=== Blütezeit === |
||
Als nach anfänglichen Zweifeln die Vorteile von RISC offensichtlich wurden, begannen praktisch alle Computerhersteller damit, eigene RISC-Architekturen zu entwickeln: |
Als nach anfänglichen Zweifeln die Vorteile von RISC offensichtlich wurden, begannen praktisch alle Computerhersteller damit, eigene RISC-Architekturen zu entwickeln: |
||
* ab 1983 [[ARM-Architektur|Acorn Risc Machine]] ([[Sophie Wilson]]) |
* ab 1983 [[ARM-Architektur|Acorn Risc Machine]] ([[Sophie Wilson]], [[Steve Furber]]) |
||
* ab 1983 [[MIPS-Architektur|MIPS]] ([[Craig Hansen]]) |
* ab 1983 [[MIPS-Architektur|MIPS]] ([[Craig Hansen]]) |
||
* ab 1984 [[AMD Am29000]] ([[Brian Case]] und [[Ole Moller]]) |
* ab 1984 [[AMD Am29000]] ([[Brian Case]] und [[Ole Moller]]) |
||
Zeile 101: | Zeile 95: | ||
* ab 1984 [[Intel i960]] ([[Glen Myers]]) |
* ab 1984 [[Intel i960]] ([[Glen Myers]]) |
||
* ab 1985 [[IBM Power]] ([[John Cocke]], [[Greg Grohoski]] und [[Rich Oehler]]) |
* ab 1985 [[IBM Power]] ([[John Cocke]], [[Greg Grohoski]] und [[Rich Oehler]]) |
||
* ab 1985 [[Sun SPARC|Sun Scalable Processor ARChitecture]] ( |
* ab 1985 [[Sun SPARC|Sun Scalable Processor ARChitecture]] (Robert Garner)<!-- ursprünglichen Link auf falschen Robert Garner entfernt --> |
||
* ab 1989 [[DEC Alpha]] ([[Richard Sites|Dick Sites]] und [[Richard Witek|Rich Witek]]) |
* ab 1989 [[DEC Alpha]] ([[Richard Sites|Dick Sites]] und [[Richard Witek|Rich Witek]]) |
||
* ab 1991 [[Apple]]–[[IBM]]–[[Motorola]] [[PowerPC]] ([[Rich Oehler]], [[Keith Diefendorff]], [[Ron Hochsprung]] und [[John Sell]]) |
* ab 1991 [[Apple]]–[[IBM]]–[[Motorola]] [[PowerPC]] ([[Rich Oehler]], [[Keith Diefendorff]], [[Ron Hochsprung]] und [[John Sell]]) |
||
Zeile 107: | Zeile 101: | ||
== Vergleich zu CISC == |
== Vergleich zu CISC == |
||
Die Liste der [[Standard Performance Evaluation Corporation|SPEC]] (''Standard Performance Evaluation Corporation'') mit den |
Die Liste der [[Standard Performance Evaluation Corporation|SPEC]] (''Standard Performance Evaluation Corporation'') mit den |
||
schnellsten Prozessoren ist mittlerweile sehr heterogen. Man findet „RISC-Prozessoren“ wie „CISC-Prozessoren“ wie auch Prozessoren, die von |
schnellsten Prozessoren ist mittlerweile sehr heterogen. Man findet „RISC-Prozessoren“ wie „CISC-Prozessoren“ wie auch Prozessoren, die von Grafikprozessoren abstammen. Wichtig für Supercomputer ist die Skalierbarkeit der Architektur für den parallelen Betrieb zehntausender bis hunderttausender Kerne. Mittlerweile sind die überwiegende Anzahl der Prozessoren der [[TOP500]] x64-kompatible „CISC-Prozessoren“ (76 Prozent: Intel Xeon und AMD Opteron). Als „RISC-Prozessor“ steht der IBM [[Blue Gene]] (PPC) mit 18 Prozent ganz vorn. |
||
Bei aktuellen Großrechnern sind reine/weitgehende RISC-Chips inzwischen jedoch fast vollständig von den Mikroprozessoren der Intel x86-Linie verdrängt, die einen RISC-Kern mit einer CISC-Emulationsschicht verbinden. Deren Ursprung aus dem erfolgreichen Massenmarkt-Einsatz macht die Kleinserien der Großrechner-RISC-Chips unrentabel. DEC Alpha wurde eingestellt, ebenso HPs PA-RISC, Suns SPARCs werden nicht mehr produziert, PowerPC-Chips fertigt nur noch IBM selbst, Renesas SuperH hat kaum mehr Verbreitung, XScale, MIPS und StrongARM sind in Großrechnern selten oder verschwunden. (Stand 2011) |
Bei aktuellen Großrechnern sind reine/weitgehende RISC-Chips inzwischen jedoch fast vollständig von den Mikroprozessoren der Intel x86-Linie verdrängt, die einen RISC-Kern mit einer CISC-Emulationsschicht verbinden. Deren Ursprung aus dem erfolgreichen Massenmarkt-Einsatz macht die Kleinserien der Großrechner-RISC-Chips unrentabel. DEC Alpha wurde eingestellt, ebenso HPs PA-RISC, Suns SPARCs werden nicht mehr produziert, PowerPC-Chips fertigt nur noch IBM selbst, Renesas SuperH hat kaum mehr Verbreitung, XScale, MIPS und StrongARM sind in Großrechnern selten oder verschwunden. (Stand 2011) |
||
RISC-Prozessoren bilden das Gegenstück zu CISC-Prozessoren. Heutige RISC-Prozessoren überschreiten die Grenzen der engen Definition und enthalten auch komplexere Befehle. So wurde der Befehlssatz des PowerPC-Prozessors, der von IBM und Freescale (ehem. [[Motorola]]) hergestellt wird (und beispielsweise bis zum Wechsel zu Intel-CPUs in den Computern von [[Apple]] Verwendung fand), durch eine Befehlserweiterung namens „[[AltiVec]]“ ergänzt, die in den PowerPC-Prozessoren spezielle [[Multimedia]]fähigkeiten nachrüstet (vgl. [[Multi Media Extension|MMX]] bei [[x86-Prozessor]]en). Allerdings folgt auch AltiVec den |
RISC-Prozessoren bilden das Gegenstück zu CISC-Prozessoren. Heutige RISC-Prozessoren überschreiten die Grenzen der engen Definition und enthalten auch komplexere Befehle. So wurde der Befehlssatz des PowerPC-Prozessors, der von IBM und Freescale (ehem. [[Motorola]]) hergestellt wird (und beispielsweise bis zum Wechsel zu Intel-CPUs in den Computern von [[Apple]] Verwendung fand), durch eine Befehlserweiterung namens „[[AltiVec]]“ ergänzt, die in den PowerPC-Prozessoren spezielle [[Multimedia]]fähigkeiten nachrüstet (vgl. [[Multi Media Extension|MMX]] bei [[x86-Prozessor]]en). Allerdings folgt auch AltiVec den RISC-Eigenschaften. |
||
Ende der 1980er-Jahre brachte der britische Hersteller [[Acorn]] den [[Heimcomputer]] [[Acorn Archimedes|Archimedes]] mit einem speziell konzipierten RISC-Prozessor auf den Markt, dessen Leistungsfähigkeit die der damals in Heimcomputern eingesetzten Prozessoren weit in den Schatten stellte. Diese '''A'''corn '''R'''isc '''M'''achine war der Ursprung der heutigen [[ARM-Architektur|ARM]]-Prozessoren, die in [[Eingebettetes System|eingebetteten Systemen]] (zum Beispiel Mobiltelefonen) sehr verbreitet sind. |
Ende der 1980er-Jahre brachte der britische Hersteller [[Acorn]] den [[Heimcomputer]] [[Acorn Archimedes|Archimedes]] mit einem speziell konzipierten RISC-Prozessor auf den Markt, dessen Leistungsfähigkeit die der damals in Heimcomputern eingesetzten Prozessoren weit in den Schatten stellte. Diese '''A'''corn '''R'''isc '''M'''achine war der Ursprung der heutigen [[ARM-Architektur|ARM]]-Prozessoren, die in [[Eingebettetes System|eingebetteten Systemen]] (zum Beispiel Mobiltelefonen) sehr verbreitet sind. |
||
== Praktische Bedeutung – Systeme mit RISC-CPU == |
== Praktische Bedeutung – Systeme mit RISC-CPU == |
||
* [[ARM Limited|ARM]] – Die [[ |
* [[ARM Limited|ARM]] – Die [[Arm-Architektur]] ist in Stückzahlen gemessen wohl die erfolgreichste RISC-Familie, sie findet sich in vielen Systemen,<ref>ARM-Beispiele: |
||
* [[Apple]]: [[Newton (PDA)|Newton]] [[iPod]]s (ARM7TDMI [[ |
* [[Apple]]: [[Newton (PDA)|Newton]] [[iPod]]s (ARM7TDMI [[System-on-a-Chip|SoC]]), [[iPhone]] (Samsung ARM1176JZF, [[Apple A4]]), [[iPod touch]] (ARM11), [[iPad]] ([[Apple A4]] bzw. [[Apple A5]]), [[Macintosh|Mac]] ([[Apple M1]]) |
||
* [[Canon]]: IXY Digital 700 Kamera (Eigenentwicklung, ARM-basiert) |
* [[Canon]]: IXY Digital 700 Kamera (Eigenentwicklung, ARM-basiert) |
||
* [[Hewlett-Packard]]: HP-49/50 [[Grafikfähiger Taschenrechner]] (ARM9TDMI) |
* [[Hewlett-Packard]]: HP-49/50 [[Grafikfähiger Taschenrechner]] (ARM9TDMI) |
||
Zeile 124: | Zeile 118: | ||
* [[Nintendo]]: Game Boy Advance (ARM7), Nintendo DS (ARM7, ARM9) |
* [[Nintendo]]: Game Boy Advance (ARM7), Nintendo DS (ARM7, ARM9) |
||
* [[HP Palm|Palm]]: PocketPC PDAs und Smartphones (Intel [[XScale]] und Samsung SC32442 – ARM9) |
* [[HP Palm|Palm]]: PocketPC PDAs und Smartphones (Intel [[XScale]] und Samsung SC32442 – ARM9) |
||
⚫ | * [[Sony]]: verschiedene Mobiltelefone, Network Walkman (Eigenentwicklung, ARM-basiert)</ref> bei denen es um relativ hohe Leistung, geringen Stromverbrauch und niedrige Kosten geht (typisch: 100–500 MHz, teilweise bis zu 2,7 GHz;<ref>AnandTech: [http://www.anandtech.com/show/8687/the-nexus-6-review The Motorola Nexus 6]</ref> Stand 2015). Die ARM Ltd., die diese Systeme konstruiert, baut allerdings selbst keine Prozessoren, sondern verkauft lediglich Lizenzen für das Design an ihre Kunden. Mittlerweile sollen 10 Milliarden ARM-CPUs im Umlauf sein, die z. B. zum Einsatz kommen in [[Tabletcomputer|Tablets]], [[Digitalkamera]]s, [[Grafikfähiger Taschenrechner|grafikfähigen Taschenrechnern]], [[Network Attached Storage|NAS]], [[Router]]n, [[Spielkonsole]]n, [[Personal Digital Assistant|PDAs]], [[Smartphone]]s und verschiedenen Mobiltelefonen. Ein Einsatz für energiesparende Server wird für die nahe bis mittlere Zukunft angestrebt, weshalb ARM im Jahre 2012 erste Prozessoren mit [[64-Bit-Architektur]] vorstellte.<ref>Heise Online: [http://heise.de/-1368660 ARM bläst zum Angriff auf 64-Bit-Server]</ref><ref>ARM-Presseerklärung: [http://www.arm.com/about/newsroom/arm-launches-cortex-a50-series-the-worlds-most-energy-efficient-64-bit-processors.php ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors]</ref> |
||
* [[Sony]]: verschiedene Mobiltelefone, Network Walkman (Eigenentwicklung, ARM-basiert) |
|||
⚫ | </ref> bei denen es um relativ hohe Leistung, geringen Stromverbrauch und niedrige Kosten geht (typisch: 100–500 MHz, Stand |
||
* [[IBM Power|Power Architecture]] – Eine Entwicklung von [[IBM]] und [[Freescale]] (früher [[Motorola]]), ist heute die am weitesten verbreitete RISC-CPU im High-End-Bereich, sie ist eine Architektur mit zahlreichen Einsatzgebieten,<ref>PowerPC Beispiele: |
* [[IBM Power|Power Architecture]] – Eine Entwicklung von [[IBM]] und [[Freescale]] (früher [[Motorola]]), ist heute die am weitesten verbreitete RISC-CPU im High-End-Bereich, sie ist eine Architektur mit zahlreichen Einsatzgebieten,<ref>PowerPC Beispiele: |
||
* Apple: PowerPC-basierte [[Macintosh]] Computer |
* Apple: PowerPC-basierte [[Macintosh]] Computer |
||
* [[Cisco]]: Router und Switches für den kommerziellen Einsatz bis zur Enterprise-Klasse |
* [[Cisco]]: Router und Switches für den kommerziellen Einsatz bis zur Enterprise-Klasse |
||
* IBM: Supercomputer, Mittelklasse-Server und Workstations |
* IBM: Supercomputer, Mittelklasse-Server und Workstations |
||
* Nintendo: [[Nintendo |
* Nintendo: [[Nintendo GameCube|Gamecube]] und [[Wii]] Spielkonsolen |
||
* [[Microsoft]]: [[Xbox 360]] Spielkonsole |
* [[Microsoft]]: [[Xbox 360]] Spielkonsole |
||
* Motorola: verschiedene Bordcomputer für PKW und andere Fahrzeuge |
* Motorola: verschiedene Bordcomputer für PKW und andere Fahrzeuge |
||
<!-- ** Sony: [[PlayStation 3]] Spielkonsole // die PS3 erzielt ihre Leistung v.a. aus den SPEs, und die sind zwar RISC, aber nicht PowerPC --></ref> angefangen bei leistungsstarken [[Eingebettetes System|eingebetteten Systemen]] wie Druckern oder [[Router]]n, über Workstations, bis hin zu Supercomputern. |
<!-- ** Sony: [[PlayStation 3]] Spielkonsole // die PS3 erzielt ihre Leistung v.a. aus den SPEs, und die sind zwar RISC, aber nicht PowerPC --></ref> angefangen bei leistungsstarken [[Eingebettetes System|eingebetteten Systemen]] wie Druckern oder [[Router]]n, über Workstations, bis hin zu Supercomputern. |
||
* [[MIPS-Architektur|MIPS]] – Anfangs wurden die CPUs vor allem in klassischen [[Workstation]]s und Servern eingesetzt, heute liegt der Haupteinsatzbereich, ähnlich wie bei ARM, im Bereich [[Eingebettetes System|Eingebettete Systeme]].<ref>MIPS-Beispiele: |
* [[MIPS-Architektur|MIPS]] – Anfangs wurden die CPUs vor allem in klassischen [[Workstation]]s und Servern eingesetzt, heute liegt der Haupteinsatzbereich, ähnlich wie bei ARM, im Bereich [[Eingebettetes System|Eingebettete Systeme]].<ref>MIPS-Beispiele: |
||
* [[AVM GmbH|AVM]]: [[ |
* [[AVM GmbH|AVM]]: [[Fritz!Box]] WLAN/Telefonie-Router |
||
* [[Silicon Graphics|SGI]]: Server und Workstations wie Indy, Onyx und Origin (R2000 bis R12000) |
* [[Silicon Graphics|SGI]]: Server und Workstations wie Indy, Onyx und Origin (R2000 bis R12000) |
||
* Sony [[PlayStation]], [[PlayStation Portable]] Spielkonsolen |
* Sony [[PlayStation]], [[PlayStation Portable]] Spielkonsolen |
||
* [[Nintendo 64]] Spielkonsole |
* [[Nintendo 64]] Spielkonsole |
||
* Linksys [[WRT54G]] und zahlreiche ähnliche Geräte, siehe auch [http://wiki.openwrt.org/TableOfHardware OpenWRT unterstützte Router] |
* Linksys [[WRT54G]] und zahlreiche ähnliche Geräte, siehe auch [http://wiki.openwrt.org/TableOfHardware OpenWRT unterstützte Router] |
||
* [[MikroTik]], siehe [[:en:MikroTik|MikroTik]] in der englischsprachigen Wikipedia; [[ |
* [[MikroTik]], siehe [[:en:MikroTik|MikroTik]] in der englischsprachigen Wikipedia; RouterBOARD</ref> Praktisch alle MIPS-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel [[Itanium]] migriert. |
||
⚫ | |||
</ref> Praktisch alle MIPS-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel [[Itanium]] migriert. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
* [[Fujitsu]] Supercomputer, Mittelklasseserver und Workstations |
* [[Fujitsu]] Supercomputer, Mittelklasseserver und Workstations |
||
* Sun: Supercomputer, Mittelklasseserver und Workstations |
* Sun: Supercomputer, Mittelklasseserver und Workstations</ref> |
||
</ref> |
|||
* Hewlett-Packards [[PA-RISC]] – Bis zur Einführung des Intel Itanium wurden PA-RISC-CPUs vor allem in klassischen [[Workstation]]s und Servern von HP eingesetzt.<ref>PA-RISC-Beispiele: |
* Hewlett-Packards [[PA-RISC]] – Bis zur Einführung des Intel Itanium wurden PA-RISC-CPUs vor allem in klassischen [[Workstation]]s und Servern von HP eingesetzt.<ref>PA-RISC-Beispiele: |
||
* Hewlett-Packard: Supercomputer, Mittelklasse-Server und Workstations, aber auch [[Grafikkarte]]n |
* Hewlett-Packard: Supercomputer, Mittelklasse-Server und Workstations, aber auch [[Grafikkarte]]n |
||
* Hitachi: Workstations |
* Hitachi: Workstations |
||
* Stratus: Stratus-Continuum-Serie, höchstverfügbare Supercomputer |
* Stratus: Stratus-Continuum-Serie, höchstverfügbare Supercomputer</ref> Die CPU-Familie wird nicht mehr weiterentwickelt. Praktisch alle PA-RISC-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel Itanium migriert. |
||
</ref> Die CPU-Familie wird nicht mehr weiterentwickelt. Praktisch alle PA-RISC-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel Itanium migriert. |
|||
* [[DEC Alpha]] – Bis zur Einführung der Intel Itanium-CPUs wurden Alpha-CPUs vor allem in klassischen [[Workstation]]s und Servern von Digital, Compaq und HP eingesetzt. Die Alpha-Plattform war frei verfügbar und wurde von zahlreichen [[Original Equipment Manufacturer|OEM]]-Partnern genutzt. Die CPU-Familie wird nicht mehr weiterentwickelt. Praktisch alle Alpha-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel Itanium migriert. |
* [[DEC Alpha]] – Bis zur Einführung der Intel Itanium-CPUs wurden Alpha-CPUs vor allem in klassischen [[Workstation]]s und Servern von Digital, Compaq und HP eingesetzt. Die Alpha-Plattform war frei verfügbar und wurde von zahlreichen [[Original Equipment Manufacturer|OEM]]-Partnern genutzt. Die CPU-Familie wird nicht mehr weiterentwickelt. Praktisch alle Alpha-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel Itanium migriert. |
||
* [[Hitachi (Unternehmen)|Hitachis]] [[SuperH]], war weit verbreitet z. B. in |
* [[Hitachi (Unternehmen)|Hitachis]] [[SuperH]], war weit verbreitet z. B. in den Spielkonsolen [[Sega 32X|Sega Super 32X]], [[Sega Saturn]] und [[Dreamcast]]. SuperH wird heute ähnlich wie die ARM-Plattform hauptsächlich in [[Embedded Systems|eingebetteten Systemen]] eingesetzt. |
||
* [[Atmel AVR]] wird in [[Embedded Systems|eingebetteten Systemen]] eingesetzt, wie z. B. [[Xbox]]-Steuerkontrollern, aber auch in [[BMW]]-Automobilen. |
* [[Atmel AVR]] wird in [[Embedded Systems|eingebetteten Systemen]] eingesetzt, wie z. B. [[Xbox]]-Steuerkontrollern, aber auch in [[BMW]]-Automobilen. |
||
* Das [[OpenRISC]]-Projekt greift die Philosophie [[Freie Hardware|freier Hardware]] auf. Ziel des Projektes ist es, |
* Das [[OpenRISC]]-Projekt greift die Philosophie [[Freie Hardware|freier Hardware]] auf. Ziel des Projektes ist es, eine CPU zu erstellen, auf der [[Linux]] läuft und das – im Sinne [[Freie Software|freier Software]] – frei verfügbar ist.<ref>{{Webarchiv|url=http://www.ppcnux.de/?q=opencore-openrisc |text=OpenCore – OpenRISC|wayback=20110824042454}} – Artikel bei ''PPCNUX'', vom 28. Juni 2011.</ref> |
||
* [[RISC-V]] ist ein weiteres freies Instruktionsset basierend auf den RISC-Prinzipien. |
|||
== Weblinks == |
== Weblinks == |
||
* [http://cre.fm/cre151 CRE151 Die ARM-Architektur] [[Tim Pritlove]] und [[Harald Welte]] gehen in diesem [[Podcast]] auch auf die Unterschiede von RISC und CISC-Prozessoren ein. |
* [http://cre.fm/cre151 CRE151 Die ARM-Architektur] [[Tim Pritlove]] und [[Harald Welte]] gehen in diesem [[Podcast]] auch auf die Unterschiede von RISC und CISC-Prozessoren ein. |
||
* [https://riscv.org/ RISC-V International], [[Non-Profit-Organisation]] |
|||
== Einzelnachweise und Anmerkungen == |
== Einzelnachweise und Anmerkungen == |
||
Zeile 164: | Zeile 157: | ||
{{Navigationsleiste Prozessorarchitektur}} |
{{Navigationsleiste Prozessorarchitektur}} |
||
{{Normdaten|TYP=s|GND=4191875-7|LCCN=sh88006799}} |
|||
[[Kategorie:Prozessorarchitektur nach Befehlssatz]] |
[[Kategorie:Prozessorarchitektur nach Befehlssatz]] |
Aktuelle Version vom 3. Dezember 2024, 09:17 Uhr
Reduced Instruction Set Computer (RISC, englisch für Rechner mit reduziertem Befehlssatz) ist eine Designphilosophie für Computerprozessoren. Der Begriff wurde 1980 von David A. Patterson und Carlo H. Séquin geprägt.[1] Das Designziel war der Verzicht auf einen komplexen, für die Assemblerprogrammierung komfortablen Befehlssatz hin zu einfach zu dekodierenden und schnell auszuführenden Befehlen („eigentliche Befehlsausführung“ meist nur 1 Takt). Dies ermöglichte zudem höhere Taktfrequenzen.
Die RISC entgegengesetzte Designphilosophie wird als Complex Instruction Set Computer (CISC) bezeichnet. In der heutigen Zeit hat die Unterscheidung in RISC und CISC weitgehend an Bedeutung verloren. Ehemalige RISC-Prozessorfamilien haben mittlerweile auch komplexere Befehle aufgenommen, CISC-Prozessoren haben seit Mitte der 1990er Jahre RISC-ähnliche Designkomponenten erhalten und sind ebenfalls superskalar. Die Dekodierung von Befehlen nimmt unabhängig von RISC oder CISC nur noch einen kleinen Teil der Chipfläche ein. Die Hauptfläche der Chips nehmen mittlerweile Verarbeitungseinheiten ein, die erst seit Anfang der 1990er Jahre in Prozessoren auftauchen.
RISC-Designphilosophie
[Bearbeiten | Quelltext bearbeiten]Befehlssätze von Prozessoren der 1980er Jahre wurden zunehmend größer. Neue Befehle kamen hinzu, alte Befehle, die kaum noch gebraucht wurden, blieben erhalten. Es tauchten sehr komplexe Befehle und Adressierungsarten auf, welche durch Compiler und selbst durch Assemblerprogrammierer schwer nutzbar waren. Der RISC-Prozessor der 1980/90er Jahre sollte unter Anwendung des KISS-Prinzips einen einfachen Befehlssatz erhalten, der schnell zu dekodieren und einfach auszuführen ist. Ein RISC-Befehlssatz verzichtet auf komplexe Befehle – insbesondere auf solche, die Speicherzugriffe (langsam) mit arithmetischen Operationen (schnell) kombinieren. Dadurch lassen sich die Stufen der Prozessorpipeline gut abstimmen, die Stufen werden kürzer, die Pipeline lässt sich schneller takten und sie ist besser ausgelastet, da weniger „Blockaden“ (stalls) auftreten. Einfachere Befehle lassen sich darüber hinaus einheitlicher kodieren als bei CISC-Architekturen, was den Dekodieraufwand und damit die Pipelinelatenz weiter verringert. Der Befehlssatz von CISC-Prozessoren ist meist in Form von Microcode implementiert. Bei RISC-Prozessoren hingegen sind die einzelnen Befehle fest verdrahtet. Das ermöglicht, den Befehlssatz mit relativ wenig Transistoren umzusetzen; die Befehle werden teilweise parallel und sehr schnell verarbeitet.
Berücksichtigung von damals neuen Erkenntnissen beim Compilerbau:
- Aus der Verschiebung von Aufgaben der Hardware (CPU) in die Software (Compilerbau) erfolgte auch eine Optimierung von RISC-CPUs für Compiler, die sich u. a. in vielen, in gleicher Weise benutzbaren Registern niederschlägt.
Hintergrund der Entwicklung von RISC-Architekturen waren:
- Der weitgehende Wechsel von Assembler-Programmierung zu Hochsprachen-Programmierung in den 1980er Jahren. Selbst Betriebssysteme wurden vermehrt in höheren Sprachen geschrieben.
- Genügend Hauptspeicher, um komplexe Optimierungen in Compilern überhaupt erst durchführen zu können.
Genügend Hauptspeicher für den etwas längeren Code (den RISC damals mit sich brachte). - Man wollte viel Rechenleistung aus den damals möglichen 0,2 bis 2 Millionen Transistoren einer CPU herausholen.
Folgende Eigenschaften sind typisch für RISC-Prozessoren:
- Alle Befehle folgen dem gleichen oder sehr wenigen Ablaufschemata (Fetch, Decode, …)
- Sich weitgehend daraus ergebende Eigenschaften:
- Die Befehle haben eine konstante Länge (meist 32 Bit).
- Geringe Variation der Ausführungszeit, häufig sogar konstant. In ersten Designs betrug die tatsächliche Ausführungszeit oft 1 Takt. Spätere Designs verwenden eher 1 Takt pro Pipelinestufe, erreichen dank Superskalarität jedoch dennoch einen Durchsatz von 1 Befehl pro Takt.
Befehle, die sich nicht so implementieren ließen (Ganzzahldivision), wurden meist weggelassen und durch mehrere einfachere Befehle ersetzt, die diese Aufgabe zusammen erledigten. - Entkopplung von Speicherlese-Operationen und Arithmetik („Load/Store-Architektur“).
- Superskalare Architektur, Pipelining mit mindestens 4 Stages (seit 1990er auch bei CISC).
- Entwicklung von CPU und von (C-)Compiler laufen parallel und beeinflussen sich massiv gegenseitig.
- RISC-Architekturen führen zu mehr temporären Zwischenergebnissen, daher haben diese mindestens 16 General-Purpose-Register (mittlerweile auch bei CISC).
- Häufig Harvard- oder Super-Harvard-Architekturen.
Folgende Dinge findet man nur bei RISC-Prozessoren, sind aber primär das Ergebnis einer Performanceoptimierung bzw. der Einsparung von Chipfläche:
- Delayed Branches: Die 1 bis 3 folgenden Befehle hinter Sprungbefehlen werden ebenfalls ausgeführt.
- Etliche Prozessoren führen keine Verriegelung von Prozessorpipeline-Stufen durch, dieses Design gab der MIPS-Architektur sogar den Namen (Microprocessor without interlocked pipeline stages).
Typische Eigenschaften von RISC-Prozessoren
[Bearbeiten | Quelltext bearbeiten]Es gibt keine formale Definition des Begriffes RISC. Die Mehrheit der RISC-Prozessoren besitzt folgende Eigenschaften:
Superskalarität
[Bearbeiten | Quelltext bearbeiten]Die „eigentliche Befehlsausführung“ dauert meist nur 1 Taktzyklus pro Befehl.
Es wird pro Takt ein Befehl begonnen, und in jedem Takt ein (früherer) Befehl beendet. Die Dekodierung erfolgt ohne Mikrocode durch ein fest verdrahtetes Netzwerk. Ein klassischer RISC-Prozessor führt Befehle in vier Takten durch: Fetch, Decode, Load, Execute. In jeder dieser Stufen befindet sich immer jeweils ein Befehl.
Load-Store-Architektur
[Bearbeiten | Quelltext bearbeiten]Bei einer Load-Store-Architektur greifen nur Load- und Store-Befehle auf den Hauptspeicher zu. Alle anderen Befehle arbeiten ausschließlich mit Registeroperanden und Literalen. Diese Load- und Store-Befehle besitzen keine komplexen Adressmodi, stattdessen werden die Adressen in frei verwendbaren Registern berechnet. Allerdings weisen nur wenige RISC-CPUs eine klassische Load-Store-Architektur auf, die meisten erlauben einen Speicheroperanden.
Große Anzahl frei verwendbarer Register und Drei-Adress-Code
[Bearbeiten | Quelltext bearbeiten]Um dem Compiler eine effiziente Codeerzeugung und Programmoptimierung zu ermöglichen, haben RISC-Prozessoren eine große Anzahl frei verwendbarer Register (typisch sind 16 oder 32) und Befehle im Drei-Adress-Code. Befehle im Drei-Adress-Code haben ein Ziel- und zwei Quellregister. Der Berkeley-RISC-Prozessor und seine Nachkommen (u. a. Sun SPARC, AMD Am29000 und Intel i960) besitzen zusätzlich Registerfenster, die eine besonders große Anzahl an Registern erlauben und den Aufruf von Unterprogrammen beschleunigen.
Befehle mit fester Länge und wenigen Formaten
[Bearbeiten | Quelltext bearbeiten]Alle Befehle sind gleich lang und es gibt nur wenige Befehlsformate. Das heißt, dass bei fast allen Befehlen die Lage von Opcode, Registeroperanden und Literalen gleich ist, was das Dekodieren wesentlich vereinfacht und damit beschleunigt. Typisch sind 32 Bit breite Befehlsworte und fünf verschiedene Befehlsformate. Erwähnenswerte Ausnahmen sind IBMs ursprünglicher 801, ARMs Thumb, microMIPS und Infineon TriCore. Diese RISC-Architekturen benutzen variable Befehlslängen von 16 und 32 Bit, um so den Programmcode zu verkürzen.
Geschichte
[Bearbeiten | Quelltext bearbeiten]Anfänge
[Bearbeiten | Quelltext bearbeiten]Die Anfänge von RISC reichen bis in die 60er Jahre zurück. Ende der 70er und Anfang der 80er Jahre kamen schließlich mehrere Faktoren zusammen, die zu einer neuen Designphilosophie und einer Welle neuer Prozessordesigns führten:[2][3][4][5][6]
- Durch die Einführung der Speicherhierarchie aus schnellen Caches und billigem Hauptspeicher wurden die Geschwindigkeitsvorteile der Mikroprogrammspeicher hinfällig.
- Die Compiler wurden aufwändiger und erzeugten schnelleren Code, etwa indem sie die Registervergabe durch Graphfärbung lösten, gemeinsame Teilausdrücke entfernten, schnellere äquivalente Anweisungen verwendeten, durch das statische Auswerten von Ausdrücken zur Übersetzungszeit und durch das Entfernen von totem Programmcode. Viele dieser Optimierungen können auf mikroprogrammierten Prozessoren nicht ihr volles Potential ausschöpfen, weil sie nicht direkt auf den internen Mikrocode angewendet werden können.
- Fortschritte in der Halbleiter-Integration erlaubten es, schnelle, komplexere Prozessoren aus immer mehr Transistoren auf einem Chip zu integrieren. Zusammen mit neuen VLSI-CAD-Werkzeugen führte die Integration zu einer deutlich höheren Produktivität, so dass neue Entwicklungen mit relativ wenig Personal möglich wurden. Die kürzeren Entwicklungszyklen erlaubten eine schnelle Evolution der Designphilosophie.
- Die DARPA, die Forschungsagentur des amerikanischen Verteidigungsministeriums, unterstützte in dieser Zeit gezielt Projekte zur Entwicklung integrierter Schaltkreise, darunter auch das RISC-Projekt in Berkeley, das MIPS-Projekt in Stanford und viele weitere Nachfolgeprojekte.
Wichtige Wegbereiter für RISC waren die CDC 6600 (Seymour Cray und Jim Thornton, 1964) und IBMs ACS-Projekt (Jack Bertram und John Cocke, ab 1963). Einige frühe RISC-Projekte und -Architekten:
- ab 1974 IBM 801 (John Cocke)
- ab 1980 Berkeley Reduced Instruction Set Computer (David A. Patterson und Carlo H. Séquin)
- ab 1981 Stanford Microprocessor without Interlocked Pipeline Stages (John L. Hennessy)
Blütezeit
[Bearbeiten | Quelltext bearbeiten]Als nach anfänglichen Zweifeln die Vorteile von RISC offensichtlich wurden, begannen praktisch alle Computerhersteller damit, eigene RISC-Architekturen zu entwickeln:
- ab 1983 Acorn Risc Machine (Sophie Wilson, Steve Furber)
- ab 1983 MIPS (Craig Hansen)
- ab 1984 AMD Am29000 (Brian Case und Ole Moller)
- ab 1984 HP Precision Architecture RISC (Bill Worley und Michael Mahon)
- ab 1984 Motorola 88k (Mitch Alsup)
- ab 1984 Intel i960 (Glen Myers)
- ab 1985 IBM Power (John Cocke, Greg Grohoski und Rich Oehler)
- ab 1985 Sun Scalable Processor ARChitecture (Robert Garner)
- ab 1989 DEC Alpha (Dick Sites und Rich Witek)
- ab 1991 Apple–IBM–Motorola PowerPC (Rich Oehler, Keith Diefendorff, Ron Hochsprung und John Sell)
In der Folge war der Begriff RISC positiv besetzt und wurde in der Werbung inflationär benutzt (u. a. von Intel für den 486). Von Steven A. Przybylski ist folgende ironische Definition von RISC überliefert: „ein Computer, der nach 1985 angekündigt wurde“.
Vergleich zu CISC
[Bearbeiten | Quelltext bearbeiten]Die Liste der SPEC (Standard Performance Evaluation Corporation) mit den schnellsten Prozessoren ist mittlerweile sehr heterogen. Man findet „RISC-Prozessoren“ wie „CISC-Prozessoren“ wie auch Prozessoren, die von Grafikprozessoren abstammen. Wichtig für Supercomputer ist die Skalierbarkeit der Architektur für den parallelen Betrieb zehntausender bis hunderttausender Kerne. Mittlerweile sind die überwiegende Anzahl der Prozessoren der TOP500 x64-kompatible „CISC-Prozessoren“ (76 Prozent: Intel Xeon und AMD Opteron). Als „RISC-Prozessor“ steht der IBM Blue Gene (PPC) mit 18 Prozent ganz vorn.
Bei aktuellen Großrechnern sind reine/weitgehende RISC-Chips inzwischen jedoch fast vollständig von den Mikroprozessoren der Intel x86-Linie verdrängt, die einen RISC-Kern mit einer CISC-Emulationsschicht verbinden. Deren Ursprung aus dem erfolgreichen Massenmarkt-Einsatz macht die Kleinserien der Großrechner-RISC-Chips unrentabel. DEC Alpha wurde eingestellt, ebenso HPs PA-RISC, Suns SPARCs werden nicht mehr produziert, PowerPC-Chips fertigt nur noch IBM selbst, Renesas SuperH hat kaum mehr Verbreitung, XScale, MIPS und StrongARM sind in Großrechnern selten oder verschwunden. (Stand 2011)
RISC-Prozessoren bilden das Gegenstück zu CISC-Prozessoren. Heutige RISC-Prozessoren überschreiten die Grenzen der engen Definition und enthalten auch komplexere Befehle. So wurde der Befehlssatz des PowerPC-Prozessors, der von IBM und Freescale (ehem. Motorola) hergestellt wird (und beispielsweise bis zum Wechsel zu Intel-CPUs in den Computern von Apple Verwendung fand), durch eine Befehlserweiterung namens „AltiVec“ ergänzt, die in den PowerPC-Prozessoren spezielle Multimediafähigkeiten nachrüstet (vgl. MMX bei x86-Prozessoren). Allerdings folgt auch AltiVec den RISC-Eigenschaften.
Ende der 1980er-Jahre brachte der britische Hersteller Acorn den Heimcomputer Archimedes mit einem speziell konzipierten RISC-Prozessor auf den Markt, dessen Leistungsfähigkeit die der damals in Heimcomputern eingesetzten Prozessoren weit in den Schatten stellte. Diese Acorn Risc Machine war der Ursprung der heutigen ARM-Prozessoren, die in eingebetteten Systemen (zum Beispiel Mobiltelefonen) sehr verbreitet sind.
Praktische Bedeutung – Systeme mit RISC-CPU
[Bearbeiten | Quelltext bearbeiten]- ARM – Die Arm-Architektur ist in Stückzahlen gemessen wohl die erfolgreichste RISC-Familie, sie findet sich in vielen Systemen,[7] bei denen es um relativ hohe Leistung, geringen Stromverbrauch und niedrige Kosten geht (typisch: 100–500 MHz, teilweise bis zu 2,7 GHz;[8] Stand 2015). Die ARM Ltd., die diese Systeme konstruiert, baut allerdings selbst keine Prozessoren, sondern verkauft lediglich Lizenzen für das Design an ihre Kunden. Mittlerweile sollen 10 Milliarden ARM-CPUs im Umlauf sein, die z. B. zum Einsatz kommen in Tablets, Digitalkameras, grafikfähigen Taschenrechnern, NAS, Routern, Spielkonsolen, PDAs, Smartphones und verschiedenen Mobiltelefonen. Ein Einsatz für energiesparende Server wird für die nahe bis mittlere Zukunft angestrebt, weshalb ARM im Jahre 2012 erste Prozessoren mit 64-Bit-Architektur vorstellte.[9][10]
- Power Architecture – Eine Entwicklung von IBM und Freescale (früher Motorola), ist heute die am weitesten verbreitete RISC-CPU im High-End-Bereich, sie ist eine Architektur mit zahlreichen Einsatzgebieten,[11] angefangen bei leistungsstarken eingebetteten Systemen wie Druckern oder Routern, über Workstations, bis hin zu Supercomputern.
- MIPS – Anfangs wurden die CPUs vor allem in klassischen Workstations und Servern eingesetzt, heute liegt der Haupteinsatzbereich, ähnlich wie bei ARM, im Bereich Eingebettete Systeme.[12] Praktisch alle MIPS-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel Itanium migriert.
- Oracles (ehemals Sun Microsystems) SPARC-Produktlinie wurde vor allem in klassischen Workstations und Servern von Sun eingesetzt.[13]
- Hewlett-Packards PA-RISC – Bis zur Einführung des Intel Itanium wurden PA-RISC-CPUs vor allem in klassischen Workstations und Servern von HP eingesetzt.[14] Die CPU-Familie wird nicht mehr weiterentwickelt. Praktisch alle PA-RISC-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel Itanium migriert.
- DEC Alpha – Bis zur Einführung der Intel Itanium-CPUs wurden Alpha-CPUs vor allem in klassischen Workstations und Servern von Digital, Compaq und HP eingesetzt. Die Alpha-Plattform war frei verfügbar und wurde von zahlreichen OEM-Partnern genutzt. Die CPU-Familie wird nicht mehr weiterentwickelt. Praktisch alle Alpha-basierten Workstation- und Server-Familien wurden mittlerweile auf Intel Itanium migriert.
- Hitachis SuperH, war weit verbreitet z. B. in den Spielkonsolen Sega Super 32X, Sega Saturn und Dreamcast. SuperH wird heute ähnlich wie die ARM-Plattform hauptsächlich in eingebetteten Systemen eingesetzt.
- Atmel AVR wird in eingebetteten Systemen eingesetzt, wie z. B. Xbox-Steuerkontrollern, aber auch in BMW-Automobilen.
- Das OpenRISC-Projekt greift die Philosophie freier Hardware auf. Ziel des Projektes ist es, eine CPU zu erstellen, auf der Linux läuft und das – im Sinne freier Software – frei verfügbar ist.[15]
- RISC-V ist ein weiteres freies Instruktionsset basierend auf den RISC-Prinzipien.
Weblinks
[Bearbeiten | Quelltext bearbeiten]- CRE151 Die ARM-Architektur Tim Pritlove und Harald Welte gehen in diesem Podcast auch auf die Unterschiede von RISC und CISC-Prozessoren ein.
- RISC-V International, Non-Profit-Organisation
Einzelnachweise und Anmerkungen
[Bearbeiten | Quelltext bearbeiten]- ↑ David A. Patterson, Carlo H. Sequin: RISC I: a reduced instruction set VLSI computer. In: 25 years of the international symposia on Computer architecture (selected papers) (= ISCA ’98). Association for Computing Machinery, New York, NY, USA 1998, ISBN 978-1-58113-058-4, S. 216–230, doi:10.1145/285930.285981.
- ↑ George Radin: The 801 Minicomputer, 1976. (englisch)
- ↑ David A. Patterson, David R. Ditzel: The case for the reduced instruction set computer. In: Readings in computer architecture. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA 2000, ISBN 978-1-55860-539-8, S. 135–143, doi:10.1145/641914.641917 (englisch, acm.org [PDF; abgerufen am 12. September 2021]).
- ↑ David A. Patterson: Reduced instruction set computers. In: Communications of the ACM. Band 28, Nr. 1, 2. Januar 1985, S. 8–21, doi:10.1145/2465.214917 (englisch).
- ↑ John Cocke, V. Markstein: The evolution of RISC technology at IBM. In: IBM Journal of Research and Development. Band 34, Nr. 1, Januar 1990, S. 4–11, doi:10.1147/rd.341.0004 (englisch).
- ↑ M. Alsup: Motorola’s 88000 family architecture. In: IEEE Micro. Band 10, Nr. 3, Juni 1990, S. 48–66, doi:10.1109/40.56325 (englisch).
- ↑ ARM-Beispiele:
- Apple: Newton iPods (ARM7TDMI SoC), iPhone (Samsung ARM1176JZF, Apple A4), iPod touch (ARM11), iPad (Apple A4 bzw. Apple A5), Mac (Apple M1)
- Canon: IXY Digital 700 Kamera (Eigenentwicklung, ARM-basiert)
- Hewlett-Packard: HP-49/50 Grafikfähiger Taschenrechner (ARM9TDMI)
- Linksys: NSLU2 Netzwerkspeicher/NAS [Intel XScale IXP420]
- Nintendo: Game Boy Advance (ARM7), Nintendo DS (ARM7, ARM9)
- Palm: PocketPC PDAs und Smartphones (Intel XScale und Samsung SC32442 – ARM9)
- Sony: verschiedene Mobiltelefone, Network Walkman (Eigenentwicklung, ARM-basiert)
- ↑ AnandTech: The Motorola Nexus 6
- ↑ Heise Online: ARM bläst zum Angriff auf 64-Bit-Server
- ↑ ARM-Presseerklärung: ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors
- ↑ PowerPC Beispiele:
- Apple: PowerPC-basierte Macintosh Computer
- Cisco: Router und Switches für den kommerziellen Einsatz bis zur Enterprise-Klasse
- IBM: Supercomputer, Mittelklasse-Server und Workstations
- Nintendo: Gamecube und Wii Spielkonsolen
- Microsoft: Xbox 360 Spielkonsole
- Motorola: verschiedene Bordcomputer für PKW und andere Fahrzeuge
- ↑ MIPS-Beispiele:
- AVM: Fritz!Box WLAN/Telefonie-Router
- SGI: Server und Workstations wie Indy, Onyx und Origin (R2000 bis R12000)
- Sony PlayStation, PlayStation Portable Spielkonsolen
- Nintendo 64 Spielkonsole
- Linksys WRT54G und zahlreiche ähnliche Geräte, siehe auch OpenWRT unterstützte Router
- MikroTik, siehe MikroTik in der englischsprachigen Wikipedia; RouterBOARD
- ↑ SPARC-Beispiele:
- K computer japanischer Supercomputer
- Fujitsu Supercomputer, Mittelklasseserver und Workstations
- Sun: Supercomputer, Mittelklasseserver und Workstations
- ↑ PA-RISC-Beispiele:
- Hewlett-Packard: Supercomputer, Mittelklasse-Server und Workstations, aber auch Grafikkarten
- Hitachi: Workstations
- Stratus: Stratus-Continuum-Serie, höchstverfügbare Supercomputer
- ↑ OpenCore – OpenRISC ( vom 24. August 2011 im Internet Archive) – Artikel bei PPCNUX, vom 28. Juni 2011.