10

私が理解していないことの 1 つは、Intel CPU 用にコンパイルされたコードが AMD CPU でどのように機能するかということです。

私の基本的な理解は、たとえばCコードをコンパイルすると、コンパイラはソースコードを特定のプロセッサ用の命令を持つ機械語に変換するということです。そのため、アプリケーションで使用するプラットフォームに合わせてコンパイラでコンパイルする必要があります。AMD 対 Intel 用のコンパイラが必要で、特定のプロセッサ用のソフトウェアを購入する必要がないのはなぜですか?

私は、AMD プロセッサと Intel プロセッサが古い x86 命令である程度の互換性を共有していることを知っています。私が知りたいのは、彼らがそれをどのように行うのかということです? つまり、AMD や Intel がお互いに電話をかけ合って企業秘密を話し合っているわけではないのに、どうすれば互換性のある命令セットを作成できるのでしょうか?

すべての互換性はまだ 386 命令セットに基づいており、「IF AMD CPU なら、これを ELSE IF INTEL なら」などのステートメントがたくさんありますか?

4

4 に答える 4

19

AMD と Intel の x86 および x86-64 CPU は、ほぼ完全に互換性があります。どちらも x86 と x86-64 のすべてを実装しています。それぞれに独自の拡張機能 (MMX や 3DNow など) がありますが、コンパイラは通常、指示しない限りそれらを使用しません。現在、AMD と Intel は、互いの拡張機能のほとんどすべてをサポートしています。違いについて心配する必要があるのは、本当に低レベルのカーネル処理を行っているときだけです。

ところで、命令セットは実際には「企業秘密」ではありません。実装は。両社は命令セットに関するドキュメントを作成しているため、それぞれがコピーできます。その理由はおそらく、より多くの企業が互換性のあるチップを生産すれば、この命令セット用に書かれたソフトウェアが増えるため、より多くの人がこれらのチップを購入するようになるからです。x86/x86-64 は基本的にデスクトップの標準アーキテクチャであり、人々が Intel および AMD チップを購入し続けることを保証します。Intel と AMD の実装は大きく異なり、同じコードを実行するだけです。

于 2009-05-06T22:04:14.257 に答える
6

実際、彼らはクロスライセンス契約を結んでいます。AMD が 386 および 486 プロセッサの 2 番目のソースであった 90 年代に Intel から AMD に情報と技術革新が流れ、Intel が x86-64 拡張機能を採用したときに AMD から Intel に流れました。

于 2009-05-06T22:05:09.060 に答える
6

これらのプロセッサの命令セットは公式に文書化されていることにも注意してください。通常、1 つのベンダーが新しい一連の命令を発明し、1、2 世代後に他のベンダーが互換性のある拡張機能を実装します。そのため、IF 386 .... ではなく、特定のベンダーに関係なく、IF SSE4 IS SUPPORTED ... のラインに沿ったものがあります。

于 2009-05-06T22:07:08.977 に答える
1

どちらのベンダーも同じ命令セットを実装しているため、コンパイルされたコードがマシン命令に変換されると、両方のチップで動作します。ただし、SSE など、特定のベンダーに固有の特殊な命令セットがいくつかあります。アプリケーションのパフォーマンスを向上させたい場合は、実行時チェックを行って、利用可能な場合にこれらの機能を使用できます。

于 2009-05-06T22:11:42.897 に答える