[RC5] More about 64bit clients

Fuzzy Logic fuzzymo at gmail.com
Wed Aug 24 18:17:45 EDT 2005


Look, there is no need to be rude. I do developement on both 32- and
64-bit platforms and had observed the general rule of better
performance on 32-bit platforms.

Yes, I read your posts. You surmised that it was due to larger
registers. You NEVER mentioned that the cores were optimized for
particular processors and I hadn't considered that in my thinking
process, since when I looked at the cores, I didn't notice a
differentiation for different x86 compatible processor types.

You said:

"Do your 64-bit platforms have twice as many registers as the 31-bit
platforms?"

and then when I replied that they had the same number, you said:

"Well that's the point. x86-64 has 16 registers while ordinary x86 has
8. (actually one is the stack pointer, so it's more like 15 vs. 7).

There's the source of extra performance in x86-64."

Hardly what I would call any sort of authoritative answer. More
registers doesn't necessarily result in faster code. It's how you USE
them that counts.

My thinking was based on the following:

64-bit instructions are longer (generally) so fewer will fit into a
1st level instruction cache, which would make it harder to optimize a
narrow loop. Having to hit the second level cache for instructions is
much slower.

64-bit instructions read and write larger chunks of data, which
effectively shrinks the size of the first and second level cache (in
much the same way as cache misses for instructions).

64-bit instructions often take more cycles to complete than similar
32-bit instructions.

Now, please remember in the future that just because someone makes a
general comment, they are not necessarily ignorant about the subject
at hand. I have many years of experience in hardware, and only a few
years experience with d.net, and only a few minutes worth of
experience looking at the source code for the cores.

I stand by my statement. In general, 64-bit is slower than 32-bit.
However, that doesn't mean that it is ALWAYS slower.

Also, something I find interesting... you cut the portion of my
message where I stated that I was unsure because I hadn't tried it for
myself. Perhaps that would have made your reply look bad? Something to
think about.

Fuzzy

On 8/24/05, Décio Luiz Gazzoni Filho <decio at decpp.net> wrote:
> 
> On Aug 24, 2005, at 5:36 PM, Fuzzy Logic wrote:
> 
> > Actually, I'm not surprised. Often, the 64-bit version of applications
> > performs slower than the 32-bit version.
> 
> I take it my answer on x86-64's performance improvements just went
> over your head?
> 
> I would guess one of these:
> 
> 1. the existing cores are either all optimized for one CPU (say
> Athlon 64) and he's got a different one (say Pentium 4)
> 2. the cores were written for scratch instead of based on an existing
> 32-bit core and hence can't compete with the current 32-bit cores
> (unlikely)
> 3. the cores were based on an older version of a 32-bit core, and new
> ones were written and not ported to 64 bits, and the 32-bit cores are
> holding the lead now.
> 
> What I would never guess is that there's something inherently slower
> about x86-64 that makes running the core slower. At best the code
> from the fastest 32-bit code could be copied verbatim and should
> perform as quickly on the 64-bit binary as in the 32-bit binary.
> 
> You could do better than publicly display your ignorance in this topic.
> 
> Décio


More information about the rc5 mailing list