Bulldozer (マイクロアーキテクチャ)

AMD Bulldozer アーキテクチャの詳細解説



AMDのBulldozer(ブルドーザー)アーキテクチャは、2011年に登場したx86マイクロプロセッサアーキテクチャです。デスクトップ向けのAMD FXシリーズやサーバー向けのOpteronシリーズに採用され、その革新的な設計が注目を集めました。

Bulldozer アーキテクチャの概要



Bulldozerは、AMDがK10マイクロアーキテクチャの後継として開発したCPUコアのコードネームです。TDP(熱設計電力)は10Wから125Wまで幅広く設定され、省電力からハイパフォーマンスまで、多様なニーズに対応することを目指しました。AMDは、BulldozerアーキテクチャがHPC(ハイパフォーマンスコンピューティング)アプリケーションにおいて、1Wあたりの性能を大幅に向上させると主張していました。

モジュール設計



Bulldozerアーキテクチャの最大の特徴は、モジュールと呼ばれる単位で構成されている点です。各モジュールには、2つの整数演算ユニット、1つの浮動小数点演算ユニット(FPU)、命令デコーダ、L2キャッシュなどが含まれています。2つの整数演算ユニットはそれぞれ独立したL1データキャッシュを持ちますが、命令キャッシュ、FPUL2キャッシュモジュール内で共有されます。この設計は、整数演算処理能力はデュアルコアに近く、浮動小数点演算処理能力はシングルコアに近いという、従来のデュアルコアやSMT(同時マルチスレッディング)とは異なる独特な構造を持っています。

CMT(クラスタード・マルチスレッディング)



Bulldozerは、プロセッサの資源を複数のスレッド間で共有するCMT(クラスタード・マルチスレッディング)という技術を採用しています。CMTは、ハードウェア資源を効率的に利用しようとする点でSMTと似た設計哲学を持っていますが、その実装は異なります。CMTでは、整数演算ユニットは専用であるため、整数演算中心の処理では、ほぼデュアルコアプロセッサのように動作します。一方、浮動小数点演算が中心の処理では、FPUが共有されるため、性能はやや制限される場合があります。

Bulldozer アーキテクチャの特徴



モジュール単位の設計: 2つの整数演算ユニットと共有リソースを持つモジュールを基本単位とするクラスタードアーキテクチャ
整数演算性能: モジュール内に独立した2つの整数演算ユニットを搭載し、高い整数演算性能を実現。
浮動小数点演算性能: モジュール内でFPUを共有するため、浮動小数点演算中心の処理では性能が制限される場合がある。
L2キャッシュ: 1モジュールあたり2MBのL2キャッシュを搭載。
L3キャッシュ: デスクトップ向けのZambeziは8MB、DDR3-1866デュアルチャネルに対応。
オーバークロック: 液体ヘリウム冷却によるオーバークロックで8.461GHzのギネス記録を達成。
命令セット: 256ビット浮動小数点演算をサポートし、AVX、SSE4.1、4.2、AES、CLMULなどの拡張命令セットに対応。
プロセス技術: 32nm SOIプロセスを採用。
TurboCore 2: TDP制限内でクロック周波数を動的に調整するTurboCore 2機能を搭載。
メモリインターフェース: デュアルチャネルまたはクアッドチャネルDDR3メモリに対応。
I/Oインターフェース: HyperTransportテクノロジーを搭載。

アーキテクチャの詳細



コア構成



Bulldozerモジュールは、2つの整数コア、L1データキャッシュ、FPU、命令デコーダ、L2キャッシュ、W.C.C(Write Coalescing Cache)で構成されています。L1命令キャッシュは2つのコアで共有され、FPUL2キャッシュも共有されています。

各コアの機能



各整数コアには、それぞれ2つのALU(算術論理演算ユニット)と2つのAGU(アドレス生成ユニット)が含まれており、1クロックあたり合計4つの独立した演算とメモリ操作が可能です。モジュール内の2つのコアが整数演算を分担することで、マルチスレッド時の整数演算性能が向上します。

FPU



モジュールには、2つの128ビットFMAC(融合積和演算機能付き)浮動小数点パイプラインが搭載されており、これらを結合することで、1つの256ビット幅のユニットとして動作させることができます。この機能は、浮動小数点演算のパフォーマンスを向上させるのに役立ちます。

キャッシュ



Bulldozerは、L1キャッシュとL2キャッシュモジュール単位で備えています。L1データキャッシュは各整数コアに16KB、L1命令キャッシュはモジュールあたり64KBです。L2キャッシュは1モジュールあたり2MBで、2つの整数コアで共有されます。L3キャッシュは、デスクトップ版で最大8MB、サーバー版で最大16MBで、すべてのコアで共有されます。

パイプライン



Bulldozerのパイプラインは20サイクルと深く、K10コアの12サイクルと比較して長くなっています。この長いパイプラインにより、クロック周波数を高くすることが可能になりましたが、レイテンシが増加し、分岐予測ミスによるペナルティが大きくなるという欠点もありました。

整数コアの幅



Bulldozerの整数コアの幅は4(2ALU + 2AGU)で、K10の6(3ALU + 3AGU)よりも狭くなっています。IPC(1クロックあたりの命令実行数)はK10よりも低く、クロック周波数を上げることで性能を補う設計となっています。

分岐予測



Bulldozerは、2レベルの分岐ターゲットバッファ(BTB)、条件文用ハイブリッド予測器、間接予測器などの高度な分岐予測機構を備えています。

OSの対応



Bulldozerのアーキテクチャは、従来のプロセッサとは異なるため、OSスケジューラの対応が必要となる場合があります。特に、Windowsでは、Bulldozerのモジュール構造を認識しないと、性能が低下する問題がありました。Microsoftは、この問題に対応するためにパッチを公開しましたが、その後のWindowsでは、Bulldozerは物理コア数=Bulldozerコア数のSMTタイプのCPUとして扱われています。

Linuxでは、1モジュールあたり1コア2スレッドのSMTプロセッサとして扱われます。

虚偽広告訴訟



2015年、AMDはBulldozerチップの仕様を不実表示したとして訴訟を起こされました。この訴訟では、Bulldozerモジュールは実際には真のデュアルコア設計ではなく、いくつかのデュアルコア特性を備えた単一のCPUコアであると主張されました。AMDは2019年に12.1百万ドルで和解しました。

Bulldozerの改良版



Bulldozerアーキテクチャは、その後、Piledriver、Steamroller、Excavatorといった改良版が登場しました。これらの改良版では、IPCと動作周波数の向上が図られ、新しい命令セットがサポートされました。

Piledriver: 第二世代のBulldozerとして、2012年に発表されました。
Steamroller: 第三世代のBulldozerとして、2013年に発表されました。
Excavator: 第四世代のBulldozerとして、2015年に発表されました。AVX2命令セットをサポートしました。

まとめ



AMDのBulldozerアーキテクチャは、斬新なモジュール設計とCMT技術を採用した意欲的なプロセッサアーキテクチャでした。しかし、その独特な構造は、従来のデュアルコアとは異なる性能特性を示し、賛否両論を巻き起こしました。後の改良版でIPCやクロック周波数を向上させ、より競争力のある製品へと進化を遂げました。

参考資料



後藤弘茂のWeekly海外ニュースついにベールを脱いだAMDの「Bulldozer」と「Bobcat」
適用で8コアのAMD FXが「4コア」に!? Microsoftの「Bulldozerアーキテクチャ最適化パッチ」を試す

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。