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

偽のダイ写真で秘密を守るAMDのBulldozer



●Bulldozerへと全面移行する2012年のAMD CPU

 AMDは2012年には、メインストリームのPC向けCPUアーキテクチャを、現在のHound(K10)系から「Bulldozer(ブルドーザ)」系へと移行させる。そのために、Bulldozerベースのフュージョンプロセッサ(APU:Accelerated Processing Unit)を投入する。これによって、Bulldozerアーキテクチャは、登場から1年ほどで、上から下までラインナップを揃える。

 その一方で、低消費電力&低価格のセグメントは、極端にCPUコアを小型化した「Bobcat(ボブキャット)」系へと移行させる。そのため2012年には、AMD CPUはBulldozerとBobcatで棲み分けるようになる。サーバーからメインストリームPCとデスクトップのエッセンシャルPC(低価格ライン)までがBulldozer。その下がBobcat系という区分けだ。Intelと較べると、PC市場での低消費電力のBobcatの占める割合が大きい。タブレットなど勃興しつつある新しいモバイルデバイスは、当然のことながらBobcatがカバーする。

 AMDは、米国時間11月9日に開催したカンファレンス「2010 Financial Analyst Day」で、こうした2012年ロードマップの概要を公式に発表した。その結果、AMDのCPUアーキテクチャ戦略が、明瞭になった。

 まず、AMDが2011年に投入するK10ベースのAPU「Llano(ラノ)」は、中継ぎ的な位置づけであることが明らかになった。そして、1スレッド当たりの整数演算パイプの数をK10より減らしたBulldozerを、シングルスレッドの整数演算性能が重要なクライアントのCPUに据えることが確実となった。一方のBobcatは、2012年には4 CPUコアへと移行することで、同じ市場ラインを維持する。

 AMDは、こうしたBulldozer重視の戦略を打ち出すのと同時に、Analyst DayではBulldozerの動作デモを行なうなど、Bulldozerの存在感を打ち出した。AMDによると、2011年の夏にはBulldozerベースの製品が登場するという。ただし、AMDはBulldozerの多くの部分を、まだ秘密のベールに包んだままにしている。

AMDのCPU移行図
PDF版はこちら

●フェイクのダイ写真が公開されたBulldozer

 Bulldozerの秘密性を象徴するのが、Bulldozerの最初のダイ(半導体本体)である「Orochi(オロチ)」の“ダイ写真”だ。ダイ写真の部分にクオーテーションマークをつけたのは、これが本物のダイのものではないからだ。AMDが9月に公開した下のダイ写真を見れば、すぐにおかしな部分を見つけることができる。素人目にもあからさまな加工が写真に加えられて、CPUコアの概要どころか、CPUコアのサイズすらわからないようにされている。

AMDが公開した32nm Orochiの“ダイ写真”
PDF版はこちら

 例えば、上のダイ写真では、CPUコアと見られるブロックが上下に4個配置されている。Bulldozerアーキテクチャでは、2個のCPUコアが1個のCPUモジュールへと融合している。8コアのOrochiでは、4個のBulldozerモジュールを備える。しかし、写真では4モジュールのうち、上の2個と下の2個のモジュールとキャッシュメモリの大きさが異なる。これは、同じモジュールのはずなので、同じ大きさでなければおかしい。

 上下のモジュールとキャッシュは、同じ写真を、引き延ばしたり縮めてサイズを変えたように見える。例えば、キャッシュのサブブロックのサイズが上下で異なる。明らかに異常な写真となっている。さらに、CPUコア部分にはぼかしが入っていて、大まかにしかわからない。

 このように、Orochiダイ写真は、傍目にも明かなフェイクで、上下のモジュールのどちらかが本当のサイズであるという保証もない。不鮮明な写真を公開することは、どのCPUメーカーも行なうが、あからさまな写真修正は、あまり例がない。

 そのため、Bulldozerについては、まだダイ写真で何かを分析することができない。AMDが「フェイク写真を公開した」というだけの話だ。現在明らかになっているのは、32nmの8コアBulldozerが、45nm版の6コアK10よりダイサイズ(半導体本体の面積)が小さくなるということだけだ。

 こうしたBulldozerの秘密主義は、かなり奇妙だ。同じAMDの新CPUでも、信憑性の高いレイアウトを公開しているBobcatとは、かなり扱いが異なる。それだけAMDにとって、Bulldozerコアの重要性が高いことを示している。

