Wie gut lässt sich die X64-Architecture (AMD) programmieren?
-
Ich weiss daß X64 dem IA32 ähnlich - also anders ist.
Was mich interessiert:
Welchen Eindruck hinterlässt diese Architketur dem
ASM-Prgrammierer, wenn er sie vergleicht mit IA32?Ich interessiere mich nicht für Aspekte eines Umsteigers sondern für die Aspekte
der Handbarkeit von X64 (im Vergleich zu IA32 - ggf aber auch andere Archs).Z.B. X64 erlaubt "relative" (vs. "absolute") Sprünge.
Wie sehr vereinfacht/verkleinert/beschleunigt dies den PIC-Code?
etc.
allg.: welche Vorteile/Nachteile besitzt X64 zu IA32?
-
du meinst sowas wie
jmp -127
?
das konnte man schon beim 80x86
-
vll. hab ich das nit richtig verstanden, aber ich las von erweiterungen betreffend
der relativen adressierung, die die pic-programmierung vereinfachen sollte.
-
gorgoyle schrieb:
allg.: welche Vorteile/Nachteile besitzt X64 zu IA32?
Größter Vorteil soweit:
-64-Bit-großer Addressspace.
-Neue GPRs (R08-R15), mit denen man den Stack entlasten kann. Sprich: Wenn du irgendwelche Zwischenergebnisse in deinem Programm hast, musst du diese nicht auf den Stack pushen, um diese zu sichern, wenn du weiter arbeiten möchtest, sondern du kannst einfach einen dieser 7 zusätzlichen Register nehmen.Ansonsten sind die Instruktionen praktisch gleich geblieben.
-
welchen geschwindigkeitsgewinn kann man erzielen dadurch dass ein Programm von ia32
auf x64 portiert wird? (0-x%?)
-
Das kommt drauf an, wie gut du im Optimieren bist und was das Programm genau macht.
Ich vermute denoch mal, dass der Geschwindkeitsgewinn in 99% dfer Fälle gegen 0 geht.
-
Genau, die Bitzahl der CPUs werden nicht wegen der Geschwindigkeit, sondern wegen der Adressierung des Arbeitspeichers erhöht. Mit 64 Bit kannst du halt mehr adressieren als mit 32.
-
Ich vermute mal, dass der Geschwindkeitsgewinn in 90% der Fälle bei 1-3% liegt.
-
ich denke der stack wird manchmal entlastet, manchmal kommt mehr belastung, weil doppelt soviele, doppelt so grosse datengepusht werden. ich glaube heise hat mal ein paar programme nur neu kompiliert und gebenchmarkt und es gab keinen vorteil, manchmal auch ein wenig verlangsammung, sie haben vermutet, dass die groesseren datentypen mehr speicher brauchen und somit der cache weniger effektiv ist.
ich benutze trotzdem lieber 64bit, wegen dem addressspace das schoenes memorymapping von vielen daten erlaubt. weil man in assembler viel schoener programmieren kann (man hat weniger register pressure) und weil 64bit manchmal beim rechnen auch schneller sind z.b. wenn man groessere zahlen emuliert.
-
darf ich das zusammenfassen zu:
die architecture ist komfortabler
aber die ISA ist kaum besser?
-
gorgoyle schrieb:
darf ich das zusammenfassen zu:
die architecture ist komfortabler
aber die ISA ist kaum besser?Der Befehlssatz wurde eigentlich einfach vom x86 übernommen. Wäre ja auch unsinnig einen neuen Befehlssatz zu verwenden ...