固定小数点プログラム開発の手間を省ける組み込み機器向けDSPコアを開発 ──15人日でMP3デコーダを開発可能に
メモリにストアした計算結果を入力データとして演算器にロードする際に,個々のワード指数とブロック指数を比較し,指数の差分だけ各仮数を非正規化します.ここで,「非正規化する」とは,(下位ビット方向への算術シフトによって)仮数が冗長な符号ビットを含む状態にすることを言います.この操作により,各データ・ワードのワード指数はブロック指数と同一となり,廃棄可能になります.こうして,各データ・ワードは固定小数点フォーマットに再変換され,固定小数点演算器に入力可能になります.
非正規化処理のシフト操作は,下位ビット方向へのシフトです.単精度ブロック浮動小数点と異なり,下位ビットに無効ビットが挿入されることはありません.そのため,倍精度ブロック浮動小数点の場合と同じ信号処理精度を期待できます.逆にメモリ内では単精度の仮数と短語長の指数としてデータ・ワードを保存しているので,実装のコストは単精度ブロック浮動小数点の場合に近いものになります.
図7に示すように,複数のデータ・ワードをまとめてデータ・グループとして構成することで,さらに実装コストを低減できます.グループ内の全データ・ワードのワード指数を,グループ内で最大値を持つデータ・ワードのワード指数(グループ指数)で代表させます.
〔図7〕データ・ブロック構造を用いた階層的ブロック浮動小数点
複数のデータを集めてグループとし,グループに一つの指数を割り当てることにより,階層的ブロック浮動小数点の実現に必要なメモリ・コストをさらに削減できる.筆者は,通常4~8個のデータを一つのグループにしている.