CPU
| Steuerwerk | Rechenwerk | Cache | ||||||||||||||||||||||
|
Befehlsdecoder
|
Kontrolleinheit
|
Bussteuereinheit
|
Arithmetisch logische Einheit
|
Cachespeicher für Daten
|
||||||||||||||||||||
|
Busschnittstelle
|
||||||||||||||||||||||||
| Interner Bus | Interner Bus | |||||||||||||||||||||||
|
Ausführungseinheit
|
Interner ROM-Speicher
|
Co-Prozessor
|
Cachespeicher für Befehle
|
|||||||||||||||||||||
|
||||||||||||||||||||||||
|
Chipsatz
|
||||||||||||||||||||||||
3. Prozessorkenngrößen
| Arbeitsweise während Befehlszyklus |
SISD
|
|||
SIMD
|
||||
MIMD
|
||||
| Architektur |
RISC
|
|||
CISC
|
||||
| Taktfrequenz |
CPU - Takt
|
|||
CPU - Bustakt
|
||||
| Verarbeitungsbreite |
MIPS
|
|||
MFLOPS
|
||||
| Cache |
Level 1 Cache
|
|||
Level 2 Cache
|
||||
| Core-Spannung |
|
|||
| Herstellungstechnologie |
|
|||
4. Formen der Leistungssteigerung
4.1. Pipelining
Bei jedem Befehl den ein Prozessor ausführt, muss er nach Neumann fünf Teilschritte abarbeiten:
Für einen Befehl sind also mindestens fünf Takte nötig. Für zwei Befehle werden dann 10 Takte benötigt.
|
Takt |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Befehl holen | Befehl 1 | Befehl 2 | ||||||||
| Befehl decodieren | Befehl 1 | Befehl 2 | ||||||||
| Operanden holen | Befehl 1 | Befehl 2 | ||||||||
| Befehl ausführen | Befehl 1 | Befehl 2 | ||||||||
| Ergebnis ausgeben | Befehl 1 | Befehl 2 |
Um die Leistung der CPU zu erhöhen, werden nun einfach fünf Funktionseinheiten auf einen Chip integriert, die parallel miteinander arbeiten. So ist die eine Funktionseinheit dafür zuständig, die Befehle zu holen, während die zweite alle Befehle dekodiert usw. Diese Funktionseinheiten werden auch Pipelines genannt.
Die Zeitersparnis wird im folgenden Bild deutlich:
|
Takt |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Befehl holen | Befehl 1 | Befehl 2 | ||||||||
| Befehl decodieren | Befehl 1 | Befehl 2 | ||||||||
| Operanden holen | Befehl 1 | Befehl 2 | ||||||||
| Befehl ausführen | Befehl 1 | Befehl 2 | ||||||||
| Ergebnis ausgeben | Befehl 1 | Befehl 2 |
Während im ersten Takt nur der Befehl 1 geholt wird, arbeiten im zweiten Takt schon zwei Funktionseinheiten gleichzeitig. Die erste Pipeline holt schon den zweiten Befehl und die zweite Pipeline decodiert den ersten.
Nach fünf Takten arbeitet die CPU optimal. Nun wird mit jedem Takt nicht nur ein neuer Befehl geholt, sondern auch immer ein Ergebnis ausgegeben. Theoretisch arbeitet die CPU wegen der fünfstufigen Pipeline nun auch fünfmal schneller:
|
Takt |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Befehl holen | Befehl 1 | Befehl 2 | Befehl 3 | Befehl 4 | Befehl 5 | Befehl 6 | ||||
| Befehl decodieren | Befehl 1 | Befehl 2 | Befehl 3 | Befehl 4 | Befehl 5 | Befehl 6 | ||||
| Operanden holen | Befehl 1 | Befehl 2 | Befehl 3 | Befehl 4 | Befehl 5 | Befehl 6 | ||||
| Befehl ausführen | Befehl 1 | Befehl 2 | Befehl 3 | Befehl 4 | Befehl 5 | Befehl 6 | ||||
| Ergebnis ausgeben | Befehl 1 | Befehl 2 | Befehl 3 | Befehl 4 | Befehl 5 | Befehl 6 |
Eine weitere Leistungssteigerung wird erreicht, wenn statt der einen fünfstufigen Pipeline eine doppelte fünfstufige Pipeline zum Einsatz kommen. Der Pentium 4 arbeitet z.B. mit zwei Pipelinestufen, der U und V Pipeline.
Probleme
Um ein optimales Pipelining abzusichern, sollten die Befehle in der
Reihenfolge abgearbeitet werden, wie sie tatsächlich bei der Programmausführung
aufgerufen werden. Das wird durch die Datenflussanalyse und die
erweiterte Sprungvorhersage (Advanced Dynamic Execution)
ermöglicht.
4.2. Datenflussanalyse
| Erstellung einer optimalen Reihenfolge der Befehlsabfolge |
4.3. Erweiterte Sprungvorhersage (Advanced Dynamic Execution)
| Sprünge und Verzweigungen werden gesucht |
4.4. Spekulative Ausführung (Speculative execution)
| Befehle werden im Voraus abgearbeitet, Ergebnisse sind sofort abrufbar, wenn Ausführung des Befehls tatsächlich verlangt wird |
4.5. Hyperthreading
| gleichzeitige Abarbeitung mehrerer Prozesse |
Aufgaben
|
Leistungsparameter |
Prozessor 1 Core 2 Duo |
Prozessor 2 Athlon 64 X2 4600+ |
Prozessor 3 Pentium D 820 |
|
Realtakt |
2666 MHz | 2400 MHz | 2800 MHz |
|
Fertigung |
65 nm | 90 nm | 90 nm |
|
Kernanzahl |
2 | 2 | 2 |
|
FSB (effektiv) |
1066 MHz | 800 MHz | 800 MHz |
|
L1-Befehlscache |
32 KByte | 128 KByte | 24 KByte |
|
L1-Datencache |
32 KByte | 64 KByte | 32 KByte |
|
L2-Cache |
4096 KByte | 1024 KByte | 2048 KByte |
|
Befehlssätze |
MMX, SSE,SSE2, SSE3, SSE4 | MMX, SSE, SSE2, SSE3, 3DNow!, 3DNow!+ | MMX, SSE, SSE2, SSE3 |
|
Prozessoraufbau |
12-stufige Pipeline | 17-stufige FPU und 12-stufige ALU Pipeline | 31-stufige Pipeline |
|
Transistoren |
291 Mio. | 154 Mio. | 230 Mio. |
|
Kerngröße |
143 mm² | 147 mm² | 206 mm² |
|
Sockel |
LGA 775 | 939 | LGA 775 |
|
Leistungsaufnahme |
65 W | 110 W | 95 W |