SIMD

読み:しむど / 英語表記:Single Instruction, Multiple Data

1つの命令で、複数のデータに同じ演算を同時に行う、並列処理の方式。画像や音声、行列の計算のように、たくさんのデータに同じ処理をする場面で、処理を高速にできる。

イマシルちゃんの解説

クラスの40人分のテストに、全員に5点ずつおまけを足すことになったとするよ。

1枚ずつ順番に足していったら、40回も計算しなきゃいけないよね。
でも、「全員5点プラス!」って1回の号令で、40人が一斉に自分の答案に足したら、あっという間に終わるんだ。
1つの号令で、たくさんのデータをまとめて処理するのが、SIMDの考え方なんだよ。

より深い解説

定義

SIMD(Single Instruction, Multiple Data)は、1つの命令の流れ(命令ストリーム)で、複数のデータの流れ(データストリーム)を同時に処理する方式である。コンピュータを命令とデータの流れの数で分けるフリンの分類の一つである。

フリンの分類

分類命令の流れデータの流れ例
SISD単一単一従来の逐次処理のプロセッサ
SIMD単一複数ベクトルプロセッサ、CPUのSIMD命令、GPU
MISD複数単一実用例はほとんどない
MIMD複数複数マルチプロセッサ、マルチコアのCPU

SIMDの例

例内容
CPUのSIMD命令x86のAVX、ARMのNEONなど。1つの命令で、長いレジスタに詰めた複数の値をまとめて計算する
ベクトルプロセッサスーパーコンピュータで使われてきた、配列のデータをまとめて処理するプロセッサ
GPU多数の演算器で、同じ処理を大量のデータに並列に行う(SIMT と呼ばれる)

例えば、128ビットのレジスタに32ビットの値を4つ詰めれば、1つの加算命令で4つの加算を同時に行える。

向いている処理、向かない処理

向いている向かない
画像の各画素への同じフィルタ処理データごとに処理の流れ(分岐)が大きく変わる処理
音声や動画の符号化前の結果を使って次を計算する、依存関係の強い処理
行列の計算、機械学習

実際の試験ではここに出る!

この用語が出てくる記事

↑