Easy as PAEWhile theoretically a 32-bit CPU can only see up to 4GB of memory - because it can only count to 4GB with a 32-bit value - that doesn't necessarily mean that's the maximum memory it can use.
Before 64-bit become more mainstream, any decent CPU since the Pentium Pro came with the PAE (Physical Address Extension) feature. PAE effectively maps 36-bits worth of memory to the 32-bit address space and, in the process, extending the maximum addressable range up to 64GB.
It does this through some clever remapping and translation techniques, which come at a cost of a small overhead. Additionally, operating systems and applications need to be PAE-aware to take advantage of the extra memory. Because most applications aren't, the most common way to use PAE is for the operating system to be programmed to use the space above 4GB while applications used memory below - for example, as a large cache for server or database systems.
Today 64-bit CPUs are very affordable and there's not much call for PAE anymore. However, it certainly will have served its place over the years for large systems that required plenty of memory when the 32-bit CPU could only see so much.
Blow your mindThe limitations of 32-bit hardware spill over into the software world, and while there are many examples, perhaps the best is the Unix Millennium Bug, aka the year 2038 problem.
Since the earliest versions of Unix time has been stored as a signed 32-bit integer, with January 1 1970 as the epoch. Back then this probably seemed like a really long way away. But come 2038 time calculations based on Unix time will 'wrap' over and reset, causing what amounts to the hype around the Millennium bug (which ironically Unix systems didn't suffer). Because it's an integer number, we actually know precisely when this will occur: Tue Jan 19, 03:14:07, 2038.
The solution is to migrate to 64-bit systems, which of course is already happening now with both commercial and free server and desktop Linux distributions providing 64-bit versions. It's reasonable to expect, especially with the pace of technology, that 64-bit will most certainly be the standard in 20 years time and that all critical systems will be replaced by then - although some legacy applications may need to be updated as well.
As an aside, one milestone will have occurred around the time you read this: on Feb 13 2009 at 23:31:30, Unix time will be 1234567890 seconds.
What's so mind blowing about all this? Well, you know that 64-bit address space theoretically allows a machine to see up to 16 exabytes of memory, so with time stored in a 64-bit integer, how many extra years will that give us until another rollover happens?
Oh, I think by then we'd have solved the problem of time, and probably even time travel - for a 64-bit integer buys us another 292271023017 years. That's just over 292 billion years, approximately twenty times the age of the universe so far.
I wonder if Atomic will still be around then.
Where'd my RAM go?If 32-bit CPUs can see up to 4GB of memory, how come 32-bit Windows machines only see around 3.2GB? The distinction lies in the terminology - a 32-bit CPU can [i]address[/i] up to 4GB of space, but this isn't the same as 4GB of memory on a system: within that address space must come mappings for all the devices in a PC, including video cards which can have 512M of onboard memory or more. This is why 1G VRAM systems lose a lot of more of the addressable space than single card 512M systems. The only solution is to use a 64-bit CPU and operating system which can easily fit all the 4GB of main memory and all the devices well within its 16 exabyte limit!
What about Games?While it could depend on the game, generally speaking games don't really take advantage of larger word sizes in their processing. Not many games provide 64-bit binaries so it's hard to compare, but a simple test on an 4.5GHz E8600 with SLI GTX280s in Vista x64 using Crysis' own benchmarking tests at 1920 x 1200 showed just a (albeit consistent) 1 fps increase in the CPU1 and CPU2 tests between the 64-bit and 32-bit binaries, and a mere half a frame per second increase in the GPU test.
That's not to say this won't change in future, but it aligns with the type of workloads which would see an improvement on 64-bit, and games don't often come under this.
Issue: 137 | June, 2012