Differences between IA-64 and EM64T.

Differences between IA-64 and EM64T.


From what I understand, EM64T is just a 64-bitextension to the IA-32 processors, but IA-64 is a true 64-bit processors. Is that correct?

Can IA-64 processorsrun 32-bit programsand OSs? If it can run 32-bit programsand OSs, what is difference between IA-64 and EM64T?


5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

IA-64 has built-in hardware (or maybe firmware) support for P-III code. In practice, the EL emulator application is required for execution of 32-bit software. It can't run a 32-bit OS. It's nowhere near as efficient as the native 32-bit support in EM64T. EM64T gives you the choice of running a 32-bit OS, in which case none of the 64-bit stuff is available, or a 64-bit OS, in which most well-behaved 32-bit software can run much the same as it would under a 32-bit OS. So, ia64 is "truer" in the sense of not having as good support for 32-bit applications.

People who talk about "true 64-bit processor" never give a definition. The only clear definition of "64-bit processor" is there is hardware support for pointers of more than 32 bits, stored in 64-bits. That's true of both ia64 and EM64T. Most EM64T CPUs have 40-bit physical and 48-bit virtual addressing, but some support only 4GB RAM realistically. Most IA64 platforms support at least 12GB RAM, but certainly not 64-bit virtual addressing. Most IA64 software is shackled by segmentation issues, like the short data segment, which has 23-bit addressing. So, it doesn't look so "true."


Thank you for your reply. I have two new questions:

1.) Does that mean, by running a 64-bit OS, I can runboth 32-bit and 64-bit software without any problem?

2.) I'm wondering what is the size ofthe pointer in EM64T processor? (My Pentium 4 is the eariler version of prescott core, no EM64T support, so I can't test it myself)


1) The 64-bit operating systems on EM64T have excellent support for 32-bit applications. I wouldn't say "with no problem." For example, people often miss the 2 separate sections of 32-bit support libraries in the Red Hat linux installation. They are optional installations in RH, but you don't get 32-bit support without them. In order to support both 32-bit and 64-bit MPI applications, you need separate corresponding builds of MPI. Intel MPI, and planned 64-bit Windows MPI, are able to pick the correct 32-bit or 64-bit libraries at run time, but the public source MPIs don't do it automatically. Then, there are relatively rare situations where the performance of an application is significantly different in the 32- and 64-bit OS, or the 32-bit application has hardware dependencies which prevent it working on the 64-bit OS.
2) Pointers in the 64-bit OS are stored in 64 bits, and require 64-bit arithmetic. That's why they call it a 64-bit OS. Not all the bits in the pointer are used, so you might nit-pick and call it a 48-bit OS. 64-bit mode does (necessarily) have much better support for 64-bit integer arithmetic.

Leave a Comment

Please sign in to add a comment. Not a member? Join today