24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung •...

22
24. IA-64 24.1. Literatur CPUs allgemein : www.sandpile.org Im Prinzip ist die Itanium Architektur am Markt gescjheitert, da keine ausreichend guten Compiler bereitgestellt werden konnten. Intel IA-64: “Introducing the IA-64 Architecture”, IEEE Micro, Vol. 20, No. 5, 2000 www.microsoft.com/windowsserver2003/64bit www.csee.umbc.edu/help/architecture www.linuxia64.org www.intel.com 255 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Transcript of 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung •...

Page 1: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24. IA-64

24.1. Literatur

• CPUs allgemein : www.sandpile.org

• Im Prinzip ist die Itanium Architektur am Markt gescjheitert, da keine ausreichend guten Compiler bereitgestellt werden konnten.

• Intel IA-64: − “Introducing the IA-64 Architecture”, IEEE Micro, Vol. 20, No. 5, 2000

www.microsoft.com/windowsserver2003/64bit − www.csee.umbc.edu/help/architecture − www.linuxia64.org − www.intel.com −

255 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 2: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24.2. Parallelität auf Befehlsebene

• ILP = Instruction-Level Parallelism.

• Superskalare Prozessoren (z.B. Pentium III): − Prozessor mit mehreren Ausführungseinheiten (z.B. Integer, Float, Load, Store, ...)

Ziel: Mehr als ein Befehl pro Takt den Ausführungseinheiten zuordnen. − − −

− − −

− −

Befehle können umgeordnet werden, um Latenzzeiten zu vermeiden. Dynamische Befehlsauswahl (Abhängigkeiten berücksichtigen).

• VLIW-Technik (z.B. Transmeta): − VLIW = Very Long Instruction Word.

Statische Befehlsauswahl durch Compiler. Compiler packt feste Anzahl parallel ausführbarer Befehle in einen VLIW-Befehl. Die Befehle in einem VLIW-Befehl werden gemeinsam zugeordnet und ausgeführt.

• EPIC = Explicit Parallel Instruction Computing (z.B. IA-64): − Dreibefehlsformat ähnlich VLIW (spezielle Bits markieren unabhängige Befehle).

Compiler verantwortlich für Parallelisierung auf Befehlsebene. Ziel: Synergie zwischen Hardware und Software. IA-64 Projekt: Intel und HP, begonnen 1994.

256 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 3: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24.3. IA-64 Architektur

24.3.1 Einführung

• IA-32: sehr wenige Register mit vielen Randbedingungen Optimierungen durch Compiler schwierig.

• IA-64: − Komplett neue Architektur.

Registerstack- und rotation. − − − − −

− −

Spekulative Ausführung von Befehlen. Möglichst viel Befehle parallel ausführen (ILP). Parallelisierung auf Befehlsebene durch Compiler (EPIC). IA-32 wird emuliert; damit binärkompatibel, aber langsam.

• Software muss neu geschrieben werden: − Effizienz steht und fällt mit Compiler.

Werkzeuge: GNU-, Intel C/C++ Compiler, ... Betriebssysteme: Windows Server 2003, Linux, HP-UX, ...

257 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 4: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24.3.2 Prozessoren

• Itanium (Merced), 2001: − 733, 800MHz.

FSB 266 MHz (64 Bit). − − − −

− − − −

− − −

Caches: L1=16k+16k, L2=96k, L3=2/4MB (nicht auf Chip). Adressraum: physikalisch=44 Bit, virtuell=50 Bit. Einheiten: 4 Integer, 2 Float; 10-stufige Pipeline.

• Itanium 2 (McKinley), 2002: − 900, 1000MHz.

FSB 400 MHz (128 Bit) 6,4 GByte/s. Caches: L1=16k+16k, L2=256k, L3=1,5/3MB (auf dem Chip). Adressraum: physikalisch=50 Bit, virtuell=60 Bit. Einheiten: 6 Integer, 3 Branch, 2 Float; 8-stufige Pipeline.

• Itanium 2 (Montecito), 2004: mit Hyper-Threading: − Freie Einheiten durch mehrere Befehlsstränge belegen (Wartezeiten ausnutzen).

