Post on 05-Apr-2015
1Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2 Grundlegende Prozessortechniken
Prozessorarchitektur definiert die Grenze zwischen Hardware und Software.
- Das sind die für den Compilerbauer und Systemprogrammierer sichtbaren Teil des Prozessors.
- Synonym: Befehlssatz-Architektur (ISA – Instruction Set Architecture) oder Programmiermodell eines Prozessors.
- Prozessorarchitektur betrifft keine Details der Hardware. Mikroarchitektur (microarchitecture) bezeichnet die
Implementierung einer Prozessorarchitektur in einem Mikroprozessor.
Prozessortechniken: Architektur- oder Mikroarchitekturtechniken Prozessorfamilie: alle Prozessoren haben die gleiche Basisarchitektur,
die neueren oder die komplexeren Prozessoren der Familie erweitern die Architekturspezifikation.
2Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
CISC- und RISC-Prinzipien
CISC (Complex Instruction Set Computers) RISC (Reduced Instruction Set Computer):
Beobachtung: manche Maschinenbefehle werden fast nie verwendet. Komplexe Befehle lassen sich prinzipiell durch eine Folge einfacher Befehle ersetzen.
3Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Charakteristische Eigenschaften von RISC-Architekturen:
Der Befehlssatz besteht aus wenigen, unbedingt notwendigen Befehlen (Anzahl ≤ 128) undBefehlsformaten (Anzahl ≤ 4) mit einer einheitlichen Befehlslänge von 32 Bit und mit nur wenigenAdressierungsarten (Anzahl ≤ 4).Damit wird die Implementierung des Steuerwerks erheblich vereinfacht und auf dem Prozessorchip Platz geschaffen für weitere begleitende Maßnahmen.
Eine große Registerzahl von mindestens 32 allgemein verwendbaren Registern ist vorhanden.
Der Zugriff auf den Speicher erfolgt nur über Lade-/Speicherbefehle.
4Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Register-Register-Architektur (auch Load/Store Architecture genannt)
Zugriff auf den Speicher nur über Lade-/Speicherbefehle.
Alle anderen Befehle, d.h. insbesondere auch die arithmetischen Befehle, beziehen ihre Operanden aus den Registern und speichern ihre Resultate in Registern.
Prinzip der Register-Register-Architektur ist für RISC-Rechner kennzeichnend und hat sich heute bei allen neu entwickelten Prozessorarchitekturen durchgesetzt.
5Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Weitere Charakteristika von RISC
* möglichst alle Befehle sollten so implementierbar sein, dass pro Prozessortakt die Ausführung eines Maschinenbefehls beendet wird.
* Konsequenz: bei der Implementierung wird auf Mikroprogrammierung verzichtet und statt dessen das Befehls-Pipelining eingesetzt.
* Weiterhin bei den frühen RISC-Rechnern wurde die Überwachung der Befehlspipeline von der Hardware in die Software verlegt.
6Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Frühe RISC-Rechner
IBM 801-Projekt: 1975 unter Leitung von Cocke am IBM-Forschungszentrum in Yorktown Heights
MIPS-Projekt: 1981 von Hennessy an der Universität von Stanford begonnen. Der erste funktionsfähige Chip in NMOS-VLSI-Technik wurde 1983 fertig. Aus dem Stanford MIPS-Projekt ging die Firma MIPS hervor.
Berkeley RISC-Projekt: 1980 an der Universität in Berkeley begonnen, Daraus gingen der SPARC-Prozessor und Nachfolger hervor.
7Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.3 Einfache Prozessoren und Prozessorkerne
Grundkonzept des von-Neumann-Prinzips
Verbindungseinrichtung
Steuer- werk
Rechen- werk
Ein-/Aus- gabesystem
Haupt- speicher
Prozessor
8Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Überlappende Befehlsausführung
Befehl n:
Bereitstellung
u. Decodierung
Befehl n:
Ausführung
Befehl n+1:
Bereitstellung
u. Decodierung
Befehl n+1:
Ausführung
Befehl n+2:
Bereitstellung
u. Decodierung
Zeit
9Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.3.4 Grundlegende Pipeline-Stufen
Pipelining — „Fließband-Bearbeitung“
„ Pipelines beschleunigen die Ausführungsgeschwindigkeit eines Rechners in gleicher Weise wie Henry Ford die Autoproduktion mit der Einführung des Fließbandes revolutionierte.“
(Peter Wayner 1992)
10Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Pipelining
Unter dem Begriff Pipelining versteht man die Zerlegung einer Maschinenoperation in mehrere Phasen, die dann von hintereinander geschalteten Verarbeitungseinheiten taktsynchron bearbeitet werden, wobei jede Verarbeitungseinheit genau eine spezielle Teiloperation ausführt.
Die Gesamtheit dieser Verarbeitungseinheiten nennt man eine Pipeline.
11Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Pipeline-Stufen und Pipeline-Register
Takt
Eingabe Ausgabe
Registe
r
S1
Registe
r
S2 Sk
Registe
r
Registe
r
12Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.4 Phasen der Befehlsausführung einer fünfstufigen Befehlspipeline
Befehl bereitstellen, Befehl decodieren, Operanden (in den Pipeline-Registern) vor der ALU bereitstellen, Operation auf der ALU ausführen und das Resultat zurückschreiben
Befehlspipeline eines Rechners: Die Befehlsbearbeitung wird in n funktionelle Einheiten gegliedert. Ausführung geschieht überlappt.
Grundlegendes Befehlspipelining: DLX-Pipeline
ID -- Instruction Decode/Register Fetch
EX -- Execute/Address Calculation IF
MEM -- Memory Access
ID
WB -- Write Back
EX MEM WB
IF -- Instruction Fetch
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
5-Deep
Current CPU Cycle
Master Clock Cycle
14Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Phasen der Befehlsausführung einer fünfstufigen Befehlspipeline
Befehlsbereitstellungsphase (Instruction Fetch): Der Befehl, der durch den Befehlszähler adressiert ist, wird aus dem Hauptspeicher oder dem Cache-Speicher in einen Befehlspuffer geladen. Der Befehlszähler wird weitergeschaltet.
Decodier- und Operandenbereitstellungsphase (Decode/Operand fetch): Aus dem Operationscode des Maschinenbefehls werden prozessorinterne Steuersignale erzeugt (1. Takthälfte). Die Operanden werden aus Registern bereitgestellt (2. Takthälfte).
Ausführungsphase (ALU Operation): Die Operation wird auf den Operanden ausgeführt. Bei Lade-/Speicherbefehlen wird die effektive Adresse berechnet.
Speicherzugriffsphase (memory access): Der Speicherzugriff wird durchgeführt.
Resultatspeicherphase (Write Back): Das Ergebnis wird in ein Register geschrieben (1. Takthälfte).
20Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Diskussion
Die Zykluszeit der Pipeline wird vom kritischen Pfad diktiert: der langsamsten Pipeline-Stufe.
Alle Stufen der DLX-Pipeline nutzen verschiedene Ressourcen.
Im Idealfall wird in jedem Takt ein Befehl in die Pipeline eingefüttert. (CPI=1).
- Das ist wegen der auftretenden Pipeline-Konflikte häufig nicht der Fall.
21Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.4.3 Pipeline-Konflikte - drei Arten von Pipeline-Konflikten
Pipeline-Konflikt: die Unterbrechung des taktsynchronen Durchlaufs der Befehle durch die einzelnen Stufen einer Befehls-Pipeline.
Datenkonflikte: ein Operand ist in der Pipeline (noch) nicht verfügbar.
- Datenkonflikte werden durch Datenabhängigkeiten im Befehlsstrom erzeugt
Struktur- oder Ressourcenkonflikte treten auf, wenn zwei Pipeline-Stufen dieselbe Ressource benötigen, auf diese aber nur einmal zugegriffen werden kann.
Steuerflusskonflikte treten bei Programmsteuerbefehlen auf, - wenn in der Befehlsbereitstellungsphase die Zieladresse des als nächstes
auszuführenden Befehls noch nicht berechnet ist bzw. - Wenn im Falle eines bedingten Sprunges noch nicht klar ist, ob überhaupt
gesprungen wird.
22Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.4.4 Datenkonflikte und deren Lösungsmöglichkeiten
Man betrachte zwei aufeinander folgende Befehle Inst1 und Inst2
Es besteht eine echte Datenabhängigkeit (true dependence) t von Inst1 zu Inst2, wenn Inst1 seine Ausgabe in ein Register Reg (oder in den Speicher) schreibt, das von Inst2 als Eingabe gelesen wird.
Es besteht eine Gegenabhängigkeit (antidependence) a von Inst1 zu Inst2, falls Inst1 Daten von einem Register Reg (oder einer Speicherstelle) liest, das anschließend von Inst2 überschrieben wird.
Es besteht eine Ausgabeabhängigkeit (output dependence) o von Inst2 zu Inst1, wenn beide in das gleiche Register Reg (oder eine Speicherstelle) schreiben und Inst2 sein Ergebnis nach Inst1 schreibt.
Gegenabhängigkeiten und Ausgabeabhängigkeiten werden auch falsche Datenabhängigkeiten oder Namensabhängigkeiten genannt.
Abhängigkeitsgraph
S1:ADD R1,R2,2 ; R1 = R2+2S2:ADD R4,R1,R3 ; R4 = R1+R3S3:MULT R3,R5,3 ; R3 = R5*3S4:MULT R3,R6,3 ; R3 = R6*3
S1
S2
S3
S4
True Dependence
Anti Dependence
Output Dependence
t
a
o
a
24Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Datenkonflikte
Datenabhängigkeiten zwischen zwei Befehlen können Datenkonflikte verursachen, wenn die beiden Befehle so nahe beieinander sind, dass ihre Überlappung innerhalb der Pipeline ihre Zugriffsreihenfolge auf ein Register oder einen Speicherplatz im Hauptspeicher verändern würde.
drei Arten von Datenkonflikten: Ein Lese-nach-Schreibe-Konflikt (Read After Write, RAW) wird durch eine
echte Datenabhängigkeit verursacht Ein Schreibe-nach-Lese-Konflikt (Write After Read, WAR) wird durch eine
Gegenabhängigkeit verursacht Ein Schreibe-nach-Schreibe-Konflikt (Write After Write, WAW) wird durch
eine Ausgabeabhängigkeit verursacht
25Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
IF ID EX MEM
load Reg1,A
load Reg2,B
add Reg2,Reg1,Reg2
mul Reg1,Reg2,Reg1
IF ID EX MEM
IF ID EX MEM
IF ID EX MEM WB
WB
WB
WB
timecycle time
Datenkonflikte in einer Befehls-Pipeline
26Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Software-Lösungen für Datenkonflikte
Software-Lösungen (Compiler scheduling)- no-op Befehle einfügen- Befehlsanordnung (instruction scheduling oder pipeline
scheduling): Befehlsumordnungen, um no-ops zu entfernen
27Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Hardware-Lösungen für Datenkonflikte
Konflikt muss per HW entdeckt werden!!Hardware-Lösungen:
- Leerlauf der Pipeline: Die einfachste Art, mit solchen Datenkonflikten umzugehen ist es, Inst2 in der Pipeline für zwei Takte anzuhalten. Auch als Pipeline-Sperrung (interlocking) oder Pipeline-Leerlauf (stalling) bezeichnet.
- Forwarding: Wenn ein Datenkonflikt erkannt wird, so sorgt eine Hardware-Schaltung dafür, dass der betreffende Operand nicht aus dem Universalregister, sondern direkt aus dem ALU-Ausgaberegister der vorherigen Operation in das ALU-Eingaberegister übertragen wird.
- Forwarding with interlocking: Forwarding löst nicht alle möglichen Datenkonflikte auf.
28Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.4.5 Steuerflusskonflikte und deren Lösungsmöglichkeiten
Steuerflussabhängigkeiten verursachen Steuerflusskonflikte in der DLX-Pipeline, da der Programmsteuerbefehl erst in der ID-Stufe als solcher erkannt und damit bereits ein Befehl des falschen Programmpfades in die Pipeline geladen wurde.
Zu den Programmsteuerbefehlen gehören:- die bedingten und die unbedingten Sprungbefehle, - die Unterprogrammaufruf- und -rückkehrbefehle sowie - die Unterbrechungsbefehle
Nach bedingten Sprüngen, die genommen werden, startet die Befehlsfolge mit drei Takten Latenz (Verzögerung).
Allerdings sind schon drei Befehle des falschen Pfads in der Pipeline.
29Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
branchinstruction
branch targetinstruction
IF ID EX MEM
IF ID EX MEM WB
WB
time
PC
three bubbles
Leertakte nach einem genommenen bedingten Sprung
30Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Lösung: Sprungrichtung schneller entscheiden
Sprungrichtung so schnell als möglich entscheiden und Zieladresse so schnell als möglich berechnen.
Am besten bereits in der ID-Stufe nur noch ein Takt Latenz
31Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Software-Lösungen
Verzögerte Sprungtechnik (delayed branch technique): Der Compiler füllt die Verzögerungszeitschlitze (delay slots).
- Ausfüllen der Verzögerungszeitschlitze mit Leerbefehlen. - Statische Befehlsanordnung: Füllen mit Befehlen, die in
der logischen Programmreihenfolge vor dem Sprung liegen
Angewandt in der ersten Generation von RISC-Prozessoren, z.B. IBM 801, MIPS, RISC I, SPARC.
In superskalaren Prozessoren, die mehr als einen Befehl holen und gleichzeitig verarbeiten können, erschwert die verzögerte Sprungtechnik die Befehlszuordnungslogik und die Implementierung präziser Unterbrechungen.
32Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Hardware-Lösungen
Pipeline-Leerlauf (Interlocking): einfachste, aber ineffizienteste Methode Spekulation auf nicht genommene bedingte Sprünge:
- die direkt nach dem Sprungbefehl stehenden drei Befehle werden in die Pipeline geladen
- Falls die Sprungbedingung zu „genommen“ ausgewertet wird, müssen die drei Befehle wieder gelöscht werden und wir erhalten die üblichen drei Takte Verzögerung.
- Falls der Sprung nicht genommen wird, so können die drei Befehle als Befehle auf dem gültigen Pfad weiterverarbeitet werden, ohne dass ein Leertakt entsteht.
- Diese Technik stellt die einfachste der sogenannten statischen Sprungvorhersagen dar.
33Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.4.6 Sprungzieladress-Cache
Sprungzieladress-Cache (Branch-target Address Cache, BTAC) oder Sprungzielpuffer (Branch-target Buffer, BTB):
ein kleiner Cache-Speicher, auf den in der IF-Stufe der Pipeline zugegriffen wird,
enthält Paare von Spungbefehls- und Sprungzieladressen.
34Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Sprungzieladress-Cache
... ... ...
B ran ch ad d ress Ta rg e t ad d ressP red ic tio n b its
35Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.4.8 Strukturkonflikte und deren Lösungsmöglichkeiten
Struktur- oder Ressourcenkonflikte treten in unserer einfachen DLX-Pipeline nicht auf.
Einen Strukturkonflikt kann man demonstrieren, wenn man unsere DLX-Pipeline leicht verändert:
- Wir nehmen an, die Pipeline sei so konstruiert, dass die MEM-Stufe in der Lage ist ebenfalls auf den Registersatz zurückzuschreiben.
36Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
load Reg2,A
mul Reg3,Reg4,Reg5
IF ID EXMEM
IF ID EX MEM WB
WB
timecycle time
Register file
WB
WB
Ein Strukturkonflikt, der durch eine veränderte Pipeline-Organisation verursacht wird
37Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
Hardware-Lösungen zur Vermeidung von Strukturkonflikten
Arbitrierung mit Interlocking: Die Arbitrierungslogik erkennt den Strukturkonflikt und hält den im Programmfluss späteren der beiden um die Ressource konkurrierenden Befehle an.
Übertaktung: die Ressource, die den Strukturkonflikt hervorruft, schneller zu takten als die übrigen Pipeline-Stufen.
- In diesem Fall könnte die Arbitrierungslogik zweimal auf die Ressource zugreifen und die Ressourcenanforderungen in der Ausführungsreihenfolge erfüllen
Ressourcenreplizierung: Vervielfachen von Hardware-Ressourcen.
38Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.4.9 Ausführung in mehreren Takten
Problem Mehrtaktbefehle
mögliche Lösungen:- Pipeline anhalten: Die einfachste Weise, mit einem solchen
Strukturkonflikt umzugehen, ist es, Inst2 in der Pipeline anzuhalten, bis Inst1 die EX-Stufe verlässt
- Ressourcen-Pipelining: EX-Stufe selbst als Pipeline implementieren- die EX-Stufe kann in jedem Takt einen neuen Befehl entgegen
nehmen (der Durchsatz ist 1). - Ressourcenreplizierung: z. B. mehrere Ausführungseinheiten
39Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
2.5 Weitere Aspekte des Befehls-Pipelining
Super-Pipelining, heute meist mit dem Vorhandensein einer „langen“ Befehls-Pipeline gleichgesetzt
zwei Trends: - kurze Befehls-Pipelines von 4 – 6 Stufen (Bsp. PowerPC-
Prozessoren) und - lange Befehls-Pipelines von 7 – 20 Stufen (Bsp. MIPS-Prozessoren,
Alpha-Prozessoren, SuperSPARC und UltraSPARC, Pentium III und Pentium 4).
Gleitkommaeinheiten: meist dreistufige Pipelines für Gleitkommaoperationen
Vektor-Pipelines: mit einem Vektorbefehl wird eine Anzahl von Gleitkommaoperationen auf den Wertepaaren aus zwei Arrays („Vektoren“) von Gleitkommazahlen ausgelöst
Bei einer Gleitkommaeinheit löst ein Gleitkommabefehl nur die Ausführung einer Gleitkommaoperation auf einem einzelnen Paar von Gleitkommazahlen aus.
40Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer
RISC - superskalar
RISC-Prozessoren, die das Entwurfsziel von durchschnittlich einer Befehlsausführung pro Takt (CPI – cycles per instruction oder IPC – instructions per cycle von eins) erreichen, werden als skalare RISC-Prozessoren bezeichnet.
Die Superskalar-Technik ermöglicht es heute, pro Takt bis zu vier Befehle den Ausfürungseinheiten zuzuordnen und eine gleiche Anzahl von Befehlsausführungen pro Takt zu beenden.
Solche Prozessoren werden als superskalare (RISC)-Prozessoren bezeichnet, da die oben definierten RISC-Charakteristika auch heute noch weitgehend beibehalten werden.
Heutige Mikroprozessoren nutzen Befehlsebenenparallelität durch die Pipelining- und Superskalartechnik.