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
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 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