
intel64 と amd64 のアーキテクチャに違いがあるかどうか説明していただけますか?
答え1
私が読んだところによると、拡張メモリ 64 ビット テクノロジー (EM64T) は AMD の AMD64 の Intel による実装であり、Intel64 と AMD64 の違いは次のとおりです。
EM64T の BSF 命令と BSR 命令は、ソースが 0 でオペランド サイズが 32 ビットの場合に動作が異なります。プロセッサはゼロ フラグを設定し、宛先の上位 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 デバイスが 4 GiB を超えるメモリに DMA できるようにします。EM64T システムでは、より遅いバウンス バッファを使用する必要があります。
SYSCALL と SYSRET も、EM64T の IA-32e モード (互換モードではない) でのみサポートされます。SYSENTER と SYSEXIT は両方のモードでサポートされます。
0×66 (オペランド サイズ) プレフィックスを持つ近接分岐は動作が異なります。あるタイプの CPU は上位 32 ビットのみをクリアしますが、他のタイプは上位 48 ビットをクリアします。
答え2
でWikipedia の x86 ページあなたは読むことができます
1999 年から 2003 年にかけて、AMD はこの 32 ビット アーキテクチャを 64 ビットに拡張し、初期の文書では x86-64、後に AMD64 と呼びました。Intel はすぐに AMD のアーキテクチャ拡張を IA-32e という名前で採用し、後に EM64T に改名され、最終的に Intel 64 になりました。
言い換えれば、差別化要因は主にマーケティングです。命令セットには Intel および AMD 固有の拡張機能がありますが、ユーザー空間でプログラムを作成する限り、通常は違いを知る必要はありません。