On Tue, 2003-11-11 at 15:37, Peter Bergner wrote: > Kevin B.Hendricks wrote: > > One question, why do 32 bit apps run faster than 64 bit apps, is it all > > of the memory accesses needed to load 64 bit immediate and other data > > when restricted to 32 bit instruction lengths? > > Yes, on powerpc64-linux, it takes 5 instructions to load a 64-bit > immediate and/or address.
That's in the fully general case, assuming you don't do it with ONE instruction via a load involving the GOT or some such. Typically sign-extension or zero-extension will cut that down. > On powerpc-linux, it takes only 2. > This makes for a better icache footprint. The powerpc64-linux > ABI also defines a TOC which also adds a little overhead. This is > the reason 32-bit executables are the default on ppc64 systems. It sounds like a reason to get a new ABI. There's no reason we have to blindly follow OS/400. Starting a new port with a bad ABI is not the most forward-looking thing to be doing. > On Opteron, 32-bit executables have the same icache footprint benefit > compared 64-bit executables. However, on Opteron, unlike ppc64, 64-bit > executables have access to twice the number of registers that 32-bit > executables have access too. On a register starved arch like x86, > access to twice the number of regs is a huge win. There's no architectural reason preventing the use of all of the Opteron's 64-bit registers with an ILP32 programming model. SGI did this for MIPS. The same goes for PowerPC. You wouldn't gain as much, but a faster "long long" is nice.

