Citation Hunt

Das unten stehende Wikipedia-Snippet wird von keiner verlässlichen Quelle unterstützt. Kannst du eine finden?

Klicke auf Verstanden!, um zu Wikipedia zu gehen und das Snippet zu reparieren, oder Nächstes!, um ein anderes zu sehen. Viel Glück!

In Seite Reduced Instruction Set Computer:

"

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.
  • 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“).

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).