命令セットアーキテクチャは、車で言えば、ハンドルとアクセルとブレーキが一定の位置にあるというハードウェアの規定と、それらを操作するとどのように動くかという規定のようなもので、どのようなメカニズムで、アクセルを踏み込むと車が加速するかとか、ハンドルを廻すと進行方向が変わるかとかいう、車の作りについては規定していない。一方、どのようにして動く車を作るかに相当するのが、マイクロアーキテクチャから、論理設計、物理設計が担当する部分である。

マイクロアーキテクチャは、命令セットアーキテクチャで規定された動作を実現することが必要条件であるが、それだけでは十分ではない。同じ機能を実現するにしても、部品数(最近はワンチッププロセサであり、チップ面積)が少なく、高速で動作する設計が求められる。また、最近では、消費電力が大きな問題となっており、少ない電力で動作する設計であることも重要である。

このような目標の達成は、マイクロアーキテクチャの設計だけで決まるわけでなく、回路設計や配置配線などの物理設計にも大きく依存するのが一般的である。従って、良いマイクロアーキテクチャを設計するためには、単にアーキテクチャ、マイクロアーキテクチャの知識をもっているというだけでは不十分で、回路設計や物理設計もかなりの程度に理解し、何が可能で、どれだけのコストが掛かるかの判断が出来ることが求められる。

本稿では、マイクロアーキテクチャと論理設計を中心に話を進めるつもりであるが、回路や実装設計的な考慮が必要な部分については、それも合わせて解説して行きたいと考えている。

コンピュータの性能向上

コンピュータの歴史は性能向上の歴史と言ってよい。次の図1.1は、プロセサの性能指標として一番ポピュラーなStandard Performance Evaluation Corporation(SPEC)の整数系CPUベンチマーク(SPECint_baseベンチマーク)の性能値をプロットしたものである。この図には、1995年の3Qから2008年1Qまでの12年と3Qの期間のデータが入っているが、この間に、ベンチマークは、SPEC95からSPEC2000に変わり、更に2006年にSPEC2006に変わっている。ベンチマークが新しくなると、含まれるプログラムに追加削除があったり、同じプログラムでも処理する問題規模が大きくなったりという変更があり、以前のベンチマークの性能とは完全な比例関係は成り立たない。

しかし、この図は、長期間の傾向を見ることが目的であるので、移行期間のデータが連続になるように比例係数を調整して、3つのベンチマークの結果を一つの図にまとめている。

図1.1 SPECint_base性能の推移

この図に見られるように、プロセサのSPECint性能は、大体、年率37.4%で向上してきている。つまり、これは2年でほぼ性能が2倍になるペースである。しかし、2004年からの2年間は急ブレーキが掛かっていることが分かる。これは、消費電力と発熱の問題からクロックを上げられず、また、コアを複雑にしても性能向上は僅かということから、各社とも、マルチコア化を推進したことによる。

そして、2006年になってガ~ンと性能が向上して、空白の2年間を取り戻したように見えるが、この性能向上は自動並列化コンパイラを使って、一つのベンチマークプログラムの中でも、並列に実行できる部分をチップ内のマルチコアに並列処理させることによって得られたものである。つまり、単一コアの性能は微増の状態が続いているが、複数コアで並列実行することが可能なプログラムの場合は性能向上が可能であり、SPECintベンチマーク(CPU2006では12本のプログラムが含まれている)全体の幾何平均としては、かなりの性能向上が続いているという状態である。

しかし、整数ベンチマークプログラムに内在する並列性はそれほど大きいものではなく、コンパイラの改良は続くものの、自動並列化コンパイラとコア数の増加による急激な性能向上が長く続くとは考えにくい。従って、今後は、SPECintベンチマークで測定するプロセサの性能は、1966年から2004年までの期間の2年でおおよそ倍増のペースからは大幅にスローダウンすると思われる。

但し、ここで言うSPECintベンチマークは、一つのプログラムの実行開始から完了するまでの時間を計測するSPECint_baseであるが、この他に、複数のベンチマークプログラムを並列に実行してスループットを測るSPECint_rateというベンチマークがあり、こちらはコア数の増加の恩恵を直接的に受けることができる。このため、各社ともマルチコア化に伴い、SPECint_rateの値をアピールするようになってきているので、どちらのベンチマークの性能値であるか注意する必要がある。

また、この性能推移を詳細に見ると1997年以前はより速いペースで性能が向上しており、大局的には、過去から現在に向かって、プロセサの性能向上のペースは鈍化の傾向にあると言ってよい。