Intelから新しいCPU、Pentium 4が発表された。Pentium 4は、IntelのCPUとしては1995年に発表されたPentium Pro(P6アーキテクチャ)以来、5年ぶりに、まったく新しいマイクロアーキテクチャ(NetBurstアーキテクチャ)を採用したCPUである。従来のPentiumIIIとは、命令の処理プロセスは大きく異なり、また物理的、電気的仕様も異なる。ここでは、そのPentium 4の概要の解説と、注目のパフォーマンスをベンチマークテストによって明らかにしていこう。
Pentium IIIの後継となる新32bitプロセッサ「Pentium 4」。動作クロックは1.4GHzと1.5GHzの2種類。ソケットのピン数は423ピン。トランジスタ数は4200万個(Pentium IIIでは2800万個)で、アルミニウム配線による0.18μmプロセスによって製造されている。 |
20ステージパイプライン装備の高クロック追求構造
マルチメディア性能にフォーカス
まず、Pentium 4の主な特徴は次のとおり。
- 20ステージパイプラインの導入
- 実行トレースキャッシュ
- 高速実行エンジン
- 400MHzのFSB
- SSE2(Streaming SIMD拡張命令)の実装
まず、20ステージというきわめて長いパイプラインを導入したことは大きな特徴である。パイプラインとは、命令の処理を小さな手順に分けて少しずつベルトコンベアのように流れ作業で行う機構。Pentiumでは5ステージ、PentiumIIIでは10ステージだったのだが、Pentium 4では20ステージにまで増やした。パイプラインの段数を増やすということは各ステージごとの処理の負担は軽くなり、速く動けることになる。つまり高クロックを実現しやすくなるということだ。
しかし、パイプラインのステージ数を増やすことにデメリットがないわけではない。Pentium以降のCPUでは「逆順実行」「投機実行」といった機能を有している。逆順実行とは、「前の命令が終了していなくとも、後続命令のうち実行可能になったものはどんどん実行してしまう」というもの。また、投機実行とは「プログラムの途中に条件分岐判断が含まれていて、判断材料がまだ揃わない状況でも適当に実行してしまう」という機能。「適当に」といっても、サイコロを振って決めるのではなく、「分岐予測」という、この条件判断を正しく予測するための機能も持っている。予測が外れた場合は当然その命令の実行は無効になってやり直しが発生し、パイプラインのステージが増えれば増えるほど、予測が外れた時のロスは大きくなる。20ステージのパイプラインで予測が外れるということは、「20クロック近いやり直しのロス」が発生するということだ。
Intelも、「整数演算命令を多用したビジネス系アプリケーションは複雑な分岐命令を多く含むため予測が難しいということを認めたうえで、ビジネス系アプリケーションはすでに十分に高速であり、これ以上の高速化は必要とされていない」と割主張している。その一方、浮動小数点演算命令やマルチメディアアプリケーションに含まれる分岐コードは非常に予測しやすいもので、パイプラインが長くてもマイナスにはならず、高クロック動作の恩恵だけを存分に受けることができる。Intelでは、ことあるごとに「Pentium 4はオーディオやビデオのエンコード、レンダリングといったマルチメディア処理にフォーカスしたCPUだ」ということをアピールしている。
もちろん、予測ミスのロスを減らすための対策もされている。Intelによれば、Pentium 4の分岐予測の精度はPentiumIIIの3倍にまで高めたという。また、「実行トレースキャッシュ」も予測ミスのオーバーヘッドを最小限にとどめるための工夫のひとつ。実行トレースキャッシュとは、従来の一次キャッシュ(の命令キャッシュ)にあたるもので、容量は従来のように~KBという単位ではなく、命令の個数単位、12Kμopとなっている。このμopとは何か? Pentium4では、従来PentiumIIIなどと同様に、x86命令を(複雑なx86よりも実行ユニットにとって高速で実行しやすい)独自形式にあらかじめデコードしたうえで実行ユニットに送る。このデコード後の命令がμopである。従来の一次キャッシュはx86命令のままキャッシュしていたが、Pentium4の一次キャッシュはμopの状態で12K個まで格納できる。
PentiumIIIではこのデコードプロセスもパイプラインに含んでいたが、Pentium 4ではパイプラインの外(前段階)に出した。20ステージの前にさらに数クロックのプロセスが隠れていることになるが、キャッシュに命令が残っている場合は、PentiumIIIでは5クロック要していたデコードプロセスを省けることになる。やはり、予測ミス時のロスを最小限にとどめるためだろう。もっとも、キャッシュに命令が残っていなければさらに数クロックのロスとなるのだが。そういう事態は稀との判断だろう。また、1クロック内に2回命令を実行できるという驚異の整数演算ユニット(高速実行エンジン)も、実は予測ミスのロスをカバーするためのものという性格が強いようだ。
さて、Pentium 4はマルチメディア性能強化のため、SIMD(Single Instruction Multiple Data)演算命令が大幅に強化されている。144の新しい命令セット(SSE2)を追加したほか、128bitレジスタを使って、64bit(倍精度)のSIMD浮動小数点演算、128bitの整数SIMD演算が可能となっている。これらを有効に活用すれば、マルチメディア性能は劇的に向上する。
マルチメディアにフォーカスしたことに伴い、大量のデータのやりとりを行うためにバスの帯域にも大きな変革を施している。まず、CPUとチップセット間のバスであるFSBは400MHz(64bit)という高速でデータ転送を行い、3.2GB/秒という帯域を実現した。この400MHzという高クロックは、Quad Pumpと呼ばれる方式で実現している。Quad Pumpとは、システムクロックの100MHzから倍クロックのストローブ信号を生成し、さらにそれの位相をずらしたコピーを生成、それぞれのクロックの立ち上がりでデータ転送を行う方式である。
FSBの帯域増加にともない、チップセットとメインメモリ間のバス帯域も大幅に向上させている。IntelがPentium 4用に用意したチップセット「i850」では、PC800(PC600も使用可)のDRDRAMのインターフェイスを2チャネル使用し、3.2GB/秒(PC600の場合は2.4GB/秒)の帯域を実現している。ちなみに、PentiumIIIやAthlonとの比較表を掲載したが、マイクロアーキテクチャが大幅に変更されていることから、従来のようなキャッシュ容量や速度の単純な比較はあまり役に立たないかもしれない。
Pentium 4 | Athlon | PentiumIII | |
整数演算ユニット | 2(倍速) | 3 | 2 |
---|---|---|---|
浮動小数点演算ユニット | 2 | 3 | 1 |
一次キャッシュ(命令/データ) | 12Kμop/8KB | 64KB/64KB | 16KB/16KB |
二次キャッシュ | 256KB(256bitフルスピード) | 256KB(64bitフルスピード、Exclusive) | 256KB(256bitフルスピード) |
二次キャッシュ帯域 | 48GB/秒(1.5GHz時) | 9.6GB/秒(1.2GHz時) | 16GB/秒(1GHz時) |
FSB | 400MHz(100MHzQDR) | 200/266MHz(100/133MHz DDR) | 133MHz |
FSB帯域 | 3.2GB/秒 | 1.6/2.1GB/秒 | 1.07GB/秒 |
メインメモリ最大帯域 | 3.2GB/秒(RDRAM2チャネル) | 1.07GB/秒(PC133 SDRAM)/2.1GB/秒(DDR SDRAM) | 1.07GB/秒(PC133 SDRAM) |