ミムド【MIMD】
MIMD
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/04/17 06:33 UTC 版)
MIMD(Multiple Instruction stream, Multiple Data stream)とは、コンピューティングにおいて並列性を達成するのに使われる技法の一種。MIMD型のマシンは、独立して機能する複数のプロセッサを持つ。任意の時点で、異なるプロセッサは異なる命令を使って異なるデータを処理している。MIMDアーキテクチャは様々な分野で応用されており、CAD/CAM、シミュレーション、モデリング、通信スイッチなどに使われている。MIMD型マシンは、共有メモリ型と分散メモリ型に分類される。この分類は、MIMD型マシンのプロセッサがどのようにメモリにアクセスするかに着目したものである。共有メモリ型マシンは、単純なバスを使ったものや、階層型のバスを使ったものがある。分散メモリ型マシンは、ハイパーキューブ型やメッシュ型の相互接続ネットワークを使うことが多い。
|
|
- 1 MIMDとは
- 2 MIMDの概要
MIMD
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/04/23 13:55 UTC 版)
「マルチプロセッシング」の記事における「MIMD」の解説
詳細は「MIMD」を参照 MIMDマルチプロセッシング・アーキテクチャは、個々に独立した様々なタスクを実行するのに適しており、それぞれが異なるデータセットに対して異なる命令を並行して実行する。このような用途はニーズがあり、実装も比較的容易なので、MIMD はマルチプロセッサの大半を占めている。 処理は複数のスレッドに分割され、それぞれがハード的なプロセッサ状態を持つ。これらスレッドはひとつのプロセス内に存在する場合もあるし、別々のプロセスに属していることもある。複数のスレッドがディスパッチされるのを待っている状態となるため、このアーキテクチャはハード資源の利用効率が高い。 MIMD ではデッドロック問題や資源の競合が発生する。しかしスレッドが資源にアクセスするかどうかは予測できないため、競合を効率的に管理するのは難しい。MIMD ではオペレーティングシステムに特別なコーディングを必要とする。アプリケーションはマルチスレッド化されない限りそのような配慮は必要としない。MIMD用のオペレーティングシステムは、シングルスレッドのアプリケーションにとっては透過的であることが多い(アプリケーション側が複数プロセスのスケジューリングなどを独自に行ったりする場合はその限りではない)。システムソフトウェアもユーザーソフトウェアも「セマフォ」(または「ロック」あるいは「ゲート」とも呼ばれる)のようなソフトウェアの排他制御機構を使って、他のスレッドが同じデータにアクセスしないように防止する。このようなロック処理はコードの複雑性を増し、性能を低下させ、評価の必要性を増すが、マルチプロセッシングの利点を否定するほどの問題ではない。 同様な競合は、CPU間でハードレベルでも発生し(例えば、キャッシュの競合と破損など)、それらはハードレベルまたはハードとソフトの共同で解決しなければならない(例えば、キャッシュ・クリア命令)。マルチプロセッシングを実装する場合、性能向上のためにキャッシュという高速メモリを僅かに各プロセッサ毎に持ち、より低速なメモリ本体へのアクセスを擬似的に高速化している。各プロセッサは個別に情報を持つ事になり、この情報をプロセッサ単位で書き換え、使用する事になる。本来、メモリ上の情報を共有しているはずなのに、あるプロセッサのキャッシュ上の変更(メモリ書き込み)を他のプロセッサのキャッシュに通知しないとデータを共有できなくなってしまう。 この問題はプログラミング技法で何とかなる話ではなく、ハードウェアで何らかのキャッシュ同期機構を設けなければならない。キャッシュ同期を可能とする解決法はいくつかあって非常に複雑である。以下に例を挙げる。 メモリへの書き込みの際にキャッシュに書き込むと同時にバスにそれをブロードキャストする。ただし、アドレスだけでありメモリには書き込まない。 書き込みを行ったプロセッサ以外は、通知されたアドレスに対応したキャッシュラインを自分が持っていたら、それを消す。 メモリリードでキャッシュミスが発生したとき、メモリを読みに行くが、それにメモリではなく最新の内容を持っているプロセッサのキャッシュが自動的に応答する。 より簡単な方式として、他のプロセッサが読みに来たキャッシュラインをメモリに書き戻し(シュートダウン)し、使用する際にメモリから読ませる手法があるが、性能は劣化する。いずれにしても、キャッシュを同期させようとするとシングルプロセッサよりもバスを使用する頻度が多くなるため、バスの高性能化がシステム性能の向上に必要となる。つまり、単一バスに多数のプロセッサを接続するとバスがボトルネックとなって性能が頭打ちとなる。
※この「MIMD」の解説は、「マルチプロセッシング」の解説の一部です。
「MIMD」を含む「マルチプロセッシング」の記事については、「マルチプロセッシング」の概要を参照ください。
固有名詞の分類
- MIMDのページへのリンク