フリンの分類は、
計算機科学の分野で並列処理に関するコンピュータアーキテクチャを分類する手法の一つであり、1966年にマイケル・J・フリンによって提唱されました。この分類法は、コンピュータの命令ストリーム(制御)の並列度とデータストリームの並列度という2つの軸に基づいています。
フリンの分類
フリンは、コンピュータアーキテクチャを以下の4つに分類しました。
1.
SISD(Single Instruction, Single Data): 単一の命令ストリームが単一のデータストリームを処理するアーキテクチャです。これは、従来のシングルプロセッサコンピュータに相当します。命令は順番に実行され、データも一つずつ処理されます。
2.
SIMD(Single Instruction, Multiple Data): 単一の命令ストリームが複数のデータストリームを同時に処理するアーキテクチャです。ベクトルプロセッサやGPUなどがこのカテゴリに分類されます。一つの命令が複数のデータに対して同時に実行されることで、並列処理が実現されます。
3.
MISD(Multiple Instruction, Single Data): 複数の命令ストリームが単一のデータストリームを処理するアーキテクチャです。このアーキテクチャは理論的には存在しますが、実際に広く利用されている例はほとんどありません。パイプライン処理などがこの概念に近いと言えます。
4.
MIMD(Multiple Instruction, Multiple Data): 複数の命令ストリームが複数のデータストリームを同時に処理するアーキテクチャです。マルチプロセッサシステムや
マルチコアプロセッサがこのカテゴリに属します。複数のプロセッサがそれぞれ異なる命令を実行し、異なるデータを処理することで、高い並列処理能力を発揮します。
図解
フリンの分類は、以下の図で視覚的に理解することができます。
ここで、"PU" はプロセッシングユニット(処理単位)、"Instruction Pool" は命令プール、"Data Pool" はデータプールを指します。これらの要素がどのように組み合わさるかによって、それぞれのアーキテクチャが定義されます。
さらなる分類
現代の
高性能計算システム、特に
TOP500で上位を占めるマシンは、
MIMDアーキテクチャが主流となっています。
MIMDアーキテクチャは、さらに以下のように分類されることがあります。
1.
SPMD(Single Program, Multiple Data): 複数のプロセッサが同じプログラムを実行しますが、それぞれ異なるデータを使用します。並列プログラミングにおいて最も一般的なモデルであり、各プロセッサはプログラムの異なる部分を並行して処理することで高速化を図ります。'Single Process, multiple data' とも呼ばれます。
2.
MPMD(Multiple Program, Multiple Data): 複数のプロセッサがそれぞれ独立した複数のプログラムを実行します。この形態は、一つのノードが「ホスト」または「マネージャ」として動作し、他のノード群にプログラムとデータを分配して実行させ、結果をマネージャノードに返すような形態をとることがあります。これは、複数の
プロセスを同時に実行するのとは異なり、プログラム自体が並列に実行される点を意味します。
フリンの分類への批判
フリンの分類は、その機械的な性質から、現代の複雑な
並列計算機を十分に分類できないという批判があります。そのため、新しい分類法を試みる研究も行われています。しかし、この分類は、並列処理アーキテクチャの基本的な概念を理解するための重要な基礎となっています。
まとめ
フリンの分類は、コンピュータアーキテクチャにおける並列処理の基本を理解するための重要なフレームワークです。命令ストリームとデータストリームの並列度に着目することで、さまざまなアーキテクチャの特徴を捉え、効率的な並列処理を実現するための指針となります。しかし、現代の複雑なシステムを完全に分類するには限界があるため、常に新しい分類法が模索されていることも理解しておく必要があります。