●クラスタードアーキテクチャのBulldozer

 Bulldozerアーキテクチャの特徴は、2個のCPUコアを融合させたクラスタード(Clustered)アーキテクチャにある。BulldozerではCPUコアのうち、共有できるユニットはスレッド間で共有し、性能への影響が大きい部分を各スレッド専用のユニットとしている。具体的には、命令をデコードするフロントエンド部分と、浮動小数点演算部分が共有となっており、整数演算部分が各スレッド占有となっている。全ての演算リソースを2スレッドで共有するHyper-Threading型のSMT(Simultaneous Multithreading)とは異なるマルチスレッディングアーキテクチャだ。

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

 もう少しマルチスレッディングの仕組みを詳細に見ると、下の図のようになっている。共有のフロントエンド部分は、各ユニット毎にスレッドを切り替えて実行する。スレッドの切り替えは最小でサイクル単位で可能だ。フロントエンド全体で切り替えるのではなく、それぞれのユニットが別なスレッドを実行することが可能だ。フロントエンドに含まれるL1命令キャッシュも両スレッドで共有となっている。

 実行ユニットでは、整数コアは割り当てられたスレッドしか実行しない。シングルスレッドユニットで、整数コアに含まれるL1データキャッシュも各スレッド専用となっている。命令のリタイヤメントも整数コアでスレッド単位で行なう。

 一方、浮動小数点(FP)/SIMD(Single Instruction, Multiple Data)ユニットは、Hyper-ThreadingのようなSMT(Simultaneous Multithreading)制御となっている。内部のユニットが、同サイクルに、それぞれ異なるスレッドの命令を実行することが可能だ。実行ユニットは、128-bit SIMDの積和算(FMAC)ユニットが2個と、128-bit SIMDの整数演算ユニットが2個の構成となっている。AVXの256-bit SIMD命令を実行する場合は2個の実行ユニットを束ねて256-bit演算ユニットとして実行する仕組みだ。

 浮動小数点(FP)/SIMD命令がリタイヤする場合は、整数コアに送られる。共有2次キャッシュは両スレッドが使うため、スレッド毎の区分はない。

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

 1モジュールで2スレッドを実行するため、AMDはそれぞれの整数コアの実行帯域は狭くした。従来のK10では、整数パイプ群は最大6個の内部命令uOPを実行できる帯域を持っている。しかし、2つのコアを融合させたBulldozerでは、それぞれのスレッド専用の整数コアが、最大4個のuOPしか実行できない。分岐フュージョン(IntelのMacro-Fusion)によって1 uOP分が増えるとは言え、パイプはK10より細い。そのため、性能の特性はK10とは、異なってくる。

