RISC einfach erklärt: Befehle und Pipelining
RISC bezeichnet eine Prozessorarchitektur mit einem begrenzten, einfach aufgebauten Befehlssatz. Komplexe Aufgaben werden in mehrere einfache Schritte zerlegt. Das erleichtert häufig das Dekodieren der Befehle und ihre Verarbeitung in einer Pipeline.
Auf dieser Seite lernst du, wie das Load/Store-Prinzip funktioniert, warum RISC gut zum Pipelining passt und weshalb RISC nicht automatisch schneller oder sparsamer als CISC ist.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Was macht einen RISC-Prozessor aus?
RISC steht für Reduced Instruction Set Computer. „Reduziert“ bedeutet nicht, dass der Prozessor nur wenige Aufgaben bewältigen kann. Es bedeutet, dass sein Befehlssatz aus vergleichsweise einfachen und regelmäßig aufgebauten Maschinenbefehlen besteht.
Maschinenbefehl
Ein Maschinenbefehl ist eine elementare Anweisung, die ein Prozessor direkt verarbeiten kann. Er kann zum Beispiel einen Wert laden, zwei Registerinhalte verknüpfen oder ein Ergebnis speichern.
Typische RISC-Merkmale sind:
- ein begrenzter, möglichst einheitlicher Befehlssatz,
- einfache Befehlsformate,
- getrennte Befehle für Speicherzugriffe und Berechnungen,
- eine vergleichsweise einfache Dekodierung,
- gute Voraussetzungen für die Verarbeitung in einer Pipeline,
- eine wichtige Rolle des Compilers bei der Auswahl und Anordnung der Befehle.
Ein Compiler übersetzt ein Programm aus einer höheren Programmiersprache in Maschinenbefehle. Bei RISC setzt er eine komplexe Aufgabe meist aus mehreren einfachen Befehlen zusammen.
RISC reduziert die Komplexität einzelner Befehle, nicht die möglichen Aufgaben des Computers.
Wie funktioniert das Load/Store-Prinzip?
Viele RISC-Architekturen trennen Speicherzugriffe klar von Berechnungen. Load lädt einen Wert aus dem Speicher in ein Register. Store schreibt einen Wert aus einem Register in den Speicher zurück.
Register
Ein Register ist ein kleiner, direkt im Prozessor liegender Speicherplatz. Die Recheneinheit arbeitet normalerweise mit Werten in solchen Registern.
Eine Multiplikation zweier gespeicherter Werte lässt sich schematisch in vier Schritte zerlegen:
- Ersten Wert mit
LOADaus dem Speicher in ein Register laden. - Zweiten Wert mit
LOADin ein weiteres Register laden. - Die beiden Registerwerte mit
MULTmultiplizieren. - Das Ergebnis mit
STOREin den Speicher schreiben.
Im Speicher stehen die Werte 6 und 7. Der Prozessor lädt beide Werte zunächst in Register. Danach berechnet er dort das Produkt 42. Erst der abschließende Store-Schritt schreibt 42 in den vorgesehenen Speicherplatz.
Der entscheidende Gedanke lautet: Die Multiplikation selbst greift nicht gleichzeitig auf die gespeicherten Operanden zu. Laden, Rechnen und Speichern sind getrennte Befehle.
Ein CISC-Befehl kann solche Teilschritte stärker in einem komplexen Befehl bündeln. Das bedeutet jedoch nicht, dass jeder reale CISC-Prozessor genau einen Befehl für diese Beispielaufgabe besitzt. Das Beispiel zeigt die unterschiedlichen Architekturideen.
Du bist dran
Zwei Zahlen liegen an den Speicherstellen A und B. Ihre Summe soll an der Speicherstelle C abgelegt werden. Zerlege die Aufgabe in Load-, Rechen- und Store-Schritte.
Lösung zur Zerlegung
- Lade den Wert aus A in ein Register.
- Lade den Wert aus B in ein zweites Register.
- Addiere die beiden Registerwerte.
- Speichere das Ergebnis aus dem Ergebnisregister an der Speicherstelle C.
Die konkrete Schreibweise der Befehle hängt von der jeweiligen Architektur ab. Entscheidend ist die Reihenfolge: laden, in Registern rechnen, speichern.
Warum passt RISC gut zum Pipelining?
Eine Pipeline zerlegt die Befehlsverarbeitung in Stufen. Ein einfaches Modell besitzt beispielsweise diese vier Stufen:
- Befehl abrufen,
- Befehl dekodieren,
- Befehl ausführen,
- Ergebnis zurückschreiben.
Sobald ein Befehl die erste Stufe verlassen hat, kann dort bereits der nächste Befehl beginnen. So befinden sich mehrere Befehle gleichzeitig in verschiedenen Stufen.
Durchsatz
Der Durchsatz gibt an, wie viele Befehle in einer bestimmten Zeit fertig werden. Pipelining soll vor allem diesen Durchsatz erhöhen.
Regelmäßig aufgebaute und einfach zu dekodierende Befehle erleichtern es, die Pipeline-Stufen gleichmäßig auszulasten. Deshalb passt die RISC-Idee gut zum Pipelining.
Befehl A wird gerade ausgeführt. Gleichzeitig kann Befehl B dekodiert und Befehl C abgerufen werden. Die Befehle werden nicht zu einem einzigen Befehl verschmolzen; ihre Verarbeitungsschritte überlappen sich.
Pipelining macht die Verarbeitung jedoch nicht automatisch verzögerungsfrei. Benötigt ein Befehl das noch nicht fertige Ergebnis seines Vorgängers, muss die Pipeline möglicherweise warten oder das Ergebnis direkt weiterleiten. Solche Konflikte heißen Hazards.
Auch die Register zwischen den Pipeline-Stufen benötigen Zeit und Energie. Immer mehr Stufen sind deshalb nicht unbegrenzt sinnvoll.
Eine Pipeline erhöht vor allem die Zahl fertiggestellter Befehle pro Zeit. Ein einzelner Befehl muss dadurch nicht schneller werden.
Worin unterscheiden sich RISC und CISC?
CISC steht für Complex Instruction Set Computing. Die Architekturidee besteht darin, auch komplexe oder spezialisierte Abläufe in mächtigeren Maschinenbefehlen auszudrücken.
| Merkmal | RISC | CISC |
|---|---|---|
| Befehle | eher einfach und regelmäßig | auch komplex und spezialisiert |
| Komplexe Aufgabe | mehrere einfache Befehle | möglicherweise weniger, mächtigere Befehle |
| Speicherzugriff | typischerweise über Load und Store | vielfältigere Zugriffs- und Adressierungsarten |
| Dekodierung | tendenziell einfacher | tendenziell aufwendiger |
| Maschinencode | kann mehr Befehle benötigen | kann kompakter sein |
| Pipeline | durch regelmäßige Befehle leichter planbar | komplexe Befehle können die Verarbeitung erschweren |
Diese Gegenüberstellung beschreibt Entwurfsrichtungen, keine sichere Rangliste. Die tatsächliche Leistung und Energieeffizienz hängen unter anderem vom konkreten Prozessor, vom Compiler, vom Programm und vom Speichersystem ab.
ARM, MIPS, SPARC und RISC-V stehen für RISC-orientierte Architekturen. Die verbreitete x86-Familie wird CISC zugeordnet. Moderne x86-Prozessoren können komplexe Befehle intern in einfachere, RISC-artige Operationen zerlegen. Die praktische Grenze zwischen beiden Ansätzen ist daher weniger scharf als die Grundmodelle vermuten lassen.
Einfache Dekodierung kann günstige Voraussetzungen für hohen Durchsatz und geringe Leistungsaufnahme schaffen. Daraus folgt aber nicht, dass jedes RISC-System jedem CISC-System überlegen ist. Für einen fairen Vergleich müssen konkrete Prozessoren und dieselbe Arbeitslast betrachtet werden.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- RISC
- einfache und regelmäßige Befehle
- Load und Store für Speicherzugriffe
- Berechnungen mit Registerwerten
- Compiler bildet Befehlsfolgen
- Pipelining erhöht möglichen Durchsatz
- Hazards und Stufenregister setzen Grenzen
- CISC bündelt eher komplexe Abläufe
- reale Leistung hängt vom Gesamtsystem ab
Abschluss-Check
Du hast die Kernidee verstanden, wenn du eine Aufgabe in einfache Load-, Rechen- und Store-Schritte zerlegen und zugleich erklären kannst, warum daraus kein pauschaler Leistungssieg für RISC folgt.
Mit Google fortfahren