3 ms·
>That's bullshit, at least on AMD64. "Because the full 32-bit instruction set remains implemented in hardware without any intervening emulation, existing 32-bit
by cube13 15y ago
>That's bullshit, at least on AMD64. "Because the full 32-bit instruction set remains implemented in hardware without any intervening emulation, existing 32-bit x86 executables run with no compatibility or performance penalties" [0]
Which is true if you're running a 32-bit kernel on top of the 64-bit processor.
If you're running a native 64-bit kernel, then the kernel needs a 32-bit emulated layer that runs between the native kernel and the userland application that handles virtual memory address translations(32-bit executables are still limited to 4 gigs of RAM, but can be physically located anywhere), system call translations, etc. That's a potential performance hit.
- copper 15y agoYou also need to keep 32-bit and 64-bit shared libraries, and then keep them (more or less) in sync - admittedly, linux distros do manage that more or less invisibly. Mind you, when it comes to nvidia cards and the claims that newer versions of flash make about hardware video decoding, it's not funny anymore.
- greyfade 15y agoThere's no emulated layer. The CPU offers a 32-bit compatibility mode that works akin to 8086 virtual mode on earlier processors. The 64-bit kernel just sets a few flags and drops to 32-bit mode, switches tasks and goes. No overhead.