Mehrere Registersätze zur Realisierung von schnellen Thread-Wechseln. Die Software interpretiert dies als zwei eigenständige Prozessoren. Bem.: auch beim neusten Pentium 4 enthalten.

258 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 5: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24.3.3 Register

• Auszug:

Integer Register FP Register Branch Register

32 static

NaT

+1.0

+0.00.GR0

GR31 GR32

GR127

FR0

FR31FR32

FR127

BR0

BR8

081

96 rotated

0 64

32 static

96 rotated

0641

16 static

48 rotated

Integer Register FP Register Branch Register

32 static

NaT

+1.0

+0.00.GR0

GR31 GR32

GR127

FR0

FR31FR32

FR127

BR0

BR8

081

96 rotated

0 64

32 static

96 rotated

0641

16 static

48 rotated

Predicat Register

PR0

PR15PR16

PR63

Predicate Register

PR0

PR15PR16

PR63

259 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 6: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

Register Stack

• Motivation: Sichern von Registern und Aufbau von Stack-Frame teuer.

• 96 Stacked GR-Register werden transparent rotiert und umbenannt.

• Register-Stack-Frame (RSF): −

local

32 globale

input

0

31

output

127

32

96 stacked

local

32 globale

input

0

31

output

127

32

96 stackedGR32 ist immer das erste Stack-Register. Output: Parameter für Aufrufe. −

− − −

− − −

Local: für lokale Variablen. Input: E/A-Parameter. ‚alloc’ für Allokation.

• Spezielle Register: − Current Frame Marker Reg.: speichert akt. RSF-Bereich.

Previous Function State Reg.: für br.call & br.ret.

• Register Stack Engine: − Ziel: Illusion von beliebig vielen Registern.

Lagert Register in Speicher aus und wieder ein. Überlauf: ‚alloc’ benötigt mehr Register, als verfügbar. Unterlauf: ‚return’ löst Wiedereinlagern eines Rahmens aus.

260 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 7: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

• Prozedur-Aufruf mit Register-Rotation: sisi

local

32 globale

input

0

31

output

32+ze(a)

32

Fkt. A vor br.call

32 globale

0

31

32

Fkt. B direkt nach br.call

local

32 globale

0

31

output32+

size(b)

32

Fkt. B nach alloc

call alloc

overlap

local

32 globale

input

0

31

output

32+size(a)

32

Fkt. A vor br.call

overlap

return

output input

local

32 globale

input

0

31

output

32+ze(a)

32

Fkt. A vor br.call

32 globale

0

31

32

Fkt. B direkt nach br.call

local

32 globale

0

31

output32+

size(b)

32

Fkt. B nach alloc

call alloc

overlap

local

32 globale

input

0

31

output

32+size(a)

32

Fkt. A vor br.call

overlap

return

output input

261 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 8: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24.3.4 Befehlsformat

• Bundles: − Größe = 128-Bit.

Jeweils 16-Byte aligniert. − − − −

− − −

Bietet 3 Slots für je eine Instruktion. Bilden Befehle auf Ausführungseinheiten ab. Unbenutzte Slots müssen mit NOPs aufgefüllt werden.

Slot-3 Template

0

Slot-2Slot-1

44586127

Slot-3 Template

0

Slot-2Slot-1

44586127

• Template: − Größe = 5 Bits.

Gibt Zuordnung der Slots zu Ausführungseinheiten. Definiert ferner Stops innerhalb und am Ende des Bundles. Instruktionen vor einem Stop und nach einem Stop nicht parallel ausführbar.

262 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 9: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

• Insgesamt sind 24 verschiedene Bündel möglich. − MFI mit keinem Stop Code=0D. − −

• •

− − −

MFI ohne Stop Code=0C. Abkürzungen für Zuordnung:

• M=Memory function F=Floating point function I=Non-ALU Integer A=Integer ALU B=Branch function L=is a function involving a Long immediate

• IA-64 Befehle: − Jeweils 41-Bit in einem Slot.

