このページの本文へ

前へ 1 2 3 4 次へ

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

x86 CPUの進化を拡張命令のロードマップでひもとく

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

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

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

MMXの弱点を独自に改良したAMD

AMDが最初にMMXをサポートした「K6」

AMDが最初にMMXをサポートした「K6」。中身はNexGen製のコアだった

 MMXはインテルのみならず、AMDやCyrix、米RiSE Technology社などの競合ベンダーも当然採用した。命令セットに関するライセンスはまた複雑なのだが、最終的には『x86の互換チップを製造する権利を持つ製造事業者を使う限り問題ない』ということになったようだ。

 一方AMDは、そこからさらに一歩踏み出した。AMDは1996年に、CPUメーカーの米NexGen社を買収。開発中だった「Nx686」を「AMD K6」として発売する。Nx686は当初からMMXのサポートを考慮していたこともあり、AMD K6もMMXをサポートしたが、次の「K6-2」では、MMXの弱点を補強する方向に走った。

 例えば「EMMS」命令(MMXとFPUの切り替え)は12サイクルを要する(Complex Decoderを通るため)のだが、これを1サイクルで切り替えられる「FEMMS」(Fast EMMS)命令を用意した。また、MMX PentiumやPentium Proでは同時にひとつしかMMX命令を実行できないところを、2命令に拡張したりといった具合だ。こうした、言わばAMD拡張版のMMXを俗に「MMX+」と呼ぶが、もちろんこれは正式名称ではない(公式にはこの拡張は3DNow!に含まれている)。

独自の拡張命令「3DNow!」を搭載した「K6-2」

独自の拡張命令「3DNow!」を搭載した「K6-2」

 これに加えて、AMDの拡張命令セット「3DNow!」のもうひとつの大きな特徴は、単精度浮動小数点演算の実装である。もともとNexGenは整数演算性能を重視した(=浮動小数点演算を軽視した)商品構成を取っていた。Nx586はFPUが外付け(Nx587)だし、Nx686では内蔵にはなったものの性能は低く、同一動作周波数のPentium IIなどと比較して、スペック上は同等ながら実際に使うと遅いという事が多かった。もちろん当時の製造技術でフルスペックのパイプラインFPUを製造すると、トランジスター数が大幅に増えてしまい実装不能になる、というのが主な理由であったが。

 ところが、x86のFPUに求められる最大80bitの浮動小数点の扱いを放棄して32bitに限れば、必要とされるトランジスター数が大幅に減る。そこでMMXの枠組みを流用して、同時に2つの32bit浮動小数点演算ができるようにしたのが3DNow!、ということになる。倍精度浮動小数点は扱えないから科学技術計算にはまるで不向きだが、当時のゲームの物理計算程度にはお釣りが来る精度であったし、インテルのPentium IIを大幅に超える性能を叩き出せた(ただし単精度に限る)。

 「少ないトランジスター数の増加で大幅な性能向上が得られる」ということもあり、米IDT社の「WinChip 2」やCyrixの「6x86MX」でも3DNow!が採用された(関連記事)。また、マイクロソフトがDirectX 6で3DNow!をサポートするといった事情もあって、この時点では有力な拡張命令として普及を始めていた。

 ただしインテルも負けてはおらず、早くから「SSE」を「KNI」(Katmai New Instruction)という名前でそれとなくアナウンスしており、ソフトウェアベンダーなどは「KNIが登場してから、どちらのサポートをするか(もしくは両方サポートすべきか)を判断する」と、様子見を決め込むところが結構多かったものだ。

SSEを最初にサポートしたのはPentium III

SSEを最初にサポートしたのはPentium III。インテルはSSEの情報を事前に公開することで、3DNow!の普及を巧みに食い止めた

今回のまとめ

・現在のx86系CPUの基本となっているのは、Pentium Pro世代のP6の命令セット。これに加わる拡張命令は、インテルの「MMX」から始まる。

・インテルはセキュリティー機能向け拡張命令として「TXT」を開発したが、ソフトウェア側の対応が進まず有名無実と化した。たとえインテルでも1社独自の拡張命令は普及しにくい。

・MMXはパソコンでビデオ映像を手軽に扱いたいというニーズから生まれた。既存のCPU機能を利用しつつ、SIMD方式により1回の処理で複数のデータをまとめて処理できた。

・AMDはMMXをサポートしながら、その弱点を改良した「3DNow!」を開発。Cyrixなど互換CPUベンダーにも採用されたが、インテルの「SSE」の存在によって、普及は進まなかった。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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