Kapitel 5 - Risc
|
Inhalt
|
- Besonderen einer Risc-Architektur
- Wichtigkeit der CPI-Rate
- Merkmale des RISC-Design-Entwurfs
- Möglichkeiten der Ablaufparallelisierung
- Was sind Registerfenster?
|
Wie berechnet sich die Prozessorleistung?
Die Prozessorleistung ist umgekehrt proportional zur Ausführungszeit eines Algorithmus und wird aus folgenden
drei Parametern ermittelt:
Worum geht es im Besonderen bei einer Risc-Architektur?
RISC Architekturen sind darauf aus, die Cycles Per Instruction zu minimieren. Das heißt, es wird versucht
alle Befehle mit so wenig wie möglich Takten auszuführen.
Welche architektonischen Möglichkeiten gibt es zur Veringerung der CPI?
Piplining ergibt eine CPI > 1, andere Techniken wie Superskalarität und VLIW's haben Ausführungszeiten von
kleiner als eins. Kombiniert ergeben beide Ansätze eine nahezuhe Ausführung von einem Befehl pro Takt.
Desweiteren ermöglicht der kleine Befehlssatz von RISC eine festverdrahtete Steuereinheit, anstatt von
Mikroprogrammen, welche höhere Taktzahlen pro Befehl mit sich bringen. Desweiteren muss bei einem
Risc-Befehl nicht der Op-Code dekodiert werden, um herauszufinden, wie der Befehl zu entschlüsseln ist,
da alle Befehle die gleiche Struktur besitzen.
Auf welche vier Merkmale wird beim RISC-Design-Entwurf besonders geachtet?
- einfache Maschinenbefehle und Adressierungsarten mit einheitlichen Befehlsformat
- große und universelle Registersätze, für schnelle Variablenverarbeitung und größere Optimiermöglichkeiten für Compiler
- Verzahnung von Compiler und Architektur zur Bereitstellung von optimierenden Compilern
- Optimierte VLSI-Chipfläche durch platzsparende Steuerwerke schafft mehr Platz für Optimiertechniken wie Pipelining,Branch-Prediction oder Superskalarität
Techniken zur Ablaufparallelisierung für RISC-Kerne
- Parallelität von einzelnen Befehlsphasen durch Pipelining
- Parallelität von ganzen Befehlen durch Superskalartechnik und VLIW
- Parallelität von Kodefäden durch Multithreading (programmierte Parallelität) oder Multiskalarität (Hardwarethreaderkennung)
- Parallelität von Befehlen unabhängiger Algorithmen (Multiprozessorsysteme)
Pentium 4 Prozessor Kern
Load / Store Architektur und Lokalhalten von Daten
Da Speicherzugriffe in Pipelines starke Konflikte hervorrufen, gibt es bei RISC-Befehlssätzen nur eine
einzige Möglichkeit mit LOAD bzw. STORE auf den Speicher zuzugreifen. So werden Registerzugriffe
von Speicherzugriffen getrennt. Da Speicherzugriffe bekanntermaßen immer sehr viel Zeit kosten,
versucht man diese so weit wie möglich zu vermeiden. Dies Erreicht man durch Lokalhalten von Daten,
bzw. das Arbeiten auf den Registern.
Was sind Registerfenster?
Registerfenster sollen das Lokalhalten von Daten unterstützen. Typische RISC Prozessoren wie die Berkeley RISC
besitzen weit über 100 Register, von denen aber immer nur 32 für sichtbar sind:
- R0...R9 globale Register
- R10...R15 Ausgaberegister
- R16...R25 lokale Register
- R26...R31 Eingaberegister
Die Idee ist nun, daß die ersten 10 Register von allen Prozeduren gesehen werden. Die Restlichen von R10 bis R31 sind
jeweils nur einer Prozedur zugeordnet. Falls nun eine Prozedur eine andere aufruft, wird nur das "Fenster" auf
einen freien Registerbereich umgeschaltet. So müssen die Register nicht neu aus dem Speicher geladen
werden und es wird dadurch viel Zeit gespart. Normalerweise überlappen sich die einzelnen Fenster um einige
Register, um somit gleich eine effiziente Möglichkeit der Parameterweitergabe zu bieten.
Was passiert wenn alle Registerfenster voll sind?
Bei unserem Beispiel mit 138 Registern sind nach sieben Prozeduraufrufen alle Register gefüllt. Um ein Überlaufen
zu vermeiden, wird das Register als Ringregister organisiert. Sind alle Registerfenster voll, wird das Älteste
in den Speicher ausgelagert, was von sogenannten Trap-Routinen erledigt wird.
Was sind Superpipelines?
Superpipes vereinen Arithmetisches und Befehlspipelining. Arithmetisches Pipelining ist sogenanntes
Funktionspipelining, bei dem einzelne Phasen eines Befehles in einer Pipeline-Form organisiert werden.
Bei Instruction Pipelining wird die Abarbeitung eines gesamten Befehls in einer Pipeline organisiert.
Zusammenfassung Risc
- Einfachere Befehlssätze mit ca. 40-80 Befehlstypen
- Einfachere Steuerung durch die Hardware ohne Mikroprogramme
- Effizientere Pipelines durch gleichlange, eintaktige Stufen
- Befehle können meist in einem Takt ausgeführt werden
- Datenzugriffe nur durch Load und Store um Speicherzugriffe zu vermeiden
- Mehr Register und Optimierung des Befehlssatzes durch Compiler
Typische Riscsysteme haben eine hartverdrahtete Steuereinheit und somit keinen Mikrocodespeicher. Der Pentium
ist ein "hybrid"-System mit RISC Kern. Dabei werden komplexe CISC Befehle durch ein Mikroprogramm in RISC zerlegt
und im Kern ausgeführt. Die einfachen Befehle werden direkt im RISC Kern in einem einzigen Datenzyklus
ausgeführt. Alle wichtigen elementaren (Risc) Befehle werden direkt von Level 0 ( der Hardware ) ausgeführt
und somit nicht via Mikroinstruktionen interpretiert. Dies ist ein Vorteil von reinen RISC Systemen,
welche diese Interpretationsebene zwischen Hardware und ISA (Instruction Set Architecture) Ebene nicht
durchlaufen müssen. Mikroinstruktionen steuern den Datenweg für einen Zyklus. Sie enthält alle notwendigen
Bit-Belegungen für ALU, MEM, Register etc., um einen Zyklus abarbeiten lassen zu können. Die Adresse der
nächsten Mikroinstruktion wird ebenso mit codiert, wie die Art und Weise des Aufrufes. Die
Mikroinstruktionen werden in einem Steuerspeicher gehalten, welcher das jeweilige Mikroprogramm enthält.
Der Steuerspeicher muss die Mikroinstruktionen nicht in geordneter oder sequentieller Folge enthalten,
wie es beim Hauptspeicher der Fall ist. Es kann jede Instruktion einen Verweis auf die Nächste enthalten.
Sprünge sind einfach möglich. Angewandt wird dies in Form von Opcodes, welche nichts anderes als Adressen
auf Mikroinstruktionen im Steuerspeicher sind.
|
|
|
|
|
| Kapitel 1 | Einleitung |
|
Befehlsschleife, Risc und Cisc...
|
| Kapitel 2 | Interrupts |
|
Interrupts, Polling, DMA...
|
| Kapitel 3 | Speicherschutz |
|
Segmentation, Paging, Mapping, Multitasking...
|
| Kapitel 4 | Caches |
|
Lokalität, Cache-Arten, Schreibstrategien...
|
| Kapitel 5 | Risc |
|
Risc-Architektur, Load/Store, Registerfenster...
|
| Kapitel 6 | Pipelining |
|
Prinzip, Datenkonflikte, Forwarding, Delayed Load
|
| Kapitel 7 | Branch Prediction |
|
Statische / Dynamische Brach-Prediction...
|
| Kapitel 8 | Superskalarität |
|
Out-Of-Order Execution, Scoreboard und Tomasulo, VLIW...
|
| Kapitel 9 | Parallelrechner |
|
SMP,Vektorrechner, Cache-Kohärenz
|
|
|
|
|
|
|
Quellen:
|
Andrew S. Tanenbaum
Computerarchitektur
|
Andrew S. Tanenbaum
Moderne Betriebssysteme
|
Petterson
Computer Architectur & Design
|
Christian Märtin
Rechnerarchitekturen
|
Rehm
Skript und Vorlesung
|
Word Wide Web
Verschiedenste Seiten
|
|
|
|
|
|
|