IntelのFred Pollack氏は、1999年のMicro32の基調講演において次の表1.1のデータを示し、同一テクノロジで作られた2つのアーキテクチャのチップを比較すると、チップ面積は2~3倍になっている。しかし、性能は1.5~1.7倍にかしなっていない。我々は二乗則の悪い側(wrong side)にいると述べた。
表1.1 Pollack氏がMicro32の基調講演で示したデータ
テクノロジ | 旧アーキテクチャ | 新アーキテクチャ | 面積比率 | ||
---|---|---|---|---|---|
チップ名 | 一辺長 | チップ名 | 一辺長 | ||
1.0μm | i386C | 6.5mm | i486 | 11.5mm | 3.1 |
0.7μm | i486C | 9.2mm | Pentium | 17.0mm | 3.2 |
0.5μm | Pentium | 12.2mm | Pentium Pro | 17.3mm | 2.1 |
0.18μm | Pentium III | 10.3mm | Next Gen | ? | 2~3 |
その昔のメインフレームの時代には、性能は価格(~トランジスタ数に相当)の2乗に比例するというGroschの法則が成り立っており、「二乗則の悪い側」(2乗ではなく、反対の1/2乗)という表現は、このGroschの法則を踏まえたものである。つまり、Pollack氏は、物量と性能の関係は一定ではなく変化すると捉えていたと思われるが、世間では、この表のデータだけから、性能はトランジスタ数の1/3~1/2乗に比例するという固定した関係をPollack's Rule(日本語ではポラックの法則)と誤解しているようである。
素子数が不足なので32ビット演算器が作れず、8ビットづつ4回計算していたマイクロアーキテクチャを32ビット演算器で1回で処理できるように強化しても、演算器に必要なトランジスタ数はほぼ4倍に増えるが、レジスタのビット数は変わらないので全体の素子数は4倍にはならない。一方、演算性能は4倍近くに向上する。これがGroschの法則が成り立っていた時代である。しかし、一つの演算を1回で実行できるハードウェアが作れるだけの素子が使えるようになると、効果の大きい、うまい話はだんだん減ってきて、ハード量の増加に対する性能の向上は徐々に鈍化する状況にあるというのが正しい認識であると思われる。
話が横道にそれるが、半導体設計のオリンピックとも言われるトップレベルの学会であるISSCC(International Solid-State Circuit Conference)の2001年の基調講演で、IntelのGelsinger氏が、チップの発熱密度が指数関数的に増加してきており、既にホットプレートを超え、原子炉の発熱密度に近づいており、2008年にはロケットノズルの発熱密度になるという図を示して話題になったが、実は、この図は前述のMicro32でのPollack氏の基調講演のスライドに含まれている。違いは、Pollack氏は横軸を半導体の世代で示していたものを、Gelsinger氏のスライドでは暦年で示している点だけである。
次の図1.2に、ISSCCで発表されたマイクロプロセサのクロック周波数とトランジスタ数の推移を示す。
図1.2 ISSCCで発表されたプロセサのクロックとトランジスタ数の推移 |
平均的にクロックは年率27.7%で向上しており、年率37.4%の性能向上の大部分はクロック向上によるものであり、(クロック向上により、メモリアクセスのサイクル数が増加して性能が下がる効果などを無視すると)1クロックあたりの性能向上は、年率7.6%に過ぎない。これを年率52%のトランジスタ数の増加とコンパイラの改良で実現している訳で、コンパイラによる改良を無視したとしても、この20年の性能向上率はトランジスタ数の0.175乗でしかない。
但し、このトランジスタ数の大部分はキャッシュメモリのトランジスタであり、プロセサコアだけのトランジスタ数で見ればこの数字はもう少し大きくなり、Pollack's Ruleの1/3乗に近づくのであるが、大容量のキャッシュも性能向上には寄与しており、プロセサコアだけのトランジスタ数で計算するというのも妥当性を欠くと思われる。
また、クロック向上の主因は半導体の微細化による性能向上であるが、後に述べるパイプラインの細分化のように、マイクロアーキテクチャによるクロック周波数の向上も無視できない要素であり、それぞれの性能改善要因の貢献度を分離して議論することは難しい面がある。
というのが現状であるが、2000年ころまでのマイクロプロセサはシングルコアであり、キャッシュの量もそれほど巨大ではなく、プロセサコアのトランジスタ数の増加により1クロックあたりの性能を向上した時代であった。使用できるトランジスタ数の増大を利用して、各種のマイクロアーキテクチャ的な機構が考案され、1クロックあたりの平均実行命令数を向上させていった時代である。
本稿では、初期の単純なプロセサ構造から、これらの性能向上を実現した主要なマイクロアーキテクチャ機構について述べて行く予定である。