マルチプロセッシングとは
マルチプロセッシングとは、一つのシステム内で複数の
プロセスを同時に実行する技術です。これは、単に一つの
CPUで複数の
プロセスを共有する
マルチタスクとは異なり、複数の
CPUが連携して並列処理を行う場合も含みます。特に、複数の
CPUを搭載したシステムをマルチプロセッサと呼ぶことが一般的です。
マルチプロセッシングの種類
マルチプロセッシングには、プロセッサの対称性、命令とデータの流れ、プロセッサの結合方式など、いくつかの分類方法があります。
プロセッサの対称性
対称型マルチプロセッシング (SMP)
全ての
CPUが等価に扱われるシステムです。これにより、どの
CPUも同じようにタスクを処理できます。
非対称型マルチプロセッシング (ASMP)
一部の
CPUが特定の用途に特化しているシステムです。例えば、特定の
CPUのみが
ハードウェア割り込みを処理するなどの制限があります。
NUMA (Non-Uniform Memory Access)
CPUごとにローカルメモリを持ち、共有メモリへのアクセスに異なる時間がかかるシステムです。
コンピュータ・クラスター
複数のコンピュータをネットワークで接続し、連携して処理を行うシステムです。
命令とデータの流れ
MIMD (Multiple Instruction, Multiple Data)
複数のプロセッサがそれぞれ異なる命令列を異なるデータに対して実行する方式です。最も一般的なマルチプロセッシングの形態です。
SIMD (Single Instruction, Multiple Data)
複数のプロセッサが同じ命令を異なるデータに対して並列実行する方式です。
ベクトル計算機などが該当します。
MISD (Multiple Instruction, Single Data)
複数のプロセッサが同じデータに対して異なる命令を実行する方式です。主に冗長化されたシステムで利用されます。
SISD (Single Instruction, Single Data)
一般的なシングルプロセッサシステムです。
プロセッサ結合方式
密結合 (Tightly Coupled)
バスレベルで結合された複数の
CPUが、共有メモリを介して通信を行うシステムです。SMPや
NUMAがこれに該当します。
疎結合 (Loosely Coupled)
複数のコンピュータがネットワークを介して通信を行うシステムです。
コンピュータ・クラスターがこれに該当します。
ソフトウェア実装上の問題
MIMDアーキテクチャは、独立した複数のタスクを並行して実行するのに適しています。しかし、以下の問題があります。
デッドロック
複数のスレッドが互いに必要な資源を占有し、処理が進まなくなる状態です。
資源の競合
複数のスレッドが同じ資源に同時にアクセスしようとする場合に発生します。
キャッシュコヒーレンス
各プロセッサが持つキャッシュの内容が、他のプロセッサから見たときに矛盾しないようにする必要がある問題です。この解決には
ハードウェアとソフトウェアの両面からのアプローチが必要となります。
SIMDアーキテクチャは、同じ処理を大量のデータに対して並列実行するのに適しています。ただし、以下の問題があります。
並列化の困難さ
全てのタスクを並列実行できるわけではないため、一部の処理がボトルネックになることがあります。
特殊なコーディング
アーキテクチャの利点を最大限に活かすためには、特殊なコーディングが必要です。
MISDアーキテクチャは、冗長性を確保するために利用されます。しかし、以下の問題があります。
性能向上なし
処理を複数のユニットで実行しても、処理速度は向上しません。
コストパフォーマンス
複数の処理ユニットを必要とするため、コストパフォーマンスが悪いです。
まとめ
マルチプロセッシングは、システムの性能を向上させるための重要な技術です。しかし、その実装には様々な課題があり、アーキテクチャの特性を理解した上で、適切な設計を行う必要があります。
この記事が、マルチプロセッシングの理解を深める一助となれば幸いです。