PR

 AMDの次世代CPUアーキテクチャー「Bulldozer(ブルドーザー)」では、今使っているアプリケーションの性能が、落ちるかもしれない。「えっ、新しいCPUなのに、性能が落ちる?」と驚くかもしれない。しかし、それがAMDの選択だ。AMDは、今までのアプリのための、シングルスレッドのピーク性能ではなく、これからのアプリのためのマルチスレッド性能の効率を追求した。

今のK10世代のCPUより小さくなった整数コア

 AMDは、2011年以降のCPUでは「効率」が最も重要なキーワードになると考えている。その効率のために、CPUの設計の方向を根底から変えた。Bulldozerのポイントは、“ピークの性能”を追い求めるのをやめて、“性能の効率”を追求したことだ。

 Bulldozerの一番の特徴は、1個のCPUモジュールで2つのスレッドを同時に実行できる点にある。CPUモジュールの中に、整数コアが2個あり、それぞれが別のスレッドを実行する。BulldozerのCPUモジュールは、CPUコア2個分の整数ユニットを持っていることになる。ところが、Bulldozerをよく見てみると、AMDが整数ユニットのところを“ケチ”っていることが分かる。

 今のAMD CPUであるK10世代コアとBulldozerモジュールを比較してみると、それがよく分かる。K10のCPUコアは、内部に3つの整数演算パイプと3つのロード/ストアパイプを備えている。合計6つのパイプだ。それに対して、Bulldozerモジュールの整数コアは、内部に2つの整数演算パイプと2つのロード/ストアパイプしか持たない。合計4つのパイプだ。

 K10は1クロックで6つの整数系の処理を行うことができるのに、Bulldozerの整数コアは4つの処理しかできない。シングルスレッドの整数系の命令実行では、今までの3分の2のピーク性能しか出せないことになる。シングルスレッドのアプリケーションの整数演算ではBulldozerが、これまでのAMD CPUより性能が落ちることを意味している。

 もう少し詳しく見てみよう。AMDのCPUは、x86命令を「マクロOP」と呼ばれる内部命令に変換している。それぞれのマクロOPは、「マイクロOP(μOP)」と呼ばれる、小さな内部命令に分解されて実行される。典型的なx86整数演算命令は、整数演算系μOPとロード/ストア系μOPの2つに分解される。つまり、3つの整数演算パイプとロード/ストアパイプのペアを備えたK10は、x86命令に換算すると3命令分を同時に実行できる。それに対して、Bulldozerの整数コアは、x86命令換算で2命令分しか実行できない。これで本当に、PC向けのCPUとして十分な性能を出せるのだろうか。

Bulldozerでは、整数系実行パイプの合計の数がK10の6本から8本に増えている。しかし、スレッド単位では整数パイプの数は6本から4本へと減っている。x86命令に換算すると、K10は3命令分、Bulldozerは各整数コアが2命令分ずつでモジュール合計で4命令分の実行ができる。
[画像のクリックで拡大表示]