
コンピューティングにおいて、MIMD(Multiple Instruction Multiple Data)は並列処理を実現するために用いられる手法です。MIMDを採用したマシンは、非同期かつ独立して動作する複数のプロセッサコアを備えています。常に、異なるプロセッサが、異なるデータに対して異なる命令を実行している可能性があります。
MIMDアーキテクチャは、コンピュータ支援設計/コンピュータ支援製造、シミュレーション、モデリング、通信スイッチなど、様々な応用分野で利用できます。MIMDマシンは、共有メモリ型と分散メモリ型に分類されます。これらの分類は、MIMDプロセッサのメモリアクセス方法に基づいています。共有メモリ型マシンは、バスベース、拡張型、階層型のいずれかです。分散メモリ型マシンは、ハイパーキューブ型またはメッシュ型の相互接続方式を採用しています。
MIMDシステムの例としては、Larrabeeマイクロアーキテクチャから派生したIntel Xeon Phiが挙げられます。[2]これらのプロセッサには複数の処理コア(2015年時点で最大61個)があり、異なるデータに対して異なる命令を実行できます。
2013年現在、ほとんどの並列コンピュータはMIMDシステムである。[3]
共有メモリモデルでは、すべてのプロセッサがソフトウェアまたはハードウェアを介して「グローバルに利用可能な」メモリに接続されます。通常、オペレーティングシステムはメモリの一貫性を維持します。[4]
プログラマの観点から見ると、このメモリモデルは分散メモリモデルよりも理解しやすいです。もう一つの利点は、メモリの一貫性がプログラムではなくオペレーティングシステムによって管理されることです。2つの既知の欠点は、32プロセッサを超えるスケーラビリティの実現が困難であることと、共有メモリモデルが分散メモリモデルよりも柔軟性が低いことです。[4]
共有メモリ(マルチプロセッサ)の例としてはUMA(ユニフォームメモリアクセス)、COMA(キャッシュオンリーメモリアクセス)など多数ある。 [5]
共有メモリを備えたMIMDマシンは、共通の中央メモリを共有するプロセッサを搭載しています。最も単純な形態では、すべてのプロセッサがメモリに接続するバスに接続されています。つまり、共有メモリを備えたすべてのマシンは、すべてのクライアントに共通のバスシステムであるCMを共有します。
たとえば、片側にクライアント A、B、C が接続され、反対側にクライアント P、Q、R が接続されたバスを考えてみましょう。この場合、クライアントのいずれかが、それらの間のバス インターフェイスを介して他のクライアントと通信します。
階層型共有メモリを備えたMIMDマシンは、バスの階層構造(例えば「ファットツリー」)を用いて、プロセッサ同士が互いのメモリにアクセスできるようにします。異なるボード上のプロセッサは、ノード間バスを介して通信できます。バスはボード間の通信をサポートします。このタイプのアーキテクチャでは、マシンは9,000以上のプロセッサをサポートできます。
分散メモリ MIMD (複数命令複数データ) マシンでは、各プロセッサが独自のメモリ位置を持ちます。各プロセッサは、他のプロセッサのメモリについて直接の知識を持っていません。データを共有するには、それをメッセージとして 1 つのプロセッサから別のプロセッサに渡す必要があります。共有メモリがないため、これらのマシンでは競合はそれほど大きな問題にはなりません。多数のプロセッサを直接相互接続することは経済的に実現可能ではありません。この多数の直接接続を避ける方法は、各プロセッサを他のプロセッサに少数だけ接続することです。このタイプの設計は、メッセージ パスに沿って 1 つのプロセッサから別のプロセッサにメッセージを渡すために必要な追加時間のため、非効率的になる可能性があります。プロセッサが単純なメッセージ ルーティングを実行するために必要な時間はかなり長くなる可能性があります。システムはこの時間損失を削減するように設計されており、ハイパーキューブとメッシュは、一般的な 2 つの相互接続方式です。
分散メモリ(複数のコンピュータ)の例としては、MPP(超並列プロセッサ)、COW(ワークステーションクラスタ)、NUMA(非均一メモリアクセス)などが挙げられます。前者は複雑で高価です。多数のスーパーコンピュータをブロードバンドネットワークで接続します。例としては、ハイパーキューブやメッシュ相互接続が挙げられます。COWは、その数分の1の価格で入手できる「自作」バージョンです。[5]
4 つのプロセッサを含むハイパーキューブシステム相互接続ネットワークを備えた MIMD 分散メモリ マシンでは、プロセッサとメモリ モジュールが正方形の各頂点に配置されます。システムの直径は、1 つのプロセッサが最も遠いプロセッサにメッセージを送信するために必要な最小ステップ数です。したがって、たとえば 2 次元キューブの直径は 2 です。8 つのプロセッサがあり、各プロセッサとメモリ モジュールがキューブの頂点に配置されているハイパーキューブ システムでは、直径は 3 です。一般に、2^N 個のプロセッサを含み、各プロセッサが他の N 個のプロセッサに直接接続されているシステムでは、システムの直径は N です。ハイパーキューブ システムの欠点の 1 つは、2 の累乗で構成する必要があることです。そのため、アプリケーションに実際に必要な数よりも多くのプロセッサを持つ可能性のあるマシンを構築する必要があります。
メッシュ相互接続ネットワークを備えたMIMD分散メモリマシンでは、プロセッサは2次元グリッド上に配置されます。各プロセッサは、隣接する4つのプロセッサに接続されます。メッシュのエッジには、ラップアラウンド接続が提供される場合があります。メッシュ相互接続ネットワークがハイパーキューブよりも優れている点の1つは、メッシュシステムを2の累乗で構成する必要がないことです。欠点は、4つ以上のプロセッサを搭載したシステムでは、メッシュネットワークの直径がハイパーキューブよりも大きくなることです。