...A 32-bit register meant that 232 addresses, or 4 gibibytes
, could be referenced. At the time these architectures were devised, 4 gibibytes of memory was so far beyond the typical quantities available in installations that this was considered to be enough "headroom" for addressing. 4-gibibyte addresses were considered an appropriate size to work with for another important reason: 4 billion integers are enough to assign unique references to most physically countable things in applications like databases
. However, with the march of time and the continual reductions in the cost of memory (see Moore's Law
), by the early 1990s
installations with quantities of RAM approaching 4 gibibytes began to appear, and the use of virtual memory spaces exceeding the 4-gibibyte ceiling became desirable for handling certain types of problems. In response, a number of companies began releasing new families of chips with 64-bit architectures, initially for supercomputers
and high-end workstation
machines. 64-bit computing has gradually drifted down to the personal computer desktop, with some models in Apple
's Macintosh lines switching to PowerPC 970 processors (termed "G5" by Apple) in 2003 and to 64-bit EM64T processors in 2006, and with x86-64 processors becoming common in high-end PCs
. The emergence of the 64-bit architecture effectively increases the memory ceiling to 264 addresses, equivalent to 17,179,869,184 gibibytes or 16 exbibytes
- Some operating systems reserve portions of process address space for OS use, effectively reducing the total address space available for mapping memory for user programs. For instance, Windows XP DLLs and userland OS components are mapped into each process's address space, leaving only 2 to 3.8 GB (depending on the settings) address space available, even if the computer has 4 GiB of RAM. This restriction is not present in 64-bit Windows.
- Memory mapping of files is becoming less useful with 32-bit architectures, especially with the introduction of relatively cheap recordable DVD technology. A 4 GB file is no longer uncommon, and such large files cannot be memory mapped easily to 32-bit architectures; only a region of the file can be mapped into the address space, and to access such a file by memory mapping, those regions will have to be mapped into and out of the address space as needed. This is an issue, as memory mapping remains one of the most efficient disk-to-memory methods, when properly implemented by the OS...