AMDのFMA4命令は
インテルが今後サポートするFMA3より強力
――命令セットとソフトウェアについてもおうかがいします。Bulldozerの世代でAMDは、「SSE」「AVX」に加えて新しい「FMA4」命令などを追加しました。しかし、今のところこれに対応したコンパイラーや開発環境がないと思うのですが?
フリー「まず命令についてだが、既存のSSEについてはインテルのものと互換性がある。一方AVXだが、我々は元々SSEを拡張して「SSE5」を策定した。ただこの一部がAVXという形で実装されて、これもインテルと互換性がある。だからこの3つに関しては何の違いもない」
「残るFMA4と『XOP』は別だ。この2つとAVXは、元々SSE5として予定していたものだ。このうちFMA4とAVXについては、主要なコンパイラーでサポートされている。
フリー「PGIやOpen64、マイクロソフトの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はサーバー分野での
ボトルネックを対策した製品
――話を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を実行する場合、ハイパー・スレッディングをオフにしないといけない。オンにすると、実際には性能が悪化する。だから、プログラムの実行に必要とされるさまざまなリソースが、どのように配分されており、何がボトルネックになるのかを、ちゃんと見極める必要がある」
★
次回はインタビューの後編をお届けしたい。
![](/img/blank.gif)
この連載の記事
-
第775回
PC
安定した転送速度を確保できたSCSI 消え去ったI/F史 -
第774回
PC
日本の半導体メーカーが開発協力に名乗りを上げた次世代Esperanto ET-SoC AIプロセッサーの昨今 -
第773回
PC
Sound Blasterが普及に大きく貢献したGame Port 消え去ったI/F史 -
第772回
PC
スーパーコンピューターの系譜 本格稼働で大きく性能を伸ばしたAuroraだが世界一には届かなかった -
第771回
PC
277もの特許を使用して標準化した高速シリアルバスIEEE 1394 消え去ったI/F史 -
第770回
PC
キーボードとマウスをつなぐDINおよびPS/2コネクター 消え去ったI/F史 -
第769回
PC
HDDのコントローラーとI/Fを一体化して爆発的に普及したIDE 消え去ったI/F史 -
第768回
PC
AIアクセラレーター「Gaudi 3」の性能は前世代の2~4倍 インテル CPUロードマップ -
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ - この連載の一覧へ