通信用語の基礎知識 全国のICカードこれひとつ 戻る

SSE 4.1
辞書:科学用語の基礎知識 中央演算処理装置用語x86編 (IYCP86)
読み:エスエスイー-よんてんいち
外語:SSE4.1: Streaming SIMD Extensions 4.1
品詞:固有名詞

SSE4のうち、Penrynから搭載された47個の命令のこと。

目次
概要

様々なメディア処理、画像処理、3D処理のパフォーマンス向上を目的とした新命令群である。

前述のような用途向けに特化された命令が多いが、XMMレジスターの任意のビットの挿入・抽出命令や、丸めモードを即値で指定できる丸め命令などの汎用的な命令もある。

各命令についの詳細は後述する。

特徴
機能の有無判別

機能の有無は、EAXレジスターに1を代入してCPUID命令を実行し、ECXレジスターに得られたフラグのビット19が1かどうかで確認できる。

追加命令

パックド・ダブルワードの乗算命令

4つの32ビット×32ビット演算を実行する命令である。


積和命令

新たな積和演算命令が二つ追加された。

dpps命令は、2個、3個、4個から任意に選択できる。


ストリーミングヒント命令

CPUのライトコンバイン(WriteCombine)メモリーへのアクセスは遅い。そこで、解決のための新命令が追加された。

この命令の挙動は、通常のロード命令と同様で、メモリーから16バイトを読み込みレジスターにコピーする命令である。

通常のロード命令と異なるのは、ライトコンバインメモリーからキャッシュラインと同量のデータを一時バッファーにコピーし、そこから16バイトをレジスターにコピーする点にある。このため、後続の命令がロードする対象が一時バッファーに含まれていた場合、一時バッファーの中からデータをコピーするため高速である。


ブレンド命令

ソースオペランドから、同じフィールドのディスティネーションオペランドに値をコピーするブレンディングのための命令が追加されている。

従来、2から4命令必要だったものを1命令で実行できるようにし、処理の効率改善をする。


パックド整数の最小値/最大値命令

8種類の、パックド整数の最小値/最大値を求める命令が追加された。

既に、画像処理用に8ビット符号なし、音声処理用に16ビット符号ありの命令があったが、今回はこれに新演算が追加されたことになる。

但し制限として、演算のオペランドはXMMレジスターのみである。整数演算の一種ではあるが、MMXレジスターは使用できない。


丸め命令

浮動小数点を丸めて整数にする、4つの丸め命令が追加されている。

丸めモードは、現在のモードか、または即値で任意に指定することが可能。丸めモードはIEEE-754の四種類のモード(最近値、-∞方向、+∞方向、切り捨て)に対応する。

これを用いると、床関数floor()や天井関数ceil()が、理論上は一命令で実装することが出来る。


ビットの挿入・抽出命令

GPRおよびXMMレジスター間での単純なデータ挿入/抽出命令が7つ(但しアセンブリ命令のニーモニックとしては9種類)追加されている。

ワード以上であっても、メモリーアクセス時のアラインメントは必要ない。

また、pinsrXのワード単位で動作する命令pinsrwは、既にSSE命令セットに存在する。


パックド・整数フォーマット変換

小さなパックド整数を、大きなパックド整数に変換する命令が12個追加されている。

符号ありの場合は符号拡張をし、元の整数のMSBで拡張される部分を埋める。ゼロパディングの場合は、拡張部分はゼロで埋める。

オペランドはXMMレジスターもしくはメモリー、ディスティネーションはXMMレジスターである。ワード以上であってもアラインメントは必須ではないが、アラインメントチェックが有効の場合は、メモリー境界を合わせる必要がある。


SAD(Sum absolute difference、差分絶対和)命令

8つの符号なしバイト整数のSADを実行し、一つの符号なしワード整数を得る命令が一つ追加されている。

SSE2から搭載されたpsadbwと比較すると、この新命令mpsadbwは内部にソースシフター(Source Shifter)が装備されており、命令一つで8種類のSADが計算できる。このためオペランドにimm8が追加されている。

例えば画像処理で、xmm1に前画像、xmm2に現画像を8ヶ所分指定して実行すれば、8つのSADをまとめてxmm1に返してくれる。従って、例えば8×8サイズのSAD演算を従来とSSE4で比較すると、コード量は1/3程度にまでコンパクトに済むようになる。


最小値抽出命令

8つの符号なしパックドワードから、最小値とその位置を求める命令が追加された。

上で紹介したmpsadbw命令は、その結果のワードを8個、XMMレジスターにパックして返す。この命令は、これをまとめて比較し、最小の値とその場所を返す命令である。

この検索を迅速に行なうことは、モーション予測の処理の高速化に繋がり、つまりビデオエンコーディング処理の高速化に寄与する。

結果は、ディスティネーションのビット0〜15に最小値、その最小ワードのインデックスがビット16〜18に格納される。ディスティネーションの残りのビットは(将来的な拡張の可能性はあるが現時点では)ゼロで埋められる。


マスク比較命令

XMMレジスターに対するtest命令が一つ追加された。

ソースとデスティネーションの各XMMレジスター同士をAND演算し、結果をフラグ(CFおよびZF)に格納する命令である。XMMレジスターの内容は変化しない。

従来であれば、一旦CPUのレジスターに複写してからtest命令をせざるを得なかった。パックされた整数であれば、例えばpmovmskbなどの命令の後でtest命令を使う、などが一般的である。ptestを使うと、その手間が不要になる。


パックド・クアッドワードの比較命令

パックされた値の比較命令が一つ追加された。

この命令は、従来からあるpcmpeqb/pcmpeqw/pcmpeqdなどと同様の処理だが、比較単位がクアッドワードとなる。


ダブルワードの飽和処理パック命令

飽和演算処理の付いた、ダブルワードからワードへの変換命令が一つ追加された。

元の符号ありダブルワードが、符号なしワードの範囲外(0xFFFFより大きい、または0より小さい)場合、0xFFFFまたは0x0000がディスティネーションに格納されます(飽和処理)。

リンク
用語の所属
マルチメディア命令
SSE4
SSE
関連する用語
SSE 4.2

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic