マルチコアプロセッサで並列処理(2/4)
2.並列処理の概念
マルチコアプロセッサは、複数のプロセッサコアを持っており、同時に複数の計算を行うことができます。このように複数の計算処理を同時に行うことを並列処理と呼びます。並列処理の研究は、1972年に米国イリノイ大学がILLIAC IVと呼ぶ64プロセッサの並列コンピュータを開発した頃に始まります。その後、並列処理の対象は、マルチプロセッサのみならず、スーパーコンピュータ、PCクラスタ、グリッド、マルチコアプロセッサへと発展してきました。
並列処理のイメージをつかむため、以下の簡単な計算例を使って並列処理の様子を見ていきましょう。
(1×1)+(2×2)+(3×3)+(4×4)+(5×5)+(6×6)+(7×7)+(8×8)
この計算を従来のコンピュータ(1コア)で行う場合、一時的にデータを保持するための変数領域が必要になります。今回は、配列変数として8データ分(a[1]~a[8])とスカラ変数として1データ分(total)をメモリに用意します。図3に示す実行イメージのように、まず、配列変数a[1]の領域に1×1の計算結果を格納し、a[2]の領域に2×2の計算結果を格納し、同様にa[8]の領域まで計算結果を格納します。次に配列変数a[1]~a[8]の値を加えると、答えは、total(=204)に求まります。
並列処理のイメージをつかむため、以下の簡単な計算例を使って並列処理の様子を見ていきましょう。
(1×1)+(2×2)+(3×3)+(4×4)+(5×5)+(6×6)+(7×7)+(8×8)
この計算を従来のコンピュータ(1コア)で行う場合、一時的にデータを保持するための変数領域が必要になります。今回は、配列変数として8データ分(a[1]~a[8])とスカラ変数として1データ分(total)をメモリに用意します。図3に示す実行イメージのように、まず、配列変数a[1]の領域に1×1の計算結果を格納し、a[2]の領域に2×2の計算結果を格納し、同様にa[8]の領域まで計算結果を格納します。次に配列変数a[1]~a[8]の値を加えると、答えは、total(=204)に求まります。

デュアルコアプロセッサで並列計算を行う場合、配列変数として8データ分(a[1]~a[8])とスカラ変数として1データ分(total、total0、total1)をメモリに用意します。図4に示す実行イメージのように、まず、プロセッサコア0とプロセッサコア1で、計算の担当領域を半分ずつに分けます。コア0ではa[1]~a[4]を計算し、コア1ではa[5]~a[8]を計算します。その後、コア0でa[1]~a[4]の小計をtotal0(=30)に求め、コア1でa[5]~a[8]の小計をtotal1(=174)に求めます。最後に、小計total0とtotal1を足し合わせると、全体の合計total(=204)が求まります。このように並列処理を行うと、デュアルコアプロセッサで2倍の高速化が可能になります。
