64-bit computing

In computer architecture, 64-bit integers, memory addresses, or other data units[a] are those that are 64 bits wide.

From the software perspective, 64-bit computing means the use of machine code with 64-bit virtual memory addresses.

64 bits is a word size that defines certain classes of computer architecture, buses, memory, and CPUs and, by extension, the software that runs on them.

64-bit CPUs have been used in supercomputers since the 1970s (Cray-1, 1975) and in reduced instruction set computers (RISC) based workstations and servers since the early 1990s.

When these architectures were devised, 4 GB of memory was so far beyond the typical amounts (4 MiB) in installations, that this was considered to be enough headroom for addressing.

[4] However, 32 bits remained the norm until the early 1990s, when the continual reductions in the cost of memory led to installations with amounts of RAM approaching 4 GB, and the use of virtual memory spaces exceeding the 4 GB ceiling became desirable for handling certain types of problems.

In response, MIPS and DEC developed 64-bit microprocessor architectures, initially for high-end workstation and server machines.

High-end printers, network equipment, and industrial computers also used 64-bit microprocessors, such as the Quantum Effect Devices R5000.

[6] 64-bit computing started to trickle down to the personal computer desktop from 2003 onward, when some models in Apple's Macintosh lines switched to PowerPC 970 processors (termed G5 by Apple), and Advanced Micro Devices (AMD) released its first 64-bit x86-64 processor.

[32] The DEC Alpha specification requires minimum of 43 bits of virtual memory address space (8 TB) to be supported, and hardware need to check and trap if the remaining unsupported bits are zero (to support compatibility on future processors).

[34] One significant exception to this is the IBM AS/400, software for which is compiled into a virtual instruction set architecture (ISA) called Technology Independent Machine Interface (TIMI); TIMI code is then translated to native machine code by low-level software before being executed.

While the larger address space of 64-bit architectures makes working with large data sets in applications such as digital video, scientific computing, and large databases easier, there has been considerable debate on whether they or their 32-bit compatibility modes will be faster than comparably priced 32-bit systems for other tasks.

Applications such as multi-tasking, stress testing, and clustering – for high-performance computing (HPC) – may be more suited to a 64-bit architecture when deployed appropriately.

For this reason, 64-bit clusters have been widely deployed in large organizations, such as IBM, HP, and Microsoft.

For example, the z/OS operating system takes this approach, requiring program code to reside in 31-bit address spaces (the high order bit is not used in address calculation on the underlying hardware platform) while data objects can optionally reside in 64-bit regions.

The most severe problem in Microsoft Windows is incompatible device drivers for obsolete hardware.

Because 64-bit drivers for most devices were unavailable until early 2007 (Vista x64), using a 64-bit version of Windows was considered a challenge.

However, the trend has since moved toward 64-bit computing, more so as memory prices dropped and the use of more than 4 GB of RAM increased.

Support for hardware made before early 2007, was problematic for open-source platforms,[citation needed] due to the relatively small number of users.

64-bit users are forced to install a virtual machine of a 16- or 32-bit operating system to run 16-bit applications or use one of the alternatives for NTVDM.

This source-based distribution model, with an emphasis on frequent releases, makes availability of application software for those operating systems less of an issue.

[48][49] However, in most cases the modifications required are relatively minor and straightforward, and many well-written programs can simply be recompiled for the new environment with no changes.

It is common in 64-bit RISC machines,[citation needed] explored in x86 as x32 ABI, and has recently been used in the Apple Watch Series 4 and 5.

[51][52] Many 64-bit platforms today use an LP64 model (including Solaris, AIX, HP-UX, Linux, macOS, BSD, and IBM z/OS).

A programming model is a choice made to suit a given compiler, and several can coexist on the same OS.

Hex dump of the section table in a 64-bit Portable Executable File. A 64-bit word can be expressed as a sequence of 16 hexadecimal digits.