Pentium 1
Übersicht Motivation Architektur Instruktions-Set Adressierungsarten Geschichte Verbesserung und Erweiterungen 2
Motivation Verständnis von Prozessoren: Warum Pentium statt kleiner CPU? Pentium zwar komplex aber weit verbreitet Bis 2001: 500 Mio mal verkauft Vorherrschend im Desktopbereich Quasi-Standard Foto Advanced Modular Computers Foto Intel 3
Eigenschaften 32-Bit Prozessor IA-32 Architektur (= x86) Unterschiedliche Bezeichnungen für selbes Instruktions-Set CISC-Instruktionen (complex instruction-set computing) Viele Befehle Uneinheitliches Befehls-Format» Variable Länge 1 16 Byte 2-Adressformat x86-instruktionen werden nicht direkt ausgeführt RISC-ähnliche Mikro-Architektur Ab Pentium PRO Übersetzung von CISC-Instruktionen in Mikroinstruktionen Für Kompatibilität 3 Mikro-Instruktionen pro Takt ausführbar 4
Architektur: Pentium-4 256-bit wide, core clock Instruction TLB Dynamic Branch Predictor 4096 Entries Grafik F. Schramm Bus Interface Unit - 64-bit 100 MHz/ 133 MHz/ 200MHz Quad Pumped L2- Cache - L2-Cache Control-Unit Micro Code ROM Micro Instruction Sequencer Slow ALU Complex Instr. Instruction Decode ExecutionTrace Cache 12.000 μops Allocate Ressources / Rename Registers Integer / Floating Point μop Queue Integer Schedulers Integer Register File Port 1 Port 0 Port 2 Port 3 2xALU Simple Instr. 2xALU Simple Instr. 256-bit wide, core clock Hardware Data Prefetch 2xAGU Store Address Unit 2xAGU Load Address Unit Trace Cache Branch Predictor 4096 entry BTB Memory μop Queue Floating Point Schedulers FP Store FP Move L1 Data Cache 8/16 KByte, 4-way Floating Point Register File Port 0 Port 1 Fmul FAdd SSE SSE2 SSE3 MMX 5
Architektur: Pipeline Sehr viele Pipeline-Stufen 20 bzw. 31 Stufen je nach P4-Version Für hohe Taktraten Fetch-Execute Dauert 20 (31) Takte Pipeline schwierig zu füllen 1 2 3 4 5 TC Nxt IP TC Fetch DriveAlloc Stalls senken Pipeline-Auslastung P4 braucht gleich viele Takte wie P3 6 7 8 9 Rename Que 10 Sch TC Nxt = trace cache next instruction pointer TC Fectch = trace cache fetch Rename = register renaming Que = micro-op queuing Sch = micro-op scheduling Disp = dispatch RF = register file Ex = execute Flgs = flags BrCk = branch check 11 Sch 12 Sch 13 Disp 14 Disp 15 RF Grafik F. Schramm 16 RF 17 Ex 18 19 20 Flgs BrCkDrive 6
Instruktions-Set IA-32 (x86) Instruktions-Set 32-Bit Instruktionen; 32-Bit Adressraum Variable Länge von Instruktionen: 1-16 Bytes Keine Load-Store Architektur Operand kann im Speicher liegen Instruktionen können Speicher ändern 2 Adress-Befehle Ziel ist auch Quelle ADD EAX, [1234] Bedingte Sprungbefehle Prüfen Statusbits in Flag-Register Unterschiedliche Levels Level 0: Betriebssystem Level 3: User-Programm Operationsmodi für Rückwärts-Kompatibilität Real mode: 16-Bit Prozessor ohne Memory-Protection 7
Instruktionen x86-instruktionen Data transfer instructions (MOV) binary arithmetic (ADD, SUB) logical instructions (AND, OR) shift and rotate (ROR, SAR) bit and byte instructions (BTS, SETE) control transfer instructions (JMP, LOOP, CALL) string instructions (MOVS, SCAS) flag control instructions (STD, STI) segment register instructions (LDS) miscellaneous instructions (LEA, NOP, CPUID) 8
Instruktionsformat Kompliziertes und unübersichtliches Format Viele 1-Byte Opcodes Ursprünglich nur 1-Byte Opcodes Prefixes möglich Für andere Wortbreite oder Wiederholung Offset = Base + + Index*Scale + + Displacement 0,1 Byte 0,1 Byte 0,1,2,4 Byte 0,1,2,4 Byte SIB Dekodierung von Instruktionen ist schwierig ModR/M, SIB, Displacement, Immediate: Für Adressierung der Operanden 24 Adressierungsarten 0-4 Byte Prefix 1-2 Byte Opcode ModR/M Displacement Immediate 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 Reg/ Mod R/M Scale Index Base Opcode 9
Register ExX-Register Mischung aus General-Purpose und Special-Purpose Register EAX: Accumulator EBX: Base-Register ECX: Count-Register Special: Für Loops EDX: Data-Register Special: Für Multiplikation / Division Weiters EBP: Base-Pointer Foto Intel Zeigt auf Stackbeginn ESI, EDI: Source- und Destination-Register ESP: Stack-Pointer EFLAGS: Flags 10
Adressierungsarten Adressierung: Auswahl von Operanden einer Instruktion Wo sind Operanden gespeichert Immediate Addressing: MOV EAX, 1234 Daten direkt angeben statt Adresse Direkte Adressierung: MOV EAX, [1234] Angabe der (32-Bit) Speicheradresse Register-Adressierung: MOV EAX, EBX Register enthält Operand Register-indirekte Adressierung: MOV EAX, [EBX] Register enthält Adresse des Operanden Pointer Indizierte Adressierung: MOV EAX, table[ebx] Basisadresse + Offset aus Register Foto Intel Indizierte Register-Indirekte Adressierung mit Displacement IA-32 Spezialität: MOV EAX, table[ebx*4 + 1] 11
Gleitkomma-Unterstützung Ursprünglich als Co-Prozessor (x87) Seit 80486 mit Prozessor integriert Wird immer mehr durch SSE-Instruktionen abgelöst Funktionsumfang Konstanten: 1, 0, Pi, E Integer-Konvertierung Arithmetisch: Add, Sub, Mult, Div, Sqrt, Transzendent: Sin, Tan, Log 2,... Vergleichsoperationen Stack-orientiert Operanden liegen am Stack Eigener Stack für FPU Foto Cyrix 12
Geschichte Jahr Prozessor Trans. MHz Memory 1974 8080 6k 2 64 kb 1978 8088 29k 5-8 1 MB Original IBM-PC 1981 80286 134k 8-12 16 MB 1985 80386 275k -33 4 GB 32-Bit Prozessor 1993 Pentium 3.1M -233 4 GB 2 Instruktions-Pipelines 2000 P4 42M -3800 4 GB MMX, SSE, Hyperthreading,... 2006 Duo Core 151M -2100 13
Verbesserung: Cache Cache Puffert Daten und Instruktionen Vermeidet langsame Speicherzugriffe Caches mit 2 oder 3 Levels Getrennter Instruktions- und Datencache L1: 2*16 kb Arbeitet auf vollem Prozessortakt Instruktionen werden beim Laden dekodiert L1 speichert Mikro-Operationen Second-Level (L2) Cache 1 MB für Instruktion und Daten gemeinsam Keine Dekodierung; Speicherabbild L3 Cache Optional; 2 MB; Für Multi-Prozessor-Betrieb wichtig 14
Verbesserung: Super-skalare Pipeline P4: Netburst Architecture 2 ALUs, 2 Registersätze Hyperthreading: Schneller Taskwechsel Parallele Abarbeitung von 2 Threads möglich RISC-ähnliche Architektur im Pentium-Kern Instruktions-Dekodierung bereits vor L1 Cache Out-of-order Execution Umordnung von Instruktionen Um Pipeline-Stalls zu vermeiden Tiefe der Pipeline: 20 30 Stufen Ermöglicht hohe Taktraten Aber: Aufwändige Sprungvorhersage Speculative Execution Superscalar Hyper-Threading Grafik F. Schramm 15
Verbesserung: Instruktionserweiterungen FPU: Floating-Point Unit Gleitkommaarithmetik MMX: Multi-Media Extensions Für Audio- und Video-Operations SIMD-Schema: Single Instruction Multiple Data 1 Instruktion für 4*16-Bit in 64-Bit Register SSE: Streaming SIMD Extension Beschleunigt 3D-Grafik 128-Bit Wortbreite; Integer- und Gleitkommaoperationen Single- (32-Bit) und Double- (64-Bit) Precision Floats 16
Verbesserung: 64-Bit Erweiterung EM64T = AMD64 64-Bit Erweiterung Von AMD entwickelt - Von Intel zögernd übernommen Intel wollte IA-64 Entwicklung nicht schwächen Mehr als 4 GB Speicher adressierbar 256 TB (48-Bit virtuelle Adressen) Ineffizientere Speichernutzung durch 64-Bit Wortbreite X86-64 Instruktions-Set Weiterentwicklung von IA-32 Verbreiterung der Register auf 64 Bit» RAX, RBX,... 8 zusätzliche Register:» R8,... R15 32-Bit (und 16-Bit) Instruktionen bleiben erhalten Softwareunterstützung Zuerst für Linux Windows: ab Windows Vista Foto AMD 17
Verbesserung: Dual-Core Dual-Core Technologie Symmetrisches Multi-Processing Auf selbem Chip Zur Performance-Steigerung Da Taktratensteigerung nicht mehr aussichtsreich 1,4-1,8-fache Steigerung möglich Für Multitasking und Multi-Threading sinnvoll» Alte Software hat keinen Vorteil Produkte Intel Core Duo 2 Pentium-Chips auf einem Die Pentium-D 2 Dies in einem Gehäuse AMD Athlon-64 FX2 2 Athlon-64 auf einem Die Foto Intel Logo Intel Logo AMD 18
Nachteile Viel Historie Rückwärts-kompatibel bis 8086 16-Bit CPU Wenige Register Viele langsame Speicherzugriffe Special-purpose Register CISC-Instruktions-Set Kompliziertes Instruction-Encoding Beschleunigungstechniken ziemlich ausgereizt Sehr tiefe Pipeline Out-of-Order Execution und Branch-Prediction kompliziert Komplexität in Hardware statt in Compiler Leistungsverbrauch: ~ 100 Watt Hitze, Akkulaufzeit Foto CPU-World Foto Cool Master 19
Itanium-2 IA-64 Architektur Als Nachfolge von IA-32 (Pentium) gedacht Von Intel und HP entwickelt Keine Weiterentwicklung von IA-32 sondern grundauf neu EPIC: Explicitly Parallel Instruction Computing 64-Bit Architektur Komplexität in Compiler Muss Ausführungseinheiten gut auslasten 128 General-purpose Register 32 statisch, 96 als Stack Weiters 128 Gleitkomma- und 128 Applikations-Register 128-Bit Instruktionsformat (VLIW: very long instruction word) Bestehend aus 3 41-Bit Instruktionen plus Ausführungsinfo Vermeiden von bedingten Sprüngen Durch konditionale Befehle Fehlende Unterstützung von Microsoft Möchte Windows nicht nach IA-64 Portieren; x86-64 bevorzugt Foto Intel Foto Intel 20
Konkurrenz Prozessoren mit x86 (IA-32) Instruktionsset Hauptproduzenten AMD: K6, Athlon, Athlon-64, Athlon-64 FX2 Dual-Core Technologie Geringere Taktrate als Intel aber selbe Performance Intel: Pentium-4, Celeron, Xeon Weiters Transmeta: Crusoe, Efficeon VLIW-Prozessor-Kern mit On-Chip -Compiler» Übersetzt x86-instruktionen in native Instruktionen» Auch für andere Instruktions-Sets geeignet Ausbleibender kommerzieller Erfolg Via (füher Cyrix): C3, C7 Stromsparende CPUs für lüfterlose Systeme Integrierte Grafikkarte Foto AMD Foto Transmeta 21
Zusammenfassung Pentium Sehr leistungsstarker Prozessor Kompliziertes Instruktions-Set Keine Performance-Sprünge mehr erwartbar Literatur: Rob Williams, Computer Systems Architecture, Addision-Wesley, 2001: Kapitel 7, 11. Andrew S. Tanenbaum, Structured Computer Organization, 5th edition, Pearson, 2006. 22