
コンピューティングにおいて、複数命令複数データ( MIMD ) は並列処理を実現するために用いられる手法です。MIMD を使用するマシンには、非同期かつ独立して機能する多数のプロセッサ コアがあります。いつでも、異なるプロセッサが異なるデータに対して異なる命令を実行している可能性があります。
MIMD アーキテクチャは、コンピュータ支援設計/コンピュータ支援製造、シミュレーション、モデリング、通信スイッチなど、さまざまなアプリケーション分野で使用できます。MIMD マシンは、共有メモリまたは分散メモリのいずれかのカテゴリに分類できます。これらの分類は、MIMD プロセッサがメモリにアクセスする方法に基づいています。共有メモリ マシンは、バス ベース、拡張、または階層型です。分散メモリ マシンは、ハイパーキューブまたはメッシュの相互接続スキームを持つ場合があります。
例
MIMDシステムの例としては、 Larrabeeマイクロアーキテクチャから派生したIntel Xeon Phiが挙げられます。[2]これらのプロセッサには複数の処理コア(2015年時点で最大61個)があり、異なるデータに対して異なる命令を実行できます。
2013年現在、ほとんどの並列コンピュータはMIMDシステムである。[3]
共有メモリモデル
共有メモリモデルでは、プロセッサはすべてソフトウェアまたはハードウェアのいずれかの手段を介して「グローバルに利用可能な」メモリに接続されます。オペレーティングシステムは通常、メモリの一貫性を維持します。[4]
プログラマーの観点から見ると、このメモリ モデルは分散メモリ モデルよりも理解しやすいです。もう 1 つの利点は、メモリの一貫性が記述されたプログラムではなくオペレーティング システムによって管理されることです。2 つの既知の欠点は、32 プロセッサを超えるスケーラビリティが困難であることと、共有メモリ モデルが分散メモリ モデルよりも柔軟性が低いことです。[4]
共有メモリ(マルチプロセッサ)の例としてはUMA(ユニフォームメモリアクセス)、COMA(キャッシュオンリーメモリアクセス)など多数ある。[5]
バスベース
共有メモリを備えた MIMD マシンには、共通の中央メモリを共有するプロセッサがあります。最も単純な形式では、すべてのプロセッサがメモリに接続するバスに接続されています。つまり、共有メモリを備えたすべてのマシンは、すべてのクライアントに対して特定の CM (共通バス システム) を共有します。
たとえば、一方の側にクライアント A、B、C が接続され、反対側にクライアント P、Q、R が接続されているバスを考えてみましょう。この場合、クライアントのいずれかが、それらの間のバス インターフェイスを介して他のクライアントと通信します。
階層的
階層型共有メモリを備えた MIMD マシンは、バスの階層 (たとえば、「ファット ツリー」) を使用して、プロセッサが互いのメモリにアクセスできるようにします。異なるボード上のプロセッサは、ノード間バスを介して通信できます。バスはボード間の通信をサポートします。このタイプのアーキテクチャでは、マシンは 9,000 を超えるプロセッサをサポートできます。
分散メモリ
分散メモリ MIMD (複数命令複数データ) マシンでは、各プロセッサが独自のメモリ位置を持ちます。各プロセッサは、他のプロセッサのメモリについて直接的な知識を持っていません。データを共有するには、それをメッセージとしてプロセッサ間で渡す必要があります。共有メモリがないため、これらのマシンでは競合はそれほど大きな問題にはなりません。多数のプロセッサを互いに直接接続することは経済的に実現可能ではありません。この多数の直接接続を回避する方法は、各プロセッサを他のプロセッサに少数だけ接続することです。このタイプの設計は、メッセージ パスに沿ってプロセッサ間でメッセージを渡すために必要な時間が追加されるため、非効率的になる可能性があります。プロセッサが単純なメッセージ ルーティングを実行するために必要な時間はかなり長くなる可能性があります。システムはこの時間損失を削減するように設計されており、ハイパーキューブとメッシュは、人気のある 2 つの相互接続スキームの 1 つです。
分散メモリ(複数のコンピュータ)の例には、MPP(超並列プロセッサ)、COW(ワークステーションのクラスタ)、NUMA(非均一メモリアクセス)などがあります。前者は複雑で高価です。多くのスーパーコンピュータがブロードバンドネットワークで結合されています。例としては、ハイパーキューブやメッシュ相互接続があります。COWは、価格のほんの一部で「自家製」バージョンです。[5]
ハイパーキューブ相互接続ネットワーク
4 つのプロセッサを含むハイパーキューブシステム相互接続ネットワークを備えた MIMD 分散メモリ マシンでは、プロセッサとメモリ モジュールが正方形の各頂点に配置されます。システムの直径は、1 つのプロセッサが最も遠いプロセッサにメッセージを送信するために必要な最小ステップ数です。したがって、たとえば、2 次元キューブの直径は 2 です。8 つのプロセッサがあり、各プロセッサとメモリ モジュールがキューブの頂点に配置されているハイパーキューブ システムでは、直径は 3 です。一般に、2^N 個のプロセッサを含み、各プロセッサが他の N 個のプロセッサに直接接続されているシステムでは、システムの直径は N です。ハイパーキューブ システムの欠点の 1 つは、2 の累乗で構成する必要があることです。そのため、アプリケーションに実際に必要な数よりも多くのプロセッサを持つ可能性のあるマシンを構築する必要があります。
メッシュ相互接続ネットワーク
メッシュ相互接続ネットワークを備えた MIMD 分散メモリ マシンでは、プロセッサは 2 次元グリッドに配置されます。各プロセッサは、そのすぐ隣の 4 つのプロセッサに接続されます。メッシュの端にはラップ アラウンド接続が提供される場合があります。メッシュ相互接続ネットワークがハイパーキューブよりも優れている点の 1 つは、メッシュ システムを 2 の累乗で構成する必要がないことです。欠点は、4 つ以上のプロセッサを備えたシステムでは、メッシュ ネットワークの直径がハイパーキューブよりも大きくなることです。
参照
参考文献
- ^ Flynn, Michael J. (1972 年 9 月). 「いくつかのコンピュータ組織とその有効性」(PDF) . IEEE Transactions on Computers . C-21 (9): 948–960. doi :10.1109/TC.1972.5009071.
- ^ 「並列処理の危険性: Larrabee vs. Nvidia、MIMD vs. SIMD」2008 年 9 月 19 日。
- ^ 「MIMD | Intel® Developer Zone」。2013 年 10 月 16 日時点のオリジナルよりアーカイブ。2013 年 10 月 16 日閲覧。
- ^ ab Ibaroudene, Djaffer。「並列処理、EG6370G: 第 1 章、動機と歴史」講義スライド。セントメアリーズ大学、テキサス州サンアントニオ。2008 年春。
- ^ ab Andrew S. Tanenbaum (1997). Structured Computer Organization (第4版). Prentice-Hall. pp. 559–585. ISBN 978-0130959904. 2013年12月1日時点のオリジナルよりアーカイブ。2013年3月15日閲覧。
