Doping für CPUs — Möglichkeiten der Leistungssteigerung
Mögliche Hebel zum Zweck der Leistungssteigerung (Bus- und Speichertakt)
Erhöhung des Bus- und Speichertakts
Eine weitere recht populäre Art die Leistung zu steigern, ist das Verhältnis zwischen internen und externen Takt zu verringern. Heutige Prozessoren verfügen in der Regel über mehrstufige Cache-Hierarchien. Der Level 1 Cache (L1 Data und L1 Code) befindet sich direkt bei den Funktionseinheiten, hat eine sehr niedrige Latenz sowie einen sehr hohen Durchsatz. Zugriffe auf den L1 Cache erfolgen, je nach Prozessor, innerhalb drei bis acht Taktzyklen. Man nennt dies die sogenannte “Latenz”.
Dahinter sitzt, mittlerweile ebenfalls auf dem Die integriert, der Level 2 Cache. Dieser verfügt über eine deutlich höhere Latenz von über zehn Taktzyklen und einen, gegenüber dem L1-Cache, recht geringen Durchsatz. Der L1 Cache ist in der Regel “Write Through”, so dass alle Informationen aus dem L1 Cache auch gleichzeitig in den L2 Cache geschrieben werden.
Dahinter wiederum sitzt ein eventuell vorhandener externer Level 3 Cache, was sich bei Desktop-Prozessoren jedoch bisher bis auf den PPC75xx (kurz: G4) nicht durchgesetzt hat. An letzter Stelle steht nun der eigentliche Arbeitsspeicher selber.
Zugriffe auf den Speicher sind derart organisiert, dass sie immer vom schnellsten zum langsamsten Cache erfolgen. Erst wenn ein “cache miss” auftritt (cache miss bedeutet, dass die angeforderten Daten sich in keinem der Caches befinden), wird auf den Arbeitsspeicher zurückgegriffen. Moderne Speichermodule werden mit bis zu 533 MHz betrieben (PC1066 RDRAM), in der Regel sind heutige PCs jedoch mit dem weitaus günstigerem, jedoch etwas langsamerem DDR-SDRAM ausgestattet, welches laut Spezifikation bis zu 166 MHz schnell sein darf.
Der Zugriff auf den Arbeitsspeicher läuft bei allen heute verfügbaren Prozessoren über den Chipsatz, ergo über den Front Side Bus, kurz FSB. Dieser beträgt beim Athlon effektiv 266 oder 333 MHz (DDR-FSB), beim Pentium 4 effektiv 400 oder 533 MHz (QDR-FSB) und bei Apple’s aktuellen Macintoshs zwischen 100 MHz SDR (iMac, eMac, iBook) über 133 MHz SDR (PowerMac DP867, PowerBook) bis hin zu 166 MHz SDR (PowerMac DP1000 und DP1250). So hoch diese Zahlen auch erscheinen mögen, im Vergleich zu 2 GHz Prozessortakt ist dies im besten Falle grade mal ein Verhältnis von 4:1. Bei Speicherzugriffen muss der Prozessor also hunderte von Zyklen mit Nichtstun vergeuden, bis die Daten bereit liegen und verarbeitet werden können. Je niedriger also das Verhältnis zwischen internem und externem Takt, desto weniger Taktzyklen muss der Prozessor bei Speicherzugriffen warten (wiederum im Verhältnis zwischen internem und externem Takt betrachtet) und desto früher steht er für weitere Berechnungen bereit.
Aus diesem Grund ist ein 1 GHz Prozessor der mit 166 MHz FSB betrieben wird schneller, als der gleiche Prozessor wenn er mit 133 MHz FSB betrieben wird.
Als kleiner Nachsatz sei noch hinzugefügt, dass eine Erhöhung des Speichertakts nicht zwingend zur Leistungssteigerung führen muss. Ein sehr gutes Beispiel für Sinnlosigkeit stellen die aktuellen PowerMacs von Apple dar. Der Arbeitsspeicher wird im DDR-Verfahren betrieben, es werden also zwei Bit pro Taktsignal übertragen. Im Vergleich zu den QuickSilver PowerMacs, also den direkten Vorgängern der heutigen Modelle, stellt dies eine Verdopplung der RAM-Bandbreite dar und müsste, obiger Erklärung zufolge, aufgrund des auf die Hälfte verringerten Verhältnisses zwischen internem und externem Takt zu einer deutlichen Leistungssteigerung führen.
Jedoch gibt es zwischen dem Dual 1 GHz mit SDR-SDRAM und dem mit DDR-SDRAM nur minimale Unterschiede. Der Grund liegt in der Art und Weise, wie der Prozessor auf den Arbeitsspeicher zugreift. Denn damit er auch die volle Bandbreite des Arbeitsspeichers nutzen kann, muss er mit eben dieser Bandbreite darauf zugreifen können. Beim AMD Athlon ist dies dank dem EV6 Protokoll möglich, der Zugriff auf den DDR266/DDR333 Arbeitsspeicher erfolgt mit 266/333 MHz. Beim G4 Prozessor in Apple’s PowerMac sieht die Situation jedoch erbärmlich aus, der Zugriff auf den DDR266/DDR333 Arbeitsspeicher erfolgt hier lediglich mit 133/166 MHz wie bisher auch. Sinnvoll wäre gewesen, auch das Übertragungsprotokoll zu verändern und nicht nur die Bandbreite des Arbeitsspeichers zu erhöhen.
Vergrößerung und Optimierung der Caches
Kamen die ersten verfügbaren x86 Prozessoren noch ohne jeglichen Cache, so befinden sich heute kombiniert bis zu über einem halben Megabyte dieser schnellen Zwischenspeichern im Prozessorkern (bei Serverprozessoren auch deutlich mehr). Der Grund ist ganz einfach und wie bereits erwähnt: Um die unsäglich langsamen Speicherzugriffe möglichst zu vermeiden, werden die benötigten Daten vom Prozessor bereits vor deren Notwendigkeit in den Cache geladen und bereitgestellt. Von zu Beginn wenigen Kilobyte L1 Cache, verfügen heutige Serverprozessoren über dreistufige Cache-Hierarchien mit bis zu über 128MB kombiniertem Cache (so beispielsweise der IBM Power4 Prozessor mit 128MB L3-Cache, bis zu 48MB L2-Cache (kombiniert) und über 1MB L1-Cache (kombiniert).
Mit dem Pentium 4 hat Intel ein neues Funktionsprinzip des L1 Instruction Cache eingeführt, den sog. Trace Cache. Seit dem 6x86 arbeiten x86-Prozessoren extern wie CISC-Prozessoren mit komplexem Befehlssatz, decodieren jedoch jede Instruktion in RISC-artige µOps vor ihrer Ausführung. Dieser Vorgang der Decodierung kostet natürlich Rechenzeit und um diese zu sparen, speichert der Pentium 4 im 12.000 µOps fassenden L1 Trace Cache die bereits decodierten RISC-artigen Befehle für die weitere Verwendung ab.
Ohne diesen Trace Cache wäre der Pentium 4 übrigens nochmals deutlich ineffizienter. Warum folgt im weiteren Verlauf des Artikels.