CISCの逆襲

  • 投稿日:
  • by

後藤弘茂のWeekly海外ニュース 「Core Microarchitecture」の速さの秘密は“CISCの美”

P6のRISC風uOPsの技法は、次のNetBurst(Pentium 4/D)アーキテクチャにも拡張され受け継がれた。NetBurstでは、命令キャッシュがx86命令ではなくRISC風uOPsを格納するトレースキャッシュとなり、ますますRISC風のステージが増えた。RISC化が行き着いたのがNetBurstだった。(中略)
 
NetBurstでは、フロントのデコーダでCISC x86命令からRISC風uOPsに変換して以降は、パイプライン中は常にRISC風uOPs単位で扱われる。RISC風uOPsに分解することで、CISC時よりも命令数が増えるために、パイプライン内部では命令スロットや命令制御などのCPU内リソースが膨大に必要になる。パイプライン全体に渡ってリソースを食うので、これはばかにならない量となる。CPUが肥大化する最大の原因になっていると言われる。

NetBurstがどういう物だったのか、ようやく分かったような気がします。 あの効率の悪さはこういうことだったのですね。
そして、なぜ Intelが NetBurstを捨てなければならなかったのかも。

続きです。

知られているように、Fusion(融合)と呼んでいるのは、複数のRISC風uOPsを1個のuOPsに融合させるという概念からだ。だから、Core MAでの、複合uOPsは「Fused uOPs」と呼ばれている。しかし、実態は、比較的単純なCISC型x86命令を、1対1でFused uOPsに変換しているに過ぎない。つまり、CISC命令を分解しないことがMicro-OPs Fusionの本質だ。(中略)
 
もっとも、パイプラインを通してCISC風uOPsにすると、CISCのx86命令をネイティブ実行するのと同じように、高速化が難しくなってしまう。レジスタ-メモリ間の加算の例なら、メモリからのデータを待つ間、実行ユニットがアイドル状態になってしまう。そこで、Core MAでは、最後の最後でFused uOPsを分解する。(中略)
 
考えようによっては、「x86命令→Fused uOPs→uOPs」と、2段階でデコードされたと見ることもできる。もっとも、実際には最初のデコードの段階で、後段で分解しやすいようなフォーマットにされているという。(中略)
 
CPUのマイクロアーキテクチャの要(かなめ)となるuOPs。そのuOPsに着眼すると、Core MAは、これまでのIntel CPUと全く逆の方向へと向いたアーキテクチャであることがよくわかる。

単にP6へ先祖がえりするのではなく、行き過ぎたRISC風uOPs化を是正して、最適なポイントを見極めたということなんでしょう。
問題はCore MAが、パフォーマンス/消費電力でAMD K8に勝てるのかどうか。
ウチのデスクトップPCもそろそろ更新したいと思っているので、興味津々です。