Post on 03-Jun-2020
Itanium 2
Götz BeckerLehrstuhl für Rechnerarchitektur
1
Übersicht
● Einführung in die Itanium Architektur● Besonderheiten der Architektur
– Beispiele für deren Anwendung● Mikro-Architektur des Itanium 2● Compiler und Benchmarks● Ausblick
2
Itanium 2
● Nachfolger des Itanium,der ersten Implemantion von EPIC/IA-64
● Hersteller Intel● 1997 Itanium ● 2002 Itanium 2
3
EPIC, IA-64
● Explicit parallel instruction computing● ISA (instruction set architecture)
Gemeinschaftsentwicklung von Intel und Hewlett-Packard, angekünditg Juni 1994
● Ziel:Erweiterbare 64-bit ISA mithoher Ausdruckskraft für Parallelität
● Für „High Performance“ CPUs
4
EPIC - Ansatz
● Compiler kennt die Abhängigkeiten im Programmablauf– Kann mehr Arbeit in Optimierung stecken– Kann Informationen aus Profiling-Tests benutzen
● Vermeidung von aufwendigerOut-of-Order Logik im Prozessor– moderne Risc-CPUs z.b. Power5 von IBM
5
Wie erreicht man „High Perfomance“?
● mit vielen parallelen RechenwerkenFunctional Units (FU)
● mit Pipelining● mit einer Speicherhierarchie
6
VLIW
● VLIW (very long instruction word)feste Anzahl Operationen in einem VLIWDiese werden parallel von mehreren FUs ausgeführt
● Alle Operationen in einem VLIW müssen unabhängig sein
● Statische Instruktions Scheduling vom Compiler● Problem:
– Kontrollflußfehler– Cache-Misses können nicht versteckt werden
7
IA-64 Bundle
● VLIW mit 5bit Zusatzinfos● 128bit Bundle:
– 3 x 41bit Instruktionen● 2 Quellregister, 1 Zielregister, 1 Predikat
– 1 x 5bit Template● Kodiert 6 Instruktionstypen (A, I, M, F, B, LX)● Template kodiert Instruktions-Abhängigkeiten
41bit 41bit 41bit 5bit
8
IA-64 Bundle Instruktions Typen
M M F MMF
M I B MIB
[2]
9
IA-64 Register
stacked/rotating
fixed
[2]
10
ALATadvanced-load address table
● Kernstück der Data Speculation● Tabelle mit 32 Einträge● Addressiert durch
– die physikalische Speicheradresse– einem „ALAT register tag“
besteht u.a. aus der Registeradresse
Beispiel folgtspäter
11
Instruction Level Parallism (ILP)
Ausdrucksmöglichkeiten für ILP in IA-64:● Predication● Control Speculation● Data Speculation● Loop Pipelining
12
Predication:
compare
branch
branch
cmp pr1,pr2
pr1
pr1
pr2
pr2
If then else – Zerlegung durch Predication
Kein Branch mehr vorhanden!Kontrollfluß wird Datenfluß
13
Control Speculation
...
instr i
...
branch
ld r1 = mem
use r1
Problem:Compiler legt den load nicht vor den branchRiskiert Exception (Page Fault)
use eine Operation z.b. add, sub
?
14
Control Speculation
Compiler kann schon vor Branch laden:
ld.s speculative load
ld.c speculative check
checkt das NaT-Bit des Registers und lädt Wert falls noch nicht vorhanden
Fehlerbehandlung erst wenn Wert tatsächlich benötigt wird
ld.s r1 = mem
instr i
...
branch
ld.c r1
use r1
15
!
Control Speculation
ld.s r1 = mem
instr 1
use r1
instr 2
branch
chk.s use
...
Recovery code:ld r1 = memuse r1branch
16
Für komplexe Korrekturen:chk.s speculative check
Branch zu Recovery Funktion
Data Speculation
...
instr 1
instr 2
store mem?
ld r1 = mem!
use r1
Problem:
Compiler weiß nicht, ob ein Wert, der aus dem Speicher geladen wurde, noch gültig ist.?
17
Data Speculation
Compiler kann mit Hilfe der ALAT „spekulieren“
ld.a advanced loadlegt einen Eintrag im ALAT an
ld.c checked loadprüft ob Eintrag in ALAT vorhanden, neuladen wenn nicht
....
ld.a r1 = mem
instr 1
store mem?
ld.c r1
use r1
18
!
Data Speculation
ld.a r1 = mem
instr 1
use r1
instr 2
store mem?
chk.a r1
...
Recovery code:ld r1 = memuse r1branch
19
Für komplexe Korrekturen:chk.a speculative check
Branch zu Recovery Funktion
ALAT Semantik
● Eintrag anlegen– Ein ld.a legt einen Eintrag an
● Eintrag löschen– Falls ein store eine „überwachte“ Adresse (auch
Registeradressen) anspricht, wird dieser Eintrag gelöscht
Alle vorhandenen Einträge verweisen auf noch gültige Speicheroperationen
20
ALAT - Abfrage
● ld.c – checkt ob der Eintrag gültig ist und lädt bei einem
Miss den Wert erneut aus dem Speicher● chk.a
– checkt ob der Eintrag gültig ist und springt bei einem Miss zu einer Recovery Funktion
– Recovery Funktion wird vom Compiler erzeugt– Bietet mehr Flexibilität, vergrößert den Code– Mögliche Kontrollflußänderung
21
Loop Pipelining
● Bsp: 6 Interationen einer einfachenload > load > op > store > branch Schleife
Durch spezielleSchleifenzähler in Hardware effizient umsetzbar.Spezielle Schleifen-Branch Befehle steuern LC und EC
[3] 22
Kannlängersein
Cache Hierarchie
L1i16K1 cycle
L1d16K1 cycle
L2256K5/6 cycle
L31,5M-9M12/14 cycle
SystemBus
R 48GB/s
R/W 24GB/s
R/W 48GB/s R/W 6,4GB/s
Cacheline Sizes:L1 64BL2/L3 128B
23
IA-64 Speicherhiercharchie
● Explicit data cache line prefetching– L1/L2/L3 addressierbar– Je 2 Versionen, direct oder delayable
● Cache Hints (.nt1, .nt2 , .nta)– welche Hiercharchiestufe eine Speicheroperation
ansprechen soll – impliziert Nutzungsdauer– Hinweis für Ersetzungsstrategie
● Instruction Prefetching
24
Explicit control of Memory Access Order
● Memory Fence mf– Stellt sicher, daß alle früheren Speicheroperationen
architektonisch sichtbar waren, bevor weitere zur Ausführung kommen
● Acquire Load ld.acq – Sichtbar vor allen folgenden Speicheroperationen
● Release store st.rel – Alle vorherigen Speicheroperationen sind sichtbar
25
Itanium 2 (Madison 9M L3) – 592 Millionen Transistoren[4]
26
[1] 27
Pipeline
● 8 Stufen Tief● 6-wide (6 parallele FUs)● 6 Integer ALUs● 6 Multimedia ALUs● 2 ext. Floating Point Units● 2 load- , 2 store-Units ● 3 Branch Units
28
Pipeline
[1]29
Instruction Issue
Pro Takt 2 Bundles = 6 Intructions in 11 FUsdynamische Verteilung auf freie FUsNicht alle Kombinationen sind möglich
[1]
30
Register Stack Engine
● Verwaltet Register File● Übernimmt Register Renaming● Kontrolliert Register Rotation● Bietet programmierbare Stackframes
– Inkl. Frame Overlaps und kompakten Frames● Simuliert ein unbegrenzt viele Register
– Lagert Register bei Bedarf automatisch ausund auch wieder ein
31
Register Stack Engine
[2]
32
Multi-way Branching
● Durch 2 abhängige Bundles– 6 in-order Instruktionen
● 3 Tests/Compares (z.b. MII) im Ersten● 3 predicated Branches (BBB) im Zweiten● Führt ein 3-fach Case in einem Takt aus
33
Multi-way Branching
[3]
34
Compiler
● Standard (kommerziell):– Intel – HP
● Open Source Projekte– Open Research Compiler (ORC)
● Unterstützt von Intel
– OpenIMPACT – Gelato● Unterstützt von HP
– gcc● Langsam
35
1-way SPEC results
int200_base fp2000_base0
250
500
750
1000
1250
1500
1750
2000
2250
2500
2750
Athlon64 FX 2.6 GHz
Pentium 4 3.5 GHz
Opteron 2.4 GHz
POWER5 1.9 GHz
Itanium 2 1.6 GHz
[5]
36
2-way SPEC results
int_rate200_base fp_rate2000_base0
5
10
15
20
25
30
35
40
45
50
55
POWER5 1.65 GHz
Opteron 2.4 GHz
PA-RISC 8800 1 GHz
Pentium 4 Xeon 3.2 GHz
Itanium 2 1.6 GHz
[5]
37
32-way SPEC results
int_rate200_base fp_rate2000_base0
100
200
300
400
500
600
700
800
900
POWER5 1.65 GHz
PA-RISC 8800 1 GHz
SPARC64 V 1.89 GHz
Alpha 21364
Itanium 2 1.6 GHz
[5]
38
Ausblick
● Patterson:„Surprising that an approach whose goal is to rely on compiler technology and simpler HW seems to be at least as complex as dynamically scheduled processors!“
● HP hat seine Itanium-Abteilung an Intel verkauft– Was macht nun Intel?– Inzw. Starke 64bit Konkurrenz im eigenen Haus
39
[6]
Itanium „Montecino“ 2005
● 1,72 Milliarden Transistoren![4]
40
Quellen
[1] Intel Itanium Archtecture Software Develper Manual Band 1-3http://www.intel.com/design/itanium/documentation.htm
[2] Vorlesungsfolien Prozessorarchitektur – Processor ArchitectureJoachim Gläß, Universität Mannheim, SS 2004
[3] Inside the Intel Itanium 2 Processor, HP Technical White Paper July 2002 http://www.dig64.org/More_on_DIG64/Itanium2_white_paper_public.pdf
[4] Microprocessor Report „ Best Servers of 2004“http://www.mpronline.com
[5] Ace´s Hardware SPEC CPU Dataminerhttp://www.aceshardware.com/SPECmine/Stand Dezember 2004
[6] Computer Science 252, Prof. Patterson Spring 2001http://www.cs.berkeley.edu/pattrsn/252501/Lec19-static.pdf
Vielen Dankfür Ihre Aufmerksamkeit