skip to main content

64-bit Computing with Intel EM64T and AMD AMD64

Positioning Information (withdrawn product)

Home
Top
Author
Published
3 Dec 2004
Form Number
TIPS0475
PDF size
5 pages, 56 KB

Abstract

There are now three 64-bit implementations in the “Intel® compatible processor” marketplace:

Intel IA64, as implemented on the Itanium 2 processor
Intel EM64T, as implemented on the Xeon DP “Nocona” and future Xeon MP processors
AMD AMD64, as implemented on the Opteron processor

There is some uncertainty as to what a 64-bit processor is and even more importantly, what the benefit of 64-bit computing is. This document introduces the EM64T and AMD64 architectures and explains where 64-bit processing is useful and relevant for customers in this marketplace.

Main

A 64-bit processor is a processor that is able to address 64-bits of virtual address space. A 64-bit processor can store data in 64-bit format and perform arithmetic operations on 64-bit operands. In addition, a 64-bit processor has general purpose registers (GPRs), and arithmetic logical units (ALUs) that are 64-bit wide.

The Itanium 2 has both 64-bit addressability and GPRs and 64-bit ALUs, so it is by this definition a 64-bit processor.

The discussion whether or not EM64T and AMD64 really are 64-bit processors can be confusing to some because Intel calls its architecture “Extended Memory 64 Technology”. We know that it extends the IA32 instruction set. Therefore, are EM64T and AMD64 processors “real” 64-bit chips? The answer is absolutely yes. When these processors operate in 64-bit mode, the addresses are 64-bit, the GPRs are 64 bits wide, and the ALUs are able to process data in 64-bit chunks. Therefore, these processors are full-fledged 64-bit processors in this mode.

Note that while IA64, EM64T, and AMD64 are all 64-bit, they are not compatible:
  • EM64T and AMD64 are, with the exception of a few instructions such as 3DNOW, binary compatible with each other. Applications written and compiled for one will usually run at full speed on the other.
  • IA64 uses a completely different instruction set to the other two. 64-bit applications written for the Itanium 2 will not run on the EM64T or AMD64 processors, and vice versa.

Modes of operation

There are three distinct operation modes available in AMD64 and EM64T:
  • 32-bit legacy mode

The first and, in the near future, probably most widely used mode will be 32-bit legacy mode. In this mode, both AMD64 and EM64T processors will act just like any other IA32 compatible processor. You can install your 32-bit OS on such a system and run 32-bit applications, however, you will not be able to make use of the new features such as the flat memory addressing above 4 GB or the additional General Purpose Registers (GPRs). 32-bit applications will run just as fast as they would on any current 32-bit processor.

Most of the time IA32 applications will run even faster since there are numerous other improvements that boost performance regardless of the maximum address size. For applications that share large amounts of data, there might be performance impacts related to the NUMA-like architecture of multi-processor Opteron configurations, since remote memory access might slow your application down. 
  • Compatibility mode

The second mode supported by the AMD64 and EM64T is compatibility mode, which is an intermediate mode of the full 64-bit mode described below. In order to run in compatibility mode, you will need to install a 64-bit operating system and 64-bit drivers. If a 64-bit OS and drivers are installed, both Opteron and Xeon processors will be enabled to support a 64-bit operating system with both 32-bit applications or 64-bit applications.

Compatibility mode gives you the ability to run a 64-bit operating system while still being able to run unmodified 32-bit applications. Each 32-bit application will still be limited to a maximum of 4 GB of physical memory. However, the 4 GB limit is now imposed on a per-process level, not at a system-wide level. This means that every 32-bit process on this system gets its very own 4 GB of physical memory space (assuming sufficient physical memory is installed). This is already a huge improvement compared to IA32, where the operating system kernel and the application have to share 4 GB of physical memory.

Additionally, compatibility mode does not support the virtual 8086 mode, so real-mode legacy applications are not supported. 16-bit protected mode applications are, however, supported. 
  • Full 64-bit mode

The final mode is the full 64-bit mode. AMD refers to this as long mode and Intel refer to it as IA-32e mode. This mode is when a 64-bit operating system and 64-bit application are used. In the full 64-bit operating mode, an application can have a virtual address space of up to 40-bits (that equates to 1 TB of addressable memory). The amount of physical memory will be determined by how many DIMM slots the server has and the maximum DIMM capacity supported and available at the time.

