後藤弘茂のWeekly海外ニュース

8コアCPUを低コストに実現したBulldozer



●次の戦いは8コアデスクトップCPU

 AMDが今年(2011年)中盤に投入する新アーキテクチャCPU「Bulldozer(ブルドーザ)」の、実際のチップの設計が明らかになった。米サンフランシスコで先週開催された半導体カンファレンス「ISSCC(IEEE International Solid-State Circuits Conference)」で、CPUコアモジュールであるBulldozer Moduleの概要が明らかにされた。

 Bulldozer Moduleは、2個のCPUコアを融合させたモジュールで、32nm SOIプロセスで製造される。ISSCCでは、このBulldozer Moduleが、2MBのL2キャッシュを含めて30.9平方mmのサイズであることが明らかにされた。AMDは、Bulldozer Moduleを4個搭載した8コア相当のCPUダイ「Orochi(オロチ)」を、今年中盤からハイエンドデスクトップとサーバーに投入して行く予定だ。

Bulldozerのモジュール
PDF版はこちら
Bulldozerのモジュールとユニット
PDF版はこちら
Bulldozerのダイ
PDF版はこちら

 Intelも今年後半にはSandy Bridgeアーキテクチャの8コアを投入する予定で、ハイエンドデスクトップは8コアへとシフトして行く。IntelとAMDのどちらも、ハイエンドデスクトップは、ヘテロジニアス(Heterogeneous:異種混合)構成(CPU+GPU)ではなく、ホモジニアス(Homogeneous:均質)なCPUのSMP(Symmetric Multi-Processing)構成を継続して、しばらくはCPUコア数を増やし続ける。

 しかし、同じ8コアでも、AMDのBulldozer系とIntelのSandy Bridge系ではいくつか大きな違いがある。それを象徴するのがダイサイズだ。

 Bulldozer Moduleから逆算すると、BulldozerベースのOrochiのダイサイズは300平方mmを切ると推定される。AMDの現行の6コア「Istanbul(イスタンブール)/Thuban(トゥバン)」のダイサイズは45nmプロセスで346平方mmなので、製造コストは原理的に6コア版より低くなる。それだけ、Bulldozer Moduleがコンパクトなサイズであることを示している。

 Bulldozerのサイズを、Intelの8コアSandy Bridgeと比較するとさらに違いは明瞭だ。今回のISSCCでは、Intelも8コアSandy Bridgeの概要を公開している。Intelは、ハイエンドデスクトップとサーバー向けにSandy Bridge-EN系を、上位のサーバー向けにSandy Bridge-EPとEXを投入しようとしている。いずれも8コアSandy Bridgeだ。現在はPCI Express 3.0のスケジュールのずれのために計画が若干後退しているが、AMD同様にハイエンドデスクトップにも8コアが来る見込みだ。

BulldozerとSandy Bridgeの8コアの比較
PDF版はこちら
CPUダイサイズの移行図
PDF版はこちら

●アーキテクチャ思想の違いを反映する8コアCPUのサイズ

 今回ISSCCで発表されたSandy Bridge 8コアのダイのサイズは約400平方mm。Orochiと比べると30%ほど大きい。もちろんハイエンドCPUは高価格であるため、ダイサイズによるコスト差は吸収しやすい上、IntelはAMDより体力があり、高コストでも製品をそれなりの価格で投入できる。また、IntelのアーキテクチャではSMTにより並列実行スレッド数は実際には16スレッドで、多マルチスレッディングはサーバーでは利点となる分野がある。そのため、ダイサイズの差は決定的なものではないが、両アーキテクチャの違いを際立たせている。

 BulldozerとSandy Bridgeの違いを産んでいるのはCPUコアのサイズだ。Sandy Bridge 8コアは、DRAMチャネル数も多く、PCI Expressも多レーン実装しているなど周辺ユニットもOrochiより多いが、CPUコアのサイズ違いの方が決定的だ。大まかに言えばSandy Bridgeの1 CPUコアのサイズは、1個のBulldozer Moduleのサイズに近い。“コア”という数え方なら、Sandy Bridgeコアの方がずっとファットだ。

 しかし、ファットな理由もある。Sandy Bridgeは1コアで2スレッドを実行できるSMT(Simultaneous Multithreading)のHyper-Threadingを実装。さらに、AVXも各コア毎に256-bit幅SIMD(Single Instruction, Multiple Data)の乗算と和算の2ユニットを実装する。

 それに対して、Bulldozerは2コアの1モジュールで2スレッド、SFUは2コアで共有でAVXはSSE用の128-bit幅SIMD積和算ユニットを2つ組み合わせて実行する。こうした違いは、両CPUのアーキテクチャの根本的な発想から生まれている。

