IA-32e 64-Bit Extension Mode (x64, AMD64, x86-64, EM64T)
64-bit extension mode is an enhancement to the IA-32 architecture originally designed by AMD and later adopted by Intel.
In 2003, AMD introduced the first 64-bit processor for x86-compatible desktop computers—the Athlon 64—followed by its first 64-bit server processor, the Opteron. In 2004, Intel introduced a series of 64-bit-enabled versions of its Pentium 4 desktop processor. The years that followed saw both companies introducing more and more processors with 64-bit capabilities.
Processors with 64-bit extension technology can run in real (8086) mode, IA-32 mode, or IA-32e mode. IA-32 mode enables the processor to run in protected mode and virtual real mode. IA-32e mode allows the processor to run in 64-bit mode and compatibility mode, which means you can run both 64-bit and 32-bit applications simultaneously. IA-32e mode includes two submodes:
- 64-bit mode—Enables a 64-bit OS to run 64-bit applications
- Compatibility mode—Enables a 64-bit OS to run most existing 32-bit software
IA-32e 64-bit mode is enabled by loading a 64-bit OS and is used by 64-bit applications. In the 64-bit submode, the following new features are available:
- n64-bit linear memory addressing
- nPhysical memory support beyond 4GB (limited by the specific processor)
- nEight new general-purpose registers (GPRs)
- nEight new registers for streaming SIMD extensions (MMX, SSE, SSE2, and SSE3)
- n64-bit-wide GPRs and instruction pointers
IE-32e compatibility mode enables 32-bit and 16-bit applications to run under a 64-bit OS. Unfortunately, legacy 16-bit programs that run in virtual real mode (that is, DOS programs) are not supported and will not run, which is likely to be the biggest problem for many users, especially those that rely on legacy business applications or like to run very old games. Similar to 64-bit mode, compatibility mode is enabled by the OS on an individual code basis, which means 64-bit applications running in 64-bit mode can operate simultaneously with 32-bit applications running in compatibility mode.
What we need to make all this work is a 64-bit OS and, more importantly, 64-bit drivers for all our hardware to work under that OS. Although Microsoft released a 64-bit version of Windows XP, few companies released 64-bit XP drivers. It wasn’t until Windows Vista and especially Windows 7 x64 versions were released that 64-bit drivers became plentiful enough that 64-bit hardware support was considered mainstream.
Note that Microsoft uses the term x64 to refer to processors that support either AMD64 or EM64T because AMD and Intel’s extensions to the standard IA32 architecture are practically identical and can be supported with a single version of Windows.
Note: Early versions of EM64T-equipped processors from Intel lacked support for the LAHF and SAHF instructions used in the AMD64 instruction set. However, Pentium 4 and Xeon DP processors using core steppings G1 and higher completely support these instructions; a BIOS update is also needed. Newer multicore processors with 64-bit support include these instructions as well.
The physical memory limits for Windows XP and later are shown in the table below:
|Windows Version||Memory Limit|
|8 Enterprise/Professional||512 GB|
|7 Profession/Ultimate/Enterprise||192 GB|
|Vista Business/Ultimate/Enterprise||128 GB|
|Vista/7 Home Premium||16 GB|
|Vista/7 Home Basic||8 GB|
|XP Professional||128 GB|
|XP Home||4 GB|
The major difference between 32-bit and 64-bit Windows is memory support—specifically, breaking the 4 GB barrier found in 32-bit Windows systems. 32-bit versions of Windows support up to 4 GB of physical memory, with up to 2 GB of dedicated memory per process. 64-bit versions of Windows support up to 512 GB of physical memory, with up to 4 GB for each 32-bit process and up to 8 TB for each 64-bit process. Support for more memory means applications can preload more data into memory, which the processor can access much more quickly.
Note: Although 32-bit versions of Windows can support up to 4 GB of RAM, applications cannot access more than about 3.25 GB of RAM. The remainder of the address space is used by video cards, the system ROM, integrated PCI devices, PCI and PCIe cards, and APICs.
64-bit Windows runs 32-bit Windows applications with no problems, but it does not run 16-bit Windows, DOS applications, or any other programs that run in virtual real mode. Drivers are another big problem. 32-bit processes cannot load 64-bit dynamic link libraries (DLLs), and 64-bit processes cannot load 32-bit DLLs. This essentially means that, for all the devices you have connected to your system, you need both 32-bit and 64-bit drivers for them to work. Acquiring 64-bit drivers for older devices or devices that are no longer supported can be difficult or impossible. Before installing a 64-bit version of Windows, be sure to check with the vendors of your internal and add-on hardware for 64-bit drivers.
Tip: If you cannot find 64-bit drivers designed for Windows Vista or Windows 7, look for 64-bit drivers for Windows XP x64 edition. These drivers often work very well with later 64-bit versions of Windows.
Although vendors have ramped up their development of 64-bit software and drivers, you should still keep all the memory size, software, and driver issues in mind when considering the transition from 32-bit to 64-bit technology. The transition from 32-bit hardware to mainstream 32-bit computing took 16 years. The first 64-bit PC processor was released in 2003, and 64-bit computing really didn’t become mainstream until the release of Windows 7 in late 2009.