64-bit Kernel Question

Nifty Fedora Mitch niftyfedora at niftyegg.com
Thu Mar 12 05:17:25 UTC 2009


On Mon, Mar 09, 2009 at 12:49:09PM -0700, Adam Williamson wrote:
> > As memory requirements for 64-bit are anywhere from 50-100% greater and 
> > the only appreciable difference is a "psychological" performance boost, what 
> > REAL benefit is there, actually?
> 
> It's not psychological, it's just not noticeable in most regular
> operations. Actually, most people wouldn't notice if you replaced their
> CPU with one which was twice as fast (or, as the BOFH knows, half as
> fast...), most of the time, because very few of the operations most
> people do day-to-day are remotely CPU-bound. A few years ago I was
> running a 2.4GHz (Pentium 4-era) Celeron as my desktop. The CPU fan gave
> out, so the CPU throttled itself down to 800MHz and kept running. I
> didn't notice for a fortnight.
> 
> The most common CPU-bound operation in our world, I guess, is
> compilation, and you would notice a definite improvement in speed there,
> running x86-64 vs x86-32 - not huge, but noticeable. Certain database
> and I think scientific operations that are CPU-bound also derive a
> significant benefit. It depends on whether the code can take advantage
> of much bigger registers, AIUI.

There are some interesting differences between 32bit and 64bit x86  boxes.

 *) calling conventions for the compiler's ABI are richer/ better in x86_64 because
	of the larger set of registers.  i.e. more can be passed and returned
	via registers and less has to be pushed/popped on and off the stack.
	Here the win is for 64bit.  Google "compiler register spills" for more
	info...

 *) pointer arithmetic is more memory intensive as data structures full of
	pointers double in size in the 64bit world.  Here 32bit can win.

Closer to the real point...

 *) floating point instruction and data scheduling combined with twice as many MMX registers
	have a more natural place on 64bit engines.

 *) Pipeline optimization opportunities that improved ABI conventions and 
	register count permits.  See:  
	http://www.geek.com/articles/chips/what-is-a-processors-pipeline-20060210/

 *) compilers matter.

Short of a full blown book on the topic there is no good way to explain all
the details..

Suffice to say that a pipeline that is 20+ stages long when well fed can 
do a lot of computation.  Think of registers as cheeks on a squirrel.  Fill
the cheeks up and off the little guy goes to eat them or hide them away.
If only one cheek was allowed in 32bit mode and both cheeks in 64bit mode 
64bit modes can move more data.   Then there are teeth and stomachs to do
the processing...... on modern processors there is a 'nest' full of hungry
mouths to feed all in parallel.




-- 
	T o m  M i t c h e l l 
	Found me a new hat, now what?




More information about the fedora-test-list mailing list