Sign in
MSDN Blogs
Microsoft Blog Images
More ...
What is the difference between AMD64 & EM64T, really?
Common Tasks
Blog Home
Email Blog Author
RSS for comments
RSS for posts
Search
Tags
Bugs
Developer Info
TypeScript WSH WScript FileSystemObject
X64 ABI Info
Archives
Archives
October 2012
(1)
February 2009
(1)
June 2008
(1)
April 2008
(1)
February 2008
(1)
September 2007
(1)
June 2007
(2)
March 2007
(2)
December 2006
(1)
October 2006
(2)
September 2006
(1)
July 2006
(2)
May 2006
(1)
April 2006
(2)
March 2006
(2)
January 2006
(3)
December 2005
(1)
November 2005
(1)
October 2005
(1)
September 2005
(2)
July 2005
(3)
June 2005
(1)
March 2005
(2)
January 2005
(1)
November 2004
(3)
What is the difference between AMD64 & EM64T, really?
Kevin Frei
6 Nov 2004 9:33 AM
Comments
2
Yes, I've had inside information about all of this for quite some time, but none of this info is confidential. It's all discoverable - for all I know, there are already websites out there that provide this detail. The trouble is that both companies seem to be doing their best to protect their own (completely understandable). Because of this, I've found that it's tough to get a clear answer on this question. Here it is, to the best of my understanding:
AMD64 & EM64T are compatible with each other in much the same way that the AthlonXP and Pentium III/4 are compatible: There are a different set of extensions to the basic x86 instruction set that each chip supports. As long as you stay away from these instructions, your code will execute just fine on both architectures. The current generation of AMD64 CPU's (Athlon64, FX, and Opterons) implement 3DNow! Professional, which is basically MMX (ick), SSE, SSE2, and 3DNow!. EM64T CPU's implement SSE3, SSE2, SSE, and MMX (ick).
Regarding the (ick) comments about MMX: Don't use MMX on x64 [I don't think the ML64 assembler even supports it!]. I haven't yet seen a single scenario where MMX code runs faster than SSE2 code. The primary reason I've heard that people want to use MMX is because they already have a bunch of x86 ASM code using MMX. I have 1 word for you: rewrite. Chances are, if you don't rewrite it, your asm code will be completely wrong & broken, due to ABI restrictions - you won't discover this until you find yourself staring at a broken stack dump, or a terminated process, due to failed exception handling. If you've already vectorized your code, it's probably not too difficult to change it from working on 8 byte chunks to 16 byte chunks. You'll get twice the number of registers to use, and maybe even a minor perf improvement because of code density. You won't yet see many more perf improvements over those, because none of the current generation of x64 chips have a 16 byte wide SSE unit: they just break the operations into 8 byte pieces inside the CPU itself. But you save space of an extra instruction so it's goodness, overall.
On a slightly different note, Sun's relatively new workstation, the 2100z, is amazingly fast and very quiet, too. My only real complaint is that I needed to add ancient PCI Matrox G450 to get more than 2 monitors connected... It's kind of fun running Win64 on a machine with a big Sun logo on it's side, and a Java logo on the front. Sun does make some nice hardware, no matter what your opinion is of their software.
And finally, the disclaimer: Please note that all of this information is coming out of my brain, not a Microsoft lawyer. I can't guarantee it's accuracy. My brain's been flaky, lately. If I offended anyone (or any company), it wasn't intentional. I'm only expressing my own personal opinion...
2 Comments
Leave a Comment
Name
Comment
Please add 6 and 5 and type the answer here:
Post
Comments
Diego Calleja
6 Nov 2004 10:41 AM
This list (somewhat old for some things ie: the NX thing) was provided by a Intel guy at the linux kernel mailing list:
http://marc.theaimsgroup.com/?l=linux-kernel&m=107766481408468&w=2
Arioch
18 Nov 2005 2:16 PM
1)xbit.com tested some beta XVid codec and found it dramatically changes speed when enabling/disabling MMX and almost ignorant to SSSE2. Of course it might be more about XVid than about MMX ;)
2) about incompatibility between intel and AMD:
http://www.theregister.co.uk/2005/08/23/intel_fixes_em64t/
Page 1 of 1 (2 items)