Opcode extension: variable Länge (max. 10 Bit). Instruction specific: z.B. 2 Eingabe- und 1 Ausgabe-Register (zu je 7 Bit). Predicate (6 Bit): bezieht sich auf Predicate Register (64-Bit).

instruction specific predicate

0

opcode ext.major op.

53640 x

instruction specific predicate

0

opcode ext.major op.

53640 x

263 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 10: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

• Beispiel parallel ausführbare Instruktionsgruppen: − Stop-Bit (= ;;) markiert Ende von parallel ausführbaren Instruktionen.

Parallel ausgeführte Instruktionen sind hier unabhängig! −

{ .mii

ld8 r1 = [r2] add r4 = r3,r5 ;;add r2 = r4,r6 ;;

}

{ .mmild8 r2 = [r1] ;;st8 [r1] = r23 add r3,r2

}

{ .mmild8 r5 = [r7] ld8 r6 = [r8] nop.i

}

{ .miild8 r1 = [r2] add r4 = r3,r5 ;;add r2 = r4,r6 ;;

}

{ .mmild8 r2 = [r1] ;;st8 [r1] = r23 add r3,r2

}

{ .mmild8 r5 = [r7] ld8 r6 = [r8] nop.i

}

264 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 11: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24.3.5 Parallele Kontrollflüsse

• IA-32: benötigt Sequenz von Vergleichen und bedingten Sprüngen.

• IA-64: − Parallele Vergleiche.

Konditionale Befehle. − −

− − − −

− −

Mehrweg-Verzweigungen.

• Prädikate (Predicates) zur Vermeidung teuerer Sprünge: − IA-32: Konditionaler MOV mit cmov.

IA-64: Predicate Register beliebige konditionale Befehle. Compiler generiert Befehle, die Predicates setzen oder auslesen. Nur wenn das Predicate eines Befehls „wahr“ ist, wird dieser ausgeführt. Hierdurch wandelt der Compiler Kontrollfluß- in Datenabhängigkeiten um.

• Hierdurch können mehrere Kontroll-Pfade parallel bearbeitet werden: − Nur die Ergebnisse des tatsächlich gewünschten Pfades werden geschrieben.

Dieser Ansatz ist billiger als die Pipeline neu zu füllen. Predicates besser als Sprungvorhersage in Hardware.

265 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 12: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

• Beispiel If-Statement mit Predicates:

// C pseudo-code // IA-64 assemblyif (r4) { cmp.ne p1,p0=r4,0 // set predicate reg

add r1=r2,r3 (p1) add r1=r2,r3ld8 r6=[r5] (p1) ld8 r6=[r5]

}

;;

• Beispiel parallele Vergleiche:

// C pseudo code // IA-64 assemblyif (rA||rB||rC) { cmp.ne p1,p0=r0,r0;; // init p1=0

/* if block */ cmp.ne.or p1,p0 = rA,r0} cmp.ne.or p1,p0 = rB,r0/* after if */ cmp.ne.or p1,p0 = rC,r0

(p1)br.cond if_block

• Beispiel Mehrweg-Verzweigung:

{ .bbb(p1) br.cond label_BB(p2) br.cond label_CC(p3) br.cond label_DD

}

label_AA: // fall through to AA

266 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 13: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24.3.6 Spekulatives Ausführen von Instruktionen

• Problem: Latenzzeiten beim Laden/Speichern in Register.

• Lösung: Register spekulativ laden & falsch geladene Daten verwerfen.

• Control Speculation: Wert wird bereits vor einem Sprung geladen.

• Data Speculation: Wert wird vor möglichem Konflikt geladen.

• Compiler hat mehr Möglichkeiten bei Code-Scheduling: − Instruktionen können über Barrieren (Sprünge, Aliase) verschoben werden.

Hierdurch bessere Ausnutzung von ILP möglich. −

Instr. 1

Instr. 2

Branch

Ld r1=...

Use r1

Barrier

Instr. 1

Instr. 2

St[?]

Ld r1=...

Use r1

Barrier

Instr. 1

Instr. 2

Branch

Ld r1=...

Use r1

Barrier

Instr. 1

Instr. 2

St[?]

Ld r1=...

Use r1

