これをさらに積極的に進めたのがMacro Fusionである。こちらは複数のx86命令を、ひとつのμOpで扱えるというものだ。当初対象になったのは、cmp/test命令とjcc命令の組み合わせである。cmp/testというのは値を比較する命令で、この結果は「EFLAGS」というステータスを格納するレジスターに反映される。
- cmp reg1, reg2
上の命令はreg1とreg2の値を比較するもので、その結果(等しい/等しくない/どちらが大きいか、など)はEFLAGSの状態値を見れば判断できる。一方jcc(Jump if condition is Met)命令は、このEFLAGSの値を参照して、それが指定された条件であれば所定のアドレスに飛ぶ、というものである。要するにループ制御(例えばこのループを1000回繰り返す)などに、cmpやtestとjccはセットで使われるわけだ。
こうした、非常に煩雑に出るものについては、上の図4のようにDecode段でひとまとめにしてしまい、そのまま処理をすることでμOpを節約する。これも最終的には、省電力化や性能向上に役立つ。MicroOps Fusionまでは、あくまでも「ひとつのx86命令が複数のμOpに分解される」というものだったがMacro Fusionではついに「複数のx86命令がひとつのμOpに集約される」ことになったわけだ。
★
ここまで説明して気付かれた方もおられようが、最近のμOpはすでにRISC風という最初の定義からは、かなり遠いところにある。RISC対CISCの優劣論争も、90年代に入ってかなり下火になった。と言うよりも意味がなくなっていた。
理由は2つある。ひとつはCISCが内部的にはRISC風の処理をするようになって、少なくとも命令セットと性能の間に直接的な関係がなくなってしまったこと。もうひとつはRISCの側もなんだかんだで命令を拡張していった結果、CISCとさして違いがなくなってしまったことだ。
これに倣ったわけではないのだろうが、μOpもずいぶんと拡張を遂げた結果、かなり複雑なものに進化してしまっている。幸いなのは80年代と異なり、とにかく使えるトランジスター数が膨大になったため、多少複雑な命令だろうがなんだろうが、力技で解決できるようになったことだ。
それでもx86命令のままで処理しないのは、x86命令がスーパースカラーやアウトオブオーダーを考慮していない命令体系だからだ。x86命令を効果的に処理するためには、一度変換したほうがいい、というわけだ。
この連載の記事
-
第768回
PC
AIアクセラレーター「Gaudi 3」の性能は前世代の2~4倍 インテル CPUロードマップ -
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ -
第764回
PC
B100は1ダイあたりの性能がH100を下回るがAI性能はH100の5倍 NVIDIA GPUロードマップ -
第763回
PC
FDD/HDDをつなぐため急速に普及したSASI 消え去ったI/F史 -
第762回
PC
測定器やFDDなどどんな機器も接続できたGPIB 消え去ったI/F史 -
第761回
PC
Intel 14Aの量産は2年遅れの2028年? 半導体生産2位を目指すインテル インテル CPUロードマップ -
第760回
PC
14nmを再構築したIntel 12が2027年に登場すればおもしろいことになりそう インテル CPUロードマップ -
第759回
PC
プリンター接続で業界標準になったセントロニクスI/F 消え去ったI/F史 -
第758回
PC
モデムをつなぐのに必要だったRS-232-CというシリアルI/F 消え去ったI/F史 - この連載の一覧へ