Bulldozerのアーキテクチャ
PDF版はこちら

●クラスタードアーキテクチャとSMTの選択の違い

 CPUリソースのパーティショニングという観点からアーキテクチャを比較するとわかりやすい。現在のCPU設計の焦点の1つは、マルチスレッディング性能で、どうやってダイ当たりのマルチスレッディング性能を高めるかを競っている。現在のx86 CPUでは、大きく分けて3つのアプローチが採用されている。

 概念的には、2つのスレッドそれぞれに独立したリソースを備えるのが従来のCMP(Chip Multiprocessor)のデュアルコア。逆にほとんどのリソースを2つのスレッドで共有するのがHyper-ThreadingなどのSMT。一部のリソースは共有するけど、重要なリソースはスレッド毎に持つのがBulldozerのクラスタードアーキテクチャとなる。

マルチスレッディングの比較
PDF版はこちら
Bulldozerアーキテクチャのスレッディング
PDF版はこちら

 CMPはそれぞれが独立したリソースを持つためシングルスレッドパフォーマンスは最も高くなるが、リソースは2倍必要となる。SMTはマルチスレッド化のリソースは最小で済むが、リソースの競合でスループットが落ちるケースが出る。

 Bulldozerのクラスタードは、ちょうどCMPとSMTの中間の利点を持つ。デュアルコアより効率的に実行スレッド数を増やすことができる。SMTのようなリソースの競合による、予期しないパフォーマンスの低下も少ない。AMDは、クラスタードアーキテクチャでは、CPUコアのリソースを50%増やすだけで、80%スループットが上がると説明して来た。AMDが、4 Bulldozer ModuleのOrochiを8コアと呼ぶのは、8コアに匹敵するパフォーマンスを発揮できると踏んでいるからだ。

 そのため、Bulldozerの利点は、効率的にCPUコア数を増やすことができる点となる。それぞれのアーキテクチャでの8コアを実現する場合を理論上で検証すると下の図のようになる。Orochiダイは、まさに、こうしたBulldozerアーキテクチャの利点を示している。

Bulldozerの利点
PDF版はこちら

 実際には、Sandy Bridge 8-coreとOrochiを比べると、Sandy Bridgeの方がはるかにダイ面積の効率が良い設計となっている。例えば、コア間をつなぐリングバスはキャッシュSRAMの上の配線層にほとんどが実装されており、あまり面積を取っていない。それに対して、Orochiではクロスバーが中央部を占めている。全体で見ると、ダイに対するCPUコアの比率はSandy Bridgeの方が大きい。それだけコア以外のユニットの比率が少なく効率的だ。にも関わらず、Bulldozerの方が8コアでダイが小さいのは、CPUアーキテクチャの違いによるものだ。

●K10と大きく異なるBulldozer Moduleのダイレイアウト

 Bulldozer Moduleは、フロムスクラッチで真っさらから設計されたため、従来のAMD K10(Hound)コアとは大きく異なっている。Bulldozer ModuleとK10コアを見比べると、違いは明瞭だ。AMDの低コスト低消費電力向け新CPUアーキテクチャである「Bobcat(ボブキャット)」と比べても、ダイレイアウトは大きく異なる。

BulldozerとLlanoとBobcatの比較
PDF版はこちら

 Bulldozer Moduleのレイアウト上で、まず目立つのは、フロントエンドの大型化だ。LlanoのK10コアと比べると、命令フェッチ&デコード、分岐予測を司るフロントエンドがはるかに大型化している。

 Bulldozerアーキテクチャでは、2コアが1つのフロントエンドを共有する。4命令をフェッチ&デコードして、それを内部命令uOPに変換して実行コアにディスパッチする。共有フロントエンドは、2コア分の命令デコードを担うようになったこともあり、相対的に機能が強化されている。

BulldozerとLlanoのユニット比較
PDF版はこちら