Barrier

267 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 14: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

Control Speculation

• Nicht alle Sprünge können durch konditionale Befehle ersetzt werden.

• Aber spekulative Ladebefehle (ld.s) über Barrieren verschiebbar.

• Exceptions müssen verzögert werden: − NaT Bit des Zielregisters wird im Falle einer Exception gesetzt.

NaT Bit wird ggf. propagiert Spekulation über viele Befehle mögl. − − − chk.s r1,rescue Befehl nach Barriere erkennen von Exceptions. Falls r1.NaT=1, so wird vom Compiler generierter Recovery Code angesprungen.

Instr. 1

Instr. 2

Branch

Ld.s r1=...

Use r1

Chk.s r1, recover

Exception r1.NaT=1

Use r1

Ld r1

Branch

recovery:

Instr. 3

Instr. 1

Instr. 2

Branch

Ld.s r1=...

Use r1

Chk.s r1, recover

Exception r1.NaT=1

Use r1

Ld r1

Branch

recovery:

Instr. 3

268 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 15: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

Data Speculation

• Abh. Lade- und Speicherbefehle müssen sequentiell ausgeführt werden.

• Problem: − Zeiger-Alias bei nicht typsicheren Sprachen (z.B. C) nicht immer erkennbar.

Es entstehen unnötige Abhängigkeiten verhindern Umordnen von Instruktionen. −

− −

• Advanced Load (ld.a) vor gefährlichen Schreibbefehlen ausführbar. Nach der probl. Speicheroperation wird ld.a mit ld.c bzw. chk.a verifiziert. Gegebenenfalls wird ein Recovery-Code angesprungen.

Instr. 1

Instr. 2

Store[?]

Ld.a r1=...

Use r1

Ld.c r1

Instr. 3

Instr. 1

Instr. 2

Store[?]

Ld.a r1=...

Use r1

Ld.c r1

Instr. 3

269 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 16: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

• ALAT = Advanced Load Address Table: − Tabelle in Hardware. − − − −

• −

Itanium 2 besitzt 32 Einträge. Jeder advanced Load (ld.a) erzeugt einen Eintrag. Überschreibende Befehle löschen die Einträge wieder. ld.c:

• Eintrag vorhanden: Daten sind bereits erfolgreich geladen kein Eintrag gefunden: Daten nochmals laden.

chk.a: • Eintrag vorhanden: Daten sind bereits erfolgreich geladen

kein Eintrag gefunden: Daten sind kollidiert Recovery Code ausführen.

sizeaddrreg#

sizeaddrreg#

sizeaddrreg#

...

sizeaddrreg#

sizeaddrreg#

sizeaddrreg#

...

270 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 17: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

24.3.7 Virtuelle Adressierung

• Platzbedarf für konventionelle Seitentabellen: − IA-32: max. 4 MB (4KB pro Seite). −

− −

− −

IA-64: • Einstufige Tabelle: 252 Einträge bei 4KB Seiten.

Bei Einträgen zu je 8 Byte ergibt dies ~ 30*106 GB!

• Lösung: invertierte Seitentabellen. − Besser ein Eintrag pro phys. Kachel als ein Eintrag pro logischer Seite.

Suchen virtueller Seiten wird aufwendiger TLB Cache verwenden.

• Bei Fehlanzeige im TLB: − Firmware aufrufen,

oder OS via Interrupt aufrufen über Hashtabelle zur physikalischen Adresse,

• Bei Fehlanzeige in der Hashtabelle: − sekundäre Seitentabelle konsultieren,

eventuell Tabellen und Seiten auf Platte, Seite einlagern & Hashtabelle aktualisieren.

271 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 18: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

Übersetzung virtueller Adressen

Adreßübersetzung

Virtual Page Number

offset

Virtual Region Number

VRN VPN

063 61 60

region ID

rr0rr1rr2

rr7

..

.

Region Registers Virtuelle Adresse

phys. page nr.RID VPN protection

TLB

‚match‘ ‚deliver‘

offset

Pyhsikalische Adresse

Virtual Page Number

offset

Virtual Region Number

VRN VPN

063 61 60

