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

AMDの新CPU「FX-Series(Zambezi)」の設計思想



●CPUの変革のビジョンをあまり強調しないAMD

 AMDのBulldozer(ブルドーザ)がいよいよ市場に姿を現す。CPUコアのアーキテクチャを一新したBulldozerは、AMDのCPU史の中でエポックメイキングなCPUだ。従来のx86 CPUは、基本的にはシングルスレッドの性能のために開発したマイクロアーキテクチャをマルチコア化して来た。それに対して、BulldozerでAMDは、マルチスレッド性能への最適化へと舵を切った。CPUアーキテクチャの方向性の大きなターンであり、スレッド並列とデータ並列へと重点を移すAMDの戦略を具体化している。

 もっとも、現在のAMDの経営陣がこの戦略にどれだけ確信を持っているかは判然としない。AMDはデスクトップ版Bulldozer「AMD FX-Series(Zambezi:ザンベジ)」の投入では、こうした戦略的なビジョンはほとんど強調していないからだ。サーバー版Bulldozerの投入時に仕切り直しで、そうした説明を行なうのかも知れない。しかし、少なくとも現時点ではデスクトップ版Bulldozerは、コア数が多く動作周波数の高いCPUとしてプッシュされている。

 しかし、Bulldozerコアの真の意義は、AMDがCPUアーキテクチャの方向性を修正したことにある。従来のように、Intelとシングルスレッドの性能向上で競うのではなく、ダイ(半導体本体)当たりのマルチスレッドのスループットを大幅に引き上げることを目指す。ただし、マルチスレッドに振ってシングルスレッド性能を大幅に落とすのではなく、PCとして充分なシングルスレッド性能も維持する。CPUのパフォーマンスのバランスを再考すると言い換えてもいい。

 Bulldozerの設計思想は明瞭であるため、AMDは本来なら、これが今後のCPUの方向性だと強力にメッセージを打ち出すべきだ。とはいえ、実際には、アプリケーションやベンチマークは、そうしたビジョンに追いついていない。そのため、アーキテクチャの方向性が変わるというビジョンを、AMDはPCでは打ち出しにくい状況にある。

Bulldozerアーキテクチャ(PDF版はこちら)
AMDのアーキテクチャ比較(PDF版はこちら)
4 BulldozerモジュールのOrochiのダイ(PDF版はこちら)
Orochiの全体アーキテクチャ図(PDF版はこちら)
AMD CPUのクロックの比較(PDF版はこちら)

●クラスタードアーキテクチャを取ったBulldozer

 Bulldozerアーキテクチャを原点に立ち戻って整理すると、ポイントはマルチスレッディングの方式にある。

 下は、PC向けCPUのマルチスレッディングアーキテクチャを比較した図だ。一番上は普通のマルチコアアーキテクチャ「CMP(Chip Multi-Processor)」だ。中央が今回のBulldozerのアーキテクチャで、「クラスタベースド(Cluster-based)マルチスレッディング」とAMDは呼んでいる。クラスタードアーキテクチャと呼ばれることも多い。一番下はSMT(Simultaneous Multithreading)アーキテクチャなどで、IntelのHyper-Threadingが代表だ。

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

 この図は、2スレッドを並列実行する場合に、コアのリソースをどれだけスレッド間で共有するかを比較したものだ。

 一番上のCMP型のデュアルコアは単純にシングルスレッドしか実行できないCPUコアを2つ束ねるだけだ。この場合、リソースの共有はキャッシュなどごく一部に限られる。そのため、それぞれのCPUコアは全く邪魔されることなく、フルスピードで各スレッドを走らせることができる。パフォーマンスは高いが、CPUコア2つ分のリソースをまるまる実装する必要があるため、実装コストも高い。CPUコア1個分100%のコストで、100%のパフォーマンスアップが理論上得られる。もちろん、 実際にはバスとメモリの競合があるため、100%アップとは行かないが、スレッド当たりの性能は一番高くなる。

 それに対して、図の真ん中のAMDがBulldozerで採用したクラスタードアーキテクチャでは、CPUコアのうち、共有することで性能へのインパクトが少ない部分は共有リソースとし、性能への影響が大きい部分だけをそれぞれのスレッド専用リソースとして残す。CPU“コア”という言葉の定義自体が従来のCPUとは異なる。

 クラスタードアーキテクチャの利点は、そこそこの実装面積で、高いマルチスレッドスループットが得られることだ。AMDは、シングルコアに対して50%のリソース増加で、80%のスループットアップが得られると説明して来た。単純計算では、デュアルコアの75%のリソースで、デュアルコアの90%のパフォーマンスが得られることになる。

