このページの本文へ

前へ 1 2 3 次へ

【最新パーツ性能チェック(Vol.23)】いよいよプレスコット登場(PART2)! SSE3の神髄に世界で初めて触れる!

2004年03月01日 01時34分更新

文● アスキープラス編集部 野口岳郎

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

Vol.22ですでにお伝えしたように、Prescottの性能は同クロックの旧Pentium 4(Northwood)と同等か、テストによってはプラスアルファ、という場合が多い。2次キャッシュが倍増した分は、アクセスレイテンシが増えたことでかなり相殺されてしまっている。ただ、Prescottには13の新命令からなる拡張命令セット“SSE3”が搭載され、アプリの対応による今後の速度アップが期待できる。今回は、現状ほぼ唯一のSSE3対応ソフト「TMPGEnc 3」で具体的なパフォーマンスについてチェックするとともに、SSE3の詳細について解説しよう。

アスキープラスVol.14アスキープラスVol.14発売中!速かったり遅かったりする謎の新CPUプレスコットの性能から謎までを一網打尽にする「プレスコットそこが知りたいギモン30」、パラレル版と価格差がなくなって今が買い時の「シリアルATA HDDに乗り換えろ」、ワイヤレスLAN内蔵ルータ徹底ガイド、5万円PC自作術など、今月も自作ユーザーのためのお買い物ガイド情報満載! お近くの書店でみなさまをお待ちしています。

SSE3は“x86サービスパック”

PNI(Prescott New Instructions:プレスコット新命令)として知られてきた、Prescottで追加される13の新命令は、正式に“SSE3”という名前が付けられることになった。もっとも、仰々しい名前の割に、その正体はもうひとつすっきりしない。13という命令数からして、MMXの57個、SSEの70個、SSE2の144個とは比較にならない小規模であるが、加えて、これまでの拡張命令セットが、これまで達成できなかったことに新たにチャレンジする、明確な目標があったのに対し、SSE3ではそれが見あたらない。

MMXはSIMD整数、SSEはSIMD単精度浮動小数点、SSE2はSIMD倍精度浮動小数点&MMXのSSE対応、という、シンプルに説明できる大きな実行目標があった。その点、SSE3は、対応目的が大きく分けて6つもあり、それぞれが比較的具体的な=逆に言うと、あまりスケールの大きくない=目標を据えているため、全体的なインパクトが小さく感じられる。具体的には以下の通り。

1、FISTTP命令

浮動小数点演算の強化。従来、FPUによって計算された結果を、最終的に整数の値として取り出すのには、どのような丸め(切り上げ、切り捨て等)を行なうか、何ビットのデータとして取り出すか、といった条件を別途セットする必要があり、内容の待避/復帰も含めるとかなりのクロック数を必要としていた。FISTTPは、保存先レジスタのサイズをビット数の指定と見なし、丸めは切り捨て/負の場合には切り下げという前提で、結果の取り出しを行なってくれる。

2、LDDQU命令

メモリアクセスの高速化。実際には動画圧縮の高速化に大きく貢献する。詳細は後述する。

3、ADDSUBPS、ADDSUBPD

複素数計算の高速化。2乗すると-1になるi(虚数単位)を含む「複素数」のかけ算、割り算における手間を減らせる。

4、HADDPS、HSUBPS、HADDPD、HSUBPD

水平加算。SIMD演算の結果を保持するレジスタ内部での加算。SIMD命令は、同時に行なった演算の結果を最終的に一つのレジスタの中に並んだ形で格納するが、それらを最終的に足し合わせる処理は、結構使用頻度が高い割りに専用の命令がない。従来は、別のレジスタに待避させてシフトする、あるいはシャッフル命令で割り付けた上で再度加算、といった処理を繰り返す必要があった。水平加算命令は、レジスタ内で隣りあう2つの浮動小数点データを足したり引いたりできる。これは、内積の計算に最適であるほか、3Dデータの格納方法として、従来、プログラミングはしやすいがスピードが出ないことから採用しにくかったAoS(Array of Structure)という方式を利用可能にするというメリットもある。

5、MOVSHDUP、MOVSLDUP、MOVDDUP

SSEレジスタ内の浮動小数点データを、隣の場所に複製する命令。SIMD演算の後、得られた結果をさらに複数の演算に使いたいときに重宝する。また、もともとSSEにおける浮動小数点データは、任意の位置に移動するための命令が少ない。整数演算系では、シャッフルという命令でほとんどどのようにも並べ替えができるのだが、浮動小数点データのシャッフルは移動できる位置が限られている。このほかには、本来別の用途のアンパックという命令しかない。これらの命令は、従来は対応できなかった移動パターンのいくつかにも対応できる。

6、MONITOR、MWAIT命令

仮想CPUの動作スレッドの動作制御。ハイパースレッディング対応のCPUは、実際には1つのCPUを2つに見せかけているため、何かを見張り続けるようなスレッドが走っていると、HTナシの場合よりも速度が大きく下がってしまう場合がある。MWAIT命令を発行すると、そのスレッドは休止状態になり、MONITOR命令で指定されたメモリアドレスに書き込みが行なわれるまでCPUリソースを消費しないため、HT対応システムでも理想的なCPUパワー配分が可能になる。

もっとも、これら一つ一つは、それぞれの応用範囲においては待ち望まれていた機能だ。結局、MMXからSSE2までで、SIMD演算によって可能になる新しい機能のサポートは、ほぼ一段落したが、そこまでで拾いきれなかった弱点をピンポイントで補強したのがSSE3ということができる。その意味ではSSE3は、実態はSSEのサービスパック、あるいは、x86命令セットに対するサービスパックと捉えることができる。

ところで、これら13命令は一式PNI(SSE3)として資料にまとめられているが、CPUがサポートする機能を示すCPUID命令の戻り値(ECXレジスタ)では、SSE3対応を示すビットのほかに、MONITOR/MWAIT対応を示すビットが別途設けられている。わざわざ分離されているということは、SSE3非対応だけどMONITOR/MWAIT対応とか、その逆のプロセッサが出荷される可能性を匂わせている。HT非対応のPrescottコア版Pentium 4-2.8AGHzや、同じくHT非対応と思われるPrescott Celeronにおいては、SSE3の1~5はサポートされるがMONITOR/MWAITがサポートされず、そのことを明示するため、と考えるのが自然だろう。

なお、LDDQU、MONITOR/MWAITの詳細については2月28日発売のアスキープラスVol.14にて、また、ADDSUBPS等「複素数対応」、HADDPS等「水平加算」については発売中の月刊アスキー2004年3月号に掲載しているので、今日のある方はチェックしていただければと思う。

前へ 1 2 3 次へ

カテゴリートップへ

注目ニュース

ASCII倶楽部

ASCII.jpメール アキバマガジン

クルマ情報byASCII

ピックアップ