Entwicklerleitfaden: Load/Execute soll AMDs Bulldozer schneller machen

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(öffnet im neuen Fenster) .


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.