Applications that run in full 64-bit mode will get access to the full physical memory range (depending on the operating system), and will also get access to the new GPRs as well as to the expanded GPRs. However it is important to understand that this mode of operation requires not only a 64-bit operating system (and of course 64-bit drivers), but also requires a 64-bit application that has been recompiled to take full advantage of the various enhancements of the 64-bit addressing architecture.
The benefit of 64-bit computing

In the same way that 16-bit processors and 16-bit applications are no longer used in this space, it is likely that at some point in the future, 64-bit processors and applications will replace their 32-bit counterparts.

Processors using the EM64T and AMD64 architectures are making this transition very smooth by offering 32-bit and 64-bit modes. This means that the hardware support for 64-bit may likely be in place before you upgrade or replace your applications with 64-bit versions. IBM xSeries already has many models available with the EM64T-based Xeon DP processor.

The question you should be asking is whether the benefit of 64-bit processing is worth the effort of upgrading or replacing your 32-bit applications. The answer is that it depends on the application. The following are examples of applications that will benefit from 64-bit computing:
  • Encryption applications: Most encryption algorithms are based on very large integers and would benefit greatly with the use of 64-bit GPRs and ALUs.
  • Scientific applications: Integer-based scientific applications will benefit. Floating-point operations do not benefit from the larger integer size since floating-point registers are already 80 or 128 bits wide even in 32-bit processors.
  • Applications requiring more than 4 GB of memory: This is the biggest advantage of 64-bit computing for commercial applications — the flat, potentially massive, address space.

Enterprise applications such as databases are current implementing Page Addressing Extensions (PAE) and Addressing Windows Extensions (AWE) addressing schemes to access memory above the 4 GB limit imposed by 32-bit address limited processors. These addressing extension schemes support access to memory up to 64 GB in size. One constraint with PAE and AWE, however, is that memory above 4GB can only be used to store data, it cannot be used to store or execute code. So these addressing schemes only make sense for applications such as databases, where large data caches are needed.

In contrast, a 64-bit virtual address space provides for direct access of up to 2 Exabytes (EB). And even though we call these processors 64-bit, none of the current 64-bit processors actually supports full 64-bits of physical memory addressing, simply because this is such an enormous amount of memory. EM64T for example, supports 40-bit of physical addressing capable of supporting up to 1 Terabyte (TB) of physical memory.

In addition, 32-bit applications can also get a performance boost from a 64-bit EM64T or AMD64 system running a 64-bit operating system. When the processor runs in Compatibility mode, every process has its own 4 GB memory space, not the 2 GB or 3 GB memory space each gets on a 32-bit platform. This is already a huge improvement compared to IA32, where the OS and the application has to share those 4GB of memory.

When the application is designed to take advantage of more memory, the availability of the additional 1 or 2 GB of physical memory can make a significant performance improvement. Not all applications take advantage of the global memory available APIs needed to recognize the availability of greater than 2GB, so “your mileage will vary”.

Furthermore, some applications will not benefit at all from 64-bit computing, and may even experience degraded performance. If an application does not require greater memory capacity or does not perform high-precision integer or floating-point operations, then 64-bit will not provide any significant improvement.

In fact, since 64-bit computing generally requires instructions and some data to be stored as 64-bit objects, and these objects consume more physical memory than the same object in a 32-bit operating environment, the memory capacity inflation of 64-bit can only be offset by an application taking advantage of the capabilities of 64-bit. For greater addressing or increased calculation performance for high-precision operations, but where an application does not make use of the 64-bit operating environment features, it often experiences the overhead without the benefit. In this case the overhead is increased memory consumption, leaving less physical memory for operating system buffers and caches. The resulting reduction in effective memory can decrease performance.

For more information on performance tuning, see the IBM Redbook Tuning IBM eServer xSeries Servers for Performance, SG24-5287, http://www.redbooks.ibm.com/abstracts/sg245287.html
For more information on the AMD64 architecture, see: http://www.x86-64.org/
For more information on EM64T, see: http://www.intel.com/technology/64bitextensions/

Related product families

Product families related to this document are the following:

Trademarks

Lenovo and the Lenovo logo are trademarks or registered trademarks of Lenovo in the United States, other countries, or both. A current list of Lenovo trademarks is available on the Web at https://www.lenovo.com/us/en/legal/copytrade/.

The following terms are trademarks of Lenovo in the United States, other countries, or both:
Lenovo®
xSeries®

The following terms are trademarks of other companies:

Intel®, Xeon®, and Itanium® are trademarks of Intel Corporation or its subsidiaries.

Windows® is a trademark of Microsoft Corporation in the United States, other countries, or both.

Other company, product, or service names may be trademarks or service marks of others.