本サイトは、Cell トータルソリューションカンパニー -フィックスターズの技術者有志が運営するサイトです。

2.1 SIMD演算の概要

出典: PS3 Linux Information Site / Cell/B.E.のパワーを体験しよう

 まずはじめに、SIMD演算の特徴について解説します。SIMD演算は、画像処理や物理演算のような、膨大なデータに対する計算を単調に繰り返すような演算をおこなえます。

2.1.1 SIMD演算とは

 SIMDとはSingle Instruction/Multiple Data (単一命令/複数データ) の略で、SIMD演算とは1つの命令で複数のデータに対して処理をおこなう演算方式を意味します。SIMD演算に対して、1つの命令で1つのデータに対して逐次的に処理をおこなう従来の処理方式をスカラ演算といいます。

 簡単な加算処理を例に、スカラ演算とSIMD演算の違いについて説明します。図 2.1はスカラ演算、SIMD演算ともに4個の加算処理の結果を求める計算を示しています。

画像:FIGURE-02-01.png

図 2.1 スカラ演算とSIMD演算

 従来のスカラ演算では、図 2.1 (a) のように4個の処理結果を求めるために4回の加算命令を逐次的に実行しなければなりません。一方、SIMD演算では、図 2.1 (b) のように1回の加算命令で4個の処理結果を求められます。このように、SIMD演算はスカラ演算と比較して、同じ処理を少ない命令数で実行できる効率的な演算といえます。

2.1.2 SIMD演算の制限

 SIMD演算では、複数のデータに対する処理を1命令で実行できますが、あらかじめ命令として用意されたパターンしか扱えません。例えば、図 2.2に示すような「複数のデータに対して同じ加算処理」の場合、SIMD演算で処理をすることができます。

画像:FIGURE-02-02.png

図 2.2 SIMD演算できるパターン

 一方、図 2.3に示すように、「あるデータは加算し、あるデータは減算する」といった、複数のデータそれぞれに対して異なる処理をすることはSIMD演算ではできません。

画像:FIGURE-02-03.png

図 2.3 SIMD演算できないパターン



第2章目次 第2.2節」へ進む
チュートリアル目次
表示
個人用ツール
Open Source Projects
ツールボックス