このページの本文へ

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

大きな進化となったSSEと開発環境でつまづいた3DNow!

2009年10月19日 12時00分更新

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

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

Pentium 4のSSE2で、SSEレジスターは真価を発揮

Pentium 4

Pentium 4

 インテルはこれに続き、初代の「Pentium 4」で「SSE2」を導入する。Pentium 4のコード名をとり、「WNI」(Willamette New Instruction)と呼ばれたこの命令セットが導入されたことで、初めてSSEレジスターはその本領を発揮するようになったと言ってよい。

 SSEを端的に言えば、「単精度浮動小数点値×4」のみを扱う拡張命令だったが、SSE2では以下のデータ型も扱えるようになった。

  • 倍精度浮動小数点値×2
  • 64bit整数値×2
  • 32bit整数値×4
  • 16bit整数値×8
  • 8bit整数値×16

 これにより、完全にMMXとの決別をはたしたわけだ。

 また、SSE2からは演算のパターンも複雑化する。もともとSSEというかSIMD命令は、「ひとつの命令で複数のデータをまとめて処理する」方式なので、処理としては例えば図1の様な構図になる。「X0/X1」「Y0/Y1」がデータ、「Op」は処理だ。だから加算なら「X0+Y0」と「X1+Y1」が同時に行なわれるわけで、この場合Opは「+」(加算)となり、その結果がまとめて「DEST」に入る。

図1 SIMD命令の加算処理の例

図1 SIMD命令の加算処理の例

 図1はデータが2つの例だが、MMXならば8/4/2つ、SSEならば常に4つ、SSE2ならば16/8/4/2つ、3DNow!ならば常に2つのデータが入るから、演算もこの数だけ同時に行なわれることになる。ただし、X1とY0とかX0とY1といった演算は、原則としてサポートしていない。

 確かに単純な演算であれば、これで問題ない。ところがSSEを幅広い用途に使ってゆこうとすると、もうすこしデータの自由度がほしい場合がある。そこで、いくつかのデータ置換(Shuffle)命令はMMXやSSEの時代から用意されてきたが、SSE2ではより積極的な命令がいくつか追加されている。その一例が「SHUFPD」(SHUffle packed double-precision Floating-Point values)だ。倍精度浮動小数点の値を入れ替えるという命令だが、ここでどの要素を選択するかを選べるようになっている。

SSE2でのデータ置換命令の例

SSE2でのデータ置換命令の例

 またMMX/SSEに比べて、はるかに多くの種類のデータ形式を扱うようになったため、データの型変換命令も大量に追加する必要が出てきた。型変換命令はMMXが3種類、SSEでは4種類が用意されるが、SSE2では18種類もの命令が“追加”されている。


性能では互角に渡り合えたEnhanced 3DNow!

「K7」こと「Athlon」

「K7」こと「Athlon」。Enhanced 3DNow!に対応していた

 ではこの時期AMDはどうだったか? まず初代「Athlon」であるAMDのK7コアで、3DNow!を強化した「Enhanced 3DNow!」を投入する。これは3DNow!に24の命令を追加するものだが、実際はMMXの命令拡張が19命令、3DNow!のDSP拡張が5命令といった割合になっている。

 DSP拡張というのは、端的に言えばCPUでドルビー・サラウンドのサラウンド音源再生を可能とする命令というのがわかりやすいだろう。ドルビーのデコードは結構複雑な処理なので、従来のFPUでは速度が足りず、またMMXや3DNow!ではうまくこれを扱えなかった。そこでドルビーのデコードを高速化できるような命令を、DSP拡張という名前で追加したのである。一方残りの19命令は、MMX命令で不足していた整数演算命令を追加したというもので、逆に言えば浮動小数点演算系には一切手を加えていない。まだこの時期、浮動小数点演算を高速化するニーズはそれほど多くなく、3DNow!で十分カバーできたということだろう。

 実際、性能に関して言えば、3DNow!やEnhanced 3DNow!は十分SSE/SSE2に対抗できた。SSE/SSE2は、性能こそ豊富だしレジスターも専用のものが用意されたが、相変わらず命令のスループットや遅延が大きく、フルに性能を生かそうとすると結構面倒な最適化が必要だった。対して3DNow!系は、命令数こそ少なかったしMMXレジスターの使いまわしだったものの、スループットや遅延が低めで性能をチューニングしやすかった。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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