Intel 64 和 AMD64 有什么区别?

May*_*hem 34 64-bit cpu-architecture

有人能解释一下 intel64 和 amd64 架构之间是否有任何区别吗?

May*_*hem 30

从我读到的扩展内存 64 位技术 (EM64T) 是 Intel 对 AMD AMD64 的实现,Intel64 和 AMD64 之间的区别是:

  • 当源为 0 且操作数大小为 32 位时,EM64T 的 BSF 和 BSR 指令的行为不同。处理器设置零标志并使目标的高 32 位未定义。

  • AMD64 支持 3DNow!指示。这包括使用操作码 0x0F 0x0D 和 PREFETCHW 进行预取,这对于隐藏内存延迟很有用。

  • EM64T 缺乏保存和恢复浮点状态(涉及 FXSAVE 和 FXRSTOR 指令)的简化(因此更快)版本的能力。

  • EM64T 缺少一些被认为是 AMD64 架构的特定于模型的寄存器。其中包括 SYSCFG、TOP_MEM 和 TOP_MEM2。

  • EM64T 支持 32 位模式下的微码更新,而 AMD64 处理器使用不同的微码更新格式并控制 MSR。

  • EM64T 的 CPUID 指令非常特定于供应商,这对于 x86 风格的处理器来说是正常的。

  • EM64T 支持 MONITOR 和 MWAIT 指令,操作系统使用这些指令可以更好地处理超线程。

  • AMD64 系统允许将 AGP 孔径用作 IO-MMU。操作系统可以利用这一点让普通 PCI 设备 DMA 到 4 GiB 以上的内存。EM64T 系统需要使用速度较慢的反弹缓冲器。

  • SYSCALL 和 SYSRET 也仅在 EM64T 上的 IA-32e 模式下(不在兼容模式下)受支持。两种模式都支持 SYSENTER 和 SYSEXIT。

  • 带有 0×66(操作数大小)前缀的近分支行为不同。一种类型的 CPU 只清除最高 32 位,而另一种类型清除最高 48 位。

  • 好吧,一些论坛/博客 + 维基百科 (http://en.wikipedia.org/wiki/EMT64#Intel_64)。我还查看了英特尔和 AMD 的一些手册。 (4认同)

小智 10

维基百科的 x86 页面上,您可以阅读

1999-2003 年,AMD 将这种 32 位架构扩展为 64 位,并在早期文档中将其称为 x86-64,后来称为 AMD64。英特尔很快就采用了 AMD 的架构扩展,名为 IA-32e,后来更名为 EM64T,最后更名为英特尔 64。

换句话说,差异化因素主要是营销。指令集有 Intel 和 AMD 特定的扩展,但只要您在用户空间编写程序,您通常不需要知道它们之间的区别。

  • _错误:即使是通用指令上的微小差异也非常重要_ 公平地说,(1),他说你**通常**不需要知道这些差异。显然,在某些特定情况下它可能很重要。(2) 我们大多数人并没有编写一个必须保护所有可用指令路径的强化沙箱。 (7认同)
  • `您通常不需要知道差异` 错误:即使是通用指令上的微小差异也非常重要 https://bugs.chromium.org/p/nativeclient/issues/detail?id=2010 (3认同)