北森瓦版 - Northwood Blog (Author : 北森四葉. Since July 10, 2006.)
AMD Discloses Bobcat & Bulldozer Architectures at Hot Chips 2010(AnandTech)
AMD’s Bulldozer and Bobcat Processors Preview([H]ard|OCP)
2011 Can't Get Here Fast Enough(PC Perspective)
AMD details the Bulldozer and Bobcat architectures(TechConnect Magazine)
AMD to show Fusion APU in September(Fudzilla)
AMD Details Bulldozer Processor Architecture(techPowerUp!)
AMD's Bobcat Takes Aim at Key Consumer Low-Power Market Segments(techPowerUp!)

3年前、AMDは2つの新アーキテクチャ―“Bulldozer”と“Bobcat”を登場させると明らかにしてくれた。当時、AMDはK8以来のアーキテクチャ刷新として2009年上半期に“Bulldozer”を登場させると話していた。“Bobcat”に関しても2009年に“Silverthorne”に対抗できるものとして計画していると述べており、“Bulldozer”が10~100W、“Bobcat”は1~10Wのレンジを担うとしていた。
ところが、当の2009年には何もなく、これらのアーキテクチャは未だ登場しないまま2010年を迎えた。そして今日、Hot Chips 2010でAMDは“Bulldozer”と“Bobcat”の詳細な情報を明らかにした。
 
以下にHot Chipsで発表された内容をAMDのスライドに沿う形で紹介します。



◇3つのアーキテクチャが並存する2011年のAMD CPU
“Bulldozer”はパフォーマンスとスケーラビリティが求められる市場に投入される。具体的にはメインストリームクライアント向けからサーバー向けとなる。

“Bobcat”は低消費電力な小型機器向けをターゲットとする。ネットブックやタブレット、あるいはシンクライアントに投入されることになる。なお、“Bobcat”に関しては2010年第4四半期に生産開始、2011年第1四半期に搭載製品登場の予定。

“Llano”は既存のK10系のコアをベースにしており、メインストリーム向けノートPCを主なターゲットとする。ちょうど“Bulldozer”と“Bobcat”の中間に位置する。



◇“Bobcat”の概要
○Bobcatの設計理念
  • 小さく効率的で低消費電力なx86コア
  • 一方で高い性能を実現する
  • 少数のカスタムアレイ(ユニット構造?)で統合化(チップの集約ということ?)を容易に
  • 携帯機器への搭載を容易に
○概要~小さく効率的に
  • 1W未満の消費電力も実現できるコア
  • out-of-order命令発行
  • 統合化と再設計を容易に
  • 各種命令セットの搭載。具体的にはSSE1~3及び仮想化への対応。
  • 現在のメインストリームCPUの性能の90%の性能を半分のダイサイズで実現する
  • (“Bobcat”を採用した)2011年のネットブック向けAPUが“Ontario”
○アーキテクチャに関して
  • デコーダーは2-issue設計
    AnandTechによるとパイプラインは15ステージ(“Silverthorne”は16ステージ)。うちフェッチが6段、デコードが3段。
  • 分岐予測の向上
    分岐ミス時のレイテンシは13-cycle
  • out-of-orderの命令発行・Load/Storeエンジン
    整数スケジューラは2個独立の2ポート。
  • 高性能なFPU
    FPUは2ユニット。スケジューラは1個で2ポート。
  • 各種命令への対応―AMD 64, SSE1,2,3、SSSE3、仮想化
  • キャッシュ構成はL1 int=32kB / L1 data=32kB / L2=512kB
    レイテンシはL1=3 cycle、L2=17 cycle
  • クロックゲーティング、パワーゲーティングの導入
  • 無用な読み込み及びデータ移動を最低限としたマイクロアーキテクチャ


この“Bobcat”アーキテクチャをCPUコアに採用し、さらにGPUを統合した最初のAPUが“Ontario”。既報の通りCPUとGPUは1ダイに統合される。
また、メモリは共有であり、低レイテンシを実現するものと述べられている。
GPUに関してはプログラマブルなもので高性能なヘテロジニアスコンピューティングも可能なものと述べられている(“Ontario”のGPUが何かはまだ明らかになってはいないがひょっとするとRadeon HD 5000世代?)。

