1. ホーム
  2. assembly

[解決済み] なぜインテルはプロセッサーに内蔵RISCコアを隠すのか?

2023-02-10 06:34:20

質問

Intel は Pentium Pro (P6 マイクロアーキテクチャ) からマイクロプロセッサを再設計し、古い CISC 命令の下に内部 RISC コアを使用するようにしました。Pentium Pro 以降、すべての CISC 命令はより小さなパーツ (uops) に分割され、RISC コアによって実行されます。

当初、Intel が新しい内部アーキテクチャを隠し、プログラマに CISC shell を使用させることを決定したことは、私にとって明らかでした。この決断のおかげで、Intel は互換性を壊すことなくマイクロプロセッサのアーキテクチャを完全に再設計できたのですから、合理的です。

しかし、私はひとつだけ理解できないことがあります。なぜIntelはこれほど長い間、内部のRISC命令セットを隠し続けているのでしょうか?なぜ、古い x86 CISC 命令セットを使用するように、プログラマに RISC 命令を使用させないのでしょうか?

もし Intel がこれほど長い間後方互換性を維持するなら (私たちはまだ 64 ビットモードの隣に仮想 8086 モードを持っています)、なぜ CISC 命令をバイパスして RISC コアを直接使用するようにプログラムをコンパイルさせないのでしょうか。これは、現在では非推奨となっている x86 命令セットをゆっくりと放棄するための自然な方法です (これが Intel が内部で RISC コアを使用することを決めた主な理由です。)。

新しいIntel Core iシリーズを見ると、AVXやSSE4などを追加してCISC命令セットを拡張しているだけですね。

どのように解決するのですか?

いいえ、x86 命令セットは確かに非推奨ではありません。これまでと同じように人気があります。Intel が RISC ライクなマイクロ命令のセットを内部で使用しているのは、より効率的に処理できるからです。

つまり、x86 CPU は、フロントエンドにかなり頑丈なデコーダを持っていて、x86 命令を受け取り、それをバックエンドが処理できる最適な内部形式に変換することで機能します。

この形式を外部プログラムに公開することについては、2つのポイントがあります。

  • この形式は安定したものではありません。Intel は、特定のアーキテクチャに最適なように、CPU モデル間でこれを変更することができます。これによって効率を最大化することができますが、外部使用だけでなく内部使用のために固定された安定した命令形式に決めなければならないとしたら、この利点は失われるでしょう。
  • それを行うことによって得られるものは何もありません。今日の巨大で複雑な CPU では、デコーダーは CPU の比較的小さな部分です。x86 命令をデコードする必要があるため、より複雑になりますが、CPU の残りの部分は影響を受けないため、全体として、得るものはほとんどありません。つまり、x86 フロントエンドで現在使用されているトランジスターを節約することもできないのです。

これは完全な配置ではありませんが、コストはかなり小さく、CPU を設計して

をサポートするよりもはるかに良い選択です。

2

をサポートするように CPU を設計するよりもはるかに良い選択です。(その場合、おそらく最終的に サード というのも、CPU の内部アーキテクチャに最適になるように自由に調整できるからです)。