SIMD

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

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

イマシルちゃんの解説

画像を明るくするときは、画素ごとの数値に同じ計算を繰り返すことがあるよ。
こんな処理で役立つのが、SIMDという並列処理の方式なんだ。
一つの命令で、いくつかの値に同じ演算をまとめて行えるよ。
例えばCPUの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つの加算を同時に行える。

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

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

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

ネットワークスペシャリスト

午前Ⅱ

この用語が出てくる記事

↑