計算能力重視のプロセッサCELLとDSPを比較する ―― アーキテクチャ,開発環境,活躍場所など

中村 健真

tag: 組み込み 半導体

技術解説 2009年5月14日

● 演算命令

 演算プロセッサであるSPUは,当然のことながら数値演算命令がその主役です.ところが,SPUの演算命令は肩透かしと感じるくらいあっさりしています.

 SPUの演算は4並列単精度浮動小数点数が主体です.倍精度浮動小数点演算は並列度で劣るだけではなく,スループットが単精度に比べて非常に悪くなります.32ビット整数演算は32×32の乗算を持ちませんし,16ビット整数演算は乗算自体がありません注2.つまり,CBEで高速の数値演算を行いたいならば,4並列単精度浮動小数点演算を行えということになります.

注2;16ビット乗算は32ビット整数オペラントの上位あるいは下位に対してだけ存在する.

浮動小数点演算と非正規化数
 SPUの浮動小数点演算はIEEE 754浮動小数点標準と同じフォーマットを持ちますが,その機能はフルセットで標準に準じているわけではありません.多くの浮動小数点DSPと同じく機能の一部が省略されています.

 IEEE標準との一番大きな違いは非正規化数の不在です.IEEE浮動小数点標準は,1970年代まで行われたコンピュータによる数値計算研究の集大成として,Willam Kahnの研究およびそれを元にした浮動小数点コプロセッサ8087の実装を下敷きにして定められました.非正規化数は,この流れの中で,それまで知られていた「0へのフラッシュ」問題への解として標準に盛り込まれたものです.

 それまでの浮動小数点数は,扱える最小の正規化数より絶対値が小さい数は0でした.詳細は省きますが,この二つの数の差は,最小の正規化数の次の大きさの数との差と比べるとけた違いに大きなもので,数値計算を行う場合にその間のステップの大きさが問題になることがありました.これは「0へのフラッシュ」として知られる問題です.0へのフラッシュは,特に分母で起きると計算結果に著しい影響を与えます.

 非正規化数は,0へのフラッシュ問題への解答として提案されました.非正規化数を使うことで,最小の正規化数より小さい値は固定小数点数を使って表し,0に向かってゆっくりと近づくことができるようになりました.これは科学技術計算をする人にとっては胸をなでおろすような良いニュースでした.しかし実装は大変です.

 当初から0へのフラッシュは実装が面倒といわれましたが,状況は今でも変わりません.米国AMD(Advanced Micro Device)社のK7プロセッサ・シリーズの一つ,開発コード名Thunderbirdでは,非正規化数の処理には正規化数の30倍の時間がかかるとされています(8).また,非正規化数によるスピードの低下を避けるため,x86プロセッサのコントロール・レジスタのFZ (Flash to Zero )ビットおよび,DAZ (Denormals Are Zero)ビットを'1'にして使うことを勧めています(9)

 SPUは一般的な浮動小数点DSPと同じように,非正規化数を単に0として扱うことで演算速度を上げています.これは科学技術計算に興味のある研究者には悪い話ですが,価格を常に考えなければならない開発者にとっては,十分納得できる妥協といえます.
 

浮動小数点数の丸めモード
 もう一つ,SPUの浮動小数点演算にはIEEE標準からの大きなずれがあります.それは丸めモードです.IEEE標準は演算結果の丸め方法を厳しく規定し,丸めとして四つの方法を実装することを要求しています.

 IEEE標準に沿った実装では,ユーザが以下の四つのうちの一つの方法をモード選択,あるいは命令のオプションとして選ぶことができます.

  • 偶数への丸め
     
  • 0への切り捨て
     
  • +無限大への切り上げ
     
  • -無限大への切り捨て

 多くの浮動小数点DSPは,このうち偶数への丸めだけを実装しています.この丸め方は一般的な四捨五入より統計的な偏りがわずかに優れているだけではなく,ここに上げた残りの三つの方法よりもずっと誤差が小さい方法です.しかし,SPUは0への切り捨てしか実装していません注3.ゲームならばそれで構わないのですが,本来あらゆるアプリケーションへの浸透を目指していたにしては,やや早計であると感じます.

注3;単精度浮動小数点の場合,倍精度浮動小数点では,四つのモードすべてを実装している.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日