「フリンの分類」って聞いたとき、「プリン?」って思いがちですが、これはコンピュータの並列処理において重要なアーキテクチャの分類(種類)となります。
今回は並列処理におけるフリンの分類に関して解説します!
並列処理とは?
コンピュータにおける脳であるCPUの性能を上げるには、CPUそのものの処理速度(クロック周波数)を上げたり、パイプライン処理をしたりと様々な仕組みを使います。
ただ、CPUそのものの性能には限界があるため、演算処理の限界を突破するために、命令を「複数のCPU」で処理しよう、というアイデアが生まれました。
このアイデアを使ってシステム上に複数のCPUを搭載することを「マルチプロセッサシステム」と呼びます。
この並列処理のやり方(アーキテクチャ)にはいくつかあって、それが「フリンの分類」という方法で分けられています。
フリンの分類
「フリンの分類」の「フリン」って何?ことですが、この分類を考え出した人が「フリン」さんだからです。
正式には「マイケル・J・フリン(Michael J. Flynn)」が1966年に提案した並列処理におけるコンピュータ・アーキテクチャの分類方法です。
この分類方法は、「命令の流れ(Instruction stream)」と「データの流れ(Data stream)」がどのように平行で処理されているかを軸に分けています。
その分類は「4つ」ありますので、一つずつ見ていきましょう!
SISD(Single Instruction stream / Single Data stream)
一つの命令で一つのデータを処理します。
平行処理でないので、一般的なコンピュータの処理はSISDになります。単一処理ってやつですね。
SIMD(Single Instruction stream / Multiple Data stream)
一つの命令で複数のデータを処理します。
この方式は画像や音声、動画などマルチメディア系の処理に適してます。
グラフィック処理用のプロセッシングユニット(PU)である「GPU」の多くはこの方式を取っています。
MISD(Multiple Instruction stream / Single Data stream)
複数の命令で一つのデータを処理ます。
実はこの方式は理論上のものであって、構成が高価である割に性能はあまり高くないため、実際に製品として普及しているものではないようですね。
MIMD(Multiple Instruction stream / Multiple Data stream)
複数の命令で複数のデータを処理します。
マルチプロセッサを採用する一般的なコンピュータはこの方式を取っています。
マルチコアなんてキーワードもこの方式ですね。アプリケーション単位でタスクを分散するときなどにも使われていますね。
まとめ
今回は並列処理におけるアーキテクチャのフリンの分類に関して解説してきました。
フリンの分類
- 並列処理とは演算処理の限界を突破するために、命令を「複数のCPU」で処理しよう、というアイデア
- フリンの分類はフリンさんが考えた並列処理のアーキテクチャの分類のこと
- SISD、SIMD、MISD、MIMDの4つの分類があり、それぞれ用途が違うが、MISDは殆ど製品化されていない
- SIMDはGPU、MIMDはマルチプロセッサ、マルチコアのコンピュータで使われている
並列処理によって、AIの処理や高精度なグラフィック処理をコンピュータができていると思うと、とても重要なアーキテクチャですね。
それにしてもフリンと沢山書いていると「プリン」食べたくなりますね(笑)
以上です!