Entwicklerleitfaden
Load/Execute soll AMDs Bulldozer schneller machen
AMD hat den Leitfaden zur Programmierung der kommenden Prozessoren mit Bulldozer-Architektur veröffentlicht. Darin enthalten ist auch eine bewertete Liste der Neuerungen, die am meisten Tempo bringen sollen.
Galt bisher AMDs "shared frontend" als architektonisch spannendste Neuerung von AMDs Bulldozer, so sieht das der Chiphersteller selbst etwas anders. Das Unternehmen hat nun den "Software Optimization Guide" für die Bulldozer-Familie (15h laut CPUID-Befehl) als PDF veröffentlicht.
Darin enthalten ist auch eine Liste der neuen Funktionen, die nach Wirksamkeit für Programmierer sortiert ist. An erster Stelle führt AMD sogenannte "Load-Execute Instructions" auf. Dabei können sowohl Integer- als auch FP-Befehle direkt nach dem Laden aus dem L1-Cache ausgeführt werden - ohne Umweg über den Scheduler. Das soll offenbar dafür sorgen, dass die gegenüber dem Frontend doppelt ausgeführten Scheduler nicht ins Leere laufen, denn nicht unter allen Bedingungen ist eine Umgehung des Schedulers sinnvoll.
So gibt es durchaus selten benutzte Befehle, die so viele Takte beanspruchen, dass eine Neusortierung durch den Scheduler sinnvoll ist. Viele Basisoperationen wie das Addieren oder Subtrahieren besitzen aber Load-Execute-Varianten und sind schneller auszuführen. Vor allem, wenn die Pipeline sonst auf ein Ergebnis warten müsste, ist deren Verwendung ratsam.
Als zweitwichtigste Neuerung aus Sicht der Programmierer gibt AMD "write combining" an. Schreibzugriffe in den Speicher - welche zuerst durch die Caches müssen - können zu je 64 Byte, und damit einer Cache-Line, zusammengefasst werden. Vor allem für I/O-intensive Programme wie einen Gerätetreiber kann das viel Performance bringen. Daher hat AMD dem write combining auch einen eigenen Anhang seines Leitfadens gewidmet.
Die Programmieranleitung ist vor allem für die Hersteller von Compilern wichtig, so dass für die Vielzahl von x86-Architekturen verschiedene Codepfade erzeugt werden können. In der Praxis kommen solche architekturspezifischen Optimierungen nur bei kleinen Teilen von Programmen zum Einsatz, können dort aber sehr effizient sein.
Habe ich das richtig verstanden, dass nur die Bulldozer Prozessoren mit ausgewählten AM3...