Der Parallelrechner auf einem Chip
Referenten: Hansjörg Zingerle Werner Mairegger
Die Intel Architecture 64 (IA-64)
IA-64 Einführung
0
500
1000
1500
2000
2500
1960 1965 1980 1885 1990 2000
Kostenentwicklung für Prozessorherstellung
IA-64 Einführung
Processor Evolution
TIME
P
erf
orm
ance
Superscalar Risc ~ 2 instruction/ cycle
Risc<1 instruction / cycle
EPIC, IA-64
CISC
IA-64 Einführung
Was ist EPIC?
Komplett neue Prinzipien! EPIC (Explicitly Parallel Instruction
Computing)
IA-64 Einführung
Was charakterisiert einen Mikroprozessor?
Die Architektur Der Befehlssatz Die Verarbeitungsmethodik Den Prozessortyp
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
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
Architektur(Predicat Register)
IA-64 besitzt 64 Predicat Register PR0 - PR63 1 bit breit
Sind unterteilt in 2 Partitionen: 1 PR0 - PR15 Static PR 2 PR16 – PR63 Rotating PR
Architektur(Branch Register)
Der IA-64 besitzt 8 Branch Register PR0 – PR7
mit 64-bit Breite
Architektur(Register)Integer Register FB Register Branch Register Predicat Register
32 Static
96 Rotatet
32 Static
96 Rotatet
16 Static
48 Rotatet
NaT 64 0 81 0 63 0 0 bit +0.0
+1.0
. 0GR0
GR31
GR32
GR127
FR0
FR31
FR32
FR127
BR0
BR8
PR0
PR15
PR16
PR63
Architektur(Caches) L1 Data Cache
16 KB on Chip L1 Instruction Cache 16 KB on Chip L2 Unified Cache
96 KB
Memory
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
2^64 = 18,446,744,073,709,551,616
Befehlssatz(Befehlsformat)
Instruction2 Instruction1 Instruction 0 template
127 87 86 46 45 5 4 0
41 bits 41 bits 41 bits 5 bit
Die Befehle des IA-64 sind gebündelt(bandle)
Verarbeitungsmethodik
(RegisterRotating)
Motivation: weniger Schleifendurchläufe weniger Sourcecode höherer Datenfluß mit weniger Befehlen gleichzeitige Zuteilung von Schleifen and die
HW
Verarbeitungsmethodik (Register Rotating)
IA-64Traditional
Load in R36Load in R37Load in R38Load in R39
4 instructions
Load in R36
1 instruction
R36
R37
R38
R39
R40
R36
R37
R38
R39
R40
Verarbeitungsmethodik (Register
Rotation)
36:
35:
34:
33:
32:
Palm Springs
is Sunny
RRB=0
L1 R35
Palm
Verarbeitungsmethodik (Register
Rotation)
36:
35: Palm
34:
33:
32:
Palm
Palm Springs
is Sunny
St1 R35
RRB=0
Ld2 R34
Springs
Verarbeitungsmethodik (Register
Rotation)
35: Palm
34: Springs
33:
127:
126:
Palm Springs
Palm Springs
is Sunny
St2 R35
RRB=-1
Ld3 R34is
Verarbeitungsmethodik (Register
Rotating)
34: Springs
33: is
32:
127:
126:
Palm Springs
is
Palm Springs
is sunny
St3 R35
RRB=-2
Ld4 R34sunny
Verarbeitungsmethodik (Register
Rotating)
33: is
32:sunny
127:
126:
125:
Palm Springs
is
Palm Springs
is sunny
St4 R35
RRB=-3
sunny
Prozessortyp(Adressierung)Mit so vielen Bits... Kann mann so viele Flächenvehältnis
Adressen ansprechen
8 2^8=256 Visitenkarte
16 2^16=65536 Schriebtisch
32 2^32=4.29*10^9 Häuserblock
64 2^64=1.89*10^19 Erdoberfläche
Prozessortyp(Adressierung)
Wie sieht die virtuelle Adresse des IA-64 aus?
63 61 60 0
virtual region number virtual page number offset
virtual address
Prozessortyp(Adressierung)
64-bit Addresse
Flacher virtuelle Speicher
2^64 bytes
63 0
2^64
0
Prozessortyp(Adressierung)
64-bit Addresse
63 0
2^64
0
pages
Prozessortyp(Region Register)
bits 63-61 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.
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)
Prozessortyp(virt.memory modell) ######
######
######
RID
63 61 60 0
RRX virt. page #
offset
Physical Address
TLB
RID Virtual Page#
Physical Page#
Protection
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
EPIC, die nächste Generation
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 FamilieTools die ILP ermöglichen Predication Speculation Andere ...
Hardware zur parallelen Ausführung Viele Register Viele Funktionseinheiten (Rechenwerke) Skalaribilität
Istruction Level Parallelism ILP
Compiler
Source Code Parallel Machine Code
Mehrere Funktionseinheiten
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
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;;}
Branch Architecture
IP-Offset Sprünge (21 Bit) Indirekte Sprünge via 8 Brach Registern Spezielle Sprungbefehle für Schleifen
Sprung Typen
Vorhersage des Compiler welchen Weg das Programm einschlagen wird
Branch predict hints
Bis zu 3 Sprünge in einem Bündel Verkettete Muli-way Sprünge erlauben n-Wege Sprünge
Multi-way Branches
Beispiel Hints
hint B,Targetcompute0 compute0compute1 compute1compute2 compute2compare(a==b) B: branch_if_eq -> Target... ...Target: :
Predication
Cmp a, b
Jump.eq
X = 1
jump
X = 2
Load
Cmp a, b -> p1, p2
p2
X = 2
p1
X = 1
Load
if
else
then
Traditionell
IA-64
Die Kondition wird aufbauend auf die qualifizierenden Prädikaten ausgeführt
Die IA-64 stellt 64 Predicate Register zur Verfügung
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)
Parallel Compares
A
B
C
D
A B C
D
Traditionell IA-64
Parallel Compares ...
AND: Prädikate mit logisch „und“ verknüpfen
OR: Prädikate mit logisch „oder“ verknüpfen
ANDOR: Kombination zwischen „und“ und „oder“
Die IA-64 besitzt 3 neue Typen von Vergleichen
Beispiel
if ((a==0) || (b<=5) || (c!=d) || (f & 0x2)) { r3 = 8;}
cmp.ne p1 = r0, r0 //p1 auf falseadd t = -5, b;; //t = b - 5
cmp.eq.or p1 = 0,a //a==0cmp.ge.or p1 = 0,t //b<=5cmp.ne.or p1 = c,d //c!=dtbit.or p1 = 1,f,1;; //f&0x2
(p1) mov r3 = 8 //r3 = 8
Control & Data speculation
Instr. 1Instr. 2Branch
Ld r1=...
Use r1
Barrier
Instr. 1Instr. 2St[?]
Ld r1=...
Use r1
Barrier
Control speculation:Bewegt Ladebefehle vor einen Sprung
Data speculation:Bewegt Ladebefehle vor einen möglichen Überscheibebefehl
Control speculation
Instr. 1Instr. 2Branch
Ld r1=...
Use r1
Barrier
Traditionelle Architektur
Bei traditionellen Architekturen ist die Überschreitung der
Grenze (Barrier) nicht möglich!
Control speculation
Instr. 1Instr. 2Branch
Ld.s r1=...
Use r1
Chk.s r1
Detect exception
Propagate
exception
Deliver exception
IA-64
Recovery code
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
Hosting uses
Instr. 1
Instr. 2Branch
Ld.s r1=...
Use r1
Chk.s r1
Speculative use
Use r1
Ld r1
Brach
Recovery code
Data speculation
Instr. 1Instr. 2St[?]
Ld r1=...
Use r1
Barrier
Traditionelle Architektur
Bei traditionellen Architekturen ist die Überschreitung der
Grenze (Barrier) nicht möglich!
Data speculation
Instr. 1Instr. 2St[?]
Ld.a r1=...
Use r1
Chk.c r1
IA-64
Data speculation bewegt Ladebefehle vor gefährliche Überschreibebefehle
Spekulativ geladene Daten werden in ALat vermerkt
Auch spekulative Benützungen sind erlaubt
Hosting uses
Instr. 1
Instr. 2St[?]
Ld.a r1=...
Use r1
Chk.a r1
Speculative use
Use r1
Ld r1
Brach
Recovery code
Advanced Load Address Table
oder kurz ALAT
Reg# addr
Reg#
Reg#
addr
addr
... ...
St[addr]
Chk.a reg# = ?
Ld.a reg# =
ALAT Beim Aufruf von Ld.a wird ein Eintrag gemacht Überschreibende Befehle löschen die Einträge
wiederaber 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
Software Pipelining
Sequentielle Schleife
Laden
Rechnen
Ausgeben
Zeit
Zeit
Mit SW Pipelinig
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
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)
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)
OS für die IA-64
PA-RISC HP-UX und Linux (Trillian Project)
IA-32 Alle IA-32 werden auf IA-64 portiert
AlphaDigital UNIX wird portiert! SCO UNIXWARE „FOREVER“
SPARCSUN ist an SPARC gebunden und wird nie „INTEL“ verwenden!!
PowerPC IBM hat noch Probleme! Aber AIX wird die IA-64 unterstützen.
Betriebssysteme
Intel Itanium IA-64 beginnt mit dem Itanium
Prozessor Als Plattform dient der Intel 460GX
Chipsatz Mehr als 4 Betriebssysteme
(LINUX, MS Win64 2000 auf der wirklichen Hardware gestestet)
230M Transistoren, 25M auf dem Prozessor und 295M auf dem L3 Cache
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
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
Weitere Informationen IA-64
http://developer.intel.com http://developer.intel.com/design/ia64 http://developer.intel.com/technology/itj/q41999.htm
Trillian Project www.linuxia64.org
Danke für Ihre Aufmerksamkeit