Fast alle Fortschritte in der Computergeschwindigkeit kommen aus einem dieser Bereiche:
Kleinere Transistoren
Zwei Dinge ergeben sich aus der Verkleinerung von Transistoren:
- Sie sind physisch näher beieinander, sodass die Zeit, die ein elektrisches Signal benötigt, um von der Quelle zum Ziel zu gelangen, geringer ist. So obwohl elektrische Signale reisen nicht schneller als vor 50 Jahren, oft sie reisen jetzt kürzere Entfernungen .
- Ein Chip kann mehr Transistoren enthalten, was bedeutet, dass mehr "Arbeit" gleichzeitig erledigt werden kann. Je mehr Transistoren hinzugefügt werden, desto schwieriger ist es, nützliche Arbeit für sie zu finden, aber es werden viele clevere Tricks verwendet (siehe unten).
Mehr "nützliche Arbeit" pro Anweisung
Beispielsweise fehlen einigen Prozessoren Anweisungen zum Multiplizieren oder Teilen von ganzen Zahlen. Stattdessen muss diese Aufgabe mit langsamen Softwareroutinen ausgeführt werden. Das Hinzufügen von Multiplikations- und Divisionsanweisungen beschleunigt die Dinge erheblich. Das Hinzufügen von Gleitkommaanweisungen kann Software beschleunigen, für die Gleitkommazahlen erforderlich sind.
Eine wichtige Möglichkeit, mehr "nützliche Arbeit" pro Anweisung zu erledigen, besteht darin, die Wortgröße zu erhöhen . CPUs, die Operationen mit 32-Bit-Nummern ausführen können, erfordern häufig viel weniger Anweisungen, um dieselbe Aufgabe wie 16-Bit- oder 8-Bit-CPUs auszuführen.
Einige Prozessoren unterstützen Anweisungen, die mehrere Aufgaben gleichzeitig ausführen, insbesondere Anweisungen, die denselben Vorgang für mehrere Datenelemente ( SIMD ) ausführen .
Mehr Anweisungen pro Zyklus
Der "Taktzyklus" ist, wie der Prozessor von seinem aktuellen Zustand in den nächsten Zustand übergeht. In gewissem Sinne ist es die kleinste Arbeitseinheit, die der Prozessor gleichzeitig ausführen kann. Die Anzahl der Taktzyklen, die ein bestimmter Befehl benötigt, hängt jedoch vom Design des Prozessors ab.
Mit dem Aufkommen von Pipeline-Prozessoren wurde es möglich, dass sich separate Befehle "überlappen", dh man würde beginnen, bevor der vorherige beendet war. Bestimmte Befehle können jedoch den nächsten Befehl ungültig machen, der erst bekannt wird, wenn der nächste Befehl teilweise ausgeführt wurde, so dass die Dinge kompliziert werden können. (Pipeline-Prozessoren enthalten Logik, um sicherzustellen, dass alles in Ordnung ist. Die Leistungsmerkmale sind jedoch komplexer.)
Superskalare Prozessoren bringen dies auf die nächste Ebene, wobei zwei Befehle buchstäblich gleichzeitig ausgeführt werden, und die Ausführung außerhalb der Reihenfolge geht einen Schritt weiter, wodurch Befehle außerhalb der Reihenfolge ausgeführt werden können. Diese Funktionen erfordern eine Analyse des Befehlsstroms, um herauszufinden, welche Befehle nicht miteinander in Konflikt stehen.
Obwohl es noch andere solche Tricks gibt (z. B. Verzweigungsvorhersage , spekulative Ausführung ), ist das Gesamtbild wichtiger:
- Jeder Befehl benötigt eine bestimmte Anzahl von Taktzyklen (nicht unbedingt konstant)
- Es können jedoch mehrere Anweisungen gleichzeitig ausgeführt werden
- es gibt also messbare " Anweisungen pro Zyklus ", die für High-End-Prozessoren> 1 sind
- Aber es hängt sehr stark von der Arbeitsbelastung ab
Mehr Zyklen pro Sekunde
Mit anderen Worten, höhere Taktrate . Die Erhöhung der Taktgeschwindigkeit erhöht nicht nur die erzeugte Wärme, sondern erfordert auch ein viel disziplinierteres Chipdesign, da die Stabilisierungszeit der Schaltung kürzer ist. Wir haben bis in die 2000er Jahre eine Menge Meilen gesammelt, als wir an einige praktische Grenzen stießen.
Daten zur richtigen Zeit am richtigen Ort
Obwohl die Komponenten innerhalb der CPU aufgrund schrumpfender Transistoren immer enger zusammenrücken, sind CPU und RAM immer noch gut 5-10 cm voneinander entfernt. Wenn ein Befehl etwas aus dem RAM benötigt, benötigt dieser Befehl nicht 5 oder 6 Zyklen, sondern etwa 200. Dies ist das von Neumann-Engpassproblem .
Unsere Hauptwaffe dagegen ist der Cache . Es ist wahrscheinlicher, dass auf Daten, auf die kürzlich zugegriffen wurde, erneut zugegriffen wird. Sie werden daher in einem speziellen Speicher (Cache genannt) im CPU-Chip gespeichert, wodurch der Zugriff erheblich beschleunigt wird.
Andere Techniken (wie Pipelining und Verzweigungsvorhersage ) ermöglichen es dem Prozessor jedoch, nützliche Arbeit zu leisten, während er auf das Eintreffen von Daten wartet, und vorherzusagen, welche Daten möglicherweise bald benötigt werden.
Mehrere und / oder spezialisierte Prozessoren
Es ist viel einfacher, Software für einen einzelnen Prozessor zu schreiben als für mehrere Prozessoren. Manchmal lohnen sich jedoch die Vorteile in Bezug auf Leistung, Kosten und Stromverbrauch.
Auch bestimmte Prozessoren eignen sich besonders gut für bestimmte Aufgaben. Beispielsweise wurden GPUs speziell für die Berechnungen entwickelt, die zum Rendern von 2D- und 3D-Grafiken und -Effekten erforderlich sind.
Multi-Core-Prozessoren sind im Wesentlichen mehrere Prozessoren auf einem einzigen Chip.