コンピュータシステム

並列処理におけるフリンの分類を学ぼう!

2024年3月13日

アイキャッチ

フリンの分類」って聞いたとき、「プリン?」って思いがちですが、これはコンピュータの並列処理において重要なアーキテクチャの分類(種類)となります。

今回は並列処理におけるフリンの分類に関して解説します!

並列処理とは?

コンピュータにおける脳であるCPUの性能を上げるには、CPUそのものの処理速度(クロック周波数)を上げたり、パイプライン処理をしたりと様々な仕組みを使います。

ただ、CPUそのものの性能には限界があるため、演算処理の限界を突破するために、命令を「複数のCPU」で処理しよう、というアイデアが生まれました。

このアイデアを使ってシステム上に複数のCPUを搭載することを「マルチプロセッサシステム」と呼びます。

並列処理のイメージ
一人でやるよりみんなでやる

この並列処理のやり方(アーキテクチャ)にはいくつかあって、それが「フリンの分類」という方法で分けられています。

フリンの分類

「フリンの分類」の「フリン」って何?ことですが、この分類を考え出した人が「フリン」さんだからです。

正式には「マイケル・J・フリン(Michael J. Flynn)」が1966年に提案した並列処理におけるコンピュータ・アーキテクチャの分類方法です。

この分類方法は、「命令の流れ(Instruction stream)」と「データの流れ(Data stream)」がどのように平行で処理されているかを軸に分けています。

その分類は「4つ」ありますので、一つずつ見ていきましょう!

SISD(Single Instruction stream / Single Data stream

一つの命令で一つのデータを処理します。

平行処理でないので、一般的なコンピュータの処理はSISDになります。単一処理ってやつですね。

SISDのイメージ

SIMD(Single Instruction stream / Multiple Data stream

一つの命令で複数のデータを処理します。

この方式は画像や音声、動画などマルチメディア系の処理に適してます。

グラフィック処理用のプロセッシングユニット(PU)である「GPU」の多くはこの方式を取っています。

SIMDのイメージ

MISD(Multiple Instruction stream / Single Data stream

複数の命令で一つのデータを処理ます。

実はこの方式は理論上のものであって、構成が高価である割に性能はあまり高くないため、実際に製品として普及しているものではないようですね。

MISDのイメージ

MIMD(Multiple Instruction stream / Multiple Data stream

複数の命令で複数のデータを処理します。

マルチプロセッサを採用する一般的なコンピュータはこの方式を取っています。

マルチコアなんてキーワードもこの方式ですね。アプリケーション単位でタスクを分散するときなどにも使われていますね。

MIMDのイメージ

まとめ

今回は並列処理におけるアーキテクチャのフリンの分類に関して解説してきました。

フリンの分類

  • 並列処理とは演算処理の限界を突破するために、命令を「複数のCPU」で処理しよう、というアイデア
  • フリンの分類はフリンさんが考えた並列処理のアーキテクチャの分類のこと
  • SISD、SIMD、MISD、MIMDの4つの分類があり、それぞれ用途が違うが、MISDは殆ど製品化されていない
  • SIMDはGPU、MIMDはマルチプロセッサ、マルチコアのコンピュータで使われている

並列処理によって、AIの処理や高精度なグラフィック処理をコンピュータができていると思うと、とても重要なアーキテクチャですね。

それにしてもフリンと沢山書いていると「プリン」食べたくなりますね(笑)

以上です!

-コンピュータシステム