●性能はクロックで稼ぐアーキテクチャ

■特劇企画・目次

■Pentium 4を一気に普及させる
  Intelのアグレッシブな戦略

□Pentium 4 パフォーマンス分析

■Pentium 4搭載
  オリジナルブランドPCカタログ

パイプライン段数とクロックの関係

 冒頭でPentium 4は386以来の大アーキテクチャ改革だと書いた。では、何が変わったのだろう。Pentium 4の新フィーチャをよく見ると、この新CPUの強みと弱みが浮かび上がってくる。可能性は大きいものの、現状のソフト環境では力を発揮できないというPentium 4の特徴が浮き彫りになる。
 まず、マイクロアーキテクチャでのPentium 4の最大の特徴は「性能はクロックで稼ぐ」と割り切った点だ。Pentium 4のマイクロアーキテクチャは、ひたすらクロックを高めることに最適化されており、そのために異常に深いパイプライン構成になっている。パイプラインを細分化する利点は、1ステージあたりのゲート数が減り、高クロックで駆動できることだ。Pentium 4のパイプラインは分岐予測が外れた場合のステージだけでP6アーキテクチャの倍の20段もある。そのため、ゲート遅延だけを考えるとP6の2倍以上の高クロック化が可能となる。だが、このハイパーパイプラインは、Pentium 4の最大の強みであると同時に弱みとなっている。Pentium 4のベンチマーク結果がふるわない理由のいくつかはパイプライン構造からきているからだ。
 深いパイプラインにはトレードオフがある。それは、パイプライン段数が増えれば増えるほど、条件分岐命令での分岐予測が外れた場合のペナルティが大きくなることだ。予測ミスの場合、分岐先のフェッチから始めなくてはならないので、パイプラインの段数が多ければ多いほど失うサイクルは大きくなり実効性能は下がる。
 そのため、Pentium 4のマイクロアーキテクチャは、このペナルティを減らすことを第一に作られている。その一例がトレースキャッシュだ。Pentium 4では、x86命令をPentium 4の内部命令「μop」に変換するx86命令デコーダを、1次命令キャッシュであるトレースキャッシュの前に出した。そのため、トレースキャッシュにヒットし続ける限り、デコードが必要なく、パイプラインが短くなる。
 Intelはこのトレースキャッシュにかなりの容量を確保している。トレースキャッシュには、最大12,000個のμOPを搭載できるので、もしμOPのサイズが多くのRISC CPU同様に32bit長だったらその物理サイズは「4byte×12K=48KB」となる。これはL1データキャッシュがわずか8KBであることと比べるとかなり大きい。また、トレースキャッシュでは、分岐によるトレース(実行されるパス)をたどり、必要なコードだけを効率的に格納している。そのため、実際に格納できるコードの量では、64KBのL1命令キャッシュを持つAthlonに匹敵する可能性がある。このほかにも、Pentium 4のマイクロアーキテクチャでは分岐予測機能を強化するなど、分岐ミスのペナルティを減らす工夫を行なっている。
 だが、どれだけ工夫をしようとも、やはり分岐ミスのトレードオフは大きい。そのため、Pentium 4では、クロックあたりの性能は、ほとんどのコードであまり期待できない。これは、ベンチマーク結果にもよく現われている。とくにオフィスアプリケーションなどでは、コードに分岐が多いはずなので性能は発揮しにくい。性能を出しやすいのは、どちらかというと繰り返しが多いマルチメディア系アプリケーションになるはずだ。
 だが、こうしたことは、Pentium 4の設計思想が「性能はクロックで稼ぐ」ことである以上、覚悟の上だったと思われる。同じ0.18μmプロセスで比べると、Pentium 4の最高クロックは2GHzに対してPentium IIIは1.13GHz止まり。Intelとしては、この最高クロックで両アーキテクチャを比較してほしいところだろう。

Pentium 4のパイプライン

 

Pentium IIIとPentium 4の比較

   PentiumⅢ Pentium 4
クロック
1GHz
1.5GHz
  0.18μmでの最高クロック(推定)
1.13GHz
2GHz
パイプライン
 
 
  ミスプレディクト時
10段
20段
L1命令キャッシュ
16KB
最大12,000個のμOPを格納
L1データキャッシュ
 
 
  ロードレイテンシ
3クロック
2クロック
  サイズ
16KB
8KB
  メモリ帯域
16GB/s
48.0GB/s※
  1クロックでロードできるbit数
128bit/cycle
256bit/cycle
L2キャッシュ
  
  
  サイズ
256KB
256KB
  アソシエイティビティ
8way
8way
  キャッシュライン
32byte
128byte
  メモリ帯域
16GB/s
48.0GB/s※
  1クロックでロードできるbit数
128bit/cycle
256bit/cycle
分岐予測
  
  
  ブランチターゲット
512
4,092
インフライトで制御できるオペレーション数
 
 
  命令
40
126
  ロード
16
48
  ストア
12
24
FSB
  
  
  帯域
1GB/s
3.2GB/s
  クロック
133MHz
100MHz