※当ページはアフィリエイトプログラムによる収益を得ています。
PCパーツ関連のニュースを見ていると、よく「IPC」という言葉が出てきませんか?
「10%のIPC向上を達成した」といった具合です。このIPCという言葉の意味を正しく理解できているでしょうか?IPC向上=性能アップだと考えていないでしょうか?
IPCと実処理性能は、厳密に言えばイコールではありません。
IPCとはなにか??
IPCは、ネットで検索すると2つの意味が出てきます。ひとつは「InterProcess Communication」の略で、「コンピュータ内でプログラム同士がデータをやり取りするための仕組み」です。もうひとつは、「Instruction per Clock」のことで、クロック当たりの処理命令数を表しています。
ゲーミングPCや自作PCのニュースで「CPUのIPCが向上した!」と言っている場合は、後者(Instruction per Clock)を指しています。
では本題です。IPC(Instruction per Clock)をもう少し具体的に説明していきましょう。
IPCは命令の数であることは既に述べた通りです。例えば、A地点からB地点へ10個組の小包を運ぶ時、1往復で1個の小包を運べる経路を利用するとします。
経路が1つよりも2つ、2つよりも3つのほうが、B地点へ小包を運び終える時間が早くなりますよね。この経路の数が「命令」だと思ってください。
かなり簡素に表現していますが、命令の数が増えれば増えるほど、時間当たりの処理性能は上がっていくことになります。
したがって、IPCが10%向上したとは、命令できる数が増えたのだなと考えれば良いのです。
「IPC向上=性能アップ」ではない理由
IPCが向上すると、性能もそれに比例して向上すると思い込みがちですが、実際にはそう簡単にいきません。
「IPCを向上させる=命令を出すための設備、結果を処理する設備の増加」でもあるからです。
CPUダイは面積が限られており、IPCが増えた分だけ無限に設備を増やすわけにはいきません。
また、設備が増えればコストもあがり、競争力のある価格を維持できなくなってしまいます。そのため、つねにバランスを求められるわけです。
一般的にCPUの処理性能は「P=F×IPC」という式で表現できます。PはPerformance(処理性能)、FはFrequency(動作周波数、クロック数)です。つまり、CPUの性能アップは、周波数とIPCのバランスなのです。
ただし周波数は熱処理や電力の関係から限界があり、現状では5GHz程度が限界です。そしてIPCの向上はさらに難しく、それほど大きな進歩が見込めない状態となっています。
こういった処理性能の限界を打破する手段が、最近の「マルチコア化」です。
マルチコア化を導入すると、処理性能の式は「P=n×F×IPC」となります。つまり、n(Number of CPUs=CPUの数)が増えることで、動作周波数やIPCが増えなくても、CPUの性能が上がっていくようになったのです。
コア数が増えると、再びCPUダイの面積との闘いになるわけですが、これはプロセスルールの微細化で解決してきました。
より小さく細かい単位でCPUコアを製造できるようになり、同じ面積であっても数多くの回路を実装できるようになったわけです。
マルチコア、メニーコア化は必然の流れ
このように動作周波数やIPCは大きな向上が見込みにくいため、コア数の増加は引き続き続いていくでしょう。
最近ではすっかり定着し、6コア~10コアのCPUが簡単に買えるようになりました。もちろん、同じコア数・クロック数ならIPCが上のほうが性能は高いわけですが、単純にIPC向上=性能アップと考えないようにしたいところですね。