epic, ia-64 und itanium eine kurzpräsentation von jan hübbers bei prof. dr.-ing. risse im fach...
TRANSCRIPT
EPIC, IA-64 und Itanium
Eine Kurzpräsentation
von Jan Hübbers
bei Prof. Dr.-Ing. Risse
im Fach Labor Rechnerstrukturen
an der Hochschule Bremen
12.12.2002
Zielsetzung des Itaniums
Parallelität ohne Laufzeit Overhead Minimierung von Latenzzeiten Überwindung von Ressourcenknappheit
Was ist EPIC? (1)
Explicit Parallel Instruction Computing Compiler findet parallelisierbare Instruktionen
(ILP, Instruction Level Parallelism) Reorganisation des Bytecodes zu parallelen
Datenströmen zur Compilerzeit Hohe Ausnutzung der parallelen
Funktionseinheiten Mehrere parallele Instruktionen pro Takt
Was ist EPIC? (2)
Sehr starke Determinierung der Nutzung der Hardware durch den Bytecode
Sehr gute Compiler nötig Sehr(!!) gute Assembler-Programmierer nötig Einsparung von komplexer Out Of Order
Logik
Was ist IA-64?
Neues Instuction Set (ISA) von Intel X86 (IA-32) direkt ausgeführt Very Long Instruction Word (VWLI) 128 Bit 3 Instruktionen à 41 Bit + 1 Template à 5 Bit
41 Bit 41 Bit 41 Bit 5 Bit
128 Bit Bundle
Instruktion Template
IA-64 ISA
3*7 Bit Operanden = 21 Bit
14 Bit Opcode 6 Bit Prädikaten-
kombinationen Insgesamt 1 Bundle Group = mehrere
Bundles bis Stop-Bit
Itanium Pipeline
10-stufig In-Order-Execution 6 parallele Stränge = 2 Bundles
Itanium Daten
3 Branch Einheiten 2 Integer Einheiten 2 Integer/Load/Store Einheiten 2 FP Einheiten L1 Cache 16KB+16 KB L2 Cache 96 KB L3 Cache 2 MB / 4 MB on Module 800 MHz 25 Mio. Transistoren
Itanium Register
128 generelle Integer Register, 64 Bits breit 128 FP Register, 82 Bits breit 64 1-Bit Prädikat Register 8 Branch Register, 64 Bits breit
Itanium Übersicht
Verzweigungen
Prädikate– Beide Seiten einer Verzweigung ausführen– Nacher die falsche Verwerfen– Vermeidet Misprediction
Vorhersage– Statisch durch Programmierer– Dynamisch durch CPU
Hinweise & Spekulationen
Vorzeitiges Laden/Speichern von Daten Vor Verzweigungen möglich Advanced Load Address Table (ALAT )
verhindert Inkonsistenzen Ebenfalls determiniert (Programmierer /
Compiler) Bis hin zu Vorhaltezeit und Ort von Daten
Register Rotation (1)
Software Pipelining von Schleifen– Enorme Zeitersparnis– Überlappende Schleifendurchläufe– Iteration N benutzt logisch das gleiche Register
wie Iteration N+1– Physikalisch jedoch unterschiedliche Register– Überwachung mit Prädikaten
Register Rotation (2)
Effizienter Prozedur Wechsel– Rotation bildet einen Stack nach– Kein „push/pop“ nötig
Im Falle eines Register-Überlaufs– Register Save Engine (RSE) pusht/popt
transparent– Aber CPU stall
Fliesskomma Einheit
multiply-accumulate (MAC) Integermultiplikation in der FPU
– Dedizierte Transfer/Transformationsmodi
SIMD in der FPU
Speicher Anbindung/Verwaltung
2^36 Bit phys. Adressen (64 GB) 2,1 GB/s bei 2*133MHz*64 Bit
Itanium 2
Bessere Speicheanbindung 6,4 GB/s 2*200MHz*128 Bit
L3 Cache on Die 8 Pipeline Stufen 2^44 Bit phys. adressierbar (18 TB)
Betriebssysteme
MS .NET Server HP-UX Linux – 64 (Trillian)
Mögliche Anwendungen
Wissenschaftliche Bereiche– Starke FPU
Grosse Datenbanken– Grosser Speicherbereich
Betriebsarten
64-Bit Modus– Für 64-Bit OS– IA-64 Befehlssatz– IA-32 real mode, IA-32 V86 mode, IA-32 protected mode– Von IA-32 Modi kann IA-64 aufgerufen werden
32-Bit Modus– Für 32-Bit OS
PA-RISC Emulation
Pro und Contra
Pro– Weg von x86– Großer adressierbarer Speicherbereich– Ausnutzung von Parallelität
Contra– „Zu neu“– Migration nicht zwingend– 64-Bit Software nicht ausgereift– I/O Performance nicht so toll
Ausblick
Itanium 1 war ein Flopp Itanium 2 tut sich schwer Opteron zZ attraktiver Allerdings ist zB HP hinter Itanium .Net Server für IA-64 Langfristig setzt sich IA-64 gegen x86-64
durch