Mason asked about the advantages of a 64-bit processor.
Well, an obvious disadvantage is that you have to move more bits around. And given that memory accesses are a serious issue these days[1], moving around twice as much memory for a fair number of operations can’t be a good thing.
But how bad is the effect of this, really? And what makes up for it? Or should I be running all my small apps on 32-bit machines?
I should mention that I’m considering, in particular, the case where one has a choice of running 32- or 64-bit on the same machine, so in either mode the bandwidth to main memory is the same.
[1]: And even fifteen years ago, for that matter. I remember talk as far back as that about good cache behaviour, and also particularly that the Alpha CPUs that won all the benchmarks had a giant, for the time, 8 MB of L2 cache.
Most 64-bit programming environments use the “LP64” model, meaning that only pointers and
long intvariables (if you’re a C/C++ programmer) are 64 bits. Integers (ints) remain 32-bits unless you’re in the “ILP64” model, which is fairly uncommon.I only bring it up because most
intvariables aren’t being used forsize_t-like purposes–that is, they stay within ranges comfortably held by 32 bits. For variables of that nature, you’ll never be able to tell the difference.If you’re doing numerical or data-heavy work with > 4GB of data, you’ll need 64 bits anyways. If you’re not, you won’t notice the difference, unless you’re in the habit of using
longs where most would useints.