●本来の計画からずれたBulldozerのデビュー

 AMDは、もともと32nmプロセスは最初からBulldozerで、最初のAPUもBulldozerベースになる予定だった。少なくとも3年前の2007年にAMDが発表した計画では、そうなっていた。正確に言えば、2007年7月のAnalyst Dayのプレゼンテーション当日までの計画ではそうなっていた(Webcastで示されたロードマップではそうなっていたが、後でアップロードされたプレゼンテーションでは書き換えられていた)。また、Bulldozerコア自体が、2009年に登場する計画だった。そして、低消費電力のBobcatアーキテクチャは、PCだけでなく、家電や携帯デバイスにも浸透させる計画だった。

 AMDのロードマップは、全てが後ろへずれ込んだ結果、現在のように、K10コアが32nmプロセスでも生き残り、最初のメインストリームPC向けAPUはK10ベースとなり、Bulldozerが2011年に登場することになった。また、家電や携帯デバイス向けSoC(System on a Chip)の部門を売却してしまったために、BobcatはPCを中心とする市場だけに限定されることになった。現在のロードマップは、慎重に計画した結果というより、なし崩し的にできあがった感がある。

 そのため、現在の計画にはぎくしゃくとした印象がぬぐえない。まず、K10ベースのLlanoが短期間のリリーフで終わる可能性が高い。32nmのK10コアは、短期のソリューションとなってしまうため、開発の効率が悪い。そして、BulldozerはメインストリームではLlanoの後継として登場するため、位置づけが難しい。なぜなら、K10とBulldozerではアーキテクチャが大きく異なるため、パフォーマンスの特性が異なるからだ。

 AMDは、Bulldozerアーキテクチャでは整数パイプが細くても、効率や動作周波数の向上で、充分な整数演算性能が得られると踏んでいるようだ。しかし、アーキテクチャの性格上、コードによってはK10より整数性能が落ちる場合が発生する可能性がある。オーバーオールで見れば性能は向上するとしても、ベンチマークに現れる性能の特性がK10とは異なってくるだろう。

 そうした事情があるため、AMDとしては、本当は32nmでAPUはBulldozerからと、切り分けが明瞭になっていた方が差別化がしやすかったに違いない。2007年当時のAMDの計画からは、そうした意図が感じられる。しかし、結果は、同じ32nmのAPUで、アーキテクチャがK10からBulldozerへと引き継がれる。ユーザーはK10とBulldozerで比較することになるため、AMDは性能の説明に苦労することになりそうだ。

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

●2ダイをHyperTransportで接続して20コアを実現

 Bulldozerの利点は、相対的にダイサイズ(半導体本体の面積)当たりのスループットを高めることができる点にある。AMDは、Bulldozer世代でハイエンドのダイを現在の6コアから8コアへと増やす。4モジュールで8コアを載せたダイがOrochiで、Orochiダイを使った製品が、デスクトップでは「Zambezi(ザンベジ)」、サーバーでは「Valencia(バレンシア)」と「Interlagos(インテルラゴス=ポルトガル語発音/インターラゴス)」となる。

 実際には最上位のInterlagosは、2個のダイを1パッケージに封止したMCM(Multi-Chip Module)製品となる。2つのダイの間はHyperTransportで接続する。そのため、パッケージレベルでは4リンクのHyperTransportが出る。また、DRAMコントローラは1ダイにつき2チャンネルなので、パッケージ全体では4チャネルのDRAMコントローラとなる。この構成は現在のOpteron系と同じで、そのため、ソケットも継承する。

 2012年になると、同じ32nmプロセスのBulldozerアーキテクチャで、10コアの「Sepang(サパング=マレー語発音/セパン)」と、10コアを2つMCMで結ぶと見られる20コアの「Terramar(テラマー)」が登場する。サーバーのコードネームは相変わらずF1関係だ。この時点で、ソケットインターフェイスも変わるはずだが、今のところ詳細がわかっていない(ソケット名称も変更された)。

 下の図は、一応、現状と変わらないという推定のもとに作ってあるが、インターフェイス回りが変わってくるかも知れない。ちなみに、DDR4は2012年が立ち上げの年となるため、2012年のCPUで採用するのはリスクが高いと考えられる。ちなみに、DDR4を策定しているJEDEC(米国の電子工業会EIAの下部組織で、半導体の標準化団体)のDRAM系の部会のチェアマンを務めているのは、AMDのJoe Macri氏(CTO, Fusion)だ。

AMDのCPUアーキテクチャ移行図(2010年~2012年)
PDF版はこちら