Präsentation herunterladen
1
Die Intel Architecture 64 (IA-64)
Der Parallelrechner auf einem Chip Referenten: Hansjörg Zingerle Werner Mairegger
2
Kostenentwicklung für Prozessorherstellung
IA-64 Einführung Kostenentwicklung für Prozessorherstellung
3
IA-64 Einführung CISC
4
IA-64 Einführung Was ist EPIC? Komplett neue Prinzipien!
EPIC (Explicitly Parallel Instruction Computing)
5
IA-64 Einführung Was charakterisiert einen Mikroprozessor?
Die Architektur Der Befehlssatz Die Verarbeitungsmethodik Den Prozessortyp
6
Architektur(General Register)
IA-64 besitzt 128 General Register GR0 – GR127 64 bit breit + 1 bit NaT(Not a Thing) Sind unterteilt in 2 Partitionen: 1 GR0 – GR31 Static GR 2 GR32 – GR127 Stacked GR
7
Architektur (Floating-point Register)
IA-64 besitzt 128 Floating-point Register FR0 – FR127 82-bit breit Sind unterteilt in 2 Partitionen: 1 FR0 – FR31 Static FR 2 FR32 – FR127 Rotating FR
8
Architektur(Predicat Register)
IA-64 besitzt 64 Predicat Register PR0 - PR bit breit Sind unterteilt in 2 Partitionen: 1 PR0 - PR15 Static PR 2 PR16 – PR63 Rotating PR
9
Architektur(Branch Register)
Der IA-64 besitzt 8 Branch Register PR0 – PR7 mit 64-bit Breite
10
Architektur(Register)
Predicat Register Integer Register FB Register Branch Register NaT bit FR0 FR31 FR32 FR127 GR0 GR31 GR32 GR127 . +0.0 +1.0 BR0 BR8 PR0 PR15 PR16 PR63 32 Static 96 Rotatet 16 Static 48 Rotatet 32 Static 96 Rotatet
11
Architektur(Caches) L1 Data Cache 16 KB on Chip L1 Instruction Cache
L2 Unified Cache 96 KB Memory
12
Verarbietungsmehodik (Befehlsformat)
IA-64 unterstützt Big- und Little-Endian bit order (z.B.HP-UX 11,Windows) Befehle sind zu dreierBündeln zusammengefaßt,+Tamplate 64 bit virtual Adress Space HW unterstützt 64 bit Pointer 18 Billionen Gigabites sind adressierbar ^64 = 18,446,744,073,709,551,616
13
Befehlssatz(Befehlsformat)
Die Befehle des IA-64 sind gebündelt(bandle) Instruction2 Instruction1 Instruction 0 template 41 bits 41 bits bits bit
14
Verarbeitungsmethodik (RegisterRotating)
Motivation: weniger Schleifendurchläufe weniger Sourcecode höherer Datenfluß mit weniger Befehlen gleichzeitige Zuteilung von Schleifen and die HW
15
Verarbeitungsmethodik (Register Rotating)
Traditional IA-64 R36 R37 R38 R39 R40 R36 R37 R38 R39 R40 Load in R36 Load in R37 Load in R38 Load in R39 4 instructions Load in R36 1 instruction
16
Verarbeitungsmethodik (Register Rotation)
36: 35: 34: 33: 32: Palm L1 R35 Palm Springs is Sunny RRB=0
17
Verarbeitungsmethodik (Register Rotation)
36: 35: Palm 34: 33: 32: Palm St1 R35 Springs Ld2 R34 Palm Springs is Sunny RRB=0
18
Verarbeitungsmethodik (Register Rotation)
35: Palm 34: Springs 33: 127: 126: Palm Springs St2 R35 is Ld3 R34 Palm Springs is Sunny RRB=-1
19
Verarbeitungsmethodik (Register Rotating)
34: Springs 33: is 32: 127: 126: Palm Springs is St3 R35 sunny Ld4 R34 Palm Springs is sunny RRB=-2
20
Verarbeitungsmethodik (Register Rotating)
32:sunny 127: 126: 125: Palm Springs is sunny St4 R35 Palm Springs is sunny RRB=-3
21
Prozessortyp(Adressierung)
Mit so vielen Bits Kann mann so viele Flächenvehältnis Adressen ansprechen 8 2^8= Visitenkarte ^16= Schriebtisch ^32=4.29*10^ Häuserblock ^64=1.89*10^ Erdoberfläche
22
Prozessortyp(Adressierung)
Wie sieht die virtuelle Adresse des IA-64 aus? virtual address virtual region number virtual page number offset
23
Prozessortyp(Adressierung)
Flacher virtuelle Speicher 2^64 bytes 2^64 64-bit Addresse
24
Prozessortyp(Adressierung)
64-bit Addresse 2^64 pages
25
Prozessortyp(Region Register)
bits beinhalten die 24 bit region identifiers(RIDs) Region Register erlauben effizientes Managment von Prozessen für Multi-tasking Anwendungen Region Register werden vom Betriebssystem zur Speicherverwaltung benützt (z.B. Region 0 für User Anwendungen, Region 1 für DLLs oder Region 7 für Daten vom Betriebssystem.
26
Prozessortyp(Adressierung)
Prozessor arbeitet mit Kopie von Daten die im Voraus gefertigt werden die Daten werden in Chaches zwischengelagert Wo sich die Kopieen befinde ist in den TLBs vermerkt (TLB = translation look-aside buffer) Region Register (24bit)
27
Prozessortyp(virt.memory modell)
###### RID RRX virt. page # offset TLB RID Virtual Page# Physical Page# Protection Physical Address
28
Architektur(FunktionsEinheiten)
2 Integer units for A-type und I-type instructions 2 Floating-point units for F-type instructions 2 Memory units for M-type instructions 3 Branch units for B-type instructions
29
EPIC, die nächste Generation
30
Explizit Parallel Instruction Computing
Explizite Parallelität ILP (Instruction Level Parallelism) im Maschienencode Compilerunterstützung (Tipps vom Compiler an die Hardware) Binäre Kompatibilität innerhalb der IA-64 Familie Tools die ILP ermöglichen Predication Speculation Andere ... Hardware zur parallelen Ausführung Viele Register Viele Funktionseinheiten (Rechenwerke) Skalaribilität
31
Istruction Level Parallelism ILP
Source Code Parallel Machine Code Compiler Mehrere Funktionseinheiten
32
Istruction Level Parallelism ILP
Der Chip muss keine Registerabhängigkeiten prüfen Die Parallelisierungslast fällt auf den Compiler Die IA-64 Instruktionen werden in 3er Bündeln mit Template übergeben (3x 41Bit + 7Bit Template = 128) Die IA-64 kann bis zu 6 Instruktionen im selben Takt ausführen
33
Instuctiongroups { .mii add r1 = r2, r3 sub r4 = r4, r5;;
shr r7, r4, r12;; } { .mmi ld8 r2, [r1];; st8 [r1] = r23 tbit p1,p2 = r4, 5 } .mbb ld8 r45 = [r55] (p3)br.call b1=func1 (p4)br.cond Label1 { .mfi st4 [r45] = r6 fmac f1=f2,f3 add r3=r3, 8;;
34
Branch Architecture Sprung Typen Branch predict hints
IP-Offset Sprünge (21 Bit) Indirekte Sprünge via 8 Brach Registern Spezielle Sprungbefehle für Schleifen Branch predict hints Vorhersage des Compiler welchen Weg das Programm einschlagen wird Multi-way Branches Bis zu 3 Sprünge in einem Bündel Verkettete Muli-way Sprünge erlauben n-Wege Sprünge
35
Beispiel Hints hint B,Target compute0 compute0 compute1 compute1
compare(a==b) B: branch_if_eq -> Target Target: :
36
Predication IA-64 Traditionell Cmp a, b -> p1, p2 p2 X = 2 p1 X = 1
Load Cmp a, b Jump.eq X = 1 jump X = 2 Load if else Die Kondition wird aufbauend auf die qualifizierenden Prädikaten ausgeführt Die IA-64 stellt 64 Predicate Register zur Verfügung then
37
Predication ... Die Technik der Basic Blocks (Teil von Sprung bis zu nächsten Sprung) erlaubt es schon im Voraus Teile auszuführen Der „then“- und „else“-Zweig können zeitgleich (mit der Kondition), oder spekulativ schon vorher, ausgeführt werden Unvorhersagbare Sprünge werden eliminiert Zeitverluste bei falschen Vorhersagen fallen weg (Hints, parallel ausgeführt)
38
Parallel Compares IA-64 Traditionell A B C D A B C D
39
Parallel Compares ... Die IA-64 besitzt 3 neue Typen von Vergleichen
AND: Prädikate mit logisch „und“ verknüpfen OR: Prädikate mit logisch „oder“ verknüpfen ANDOR: Kombination zwischen „und“ und „oder“
40
Beispiel if ((a==0) || (b<=5) || (c!=d) || (f & 0x2)) { r3 = 8; }
cmp.ne p1 = r0, r0 //p1 auf false add t = -5, b;; //t = b - 5 cmp.eq.or p1 = 0,a //a==0 cmp.ge.or p1 = 0,t //b<=5 cmp.ne.or p1 = c,d //c!=d tbit.or p1 = 1,f,1;; //f&0x2 (p1) mov r3 = //r3 = 8
41
Control & Data speculation
Instr. 1 Instr. 1 Instr. 2 Instr. 2 Branch St[?] Barrier Barrier Ld r1=... Ld r1=... Use r1 Use r1 Control speculation: Bewegt Ladebefehle vor einen Sprung Data speculation: Bewegt Ladebefehle vor einen möglichen Überscheibebefehl
42
Control speculation Traditionelle Architektur Instr. 1 Instr. 2
Bei traditionellen Architekturen ist die Überschreitung der Grenze (Barrier) nicht möglich! Branch Barrier Ld r1=... Use r1
43
Control speculation IA-64 Ld.s r1=... Instr. 1 Instr. 2 Branch
Detect exception Instr. 1 Instr. 2 Propagate exception Branch Chk.s r1 Deliver exception Recovery code Use r1
44
Control speculation Control speculation bewegt Ladebefehle vor Sprünge
Fehler werden im NaTBit (NaTVal) vermerkt Chk entdeckt evt. Fehler und ruft einen recovery Code auf um den Fehler zu beheben Durch die Control speculation verkürzen sich die Ladezeiten
45
Hosting uses Ld.s r1=... Instr. 1 Use r1 Instr. 2 Ld r1 Branch Use r1
Speculative use Recovery code Instr. 2 Ld r1 Branch Use r1 Chk.s r1 Brach
46
Data speculation Traditionelle Architektur Instr. 1 Instr. 2
Bei traditionellen Architekturen ist die Überschreitung der Grenze (Barrier) nicht möglich! St[?] Barrier Ld r1=... Use r1
47
Data speculation IA-64 Data speculation bewegt Ladebefehle vor gefährliche Überschreibebefehle Spekulativ geladene Daten werden in ALat vermerkt Auch spekulative Benützungen sind erlaubt Ld.a r1=... Instr. 1 Instr. 2 St[?] Chk.c r1 Use r1
48
Hosting uses Ld.a r1=... Instr. 1 Use r1 Instr. 2 Ld r1 St[?] Use r1
Speculative use Recovery code Instr. 2 Ld r1 St[?] Use r1 Chk.a r1 Brach
49
Advanced Load Address Table
oder kurz ALAT Ld.a reg# = Reg# addr ... St[addr] Chk.a reg# = ?
50
ALAT Beim Aufruf von Ld.a wird ein Eintrag gemacht
Überschreibende Befehle löschen die Einträge wieder aber auch ld.c.clr ld.a.clr Ist ein Eintrag in der ALAT so sind die Daten bereits geladen => kein Eintrag => Daten nicht da => Springe zu recovery code
51
Software Pipelining Mit SW Pipelinig Sequentielle Schleife Laden
Zeit Mit SW Pipelinig Sequentielle Schleife Zeit Laden Rechnen Ausgeben
52
Software Pipelining Was macht SW Pipelinig möglich
Predication um die Pipeline Ebenen zu kontrollieren Spezielle Sprungbehandlung Spezielle Register LC (Loop counter) und EC (Epilog counter) Register rotation: verhindert das Überschreiben von Registern Predication rotation: verhindert das Überschreiben der Prädikate
53
Compiler Nur neue, auf den Prozessor optimierte Compiler werden dessen Leistungsfähigkeit voll ausschöpfen können Intel & HP arbeiten an einem Compiler für C/C++ und Fortran Interessanterweise gibt nicht nur der Compiler dem Prozessor Hinweise (z.b. Hints) sonder auch die Hardware den Compiler (optimale Ausnützung des Prozessors)
54
IA-32 Kompatibilität Benutzer erwartet von der IA-64 Kompatibilität zu bestehenden Systemen Für Programme in höherer Programmiersprache können durch Recompilaton leicht portiert werden Für Programme die direkt auf die Ressourcen des Prozessors zugreifen (OS, Peripherie, ...) gibt es bereits neune Betriebssysteme „Dynamic Translation“ übersetzt die Befehle der IA-32- und PA-RISC Systemen während der Laufzeit! Kaum Leistungsverlust Einmal übersetzte Befehle werden im Speicher aufbewahrt (größerer Speicherbedarf)
55
OS für die IA-64 PA-RISC IA-32 Alpha SPARC PowerPC
HP-UX und Linux (Trillian Project) IA-32 Alle IA-32 werden auf IA-64 portiert Alpha Digital UNIX wird portiert! SCO UNIXWARE „FOREVER“ SPARC SUN ist an SPARC gebunden und wird nie „INTEL“ verwenden!! PowerPC IBM hat noch Probleme! Aber AIX wird die IA-64 unterstützen.
56
Betriebssysteme
57
Intel Itanium IA-64 beginnt mit dem Itanium Prozessor
Als Plattform dient der Intel 460GX Chipsatz Mehr als 4 Betriebssysteme (LINUX, MS Win auf der wirklichen Hardware gestestet) 230M Transistoren, 25M auf dem Prozessor und 295M auf dem L3 Cache
58
Zusammenfassung IA-64 repräsentiert die wichtigste Entwicklung seit dem 80386er. IA-64 bewegt sich jenseits der traditionellen Architekturen Compiler, Hardware Unterstützung, Massive Ressourcen IA-64 besitzt Tools um moderne high-end Anwendungen zu unterstützen E-business Technical computing
59
Kommentare ... IA-64 ist eine erweiterbare Architektur (MacKindley, Madison, Deerfield sind bereits in Entwicklung) Die IA-64 wird Nachfolger des Intel Xeon und demnach vor allem in Server- und Workstationbereich eingesetzt werden Also zunächst für die höchsten Leistungsklassen und nicht für den Privatanwender IA-64 ist größer als herkömmliche Prozessoren IA-64 hat einen größeren Leistungsverbrauch Intel geniest momentan recht viel Kritik an dieser Neuentwicklung
60
Weitere Informationen
IA-64 Trillian Project
61
Danke für Ihre Aufmerksamkeit
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.