SIMD 【Single Instruction/Multiple Data】
概要
SIMD(Single Instruction/Multiple Data)とは、コンピュータが並列処理を行う方式の一つで、一つの命令を同時に複数のデータに適用する方式。そのような処理方式をベクトル演算、ベクトル処理などと呼ぶことがある。SIMDでは実行される命令の流れは単一だが、そこに与えられるデータの流れは複数あり、同じ処理を複数のデータに同時に実行することができる。同じ計算を大量のデータに対して適用しなければならない3次元コンピュータグラフィックス(3DCG)の描画処理や、動画・音声の圧縮や再生、暗号化・復号などでよく用いられる。
ベクトル型のスーパーコンピュータや、GPU、DSPといったメディア処理や信号処理に特化したICチップにSIMD方式の演算回路が搭載される。汎用のCPU(マイクロプロセッサ/MPU)でも、SIMD方式で実行できる拡張命令セットなどを用意しているものもある。
フリンの分類
SIMDはコンピュータの設計様式を整理した「フリンの分類」の一つである。1966年にコンピュータ科学者のマイケル・フリン(Michael J. Flynn)氏が提唱した分類で、命令列とデータ列それぞれの並列性を組み合わせた「SISD」「SIMD」「MISD」「MIMD」の4類型がある。
SISD (Single Instruction/Single Data)
一度に一つのデータを対象に、一つの命令を実行する方式。最も単純なコンピュータの構成で、命令にも扱うデータにも基本的には並列性がなく、いずれも一つの流れで順番に処理していく。単独で使用される用語ではなく、SIMDやMIMDなどの並列性のある構成と対比して単純な構成のコンピュータを指す場合に用いられる。
MIMD (Multiple Instruction/Multiple Data)
複数のデータ列を、それぞれ対応する複数の命令列によって並行に処理する方式。並列処理の多くがこの方式で、一つのプロセッサに複数のコアを内蔵したマルチコアプロセッサや、一台のコンピュータに複数のプロセッサを搭載したマルチプロセッサシステムがこれに該当する。
MISD (Multiple Instruction/Single Data)
一度に一つのデータを対象に複数の異なる命令を同時に実行する方式。並列化を処理性能の向上ではなく信頼性や耐障害性の向上のために利用するシステムなどで用いられ、多重化・冗長化システム(フォールトトレラントシステム)、多数決システムなどがこれに分類される。CPUのパイプライン機構をMISDの例とする場合もある。