■後藤弘茂のWeekly海外ニュース■
プレスカンファレンスでの様子 |
AMDは台湾で開催されているCOMPUTEXのプレスカンファレンスで、次世代CPUアーキテクチャ「Bulldozer(ブルドーザ)」ベースのCPUの計画のアップデートを行なうとともに、メインストリームPC向けBulldozerチップを公開した。AMDのRick Bergman(リック・バーグマン)氏(Senior Vice President and General Manager, AMD Product Group)は、遅れが噂されていたBulldozerベースのCPU「Zambezi(ザンベジ)」について、この夏から出荷を行なうことを発表した。また、来年(2012年)投入する予定の、メインストリームPC向けのBulldozerベースAPU「Trinity(トリニティ)」の実チップが完成したことを発表。サンプルチップを公開した。
Zambeziのプラットフォーム | Trinityを掲げるRick Bergman(リック・バーグマン)氏(Senior Vice President and General Manager, AMD Product Group) | Trinityまでの進化 |
TrinityはBulldozerコアにGPUコアを加えたAPU(Accelerated Processing Unit)製品で、Zambeziと同じ32nmプロセスで製造される。Bulldozerでは2個のCPUコアを融合させて1モジュールにしている。Trinityでは、Bulldozerのモジュールを2個、4CPUコアに相当するコアを搭載していると見られる。それにRadeon HD 6970(Cayman)世代のGPUコアを統合したものがTrinityだと推定される。
AMD CPUアーキテクチャの移行 PDF版はこちら |
今回のCOMPUTEXでの発表で、ついにAMDのCPUコアアーキテクチャの刷新が秒読み態勢に入った。AMDは1999年に投入した「Athlon(K7)」をベースに、「Athlon 64/Opteron(K8)」から「Phenom(K10)」へと機能を拡張して来た。その間、12年間、CPUコアの基本アーキテクチャは据え置いたままだった。それに対して、Bulldozerは、完全にゼロから設計された新アーキテクチャとなる。AMDにとってメインストリームCPUの12年振りのアーキテクチャ改革だ。Intelが同様にアーキテクチャを刷新するのは次々世代の「Haswell(ハスウェル)」となる。
AMD CPUの移行 PDF版はこちら |
●2スレッドを実行するBulldozerモジュール
これまでのAMD CPUは、シングルスレッドの性能を重視していた時代に開発されたK7をベースにして来た。それに対して、Bulldozerではマルチスレッド性能を効率よく高めることにフォーカスしている。そのため、Bulldozerではクラスタベースマルチスレッディングと呼ばれる技術を導入する。マルチスレッディング技術の一種だが、マルチコアともHyper-Threadingとも異なる。2つのCPUコアを密接に結合させたモジュールで、2つのスレッドを同時に実行する。
CPUコアのうち、パフォーマンスへの影響が大きな部分は、それぞれのスレッドの専用ユニットにして、あまり使われない部分は共有ユニットにしている。具体的には整数演算ユニットと整数演算命令スケジューラ、そしてレジスタ、L1データキャッシュなどがスレッドそれぞれの占有ユニットとなっている。その一方で、浮動小数点演算ユニットはSMT(Simultaneous Multithreading)化されて2スレッドで共有する。また、フロントエンドの命令デコードなどは時分割で細粒度にスレッドを切り替えて共有する仕組みとなっている。
マルチスレッディングアーキテクチャの比較 PDF版はこちら |
Bulldozerのマルチスレッディング PDF版はこちら |
Bulldozerアーキテクチャの利点は、シングルスレッド性能を一定に保ったまま、ダイ面積当たりのマルチスレッド性能を引き上げることができる点。AMDが今回発表したハイエンドデスクトップ向けBulldozerであるZambeziは、4モジュールで8コア相当のCPUコアを搭載する。下がZambeziのダイ「Orochi(オロチ)」の写真だ。ダイサイズは推定で300平方mm以下。コンパクトに8コア分のリソースを納めている。45nmプロセスのK10 6コアのダイサイズ346平方mmよりも一回り小さい。
Bulldozerのダイ PDF版はこちら |
●K10コア2個分と同程度のBulldozerモジュール
Bulldozerモジュールのコンパクトさは、他のAMD CPUコアと比較すると、もっとよくわかる。同じプロセス技術では、Bulldozerモジュールは、K10コアの2倍をちょっと切る程度のダイ面積となる。K10からBulldozerで、CPU自体の機能は大幅に拡張されている。つまり、K10よりも機能を増やしたCPUコア2個分を、K10で2個分のサイズに納めていることになる。効率のいいモジュールだ。
AMDのコアサイズ比較 PDF版はこちら |
BulldozerモジュールとLlano、Bobcatとの比較 PDF版はこちら |
ブロックダイヤグラム単位の比較 PDF版はこちら |
BulldozerモジュールがK10コア2個分程度のサイズであることは、AMDがBulldozerを容易にメインストリームPCに投入できることを意味している。以前、AMDが公開したK10ベースのAPU「Llano(ラノ)」のウェハから試算したLlanoのダイサイズは220平方mm程度。おそらく、COMPUTEXで初公開されたTrinityも同程度のダイサイズに収まっていると推定される。
AMD CPUのダイサイズの推移 PDF版はこちら |
従来は、CPUコアアーキテクチャが変わると、同じコア数でもダイサイズが大きくなり、消費電力も増えた。しかし、今回のK10からBulldozerへの移行では、原理的にはダイサイズは一定に止め、電力も抑えることが可能になると推定される。ちなみに、2月のISSCC(IEEE International Solid-State Circuits Conference)で発表されたK10とBulldozerのクロックアクティビティの比較を見ると、Bulldozerの方がアクティブ電力を抑えられることがわかる。
クロックアクティビティの比較 PDF版はこちら |
●Trinityに統合するGPUコアはVLIW4アーキテクチャか
AMDは、メインストリームPC向けの第1世代のAPUであるLlanoには、Radeon HD 5870(Cypress)世代のGPUアーキテクチャを搭載することを明らかにしている。しかし、1年遅れで登場するTrinityでは、それより進んだGPUアーキテクチャが搭載されるだろう。AMDは、「Radeon HD 6970(Cayman:ケイマン)」で、GPUアーキテクチャを改良。GPU内部のプロセッサを、5-wayのVLIW5(Very Long Instruction Word)アーキテクチャから4-wayのVLIW4へと切り替え、命令並列性を下げ、スレッド並列性を上げて、アプリケーションの実行効率を上げた。
AMD GPUアーキテクチャでは、GPUの演算プロセッサコアはSIMD(Single Instruction, Multiple Data)アレイとして構成されている。SIMDアレイの中に複数のSIMDエンジンが含まれており、各SIMDエンジンに16個のVLIWスレッドプロセッサを備える。個々のSIMDエンジンに搭載される16個のVLIWスレッドプロセッサは、複数サイクルで1つのスレッドバッチである「ウェイブフロント(Wavefront)」を実行する。現在はWavefrontは64スレッドで構成されている。
従来のAMD VLIWスレッドプロセッサは、5-wayの演算ユニットを備えていた。4個の単純な単精度FP積和算ユニットと、1個のスーパーファンクションユニット(SFU)の組み合わせだ。実際には分岐ユニットも備えるため、VLIW命令の命令スロットは6個。スーパーファンクションユニットが積和算も実行できるため、ピークで5個の単精度FP積和算を実行可能だった。しかし、5並列の命令並列性を得られる率が低いため、結果としてスレッドプロセッサの演算ユニットの稼働率は低かった。
それに対して、Caymanでは4個の積和算ユニットの構成に再編し、ピークで4個の単精度FP積和算へと並列度を下げた。命令レベルの並列化が容易になった分だけ、プロセッサの稼働率が上がる。従来、スーパーファンクションユニットが実行していた三角関数などは、積和算ユニットに機能を実装することで実行する。VLIWの3個の命令イシュースロットを使って1個の超越関数系の命令を発行する仕組みとなっている。この改良で、VLIWスレッドプロセッサのパフォーマンス/ダイ面積は10%向上したという。Trinityに搭載されるGPUコアは、このVLIW4アーキテクチャの世代になると推定される。
CaymanのSIMDエンジン PDF版はこちら |
●K10よりも細くなった整数演算コア
COMPUTEXでの発表で、いよいよ登場の時が近づいたBulldozer。そのパフォーマンスはどの程度なのか。最大のポイントは、Bulldozerが従来のK7からK10までの流れのCPUとは、全く異なる発想で設計されている点にある。そのため、従来CPUと比べると、性能の上がる部分と上がらない部分のばらつきがあると推定される。特に目立つのは整数演算ユニットの構成だ。
Bulldozerの整数演算ユニットは2本の整数演算パイプと2本のロード/ストアパイプ、それに16KBのL1データキャッシュで構成されている。従来のAMD CPUは、3個のx86命令をデコードし、6個の内部命令(マイクロオプス:uOPs)を実行できる整数ユニットを備えていた。それに対してBulldozerは、4個のx86命令をデコードし、4個のuOPsを実行できる整数ユニットを2個備えている。
それぞれの整数コアは最大4 uOPsしか実行できないため、従来のAMDコアの6 uOPs実行と比べると、同クロック時の整数演算性能は落ちる場合が出る可能性がある。しかし、Bulldozerでは、動作周波数を上げることで、性能を維持するようだ。ISSCCでは、Bulldozerの「FO4(Fanout-Of-4)」ディレイは、従来アーキテクチャと比べて20%も減少したと説明された。FO4が減少すると、その分、動作周波数を上げやすくなる。AMDは製品化の段階でBulldozerのクロック向上に苦労していると言う情報もあるが、原理的にはクロックを上げやすい。
Bulldozerのアーキテクチャ PDF版はこちら |
Bulldozerの整数演算コア PDF版はこちら |
●効率的なBulldozerの浮動小数点(FP)ユニット
浮動小数点(FP)ユニットについては、Bulldozerでは巧妙で効率的な設計がなされている。従来のK10は128-bitの乗算ユニットと加算ユニットの2ユニットと、他の処理を担当するユニットを備えていた。Bulldozerでは、128-bitの積和算ユニットが2ユニット分と、その他のユニット群を備えている。従来の2パイプのFP演算ユニットを、それぞれ積和算ユニットにしたイメージだ。スループットは積和算時には倍になるが、面積的には倍にはなっていない。
実行ユニットは、大きく3つのブロックに分かれている。「ローワーデータパスハンドルズ(Lower Datapath Handles)」と「アッパーデータパスハンドルズ(Upper Datapath Handles)」、それに「ミドルデータパスハンドルズ(Middle Datapath Handles)」だ。ローワーとアッパーが積和算ユニットで、ミドルがシャッフルなどのレジスタ操作やロードのユニットとなっている。
BulldozerのFPレジスタは「ローワーFPレジスタファイル(Lower FP Register File)」、右側が「ハイヤーFPレジスタファイル(Higher FP Register File)」に分かれている。ローワーFPレジスタは91-bit幅でXMMレジスタとYMMレジスタの下半分とX87/MMXレジスタを格納する。ハイヤーFPレジスタは73-bit幅で反対にXMM/YMMレジスタの上半分を格納する。
両レジスタファイルは、それぞれ演算ユニットに対して、6リード/2ライトのポートを備えている。2個の積和算ユニットが、1クロックに各3オペランドを読み出し、各1ディスティネーションを書き込むことができる。積和算ユニット自体はSIMDなら1個の倍精度演算または2個の単精度演算を処理できる。128-bit SSE命令では、アッパーとローワーそれぞれの対称演算ユニットが同一命令を実行することになる。256-bit AVX命令では全演算ユニットが同一命令を実行する。
Bulldozerの浮動小数演算ユニット PDF版はこちら |
Bulldozerの浮動小数演算ユニットのダイ PDF版はこちら |
こうして概観するだけでも、Bulldozerが従来のK10とは全く異なるCPUアーキテクチャであることがわかる。そのアーキテクチャ選択が正しかったかどうかが、もうすぐ登場する実チップで試される。