このページの本文へ

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

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

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

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

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

SSEから大きく変更されるAVXの仕組み

AVX命令セットの特徴 AVX命令セットの特徴

 このAVXは、従来のMMX/SSEよりも大掛かりな仕組みとなっている。

レジスターを256bitに拡張 従来128bit幅だった「XMM0~15」のSSEレジスターを、それぞれ256bit幅に拡張した「YMM0~15」に変更した。つまりSSEユニットとAVXユニットはレジスターを共用する形になる。

エンコード方式を変更 これについては後述する。

256bit SIMD演算をサポート データ型そのものは64bitまでなので、1回の命令で扱えるデータの数が、単精度浮動小数点ならば8つ、倍精度浮動小数点で4つとなった。ちなみに整数演算に関しては若干追加されてはいるものの、あまり真剣に強化している感じではない。

3・4オペランド命令を導入 従来のx86やMMX/SSE~SSE4の「ほとんど」が2オペランド命令だった。2オペランド命令とは、例えばSSEで追加されたADDPS(Add Packed Single-Precision Floating-Point Values)という命令は、以下のようなフォーマットである。
ADDPS xmm1, xmm2/m128
 つまり、命令に対する被演算子(オペランド、xmm1やm128など)が2つしか指定できない。この命令を実行すると、xmm1にxmm2かm128のどちらかを加算して、その結果をxmm1に書き戻す。つまりxmm1の値が書き換わってしまうので、元の値を保持しておきたい場合、実行に先立って値をどこかにコピーしておく必要がある。

 AVXではこれに対し、3ないし4オペランドがサポートされる。例えばADDPSに対応するAVX命令としては、3オペランドの以下のような命令が用意される。
VADDPS xmm1, xmm2, xmm3/m128(m256も可)
 この場合、xmm2とxmm3もしくはm128(256)の値を加算し、結果をxmm1に書き戻すことになる。つまり元の値は残されることになる。

FMA(Fused Multiply Add)命令をサポート FMAというのは、例えば「A=B×C+D」というフォーマットの命令である。自然科学の分野で、こうした演算は非常に多く利用されており、AVXではこれを1命令で実行できる命令セットを用意した。

 AVXでは算術演算命令が131個、非算術演算命令が126個定義されており、従来のSSE命令のほぼスーパーセットとして定義されている。ただし、いくらスーパーセットとは言え、これだけ命令数が増えるとデコードが大変である。そうでなくてもx86系では次々と命令が追加されており、命令Prefixを使って拡張につぐ拡張を行なった結果、デコードが異様に大変な命令体系になってしまった。

 何が問題かというと、命令の長さが可変長であり、かつデコードをするまで命令長が何byteかわからないことだ。このためデコーダーは猛烈なスピードで頭から命令をデコードしてゆき、順次命令を切り分けてキューに積む必要があった。特に、ピークでは5命令/サイクル(MicroOps Fusionの分も加味)にも達するCore 2やCore i7ともなると、デコーダーは見かけ上コアの動作周波数の4倍にも及ぶスピードでデコードを行なう必要がある(実際はいろいろテクニックがあるので、こんなに高速ではない)。それにより、デコード段がCPUの内部ブロックで一番発熱が多く、かつ性能面でもボトルネックにつながっていた。

AVXでのエンコード方法の変更 AVXでのエンコード方法の変更。先頭に「C5」や「C4」が来た場合、命令長などの情報を続く1~2byteのPayload(図下側の水色部分)に記す

 AVXではこれを解決するために、命令エンコードの方法を変えた。機械語での命令の先頭に「C4」や「C5」があった場合、その後ろに「命令長が何byteあるか」「どんなレジスターを使うか」を格納する「Payload」フィールドを追加したのだ。この結果、デコーダーは先頭の2~3byte(C5なら2byte、C4ならば3byte)を読めば、次の命令がどこから始まるか判断できるので、その後は命令デコードと並行して次の命令のデコードを開始できる。これにより命令の拡張の余地を残しつつ、デコード段における伝統的なx86の弱点を大幅に解決する技法を導入した。

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

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

ピックアップ

ASCII.jp RSS2.0 配信中

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