1.3 Cellプログラミングの特徴
出典: PS3 Linux Information Site / Cell/B.E.のパワーを体験しよう
Cellは、用途に合わせて最適化された2種類のプロセッサコアを適切に利用することで、高速に演算処理できるCPUです。そのため、汎用プロセッサであるPPEは制御をおこない、計算能力に長けた複数のSPEでは演算処理をおこなうようにプログラミングする必要があります。
ここからは、Cellのプログラミング・モデルと、PPEとSPEを利用したプログラミングの特徴について解説します。それでは、Cellプログラミングの特徴について見ていきましょう。
1.3.1 Cellプログラミング
PPEのみでおこなうプログラミングは、既存のLinux上のプログラミングと特に変わることはありません。通常のC言語で記述されたプログラムを作成し、実行できます。
しかし、PPEのみを使ったプログラムではCell本来の性能を発揮させることはできません。Cellの高い計算能力を引き出すには、以下の2点を考慮したプログラムをおこなう必要があります。
(1) 複数のSPEを並列に利用して、より少ない時間でより多くの演算をおこなうこと
(2) SPE上でSIMD演算を利用して、より少ない命令数でより多くの演算をおこなうこと
つまり、SPEをどのように活用するかがCellプログラミングのポイントになります。
1.3.2 Cellのプログラミング・モデル
Cellのプログラミング・モデルには、さまざまなものが提案されています。その中でも最も基本的なものは、図 1.4のようにPPE上でメインプログラムを実行し、SPE上でサブプログラムを実行するモデルです。
PPE上で実行されるプログラム (以下、PPEプログラム) は、対象となる一連の処理やデータを分割してSPE上で実行されるサブプログラム (以下、SPEプログラム) に振り分ける役割を果たします。また、SPEプログラム は、PPEプログラムから依頼された内容 (処理やデータの一部) を処理し、結果をPPEプログラムへ返します。
1.3.3 プログラムの制御とデータの流れ
それでは、実際にPPEプログラムと、SPEプログラムがどのように実行されるのか、そして処理に必要なデータがどのようにやり取りされるのかをCellのアーキテクチャに沿って見ていきましょう。
(1) (PPEプログラム側) SPEプログラムをLSへロードします。
(2) (PPEプログラム側) SPEにSPEプログラムの実行を指示します。
(3) (SPEプログラム側) 処理に必要なデータをメインメモリからLSへ転送します。
(4) (SPEプログラム側) 転送されたデータを加工し、条件に応じた処理を実行します。
(5) (SPEプログラム側) 処理結果をLSからメインメモリへ転送します。
(6) (SPEプログラム側) PPEプログラムへ終了を通知します。
ここで、SPEプログラムや処理に必要なデータは、MFCによってメインメモリ-LS間で転送されることを覚えておいてください。これらのプログラムの実行に関する詳しい解説は、第3章以降で再びおこないます。


