Intel 64 和 AMD64 有什麼不同?

Intel 64 和 AMD64 有什麼不同?

有人可以解釋一下 intel64 和 amd64 架構之間是否有區別嗎?

答案1

據我了解,擴展內存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 位。

答案2

維基百科的 x86 頁面你可以閱讀

1999-2003年,AMD將此32位元架構擴展到64位,並在早期文件中稱為x86-64,後來稱為AMD64。 Intel 很快就採用了 AMD 的架構擴展,命名為 IA-32e,後來更名為 EM64T,最後更名為 Intel 64。

換句話說,差異化因素主要是行銷。指令集有 Intel 和 AMD 特定的擴展,但只要您在用戶空間中編寫程序,通常不需要知道其中的區別。

相關內容