
コンピュータにおいて、多重命令多重データ(MIMD )は並列処理を実現するために用いられる技術である。MIMDを採用するマシンは、非同期かつ独立して動作する複数のプロセッサコアを備えている。そのため、異なるプロセッサが異なるデータに対して異なる命令を同時に実行できる。
MIMDアーキテクチャは、コンピュータ支援設計(CAD)、コンピュータ支援製造(CAM)、シミュレーション、モデリング、通信スイッチなど、さまざまなアプリケーション分野で使用できます。MIMDマシンは、共有メモリ型と分散メモリ型の2種類に分類されます。これらの分類は、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(複数命令、複数データ)マシンでは、各プロセッサがそれぞれ独自のメモリ位置を持ちます。各プロセッサは、他のプロセッサのメモリについて直接的な知識を持ちません。データを共有するには、メッセージをプロセッサ間で渡す必要があります。共有メモリがないため、これらのマシンでは競合はそれほど大きな問題になりません。多数のプロセッサを直接接続することは経済的に実現不可能です。このような多数の直接接続を避ける方法の1つは、各プロセッサを少数の他のプロセッサに接続することです。このタイプの設計は、メッセージパスに沿ってメッセージをプロセッサ間で渡すのに必要な追加時間のため、非効率的になる可能性があります。プロセッサが単純なメッセージルーティングを実行するのに必要な時間は相当なものになる可能性があります。この時間損失を削減するためにシステムが設計され、ハイパーキューブとメッシュは、一般的な相互接続方式の2つです。
分散メモリ(複数のコンピュータ)の例としては、MPP(大規模並列プロセッサ)、COW(ワークステーションのクラスタ)、NUMA(非均一メモリアクセス)などがある。前者は複雑で高価であり、ブロードバンドネットワークで接続された多数のスーパーコンピュータで構成される。例としては、ハイパーキューブやメッシュ相互接続などがある。COWは、その数分の一の価格で実現できる「自作」バージョンである。[ 5 ]
4 つのプロセッサを含むハイパーキューブシステム相互接続ネットワークを備えた MIMD 分散メモリマシンでは、プロセッサとメモリ モジュールが正方形の各頂点に配置されます。システムの直径は、1 つのプロセッサが最も遠いプロセッサにメッセージを送信するのに必要な最小ステップ数です。たとえば、2 キューブの直径は 2 です。8 つのプロセッサを持ち、各プロセッサとメモリ モジュールがキューブの頂点に配置されているハイパーキューブ システムでは、直径は 3 です。一般に、各プロセッサが他の N 個のプロセッサに直接接続されている 2^N 個のプロセッサを含むシステムでは、システムの直径は N です。ハイパーキューブ システムの欠点の 1 つは、2 のべき乗で構成する必要があるため、アプリケーションで実際に必要なプロセッサよりもはるかに多くのプロセッサを持つ可能性のあるマシンを構築する必要があることです。
メッシュ相互接続ネットワークを備えたMIMD分散メモリマシンでは、プロセッサは2次元グリッド状に配置されます。各プロセッサは、隣接する4つのプロセッサに接続されます。メッシュの端には、ラップアラウンド接続が設けられる場合があります。メッシュ相互接続ネットワークのハイパーキューブに対する利点の1つは、メッシュシステムを2のべき乗で構成する必要がないことです。欠点は、プロセッサ数が4を超えるシステムでは、メッシュネットワークの直径がハイパーキューブよりも大きくなることです。