700 likes | 866 Views
VLIW und EPIC. Hauptseminar “Techniken der Code-Optimierung für moderne Rechnerarchitekturen†SS/98 an der TU München von Christian Mailer (Betreuer Michael Eberl) gehalten am Donnerstag den 09.07.1998. Gliederung. 1. Allgemeines zu VLIW 2. Allgemeines zu EPIC 3. Kurzinfo über Superblocks
E N D
VLIW und EPIC Hauptseminar “Techniken der Code-Optimierung für moderne Rechnerarchitekturen” SS/98 an der TU München von Christian Mailer (Betreuer Michael Eberl) gehalten am Donnerstag den 09.07.1998 Hauptseminar: VLIW und EPIC
Gliederung • 1. Allgemeines zu VLIW • 2. Allgemeines zu EPIC • 3. Kurzinfo über Superblocks • 4. Predication • 4.1. Full predication • 4.2. Partial predication • 5. Speculation • 5.1. Control speculation • 5.2 Data speculation Hauptseminar: VLIW und EPIC
Gliederung • 6. Predication und speculation vereint (basiert auf IMPACT EPIC) • 7. Modelle für das exception-handling bei diesen Techniken • 8. Ausblick • 9. Quellenangaben Hauptseminar: VLIW und EPIC
1. Allgemeines zu VLIW • VLIW = Very Long Instruction Word • Codegenerierung ergänzt um abschließendes Scheduling zur Befehlszusammenfassung • Compiler untersucht Unabhängigkeiten der Befehle anstatt CPU • Unabhängige Instruktionen werden dann in VLIWs gepackt • CPU kann sicher sein, daß Befehle in einem VLIW parallel ausgeführt werden können Hauptseminar: VLIW und EPIC
Allgemeines zu VLIW • Vorteile: • Vereinfachung der Hardware • Compiler kann Parallelität durch Übersicht über ganzen Code besser extrahieren • durch den Aufbau der VLIWs können auch unterschiedliche Funktionseinheiten optimal ausgenutzt werden • Nachteile: • sind nicht genug unabhängige Befehle vorhanden müssen i.a. die freien Slots durch NOPs verschwendet werden • höhere Ansprüche an Compiler • Problem der Abwärtskompatibilität Hauptseminar: VLIW und EPIC
VLIW-Compiler-Ablauf Hauptseminar: VLIW und EPIC
Aufbau der Multiflow VLIWs • 1024 Bit lang, aufgeteilt in vier 256-Bitblöcke, die jeweils sieben Instruktionen enthalten, insgesamt also 28 Instruktionen pro VLIW • schon 1985 von Multiflow definiert • Um den Codeverschnitt zu minimieren werden NOPs komprimiert Hauptseminar: VLIW und EPIC
Aufbau der Multiflow VLIWs Hauptseminar: VLIW und EPIC
Aufbau der IA-64 VLIWs • 128 Bit lang, enthält 3 Instruktionen und Template-Feld • 1994 wurde mit der Entwicklung begonnen • Template-Feld zur Vermeidung von NOPs • genauere Bitaufteilung noch nicht bekannt Hauptseminar: VLIW und EPIC
Infos von INTEL über IA-64 • komplette 64-Bit-Architektur • 128 Elemente großes Registerfile • full predication • data speculation • vollständige Abwärtskompatibilität (angeblich sogar in Hardware) • Merced soll nun wohl gegen Ende 1999 erscheinen Hauptseminar: VLIW und EPIC
Infos von INTEL über IA-64 Hauptseminar: VLIW und EPIC
Infos von INTEL über IA-64 Hauptseminar: VLIW und EPIC
2. Allgemeines zu EPIC • EPIC = Explicitly Parallel Intruction Computing • EPIC beschreibt eine Sammlung von Techniken um ILP (Instruction Level Parallelism) auszubeuten. • Kombinierte Soft- oder Hardwaretechniken zur Leistungssteigerung • Synthese erzeugt oft deutlich bessere Resultate • Verlagerung von Codeoptimierung von CPU zum Compiler • Compiler erhält neue hardware-realisierte Werkzeuge zur Seite für weitere Optimierung Hauptseminar: VLIW und EPIC
Allgemeines zu EPIC • Vorteile: • direkte Anpassung von Compiler und Hardware • statt Anpassung Neudesign • dadurch werden neue Technologien ermöglicht • Nachteile: • noch höhere Ansprüche an Compiler • Verzicht auf etablierte Standards • Abwärtskompatibilität und Leistung alter Programme Hauptseminar: VLIW und EPIC
3. Kurzinfo Superblocks • Superblocks sind keine eigentliche VLIW-Optimierung • Ein Superblock hat nur einen Eingang, kann aber mehrere Ausgänge besitzen • Durch diese Einschränkung kann man mehrere basic blocks zu einem größeren Superblock zusammenfassen. • Ziel dieser Zusammenfassung ist Verzweigungen zu eliminieren. • Teile des Codes werden vervielfacht und dadurch Sprünge unnötig gemacht. • der Codeumfang steigt aber dabei an Hauptseminar: VLIW und EPIC
Superblock Diagramm Hauptseminar: VLIW und EPIC
Superblock Beispiel • Wc ist das Linux-Programm Word Count. Auf den folgenden Folien stelle ich zuerst den Sourcecode der meist genutzten Schleife (main loop) dar. Danach den control flow graph (CFG) dieser Schleife und daneben der daraus entstandene Superblock. Hauptseminar: VLIW und EPIC
Superblock Beispiel Hauptseminar: VLIW und EPIC
CFG des Beispiels Hauptseminar: VLIW und EPIC
Predication ist eine Technik um Verzweigungen aufzulösen dadurch auch Auflösung von Abhängigkeiten (Aufbrechen der basic blocks) Compiler hat mehr Möglichkeiten für weitere Optimierungen anstatt von Sprüngen werden 1-Bit-Register (die predicates) beachtet Befehle werden dabei immer ausgeführt 4. Predication Hauptseminar: VLIW und EPIC
Predication • aber Resultate werden nur noch bei gesetzten predicates (TRUE) gespeichert • Pipelines müssen nicht mehr gefüllt werden • v.a. keine mispredictions bei diesen ehemaligen Sprüngen mehr möglich • zwei verschiedene Arten von Predication die ich weiter erläutern werde Hauptseminar: VLIW und EPIC
4.1. Full predication • Voraussetzungen: • Das predicate-Register ist ein Set aus 1-Bit-Registern, die den Flags ähnlich sind. • Befehle um diese Register zu setzen oder zu löschen. • Jeder Befehl muß um die Möglichkeit ein predicate als Quelloperand angeben zu können erweitert werden. Hauptseminar: VLIW und EPIC
Beispiel Hauptseminar: VLIW und EPIC
Funktionsschema: Hauptseminar: VLIW und EPIC
Weitere Beispiele Hauptseminar: VLIW und EPIC
Weitere Beispiele Hauptseminar: VLIW und EPIC
4.2. Partial predication • Voraussetzungen: • nur ein Teil der Befehle wird erweitert (v.a. für Erweiterung von vorhandenen Architekturen gedacht) • im Extremfall ein einziger Befehl, der conditional move. • Syntax: CMOV SRC, DEST, COND • Beschreibung: if (COND == TRUE) DEST = SRC; • Oft noch ein SELECT-Befehl • Syntax: SELECT SRC1, SRC2, DEST, COND • Beschreibung: if (COND == TRUE) DEST = SRC1 else DEST = SRC2; • ideal für if-conversion, verringert Codeexpansion Hauptseminar: VLIW und EPIC
Partial predication • Vorgehensweise: • erst full predicated code • dann erst Umwandlung in partial predicated code • Algorithmen für full predicated code erbringen bessere Resultate • daher Beschreibung der Techniken für Rückwandlung Hauptseminar: VLIW und EPIC
Techniken für full->partial pred. • prinzipiell läßt sich jeder full predicated Befehl in zwei partial predicated aufspalten • if (p1) R5 = R2 + R1 • ADD R1, R2, R5 (p1) • ADD R1, R2, RX CMOV RX, R5, p1 • Problem: Codeverdoppelung • Problem: Umwandlung der speziellen full predicated Instruktionen • Technik: Predicate promotion • unnötige predicates wieder aufgelösen Hauptseminar: VLIW und EPIC
Techniken für full->partial pred. Hauptseminar: VLIW und EPIC
Techniken für full->partial pred. • Technik: Basic Conversions • alle übrigen full predicated Konstrukte umgewandeln • Codeexpansion nicht vermeidbart • Beispiel: load • Konstrukt: if (p1) R4 = MEM[ADDR] • full: R4 = MEM[ADDR] (p1) • partial: RX = MEM[ADDR] CMOV RX, R4, p1 • Beispiel: store • Konstrukt: if (p3) MEM[ADDR] = R4 • full: MEM[ADDR] = R4 (p3) • partial: SELECT ADDR, SAFE, RX, p3 MOV MEM[RX],R4 Hauptseminar: VLIW und EPIC
Techniken für full->partial pred. Hauptseminar: VLIW und EPIC
Techniken für full->partial pred. • Technik: Peephole optimizations • Code nach basic conversions oft noch verbesserbar • Umwandlungen betrachten ja nur einzelne Instruktionen • bekannte Techniken: • common subexpression elimination • copy propagation • dead code removal • dazu spezielle Fälle suchen und ausbessern, die standardmäßig häufig vorkommen (peepholes) Hauptseminar: VLIW und EPIC
Abschließendes Beispiel Hauptseminar: VLIW und EPIC
Predication-Info von HP Hauptseminar: VLIW und EPIC
Predication-Info von HP Hauptseminar: VLIW und EPIC
Predication-Info von HP Hauptseminar: VLIW und EPIC
Predication-Info von HP Hauptseminar: VLIW und EPIC
Predication Leistungsanalyse Hauptseminar: VLIW und EPIC
Predication Hitanalyse number of branches(MR), mispred.(MP), rate of mispred.(MPR) Hauptseminar: VLIW und EPIC
5. Speculation • Befehle werden eine oder mehrere Ebenen im Code hinaufgestuft • dadurch frühere Ausführung als eigentlich vorgesehen • eigentlich Erweiterung der out-of-order-Technologie • kann basic block übergreifendend Abhängigkeiten ändern • data speculation bezieht sich auf load- oder store-Befehle • Sinn: Probleme durch Latenzzeiten zu vermeiden • durch Aufwertung werden ein paar Zyklen Reserve geschaffen • Problematik der load/store-Abhängigkeiten • Druck auf das Registerfile erhöht sich • spezielles exception-handling nötig Hauptseminar: VLIW und EPIC
Speculation • Control speculation bezieht sich auf die Aufwertung der sonstigen Befehle • Sinn: Auflösung von Abhängigkeiten • Compiler kann dadurch wiederum besser schedulen • ebenfalls neues exception-handling nötig Hauptseminar: VLIW und EPIC
5.1. Data speculation Hauptseminar: VLIW und EPIC
Beispiel Hauptseminar: VLIW und EPIC
Speculation-Info von HP Hauptseminar: VLIW und EPIC
Speculation-Info von HP Hauptseminar: VLIW und EPIC
Speculation-Info von HP Hauptseminar: VLIW und EPIC
Speculation-Info von HP Hauptseminar: VLIW und EPIC
Speculation-Info von HP Hauptseminar: VLIW und EPIC
Speculation-Info von HP Hauptseminar: VLIW und EPIC