この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "マルチプロセッシング"
マルチプロセッシング(英語: multi processing)とは、(本来は)ひとつのプロセスだけではなく複数の並行プロセスを同一システム内で使用することを意味する。
マルチタスクと同様ひとつのCPUを複数のプロセスが共有することも示すが、ひとつのシステム内の複数のCPUが複数のスレッドを動作させることも意味する。マルチプロセッサと言う場合は一般に後者のみを指す。 マルチプロセッシングシステムでは、全CPUが等価の場合といくつかのCPUが特別な用途に使われる場合がある。ハードウェアとオペレーティングシステムの設計によって、システムの対称性の度合いが決定される。例えば、ハードウェアまたはソフトウェアの制限によって1つのCPUだけがすべてのハードウェア割り込みに反応し、他のすべての作業が等しく全CPUに分配される場合もある。また、カーネルモードの実行がひとつのプロセッサに限定される場合もある(指定された特定のプロセッサの場合と、同時に複数のプロセッサでカーネルを実行できない場合がある)。このような制限がある場合、マルチプロセッシングシステムの設計は容易になるが、全CPUが対称に扱われるシステムよりも性能が低下する。 全CPUを等価に扱うシステムは対称型マルチプロセッシング(SMP)システムと呼ばれる。全CPUが等価ではないシステムには、内部資源の分割方式によっていくつかの種類がある。「非対称型マルチプロセッシング マルチプロセッシングにおいて、単一システム内の複数のプロセッサ上で、独立した複数の命令列をそれぞれ別の複数のコンテキストに対して実行する場合がある。これをMIMDと呼ぶ。また、同一の命令列を複数のコンテキスト上で並行して実行する場合もある。これをSIMDまたはベクトル計算機と呼ぶ。また、複数の命令列を一つのコンテキストに対して実行するものをMISDと呼ぶ。MISDは一般に冗長化されたフォールトトレラントシステムを意味するが、パイプライン処理やハイパースレッディングを指すこともある。ちなみに、SISDは一般のマルチプロセッシングでないシステムを指す。 歴史的には、密結合システムの方が高性能で物理的にも小さかったが、高価だった。最近では普通のコンピュータが非常に小型化されてきたため、疎結合システムを安価に構築できるようになった。さらにマルチコア化によって普通のパソコンでも密結合システムが一般的になり、プロセッサ結合方式は密結合と疎結合が同時に存在するより複雑な系へと発展しメモリ局在性の管理とメッセージパッシングシステムの最適化はより重大な課題となっている。 MIMDマルチプロセッシング・アーキテクチャは、個々に独立した様々なタスクを実行するのに適しており、それぞれが異なるデータセットに対して異なる命令を並行して実行する。このような用途はニーズがあり、実装も比較的容易なので、MIMD はマルチプロセッサの大半を占めている。 処理は複数のスレッドに分割され、それぞれがハード的なプロセッサ状態を持つ。これらスレッドはひとつのプロセス内に存在する場合もあるし、別々のプロセスに属していることもある。複数のスレッドがディスパッチされるのを待っている状態となるため、このアーキテクチャはハード資源の利用効率が高い。 MIMD ではデッドロック問題や資源の競合が発生する。
マルチプロセッシングの種類
プロセッサの対称性
命令とデータの流れ
プロセッサ結合方式
密結合 (tightly coupled)
密結合マルチプロセッサシステムはバスレベルで結合された複数のCPUを持つ。そのプロセッサ群は共通の共有メモリにアクセスする(SMP)。あるいはメモリにローカルと共有の二階層を設ける(NUMA)。IBM p690 RegattaはハイエンドのSMPシステムの一例である。チップ上のマルチプロセッサであるマルチコア処理では、ひとつのチップ上に複数のプロセッサが実装されており、最も進んだ形式の密結合マルチプロセッシングと言う事ができる。メインフレームのマルチプロセッサシステムは密結合であることが多い。
疎結合 (loosely coupled)
疎結合マルチプロセッサシステム(コンピュータ・クラスターとも呼ばれる)は複数の独立したコンピュータを高速な通信システム(たとえばギガビット・イーサネットなど)で結合したものである。LinuxのBeowulfやSCoreによるクラスターは疎結合システムの例である。
ソフトウェア実装上の問題
MIMD詳細は「MIMD」を参照