Nu Intel's Xeon (en later de desktop modellen) 64-bit extensies krijgt, en er tijdens de presentatie ervan op het IDF eigenlijk alleen duidelijk werd gemaakt dat IA32E compatible is met AMD64, was het eigenlijk nog niet helemaal duidelijk of er dan ook verschillen zouden zijn. Onder andere ook door deze opmerking:
"For the most part, (software) will run on both systems," he said. "Intel has some (things) unique to Intel, which we will make sure people write, port and tune to."
Op het forum van Aceshardware zijn ze in de
documentatie van IA32E gedoken, en wat blijkt? IA32E is
identiek aan AMD64 op 1 instructie na (een
extra instructie):
| ‘The following instructions are being introduced to operate in 64-bit mode with 64-bit extensions’ |
• SWAPGS instruction (Also in AMD64):
SWAPGS exchanges the current GS base register value with the value contained in MSR address C0000102H (MSR_KERNELGSbase). The SWAPGS instruction is a privileged instruction intended for use by system software. |
• SYSCALL and SYSRET instructions (Also in AMD64)
SYSCALL saves the RIP of the instruction following the SYSCALL into RCX and loads the new RIP from the LSTAR (64-bit mode). Upon return, SYSRET copies the value saved in RCX into the RIP. SYSRET uses the CS value found in SYSRET_CS (MSR STAR[63:48]). In a return to 64-bit mode using Osize 64, et-cetera |
• CDQE instruction (Also in AMD64)
Sign-extend EAX into RAX. |
• CMPSQ instruction (Also in AMD64)
Compares quadword at address RSI with quadword at address RDI and sets the status flags accordingly |
• CMPXCHG16B instruction (NOT in AMD64)
Compare and Exchange 16 Bytes: Compare RDX:RAX with m128. If equal, set ZF and load RCX:RBX into m128. Else, clear ZF and load m128 into RDX:RAX. |
• LODSQ instruction (Also in AMD64)
Load String: Load qword at address (R)SI into RAX. |
• MOVSQ instruction (Also in AMD64)
Move Data from String to String: Move qword from address (R)SI to (R)DI. |
• MOVZX instruction (Also in AMD64)
Move with Zero-Extend |
• STOSQ instruction (Also in AMD64)
Store String: Store RAX at address RDI |
Dus IA32E heeft de instructie CMPXCHG16B extra.
Voor de rest zijn de verschillen tussen de 64 bit Hammer reeks en de 64 bit Prescott reeks:
• Bij de Prescott ontbreekt NX (Execution Protection) en 3DNow!
• Bij de Hammer ontbreekt CMPXCHG16B en SSE-3.
In 3DNow! zitten trouwens instructies die Intel nog niet had, en nu dus pas in SSE-3 aanbied.
Qua instructies zijn de CPU's dus zo goed als identiek (Met dank aan Microsoft?).