概要
CPUを複数使用し、並列化処理を行うことを
「マルチプロセッサ」という。
今回はその「マルチプロセッサ」について。
マルチプロセッサの分類分け
「マルチプロセッサ」には以下のような分類分けがされている。
各CPUと主記憶装置の関係による分類
・
密結合マルチプロセッサ…各CPUが
同じ主記憶装置を使用する
・
疎結合マルチプロセッサ…各CPUで
異なる主記憶装置を使用する
「密結合マルチプロセッサ」の方は、同じ主記憶装置を使っているため競合などによってロスが発生することがある。
各CPUの役割による分類
各CPUの役割が同じか異なるかでも分類分けされている。
・
対照型マルチプロセッサ…各CPUが
同じ役割を持っている
・
非対照型マルチプロセッサ…各CPUが
異なる役割を持っている
命令と演算対象データの関係による分類
命令(Instruction)とデータ(Data)の関係による分類分けもされている。
この分類分けを
「フリンの分類」と言う。
・SISD(Single Instruction stream Single Data stream)…1つの命令で1つのデータを処理する。マルチプロセッサではない。
・SIMD(Single Instruction stream Multiple Data stream)…1つの命令で複数のデータを処理する。GPUで使われる。
・MISD(Multiple Instruction stream Single Data stream)…複数の命令で1つのデータを処理する。現実には使われていない。
・MIMD(Multiple Instruction stream Multiple Data stream)…複数の命令で複数のデータを処理する。一般的なマルチプロセッサ処理。
マルチプロセッサによる性能向上率
マルチプロセッサによる性能向上率は以下の計算式で表される。
・E=1/(1-r+(r/n))
これを
「アムダールの法則」という。
上の計算式から分かる通り、処理の競合や依存関係などによりあらゆる処理を綺麗に処理を並列化できるわけではないため、2つプロセッサがあるからといって単純に2倍になるということはない。