このページの本文へ

前へ 1 2 3 4 次へ

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

MSのプッシュでAMD64が勝者になったx86の64bit拡張

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

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

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

インテルとAMDの拡張命令の乖離が一層進む

「Penryn」コアの45nm版「Core 2 Duo」

「Penryn」コアの45nm版「Core 2 Duo」。これで導入された「SSE 4.1」では、SIMD演算より特定用途向け高速命令といった方向性がさらに強まった

 拡張命令の乖離は、その後さらにひどくなる。SSSE3に続き、インテルは「Penryn」コアのCore 2 Duoで「SSE 4.1」、Nehalemで「SSE 4.2」という形でSSE4をリリースする。

 このSSE4シリーズには、もはやSIMD命令はほとんどなく、大半が特定処理を高速に行なうというアクセラレーター命令に近いものになっている。追加された命令を表にまとめてみた。

SSE 4.1 SSE 4.2
整数乗算(2命令) 内積(2命令) 文字列検索(4命令)
Streaming Load(1命令) 条件付コピー(6命令) 条件判断(1命令)
最大/最小(6命令) 丸め(4命令) CRC32(1命令)
レジスター操作(9命令) フォーマット変換(12命令) POPCNT(1命令)
SAD計算(1命令) 水平検索(1命令)
条件判断(1命令) 数値比較(1命令)
型変換(1命令)

 SSE4.1はまだ多少SIMDっぽさを残しているが、例えばSADの計算(MPEGのエンコードで動きベクトルの算出に使うもの)などは、一見便利そうに見えて、よく考えると「誰が使うんだ?」的なものだし、SSE4.2はほとんどがアクセラレーター命令と化している(CRC32を一発で計算できる、なんてのはアクセラレーター命令以外の何者でもないだろう)。

 こうした命令との互換性を保つ必要はもはやないと判断したためか、AMDは独自に「SSE4a」を「Phenom」で搭載する。もっとも、このSSE4aはわずか4命令だけ。具体的には以下のようになる。

  • データ移動(2命令)
  • Bitフィールド操作付コピー(2命令)

 これらは、SSSE3/SSE4.1/SSE4.2とは互換性のない独自仕様である。面白いのは、これとは別にPhenomの世代では、「ABM」(Advanced Bit Manipulation)命令としてLZCNT/POPCNTという命令を定義しているのだが、このPOPCNTはSSE 4.2のPOPCNTと完全互換なのだ。

 「役に立つ命令については取り込むが、それがSSEレジスターの操作をともなわないのであればSSE命令と見なさない」、という姿勢が明確に出ていて面白い。そんなわけで、現在はAMDとインテルの間で拡張命令の非互換性が生じているわけだ。この非互換は、当面解消される様子はない。

今回のまとめ

・2002年にAMDは、x86との互換性を重視した64bit拡張「x86-64」(現AMD64)を投入した。弱点の汎用レジスターを大幅拡張しつつ、命令セットは従来の32bit命令も支障なく扱えた。

・当時のインテルは、x86との互換性が低い独自の64bit拡張を模索していた。しかしx86との互換を強く重視するマイクロソフトがAMDを支持するなど圧力を強め、結局AMD64と互換性のある「EM64T」(現Intel 64)を導入する。

・SSE系の拡張命令は、「SSE3」まではインテル・AMD両者で互換性があった。しかし、インテルがSSE3以降、特定処理向けのアクセラレーター命令導入に方向性を変えたため、AMDはSSSE3以降をサポートしなくなった。そのためSSE 4シリーズはほぼ、両者のCPUで互換性がない。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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