45 nm Penryn Mobilprozessoren #2
Mit dem Schritt zur 45 nm Fertigungstechnik hat Intel eine grundlegende Veränderung im Transistorendesign vorgenommen. Gordon Moore sprach Anfang 2007, als Intel erstmals lauffähige Prozessoren mit 45 nm Strukturgröße zeigte, vom wichtigsten Entwicklungsschritt in der Transistorentechnologie seit 40 Jahren. Wir werden an dieser Stelle darauf verzichten, die technischen Hintergründe von Intels 45 nm Fertigungstechnik im Detail zu erläutern und verweisen stattdessen auf unseren Artikel zum Core 2 Extreme QX9650.
Auch die bekannten Vorzüge der Core-Mikroarchitektur wie Wide Dynamic Execution, Advanced Digital Media Boost, Intelligent Power Capability, Smart Memory Access und Advanced Smart Cache werden wir nicht nochmals aufwärmen, denn auch diese Punkte werden im Testbericht des Core 2 Extreme QX9650 ausführlich behandelt. Stattdessen gehen wir auf die Neuerungen ein, welche beim 45 nm Penryn hinzugekommen sind und betrachten insbesondere jene Techniken, die für den mobilen Einsatz von Bedeutung sind.
SSE4
Die erste Core 2 Generation fügte der Befehlssatzerweiterung SSE (Streaming Single Instruction Multiple Data Extensions) 16 neue Instruktionen, welche unter dem Begriff "Advanced Digital Media Boost" zusammengefasst wurden. Den Schritt auf SSE4 vollzieht erst die Penryn-Generation. SSE4 umfasst weitere 47 neue Instruktionen, welche insbesondere die Videoverarbeitung, Grafikzugriffe und das Zusammenspiel mit Koprozessoren beschleunigen sollen. Zu den ersten Anwendungen, welche SSE4 verwenden, zählen die Video-Encoder DivX und TMPGEnc sowie Adobes Videobearbeitung Premiere. Dies verwundert kaum, denn solche Programme können aus SSE4 den größten Nutzen ziehen.
Ein gutes Beispiel hierfür ist die Motion Estimation, also die Bewergungsvorraussage bei Videodaten. Um herauszufinden, wie eine Bewegung ablaufen wird, bestimmt man einen Pixel als Ausgangspunkt und prüft die Farbwerte der Pixel, die ihn umgeben. Hierzu werden unterschiedliche Muster verwendet und alle Pixel im Prüfbereich einzeln abgefragt. Wie obige Grafik zeigt, funktioniert dies mit SSE4 wesentlich einfacher: Man gibt den Ausgangspunkt an und alle Prozessorenkerne des Systems prüfen die umgebenden Pixel. Aus einer komplexen Befehlfolge wurde ein einzelner Aufruf.
Dank Write-Combining können Prozessoren sehr schnell in den Frame Buffer der Grafikkarte schreiben, Lesezugriffe sind jedoch beim Conroe und Kentsfield auf lediglich 800 MB/s beschränkt. Mit Hilfe der neuen "Streaming Load Instruction" erreicht Intel bei seiner Penryn-Generation Leseraten von bis zu 6,4 GB/s, hierbei werden Cache-Line große Datenmengen ausgelesen. Eine Cache-Line entspricht 64 Bytes, ohne SSE4 werden lediglich 8 Byte gelesen. Hieraus ergibt sich die Leistungssteigerung um den Faktor acht. Weitere Befehle sollen insbesondere wissenschaftliche Anwendungen beschleunigen, hierzu gehören auch die Erweiterungen, welche die Nutzung von Koprozessoren möglich machen.
Super Shuffle Engine
Nachdem Intel bereits bei der ersten Generation der Core-Mikroarchitektur die SSE-Einheiten auf 128 Bit verbreitert hatte, wurden nun auch die Berechnungspfade für Shuffle-Operationen auf 128 Bit gebracht. Shuffle-Operationen werden für das Formatieren von Daten bei SSE-Instruktionen benötigt, z.B. beim Verschieben von Bits (Shift), Packing oder Unpacking. Da nun 128 Bit Operationen in einem Taktzyklus bearbeitet werden können, hat sich deren Ausführungszeit halbiert.
Diese Leistungssteigerungen stehen allen Programmen zur Verfügung, welche SSE-Befehle verwenden. Eine Anpassung des Codes ist nicht notwendig.
Radix-16 Divider
Für Divisionen verwenden bisherige Core-Mikroprozessoren einen Radix-4 Teiler, welcher 2 Bits pro Iteration berechnet. Der neue Radix-16 Teiler der Penryn-Prozessoren halbiert die Anzahl der zur Berechnung benötigen Schleifendurchläufe, da er 4 Bits pro Iteration bewätigt.
Divisionen sollten von einem Penryn daher in der halben Zeit berechnet werden können, Wurzelberechnungen sogar noch schneller, da hierbei die Rechendauer exponentiell von der Anzahl der pro Iteration berechneten Bits abhängig ist. Diese Vorteile stehen auch in älteren Programmen zur Verfügung.