このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第111回

アーキテクチャーから予測するBulldozerコアの性能

2011年07月25日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/

  • この記事をはてなブックマークに追加
  • 本文印刷

アーキテクチャーはK10と似通う
電力効率重視のためか?

 もうひとつのメリットは、「Fusionへの移行の筋道が立った」ことだ(関連記事)。Fusionでは将来的にAPUとFPUが混在する形になる予定だが、今回FPUをコアの外に追い出したことで、将来的にAPUをここに組み込みやすくなった。AMDの場合、Fusionの進化は「1度に1ステップ」というゆっくりとしたペースでの移行を考えており、今回のFPU共有化もこの一環、と考えることもできるだろう。

 FPUのみならず、フェッチ/デコードまで共有化したのは、単にダイサイズの節約以上の狙いもあると考えられる。キャッシュからデコードまでの構造は下のスライドに示すとおりである。

Bulldozerの構造図。TLBは増強されているし、デコードは4命令/サイクルに強化されているが、フェッチのサイズは32byteのままというのが面白い

 面白いのは、このフロントエンドの構成がK10ベースのPhenom IIとほとんど変わらないことだ。もちろん、デコードはPhenom IIの3命令/サイクルから強化されているが、逆に言えばその程度の差でしかない。

 Bulldozerの場合、それぞれのコアで1スレッドずつの処理が可能だから、例えば6命令/スレッドのデコーダーを用意すれば、理論上はほぼPhenom IIと同じピーク性能になる。あえてそれをしなかったのは、そこまでしても性能にあまり寄与せず、その割に消費電力が増えるので、AMDの言うところの「ワット性能」がむしろ低下するためと考えられる。

 もともとK8(Athlon 64世代)~K10のアーキテクチャーでは、ALUとAGU(アドレス生成)がペアで配される形になっており、理論上は「Load」+「演算」が同時3命令処理可能、という仕組みだった。BulldozerやBobcatでALUとAGUが分離されたのは、実際にはこの組み合わせでピーク性能が出ることは少ない、と判断されたためだと筆者は考える。

 命令がLoad+演算ばかりの場合は、K8~K10の構成はきわめて効果的である。ところがLoad命令が単独とか、Loadを伴わない演算命令ばかりといったケースでは、半分のユニットしか動かないことになる。またこうした単独命令の場合、K8~K10の世代ではLoadかALUが最大3命令までしか処理できない。一方でBulldozerやBobcatの場合は、ALUが2つとAGUが2つという構成だから、こうした単独命令の場合は最大で同時4命令まで処理できることになり、むしろ性能が上がる。

 実行ユニットのこうした方針変更は、当然デコード段にも影響を及ぼす。もともとK10の世代では、SSE命令を同時に2つ処理できることを狙い、1次キャッシュの帯域を32byte/サイクルに増していた。これがそのままフェッチの帯域になっていたが、デコードは3命令/サイクルで(一部の命令を除くと)明らかにフェッチの帯域が過剰だった。

 それがBulldozerでは4命令/サイクルのデコードとなり、バランスが多少改善された。また、実行ユニットが実質2命令/サイクルとなったことで、2コアで4命令/サイクルという、ちょうどマッチしたデコード性能になった。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン