「SSE」の版間の差分

提供:MonoBook
編集の要約なし
 
66行目: 66行目:


[[category: CPU]]
[[category: CPU]]
[[category: SIMD]]

2025年7月11日 (金) 02:10時点における最新版

ストリーミングSIMD拡張命令(英語:Streaming SIMD Extensions、通称:SSE)とは、インテルPentium III向けに開発したCPUSIMD拡張命令セット、およびその拡張版の総称です。

概要[編集 | ソースを編集]

Pentium IIと激闘を繰り広げたAMDK6-2に実装された3DNow!に対抗すべくPentium IIIに実装されたSIMD命令群です。大雑把にいえばSSEはMMXを拡張したものであり、MMXでは整数演算だけだったものが、SSEでは浮動小数点演算にも対応しました。また、SSEでは新たに8本の128ビットレジスタも追加されています。

プログラミング[編集 | ソースを編集]

MMX3DNow!、SSEが出た当初はまともなコンパイラがなかったため、プログラマーアセンブラを用いてこれらに対応するプログラムを組んでいました。C言語C++で大枠を書いて、インラインアセンブラで部分的に高速化を試みるという書き方が主流でした。

後に機能強化されたSSE2SSE3SSSE3(Supplemental/補足的なSSE3)、SSE4などが登場していますが、この世代になるとC言語などのコンパイラも優秀になりアセンブラで書くことはほとんどなくなりました。

実情[編集 | ソースを編集]

WindowsVisual C++が主流だった時代のソフトウェアは99.9999%が「SSE非対応」どころか「i386」をターゲットにコンパイルされていました。これらはSSEどころかi486Pentiumの機能も使われていません。ソフトウェアは「最低動作環境」となるPCのスペックを下げることで「多くの人に使ってもらおう」という最小公倍数的な考え方であったためです。

MMXが登場した当初はその話題性から「MMX対応版」「MMX非対応版」といった二種類の実行ファイルを用意したゲームなどもありましたが、3DNow!やSSEの時代になるとその話題性も薄れベンチマークソフトくらいしか対応ソフトがなくなりました。

また、ベンチマークソフトみたいに何秒間も負荷100%で砂時計カーソルを表示するような処理でもない限り大して速くはならないという事実がプログラマーたちに知れ渡り「開発コストに見合わない」という認識が広まったことで対応ソフトはどんどん減っていきました。

JITコンパイル[編集 | ソースを編集]

SSEがまともに使われだしたのはJavaなどのJITコンパイラの技術が発達し「SSEの有無」を実行環境で判別してコンパイルするようになってからです。

ただJavaでSSEを使うようなプログラムを書くかと言われると、まず書きません。

やっぱりベンチマークソフトくらいしか使われていません。

オープンソース界隈[編集 | ソースを編集]

ソースコードを落としてきて実行環境でコンパイルするスタイルのオープンソース界隈ではなんぼか使われていました。一昔前は「apachemysqlの性能を向上させる方法!」などとしてググるとよく出てきていました。

ただオープンソース界隈もCentOSUbuntuが主流になり、「configure; make; make install」が廃れ、パッケージからソフトウェアを入れるのが主流になったことでやっぱりベンチマークソフトくらいしか使われていません。

ベンチマーク[編集 | ソースを編集]

2019年時点[編集 | ソースを編集]

SIMD関連のベンチマークではインテルCore iシリーズでは非常に高性能な結果が得られます。

一方、AMDRyzenでは微妙な結果になります。RyzenはSIMDではなくGPGPUを使う前提で、SIMD周りをバッサリ切り捨て、その余力を通常の演算性能を上げることに使っているためです。

どちらもプログラムの書き方が全く異なるため一概に「どちらが速い」とは言いにくいの実情です。プログラムがSSEに対応しているならIntel、GPGPUに対応しているならAMDの方が高速ということになります。ちなみにSSEGPGPUに両対応している場合は一般的にGPUの方が速い傾向にあります。

歴史[編集 | ソースを編集]

  • 1999年 2月: インテルがSSE搭載のPentium IIIプロセッサを発表。
    • 2000年 3月: インテルがSSE搭載のCeleronプロセッサを発表。
  • 2000年 11月: インテルがSSE2搭載のPentium 4プロセッサを発表。
    • 2002年 5月: インテルがSSE2搭載のCeleronプロセッサを発表。
    • 2003年 3月: インテルがSSE2搭載のPentium Mプロセッサを発表。
    • 2004年 1月: インテルがSSE2搭載のCeleron Mプロセッサを発表。
  • 2004年 2月: インテルがSSE3搭載のPentium 4プロセッサを発表。
    • 2004年 6月: インテルがSSE3搭載のCeleron Dプロセッサを発表。
    • 2006年 1月: インテルがSSE3搭載のIntel Core プロセッサを発表。
  • 2006年 6月: インテルがSSSE3搭載のXeon 5100プロセッサを発表。
  • 2007年 8月: AMDがSSE5を発表。
  • 2007年 11月: インテルがSSE4.1搭載のIntel Core 2プロセッサを発表。
  • 2007年 11月: AMDがSSEa搭載のPhenomを発表。
  • 2008年 11月: インテルがSSE4.2搭載の第一世代Intel Core iプロセッサを発表。
  • 2011年 1月: インテルがAVX搭載の第二世代Intel Core iプロセッサを発表。
  • 2011年 10月: AMDがFMA搭載のAMD FXプロセッサを発表。
  • 2013年 6月: インテルがAVX2搭載の第四世代Intel Core iプロセッサを発表。
  • 2016年 6月: インテルがAVX-512搭載のIntel Xeon Phiコプロセッサを発表。

関連項目[編集 | ソースを編集]