固定小数点プログラム開発の手間を省ける組み込み機器向けDSPコアを開発 ──15人日でMP3デコーダを開発可能に
●実装上のトレードオフがブロック浮動小数点の課題
ブロック浮動小数点算術方式が指数を設定する方法を,図4を用いて説明します.ブロック浮動小数点は,固定小数点演算器の入力部においてブロック正規化処理を行うことで実現されます.まず,アキュムレータ・レジスタに格納された演算結果を考えます.ここではFFTの第1ステージの計算結果とします.固定小数点のアキュムレータ・レジスタは乗算結果を保持するための倍語長に加え,累積用のガード・ビットを含むため,拡張倍精度で表現されます.ブロック浮動小数点FFTでは,この計算結果をメモリにストアする際に,各計算結果について冗長符号ビットの個数を調べます.これを,1ステージのすべての計算結果(データ・ブロック)について行うことで,計算結果内の最大値を正規化するために必要なシフト量(ブロック指数)を算出します.計算結果は,冗長符号ビットを含んだままメモリにストアします.
FFTの第2ステージの計算を行うために,メモリに格納した第1ステージの計算結果を入力データとして,順に演算器にロードします.このとき,ブロック指数に基づいて個々の入力データをすべてシフトします.この操作により,第1ステージの計算結果内で最大値を持つデータが演算器入力のところで正規化されます.ただし,シフトのとき,下位ビット側にシフト量に応じた分の無効ビットが挿入されます.この無効ビットは,入力データの精度と信号処理品質を低下させます.
〔図4〕 単精度ブロック浮動小数点の構成
従来のブロック浮動小数点のうち,単精度ブロック浮動小数点と呼んでいるもののアプローチ.データを単精度でメモリに格納する.固定小数点よりも高精度の計算を実現できるが,下位にある無効ビットにより精度が低下する.