Linked by Tony Bourke on Thu 22nd Jan 2004 21:29 UTC
Benchmarks When running tests, installing operating systems, and compiling software for my Ultra 5, I came to the stunning realization that hey, this system is 64-bit, and all of the operating systems I installed on this Ultra 5 (can) run in 64-bit mode.
Permalink for comment
To read all comments associated with this story, please click here.
by Raptor on Fri 23rd Jan 2004 23:28 UTC

Yes, of course. I think we've misunderstood each other. All I'm saying is that if you've got blocks in your cache that are a fixed size and you're using a 64-bit quantity as opposed to a 32-bit quantity you'll use up more blocks holding the 64 bit data. Assume that your cache line holds a number of 64-byte blocks. If you're using 64-bit quantities you can old hold 8 words/block (64-bit words), but if you're using 32-bit quantities your cache block can hold 16 words (32-bit words). If you could previously store 16 32-bit items, now you can only store 8 64-bit items, your per/item ability to use the cache has decreased. You're right that the size itself has not decreased, but you can now hold fewer items. Obviously the 8 64-bit quantities are size equivalent to the 16 32-bit ones, but you've halved you're ability to access objects in the cache.

Yes what you just described is true to a certain extent. However, in practice every data type on a 64-bit binary is not 64-bit only. 64-bit binaries might have 8,16,32 bit data objects in them and caches do allow you to address a byte in a cache line. All I am getting at is that it is not very accurate to say that 64-bit addressing automatically yields poorer performance due to higher cache-misses than a 32-bit binary. It is possible in the scenario you describe above.

In reality not every one who codes a 64-bit program makes all the data 64-bit quantities.