42
Itanium 2 Götz Becker Lehrstuhl für Rechnerarchitektur 1

Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Itanium 2

Götz BeckerLehrstuhl für Rechnerarchitektur

1

Page 2: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Ü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

Page 3: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Itanium 2

● Nachfolger des Itanium,der ersten Implemantion von EPIC/IA-64

● Hersteller Intel● 1997 Itanium ● 2002 Itanium 2

3

Page 4: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 5: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 6: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Wie erreicht man „High Perfomance“?

● mit vielen parallelen RechenwerkenFunctional Units (FU)

● mit Pipelining● mit einer Speicherhierarchie

6

Page 7: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 8: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 9: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

IA-64 Bundle Instruktions Typen

M M F MMF

M I B MIB

[2]

9

Page 10: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

IA-64 Register

stacked/rotating

fixed

[2]

10

Page 11: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 12: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Instruction Level Parallism (ILP)

Ausdrucksmöglichkeiten für ILP in IA-64:● Predication● Control Speculation● Data Speculation● Loop Pipelining

12

Page 13: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 14: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 15: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

!

Page 16: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 17: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 18: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

!

Page 19: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 20: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 21: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 22: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 23: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 24: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 25: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 26: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Itanium 2 (Madison 9M L3) – 592 Millionen Transistoren[4]

26

Page 27: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

[1] 27

Page 28: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 29: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Pipeline

[1]29

Page 30: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Instruction Issue

Pro Takt 2 Bundles = 6 Intructions in 11 FUsdynamische Verteilung auf freie FUsNicht alle Kombinationen sind möglich

[1]

30

Page 31: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 32: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Register Stack Engine

[2]

32

Page 33: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 34: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Multi-way Branching

[3]

34

Page 35: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 36: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 37: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 38: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 39: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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]

Page 40: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Itanium „Montecino“ 2005

● 1,72 Milliarden Transistoren![4]

40

Page 41: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

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

Page 42: Itanium 2 - Heidelberg Universityra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · Itanium 2 Nachfolger des Itanium, der ersten Implemantion von EPIC/IA-64

Vielen Dankfür Ihre Aufmerksamkeit