For memory-constrained systems, this could result in significantly better memory efficiency on x86_64 CPUs. In particular, I am interested in whether the x86 Android tablets that are planned (using Intel Atom processors) are going to take advantage of this.
Basically, you get all the advantages of the x86_64 architecture, but none of the disadvantages. The main disadvantage being, that pointers take up twice as much memory. So for pointer-heavy code (and what code isn't pointer-heavy these days), all those 64-bit integers vs. 32-bit integers start to add up. Especially if your total system memory is in the range of 512 MB - 2 GB, as is the case with mobile devices.
You could ship x86_64 Atom processors, technically capable of executing the full 64-bit ISA, and use 32-bit pointers to save memory. This sounds like a win-win.
On the desktop, this will only introduce problems. We already have an x86/x86_64 split on multi-lib Debian and Fedora systems; we use naming conventions like /usr/lib for 32-bit and /usr/lib64 for 64-bit (Red Hat distros), or /usr/lib for 64-bit and /usr/lib32 for 32-bit (Debian distros). Ubuntu is trying to lead the charge with proper multi-lib support by having /usr/lib/OMG-I-AM-AN-AWFUL-AND-REALLY-LONG-ARCHITECTURE-NAME/ directories, which would work perfectly fine on a tri-arch x86, x32, x86_64 system. But that seems really complicated. Three versions of each library? Ugh. You blow all your RAM savings just having all those versions loaded in memory.
An x32 kernel, in particular, seems like it'll be fraught with problems for the desktop. Presumably you won't be able to load x86_64 kernel modules into an x32 kernel, because of the pointer size difference; you also won't be able to load x86 kernel modules into an x32 kernel, because of the ISA differences. So if you need to depend on any code -- tainted or otherwise -- that isn't designed to compile (in the case of open source) or link (in the case of binaries) with the x32 ISA, you can't use it. You're stuck with the traditional x86 or x86_64.
So while I see enormous benefit for this on "pure" x32 embedded systems and mobile devices, I think most people with >= 4GB RAM on a desktop or full-fat laptop are probably not going to care about all the extra compatibility work they'll have to do, just to save 50 - 100 megs (optimistically) in memory overhead from x86_64. Oh, and your industrial-sized workstation apps that really do use up > 4GB RAM are still going to run OOM on x32.![]()


Reply With Quote

