1
6 Hochperformante Mikroprozessoren - 6.1 Von skalaren RISC- zu Superskalarprozessoren
In den 80er Jahren gab es zwei Linien von Mikroprozessoren: • Die CISC-Mikroprozessoren mit den Familien der Intel 80x86- und der
Motorola 680x0-Prozessoren • Die (skalaren) RISC-Mikroprozessoren mit den Familien der MIPS- und Sun
SPARC-Prozessoren
Beide Prozessorlinien nutzten Pipelining, jedoch nur einen Befehl pro Pipelinestufe (single issue).
Ende der 80er Jahre: Integrationsgrad von 1.2 M Transistoren pro Prozessor-Chip (Beispiel: Intel 80486)
ab Anfang der 90er Jahre Siegeszug der superskalaren Prozessoren Die Grundidee von Superskalar: Einschränkung der skalaren RISC-
Prozessoren auf Einmalzuweisung (single issue) überwinden und mehr als einen Befehl pro Takt holen, decodieren, den Ausführungs-einheiten zuweisen, ausführen und die Ergebnisse zurückschreiben.
2
Stand der Chip-Technologie (vom Juni 2002)
ca. 100 M Transistoren, 0.14 mm CMOS und bis zu 2 GHz Taktrate
Beispielprozessoren:Intel Pentium III: 9.5 M Transistoren, 0.13 mm BiCMOS, bis zu 1,6 GHz
Intel Pentium 4: 42 M Transistoren, 0.13 mm BiCMOS, bis zu 2,4 GHz
Intel IA-64 Itanium: 0.18 mm CMOS, 800 MHz
Intel Itanium 2 (Codename: McKinley, Juli 2002): 1 GHz
Alpha 21364: 100 M Transistoren, 0.18 mm CMOS, 1.5 Volt, 100 Watt
3
Mehrfachzuweisungstechniken (multiple issue)
Heutige Hochleistungsmikroprozessoren und Signalprozessoren arbeiten mit Mehrfachzuweisungstechniken (multiple issue).
Zu diesen Techniken gehören
• die Superskalartechnik, • die VLIW-Technik (Very Long Instruction Word),
- im Wesentlichen bei Signalprozessoren und bei Multimediaprozessoren angewandt, und
• die aus VLIW entwickelte EPIC-Technik (Explicitly Parallel Instruction Computing).
- Das von Hewlett-Packard und Intel entwickelte EPIC-Format ist das neue Befehlsformat der IA-64 und wird in der Itanium-Prozessorfamilie angewandt.
6.2 Komponenten eines superskalaren Prozessors
L o ad /S to re
U n it(s )
F lo a tin g -P o in t
R eg is te rs
G en e ra lP u rp o se
R eg is te rs
M u lti-m ed ia
R eg is te rs
F lo a tin g -P o in t
U n it(s )
In teg e rU n it(s )
M u lti-m ed iaU n it(s )
R e tireU n it
R en am eR eg is te rs
D -cach eM M U
R eo rd e r B u ffe r
In s tru c tio n B u ffe rIn s tru c tio nIssu e U n it
In s tru c tio n D eco d e an dR eg is te r R en am e U n it
In s tru c tio n F e tchU n it
B ran chU n it
B H T B TA C
R A S
M M UI-cach e
B u sIn te rface
U n it
6.3 Superskalare Prozessor-Pipeline
In s tru c tio n F e tch
. . .
In s tru c tio n D eco d e
an d R en am e
. . .
Inst
ruct
ion
Win
dow
I s su e
Res
erva
tion
St
atio
ns
E x ecu tio n
Res
erva
tion
St
atio
ns
E x ecu tio n
. . .
R etire an d
W rite B ack
In-order In-order
Out-of-order
6
Die drei Abschnitte einer superskalaren Pipeline
Die In-order-Sektion besteht aus der Befehlsholestufe und der Befehlsdecodier- und Registerumbenennungsstufe.
• Wird die Zuweisung der Befehle an die Ausführungseinheiten immer in Programmreihenfolge gemacht (in-order issue), gehört die Zuordnungsstufe ebenfalls zu dieser Inorder-Sektion.
Die Out-of-order-Sektion startet gegebenenfalls mit der Zuordnungsstufe und beinhaltet die Ausführungsstufen bis zur Resultatwerterzeugung.
Die zweite In-order-Sektion sorgt für das Rückordnen der Ergebnisse in der ursprünglichen Programmreihenfolge und das Rückschreiben in die Architekturregister
7
Befehlsholestufe (IF)
Lädt mehrere Befehle aus dem Code-Cache. Typischerweise werden in einem Takt mindestens so viele Befehle
geholt wie maximal den Ausführungseinheiten zugewiesen werden können.
Welche Befehle geholt werden, hängt von der Sprungvorhersage ab, die in der Befehlsholestufe zum Tragen kommt.
Im Sprungzieladress-Cache werden die Adressen der Sprungbefehle und die dazugehörigen Sprungziele gespeichert.
Ein Befehlsholepuffer entkoppelt die Befehlsholestufe von der Decodierstufe
8
Decodierstufe (ID)
eine Anzahl von Befehlen wird decodiert Decodierbandbreite entspricht meist der maximalen Zuordnungs-
bandbreite Operanden- und Resultatregister werden umbenannt,
• d.h., die in den Befehlen spezifizierten Architekturregister werden auf die physikalisch vorhandenen Register abgebildet.
Danach werden die Befehle in das Befehlsfenster (instruction window) geschrieben.
Die Befehle in dem Befehlsfenster sind durch die Sprungvorhersage frei von Steuerflussabhängigkeiten und durch das Registerumbenennen frei von Namensabhängigkeiten.
Es müssen nur noch die echten Datenabhängigkeiten beachtet und Strukturkonflikte gelöst werden.
9
Zuweisung von Befehlen an die Ausführungseinheiten (Issue)
Die Logik für die Zuweisung von Befehlen an die Ausführungseinheiten überprüft die wartenden Befehle im Befehlsfenster und weist in einem Takt bis zur maximalen Zuordnungsbandbreite Befehle zu.
Die Programmreihenfolge der zugewiesenen Befehle wird im Rückordnungspuffer abgelegt.
Die Befehle können in der sequenziellen Programmreihenfolge (in order) oder außerhalb der Reihenfolge (out of order) zugewiesen werden.
Die Prüfungen auf Daten- und Strukturkonflikte können in einer Pipeline-Stufe geschehen oder sie können auf verschiedene Pipeline-Stufen aufgeteilt werden.
10
Umordnungspuffer - Reservation Station(s)
Wenn die Strukturkonflikte vor den Datenkonflikten geprüft werden, geschieht die Zuweisung der Befehle in sogenannte Umordnungspuffer (reservation stations), die sich vor den Ausführungseinheiten befinden.
Ein Befehl wartet im Umordnungspuffer, bis alle Operanden verfügbar sind.
Abhängig vom Prozessor gehören die Umordnungspuffer zu • einer Gruppe von Ausführungseinheiten (Beispiel: Pentium-Prozessoren) • oder jede Ausführungseinheit hat seine eigenen Umordnungspuffer
(PowerPC-Prozessoren). - Im letzteren Fall kommt es zu einem Strukturkonflikt, wenn mehr als ein
Befehl an einen der Umordnungspuffer der gleichen Ausführungseinheit zugewiesen werden soll.
11
Dispatch
• Der Übergang vom Warten zur Ausführung wird als Dispatch bezeichnet.
• Sollten bei der Zuordnung schon alle Operanden verfügbar sein und die Ausführungseinheit nicht beschäftigt, so kann die Ausführung des Befehls schon direkt im folgenden Takt begonnen werden.
• Deshalb ist Dispatch auch keine Pipeline-Stufe. • Ein Befehl kann null oder mehr Takte im Umordnungspuffer
verbringen. • Dispatch und Ausführung der Befehle geschehen außerhalb der
Programmreihenfolge.
Anmerkung: Die Bedeutungen von issue und dispatch kommen in der Literatur auch vertauscht vor.
12
Befehlsvervollständigung - Completion
Wenn der Befehl die Ausführungseinheit verlassen hat und das Ergebnis für das Forwarding zur Verfügung steht, sagt man, die Befehlsausführung sei vollständig (complete).
Die Befehlsvervollständigung geschieht außerhalb der Programmreihenfolge.
Während der Vervollständigung werden die Umordnungspuffer bereinigt und der Zustand der Ausführung im Rückordnungspuffer vermerkt.
Der Zustand eines Eintrags im Rückordnungspuffer kann eine aufgetretene Unterbrechung anzeigen oder auch einen vollständigen Befehl, der jedoch noch von einer Spekulation abhängt.
13
Gültigmachen - Commitment
Nach der Vervollständigung werden die Befehlsresultate in der Programmreihenfolge gültig gemacht (committed).
Ein Befehlsresultat kann gültig gemacht werden, wenn: • die Befehlsausführung vollständig ist,• die Resultate aller Befehle, die in Programmreihenfolge vor dem
Befehl stehen, bereits gültig sind oder im gleichen Taktzyklus gültig gemacht werden,
• keine Unterbrechung vor oder während der Ausführung auftrat und
• der Befehl von keiner Spekulation mehr abhängt. Während oder nach dem Gültigmachen werden die Ergebnisse der
Befehle in den Architekturregistern dauerhaft gemacht, gewöhnlich durch das Rückschreiben aus den Umbenennungsregistern.
• Oft in einer eigenen Stufe Umbenennungsregister werden erst einen Takt nach der Vervollständigung freigegeben.
14
präzise Unterbrechung - Precise Interrupt, Precise Exception
Wenn eine Unterbrechung auftritt, werden die Resultate aller Befehle, die in der Programmreihenfolge vor dem Ereignis stehen, gültig gemacht und diejenigen aller nachfolgenden Befehle verworfen.
Abhängig von der Architektur und der Art der Unterbrechung, wird das Resultat des verursachenden Befehls noch gültig gemacht oder verworfen, ohne weitere Auswirkungen zu haben.
15
Rückordnung - Retirement
Freigeben eines Platzes im Umordnungspuffer Bei der Rückordnung (retirement) eines Befehls wird
• entweder das Befehlsresultat gültig gemacht (committed)• oder verworfen.
16
6.4 Präzisierung des Begriffs „superskalar“
Definition:
Superscalar machines are distinguished by their ability to (dynamically) issue multiple instructions each clock cycle from a conventional linear instruction stream.
17
Erklärungen zum Superskalar-Begriff
Den Ausführungseinheiten kann mehr als ein Befehl pro Takt zugewiesen werden (dies motiviert den Begriff superskalar im Vergleich zu skalar).
Die Befehle werden aus einem sequenziellen Strom von normalen Befehlen zugewiesen.
Die Zuweisung der Befehle erfolgt in Hardware durch einen dynamischen Scheduler.
Die Anzahl der zugewiesenen Befehle pro Takt wird dynamisch von der Hardware bestimmt und liegt zwischen null und der maximal möglichen Zuweisungsbandbreite.
18
Erklärungen zum Superskalar-Begriff (2)
Die dynamische Zuweisung von Befehlen führt zu einem komplexen Hardware-Scheduler.
• Die Komplexität des Schedulers steigt mit der Größe des Befehlsfensters und mit der Anzahl der Befehle, die außerhalb der Programmreihenfolge zugewiesen werden können.
Mehrere Ausführungseinheiten müssen verfügbar sind. • Anzahl der Ausführungseinheiten entspricht mindestens der Zuweisungsbandbreite,• häufig gibt es jedoch noch mehr Ausführungseinheiten, um potenzielle
Strukturkonflikte zu umgehen.
Superskalartechnik ist eine Mikroarchitekturtechnik und hat keinen Einfluss auf die Befehlssatz-Architektur.
Der Begriff „superskalar“ wird oft in unpräziser Weise benutzt, um Prozessoren mit mehreren parallelen Pipelines oder mehreren Ausführungseinheiten zu beschreiben.
• Das erlauben es nicht zwischen der Superskalar- und der VLIW-Technik zu unterscheiden.
19
Zeitliche vs. Räumliche Parallelität
Befehls-Pipelining und Superskalartechnik nutzen beide feinkörnige Parallelität (fine-grain oder instruction-level parallelism), d.h. Parallelität zwischen einzelnen Befehlen.
Pipelining nutzt zeitliche Parallelität (temporal parallelism) Superskalar nutzt räumliche Parallelität (spatial parallelism). Eine Leistungssteigerung durch zeitliche Parallelität kann mit
einer längeren Pipeline und „schnelleren“ Transistoren (höherer Taktfrequenz) erreicht werden.
Falls genügend feinkörnige Parallelität vorhanden ist, kann die Leistung durch räumliche Parallelität im superskalaren Fall mit Hilfe von mehr Ausführungseinheiten und einer höheren Zuweisungsbandbreite erreicht werden.
20
6.5 Die VLIW-Technik (Very Long Instruction Word)
Architekturtechnik, bei der ein Compiler eine feste Anzahl von einfachen, voneinander unabhängigen Befehlen zu einem Befehlspaket zusammenpackt und in einem Maschinenbefehlswort meist fester Länge speichert.
Das Maschinenbefehlsformat eines VLIW-Befehlspakets kann mehrere hundert Bits lang sein, in der Praxis sind dies zwischen 128 und 1024 Bits.
Alle Befehle innerhalb eines VLIW-Befehlspakets müssen unabhängig voneinander sein und eigene Opcodes und Operandenbezeichner enthalten.
Die Anzahl der Befehle in einem VLIW-Befehlspaket ist in der Regel fest.
• Wenn die volle Bandbreite eines VLIW-Befehlspakets nicht ausgenutzt werden kann, muss es mit Leerbefehlen aufgefüllt werden.
• Neuere VLIW-Architekturen sind in der Lage, durch ein komprimiertes Befehlsformat auf das Auffüllen mit Leerbefehlen zu verzichten.
21
VLIW-Befehl vs. CISC- und SIMD-Befehl
Unterschied zu einem CISC-Befehl:• CISC-Befehl kann mit einem Opcode mehrere, eventuell
sequenziell nacheinander ablaufende Operationen codieren.
Unterschied zu einem SIMD-Befehl (Single Instruction Multiple Data):
• SIMD-Befehle sind die Multimediabefehlen, bei denen ein Opcode eine gleichartige Operation auf einer Anzahl von Operanden(paaren) auslöst.
• Die Operationen innerhalb eines VLIW-Befehlspakets sind in der Regel verschiedenartig.
22
VLIW-Prozessor
Ein VLIW-Prozessor besteht aus einer Anzahl von Ausführungseinheiten, die jeweils eine Maschinenoperation taktsynchron zu den anderen Maschinenoperationen eines VLIW-Befehlspakets ausführen können, wobei ein VLIW-Befehlspaket so viele einfache Befehle umfasst, wie Ausführungseinheiten in dem VLIW-Prozessor vorhanden sind.
Der Prozessor startet im Idealfall in jedem Takt ein VLIW-Befehlspaket.
Die Befehle in einem solchen VLIW-Befehlswort werden dann gleichzeitig geholt, decodiert, zugewiesen und ausgeführt.
In Abhängigkeit von der Anzahl n der Befehle, die gemeinsam durch die Pipeline fließen und entsprechend der maximalen Anzahl n von Befehlen in einem Befehlspaket spricht man von einem n-fachen VLIW-Prozessor.
23
VLIW-Prozessor (2)
keine dynamische Befehlszuordnung, die statische Befehlsanordnung durch den Compiler wird von der Zuordnungseinheit nicht geändert,
• Überprüfen von Datenkonflikten und die Erkennung der Parallelität auf Befehlsebene durch die Zuordnungs-Hardware fällt weg Hardware-Komplexität der Zuordnungseinheit gering
Speicherhierarchie aus Cache- und Hauptspeicher wird erschwert. Dynamische Ereignisse, wie z.B. Cache-Fehlzugriffe, führen zum
Stillstand der nachfolgenden Pipeline-Stufen. Alle Operationen müssen die gleiche Ausführungszeit haben. Eine spekulative Ausführung von Befehlen nach bedingten Sprüngen
wird nicht von der Hardware organisiert, sondern ist auf Compilertechniken wie das sogenannte Trace Scheduling angewiesen.
Ablaufreihenfolge der VLIW-Befehlspakete ist fest, Ausführung auch außerhalb der Programmreihenfolge nicht möglich.
Operanden stehen in einem allen Ausführungseinheiten zugänglichen Registersatz.
24
6.6 Die EPIC-Technik (Explicit Parallel Instruction Computing)
Weiterentwicklung der VLIW-Technik durch Intel und HP zur IA-64-Architektur für Universalprozessoren auf Server-Niveau (64-Bit-Prozessoren).
ein erweitertes Dreibefehlsformat, ähnlich einem dreifach VLIW-Format Ziel der EPIC-Technik: die Einfachheit und hohe Taktrate eines VLIW-
Prozessors mit den Vorteilen des dynamischen Scheduling zu verbinden. Das EPIC-Format erlaubt es dem Compiler, dem Prozessor die
Befehlsparallelität direkt mitzuteilen. Ein EPIC-Prozessor muss im Idealfall keine Überprüfung von Daten- und
Steuerflussabhängigkeiten durchführen und unterstützt keine Veränderung der Ausführungsreihenfolge.
Damit wird die Mikroarchitektur gegenüber einem Superskalarprozessor stark vereinfacht. EPIC verbessert die Fähigkeit des Compilers, auf statische Weise gute Befehlsanordnungen zu erzeugen.
25
IA64-Architektur (Intel Architecture 64)
Zur IA64-Architektur gehören weiterhin • ein voll prädikativer Befehlssatz,• viele Register
- 128 allgemeine Register, - 128 Gleitkommaregister, - 64 Prädikatregister - und 8 Sprungregister
• und spekulative Ladebefehle.
26
EPIC-Befehlsbündel der IA-64-Architektur
Ein EPIC-Befehlsbündel besteht aus einem compilererzeugten 128 Bit breiten Befehls-„Bündel“ mit drei IA-64-Befehlen und sogenannten Template-Bits.
Ein IA-64-Befehl:• besteht aus dem Opcode, einem Prädikatfeld, zwei Adressen der Quellregister,
Adresse des Zielregisters und weiteren Spezialfeldern. • Länge von 41 Bit.
Für die Template-Bits sind im Bündel 5 Bit reserviert, die Informationen zur Gruppierung von Befehlen beinhalten.
Es gibt keine Leerbefehle, sondern die Parallelität wird durch die Template-Bits angegeben. Sie geben an, ob ein Befehl mit einem anderen parallel ausgeführt werden kann. Das kann sich auf Befehle innerhalb des gleichen EPIC-Befehlsbündels beziehen, aber auch auf nachfolgende EPIC-Befehlsbündel.
Da auch voneinander daten- oder steuerflussabhängige Befehle vom Compiler in einem Bündel zusammengefasst werden können, ist das EPIC-Format wesentlich flexibler als die VLIW-Formate.
27
Itanium-Prozessor
sechsfacher EPIC-Prozessor mit zehnstufiger Pipeline neun Ausführungseinheiten, dies sind vier ALU/MMX-Einheiten, zwei
Fließkommaeinheiten, zwei Lade-/Speichereinheiten und eine Sprungeinheit.
Der Itanium konkateniert bei der Ausführung zwei Befehlsbündel mit voneinander unabhängigen Befehlen und führt diese Befehle parallel zueinander in der Pipeline aus.
Zukünftige EPIC-Prozessoren können dann beispielsweise drei oder mehr Befehlsbündel miteinander kombinieren. Skalierbarkeit auf zukünftige Prozessoren möglich.
28
6.7 Vergleich der Superskalar- mit der VLIW- und der EPIC-Technik
Alle drei Techniken verfolgen das Ziel, durch Parallelarbeit einer Anzahl von Ausführungseinheiten eine Leistungssteigerung zu erzielen.
Es sollen möglichst mit jedem Takt so viele Operationen ausgeführt werden, wie die Maschine Ausführungseinheiten besitzt.
Architekturtechnik versus Mikroarchitekturtechnik: • VLIW und EPIC sind Architekturtechniken, • die Superskalartechnik ist eine Mikroarchitekturtechnik.
Befehlsablaufplanung und Konfliktvermeidung: • VLIW/EPIC: Compiler muss die Befehlszuordnung an die Ausführungseinheiten
planen und die Konfliktvermeidung zwischen Befehlen vornehmen, • Beim superskalaren Prozessor geschieht dies durch die Hardware. Anforderungen an den Compiler bei VLIW/EPIC höher als bei superskalar
29
Vergleich der Superskalar- mit der VLIW- und der EPIC-Technik (2)
Compileroptimierungen: • alle drei Architekturformen setzen einem optimierenden Compiler voraus, • Der Compiler der VLIW- und der EPIC-Prozessoren muss auch noch den
Zeitbedarf der Speicherzugriffe in die Befehlsablaufplanung einbeziehen,• die Speicherzugriffe des superskalaren Prozessors werden automatisch von
seiner Lade-/Speichereinheit vorgenommen. • häufig können die gleichen Optimierungsstrategien bei der Codeerzeugung in
allen drei Fällen mit Erfolg angewandt werden Befehlsanordnung: Ebene der „einfachen“ Maschinenbefehle:
• ein superskalarer Prozessor speist seine Ausführungseinheiten aus nur einem Befehlsstrom einfacher Befehle,
• bei einem VLIW-Prozessor ein Befehlsstrom von VLIW-Befehlspaketen, also von Tupeln einfacher Befehle
• EPIC-Format kann auch voneinander abhängige Befehle in einem Bündel vereinen. Template-Bits müssen vom Prozessor geprüft werden.
• Mehrere Bündel mit voneinander unabhängigen Befehlen können gleichzeitig ausgeführt werden. Ein EPIC-Prozessor kann somit als Hybrid aus VLIW- und Superskalarprozessor entworfen werden.
30
Vergleich der Superskalar- mit der VLIW- und der EPIC-Technik (3)
Reaktion auf Laufzeitereignisse: VLIW nicht so flexibel wie superskalar Speicherorganisation: bei VLIW ungünstiger, da der Superskalarprozessor eine
Hierarchie aus Cache- und Hauptspeichern verwenden kann Sprungvorhersage und Sprungspekulation: Verfahren der dynamischen
Sprungvorhersage, • bei heutigen Superskalarprozessoren Standard, • bei VLIW-Prozessoren nicht und bei EPIC-Prozessoren nur erschwert möglich.
Codedichte: • VLIW hat festes Befehlsformat Codedichte immer dann geringer als bei
Superskalarprozessoren, wenn der Grad der zur Verfügung stehenden Befehlsebenenparallelität die Anzahl der Befehle in einem VLIW-Befehlspaket unterschreitet.
• Beim EPIC-Format ist dies nicht der Fall, jedoch kommen die Template-Bits pro EPIC-Bündel hinzu.
31
Vergleich der Superskalar- mit der VLIW- und der EPIC-Technik (4)
Erzielbare Verarbeitungsleistung und Anwendungsfelder: Im Idealfall in allen drei Fällen eine vergleichbare Verarbeitungsleistung
Die Einfachheit der VLIW-Prozessoren ermöglicht eine gegenüber der Superskalartechnik höhere Taktrate.
VLIW-Technik ist bei Code mit sehr hohem Parallelitätsgrad vorteilhaft. • Eine hohe Parallelität auf Befehlsebene ist oft bei Signalverarbeitungsanwendungen
und in numerischen Programmen der Fall. • Allgemeine Anwendungsprogramme wie Textverarbeitungsprogramme,
Tabellenkalkulation, Compiler und Spiele besitzen im Vergleich dazu eine geringe Befehlsebenenparallelität und zeigen ein sehr dynamisches Verhalten, was den Einsatz der Superskalartechnik in Universalmikroprozessoren als geeigneter erscheinen lässt.
EPIC: Kombination der VLIW- mit der Superskalartechnik Zum einen wird die Starrheit des VLIW-Prinzips vermieden und zum anderen
die Komplexität der Zuordnungseinheit durch das VLIW-artige EPIC-Format verringert.