Bulldozerモジュールのダイ(PDF版はこちら)
Bulldozerモジュール(PDF版はこちら)

 各スレッドにかなりの占有リソースを割くクラスタードに対して、SMTはほとんどのリソースを2つのスレッドが共有する。レジスタやバッファなど一部のリソースだけを各スレッド専用とする。発想的には1個のCPUコアを拡張して2スレッドを走らせることができるように拡張したものだ。

 SMTの利点は実装コストが比較的小さく済む点。Intelの例では数%の付加で、2スレッドを実行できるようにしている。パフォーマンス面では、スレッド間のリソースの競合が発生する場合があるため、各スレッドの性能が落ちる場合があり、性能が予測しにくい。スレッド間のリソースの競合を緩和するためには、リソースを増やす必要が出てくる。ただし、SMTコアは、シングルスレッドで走らせれば、高性能なシングルスレッドコアになる。シングルスレッド性能の呪縛が残っている場合は、悪くない選択となる。言い換えれば、シングルスレッド性能を重視しながら、マルチスレッド性能を高めるための手法だ。

●モジュールの60%近くが共有リソース

 こうして見ると、CMPとクラスタードとSMTの違いは、CPUリソースのパーティショニング(仕分け)も違いであることがわかる。AMDのBulldozerでは、整数コアでのスレッドの競合を避けつつ、フロントエンドと浮動小数点演算ユニットを共有することで、2スレッドを実行するモジュールの面積を抑えることだ。それによって、一定のダイ(半導体本体)上に、より多くの“モジュール”を搭載し、マルチスレッドのスループットを高めようとしている。

Bulldozerの利点(PDF版はこちら)

 Bulldozerのリソース共有はより詳しくは下の図のようになっている。両側のブルーの部分が各スレッド占有のリソース。真ん中のイエローの部分が、細粒度でスレッド切り替えを行なう部分、真ん中のレッドの部分が2つのスレッドを同一サイクルで並列実行できる部分となっている。

Bulldozerモジュールのマルチスレッディング(PDF版はこちら)

 実際のダイを見ると、リソースの共有化でサイズを抑えるBulldozerの思想がよくわかる。下はBulldozerモジュールをスレッドのパーティショニングによって大まかに色分けした図だ。ブルーがシングルスレッドの占有リソース、イエローがスレッド切り替えるリソース部分、レッドがスレッドを混在可能な部分となっている。シングルスレッドの占有リソースはL2回りを除いた部分の約40%強を占めている。残りの60%近くは共有リソースだ。

Bulldozerモジュールのスレッド色分け(PDF版はこちら)

 Bulldozerモジュールを同じ32nmプロセスのAMDのAシリーズAPU(Llano)と較べると下の図のようになる。Bulldozerモジュールのコア部分のサイズは、Llanoのコアの約2倍弱のサイズだ。つまり、機能強化したコアを2個融合させたモジュールが、前世代のコア2個分とほぼ同じ大きさに収まっている。AMDはK10コアからBulldozerコアでは、各整数コアの実行リソースを2/3に減らしたが、その効果でBulldozerモジュールはコンパクトになっている。FPユニットも1個にまとめられたことで、128-bitのSIMD(Single Instruction, Multiple Data)積和算ユニットを2個持つ割にはコンパクトに収まっている。

BulldozerモジュールとLlanoコアの比較(PDF版はこちら)
AMD CPUコアサイズの比較(PDF版はこちら)
Bulldozerの浮動小数点ユニット(PDF版はこちら)

●Sandy Bridgeよりずっと小さな“コア”サイズ

 こうしたアーキテクチャの結果、AMDはBulldozerベースの8“コア”で、Intelの6コアを迎え撃つことができる。下は8コア4モジュールのBulldozerのOrochiダイと、Sandy Bridgeの8コアのダイを、ほぼ同縮尺で比較した図だ。同じ8コアのディスクリートCPUでも、ダイサイズがかなり異なることがわかる。Sandy Bridgeの方が大きい。6コアの「Sandy Bridge-E」が6コアのダイだとしても、BulldozerのOrochiと同程度のサイズにしかならないと推測される。つまり、Bulldozerの8コアは、ダイサイズ的にはSandy Bridgeの6コアに相当すると見られる。

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

 さらによく見ると、Sandy BridgeのCPUコアのサイズは、Bulldozerモジュールとそれほど変わらない。つまり、2コア分を融合させたAMDのモジュールは、IntelのCPUコア2個分というコンパクトな実装となっている。周辺機能モジュールがあるため、コア数で2倍の差にはならないが、8コアに対して6コアと4:3の優位を保つことができる。

 もっとも、Sandy Bridgeコアはダイエリアが大きい分だけ、単体でのクロック当たりのパフォーマンスが高い。また、SMTでのマルチスレッド実行ができる。そもそも、Bulldozerアーキテクチャでのコアは、単純にIntelのSMTコアと同等ではない。そのため、“コア”を、アップルツーアップル(同等のものとして)の比較はできない。

 しかし、Sandy BridgeとBulldozerで、アーキテクチャの基本的な思想が大きく異なることは明瞭だ。これまでは、IntelもAMDも、大まかには同じ方向で、どんどんCPUコアを大きくしてシングルスレッドの性能を上げる方向に来た。しかし、ここからは、両社の考え方は分かれる。AMDのアーキテクチャ改革のタイミングが適切なのかどうかは、将来判断されることになるだろう。