PR

 米IntelがCoreマイクロアーキテクチャを採用した製品群を市場に投入し始めた。サーバー市場向けの「Xeon 51xx」(開発コード名Woodcrest),デスクトップ向けの「Core 2 Extreme X6800」「Core 2 Duo E6xxx」(開発コード名Conroe),モバイル向けの「Core 2 Duo T7xxx/5xxx」(開発コード名Merom)」である。旧Xeonと比較して大幅な性能向上を達成したサーバー市場向けXeon 51xxがデータ・センターに本格的に導入され始めた。

 コンピュータの浮動小数点演算能力を計測するLINPACK(HPL)を使って性能と消費電力を計測した結果を表1に示す。LINPACKは,プロセッサの動作周波数と内蔵キャッシュ容量が結果を左右するベンチマーク・プログラムである。計測には,2個のプロセッサと8Gバイトのメモリーを搭載した高性能PCを使用した。WoodcrestとDempseyはデュアルコア・プロセッサ,旧Xeonはシングルコア・プロセッサである。

表1 LINPACKベンチマークの結果
CPU 動作周波数 消費電力 結果(GFLOPS) 結果/コア数
Woodcerst 3.0GHz 267W 25.54 6.39
Dempsey 3.73GHz 332W 25.19 6.3
旧Xeon 3.6GHz 245W 12.07 6.04

 旧世代Xeon,新世代Xeon(Dempsey)は従来のNetBurstマイクロアーキテクチャを採用している。動作周波数はほぼ同じ,コア当たりの性能もほぼ同じだ。一方,Woodcrestは新世代のCoreマイクロアーキテクチャを採用。Woodcrestの性能は,Dempseyと比較して,クロック当たり26%の性能向上が見られる。また,消費電力当たりの性能(=パフォーマンス/消費電力)もシステム全体で26%向上している。プロセッサ単独では40%以上の性能向上があると思われる。

 Coreマイクロアーキテクチャを採用した新世代Core2製品も,Woodcrestと同等のクロック当たりの性能,消費電力当たりの性能を期待できる。Pentiumファミリが色あせてきた。

 1985年にIntel386とMIPS R2000で始まったCISCプロセッサとRISCプロセッサの戦いでは,1995年末に登場したPentium ProでCISCの性能がRISCに追いついた。Pentium Proは,内部でx86命令をRISC風のマイクロ命令(μOP)に置き換えて実行する仕組みになっており,同時に最大でx86命令を3つ解読し,5マイクロ命令を実行できた。命令ユニットで3つの解読器を使い,簡単なx86命令は1対1で,複雑な命令は最大4つのマイクロ命令に置き換えた。それ以上はマイクロ命令シーケンサでマイクロ命令を生成した。生成されたマイクロ命令は,RISCプロセッサと同じように実行した。要するに,Pentium ProはCISCというお面を被ったRISCプロセッサだったのである(参考文献「マイクロプロセッサの25年」,電子情報通信学会誌Vol.82 No.10)。

 大型のコンピュータで開発された性能向上技術が次から次へとマイクロプロセッサに投入されたのもこのころだ。動作周波数を向上させるスーパー・パイプライン,命令の並列化を行うスーパースカラー,分岐予測,投機的命令実行,マルチメディア命令などの技術である。

 やがて,競争は動作周波数に絞られた。軍配は,膨大な資金を新世代半導体プロセスに注ぎ続けたIntelのCISCプロセッサに挙がった。だが,競争に勝ったCISCにも大きな課題が残った。Pentium 4は1次キャッシュにx86命令ではなくマイクロ命令を格納したため一次キャッシュの効率が悪くなった。さらに,高性能化のためには,より高い動作周波数が必須となる。結果,パイプラインの段数は深くなり,膨大なトランジスタが必要となって,クロック当たりの性能も消費電力当たりの性能も低くなってしまった。

 IntelはPentium Proで導入したマイクロアーキテクチャを10年間にわたって使い続けた。いわば,RISCの亡霊に取りつかれた10年だったと言える。半導体プロセスを微細化しても,期待したほどには消費電力を低減できず,消費電力当たりのパフォーマンスを上げることが性能向上への重要課題の一つとなった。クロック数を無駄に消費してしまうようなマイクロ命令とは,別れるべき時期が来たのである。

 本来,CISCとは複雑な命令セットではない。RISC陣営が勝手に付けた名前である。CISCの最大の長所は,遅くて小容量のメモリーを使い,少ないクロック数で命令を実行できることである。それを実現するために,スタック操作を含むメモリー・アクセスと演算命令を複合化した複合化命令セット・アーキテクチャを採用しているのだ。マイクロ命令にも同じことが当てはまる。つまり,マイクロ命令も複合化すればよいのである。

 2003年3月に登場したモバイル用プロセッサPentium Mの開発に当たって,IntelはCoreの前身となる新たなマイクロアーキテクチャを導入し,「マイクロOpsフュージョン」と呼ぶメカニズムを採用した。このメカニズムでは,命令デコーダが2つのマイクロ命令を1つのマイクロ命令に融合(フュージョン:CISCのように複合化)し,実行時に融合していない個々のマイクロ命令として実行する。この複合化によって,x86命令実行時のマイクロ命令の数(≒実行に必要なクロック数)が大幅に減少し,クロック当たりの性能が向上した(参考文献「インテルCentrinoモバイル・テクノロジ」,Intel Technology Journal Volume 7 Issue 2)。

 加えて,スタック操作時のクロック数減少のための専用スタック・エンジンを実装した。さらに,ループなど特定のプログラム・フローを識別して分岐予測の精度を上げるため,「ループ検出器」と「間接分岐予測器」を従来の分岐予測器に追加した。こうしたPeitium Mのマイクロアーキテクチャは,Coreにも受け継がれている。

 パイプラインの段数が少ないのもCoreの特徴だ。パイプラインの段数は,最初のPentium Proでは12段だが,Pentum 4では31段にまで増えていた。これがCore 2では14段に減少した。パイプライン段数の減少はトランジスタ数の削減をもたらし,消費電力当たりの性能が向上した。一般にパイプラインの段数が少ないと,動作周波数は上げにくくなる。だが,新世代半導体プロセスの採用とマイクロアーキテクチャの改良により,高い動作周波数を得ることは決して不可能ではない(次回に続く)。