Programmieren für 64 Bit
-
Optimizer schrieb:
Hallo geht's noch?
Ich gebs zu: meine Reaktion war etwas übertrieben...
Aber rechen doch mal nach... dann wirst Du feststellen, dass ich nicht ganz falsch lag...
Und von 32 nach 64 bit einfach davon auszugehen, dass dann "doppelt" so viele Register zur Verfügung stehen, deutet einfach darauf hin, dass man die Architektur der x64 nicht verstanden hat.
-
Jochen Kalmbach schrieb:
Optimizer schrieb:
Hallo geht's noch?
Ich gebs zu: meine Reaktion war etwas übertrieben...
Aber rechen doch mal nach... dann wirst Du feststellen, dass ich nicht ganz falsch lag...
Und von 32 nach 64 bit einfach davon auszugehen, dass dann "doppelt" so viele Register zur Verfügung stehen, deutet einfach darauf hin, dass man die Architektur der x64 nicht verstanden hat.Dann erzähl doch mal wie es richtig ist.
Ich würde jetzt auch sagen das man doppelt so viele Register zur verfügung hat als auf einer 32bit CPU.
-
hey leute,
ob 64- oder 32-bitter hat doch nix mit der anzahl der register zu tun. das heisst doch nur: "der prozessor kann 64 bzw. 32 bits parallel verarbeiten". es heisst auch nicht dass alle datenleitungen nach aussen geführt werden o.ä....
-
Ist doch auch von CPU-Architektur zu CPU-Architektur unterschiedlich. Z.B. haben die 32bit ARM-CPUs (StrongARM, XScale usw.) schon vor 20 Jahren 16x 32bit-Register gehabt. Und? Wenn die ARMs 64bittig werden, werden die dann 32x 32bit-Register haben? Schwachsinn! Wenn dann wird ARM jedes Register erstmal 64bit breit machen, und ob es MEHR Register werden, ist doch eine Design-ENTSCHEIDUNG und ist nicht implizit durch die 64bit gegeben.
Wenn man wissen will, wieviel und wie groß die Athlon64-Register sind, dann doch bitte einfach in die entsprechende Doku des Prozessors schauen und nicht davon ausgehen, wie es sein könnte.
-
Hauptsache man weiss, dass ein 64-Bitter genau doppelt so schnell ist :p
-
Artchi schrieb:
ob es MEHR Register werden, ist doch eine Design-ENTSCHEIDUNG und ist nicht implizit durch die 64bit gegeben.
Wenn man wissen will, wieviel und wie groß die Athlon64-Register sind, dann doch bitte einfach in die entsprechende Doku des Prozessors schauen und nicht davon ausgehen, wie es sein könnte.
FULL ACK.
-
Jochen Kalmbach schrieb:
Artchi schrieb:
ob es MEHR Register werden, ist doch eine Design-ENTSCHEIDUNG und ist nicht implizit durch die 64bit gegeben.
Wenn man wissen will, wieviel und wie groß die Athlon64-Register sind, dann doch bitte einfach in die entsprechende Doku des Prozessors schauen und nicht davon ausgehen, wie es sein könnte.
FULL ACK.
Ebenfalls volle Zustimmung. Und jetzt schaut man in die Doku und sieht dass im 64 Bit Modus 8 neue 32 Bit Register zur Verfügung stehen, namentlich r8d, r9d, r10d, r11d, r12d, r13d, r14d, r15d. Und nichts anderes habe ich gesagt.
Wahnsinn, ist das hier schon wieder komisch...
-
TactX schrieb:
Hauptsache man weiss, dass ein 64-Bitter genau doppelt so schnell ist :p
doppelt so schnell als ein 63-bitter, ne?
-
net schrieb:
TactX schrieb:
Hauptsache man weiss, dass ein 64-Bitter genau doppelt so schnell ist :p
doppelt so schnell als ein 63-bitter, ne?
eben. von 32 auf 64 Bit Quadriert sich die Geschwindigkeit!
-
Jochen Kalmbach schrieb:
Optimizer schrieb:
Für 32 Bit Werte steht die doppelte Anzahl an Registern zur Verfügung.Aber rechen doch mal nach... dann wirst Du feststellen, dass ich nicht ganz falsch lag...
Und von 32 nach 64 bit einfach davon auszugehen, dass dann "doppelt" so viele Register zur Verfügung stehen, deutet einfach darauf hin, dass man die Architektur der x64 nicht verstanden hat.
[/quote]
Ich denke Optimizer ging auch nicht davon aus, dass dir dann die doppelte Anzahl an Registern zur Verfügung steht, sondern die doppelte Anzahl an Registern für die 32-Bit-Berechnung. D.h., wenn man von einer konstanten Anzahl von Registern beim Wechsel von 32-Bit zu 64-Bit Rechnern ausgeht und die Register jeweils nur auf 64-Bit erweitert, dass dir dann die doppelte Anzahl an Registern für die 32-Bit Berechnung zur Verfügung steht.Bei den I64 wurdend die Register ja jeweils auf 64-Bit erweitert. Du kannst dann sowohl den unteren 32-Bit-Teil des Registers - also EAX - nutzen und den oberen Teil von REX. Oder du packst zwei 32-Bit Zahlen gleich zusammen in den den REX-Register... Jedenfals hast du dann doppelt so viele Register für 32-Bit Verfügung als bei einem 32-Bit Prozessor. Solange man halt keine Register wegkürzt/entfernt hat.
-
Um nicht noch mehr zu spekulieren, hier mal eine Auflistung der Register der jeweiligen Prozessoren:
x86
32-Bit: eax, ebc, ecx, edx, esi, edi, ebp, esp
16-Bit: cs, ds, es, ss, fs, gs
32-Bit: eflags
32-Bit: eip
ST0-ST7, status-, control-, tag-word, data operand pointer, instruction pointer
64-Bit: MM0-MM7 (bzw. R0-R7)
128-Bit: XMM0-XMM7, MXCSR
32-Bit: CR0, CR2, CR3, CR4, GDTR, LDTR, IDTR, task register
32-Bit: DR0-DR3, DR6, DR7x64
Wie x86, ausser dass die e- (jetzt r-), cr- und dr-Register jetzt 64-Bit sind und XMM-Register sind jetzt 16.
Zusätzlich sind noch R8-R15 dazugekommen (jeweils 64-Bit)IA64:
64-Bit: gr0-gr127 (+ 1Bit NaTs)
82-Bit: fr0-fr127
64-Bit: ar0-ar127
1-Bit: p0-p63
64-Bit: br0-br7
64-Bit: IP
38-Bit: CFM
6-Bit User Mask
64-Bit: cpuid0-n
64-Bit: pmd0-n