●L1データキャッシュの違いが大きい整数コア

 Bulldozer Moduleでフロントエンドの下に配置されているのは、2個の整数コアだ。2 CPUコアを融合させたBulldozer Moduleは、整数演算&ロード/ストア系のコアを2個持っている。Bulldozer Moduleのレイアウトを見ると、2コアに分離されていることが明瞭にわかる。

 整数コアは、それぞれ、整数実行(Integer Execution)ブロックと、ロード/ストアブロック、それにL1データキャッシュで構成されている。面積的には、K10の整数コアの方が2割ほど大きいが、その大半はL1データキャッシュの差だ。K10では64KBだったL1データキャッシュが、Bulldozer Moduleでは各コア16KBに減っている。これによって、コアがかなりコンパクト化されていることがわかる。

 整数演算ブロックのサイズは、Bulldozer ModuleとK10でそれほど大きくは違わない。ロード/ストアはBulldozerの方がやや大きい。これは、アーキテクチャを考えると奇妙に思えるかもしれない。なぜなら、Bulldozerでは各整数コアの実行パイプは2本、ロード/ストアパイプは2本の合計4パイプ。それに対して、K10では整数演算パイプは3本、ロード/ストアパイプが3本の合計6パイプだからだ。しかし、実際にはBulldozerの整数演算パイプは全く作り替えられており、単純にパイプ数で比較ができない。ブロックの中身は全く違い、効率性も異なる。

AMDアーキテクチャの比較
PDF版はこちら
Bulldozerの整数コア
PDF版はこちら

 2個の整数コアの下に位置するのが浮動小数点(FP)ユニットだ。従来のK10は128-bitの乗算ユニットと加算ユニットの2ユニットと、他の処理を担当するユニットを備えていた。Bulldozerでは、128-bitの積和算ユニットが2ユニット分と、その他に2命令を処理できるユニット群を備えている。イメージ的には、従来の2パイプのFP演算ユニットを、それぞれ積和算ユニットにした。スループットは積和算時には倍になるが、面積的には倍にはなっていない。

Bulldozerの浮動小数点ユニット
PDF版はこちら

 これらのユニットの右に位置し、L2キャッシュに隣接するのがキャッシュユニット(CU)だ。キャッシュユニットは名前の通り、L2キャッシュへのインターフェイスと制御、L2データTLBなどを備える。L2キャッシュは2MBで6T SRAM。64-Byte(512-bit)のキャッシュラインサイズで16-wayだ。

●徹底した省電力化が行なわれた

 Bulldozer Moduleの周囲は狭いラインでぐるりと囲まれている。これはモジュールに供給する電力をオフにするためのパワーゲーティング「VSS power gating (CC6)」のリングだ。パワーゲーティングによってアイドル状態のCPUコアへの電力供給を完全にストップし、それによってモジュールのリーク電流を95%までカットする。Bulldozerでは、2 CPUコアを融合したモジュールとL2キャッシュの単位でパワーゲーティングを行なう。ちなみに、L3キャッシュについては、より小さな単位でパワーゲーティングを行なっている。こうしたフィーチャは、AMDがBulldozerをモバイルにも適用させようという意欲が強いことを伺わせる。

Bulldozerの消費電力
PDF版はこちら

 Bulldozerの省電力性は、3つのレベルで達成されている。

 1つはプロセス技術で、AMD CPUは32nmプロセス世代から、HKMG(High-K/Metal Gate)技術になる。高誘電率(High-k)の材料を使うことでゲート絶縁膜を厚くできるため、ゲートからの電子の漏れを減らすことができる。HKMGはいち早く45nmでIntelが採用していたが、AMDが製造を委託するGLOBALFOUNDRIESも32nmプロセスから採用した。そのため、BulldozerやLlanoなどAMDの32nm CPUはプロセス技術面である程度リーク電流を抑えられるようになった。

 加えて、AMDはBulldozerでは、リーク電流の少ないトランジスタを多用した。AMDはこれまで、CPUの中でしきい電圧(Vt)の異なるトランジスタを使い分け、しきい電圧が高くリーク電流の少ない高Vt(HVt)デバイスを多用して来た。しかし、Bulldozerでは、HVtトランジスタの比率を下げ、しきい電圧は標準(RVt)でも、チャネル長の長いトランジスタ(LC-RVt)を多く採用した。より低い電圧で高いパフォーマンスを出せるためだという。今回はBulldozer Moduleのコア部分のトランジスタの53%が、チャネル長の長いLC-RVtで占められている。

 Bulldozerでは、回路設計とアーキテクチャのレベルで省電力化が徹底して図られている。回路設計では、ファイングレインのクロックゲーティング、Soft-Edge Flip-Flops (SEF)、8T(トランジスタ) SRAMセルなど。クロックアクティビティは、従来のK10と比べてBulldozer Moduleではずっと小さくなっている。アーキテクチャ面で大きいのは、物理レジスタによるデータ移動の削減だ。アーキテクチャレベルの省電力化は、フロムスクラッチで開発されたBulldozerならではだ。

Bulldozerモジュールのクロックアクティビティ
PDF版はこちら