Originally posted by: Vee
Originally posted by: Viditor
Originally posted by: ahock
I dont think 64 bit CPu is of any use for notebook today or even on desktop. How many laptop and even desktop offer more that 4GB of system memory?
64 bit will only be useful once you exceed 4GB memory and that will not come in the near future, worst on laptop.
Actually, that's not quite true...even at 2GB, 64 bit will have much better performance due to the limits of virtual addressing on 32 bit. Read the post I linked and you'll understand why...
Viditor, you may have slightly misunderstood a couple of details. Regardless, let me try to be clear about a couple of things.
The idea that 64-bit will only be useful above 4 GB memory is indeed wrong. But that is because the true limit is in fact lower. ~1.7 - 1.8 GB (absolute limit is 2 GB) for a normal Windows32 application and ~2.5 GB for an application that uses the 3GB switch.
This is where a Windows32 application will run out of memory. It will not continue to run. And it makes no difference how much RAM you have installed, 1GB or 4GB, it makes no difference because this is not an issue with hardware memory.
(If you have less hardware RAM than you need, you will have a drastic drop in performance since you will rely more on hd swap and have a lot of disk activity. This is an old wellknown thing and has nothing to do with 32 vs 64 bit.)
You
can have 32-bit software that can use more memory than our current Windows32. And you can have an OS that runs such 32-bit software. And if we had that, it would perform worse than 64-bit software, yes. But we do not have that. Windows32 applications and our normal varieties of Windows cannot do this. And we will not go that way. Instead of adobting a segmented 32-bit program model to replace our current Windows and Linux software, we will instead adobt a 64-bit program model.
****
On a different issue, that I also touched - the fragmentation of virtual space, the OS cannot fix this transparently for the application. The application can try fix this itself. The API provides for moving memory blocks. But a straight program will just terminate with an out-of-memory error.
So in practice it's not much of a performance issue. 32-bit programs will simply stop running. It
would have become a performance issue
if we had chosen to go forward with replacing our current 32-bit software with a new different 32-bit program model instead of a new different 64-bit program model.
Beside the inherent general superiority of 64-bit addressing, a linear 64-bit model is also much more similar to our current linear 32-bit model than a segmented model would be. So it's easier to port to 64-bit as well.
****
(32 vs 64 bit is also an performance issue due to different reasons. We have a new ISA. With twice the number of visable registers, and the gp registers are truly gp, all of them. So a compiler that is able to optimize for this will produce somewhat faster executables.)