このページの本文へ

前へ 1 2 3 4 次へ

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

AMDサーバー製品の顔役に聞くBulldozerの真実 前編

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

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

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

AMDのFMA4命令は
インテルが今後サポートするFMA3より強力

――命令セットとソフトウェアについてもおうかがいします。Bulldozerの世代でAMDは、「SSE」「AVX」に加えて新しい「FMA4」命令などを追加しました。しかし、今のところこれに対応したコンパイラーや開発環境がないと思うのですが?

フリー「まず命令についてだが、既存のSSEについてはインテルのものと互換性がある。一方AVXだが、我々は元々SSEを拡張して「SSE5」を策定した。ただこの一部がAVXという形で実装されて、これもインテルと互換性がある。だからこの3つに関しては何の違いもない」

「残るFMA4と『XOP』は別だ。この2つとAVXは、元々SSE5として予定していたものだ。このうちFMA4とAVXについては、主要なコンパイラーでサポートされている。

Bulldozerがサポートする拡張命令一覧

フリーPGIOpen64、マイクロソフトのVisual Studio。GCCもGCC 4.6.1で、AVXとFMA4命令をサポートする。Visual Studioは『Visual Studio 2010 SP1』での対応だ。ただ現時点では、命令はサポートされているが、プログラム中で明示的に(FMA/XOP命令を)呼び出す必要がある。インテルのコンパイラーも『ICC 12』でAVXに対応する。残念ながらFMA4/XOPのサポートはないがね」

「ちなみにインテルは『Haswell』で『FMA3』命令に対応するが、これはFMA4より優れているとは言えない。FMA4はNon Destructiveだが、FMA3はDestructiveだからね※1
※1 Destructiveとは「元々のデータを破壊する」の意味。FMA3の場合、「A=A×B+C」という演算になり、元々Aに入っていた値が、演算の結果上書きされる。Non DestructiveのFMA4の場合、「Z=A×B+C」という演算になり、Aの値がそのまま残る。

――AMDもFMA3をサポートする計画はありますか?

フリー「インテルがHaswellをリリースするタイミングで、AMDもFMA3をサポートすることになる」

――それはBulldozerの次の世代ということでよいのですね?

フリー「そのとおりだ。FMA4はFMA3よりもパワフルであるが、ソフトウェア互換性のためにこれをサポートする」

Bulldozerはサーバー分野での
ボトルネックを対策した製品

AMDが示したBulldozerの性能に関するスライド。中央に小さく主要なベンチマーク結果がまとめられている。これはXeon X5670のスコアを100とした時の、Opteron 6276のスコア

――話をBulldozerに戻します。このスライドではいろいろなベンチマーク結果が示されていますが、いくつかのテストは実施してみても、ここまで明確な差は得られませんでした。「性能がXeonより優れる」とする理由を、説明していただけませんか?

フリー「性能の観点で言えば、おおむね24~84%高速という結果が出ている。この84%というのはLINPACKの数字だ。あなたも最新のプロセッサーとBIOS、周辺ハードウェアなどを揃えれば、同じ結果を入手できるはずだ。これはサーバーだけでなくデスクトップでも同じだろう」

――簡単に考えると、Bulldozerは各々のコアが2つのALUとAGUを持っています。x86命令は大体がLoad+ALUという構成が多いので、こうしたx86命令をBulldozerで実行すると、IPCは2程度が期待できます。AMDの前世代、Shanghai(Opteron x300)やIstanbul(Opteron x400)はIPCが3程度でしたが、こちらは最大でも6コアしかありません。動作周波数もややBulldozerが高速で、こうしたことを考えるとBulldozerはShanghai/Istanbulより高速だというのはわかります。

 しかし競合するインテルの場合、物理的に4~8コアで、さらにハイパー・スレッディングを使って論理的には最大16スレッドが実行できます。内部構成はIPCが3程度でIstanbulとほぼ同等。動作周波数もBulldozerより若干低い程度です。そう考えると、理論的にはBulldozerが84%も性能で上回るというのは、非常に難しく感じるのですが。

フリー「個別の要素を比べることにはあまり意味はなく、アーキテクチャー全体として判断する必要がある。例えばIPCだ。IPCは確かに重要だが、それはひとつの目安でしかない。動作周波数もそうだし、キャッシュサイズもそうだ。結局のところ、ボトルネックは何かという話になる」

フリー「例えばBulldozerは2スレッドを同時に扱えて、各々のスレッドごとに40エントリのスケジューラーが用意されている。共有FPUには合計60エントリが用意され、トータルでは140エントリとなる。これがインテルだと、2スレッドあたりにひとつのスケジューラーしかないので、56エントリのみである。FPUのスケジューラーも分離されていない。ある種の環境では、(このエントリの少なさが)ボトルネックとなる」

「インテルのCPUでLINPACKを実行する場合、ハイパー・スレッディングをオフにしないといけない。オンにすると、実際には性能が悪化する。だから、プログラムの実行に必要とされるさまざまなリソースが、どのように配分されており、何がボトルネックになるのかを、ちゃんと見極める必要がある」


 次回はインタビューの後編をお届けしたい。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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