region ID

rr0rr1rr2

rr7

..

.

Region Registers Virtuelle Adresse

phys. page nr.RID VPN protection

TLB

‚match‘ ‚deliver‘

offset

Pyhsikalische Adresse

272 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 19: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

• Regionen: − Eine Region besteht aus Pages (evt. unterschiedlicher Größe). − −

− −

• −

• • •

IA-64 unterteilt virtuellen Adressraum in 8 virtuelle Regionen zu je 261 Byte. Data-Sharing zw. Prozessen durch RID-Sharing weniger TLBs werden gespült!

• 64-Bit virtuelle Adressen: Bitpositionen für VPN und Page Offset hängen von der Seitengröße ab.

• Übersetzung: − VRN: selektiert Region Register und damit Region-ID (RID).

TLB wird nach passendem (RID,VPN)-Eintrag durchsucht. Eintrag gefunden:

• PPN mit Page Offset konkatenieren. Seitenbasierte Zugriffsrechte prüfen.

Eintrag nicht vorhanden: • Prozessor durchsucht VHPT-Struktur im Hauptspeicher und aktualisiert TLB.

Falls Eintrag immer noch nicht gefunden wird eine TLB Miss fault ausgelöst. Nun muss OS Eintrag suchen und in VHPT und TLB einfügen. VHPT = Virtual Hashed Page Table.

Translation Lookaside Buffer 273 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 20: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

• Für Daten und Instruktionen jeweils ein zweistufiger TLB: − Level-1: 32 Translation Registers.

Level-2: 96 Einträge in Translation-Cache. − −

− − − −

− − − − −

Beide Stufen sind in Software manipulierbar.

• Inhalt eines Eintrages: − Present, Access Bits, ...

Caching Strategie für Seite. Identifikation: (RID,VPN)-Tupel. Seitengrößen = 2k mit k∈{12, ..., 22}. Schutz: Privilege Level, Protection Key.

• Bei einem TLB Miss Fault wird VHPT durchsucht, falls vorhanden: − VHPT = Virtual Hash Page Table.

Feature optional für Hardware und Software. Wenn vorhanden, greift der Prozessor nur lesend zu. Aktualisieren und Konsistenz zw. VHPT und TLB Aufgabe der Software. Tabelle liegt im virtuellen Adreßraum evt. TLB Miss Fault beim Durchsuchen. Eigene Erweiterungen greifen bei einem VHPT Translation Fault.

24.3.8 Protection 274 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 21: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

• Merkmale: − Vier Privilegstufen mit Rechten R,W und X auf Seitenbasis.

Mind. 16 PKRs. − − offsetVRN VPN

region ID

RID VPN rights key

TLB

Priv. LevelAccess Type

key1key2key3

rw-rwxr--

Protection Key

Registers

ok?

offsetVRN VPNregion ID

RID VPN rights key

TLB

Priv. LevelAccess Type

key1key2key3

rw-rwxr--

Protection Key

Registers

ok?

Protection Key hat 24-Bit.

24.3.9 Bewertung 275 Systemprogrammierung II, Winter 2005/06, P. Schulthess

Page 22: 24. IA-64 24.1. Literatur CPUs allgemein : ... · 24.3. IA-64 Architektur 24.3.1 Einführung • IA-32: sehr wenige Register mit vielen Randbedingungen Æ Optimierungen durch Compiler

276 Systemprogrammierung II, Winter 2005/06, P. Schulthess

• Hoher Stromverbrauch (max. 130W), durch gleichzeitiges (spekulatives) Beschäftigen vieler Einheiten.

• Viele Befehle werden teilweise verworfen (abhängig von Anwendung): −

• Hohe Speicherbandbreite notwendig: − Befehle belegen vergleichsweise viel Speicherplatz: 128-Bit pro Bundle.

Bundles oft mit NOPs aufgefüllt Verschwendung von Bandbreite.

• SPECint bis zu 80% der Befehle werden verworfen! −

Spekulatives Ausführen nicht immer erfolgreich. Multiway Branches nehmen Verlust in Kauf, ...

Tabelle aus c’t 13/2001: