一人一党党

一人一人の、一人一人による、一人一人のための政治制度を!

IPCが2命令多ければ、RISC系CPUの周波数当たり性能はx86のと並ぶ

CPUに使われる一般的な命令セットと言えばx86だが、最近は怪しくなっている。
後藤弘茂のWeekly海外ニュース】AppleがArmベースのSoCをMacに採用する背景 - PC Watch
https://pc.watch.impress.co.jp/docs/column/kaigai/1261696.html
それらのCPUの性能を、既存のCPUと比較したいこともあるだろう。
勿論、簡単ではない。
同じ命令のCPU同士ですら、キャッシュ容量とか各命令のレイテンシとか動作周波数の変化とかの所為で、性能は大きく変わる。
走らせるプログラムが変われば、性能差が逆転する事も珍しいことではない。
それを承知で敢えて注目すべき性能指標を挙げるとすれば、IPC(Instructions Per Cycle 動作周波数あたりの命令実行数)の最大値だろう。
他の指標のほとんどは、半導体プロセスを変えるとか小規模の手直しなどで、割と頻繁に変わるが、CPUコアの大規模な設計変更でもない限り、最大IPCはなかなか変わらない。

しかし命令セットが異なると、IPCの意味が変わってくる。
ある命令セットで2命令を要する処理が、別の命令セットでは1命令で済む場合が出てくるからだ。
同じ処理をするときに多くの命令を要する命令セットと、少ない数で済む命令セットでは、前者の方がより大きなIPCを持たなければ、後者と同等の周波数当たり性能を出せない。

件のAppleのCPUはARMの64ビット命令セットだが、ほぼ典型的なRISC命令セットらしい。
典型的なRISC命令セットでは、レジスタ間演算とメモリアクセスを同時に行う命令は、存在しない。
これに対してx86の基本命令では、演算処理とメモリアクセスを一つの命令に纏めることができる。
演算処理だけならば、RISCx86も似たような数の命令数で処理できるが、メモリアクセスが絡むと、その回数だけRISCの方が命令数が多くなる。

ところが、動作周波数1サイクル当たりで考えると、x86命令の強力なメモリアクセス表現力は過剰になる。
現在最も強力なx86のCPUですら、1サイクル当たりに処理できるメモリアクセスは2回が限度だからだ。
このため、メモリアクセス処理能力の限界により、x86のCPUのサイクル当たり処理能力は、サイクル当たり命令実行数が2命令多いRISCと同等になる。

例えば、最近のx86のCPUではIPCは4、つまり1サイクルでx86命令を4個処理できる。
演算は4命令分できるわけだ。
ところがメモリアクセスは2命令分しか処理できない。
このため、その4命令すべてにメモリアクセスが伴っている場合、2命令分のメモリアクセスは次のCPUサイクルに繰り越されてしまう。
サイクル当たりにできる処理は、RISC命令での演算4命令とメモリアクセス2命令の6命令分が限界なのだ。

x86のCPUの構造解析で有名なAgner Fog氏によると、IntelのCPUのIPCは4命令/サイクルが最大らしい。
The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers
https://www.agner.org/optimize/microarchitecture.pdf
対してAppleのCPUの最大IPCは7。
IntelよりもIPCが2ではなく3多いということは、周波数当たり処理能力では同等ではなく上回っていることになる。
動作周波数ではIntelに大差をつけられているので、動作周波数と周波数当たり処理能力の積であるAppleのCPUの性能は、現時点ではIntelより低い。
しかし、動作周波数の引き上げはIPCほどは難しくないはず。
電力消費を気にしないデスクトップ向けにAppleがCPUを出したとき、何が起こるだろう?