MIMDとは何? わかりやすく解説 Weblio辞書 (original) (raw)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/04/17 06:33 UTC 版)
MIMD(Multiple Instruction stream, Multiple Data stream)とは、コンピューティングにおいて並列性を達成するのに使われる技法の一種。MIMD型のマシンは、独立して機能する複数のプロセッサを持つ。任意の時点で、異なるプロセッサは異なる命令を使って異なるデータを処理している。MIMDアーキテクチャは様々な分野で応用されており、CAD/CAM、シミュレーション、モデリング、通信スイッチなどに使われている。MIMD型マシンは、共有メモリ型と分散メモリ型に分類される。この分類は、MIMD型マシンのプロセッサがどのようにメモリにアクセスするかに着目したものである。共有メモリ型マシンは、単純なバスを使ったものや、階層型のバスを使ったものがある。分散メモリ型マシンは、ハイパーキューブ型やメッシュ型の相互接続ネットワークを使うことが多い。
目次
共有メモリ型
バス方式
メモリとプロセッサ群がバスに接続されたMIMDマシン。最も単純な形態では、単一のバスに全てが接続される。バスがボトルネックとなりやすいため、小規模なマシンでよく使われている。対称型マルチプロセッシングの多くはこの方式である。
階層型バス方式
バス方式のMIMDマシンを上位のバスで相互接続したMIMDマシン。下位のバス内でのメモリアクセスと、上位のバスを経由したメモリアクセスで、アクセスコストが異なるNUMA型である。NUMAの中でも比較的小規模なマシンに多い。
分散メモリ型
各プロセッサにローカルなメモリが個別に配置されたMIMDマシン。データを共有するには、メッセージとしてプロセッサ間でやりとりする必要がある。共有メモリがないため、メモリアクセスの衝突は問題とはならない。多数のプロセッサを1対1に接続するのはコストがかかりすぎるため、直接接続するプロセッサ数を制限するのが一般的である。しかし、その場合に直接接続していないプロセッサ間で通信をするとき、間にあってメッセージを転送するプロセッサ数が多いほど転送に時間がかかることになる。そのため、最大転送時間を考慮したネットワーク設計が重要となる。また、バス方式の共有メモリ型MIMDマシンを最小単位としてネットワークを形成する場合もある。
ハイパーキューブ型ネットワーク
超立方体の各頂点にプロセッサとメモリを配置する形態。2n個のプロセッサ(ノード)があるとき、最も遠いプロセッサまでに経由する辺の数は n 本となる。また、2n個のノードがあるとき、直接接続するノード数も n 個となる。例えば、16ノードであれば1つのノードから4本の通信路が出ていて、最も遠いノードまで3個のノードを経由する。具体例としてはnCUBEのマシンなどがある。ハイパーキューブの欠点としては、ノード数が常に 2n 個でなければならない点である(そうでないと転送できない経路が出てくる)。従って、アプリケーションが実際に必要とするノード数より多めにノードを用意しなければならない。
メッシュ型ネットワーク
2次元の格子状にプロセッサとメモリを配置する形態。各プロセッサは常に4つの近傍のプロセッサと相互接続される。格子の端は相互に接続され、全体としてトーラス型とされることが多い。ハイパーキューブに比較すると、プロセッサ数が任意である点が優れているが、最も遠いプロセッサとの距離はハイパーキューブよりも大きい。
関連項目
- 対称型マルチプロセッシング
- NUMA
- フリンの分類
- SPMD
- マルチコア
表話編歴CPUテクノロジー | |
---|---|
アーキテクチャ | ISA: CISC EDGE EPIC MISC(英語版) OISC(英語版) RISC VLIW ZISC(英語版) ハーバード・アーキテクチャ ノイマン型 4ビット 8ビット 12ビット 16ビット 18ビット 24ビット 31ビット 32ビット 36ビット 48ビット 60ビット 64ビット 128ビット |
並列処理 | パイプライン 命令パイプライン イン・オーダー&アウト・オブ・オーダー レジスタ・リネーミング 投機的実行 レベル ビット 命令 スーパースカラー データ タスク スレッド マルチスレッディング 同時マルチスレッディング ハイパースレッディング スーパースレッディング(英語版) フリンの分類 SISD SIMD MISD MIMD |
タイプ | マイクロプロセッサ DSP マイクロコントローラ System-on-a-chip ベクトルプロセッサ |
コンポーネント | 演算装置 Back-side bus マルチプレクサ デマルチプレクサ レジスタ MMU TLB キャッシュ レジスタファイル マイクロコード 制御装置 CPUクロック |
電源管理 | APM ACPI (states) Dynamic frequency scaling Dynamic voltage scaling Clock gating |
表話編歴並列計算 | |
---|---|
総論 | クラウドコンピューティング グリッド・コンピューティング 高性能計算 コンピュータ・クラスター 分散コンピューティング |
並列レベル | タスク データ ビット 命令 |
スレッド | スーパースレッディング(英語版) ハイパースレッディング |
理論 | アムダールの法則 グスタフソンの法則 コスト効率性(英語版) Karp-Flatt metric(英語版) Parallel slowdown(英語版) Speedup(英語版) |
要素 | スレッド ファイバー プロセス PRAM Instruction window(英語版) |
調整 | キャッシュコヒーレンシ 同期 バリア マルチスレッディング マルチプロセッシング メモリコヒーレンス Cache invalidation(英語版) Application checkpointing(英語版) |
プログラミング | スレッド (コンピュータ) 並列プログラミングモデル Implicit parallelism(英語版) Explicit parallelism(英語版) 並行性 フリンの分類 SISD SIMD MISD MIMD SPMD(英語版) Lock-freeとWait-freeアルゴリズム |
ハードウェア | スーパーコンピュータ スーパースカラー ベクトル計算機 マルチプロセッシング対称型 非対称型 マルチコア メモリNUMA en:COMA en:分散型 共有型 分散共有型 SMT MPP Beowulf |
API | Ateji PX(英語版) Boostスレッド C++ AMP Charm++(英語版) Cilk(英語版) Coarray Fortran(英語版) CUDA Dryad(英語版) Global Arrays(英語版) Intel Cilk Plus(英語版) Intel Threading Building Blocks MPI OpenACC OpenCL OpenHMPP(英語版) OpenMP PVM POSIXスレッド UPC |
問題 | en:Embarrassingly parallel en:Grand Challenge en:Software lockout |
並行計算 カテゴリ:並行計算 カテゴリ:並列コンピューティング |