Over the last year, CPUs extending the IA-32 instruction set to 64 bits have hit the streets. There are two incarnations of it, AMD’s AMD64 and Intel’s EM64T. While very similar, there are in fact a few differences between the two. Not huge differences, but they do exist.
First let’s discuss what CPUs have what capabilities. Here’s a brief list:
- AMD Athlon K7: 32 bit Integer, 32 bit addressing
- AMD Athlon 64 “Clawhammer”: 64 bit Integer, 48 bit logical addressing, 40 bit physical addressing, NX bit, PAE36 and PSE36 for 32 bit mode
- AMD Opteron “Sledgehammer”, “Winchester”: 64 bit Integer, 48 bit logical addressing, 40 bit physical addressing, NX bit, PAE36 and PSE36 for 32 bit mode
- Intel Pentium III: 32 bit Integer, 32 bit addressing, PAE36 and PSE36
- Intel Pentium 4 “Williamette” and “Northwood”, Xeon “Foster” and “Prestonia” and Xeon MP “Galatin”: 32 bit Integer, 32 bit addressing, PAE36 and PSE36
- Intel Pentium 4 “Prescott”: 32 bit Integer, 32 bit addressing, PAE36 and PSE36
- Intel Pentium 4 F “Prescott”, Xeon “Nocona”: 64 bit Integer, 48 bit logical addressing, 40 bit physical addressing, NX bit, automatic clock control for power savings, PAE36 and PSE36 for 32 bit mode
- Intel Pentium 4 “Prescott” E0 stepping (Pentium 4 5xxJ): 32 bit Integer, 32 bit addressing, PAE36 and PSE36, NX bit, automatic clock control for power savings
For the crib sheet to that, 64 bit Integer calculations are one of the things that make 64 bit CPUs so great – they can make 64 bit calculations in hardware rather than emulating it with a bunch of 32 bit calculations. The address space is the logical address space the CPU can handle. The AMD64 and EM64T CPUs do not have a full 64 bits of address space, as they won’t need it for a while. They use 64 bit addresses and truncate them internally to save on die space.
PSE36 and PAE36 are technologies that allow programs to use 36 bits (64 Gigabytes) of memory on a 32-bit CPU. Intel has used it for years now to extend the memory capability of its Xeon line, although it is somewhat hackish by necessity. PSE36 is the technology that allows for 36 bits of virtual address space and PAE36 for 36 bits of physical address space. A program may use one or both of these.
The 40 bit physical memory addressing means a maximum of 1 TB physical memory, coupled with 256 TB of logical address space (this includes virtual memory and allows for tons of large, contiguous blocks of unused address space). Remember, a logical address does not necessarily need to match up with the same physical memory address.
The automatic clock control will be of over clocking interest, as it means the CPU will have a few unlocked multipliers. By purchasing a 200 (800) FSB Pentium 4 with this technology, one could turn down the multiplier and turn up the CPU speed by increasing the bus to 266 (1066) FSB while still having all expansion busses running in sync.
Of course, you may be wondering about the availability of said processors. All of them except the Pentium 4 F series are pretty available, as those are server processors.
There are some common misconceptions about AMD64 and EM64T being true 64 bit CPUs. Some say that only AMD64 is true 64 bit, while others argue that both are. The correct answer is that neither of them are, at least not by a strict definition. To be fully 64 bit, a CPU must meet a few criteria:
- 64 bit Integer calculations in hardware. Both K8 and Prescott E0 have this capability.
- 72 bit IEEE-1180 Floating Point calculations in hardware. Virtually all CPUs have this.
- 64 bit virtual address space. Neither K8 nor Prescott E0 have this capability.
There are a few true 64 bit CPUs around, but for all intents and purposes the Intel and AMD CPUs are both 64 bit. However, the argument stems from their different approaches to this. K8 extends 32 bit to 64 and allows use of more registers and more computation units, making it perform better in 64 bit than 32. Prescott extends its existing 32 bit capability to 64 bit in a more traditional manner, making 64 bit calculations run modestly slower than 32 bit. Traditionally, all CPUs when going to 64 bit have used this method. The third is used by the Itanium and Itanium only, which is a CPU that only has a 64 bit mode and must use an older 32 bit instruction set when operating in 32 bit mode at a significant performance penalty.
So now that we’ve gotten that out of the way, using the common definition you may ask what 64 bit CPUs are available. There’s a short list:
- Intel Pentium D.
- Intel Xeon “Nocona”
- Intel Itanium processors
- AMD Athlon 64
- AMD Opteron
- Sun UltraSPARC processors
- Fujitsu SPARC64 processors
- IBM POWER processors
- IBM PPC970/Apple PPC G5 processors
- DEC/Compaq/HP Alpha processors
- HP PA-RISC processors
- SGI MIPS processors
And there are many others, but those are the ones you’ll run across the most.