Why is this so?
Assuming you are using a proper OS (a *nix like GNU/Linux) that doesn't artificially limit the amount of available system memory (Windows), you can let the OS use PAE, which is supported by all modern CPUs since at least Pentium II. That way you can have up to 64GB of RAM on any 32-bit system. Enough for today, tomorrow, and whole of next year.
But 64-bit architecture can handle twice as much data in the same amount of clock cycles, you say.
That's true. It can handle twice as many ZEROS. All upper 32 bits will be set to 0 most of the time:
- Program segments that operate on strings and characters work with bytes (only lower 8 bits used in each register).
- Program segments that operate on integers (e.g. size_t counters in C) rarely count upwards of 4.2e9.
- Where preciseness is needed, double precision floats are used anyway, and
- program pointers (just being, pointing to memory locations), oh, well, they are randomized across the 2**64 range.
Any benefit gained from increased number of available registers is soon hindered by increased memory traffic since all the pointer-heavy structures are now double in size.
The ONLY reason to run 64-bit is if you intend to run processes that require over 4GB RAM each. So indeed, there is a limitation of 4GB RAM per process. But in my humbling experience, that hardly ever comes into pass since large data is normally processed sequentially anyway (think large multimedia file playback, seeking database records, etc. everything). YMMV.
The ONLY real reason to use 64-bit is if you are encoding/rendering/hashing/compressing/processing stuff a lot; that way you're looking at decreasing the required time proportionally by half, depending on the implementation.
32-bit OS with 4GB RAM has allowed me to have hundreds of different application windows open and running smoothly at the same time (think apps like LibreOffice, Pidgin IM, dozens of terminal windows with Python processes running within, a tabbed code editor, Eclipse, GiMP, calculator, Chromium, Opera and Firefox with —not kidding— hundreds of open tabs, tens of colorful PDFs, WinAmp for Linux, VLC, VirtualBox-es ...). All that without ever touching my swap! I challenge you to try that on a 64-bit OS. Please report your findings. :)
Except in very special cases, 32-bit desktop owns 64-bit for the foreseeable future. Everything else is monopoly of the giants.
Update: Seems like Donald Knuth agrees (Ctrl+F for "Flame About 64-bit Pointers"), and there is some WiP to make Linux have the best of both worlds. The associated kernel and glibc updates should hit your favorite distro sometime in the next Debian cycle. Given the available performance reports, only then will it make complete sense to switch to x86_64 desktop even when you have less than 8GB RAM.