このページの本文へ

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

新命令AVXがもたらすx86の次の革新 その特徴とは

2009年11月02日 12時00分更新

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

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

Fusionを見据えてSSE5を開発したAMD しかし……

 さて、競合のAMDはどうしたか。AMDはAVXが発表される1年前に、「SSE5」という新しい拡張命令を発表している。2007年8月には命令セットが発表されており、エミュレーターなども提供される予定だった。特徴をざっと並べると、以下のようになる。

  • レジスターは128bitのSSEレジスターをそのまま利用
  • 3・4オペランド命令をサポート
  • FMAC(Fused Multiply ACcumulate)命令をサポート。AVXにおけるFMAと同じように「A=B×C+D」を計算する。4オペランドを使う点もFMAと同じ
  • FMACの整数演算版のIMAC(Integer Multiply ACcmulate)命令をサポート
  • 並べ替えおよび条件移動命令を搭載
  • ベクタ変換命令を搭載
  • 精度制御・変換命令を搭載

 レジスターの256bit拡張こそないものの、FMAや3・4オペランド命令の採用はAVXよりSSE5の方が先だった。そしてこのSSE5の目的は、CPUにGPUを統合する「Fusion」を念頭に置いたものだった。つまり、将来的にはGPUとCPUコアが密結合し、プログラムからはx86の拡張命令を発行しているように見えるが、実際はGPUコアが動作するようなモデルもありえることを考慮していた。

AMD Fusionの公式サイト AMD Fusionの公式サイト

 3・4オペランド命令は、こうしたGPUコアとの密結合が実現すると、使えるレジスター数がぐっと増える。なにより2オペランド的な命令セットはGPU系では一般的ではない※1。その後に登場した32bitプロセッサーは、例えばARM社なども古くから3オペランド命令をサポートしている。GPUとの連携を考えた場合、3・4オペランドフォーマットを採用するのはごく自然であっただろう。事実、2007年当時のAMDでCTO職にあったフィル・ヘスター(Phil Hester)氏ははっきりと、「SSE5は将来のFusionに到る第一歩だ」と明言していた。また、HPC(High Performance Computing)向けの性能を強化する場合、FMACの採用もごく自然な成り行きと言ってよい。

※1 そもそも、x86がなぜ2オペランドかといえば、x86命令を定義した当時はトランジスター数が厳しく、3オペランド命令を採用するのは非効率だったことに起因する。その後、使えるトランジスター数は飛躍的に増えたものの、互換性を保つという理由のみで2オペランドが継承されたためだ。

 当初このSSE5は、2010年に登場する予定だった「Bulldozer」コアに搭載されるはずだった。ところがBulldozerコアの登場が予定より遅くなり、2011年以降にずれ込むことになる(関連記事)。また、SSE5を積極的に進めてきたヘスター氏が2008年4月に離職。このあたりからSSE5の雲行きが怪しくなってくる。

 ひとつには、「AVXとの互換性をどうするか?」という問題であり、特にAVXで導入された新しい命令エンコード方式は、AMDにとっても魅力的だったためだ。機能的にAVXで導入される命令は、SSE5の大半を実現できるという点もあった。

 また、拡張命令のソフトウェアサポートの問題もあったと思われる。インテルは拡張命令を自社でサポートできるだけのソフトウェアエンジニアと製品ラインナップを保持しているが、AMDはどうしても他社(特にWindowsプラットフォームに関してはマイクロソフト)頼みにならざるをえない。ゆえに、そちらの方から何らかのプレッシャーがかかったとしても不思議ではない。このあたりの経緯は、AMDフェロー兼シニア・アーキテクトのデイブ・クリスティ(Dave Christie)氏によるAMD Developer Blogの2009年5月6日のエントリからも多少うかがえる。

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

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

ピックアップ

ASCII.jp RSS2.0 配信中

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