Maßnahmen zur
Leistungssteigerung bei
Prozessoren
Verbesserung des Fertigungsprozesses
Wurde der Pentium 1 noch mit einem 0,8 μm Prozess
hergestellt, so kommt beim Pentium 4 mit Prescott-Kern nur
mehr ein 0,09 μm Prozess zum Einsatz.
Durch die kleineren Strukturen müssen die Elektronen zwischen
den einzelnen integrierten Schaltungen der CPU immer kürzere
Wege zurücklegen.
Damit kann die Taktrate des Prozessors erhöht werden was auch
die Arbeitsgeschwindigkeit anhebt.
Spezialisierung im Prozessor
Im Jahr 1997 wurden zum ersten Mal spezielle Befehle für
komplexe grafische Aufgaben eingeführt .
Damit musste die CPU nicht mehr viele Einzelbefehle abarbeiten
sondern nur noch eine einzige Anweisung durchführen.
INTEL nennt diese Technik „MMX“ (MulitMedia Extension)
während sie von AMD mit „3DNow!“ bezeichnet wird.
Spezialisierung im Prozessor
Bei den ersten Prozessoren musste die CPU noch alle
anfallenden Instruktionen selbst ausführen.
Der INTEL 80486 aus dem Jahre 1986 war der erste Prozessor
mit integriertem mathematischen Coprozessor.
Dessen Aufgabe war es die CPU von Fließkommaberechnungen
zu entlastet.
Auslagerung von Funktionen
Mit zunehmender Verbreitung von Grafikanwendungen
(z. B. CAD-Programme, aber vor allem 3D-Games) wurde die
Rechenzeit der CPU immer mehr für die Darstellung komplexer
Szenen belegt.
Das gleiche Problem entstand bei aufwändigen Sounds oder
dem umcodieren des analogen Fernsehsignals.
Deshalb stellte man dem Prozessor spezialisierte Co-Prozessoren
zur Seite, die nun auf der Grafik-, Sound- oder TV-Karte
untergebracht sind.
Schnellere Busse
Im Laufe der Zeit wurde die Geschwindigkeit mit welcher der
Prozessor auf externe Einheiten zugreifen kann deutlich erhöht.
Der Pentium 1 arbeitete noch mit einem FSB (FrontSide Bus)
von 60 MHz, beim Pentium 3 wurde der FSB-Takt bereits bis
auf 133 MHz gesteigert und der P4 mit Prescott-Kern arbeitet
mit bis zu 1060 MHz FSB.
Dabei gilt:
Auf den Arbeitsspeicher kann mit vollem FSB-Takt zugegriffen
werden, der AGP Steckplatz (=Grafikkarte) kann mit FSB/2
angesprochen werden und für die Kommunikation mit PCISteckplätzen steht noch FSB/4 zur Verfügung.
Schnellere Busse
Mit dem Prozessorsockel LGA775 und den zugehörigen
Chipsätzen wird die Busstruktur auf dem Mainboard komplett
überholt.
Der AGP-Steckplatz wird durch den PEG-Slot (=PCI Express for
Graphics) ersetzt und der parallele PCI-Bus muss dem seriellen
PCIe (=PCI Express) weichen.
Schnellere Busse
Gleichzeitig wird die Northbridge (von Intel nun MCH =
Memory Controller Hub genannt) und die Southbridge (neue
Bezeichnung ICH = I/O Controller Hub) überholt.
So besitzt der MCH nun 16 PCI Express Lanes über welche die
Grafikkarte mit bis zu 4 GByte/s im Vollduplex-Betrieb
angesprochen werden kann.
Cache
Um möglichst schnell auf kurz zuvor berechnete
Zwischenergebnisse zugreifen zu können oder häufig benötigte
Befehle schnell in die ALU laden zu können wurde ein schneller
Zwischenspeicher eingebaut.
Dieser ist auch räumlich sehr nah beim Prozessor angesiedelt.
Früher direkt neben der CPU, bei aktuellen Prozessoren direkt
auf dem Prozessor-Die.
Da dieser schnelle Speicher in zwei Stufen organisiert ist nennt
man ihn „Level 1 Cache“ und „Level 2 Cache“
(kurz: „L1“ bzw. „L2“).
Cache
Die Geschwindigkeit mit welcher der Cache angesprochen
werden kann wurde ebenfalls kontinuierlich gesteigert:
Pentium 1:
Pentium 2:
Pentium 3:
Pentium 4:
66 MHz
117 bis 225 MHz
225 bis 1400 MHz
1300 bis 4000 MHz
Cache
Nach Aussage der Prozessorhersteller hält der L1-Cache 90%
aller von der CPU benötigten Daten bereits vor.
Von den fehlenden 10% hält wiederum der L2-Cache 90% (also
9% aller benötigten Daten) vor.
Das bedeutet, dass in 99% aller Fälle die Daten mit dem
Prozessortakt angefordert werden können, während nur noch
für 1% aller benötigten Daten auf den RAM zugegriffen werden
muss (wofür der Prozessor auf dessen Taktrate abgebremst
wird!).
Stages
Um einen Befehl ausführen zu können sind verschiedene
Zwischenschritte notwendig.
Im einfachsten Fall wird jede Anweisung in drei
Zwischenschritte (so genannte „Stages“) zergliedert:
(1) Befehl holen (engl. „fetch“)
(2) Befehl entschlüsseln (engl. „decode“)
(3) Befehl ausführen (engl. „execute“)
Zyklus
Je weiter ein Befehl in kleine Zwischenschritte untergliedert
wird, desto einfacher wird jede Stage.
Und je einfacher eine Stage aufgebaut ist, desto höher ist die
Frequenz mit der sie ausgeführt werden kann.
Die Zeit, welche zur Abarbeitung eines Befehls (also aller
Stages) benötigt wird, nennt man Zyklus.
Die Zyklusdauer ist stark von der Taktrate eines Prozessors
abhängig.
Innere Parallelisierung
(Beispiele für Stages)
F
Fetch
Holen des Operationscodes
D
Decode
Entschlüsseln des Operationscodes
E
Execute
Ausführen der Operation
A
Address
Berechnen der Operandenadresse(n)
R
Read
Lesen des/der Operanden
W
Write
Schreiben des Ergebnisses
H
Halt
Wartezustand bis Pipeline wieder frei ist
Innere Parallelisierung
(Klassische Befehlsausführung)
Die ersten Prozessoren die auf den Markt kamen (bei INTEL
beispielsweise der 8086) arbeiteten alle Befehle noch seriell –
also einen nach dem anderen – ab.
Die einzelnen Anweisungen waren kaum in Stages unterteilt.
Seriell
F
D
E
1. Befehl
F
D
E
2. Befehl
F
D
E
3. Befehl
F
D
E
4. Befehl
Innere Parallelisierung
(Pipeline)
Bereits beim (80)286 führte Intel die so genannte Pipeline ein.
Dies bedeutet, dass mit der Ausführung eines Befehles bereits
begonnen werden kann wenn der vorhergehende noch nicht
vollständig abgearbeitet wurde.
Allerdings kann zu einem bestimmten Zeitpunkt jeweils nur
eine Stage der gleichen Art bearbeitet werden.
Pipeline
F
D
E
F
D
E
F
D H
E
F
H
1. Befehl
2. Befehl
D
3. Befehl
E
4. Befehl
Innere Parallelisierung
(Super-Pipeline)
Die interne Befehlsverarbeitung wurde mit der nächsten
Prozessorgeneration verbessert, indem die Anzahl der Stages
pro Befehl erhöht wurde.
Damit kann mit der Abarbeitung eines Befehles noch schneller
nach Beginn des vorhergehenden Befehles begonnen werden.
Super-Pipeline
F
D
A
R
E
W
F
D
A
R
E
W
F
D
A
R
E
W
F
D
A
R
E
W
Innere Parallelisierung
(Superskalar)
In der fünften Prozessorgeneration (Pentium 1) erhielt jede
CPU zwei interne Datenleitungen so dass stets zwei Befehle
gleichzeitig ausgeführt werden können.
Superskalar
F
D
A
R
E
W
F
D
A
R
E
W
F
D
A
R
E
W
F
D
A
R
E
W
F
D
A
R
E
W
F
D
A
R
E
W
Innere Parallelisierung
(Out-Of-Order Execution)
Mit dem Pentium Pro (alias P6 – also in der 6. Generation)
führt die CPU eine so genannte Datenflußanalyse durch.
In der Folge werden Befehle unabhängig von der tatsächlichen
Reihenfolge im Programm in einer optimierten Reihenfolge
ausgeführt.
Out-Of-Order
Execution
F
D
A
R
E
F
D
A
R
F
D
A
R
F
D
A
R
F
D
A
R
F
D
A
R
W
E
W
E
W
E
E
W
W
E
W
Innere Parallelisierung
(Hyper-Pipeline)
Mit der 7. Prozessorgeneration (Pentium 4) wurde eine
20 stufige Pipeline eingeführt.
Dies konnte nur erreicht werden indem jeder CISC-Befehl (mit
diesen arbeiten gewöhnliche PCs) in so viele Stages
unterbrochen wird dass die CPU fast wie ein RISC-Prozessor
arbeiten kann.
Anmerkung: CISC = Complex Instruction Set Computing
RISC = Reduced Instruction Set Computing
Merkmale von RISC: - wenige elementare Befehle
- viele Register
- einheitliche Länge des Befehlscodes
- Befehlsausführung stets in einem Takt
Hyperthreading
Als Hyperthreading bezeichnet Intel die Fähigkeit einer CPU,
mehrere (Teil-) Programme parallel auszuführen.
Nicht zu verwechseln ist Hyperthreading mit der tatsächlichen
Integration mehrerer CPUs auf einem Chip.
Dort spricht man von echtem symmetrischem Multiprocessing
(SMP). Im Gegensatz zu SMP besitzt der Chip der
Hyperthreading-CPU nur eine vollständige CPU.
In Werbeprospekten wird auf die Hyperthreading Fähikgeit
manchmal explizit mit dem Hinweis „HT-Technologie“ oder
ähnlichem hingewiesen.
Sprungvorhersage
Aufgrund verschiedener statistischer Ansätze wird von der CPU
vermutet welche Befehle auf einen anderen Befehl folgen.
Diese nachfolgenden Anweisungen werden vor der Ausführung
bereits vom langsameren Arbeitsspeicher in den schnellen Cache
geladen.
Dadurch erhöht sich die Zugriffsgeschwindigkeit falls einer dieser
geladenen Befehle vom Programm tatsächlich aufgerufen wird.
Spekulative Programmausführung
Die spekulative Programmausführung ist eigentlich nur eine
logische Konsequenz und Weiterführung der Sprungvorhersage.
Sie wurde mit der 6. Prozessorgeneration (Pentium Pro)
eingeführt.
Vermutet der Prozessor beispielsweise dass nach dem Laden
mehrerer Zahlen eine Addition durchgeführt werden soll, so
kann mit der Summation der Zahlen bereits nach dem Laden der
zweiten Zahl begonnen werden.
Sollen die Zahlen dann doch multipliziert werden, so wird die –
auf reiner Spekulation beruhende – Summe eben wieder
verworfen und die Multiplikation durchgeführt.
Zusammenfassung
Leistungssteigerung bei Prozessoren erfolgt(e) durch:
• Technologie-Tuning
• On-Chip Caches und schneller Busse
• Innere Parallelisierung
• Hyperthreading
• Sprungvorhersagen
• Spekulative Programmausführung
--- ENDE ---

Maßnahmen zur Leistungssteigerung