EM64T
Encyclopedia : E : EM : EM6 : EM64T
Extended Memory 64-bit Technology (EM64T) is Intel's implementation of AMD64, a 64-bit extension to the IA-32 architecture. See the AMD64 article for architectural details.
From the [Intel] Website:
"Intel EM64T improves performance by allowing the system to address more than 4 GB of both virtual and physical memory. Intel EM64T provides support for:
- 64-bit flat virtual address space
- 64-bit pointers
- 64-bit wide general purpose registers
- 64-bit integer support
- Up to 1 terabyte (TB) of platform address space"
Intel CPUs with EM64T
EM64T was originally implemented on the E revision (Prescott) of Pentium 4 line of microprocessors, which were supported by i915P (Grantsdale) and i925X (Alderwood) chipsets in June of 2004. EM64T's implementation was largely due to the competitive pressure of Advanced Micro Devices AMD64 technology implemented on Opteron and Athlon64 lines of microprocessing units, otherwise known as the K8 core, one year earlier in 2003; and the technology was largely built compatible to AMD64, and the then announced Windows XP 64 bit Edition supporting AMD64 technology. Intel's first processor to activate the EM64T technology was the multi-socket processor Xeon codenamed Nocona. Since the Xeon itself is directly based on Intel's desktop processor, the Pentium 4, the Pentium 4 also has EM64T technology built in, although as with Hyper-Threading, this feature was not initially enabled on the then-new Prescott design, likely because enabling EM64T didn't coincide with Intel's stance on x86-64 extensions at that particular time. Intel has since begun selling EM64T enabled Pentium 4s using the E0 revision of the Prescott core, being sold on the market as the Pentium 4, model F. However, the revision F core was targeted at workstations. Intel's official launch of EM64T to desktop was the N0 Stepping Prescott-2M. The E0 revision also adds eXecute Disable(XD) support to EM64T, Intel's name for the NX bit, and has been included in the current Xeon codenamed Irwindale. All 9xx/8xx/6xx/5x6/5x1/3x6/3x1 series CPUs have EM64T enabled, as will all future Intel CPUs.As of March 2006, none of Intel's notebook CPUs (Core Duo, Pentium M, Celeron M, Mobile Pentium 4) support EM64T. The first Intel mobile processor supporting EM64T will be the dual core Merom version of the Core 2 processor, which is scheduled to be released in August 2006.
Differences between AMD64 and EM64T
There are a small number of differences between each instruction set. Compilers generally produce binaries that target both AMD64 and EM64T, making the differences mainly of interest to compiler developers and operating system developers.
- Early AMD64 processors lacked the CMPXCHG16B instruction, which is an extension of the CMPXCHG8B instruction present on most post-486 processors. Similar to CMPXCHG8B, CMPXCHG16B allows for atomic operations on 128-bit double quadword (or oword) data types. This is useful for high resolution counters that could be updated by multiple processors (or cores). Without CMPXCHG16B the only way to perform such an operation is by using a critical section.
- Early Intel CPUs with EM64T lacked LAHF and SAHF instructions supported by AMD64 until introduction of Pentium 4 G1 step in December 2005. LAHF and SAHF are load/store instructions for certain status flags. As the only real purpose of these instructions was to enable quick porting of Intel 8080 code to the Intel 8086 in the late 1970s, this limitation is of little consequence now.
- Early Intel CPUs with EM64T also lack the NX bit (No Execute bit) of the AMD64 architecture. The NX bit marks memory pages as non-executable, allowing protection against many types of malicious code.
- Near branches with the 0x66 (operand size) prefix behave differently. One type of CPU clears only the top 32 bits, while the other type clears the top 48 bits.
- EM64T's BSF and BSR instructions act differently when the source is 0 and the operand size is 32. The processor sets the zero flag and leaves the upper 32 bits of the destination undefined.
- AMD64 supports 3DNow! instructions. This includes prefetch with the opcode 0x0F 0x0D and PREFETCHW, which are useful for hiding memory latency.
- EM64T lacks the ability to save and restore a reduced (and thus faster) version of the floating-point state (involving the FXSAVE and FXRSTOR instructions).
- EM64T lacks some model-specific registers that are considered architectural to AMD64. These include SYSCFG, TOP_MEM, and TOP_MEM2.
- EM64T supports microcode update as in 32-bit mode, although it has been rumored that AMD processors have supported programmable microcode (an undocumented feature) for years.
- EM64T's CPUID instruction is very vendor-specific, as is normal for x86-style processors.
- The MONITOR and MWAIT instructions, used by operating systems to better deal with Hyper-threading, are only supported (and only useful) on EM64T.
- AMD64 systems allow the use of the AGP aperture as an IO-MMU. Operating systems can take advantage of this to let normal PCI devices DMA to memory above 4 GB. EM64T systems require the use of bounce buffers, which are slower.
- Originally EM64T hardware allowed access only to 236 bytes of memory, while AMD64 systems can handle up to 240 (planned expansion to 256) bytes. However, as of recent publications, EM64T now provides 240 bytes of memory access.
See also
External links
- [Intel Extended Memory 64 Technology]
- [Intel tweaks EM64T for full AMD64 compatibility]
- [Early report of differences between Intel IA32e and AMD64]
- [Analyst: Intel Reverse-Engineered AMD64]
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
