@geisterfahrer
Du führst da einige Scheinargumente ein. Nur weil der K8 64 Bit beherrscht, bedeutet es mitnichten, dass der Code durchgängig 64 Bit sein muss. Überall wo es nicht notwendig ist, kann der Code wie bisher 32 bitig sein. Was gut genug in 32 Bit ist, wird übernommen (siehe Präfixe).
Die Zeiger bleiben 64 Bit, aber der Code sieht bei 64 Bit nicht notwendigerweise so aus, dank der Bennung der Register für 64 Bit
RAX und der bisherigen 32 Bit
EAX. Durch ein schlichtes zusätzliche Bit genannt
Prefix Register REX wird der Code gar nicht so aufgebläht.
Mit anderen Worten die Operandengrösse ist in Wirklichkeit gar nicht 64 gross. Die bleibt mit der bisherigen 32Bit Grösse vergleichbar. Lediglich ein Operandenpräfix kommt zur Unterscheidung 64/32Bit hinzu.
Durch die Speicheradressierung sind die Zeiger aber weiterhin grösser bei 64 Bit.
Dadurch ist der 64 Bit Code ca. 20-25% grösser. Bei diesem Punkt setzten nun aber die zusätzlichen Integer und SSE Register ein. Dadurch dass wesentlich mehr in den Registern verbleibt, entfallen im Code diverse Zugriffe auf den Cache/Speicher das macht den Code
1. wieder kompakter, da weniger Befehle zum Sichern und Abspeichern notwendig sind.
2. Ist derzeit die Vielfalt von AMD64 Prozessoren begrenzt. Die ISA Ergänzungen auf IA32 machten vieles möglich, aber viele Sonderbefehle wurden nicht eingesetzt, da sie nicht auf allen Prozessoreen vorkamen. cmovg ist solch ein Befehl, der war im PentiumPro, drin aber Compiler nutzen nicht zwangsläufig diesen Befehl ...
man will ja kompatibel bleiben ... auch hier ist demnach noch Raum für Optimierungen.
Teilzugriff auf ein Register auch nicht umbedingt schnell
Was ist ein Teilzugriff? Die Register sind die schnellsten Speicher im Prozessor, schneller geht nicht. Der L2 Cache wurde um einen Hauch verbessert in den Latenzen. Bei 32 Bit sind die Register 32 Bit breit. Bei einem 32Bit Vergleich ist der K8 praktisch nirgens langsamer als sein Kontrahent K7, aber in vielen Anwendungen schneller ...
Zudem wurde bei der SSE Einheit des K8 verfeinert, wesentlich mehr Befehle sind "direkt" -> als
FastPath verdrahtet worden. AMD spricht davon, dass die Microcodierten Instructionen um 8% für Integer und 28% für Gleitkomma-Instructionen reduziert wurden.
MFG Bokill