(57)【特許請求の範囲】
【請求項１】
フィードフォワード入力及びフィードバック入力としてデータをそれぞれ入力し、入力したそれらデータに対して演算を行い、前記演算の結果として得られる出力サンプルを出力するとともに前記フィードバック入力として戻すことにより演算を行うブロック浮動小数点演算装置であって、
第１スケーリングファクタに基づいて、前記フィードバック入力として戻す前記出力サンプルをスケールダウンする第１スケーリング手段と、前記各演算ごとに用いられた前記第１スケーリングファクタに基づいて第２スケーリングファクタを算出する第２スケーリングファクタ算出手段と、前記第２スケーリングファクタ算出手段で算出した第２スケーリングファクタに基づいて、前記フィードフォワード入力として入力するデータをスケールダウンする第２スケーリング手段とを備えることを特徴とするブロック浮動小数点演算装置。
【発明の詳細な説明】
【導入】
移動体通信に用いられる将来の複式データパスデジタル信号処理プロセッサにおいて用いられる演算方式という質問に対する一つの回答として、ブロック浮動小数点の重要性が報告された。固定小数点とほとんど同じハードウェア規模を用いて浮動小数点よりも高い信号処理精度が、ＦＦＴやＦＩＲフィルタといったアルゴリズムについて示されている。
ＩＩＲフィルタのような再帰的な計算も移動体通信分野においては、重要なアルゴリズムである。再帰的計算のブロック浮動小数点実施方法については、未だに回答を得られていないいくつかの興味深い質問がある。それらは、ブロック浮動小数点は他の演算方式よりも多くのサイクル数を必要とするか？、信号処理精度はどのようなものか？、ハードウェア規模はどの程度か？などである。
この論文の中では、３次の全極フィルタ（すなわち４つのタップを持つ）を例として用いる。フィードバック経路におけるデータの依存性、例えばｙn-1からｙnを考慮し、このようなフィルタは下式（１）のように書かれる。この計算は、４ステップの操作として、最も左側の項から右方向へ実行される。
【数２】
0003738889.tif 000002
上式（１）を実現する一つの計算時間計画が、図１に示されている。同じフィードバック入力を要求する複数の計算が、同じ時間刻みの中に時間計画されている。
この後に続く節においては、まず最初に例として取り挙げた再帰計算が単一の複式データパス構成上に、異なる複数の計算時間計画を用いて割付される。次にブロック浮動小数点の一つの実施方法が示される。
【データパスの個数を制限する効果】
図１の計算を実現する場合、データパスの個数が制限されていないという条件で、ある出力サンプルｙnを求めるための計算は一つの計算データパスを排他的に使用することができる。このような場合、十分に長い出力列については出力サンプル当りに要求される計算サイクルは１である。しかしながら、実際のＤＳＰ実現の場合、データパスの個数は今日のＣＭＯＳ製造技術の下では通常２から３２の間のある値に制限されている。
この後の議論においては、データパスの個数Sはフィルタタップ数Tより大きいか又は等しい、つまりS≧Tであると仮定する。図２に２つのシナリオを示す。この例では、ある４タップフィルタがある５並列の計算データパス構成上に実施される（Ｔ＝４，Ｓ＝５）。出力列（Ｎ）の長さは、制限されていない。
どちらのシナリオにおいても、図１に示されるように複数の出力サンプルの計算は、全てのデータパスが占有されるまで、異なるデータパス上で、各サイクル毎一つずつ次々と開始される。これらの計算（ここでは、計算のセットと呼ぶ）は、また、各サイクル毎一つずつ次々と出力サンプルを生成しながら完了する。２つの連続する計算のセット、セット１とセット２が、図２に示される。一つの計算のセットは、完了するためにＳ＋Ｔ−１サイクルかかる。
最初のシナリオ（図２の上部に示されている）の場合、２つの計算セットは、時間的に重なりがあるように時間計画されている。セット２の最初のサンプルの計算はセット１の最後の出力サンプルの計算開始の後の次のサイクルに始まる。この方法は、２つのセットの境界においても、２つの連続する出力サンプルの間の時間的な距離が常に１サイクルであることを可能にする。この１サイクルは、再帰的な計算における最小の要求である。
図２の下部に示されたもう一つのシナリオは、そのような時間的な重なりを用いない。セット２の最初のサンプルの計算は、セット１の最後の出力サンプルの計算完了の後の次のサイクルに始まる。そのため、この場合、２つの連続する出力サンプルの間の時間的な距離は、常に１サイクルになるわけではなく、２つの計算セットの境界においては、フィルタタップによって決定される値になる。
時間的重なりのある方法の利点の一つは、２つの連続する出力サンプル間の一定な時間距離から得られる。この方法を用いると、以前に計算された出力からのフィードバック入力は、常に一つ前のサイクルで計算された最後の出力から取られる。このことにより、計算の出力から入力への直接で固定されたフィードバックの利用が可能になる。このような固定のフィードバック方式を制御するプログラムコードもまた簡略であり開発が容易である。
対照的に、時間的重なりのない方法は、２つのセットの境界における計算間の一定でない時間距離のため、出力サンプルがフィードバック入力として利用される前に、いったんメモリに格納されることを必要とする。アセンブリ言語のプログラマや高級言語コンパイラもまた、そのような一定でない時間距離を考慮しなければならない。
他方、図２中にACC Group１と２として示されているような２セットのアキュムレータレジスタ群の必要性は、時間的な重なりのある方法の欠点である。２セットのアキュムレータレジスタ群が必要となるのは、複式データパスＤＳＰ上で必要とされる高バンド幅のデータ転送を簡単化するためにデータグループ方式が使われる場合である[1]。データグループ転送を用いる場合、ある計算セット中の全ての出力サンプルは最後のサンプルの計算の完了まで、アキュムレータレジスタ内に保持される。全ての出力サンプルは、それから、一緒にメモリに転送される。
このような２つのアキュムレータレジスタの必要性は、もう一つのプログラムコード上の問題を提起する。図２中の２つの計算セットが重なり合う期間においては、図３−（１）に示されるように、２つの異なるアキュムレータのセットが、同じ時間サイクルの間に制御される必要がある。このような実現は、完全な複式命令・複式データ（ＭＩＭＤ）型の命令セット（そのような命令セットは、プログラムコードの開発はもちろん命令セットの設計を困難なものにする）を必要とする。そのため、図３−（２）に示されるように、もう一つの時間計画（こちらは、少なくとも２つのアキュムレータの並列な制御の必要性を取り除く）が、より多くのサイクル数というコストと引き換えに、有利になる。このような実現は、単式命令・複式データ（ＳＩＭＤ）型の命令を用いることで、より簡単に達成できる。
図３−（３）に示されているもう一つのものは、時間的重なりのない方法の実際の実現である。図３から明らかなように、時間的重なりのあるＳＩＭＤ実現と時間的重なりのない実現について、必要となる操作はフィードバック入力を除いて、全く同一である。
出力サンプル当り必要となる計算サイクル数は、これらの３つの実施方法について以下のようにまとめられる。図４は、また、出力列の長さが６４と５１２の場合の４タップ再帰的フィルタ例についてのサイクル数を示している。
【数３】
0003738889.tif 000003
【数４】
0003738889.tif 000004
【数５】
0003738889.tif 000005
【一つのブロック浮動小数点実施方法】
前節で述べられた再帰的計算のブロック浮動小数点実施方法が考察される。提案されたブロック浮動小数点実施方法は、図１に与えられたのと同じ４タップ再帰フィルタを用いて説明される。
図５は、例として取り上げたフィルタのブロック浮動小数点実施方法のための実際の計算操作のうち、ステップ１から５に含まれるものを示している。この図の中では、ｘnはフィードフォワード入力を、ｙnは出力及びフィードバック入力を、また、ｚnはｙnの中間結果をそれぞれ示す。下線が付された項は、アキュムレータレジスタの内容を示す。
提案される実施方法の基本的な考えは、以下の通りである。複式データパスＤＳＰの上では、図２に示された操作時間計画に示されているように、各サイクル当りただ１つの出力サンプルのみが、その計算を完了する。後続の出力サンプルの計算の間、現在の出力サンプルは、フィードバック入力として用いられる。現在の出力サンプルは複数の入力サンプルのアキュムレート操作の結果であるので、その出力サンプルは入力サンプルに許容されるある定まった値域の外にあるかもしれない。そのような、値域から外れた出力サンプルは、適当な入力範囲に入るようにスケールダウンされなければならない。図５の中で、このスケーリング操作はスケーリングファクタＡnとして示されている。例えば、ステップ２におけるスケーリングファクタＡnは、ステップ１における出力、すなわちｙn-3が定められた入力範囲を越えた場合の、スケーリングダウン操作を指定する。
後続の計算における全てのフィードフォワード入力も、それに伴なってスケーリングされなければならない。スケーリングのこの部分は、最初からアキュムレートされたスケーリングファクタ、すなわちステップ２においては、
【数６】
0003738889.tif 000006
を用いて行われる。このアキュムレートされたスケールファクタは、全ての計算の終了時点で、最終的にブロック浮動小数点の共通スケールファクタになる。このような共通スケールファクタの定義は、ディジタルフィルタのブロック浮動小数点実施方法に関する先行研究（そこでは各出力サンプル毎に共通スケールファクタが定義される）とは異なる[2][3][4]。
全ての並列アキュムレータレジスタの内容（これらは既に完了した計算結果はもちろん、中間結果も含んでいる）も一緒にスケーリングファクタＡnでスケールされなければならない。そのため、各サイクルで、全てのアキュムレータレジスタ内容は定められた入力範囲に対して正規化されるように保たれる。このようなスケーリング手順を用いると、スケーリング操作の間には、単に一つの加算操作しか存在しない。そのため、このような手順は、単に一つのガードビットを持つようなアキュムレータ構成の利用を許す。結果として、スケーリングファクタＡnの取り得る値は０（スケーリングなし）か１（１ビットのスケーリングダウン）のどちらかとなり、このような値はスケーリングの検出やシフタそのものについて、非常に小さいハードウェア規模につながる。
図６は、ＧＳＭフルレート音声コーデックアプリケーションで用いられる２タップＩＩＲフィルタの信号対雑音比（ＳＮＲ）結果をプロットしている。ＳＮＲは、
【数７】
0003738889.tif 000007
として定義され、ここでreference(n)は６４ビット倍精度浮動小数点出力信号列、target(n)はターゲットとしているデータ表現を用いて計算した出力サンプルである。入力列は、ガウス分布をしていると仮定されている。この入力列から生成される出力列の最大振幅は、許容される入力範囲の２．５倍大きく、そのため最大で２ビットのダウンスケーリングを要求する。
提案するブロック浮動小数点演算方式については、３つの異なるガードビット構成（１、４及び８ビット）が選択されている。これらは、曲線a)H-BFPとして、そのガードビット幅がwgを用いて各々１、４及び８として示されている。余分なガードビットは、何らかの特殊な状況において、中間結果ｚnの振幅の増大によって引き起こされる不必要なダウンスケーリングを避ける助けになる。
曲線b)C-BFPとして示される他の演算方式実施方法からの曲線は、通常のブロック浮動小数点／固定小数点方法（そこでは、全てのフィードフォワード入力は範囲を越える出力を避けるために十分と仮定されるようなある定まった量でスケールダウンされる）に対応する。このような定まったシフト量を決定するためには、ターゲットとする信号処理システムは、現実的な入力パターン（スティミュラス）を用いて、シミュレーションされなければならない。そのようなシミュレーションは、普通、時間を取るか、または不正確かのどちらかである。結果は３つの異なるスケーリング構成、sc=２、３及び４について示されている。ガードビット１ビットのH-BFP（H-BFP wg=１）及び２ビットの入力スケーリングを使ったC-BFP（C-BFP sc=２）の２つの曲線が、最良のＳＮＲを与える。しかしながら、これら２つの実施方法の間には、１つの重要な違いがある。すなわち、H-BFPを用いた場合ダウンスケーリング操作の必要性は自動的にハードウェアによって検出され処理される一方、C-BFPの場合はスケーリング操作は明示的にアプリケーションプログラムによって指定されなければならない。
２つの短語長浮動小数点構成の結果は、ブロック浮動小数点実施方法よりも悪い性能を与える。この結果は、メモリに格納される際の狭い仮数部に原因を求められる。
いくつかの異なる計算時間計画及びそのサイクル数が、図７、図８及びこの後の式にまとめられている。ブロック浮動小数点実施方法については、フィードバック経路上でスケーリングのための一つの追加シフト操作が要求される。このシフト操作の遅延は異なる実施毎に変化するであろうから、０サイクルと１サイクル遅延の両方の場合が評価される。これらは、可能な計算周期として、それぞれ、１Ｔ、２Ｔとして示されている。
ブロック浮動小数点操作のため、あるセット内の全てのアキュムレータレジスタが一緒にスケールされる。そのため、図２の上部分に示した時間的重なりのある時間計画のＭＩＭＤ型実施方法は使えない。
スケーリング操作のために１つ余分なサイクルが必要になる場合、時間的な重なりのある方法は図７−（２）に示すように２つの計算セットの間で、積和演算とスケーリング操作をインターリーブすることが可能である。これは計算資源の効率的な使用を可能にし、時間的な重なりのない方法で見られたサイクル数の増大を避ける。
【数８】
0003738889.tif 000008
【数９】
0003738889.tif 000009
【数１０】
0003738889.tif 000010
【数１１】
0003738889.tif 000011
【結論】
この論文の中では、複式データパス構成上の再帰的計算の実施方法が、異なる操作計画を用いて検討され、サイクル数の見積もりが示された。また、複式データパス構成上の再帰的計算のブロック浮動小数点実施方法も提案された。この方法はアキュムレータの中に、単に１つのガードビットを必要とする。いくつかの異なるデータ表現の信号処理品質の調査は、同じビット幅を用いた場合、提案されたブロック浮動小数点演算方式が通常の固定小数点や浮動小数点演算方式に比べ、優れた品質を提供できることを示した。このような高い信号品質は、ハードウェアによって、自動的に達成される。ブロック浮動小数点を適用することによる、通常の固定小数点や浮動小数点実施方法と比べたサイクル数の増加は、ＳＩＭＤ型の命令セット構成を用いたＤＳＰにおいては避けることができる。
【謝辞】
この研究は、部分的に、旭化成（日本、東京）、インフィニオン・テクノロジー（ドイツ、ミュンヘン）及びドイツ連邦政府によって支援された。
【図面の簡単な説明】
【図１】ある４タップフィルタのある計算時間計画
【図２】５並列計算データバス構成上の４タップ再帰的フィルタの計算時間計画。上：時間的重なりのある時間計画。下：時間的重なりのない時間計画。
【図３】図２の詳細な時間計画（太線で囲まれた部分）。（１）時間的な重なりのあるＭＩＭＤ型、（２）時間的な重なりのあるＳＩＭＤ型、及び（３）時間的な重なりのないもの。
【図４】ある４タップ再帰的フィルタのサンプル当たりサイクル数。左：６４サンプルの出力列の場合、及び右：５１２サンプルの出力列の場合。
【図５】提案されるブロック浮動小数点実施方法の一例。ここに示される計算ステップは図１のステップ１から５に対応する。
【図６】ある２タップ再帰的フィルタの信号対雑音比（ＳＮＲ）。
【図７】図２のブロック浮動小数点実施方法の詳細な時間計画。（１）（２）：ゼロもしくは１サイクルのオーバヘッドがあるフィードバックの場合の時間的な重なりのあるＳＩＭＤ。（３）（４）：ゼロもしくは１サイクルのオーバヘッドがあるフィードバックの場合の時間的な重なりのないＳＩＭＤ。
【図８】ある４タップ再帰的フィルタのブロック浮動小数点実施方法についてのサンプル当たりサイクル数。（左）：６４サンプルの出力列の場合、及び（右）：５１２サンプルの出力列の場合。
【図１】
0003738889.tif 000012
【図２】
0003738889.tif 000013
【図３】
0003738889.tif 000014
【図４】
0003738889.tif 000015
【図５】
0003738889.tif 000016
【図６】
0003738889.tif 000017
【図７】
0003738889.tif 000018
【図８】
0003738889.tif 000019