News Focus
News Focus
icon url

kpf

09/01/03 11:57 AM

#12485 RE: aixman #12475

aixman

Nope. Recompiling the code in 64 bits should get you 0-15% slowdown. That is normal due to the larger variables. Extra registers on AMD64 give some of the lost performance back, sometimes more than what was lost when going to 64 bits. System libraries is the OS concern, and it seems like they can add a little to the slowdown. However, all this is well worth the extra address space!

Hmm. "Slowdown", "system libraries can add to slowdown", "extra registers on AMD-64 give some of the lost performance back".

I am sure what you say is accurate as we can see exactly this picture in the benchmarks for AMD-64 versus 32-bit code.

Maybe I made an even bigger misconception? There is no development to expext here at all? That's really it? I am kind of alert now...

Hell, if the public audience will perceive it like that, their questions would certainly be
"Where is the beef with all this AMD-64 thing?"
"That's what you really want me to pay a premium for?"

Could you elaborate what exactly is the benefit of the extra adress space for the users of AMD-64? (I'm pretty sure they would not care at all of what the benefits are from a programmer's viewpoint).

Thanks.




icon url

DDB

09/01/03 1:34 PM

#12494 RE: aixman #12475

Nope. Recompiling the code in 64 bits should get you 0-15% slowdown. That is normal due to the larger variables. Extra registers on AMD64 give some of the lost performance back, sometimes more than what was lost when going to 64 bits. System libraries is the OS concern, and it seems like they can add a little to the slowdown. However, all this is well worth the extra address space!

It's no problem to use 32bit int everywhere. And if you define "int" variables then these should be 32bit. Recompiled apps will still use 32bit then. BTW using them doesn't require a REX prefix byte for the first 8 regs. Below I listed some URLs where you can verify the effect of 8 additional regs both for Int and FP code.

Most pointers and address immediate values are 64bit then - that has the disadvantages that it needs more bytes in the cache and it could push some code bytes out of a decoder window (resulting in less decoded instructions during that cycle).

I'd like to see what GCC and PGI will produce for 64bit mode when their produced code matches the performance of the Intel compilers on the same platform (32bit). And we don't have results for any .NET compilers.

Regards,
DDB

http://www.digit-life.com/articles2/insidespeccpu/insidespeccpu2000-opteron2.html
http://www.ixbt.com/cpu/cpu-spec2k/pc2/gcc_int.swf
http://www.ixbt.com/cpu/cpu-spec2k/pc2/gcc_fp.swf
http://www.ixbt.com/cpu/cpu-spec2k/pc2/pgi_int.swf
http://www.ixbt.com/cpu/cpu-spec2k/pc2/pgi_fp.swf

icon url

sgolds

09/01/03 1:44 PM

#12498 RE: aixman #12475

aixman,

Recompiling the code in 64 bits should get you 0-15% slowdown. That is normal due to the larger variables.

It shouldn't. AMD64 treats long as a 32-bit variable and longlong as 64-bits. So most variables should not change.