Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test

Prozessoren | HT4U.net | Seite 9

Der Kern: Das Frontend



Nach der Betrachtung der großen Veränderungen wollen wir uns nun den "Innereien" eines Kerns in Form seiner Pipeline annehmen. Zunächst werden wir dabei das Frontend der Pipeline untersuchen.

Unter dem Frontend einer Prozessor-Architektur fasst man die Befehlsholstufe (Instruction Fetch) samt Sprungvorhersage (Branch Prediction) und die Decode-Stufe zusammen. Traditionell liegt bei x86-Prozessoren in diesem Bereich das größte Optimierungspotential, denn je mehr und je schneller die Befehle zu den Ausführungseinheiten gelangen, desto performanter ist die CPU. Gerade die häufigen Sprünge und die Übersetzung von x86-Befehlen unterschiedlicher Länge in maschinenverständliche uOP-Befehle (Mikrobefehle) sind hierbei zu nennen. An beiden Punkten hat Intel beim Design der "Sandy Bridge"-Architektur erneut angesetzt und herausgekommen sind ein neuartiger uOP-Cache sowie eine – laut Intel – deutlich verbesserte Sprungvorhersage.


Der uOP-Cache


Der uOP-Cache ist ein neuer Bestandteil der Dekodierstufe der bereits dekodierte uOP-Befehle (ca. 1,5K) speichert. Holt die Befehlsholeinheit (Instruction Fetch) einen neuen Befehl, so überprüft diese zuerst den uOP-Cache auf etwaige Übereinstimmungen. Ist dies der Fall wird direkt der zur Instruktion gehörige uOP-Code an die weiteren Pipeline-Stufen übergeben und die komplexe Dekodierstufe inklusive der vier Decoder kann abgeschaltet werden. Wie genau dieser Abgleich dabei von statten geht, wollte uns Intel allerdings nicht verraten.

Der uOP-Cache ist somit ein L0-Cache, wenn man so will. Nur wenn der (Mikro-)Befehl nicht im uOP-Cache zu finden ist, wird er aus dem eigentlichen – nach wie vor 32 KByte großen – L1-Instruktions-Cache (beinhaltet nur Nicht-Dekodierte-x86-Befehle) geholt. Laut Intel tritt der letztgenannte Fall jedoch nur in 20 Prozent der Fälle ein. Somit hilft der uOP-Cache nicht nur die Befehlsabarbeitung im Frontend deutlich zu beschleunigen, sondern er trägt gleichzeitig auch zur Senkung des Energieverbrauches bei.

Bild: Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test

Anders als der beim Nehalem vorhandene Loop Stream Detector (LSD) zur Schleifenerkennung, kann der uOP-Cache auch im Falle von Befehlen außerhalb von Schleifen verwendet werden und ist somit deutlich wirkungsvoller als der 28 uOP fassende LSD, der nur im Falle einer Schleife die mehrfache Dekodierung eines Befehls umgehen kann. Ein wenig erinnert der neue uOP-Cache auch an den Trace-Cache aus dem Pentium 4. Allerdings konnte dieser keine unabhängigen uOPs abspeichern, sondern immer nur einen Block von aufeinander folgenden Instruktionen.


Die neue Sprungvorhersage


Zusammen mit dem uOP-Cache hat Intel – mal wieder – die Sprungvorhersage verbessert. Der Grund weshalb gerade diese Einheit quasi immer Ziel der Optimierer ist dabei recht einfach zu verstehen. Schlägt die Sprungvorhersage fehl, so muss die Pipeline geleert werden und bereits berechnete Ergebnisse müssen verworfen werden. Ein falsch vorhergesagter Sprung kostet somit Energie und Leistung. Dies will man natürlich vermeiden, weshalb immer wieder an eben dieser Einheit gearbeitet wird.

Bild: Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test

Die Forschergruppe, die sich mit der Sprungvorhersage befasst, hat herausgefunden, dass bei einem 2-Bit-Predictor (Zustände: strongly taken, weakly taken, weakly not taken, strongly not taken) in aller Regel die starken Zustande vorliegen. Daher verwenden bei der Sprungvorhersage von "Sandy Bridge" mehrere Sprünge die gleichen Konfidenz-Bits (Bits welche die Vorhersage speicheren), statt dass jeder Sprung seine eigenen Konfidenz-Bits besitzt. Auf diese Weise lassen sich mit der gleichen Anzahl an Bits deutlich mehr Sprünge speichern.

Darüber hinaus hat man auch die Art und Weise wie die Sprungziele gespeichert werden überarbeitet. Bisher hatten alle Sprungziele die gleiche Größe. Da jedoch oftmals Sprünge sehr dicht auf einander folgen verschenkt man auf diese Weise viel Speicherplatz, wenn man viele Sprünge betrachten will. Bei "Sandy Bridge" können die Sprungziele hingegen unterschiedlich groß sein, so dass der Speicherplatz effizienter genutzt wird und die Leistung der Sprungvorhersage gesteigert wird.


Das restliche Frontend


Das restliche Frontend entspricht ansonsten mehr oder weniger dem der Nehalem-Architektur. So gibt es erneut vier Decoder, die bis zu vier Instruktionen pro Zyklus an die weitere Hardware weiterleiten können. Auch der L1-Instruktions-Cache ist mit 32 KByte groß gleich geblieben. Allerdings hat Intel die Assoziativität wieder auf acht erhöht, nachdem man diese bei der Einführung der Nehalem-Architektur von acht beim Core-2 auf vier verringert hat. Ob dies daran liegt, dass die Core-Architektur wie auch "Sandy Bridge" aus Isreal stammt und Nehalem aus den USA ;) ? Die Cache-Assoziativität bestimmt dabei die Zugriffsweise auf den Cache. Eine höhere Assoziativität bedeutet dabei im allgemeinen eine höhere Effizienz aber auch einen etwas höheren Hardwareaufwand (Logik sowie Verdrahtung).

Bild: Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test


 

Inhalt dieses Testberichtes