出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/02/23 04:57 UTC 版)
|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2017年11月)
|
単一命令・複数データ(英: single instruction, multiple data、SIMD[注釈 1][注釈 2])とは、コンピューターにおける並列計算方式の一つであり、単一の命令を同時に複数のデータ要素へ適用する構造を指す[5]。
1966年にMichael J. Flynnが提唱した計算機アーキテクチャの分類(フリンの分類の分類)に含まれる。主に数値演算、画像処理、信号処理など、同一の演算を大量のデータに対して実行する用途で用いられ、ベクトル計算機やCPUの命令拡張、GPUなどに実装されている。
同一の演算を繰り返すような操作をスカラー計算機のように逐次的に行うのではなく、一度に行うものである。
例えば、4次元ベクトル同士の加算を実行する場合、X, Y, Z, Wの成分ごとに加算処理を行う。
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/04/23 13:55 UTC 版)
「マルチプロセッシング」の記事における「SIMD」の解説
詳細は「SIMD」を参照 SIMDマルチプロセッシングは並列またはベクトル処理に適している。非常に大きなデータセットを部分に分割し、それぞれに同一だが独立な操作を施す。単一命令ストリームが複数の処理ユニットに与えられ、それらの処理ユニットが大量のデータに同時並行的に同じ処理を行うのである。 ある種の計算アプリケーションにとっては、このタイプのアーキテクチャは多大な性能向上をもたらす。特に与えられたタスクを完了するまでの経過時間が問題となるような場合に有効である。しかし、このアーキテクチャの問題は、アプリケーションやシステムタスクが並列に実行可能な部分に分割できないような場合にシステムの大部分がアイドル状態になってしまうことである。 さらに、アプリケーションはアーキテクチャの利点を最大限に利用するために慎重かつ特殊なコーディングを必要とし、そのような環境向けのコードを生成するよう設計された特殊な最適化コンパイラを使わなければならない。そのようなコンパイラでは、明示的に並列実行すべき箇所を指定するための拡張構文などが用意されることがある(例えばSIMD型スーパーコンピュータであるILLIAC IV用のFORTRANにある DO FOR ALL 文など)。 SIMDマルチプロセッシングはコンピュータによるシミュレーションなどの一定の分野で広く使われるが、汎用デスクトップや商用コンピュータ環境ではあまり使われていない。 SIMD実行ユニットは1990後半から汎用プロセッサで採用されている。スーパースケーラ実行ユニットが同時にすべてリザーブ/リタイヤされるようマイクロコードをスケジュールするよう専用の命令を設け、プロセッサ内部の全実行ユニットを使って複数データを一斉処理する方式が一般化した。現在ではSIMDと言った場合、この設計の事を指す。基礎技術はVLIWを大いに参考にし、またSIMD実行ユニットの発展系としてEPICアーキテクチャなどが開発された。
※この「SIMD」の解説は、「マルチプロセッシング」の解説の一部です。
「SIMD」を含む「マルチプロセッシング」の記事については、「マルチプロセッシング」の概要を参照ください。
固有名詞の分類