2015年5月2日土曜日

SIMD, MIMD

マルチプロセッシング(multi processing)とは、(本来は)ひとつのプロセスだけではなく複数の並行プロセスを同一システム内で使用することを意味する。
マルチタスクと同様ひとつのCPUを複数のプロセスが共有することも示すが、ひとつのシステム内の複数のCPUが複数のスレッドを動作させることも意味する。マルチプロセッサと言う場合は一般に後者のみを指す。

プロセッサの対称性[編集]

マルチプロセッシングシステムでは、全CPUが等価の場合といくつかのCPUが特別な用途に使われる場合がある。ハードウェアとオペレーティングシステムの設計によって、システムの対称性の度合いが決定される。例えば、ハードウェアまたはソフトウェアの制限によって1つのCPUだけがすべてのハードウェア割り込みに反応し、他のすべての作業が等しく全CPUに分配される場合もある。また、カーネルモードの実行がひとつのプロセッサに限定される場合もある(指定された特定のプロセッサの場合と、同時に複数のプロセッサでカーネルを実行できない場合がある)。このような制限がある場合、マルチプロセッシングシステムの設計は容易になるが、全CPUが対称に扱われるシステムよりも性能が低下する。
全CPUを等価に扱うシステムは対称型マルチプロセッシング(SMP)システムと呼ばれる。全CPUが等価ではないシステムには、内部資源の分割方式によっていくつかの種類がある。「非対称型マルチプロセッシング」(ASMP)、「NUMA」マルチプロセッシング、「コンピュータ・クラスター」などである。非対称型マルチプロセッシングの例としては、IBMOS/360DECVMSがある。

命令とデータの流れ[編集]

マルチプロセッシングにおいて、単一システム内の複数のプロセッサ上で、独立した複数の命令列をそれぞれ別の複数のコンテキストに対して実行する場合がある。これをMIMDと呼ぶ。また、同一の命令列を複数のコンテキスト上で並行して実行する場合もある。これをSIMDまたはベクトル計算機と呼ぶ。また、複数の命令列を一つのコンテキストに対して実行するものをMISDと呼ぶ。MISDは一般に冗長化されたフォールトトレラントシステムを意味するが、パイプライン処理ハイパースレッディングを指すこともある。ちなみに、SISDは一般のマルチプロセッシングでないシステムを指す。

0 件のコメント:

コメントを投稿