Deorbiting i386

David Chisnall theraven at FreeBSD.org
Fri May 25 07:26:57 UTC 2018


On 25 May 2018, at 05:27, Maxim Sobolev <sobomax at freebsd.org> wrote:
> 
> The idea looks very inmature and short-sighted to me. i386 is here to stay not as a server/desktop platform but as an embedded/low power/low cost platform for at least 5-10 years to come. There are plenty of applications in the world that don't need > 3gb of memory space and have no use for extra bits (and extra silicon) to function.

This argument seems very odd to me.  If you are targeting the embedded space, it is far easier to build a low-power chip that targets the x86-64 ISA than the x86-32 ISA.  You can move all of the 80-bit floating point stuff into microcode.  You can put anything using pair-of-32-bit-register 64-bit operations into slow microcode.  You can skimp on store forwarding for stack addresses.  You actually need fewer rename registers (one of the biggest consumers of power), because x86-64 code needs to do less register juggling to fit in the architectural register space.  All of these things are big consumers of power and area and are far less necessary when running code compiled for x86-64.  You can also do tricks like the one that Intel did on the early Atoms, where the SSE ALUs are actually only 64 bits wide and the 128-bit ops are cracked into pairs of 64-bit micro-ops.

As to ‘not needing more than 3GB of memory space’, that’s what the x32 ABI is for.  This lets you get all of the advantages of the x86-64 ISA (of which there are very many, in comparison to x86-32), without needing 64-bit pointers.  You get the instruction density of x86-64 combined with the data density of x86-32.  This is what Intel and Centaur have been pushing in the embedded space for several years.

You do pay a slight hardware cost from supporting a 48-bit virtual address space, though with superpages that’s negligible and the hardware targeted at these applications often doesn’t support more than a 32-bit virtual address space.  

And this completely ignores the fact that Intel has almost no presence in the low-end embedded space.  AArch32 is vastly more important there and if we dropped x86-32 and shifted that effort to AArch32 then I think we’d see a lot more adoption.

David


More information about the svn-src-head mailing list