“Bobcat”と“Bulldozer”では省電力化のため“physical register files”が使われるという。このあたりは私自身の理解もかなり怪しいのでAnandTechなどを参照して欲しいが、現行のx86 CPUはx86コードの下位互換性を得るために、レジスタの数が制限されている。だが、out-of-order型アーキテクチャで性能を上げるにはより大きなレジスタファイルが必要となる。ここでRegister renamingというハードウェアを使い、x86で定義されないレジスタを追加する。現在のx86 CPUにはRegister renamingはごく一般的。K10系では命令とともに実際にRename registerからデータを取り出しており、実行(Execute)の前にこの移動が行われた。この方式では広帯域な命令を効率的に作り出せるが、その代わり消費電力という面では効率が良くない。

Register renamingのもう1つのアプローチが命令と一緒にデータを持ってくる代わりに、命令といっしょにデータのポインタ(参照情報?)を持ってくる。この方式は管理が複雑になるが、大きなデータを移動する必要が無いので、省電力化が可能となる。なお、この方式は現在のCPUではまだ使われていない。

“Bobcat”そのものの性能に関しては、Atomより高性能と推定されている。また、“Ontario”は“Bobcat”コアを2つ搭載する。将来的には4つのコアを搭載したものも考慮しているという。一方、Single-coreの可能性は無くはないものの、今のところ計画はしていないという。




◇“Bulldozer”の概要
○“Bulldozer”の理念
  • (1モジュールに)2つのフル機能の整数演算ユニットを備える。一方で共有が望ましい部分は共有とする。
    具体的にはFPUやL1 inst, L2キャッシュ、デコーダーなど。
  • 対応命令セットの追加。
    従来のMMX, SSE1~3までに加えSSE 4.2までへ対応。またAVXとXOPを追加。
  • 製造はGlobalFoundriesの32nm SOIプロセス
○何故CMPなのか
  • SMTの欠点
    2つのスレッドを1つのコアで行うため、2スレッド間でリソースがかち合う。
  • CMPの利点
    2つのスレッドはそれぞれのコアで処理される。そのため、2-threadにおいてはSMTより強力。
○“Bulldozer”の特徴~共有と独立
  • コンポーネントを共有すると消費電力とダイサイズ・コストの削減が行える。
    “Bulldozer”ではフェッチ・デコードと浮動小数点演算ユニット、L2キャッシュが該当
  • 一方、コンポーネントを独立させると性能とスケーラビリティが上がる。
    整数演算ユニットとL1 dataキャッシュが該当
  • “Bulldozer”はコンポーネントの共有と独立を動的に切り替え、電力対性能を向上させる
    浮動小数点演算ユニットは4ポートのFPスケジューラ1個と128-bitのFMACパイプライン2本で構成されている。256-bitのAVX命令を処理する場合はこのFMACパイプラインを2本用いる形で実行する。浮動小数点演算ユニットに関しては1モジュールではSMTのような挙動となる。
○“Bulldozer”アーキテクチャを用いたCPUの構成
  • 複数個の“Bulldozer module”で構成される。
  • それぞれの“Bulldozer module”はOSや共有ハードウェアから分かれて認識される。
    4モジュール/8-coreのCPUの場合、OSからは8-threadが認識される。
  • モジュラーアーキテクチャによりチップの開発時間の短縮と製品の柔軟性の向上を目指す
○“Bulldozer”アーキテクチャの効率性
  • 2番目の整数演算ユニットの追加による1モジュールの肥大は12%以下
    一方で2番目の整数演算ユニット追加により、高い整数演算性能向上が見込まれる(特に2-thread処理において)
  • CPU全体で見ればわずか5%程
  • より多くのコアをより小さなダイサイズで搭載することができる。


AnandTechでは“Bulldozer”のアーキテクチャについてより深い内容が記述されている。それによると、デコーダは4-wide(K10は3-wide)に拡張され、4-wideのデコーダから2つの整数演算ユニットと1つの浮動小数点演算ユニットに命令が供給される形となる。キャッシュ構成は1モジュールあたりL1 inst=64kB(1モジュール内で共有) / L1 data=16kB(コア毎独立) / L2(1モジュール内で共有) / L3(全コア・モジュールで共有)となる。

1個の整数演算ユニットの構成はALUとAGUがそれぞれ2個。K10ではそれぞれ3個だったので、1個ずつ減少した形となる。AMDによればデコーダの4-wide化などの改良により、“Bulldozer”ではALU, AGUは減少したものの整数演算性能に関してはK10よりも高いという。

至らない部分もあるかもしれませんが何卒ご容赦ください。AnandTechやtechPowerUp!に詳しい解説が掲載されていますので、そちらもご参照ください。