(57)【特許請求の範囲】
【請求項１】
１又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理する装置であって、
前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第１次演算処理と、
前記第１次演算処理の実行により得られた各演算データに対して再度演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを前記相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第２次演算処理と、
前記第１次演算処理及び前記第２次演算処理の実行時に検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力する絶対グループスケールファクタ出力処理とを実行可能となっており、
前記第１次演算処理及び前記第２次演算処理の実行により前記演算データを得ることを、前記データブロックの各データグループごとに行い、さらに、前記絶対グループスケールファクタ出力処理で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、
前記第１次演算処理及び前記第２次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタ及び前記ブロックスケールファクタに基づいてスケーリングを行うようになっており、
一方さらに、前記演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、
前記相対グループスケールファクタの検出は、前記絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正及び負のうち一方の値として検出し、前記絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として検出することにより行い、
前記第１次演算処理は、前記相対グループスケールファクタに基づいて前記ガードビット領域及び前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部又は全部を出力するようになっていることを特徴とするデータ演算処理装置。
【請求項２】
請求項１において、
前記第１次演算処理及び前記第２次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分に基づいてスケーリングを行うようになっていることを特徴とするデータ演算処理装置。
【請求項３】
複数の計算ユニットを備え、１又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理する装置であって、
前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第１スケーリング手段と、前記第１スケーリング手段からのデータに対して演算を行う演算手段と、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段と、与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第２スケーリング手段とを有し、
さらに、データを記憶するための記憶手段と、前記各計算ユニットのスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものを相対グループスケールファクタとして検出する相対グループスケールファクタ検出手段と、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する絶対グループスケールファクタ検出手段と、前記絶対グループスケールファクタ検出手段で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段と、データ処理のための制御を行う制御手段とを備え、
前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループのデータをそれぞれ前記各計算ユニットの第１スケーリング手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各計算ユニットの第２スケーリング手段に与える第１次演算処理と、
前記各計算ユニットの第２スケーリング手段からの演算データをそれぞれ前記各計算ユニットの演算手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各計算ユニットの第２スケーリング手段に与える第２次演算処理と、
前記第１次演算処理又は前記第２次演算処理の終了時に前記各計算ユニットの第２スケーリング手段からの演算データを前記記憶手段に格納する演算データ格納処理とを実行し、
前記第１次演算処理は、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各計算ユニットの第１スケーリング手段に振り分けるとともに、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第１スケーリング手段に与え、
前記絶対グループスケールファクタ検出手段は、前記第１次演算処理及び前記第２次演算処理の実行時に前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力し、
一方さらに、前記演算手段からの演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、
前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正及び負のうち一方の値として前記スケールファクタを算出し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として前記スケールファクタを算出し、
前記第２スケーリング手段は、与えられた他のスケールファクタに基づいて前記ガードビット領域及び前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部又は全部を出力するようになっていることを特徴とするデータ演算処理装置。
【請求項４】
請求項３において、
前記絶対グループスケールファクタ及び前記ブロックスケールファクタを記憶するための第２記憶手段を備え、
前記制御手段は、前記絶対グループスケールファクタ及び前記ブロックスケールファクタを前記演算データと対応付けて前記第２記憶手段に記憶し、
前記記憶手段の演算データに対して再度演算を行うときは、対応する絶対グループスケールファクタ及びブロックスケールファクタを前記第２記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各計算ユニットの第１スケーリング手段に振り分け、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第１スケーリング手段に与えるようになっていることを特徴とするデータ演算処理装置。
【請求項５】
請求項３及び４のいずれかにおいて、
前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これを正及び負のうち一方の値として出力し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域の冗長なデータのビット数を算出し、これを前記一方とは反対符号の値として出力するようになっていることを特徴とするデータ演算処理装置。
【請求項６】
請求項５において、
前記演算手段は、固定小数点演算器であり、
前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、データに対してビットシフトを行い、
前記第２スケーリング手段は、与えられた他のスケールファクタに相当するシフト量で、前記ガードビット領域及び前記データビット領域のデータに対してビットシフトを行い、
前記制御手段は、前記反対符号の値となる相対グループスケールファクタに基づいて前記第２スケーリング手段によるビットシフトを行うときは、前記一方の符号の値となる相対グループスケールファクタであって一つのデータブロックについて前記第２スケーリング手段に与えたものの総和の絶対値を限度として、前記第２スケーリング手段に与える相対グループスケールファクタを調整するようになっていることを特徴とするデータ演算処理装置。
【請求項７】
請求項３乃至６のいずれかにおいて、
前記演算手段は、前記第１スケーリング手段からのデータと所定の係数との積和を演算する積和演算器であることを特徴とするデータ演算処理装置。
【請求項８】
１又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理するコンピュータ実行可能なプログラムであって、
前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第１次演算処理と、
前記第１次演算処理の実行により得られた各演算データに対して再度演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを前記相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第２次演算処理と、
前記第１次演算処理及び前記第２次演算処理の実行時に検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力する絶対グループスケールファクタ出力処理とを実行可能となっており、
前記第１次演算処理及び前記第２次演算処理の実行により前記演算データを得ることを、前記データブロックの各データグループごとに行い、さらに、前記絶対グループスケールファクタ出力処理で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、
前記第１次演算処理及び前記第２次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタ及び前記ブロックスケールファクタに基づいてスケーリングを行うようになっており、
一方さらに、前記演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、
前記相対グループスケールファクタの検出は、前記絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正及び負のうち一方の値として検出し、前記絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として検出することにより行い、
前記第１次演算処理は、前記相対グループスケールファクタに基づいて前記ガードビット領域及び前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部又は全部を出力するようになっていることを特徴とするデータ演算処理プログラム。
【請求項９】
１又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データを記憶するための記憶手段を有するコンピュータに対して、前記データブロック単位でデータを処理させるプログラムであって、
与えられたスケールファクタに基づいてデータに対してスケーリングを行う第１スケーリング手段、前記第１スケーリング手段からのデータに対して演算を行う演算手段、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段、及び与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第２スケーリング手段として実現される処理を前記各データグループごとに実行させるためのプログラムと、
前記各データグループに対応するスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものを相対グループスケールファクタとして検出する相対グループスケールファクタ検出手段、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する絶対グループスケールファクタ検出手段、前記絶対グループスケールファクタ検出手段で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段、及びデータ処理のための制御を行う制御手段として実現される処理を実行させるためのプログラムとを備え、
前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループのデータをそれぞれ前記各データグループに対応する第１スケーリング手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各データグループに対応する第２スケーリング手段に与える第１次演算処理と、
前記各データグループに対応する第２スケーリング手段からの演算データをそれぞれ前記各データグループに対応する演算手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各データグループに対応する第２スケーリング手段に与える第２次演算処理と、
前記第１次演算処理又は前記第２次演算処理の終了時に前記各データグループに対応する第２スケーリング手段からの演算データを前記記憶手段に格納する演算データ格納処理とを実行し、
前記第１次演算処理は、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各データグループに対応する第１スケーリング手段に振り分けるとともに、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各データグループに対応する第１スケーリング手段に与え、
前記絶対グループスケールファクタ検出手段は、前記第１次演算処理及び前記第２次演算処理の実行中に前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力し、
一方さらに、前記演算手段からの演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、
前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて前記スケールファクタを正及び負のうち一方の値として算出し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記スケールファクタを前記一方とは反対符号の値として算出し、
前記第２スケーリング手段は、与えられた他のスケールファクタに基づいて前記ガードビット領域及び前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部又は全部を出力するようになっていることを特徴とするデータ演算処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データブロック単位でデータを処理する装置に係り、特に、ブロックフローティング方式で固定小数点演算を行うブロックフローティング型のデジタル・シグナル・プロセッサ（以下、単にＤＳＰという。）に関する。
【０００２】
【従来の技術】
デジタル信号処理における数値表現方法として、固定小数点表現方法および浮動小数点表現方法がある。浮動小数点表現方法では、各データが指数部と仮数部をもち、これにより、高い精度と広いダイナミックレンジが確保可能という利点がある反面、複雑で大規模なハードウェアが必要となるという問題がある。一方、固定小数点表現方法では、ハードウェアが簡単で回路規模も小さくてすむが、演算精度の低下が問題となる。そこで、これらの問題への対策法として提案されたのがブロックフローティングという方式である。この方式では、所定数（例えば、ｍ個）のデータを一つのデータブロックとし、データブロックに対し１個のブロックスケールファクタをもたせ、データブロックのｍ個のデータに対し共通のスケーリング（以下、ブロック正規化という。）を行うことにより、限られたダイナミックレンジを有効に用いて精度の劣化を抑える。
【０００３】
ブロックフローティングを効率良く実現するために、例えば、特許協力条約に基づいて公開された国際出願（国際公開番号WO99/66423）には、桁落ちによる演算精度の低下を抑制するのに好適なデータ演算処理装置（以下、単に第１の従来例という。）が提案されている。その他、本出願人が学会で発表した論文（1999 IEEE WORKSHOP ON SIGNAL PROCESSING SYSTEMS(SiPS 99) Design and Implementation）には、オーバーフローによる演算精度の低下を抑制するのに好適なデータ演算処理装置（以下、単に第２の従来例という。）が提案されている。
【０００４】
まず、第１の従来例の構成を図７を参照しながら説明する。図７は、従来のデータ演算処理装置の構成を示すブロック図である。
第１の従来例は、図７に示すように、データブロック単位でデータを記憶するためのデータメモリ１００と、データメモリ１００のデータに対して積和演算を行う演算部２００と、ブロックフローティングに必要な正規化を行うための制御部３００と、これらの制御を行う制御ロジック４００と、アドレス生成器５００とで構成されている。データメモリ１００、演算部２００、制御部３００および制御ロジック４００は、データバス１１０で相互にかつデータ授受可能に接続されており、データメモリ１００、制御部３００およびアドレス生成器５００は、データアドレスバス１２０で相互にかつデータ授受可能に接続されている。
【０００５】
データメモリ１００は、図示しない外部からデータを入力し、図８に示すように、演算部２００の演算対象となるデータとして、入力したデータをデータブロック単位で格納するようになっている。図８は、データメモリ１００における演算単位となるデータのデータ構造を示す図である。
データメモリ１００では、図８に示すように、データが計算ユニットの数に相当する個数（この場合、ｋ個）組合わさってデータグループとして格納され、さらに、データグループが複数組合わさってデータブロックとして格納される。すなわち、データブロックは、複数のデータグループを含んで構成され、データグループは、計算ユニットの数に相当する個数のデータを含んで構成されている。
【０００６】
演算部２００は、同一機能を有するｋ個の計算ユニットＰ0〜Ｐk-1で構成されている。各計算ユニットＰ0〜Ｐk-1には、一つのデータグループのデータがそれぞれ振り分けられ、各計算ユニットＰ0〜Ｐk-1は、データグループ単位でデータを並列処理する。
各計算ユニットＰ0〜Ｐk-1は、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第２シフタ１０と、第２シフタ１０からのデータに対して積和演算を行う積和演算器１２と、積和演算器１２からの演算データのスケールファクタを算出するユニットスケールファクタ検出器１４と、与えられたスケールファクタに基づいて積和演算器１２からの演算データに対してスケーリングを行う第１シフタ１６とで構成されている。
【０００７】
ユニットスケールファクタ検出器１４は、積和演算器１２からの演算データの冗長なデータのビット数を算出し、これをスケールファクタとして算出するようになっている。ここで、スケールファクタは、データをビットシフトするときのシフト量であり、シフトするビット数を示す。以下、グループスケールファクタおよびブロックスケールファクタについても同様である。
【０００８】
第２シフタ１０は、与えられたスケールファクタに相当するシフト量で、与えられたデータに対して下位ビットの方向へビットシフト（以下、単に右シフトという。）を行うようになっている。
第１シフタ１６は、与えられたスケールファクタに相当するシフト量で、積和演算器１２からの演算データに対して上位ビットの方向へビットシフト（以下、単に左シフトという。）を行うようになっている。また、第１シフタ１６からの演算データは、さらに次のブロック処理に備えるため、データメモリ１００に格納されるが、データメモリ１００のデータのビット数は、第１シフタ１６からの演算データのそれよりも少ないため、第１シフタ１６は、左シフトした演算データのうち最上位ビットを基準としてデータメモリ１００のデータのビット数分を取り、それよりも下位のビットを切り捨て、データメモリ１００のデータのビット数の演算データとして丸め処理を行うようになっている。
【０００９】
制御部３００は、ユニットスケールファクタ検出器１４で算出したスケールファクタからグループスケールファクタを検出するグループスケールファクタ検出器５０と、グループスケールファクタを格納するグループスケールファクタレジスタファイル５２と、グループスケールファクタからブロックスケールファクタを検出するブロックスケールファクタ検出器５４と、ブロックスケールファクタを格納するブロックスケールファクタレジスタ５６と、グループスケールファクタとブロックスケールファクタの差分を計算する桁合わせ用加算器６０とで構成されている。
【００１０】
グループスケールファクタ検出器５０は、各計算ユニットＰ0〜Ｐk-1のユニットスケールファクタ検出器１４で算出したスケールファクタうち最小のものをグループスケールファクタとして検出し、制御ロジック４００の制御により、検出したグループスケールファクタをグループスケールファクタレジスタファイル５２および各計算ユニットＰ0〜Ｐk-1の第１シフタ１６に出力するようになっている。例えば、各計算ユニットＰ0〜Ｐk-1（例えば、ｋ＝３）のユニットスケールファクタ検出器１４からスケールファクタとして「１」、「２」、「３」を入力した場合、そのうちの最小値である「１」をそのグループスケールファクタとして検出する。
【００１１】
グループスケールファクタレジスタファイル５２は、グループスケールファクタ検出器５０で検出したグループスケールファクタをそれぞれ一時的に格納し、制御ロジック４００の制御により、データメモリ１００または桁合わせ用加算器６０にグループスケールファクタを出力するようになっている。
ブロックスケールファクタ検出器５４は、グループスケールファクタ検出器５０で検出したグループスケールファクタのうち最小のものをブロックスケールファクタとして検出するようになっている。例えば、データブロックのグループスケールファクタが「３」、「４」、「５」として検出された場合、そのうちの最小値である「３」をそのブロックスケールファクタとして検出する。
【００１２】
ブロックスケールファクタレジスタ５６は、ブロックスケールファクタ検出器５４で検出したブロックスケールファクタを一時的に格納し、制御ロジック４００の制御により、データメモリ１００または桁合わせ用加算器６０にブロックスケールファクタを出力するようになっている。
桁合わせ用加算器６０は、グループスケールファクタレジスタファイル５２から出力されたグループスケールファクタと、ブロックスケールファクタレジスタ５６から出力されたブロックスケールファクタとを入力し、グループスケールファクタからブロックスケールファクタを減算してその差分を計算し、制御ロジック４００の制御により、その差分からなるスケールファクタを各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に出力するようになっている。
【００１３】
制御ロジック４００は、データメモリ１００のデータに対して初めて演算を行うときは、次の制御処理を実行するようになっている。
まず、データブロック単位でデータをデータメモリ１００から読み出し、データブロックの各データグループごとに、データグループのデータをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分ける。
【００１４】
そして、グループスケールファクタ検出器５０で検出したグループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ１６に与え、各計算ユニットＰ0〜Ｐk-1の第１シフタ１６からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
また、制御ロジック４００は、データメモリ１００のデータに対して再度演算を行うときは、次の制御処理を実行するようになっている。
【００１５】
まず、データブロック単位で演算データをデータメモリ１００から読み出し、データブロックの各データグループごとに、データグループの演算データをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分ける。これと同時に、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分けたデータのグループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６に格納されているときは、ブロックスケールファクタレジスタ５６からブロックスケールファクタを読み出して桁合わせ用加算器６０に与えるとともに、グループスケールファクタレジスタファイル５２からグループスケールファクタを順次読み出して桁合わせ用加算器６０に与える。次いで、桁合わせ用加算器６０により各グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタを各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に与える。
【００１６】
そして、グループスケールファクタ検出器５０で検出したグループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ１６に与え、各計算ユニットＰ0〜Ｐk-1の第１シフタ１６からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
次に、第２の従来例の構成を図９を参照しながら説明する。図９は、従来のデータ演算処理装置の構成を示すブロック図である。なお、第２の従来例は、第１の従来例の構成と重複する部分があるため、以下、異なる部分についてのみ説明し、重複する部分については説明を省略する。
【００１７】
第２の従来例は、図９に示すように、データメモリ１００と、データメモリ１００のデータに対して積和演算を行う演算部２１０と、ブロックフローティングに必要な正規化を行うための制御部３１０と、これらの制御を行う制御ロジック４１０と、アドレス生成器５００とで構成されている。
各計算ユニットＰ0〜Ｐk-1は、第２シフタ１０と、積和演算器１２と、積和演算器１２からの演算データのスケールファクタを算出するユニットスケールファクタ検出器１８と、与えられたスケールファクタに基づいて積和演算器１２からの演算データに対してスケーリングを行う第１シフタ２０とで構成されている。ここで、積和演算器１２からの演算データは、図１０に示すように、２ｎビット（データメモリ１００のデータのビット数をｎとしてその２倍のビット数）を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが２ｎビットを超えてオーバーフローしたときのそのオーバーフロー分のデータをｍビットを上限として保持するガードビット領域を有している。図１０は、積和演算器１２からの演算データのデータ構造を示す図である。
【００１８】
ユニットスケールファクタ検出器１８は、積和演算器１２からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これをスケールファクタとして出力するようになっている。ここで、スケールファクタは、データをビットシフトするときのシフト量であり、シフトするビット数を示す。以下、相対グループスケールファクタおよび絶対グループスケールファクタについても同様である。
【００１９】
第１シフタ２０は、与えられたスケールファクタに相当するシフト量で、積和演算器１２からの演算データに対して右シフトを行うようになっている。この点、第１の従来例における第１シフタ１６の構成とは異なる。
制御部３１０は、ユニットスケールファクタ検出器１８で算出したスケールファクタから相対グループスケールファクタを検出する差分スケールファクタ検出器５０ａと、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する累算スケールファクタ検出器５０ｂと、絶対グループスケールファクタを格納するグループスケールファクタレジスタファイル５２と、絶対グループスケールファクタからブロックスケールファクタを検出するブロックスケールファクタ検出器５４と、ブロックスケールファクタレジスタ５６と、桁合わせ用加算器６０とで構成されている。
【００２０】
差分スケールファクタ検出器５０ａは、各計算ユニットＰ0〜Ｐk-1のユニットスケールファクタ検出器１８で算出したスケールファクタうち最大のものを相対グループスケールファクタとして検出し、制御ロジック４１０の制御により、検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２０に出力するようになっている。
【００２１】
累算スケールファクタ検出器５０ｂは、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力するようになっている。
グループスケールファクタレジスタファイル５２は、累算スケールファクタ検出器５０ｂで検出した絶対グループスケールファクタをそれぞれ一時的に格納し、制御ロジック４２０の制御により、データメモリ１００または桁合わせ用加算器６０に絶対グループスケールファクタを出力するようになっている。
【００２２】
ブロックスケールファクタ検出器５４は、累算スケールファクタ検出器５０ｂで検出した絶対グループスケールファクタのうち最大のものをブロックスケールファクタとして検出するようになっている。例えば、データブロックの絶対グループスケールファクタが「３」、「４」、「５」として検出された場合、そのうちの最大値である「５」をそのブロックスケールファクタとして検出する。
【００２３】
ブロックスケールファクタレジスタ５６は、ブロックスケールファクタ検出器５４で検出したブロックスケールファクタを一時的に格納し、制御ロジック４２０の制御により、データメモリ１００または桁合わせ用加算器６０にブロックスケールファクタを出力するようになっている。
桁合わせ用加算器６０は、グループスケールファクタレジスタファイル５２から出力された絶対グループスケールファクタと、ブロックスケールファクタレジスタ５６から出力されたブロックスケールファクタとを入力し、データメモリ１００に格納されている入力データブロックの各データグループのグループスケールファクタから入力データブロックのブロックスケールファクタを減算したものに今回の絶対グループスケールファクタを累算したものを計算し、制御ロジック４２０の制御により、その差分からなるスケールファクタを各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に出力するようになっている。
【００２４】
制御ロジック４１０は、データメモリ１００のデータに対して初めて演算を行うときは、第１次演算処理を実行した後、第２次演算処理を繰り返し実行するようになっている。
第１次演算処理は、データブロック単位でデータをデータメモリ１００から読み出し、データブロックの各データグループごとに、データグループのデータをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分ける。
【００２５】
そして、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２０に与え、各計算ユニットＰ0〜Ｐk-1の第１シフタ２０からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
第２次演算処理は、各計算ユニットＰ0〜Ｐk-1の第１シフタ２０からの演算データをそれぞれ各計算ユニットＰ0〜Ｐk-1の積和演算器１２に振り分けるとともに、次のデータグループのデータをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分ける。
【００２６】
そして、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２０に与え、各計算ユニットＰ0〜Ｐk-1の第１シフタ２０からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
また、制御ロジック４１０は、データメモリ１００のデータに対して再度演算を行うときは、第１次演算処理を実行した後、第２次演算処理を繰り返し実行するようになっている。
【００２７】
第１次演算処理は、データブロック単位で演算データをデータメモリ１００から読み出し、データブロックの各データグループごとに、データグループの演算データをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分ける。これと同時に、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６に格納されているときは、ブロックスケールファクタレジスタ５６からブロックスケールファクタを読み出して桁合わせ用加算器６０に与えるとともに、グループスケールファクタレジスタファイル５２から絶対グループスケールファクタを順次読み出して桁合わせ用加算器６０に与える。次いで、桁合わせ用加算器６０により各絶対グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタを各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に与える。
【００２８】
そして、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２０に与え、各計算ユニットＰ0〜Ｐk-1の第１シフタ２０からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
第２次演算処理は、次のデータグループのデータをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分ける。これと同時に、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６に格納されているときは、ブロックスケールファクタレジスタ５６からブロックスケールファクタを読み出して桁合わせ用加算器６０に与えるとともに、グループスケールファクタレジスタファイル５２から絶対グループスケールファクタを順次読み出して桁合わせ用加算器６０に与える。次いで、桁合わせ用加算器６０により各絶対グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタにこれまでの演算処理の絶対グループスケールファクタを加算したスケールファクタを、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に与える。次いで、第２シフタ１０からのデータを積和演算器１２に与えるのと同時に、各計算ユニットＰ0〜Ｐk-1の第１シフタ２０からの演算データをそれぞれ各計算ユニットＰ0〜Ｐk-1の積和演算器１２に振り分ける。
【００２９】
そして、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２０に与え、各計算ユニットＰ0〜Ｐk-1の第１シフタ２０からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
一方、固定小数点演算ではあるが、特開平4-267432号公報には、オーバフローによる演算精度の低下を抑制するのに好適な演算回路（以下、単に第３の従来例という。）が提案されている。
【００３０】
第３の従来例は、同一の加減算においてはオーバーフローは高々１ビットしか生じないことに着目し、ｎビットの数値同士の加算を行うために１ビットのヘッドマージンを有するｎ＋１ビットの演算器を備え、オーバーフローが生じた場合に小数点を移動し、加減算の演算過程において小数点をもとに戻してもよい状態になったときに小数点を戻すように構成したものである。
【００３１】
【発明が解決しようとする課題】
しかしながら、第１の従来例にあっては、各計算ユニットＰ0〜Ｐk-1のユニットスケールファクタ検出器１４で算出したスケールファクタうち最小のものをグループスケールファクタとして検出し、検出したグループスケールファクタに相当するシフト量で、積和演算器１２からの演算データに対して左シフトを行う構成となっているため、積和演算器１２の演算結果がオーバフローした場合には、オーバーフローにより演算精度が低下するという問題があった。
【００３２】
また、第２の従来例にあっては、各計算ユニットＰ0〜Ｐk-1のユニットスケールファクタ検出器１８で算出したスケールファクタうち最大のものを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに相当するシフト量で、積和演算器１２からの演算データに対して右シフトを行う構成となっているため、オーバーフローによる演算精度の低下を抑制することができるものの、逆に、データビット領域の有効なデータが２ｎビットを下回った場合（すなわち、データビット領域に冗長なデータが生じた場合）には、第１シフタ２０からの演算データの桁落ちが大きくなり、演算精度が低下するという問題があった。
【００３３】
また、第３の従来例にあっては、演算器からの演算データにヘッドマージンを設け、オーバーフローによる演算精度の低下を抑制する構成となっているが、ブロックフローティング方式にこの構成をそのまま適用することはできず、しかも、加減算の計算過程で発生するオーバーフローにしか対処しておらず、多くの演算式に対応することはできないという問題があった。
【００３４】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、ブロックフローティング方式において、オーバーフローおよび桁落ちによる演算精度の低下を抑制することにより、演算精度の向上を図ることができるデータ演算処理装置およびデータ演算処理プログラムを提供することを目的としている。
【００３５】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る請求項１記載のデータ演算処理装置は、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理する装置であって、前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第１次演算処理と、前記第１次演算処理の実行により得られた各演算データに対して再度演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを前記相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第２次演算処理と、前記第１次演算処理および前記第２次演算処理の実行時に検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力する絶対グループスケールファクタ出力処理とを実行可能となっており、前記第１次演算処理および前記第２次演算処理の実行により前記演算データを得ることを、前記データブロックの各データグループごとに行い、さらに、前記絶対グループスケールファクタ出力処理で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、前記第１次演算処理および前記第２次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタおよび前記ブロックスケールファクタに基づいてスケーリングを行うようになっており、一方さらに、前記演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、前記相対グループスケールファクタの検出は、前記絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正および負のうち一方の値として検出し、前記絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として検出することにより行い、前記第１次演算処理は、前記相対グループスケールファクタに基づいて前記ガードビット領域および前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部または全部を出力するようになっている。
【００３６】
このような構成であれば、第１次演算処理および第２次演算処理の実行により、データブロックの各データグループごとに、演算データが得られる。
第１次演算処理では、データグループの各データに対して演算が行われ、それら演算データのうち絶対値が最大となるもののスケールファクタが相対グループスケールファクタとして検出される。このとき、相対グループスケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあると、そのガードビット領域のデータ量に応じて正および負のうち一方の値として検出されるが、絶対値が最大となる演算データのガードビット領域に有効なデータがないと、そのデータビット領域のデータ量に応じて反対符号の値として検出される。そして、検出された相対グループスケールファクタに基づいてガードビット領域およびデータビット領域のデータに対してスケーリングが行われ、スケーリングされた演算データのうちデータビット領域のものの一部または全部が出力される。すなわち、演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、オーバーフローした分も併せてスケーリングが行われるので、第１次演算処理においてオーバーフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【００３７】
また、第１次演算処理の実行終了後、第２次演算処理では、第１次演算処理の実行により得られた各演算データに対して再度演算が行われ、それら演算データのうち絶対値が最大となるもののスケールファクタが相対グループスケールファクタとして検出される。このとき、相対グループスケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあると、そのガードビット領域のデータ量に応じて正および負のうち一方の値として検出されるが、絶対値が最大となる演算データのガードビット領域に有効なデータがないと、そのデータビット領域のデータ量に応じて反対符号の値として検出される。そして、検出された相対グループスケールファクタに基づいて各演算データに対してスケーリングが行われる。すなわち、演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、オーバーフローした分も併せてスケーリングが行われるので、第２次演算処理においてオーバフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【００３８】
一方、絶対グループスケールファクタ検出処理が実行され、第１次演算処理および第２次演算処理の実行時に検出された相対グループスケールファクタがその検出順に累算され、その累算結果が、その検出に係るデータグループの絶対グループスケールファクタとして出力される。
そして、一つのデータブロックについて第１次演算処理および第２次演算処理が終了すると、各データグループごとに検出された絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものがブロックスケールファクタとして検出される。
【００３９】
次に、第１次演算処理および第２次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、データグループの各演算データに対して、そのデータグループの絶対グループスケールファクタおよびブロックスケールファクタに基づいてスケーリングが行われる。
ここで、スケールファクタとしては、例えば、データをビットシフトするときのシフト量を挙げることができる。この場合、スケールファクタに相当するシフト量で、データに対してビットシフトを行うことによりスケーリングを行う。以下、請求項３記載のデータ演算処理装置において同じである。
【００４０】
また、相対グループスケールファクタを検出する構成としては、例えば、データグループの各データに対して演算を行った後、それら演算データのスケールファクタを算出し、算出したスケールファクタのうち最小のものを相対グループスケールファクタとして検出するようになっていてもよいし、それら演算データのスケールファクタを算出せず、それら演算データから直接相対グループスケールファクタを検出するようになっていてもよい。
【００４１】
さらに、本発明に係る請求項２記載のデータ演算処理装置は、請求項１記載のデータ演算処理装置において、前記第１次演算処理および前記第２次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分に基づいてスケーリングを行うようになっている。
【００４２】
このような構成であれば、第１次演算処理および第２次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、データグループの各演算データに対して、そのデータグループの絶対グループスケールファクタとブロックスケールファクタとの差分に基づいてスケーリングが行われる。
【００４３】
さらに、本発明に係る請求項３記載のデータ演算処理装置は、複数の計算ユニットを備え、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理する装置であって、前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第１スケーリング手段と、前記第１スケーリング手段からのデータに対して演算を行う演算手段と、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段と、与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第２スケーリング手段とを有し、さらに、データを記憶するための記憶手段と、前記各計算ユニットのスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものを相対グループスケールファクタとして検出する相対グループスケールファクタ検出手段と、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する絶対グループスケールファクタ検出手段と、前記絶対グループスケールファクタ検出手段で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段と、データ処理のための制御を行う制御手段とを備え、前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループのデータをそれぞれ前記各計算ユニットの第１スケーリング手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各計算ユニットの第２スケーリング手段に与える第１次演算処理と、前記各計算ユニットの第２スケーリング手段からの演算データをそれぞれ前記各計算ユニットの演算手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各計算ユニットの第２スケーリング手段に与える第２次演算処理と、前記第１次演算処理または前記第２次演算処理の終了時に前記各計算ユニットの第２スケーリング手段からの演算データを前記記憶手段に格納する演算データ格納処理とを実行し、前記第１次演算処理は、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各計算ユニットの第１スケーリング手段に振り分けるとともに、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第１スケーリング手段に与え、前記絶対グループスケールファクタ検出手段は、前記第１次演算処理および前記第２次演算処理の実行時に前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力し、一方さらに、前記演算手段からの演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正および負のうち一方の値として前記スケールファクタを算出し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として前記スケールファクタを算出し、前記第２スケーリング手段は、与えられた他のスケールファクタに基づいて前記ガードビット領域および前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部または全部を出力するようになっている。
【００４４】
このような構成であれば、制御手段により、第１次演算処理および第２次演算処理が実行され、データブロックの各データグループごとに、演算データが得られる。
第１次演算処理では、データブロック単位でデータが記憶手段から読み出され、データブロックの各データグループごとに、データグループのデータがそれぞれ各計算ユニットの第１スケーリング手段に振り分けられる。
【００４５】
各計算ユニットでは、初期状態では第１スケーリング手段にスケールファクタが与えられないので、第１スケーリング手段によるスケーリングが行われず、そのまま演算手段に入力される。そして、演算手段により、第１スケーリング手段からのデータに対して演算が行われ、スケールファクタ算出手段により、演算手段からの演算データのスケールファクタが算出される。このとき、スケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあると、そのガードビット領域のデータ量に応じて正および負のうち一方の値として算出されるが、絶対値が最大となる演算データのガードビット領域に有効なデータがないと、そのデータビット領域のデータ量に応じて反対符号の値として算出される。
【００４６】
各計算ユニットでスケールファクタが算出されると、相対グループスケールファクタ検出手段により、算出されたスケールファクタのうち絶対値が最大となる演算データに対応するものが相対グループスケールファクタとして検出され、制御手段により、検出された相対グループスケールファクタが各計算ユニットの第２スケーリング手段に与えられる。一方、絶対グループスケールファクタ検出手段により、検出された相対グループスケールファクタがその検出順に累算され、その累算結果が、その検出に係るデータグループの絶対グループスケールファクタとして出力される。
【００４７】
各計算ユニットでは、第２スケーリング手段により、与えられた相対グループスケールファクタに基づいてガードビット領域およびデータビット領域のデータに対してスケーリングが行われ、スケーリングされた演算データのうちデータビット領域のものの一部または全部が出力される。すなわち、演算手段による演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、第２スケーリング手段により、オーバーフローした分も併せてスケーリングが行われるので、第１次演算処理においてオーバフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【００４８】
このように第１次演算処理が終了すると、制御手段により、演算データ格納処理が実行され、各計算ユニットの第２スケーリング手段からの演算データが記憶手段に格納される。なお、記憶手段への格納は、演算内容によっては、第１次演算処理の終了時に必ずしも行うものではなく、第２次演算処理の終了時にのみ行ってもよい。
【００４９】
また、第１次演算処理の実行終了後、第２次演算処理では、各計算ユニットの第２スケーリング手段からの演算データが各計算ユニットの演算手段に振り分けられる。
各計算ユニットでは、演算手段により、与えられた演算データに対して演算が行われ、スケールファクタ算出手段により、演算手段からの演算データのスケールファクタが算出される。このとき、スケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあると、そのガードビット領域のデータ量に応じて正および負のうち一方の値として算出されるが、絶対値が最大となる演算データのガードビット領域に有効なデータがないと、そのデータビット領域のデータ量に応じて反対符号の値として算出される。
【００５０】
各計算ユニットでスケールファクタが算出されると、相対グループスケールファクタ検出手段により、算出されたスケールファクタのうち絶対値が最大となる演算データに対応するものが相対グループスケールファクタとして検出され、制御手段により、検出された相対グループスケールファクタが各計算ユニットの第２スケーリング手段に与えられる。一方、絶対グループスケールファクタ検出手段により、検出された相対グループスケールファクタがその検出順に累算され、その累算結果が、その検出に係るデータグループの絶対グループスケールファクタとして出力される。
【００５１】
各計算ユニットでは、第２スケーリング手段により、与えられた相対グループスケールファクタに基づいてガードビット領域およびデータビット領域のデータに対してスケーリングが行われ、スケーリングされた演算データのうちデータビット領域のものの一部または全部が出力される。すなわち、演算手段による演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、第２スケーリング手段により、オーバーフローした分も併せてスケーリングが行われるので、第２次演算処理においてオーバーフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【００５２】
このように第２次演算処理が終了すると、制御手段により、演算データ格納処理が実行され、各計算ユニットの第２スケーリング手段からの演算データが記憶手段に格納される。
次に、記憶手段の演算データに対して再度演算を行うときは、制御手段により、第１次演算処理および第２次演算処理が実行され、データブロックの各データグループごとに、演算データが得られる。
【００５３】
第１次演算処理では、データブロック単位で演算データが記憶手段から読み出され、データブロックの各データグループごとに、データグループの演算データがそれぞれ各計算ユニットの第１スケーリング手段に振り分けられるとともに、そのデータグループの絶対グループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットの第１スケーリング手段に与えられる。
【００５４】
各計算ユニットでは、第１スケーリング手段により、前回の処理において検出された絶対グループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタに基づいて、与えられた演算データに対してスケーリングが行われる。
ここで、記憶手段は、データをあらゆる手段でかつあらゆる時期に記憶するものであり、データをあらかじめ記憶してあるものであってもよいし、データをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によってデータを記憶するようになっていてもよい。
【００５５】
さらに、本発明に係る請求項４記載のデータ演算処理装置は、請求項３記載のデータ演算処理装置において、前記絶対グループスケールファクタおよび前記ブロックスケールファクタを記憶するための第２記憶手段を備え、前記制御手段は、前記絶対グループスケールファクタおよび前記ブロックスケールファクタを前記演算データと対応付けて前記第２記憶手段に記憶し、前記記憶手段の演算データに対して再度演算を行うときは、対応する絶対グループスケールファクタおよびブロックスケールファクタを前記第２記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各計算ユニットの第１スケーリング手段に振り分け、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第１スケーリング手段に与えるようになっている。
【００５６】
このような構成であれば、制御手段により、絶対グループスケールファクタ検出手段で検出された絶対グループスケールファクタおよびブロックスケールファクタ検出手段で検出されたブロックスケールファクタが、各計算ユニットの第２スケーリング手段からの演算データと対応付けられて第２記憶手段に格納される。
【００５７】
そして、記憶手段の演算データに対して再度演算を行うときは、制御手段により、対応する絶対グループスケールファクタおよびブロックスケールファクタが第２記憶手段から読み出され、データブロックの各データグループごとに、データグループの演算データがそれぞれ各計算ユニットの第１スケーリング手段に振り分けられるとともに、そのデータグループの絶対グループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットの第１スケーリング手段に与えられる。
【００５８】
各計算ユニットでは、第１スケーリング手段により、前回の処理において検出された絶対グループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタに基づいて、与えられた演算データに対してスケーリングが行われる。
ここで、第２記憶手段は、絶対グループスケールファクタおよびブロックスケールファクタをあらゆる手段でかつあらゆる時期に記憶するものであり、絶対グループスケールファクタおよびブロックスケールファクタをあらかじめ記憶してあるものであってもよいし、絶対グループスケールファクタおよびブロックスケールファクタをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によって絶対グループスケールファクタおよびブロックスケールファクタを記憶するようになっていてもよい。
【００５９】
さらに、本発明に係る請求項５記載のデータ演算処理装置は、請求項３および４のいずれかに記載のデータ演算処理装置において、前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これを正および負のうち一方の値として出力し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域の冗長なデータのビット数を算出し、これを前記一方とは反対符号の値として出力するようになっている。
【００６０】
このような構成であれば、演算手段からの演算データのガードビット領域に有効なデータがあると、スケールファクタ算出手段により、そのガードビット領域の有効なデータのビット数が算出され、これが正および負のうち一方の値として出力される。これに対し、演算手段からの演算データのガードビット領域に有効なデータがないと、スケールファクタ算出手段により、そのデータビット領域の冗長なデータのビット数が算出され、これが反対符号の値として出力される。
【００６１】
さらに、本発明に係る請求項６記載のデータ演算処理装置は、請求項５記載のデータ演算処理装置において、前記演算手段は、固定小数点演算器であり、前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、データに対してビットシフトを行い、前記第２スケーリング手段は、与えられた他のスケールファクタに相当するシフト量で、前記ガードビット領域および前記データビット領域のデータに対してビットシフトを行い、前記制御手段は、前記反対符号の値となる相対グループスケールファクタに基づいて前記第２スケーリング手段によるビットシフトを行うときは、前記一方の符号の値となる相対グループスケールファクタであって一つのデータブロックについて前記第２スケーリング手段に与えたものの総和の絶対値を限度として、前記第２スケーリング手段に与える相対グループスケールファクタを調整するようになっている。
【００６２】
このような構成であれば、各計算ユニットでは、第１スケーリング手段により、与えられたスケールファクタに相当するシフト量で、与えられたデータに対してビットシフトが行われ、演算手段により、第１スケーリング手段からのデータに対して固定小数点演算が行われる。そして、第２スケーリング手段により、与えられたスケールファクタに相当するシフト量で、演算手段からの演算データに対してビットシフトが行われる。
【００６３】
ただし、反対符号の値となる相対グループスケールファクタに基づいて第２スケーリング手段によるビットシフトを行うときは、制御手段により、一方の符号の値となる相対グループスケールファクタであって一つのデータブロックについて第２スケーリング手段に与えたものの総和の絶対値を限度として、第２スケーリング手段に与える相対グループスケールファクタが調整される。
【００６４】
ここで、第１スケーリング手段は、例えば、反対符号の値となるスケールファクタが与えられると、データに対して右シフトを行うようになっている。また、第２スケーリング手段は、例えば、反対符号の値となるスケールファクタが与えられると、データに対して右シフトを行い、一方の符号の値となるスケールファクタが与えられると、データに対して左シフトを行うようになっている。
【００６５】
さらに、本発明に係る請求項７記載のデータ演算処理装置は、請求項３ないし６のいずれかに記載のデータ演算処理装置において、前記演算手段は、前記第１スケーリング手段からのデータと所定の係数との積和を演算する積和演算器である。
このような構成であれば、演算手段により、第１スケーリング手段からのデータと所定の係数との積和が演算され、積和されたデータが演算データとして出力される。
【００６６】
一方、上記目的を達成するために、本発明に係る請求項８記載のデータ演算処理プログラムは、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理するコンピュータ実行可能なプログラムであって、前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第１次演算処理と、前記第１次演算処理の実行により得られた各演算データに対して再度演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを前記相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第２次演算処理と、前記第１次演算処理および前記第２次演算処理の実行時に検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力する絶対グループスケールファクタ出力処理とを実行可能となっており、前記第１次演算処理および前記第２次演算処理の実行により前記演算データを得ることを、前記データブロックの各データグループごとに行い、さらに、前記絶対グループスケールファクタ出力処理で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、前記第１次演算処理および前記第２次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタおよび前記ブロックスケールファクタに基づいてスケーリングを行うようになっており、一方さらに、前記演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、前記相対グループスケールファクタの検出は、前記絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正および負のうち一方の値として検出し、前記絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として検出することにより行い、前記第１次演算処理は、前記相対グループスケールファクタに基づいて前記ガードビット領域および前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部または全部を出力するようになっている。
【００６７】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項１記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項９記載のデータ演算処理プログラムは、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データを記憶するための記憶手段を有するコンピュータに対して、前記データブロック単位でデータを処理させるプログラムであって、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第１スケーリング手段、前記第１スケーリング手段からのデータに対して演算を行う演算手段、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段、および与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第２スケーリング手段として実現される処理を前記各データグループごとに実行させるためのプログラムと、前記各データグループに対応するスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものを相対グループスケールファクタとして検出する相対グループスケールファクタ検出手段、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する絶対グループスケールファクタ検出手段、前記絶対グループスケールファクタ検出手段で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段、およびデータ処理のための制御を行う制御手段として実現される処理を実行させるためのプログラムとを備え、前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループのデータをそれぞれ前記各データグループに対応する第１スケーリング手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各データグループに対応する第２スケーリング手段に与える第１次演算処理と、前記各データグループに対応する第２スケーリング手段からの演算データをそれぞれ前記各データグループに対応する演算手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各データグループに対応する第２スケーリング手段に与える第２次演算処理と、前記第１次演算処理または前記第２次演算処理の終了時に前記各データグループに対応する第２スケーリング手段からの演算データを前記記憶手段に格納する演算データ格納処理とを実行し、前記第１次演算処理は、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各データグループに対応する第１スケーリング手段に振り分けるとともに、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各データグループに対応する第１スケーリング手段に与え、前記絶対グループスケールファクタ検出手段は、前記第１次演算処理および前記第２次演算処理の実行中に前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力し、一方さらに、前記演算手段からの演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて前記スケールファクタを正および負のうち一方の値として算出し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記スケールファクタを前記一方とは反対符号の値として算出し、前記第２スケーリング手段は、与えられた他のスケールファクタに基づいて前記ガードビット領域および前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部または全部を出力するようになっている。
【００６８】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項３記載のデータ演算処理装置と同等の作用が得られる。
本発明の概要は、例えば、図１に示す通りである。本発明では、データグループごとに一つのスケールファクタを計算してこれを相対グループスケールファクタとし、各積和演算器１２から出力されたデータを相対グループスケールファクタで正規化（以下、グループ正規化という。）する。相対グループスケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正の値として検出し、絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて負の値として検出する。一方、相対グループスケールファクタを順次累算し、その累算結果である絶対グループスケールファクタを、グループ正規化されたデータグループと関連付けてグループスケールファクタレジスタファイル５２に格納する。
【００６９】
こうした一連の処理は、データブロックに含まれる他のデータグループに対しても、繰り返し適用される。一つのデータブロックの処理を行った後、複数の絶対グループスケールファクタうち最小のスケールファクタを検出してこれをブロックスケールファクタとし、データブロックと関連付けてブロックスケールファクタレジスタ５６に格納する。その後、このデータブロックをブロック処理する場合、ブロックスケールファクタと絶対グループスケールファクタとが異なり、データグループ間で桁位置が合っていない可能性があるため、絶対グループスケールファクタとブロックスケールファクタとの差分に基づいて、各データグループのデータを正規化（以下、ブロック正規化という。）して桁合わせをした後、積和演算器１２に入力する。
【００７０】
これにより、積和演算終了後のデータは、データグループ単位で一旦グループ正規化を行ってデータメモリ１００に格納され、次のブロック処理で使用する際に、ブロック正規化されるため、ブロック正規化後のデータの下位ビットに意味のない情報が含まれることがなく、ブロックフローティング方式で固定小数点演算を行うときの演算誤差が小さくなる。また、演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、オーバーフローした分も併せてスケーリングが行われるので、オーバーフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【００７１】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。図１ないし図４は、本発明に係るデータ演算処理装置の実施の形態を示す図である。
本実施の形態は、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図１に示すように、ブロックフローティング方式で固定小数点演算を行う場合について適用したものであり、第１の従来例と異なるのは、第１シフタ２４を用いてオーバーフローによる演算精度の低下を抑制する点にある。
【００７２】
まず、本発明に係るデータ演算処理装置の構成を図１を参照しながら説明する。図１は、本発明に係るデータ演算処理装置の構成を示すブロック図である。
本発明に係るデータ演算処理装置は、図１に示すように、データブロック単位でデータを記憶するためのデータメモリ１００と、データメモリ１００のデータに対して積和演算を行う演算部２２０と、ブロックフローティングに必要な正規化を行うための制御部３１０と、これらの制御を行う制御ロジック４２０と、アドレス生成器５００とで構成されている。データメモリ１００、演算部２２０、制御部３１０および制御ロジック４２０は、データバス１１０で相互にかつデータ授受可能に接続されており、データメモリ１００、制御部３１０およびアドレス生成器５００は、データアドレスバス１２０で相互にかつデータ授受可能に接続されている。
【００７３】
データメモリ１００は、図示しない外部からデータを入力し、図８に示すように、演算部２２０の演算対象となるデータとして、入力したデータをデータブロック単位で格納するようになっている。
データメモリ１００では、図８に示すように、データが計算ユニットの数に相当する個数（この場合、ｋ個）組合わさってデータグループとして格納され、さらに、データグループが複数組合わさってデータブロックとして格納される。すなわち、データブロックは、複数のデータグループを含んで構成され、データグループは、計算ユニットの数に相当する個数のデータを含んで構成されている。
【００７４】
演算部２２０は、同一機能を有するｋ個の計算ユニットＰ0〜Ｐk-1で構成されている。各計算ユニットＰ0〜Ｐk-1には、一つのデータグループのデータがそれぞれ振り分けられ、各計算ユニットＰ0〜Ｐk-1は、データグループ単位でデータを並列処理する。
各計算ユニットＰ0〜Ｐk-1は、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第２シフタ１０と、第２シフタ１０からのデータに対して積和演算を行う積和演算器１２と、積和演算器１２からの演算データのスケールファクタを算出するユニットスケールファクタ検出器２２と、与えられたスケールファクタに基づいて積和演算器１２からの演算データに対してスケーリングを行う第１シフタ２４とで構成されている。ここで、積和演算器１２からの演算データは、図１０に示すように、２ｎビット（データメモリ１００のデータのビット数をｎとしてその２倍のビット数）を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが２ｎビットを超えてオーバーフローしたときのそのオーバーフロー分のデータをｍビットを上限として保持するガードビット領域を有している。
【００７５】
ユニットスケールファクタ検出器２２は、積和演算器１２からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これを負の値のスケールファクタとして出力し、積和演算器１２からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域の冗長なデータのビット数を算出し、これを正の値のスケールファクタとして出力するようになっている。
【００７６】
第２シフタ１０は、与えられたスケールファクタに相当するシフト量で、与えられたデータに対して右シフトを行うようになっている。
第１シフタ２４は、負の値のスケールファクタが与えられたときは、与えられたスケールファクタの絶対値に相当するシフト量で、積和演算器１２からの演算データ（ガードビット領域およびデータビット領域のデータ）に対して右シフトを行い、正の値のスケールファクタが与えられたときは、与えられたスケールファクタの絶対値に相当するシフト量で、積和演算器１２からの演算データ（ガードビット領域およびデータビット領域のデータ）に対して左シフトを行うようになっている。また、第１シフタ２４からの演算データは、さらに次のブロック処理に備えるため、データメモリ１００に格納されるが、データメモリ１００のデータのビット数は、第１シフタ２４からの演算データのそれよりも少ないため、第１シフタ２４は、左シフトした演算データのうち最上位ビットを基準としてデータメモリ１００のデータのビット数分を取り、それよりも下位のビットを単純に切り捨て、データメモリ１００のデータのビット数の演算データを出力するようになっている。
【００７７】
制御部３１０は、ユニットスケールファクタ検出器２２で算出したスケールファクタから相対グループスケールファクタを検出する差分スケールファクタ検出器５０ａと、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する累算スケールファクタ検出器５０ｂと、絶対グループスケールファクタを格納するグループスケールファクタレジスタファイル５２と、絶対グループスケールファクタからブロックスケールファクタを検出するブロックスケールファクタ検出器５４と、ブロックスケールファクタを格納するブロックスケールファクタレジスタ５６と、絶対グループスケールファクタとブロックスケールファクタの差分を計算する桁合わせ用加算器６０とで構成されている。
【００７８】
差分スケールファクタ検出器５０ａは、各計算ユニットＰ0〜Ｐk-1のユニットスケールファクタ検出器２２で算出したスケールファクタうち最小のものを相対グループスケールファクタとして検出し、制御ロジック４２０の制御により、検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２４に出力するようになっている。例えば、各計算ユニットＰ0〜Ｐk-1（例えば、ｋ＝３）のユニットスケールファクタ検出器２２からスケールファクタとして「１」、「２」、「３」を入力した場合、そのうちの最小値である「１」をその相対グループスケールファクタとして検出する。
【００７９】
累算スケールファクタ検出器５０ｂは、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力するようになっている。
グループスケールファクタレジスタファイル５２は、累算スケールファクタ検出器５０ｂで検出した絶対グループスケールファクタをそれぞれ一時的に格納し、制御ロジック４２０の制御により、データメモリ１００または桁合わせ用加算器６０に絶対グループスケールファクタを出力するようになっている。
【００８０】
ブロックスケールファクタ検出器５４は、累算スケールファクタ検出器５０ｂで検出した絶対グループスケールファクタのうち最小のものをブロックスケールファクタとして検出するようになっている。例えば、データブロックの絶対グループスケールファクタが「３」、「４」、「５」として検出された場合、そのうちの最小値である「３」をそのブロックスケールファクタとして検出する。
【００８１】
ブロックスケールファクタレジスタ５６は、ブロックスケールファクタ検出器５４で検出したブロックスケールファクタを一時的に格納し、制御ロジック４２０の制御により、データメモリ１００または桁合わせ用加算器６０にブロックスケールファクタを出力するようになっている。
桁合わせ用加算器６０は、グループスケールファクタレジスタファイル５２から出力された絶対グループスケールファクタと、ブロックスケールファクタレジスタ５６から出力されたブロックスケールファクタとを入力し、絶対グループスケールファクタからブロックスケールファクタを減算してその差分を計算し、制御ロジック４２０の制御により、その差分からなるスケールファクタを各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に出力するようになっている。
【００８２】
制御ロジック４２０は、データメモリ１００のデータに対して初めて演算を行うときは、第１次演算処理を実行した後、第２次演算処理を繰り返し実行するようになっている。
第１次演算処理は、データブロック単位でデータをデータメモリ１００から読み出し、データブロックの各データグループごとに、データグループのデータをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分け、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２４に与える。このとき、負の値の相対グループスケールファクタであって一つのデータブロックについて第１シフタ２４に与えたものの総和の絶対値を限度として、第１シフタ２４に与える相対グループスケールファクタを調整する。例えば、一つのデータブロックについて第１シフタ２４にこれまで与えた負の値の相対グループスケールファクタの総和が「−２」であるときは、差分スケールファクタ検出器５０ａで検出された相対グループスケールファクタが「３」であっても、実際に第１シフタ２４に与えられるのは「２」となる。
【００８３】
そして、各計算ユニットＰ0〜Ｐk-1の第１シフタ２４からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
第２次演算処理は、各計算ユニットＰ0〜Ｐk-1の第１シフタ２４からの演算データをそれぞれ各計算ユニットＰ0〜Ｐk-1の積和演算器１２に振り分けるとともに、次のデータグループのデータをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分け、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２４に与える。このとき、負の値の相対グループスケールファクタであって一つのデータブロックについて第１シフタ２４に与えたものの総和の絶対値を限度として、第１シフタ２４に与える相対グループスケールファクタを調整する。
【００８４】
そして、各計算ユニットＰ0〜Ｐk-1の第１シフタ２４からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
また、制御ロジック４２０は、データメモリ１００のデータに対して再度演算を行うときは、第１次演算処理を実行した後、第２次演算処理を繰り返し実行するようになっている。
【００８５】
第１次演算処理は、データブロック単位で演算データをデータメモリ１００から読み出し、データブロックの各データグループごとに、データグループの演算データをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分ける。これと同時に、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６に格納されているときは、ブロックスケールファクタレジスタ５６からブロックスケールファクタを読み出して桁合わせ用加算器６０に与えるとともに、グループスケールファクタレジスタファイル５２から絶対グループスケールファクタを順次読み出して桁合わせ用加算器６０に与える。次いで、桁合わせ用加算器６０により各絶対グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタを各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に与える。
【００８６】
そして、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２４に与え、各計算ユニットＰ0〜Ｐk-1の第１シフタ２４からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
第２次演算処理は、次のデータグループのデータをそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分ける。これと同時に、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６に格納されているときは、ブロックスケールファクタレジスタ５６からブロックスケールファクタを読み出して桁合わせ用加算器６０に与えるとともに、グループスケールファクタレジスタファイル５２から絶対グループスケールファクタを順次読み出して桁合わせ用加算器６０に与える。次いで、桁合わせ用加算器６０により各絶対グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタを各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に与える。次いで、第２シフタ１０からのデータを積和演算器１２に与えるのと同時に、各計算ユニットＰ0〜Ｐk-1の第１シフタ２４からの演算データをそれぞれ各計算ユニットＰ0〜Ｐk-1の積和演算器１２に振り分ける。
【００８７】
そして、差分スケールファクタ検出器５０ａで検出した相対グループスケールファクタを各計算ユニットＰ0〜Ｐk-1の第１シフタ２４に与え、各計算ユニットＰ0〜Ｐk-1の第１シフタ２４からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
なお、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６に格納されていないときは、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０に振り分けたデータに対応する絶対グループスケールファクタおよびブロックスケールファクタをデータメモリ１００から読み出し、これらをデータバス１１０経由でグループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６に格納してから、上記処理を実行する。
【００８８】
次に、上記実施の形態の動作を図２ないし図４を参照しながら説明する。
本例では、積和演算器１２は、初回の演算を、下式（１）により行い、下式（１）により演算した結果に対する２回目以降の演算を、下式（２）により行うものとする。下式（１）において、Ａ（ｋ）は、係数データであり、Ｘ（ｎ−ｋ）は、第２シフタ１０からのデータである。下式（２）において、Ｂ（ｌ）は、係数データであり、Ｙ（ｍ−ｌ）は、下式（１）により演算した結果であって第２シフタ１０からのデータである。
【００８９】
【数１】
0003736745.tif 000002
【００９０】
【数２】
0003736745.tif 000003
【００９１】
また、データメモリ１００からのデータを８ビット、積和演算器１２の出力のうちガードビット領域を８ビット、データビット領域を１６ビットとする。さらに、演算部２２０が４つの計算ユニットから構成されるものとし、データブロックは、２つのデータグループを含んで構成され、データグループは、計算ユニットの数に相当する４つのデータを含んで構成されているものとする。また、あらかじめ定められた係数データＡ（０）〜Ａ（３）、Ｂ（０），Ｂ（１）は、必要な時にはいつでも利用可能であると仮定する。これらの係数データをどのように供給するかは、本発明の本質とは直接的ではないので特に説明しないが、例えば、必要に応じてデータメモリ１００から読み出すなどして各積和演算器１２に与えることができる。
【００９２】
まず、本発明に係るデータ演算処理装置において、下式（１）によりデータを並列処理する手順を図２を参照しながら説明する。図２は、各積和演算器１２で行われる積和演算手順を示す図である。
上式（１）によりデータメモリ１００のデータに対して演算を行うときは、図２に示すように、制御ロジック４２０により、データＸ（０）〜Ｘ（３）を含む１番目のデータグループに対して第１次演算処理が実行され、その後、データＸ（４）〜Ｘ（７）を含む２番目のデータグループに対して第２次演算処理が実行される。
【００９３】
第１次演算処理では、まず、サイクル１で、データＸ（０）〜Ｘ（３）を含む１番目のデータグループがデータメモリ１００から読み出され、データＸ（０）〜Ｘ（３）がそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐ3の第２シフタ１０に振り分けられる。初期状態では、データＸ（０）〜Ｘ（３）に対応するスケールファクタは存在しないので、制御ロジック４２０により、データＸ（０）〜Ｘ（３）がシフトされないように第２シフタ１０が制御される。
【００９４】
各積和演算器１２では、図２の手順に従って、係数データＡ（０）〜Ａ（３）とデータＸ（０）〜Ｘ（３）との積和演算が行われ、サイクル２からサイクル５までを経て、最初の積和演算結果である演算データＹ（０）〜Ｙ（３）が得られる。これらの演算過程では、データＸ（０）〜Ｘ（３）は、各計算ユニットＰ0〜Ｐ3間をハードウェア手段を通じて転送されるものとする。
【００９５】
演算データＹ（０）〜Ｙ（３）は、その後、各ユニットスケールファクタ検出器２２に入力され、積和演算器１２からの演算データのガードビット領域に有効なデータがあると、各ユニットスケールファクタ検出器２２により、そのガードビット領域の有効なデータのビット数が算出され、これが負の値のスケールファクタとして算出される。例えば、ガードビット領域のデータが「００００１１００」である場合は、その最下位ビットから４番目までデータが存在するため、有効なデータのビット数が「４」となり、スケールファクタは「−４」となる。これに対し、積和演算器１２からの演算データのガードビット領域に有効なデータがないと、各ユニットスケールファクタ検出器２２により、そのデータビット領域の冗長なデータのビット数が算出され、これが正の値のスケールファクタとして算出される。例えば、ガードビット領域に有効なデータがなく、データビット領域のデータが「０００１１１００」である場合は、その最上位ビットから「０」が３つ連続するため、冗長なデータのビット数が「３」となり、スケールファクタは「３」となる。
【００９６】
各ユニットスケールファクタ検出器２２で算出された複数のスケールファクタは、差分スケールファクタ検出器５０ａに入力され、差分スケールファクタ検出器５０ａにより、入力された複数のスケールファクタのうち最小のものが相対グループスケールファクタとして検出される。次いで、相対グループスケールファクタは、累算スケールファクタ検出器５０ｂに入力され、累算スケールファクタ検出器５０ｂにより、相対グループスケールファクタがその検出順に累算され、その累算結果が絶対グループスケールファクタとして出力される。
【００９７】
また、相対グループスケールファクタは、各計算ユニットＰ0〜Ｐ3の第１シフタ２４に入力される。これと同時に、各積和演算器１２からの演算データＹ（０）〜Ｙ（３）も第１シフタ２４に入力される。そして、第１シフタ２４により、相対グループスケールファクタに相当するシフト量で、２４ビットの演算データＹ（０）〜Ｙ（３）に対してグループ正規化が行われる。図３に、実際の数値を用いた演算結果の一例を示す。
【００９８】
これらのグループ正規化された演算データは、さらに次のブロック処理に備えるため、データメモリ１００に格納される。データメモリ１００のデータのビット数は演算データよりも少ないため、各演算データは、下位の８ビットが単純に切り捨てられる。第１シフタ２４からの演算データＹ（０）〜Ｙ（３）は、図３の中でデータメモリ１００の入力欄に示されている。また、演算データＹ（０）〜Ｙ（３）をデータメモリ１００に格納する間に、絶対グループスケールファクタがグループスケールファクタレジスタファイル５２に入力される。絶対グループスケールファクタは、グループスケールファクタレジスタファイル５２内に、対応するデータグループと関連付けられて格納される。例えば、データメモリ１００に格納する場合、データグループは、ある一つのメモリアドレスを取り、そのデータグループのすべてのデータは、一つのメモリアドレスで同時にアクセスされるものとして、演算データをデータメモリ１００に格納するのに用いられるのと同じアドレスで特定されるレジスタに格納する。あるいは、図４に示すように、データグループが格納されているデータメモリ１００のアドレスと、絶対グループスケールファクタが格納されているグループスケールファクタレジスタファイル５２のアドレスとの対応表を、データメモリ１００の一部に作成してこれらのアドレスを管理してもよい。
【００９９】
さらに、絶対グループスケールファクタは、ブロックスケールファクタ検出器５４に入力され、ブロックスケールファクタ検出器５４により、複数の絶対グループスケールファクタのうち最小のものがブロックスケールファクタとして検出される。あるデータブロックの最初のデータグループの演算が終わった時点では、今演算されたばかりの絶対グループスケールファクタ、すなわち、図３の例では「２」が初期値として、ブロックスケールファクタ検出器５４内のレジスタ（図１には示されていない）に格納される。
【０１００】
次に、第２次演算処理では、図２に示すように、まず、サイクル６で、データＸ（４）〜Ｘ（７）を含む２番目のデータグループがデータメモリ１００から読み出され、データＸ（４）〜Ｘ（７）がそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐ3の第２シフタ１０に振り分けられる。次いで、第２シフタ１０からのデータが積和演算器１２に与えられるのと同時に、各計算ユニットＰ0〜Ｐk-1の第１シフタ２４からの演算データＹ（０）〜Ｙ（３）がそれぞれ各計算ユニットＰ0〜Ｐk-1の積和演算器１２に振り分けられる。
【０１０１】
各積和演算器１２では、図２の手順に従って、演算データＹ（０）〜Ｙ（３）とデータＸ（４）〜Ｘ（７）との積和演算が行われ、サイクル７からサイクル１０までを経て、次の積和演算結果である演算データＹ（４）〜Ｙ（７）が得られる。これらの演算過程では、データＸ（４）〜Ｘ（７）は、各計算ユニットＰ0〜Ｐ3間をハードウェア手段を通じて転送されるものとする。
【０１０２】
演算データＹ（４）〜Ｙ（７）は、その後、各ユニットスケールファクタ検出器２２に入力され、積和演算器１２からの演算データのガードビット領域に有効なデータがあると、各ユニットスケールファクタ検出器２２により、そのガードビット領域の有効なデータのビット数が算出され、これが負の値のスケールファクタとして算出される。これに対し、積和演算器１２からの演算データのガードビット領域に有効なデータがないと、各ユニットスケールファクタ検出器２２により、そのデータビット領域の冗長なデータのビット数が算出され、これが正の値のスケールファクタとして算出される。
【０１０３】
各ユニットスケールファクタ検出器２２で算出された複数のスケールファクタは、差分スケールファクタ検出器５０ａに入力され、差分スケールファクタ検出器５０ａにより、入力された複数のスケールファクタのうち最小のものが相対グループスケールファクタとして検出される。次いで、相対グループスケールファクタは、累算スケールファクタ検出器５０ｂに入力され、累算スケールファクタ検出器５０ｂにより、相対グループスケールファクタがその検出順に累算され、その累算結果が絶対グループスケールファクタとして出力される。
【０１０４】
また、相対グループスケールファクタは、各計算ユニットＰ0〜Ｐ3の第１シフタ２４に入力される。これと同時に、各積和演算器１２からの演算データＹ（４）〜Ｙ（７）も第１シフタ２４に入力される。そして、第１シフタ２４により、相対グループスケールファクタに相当するシフト量で、２４ビットの演算データＹ（４）〜Ｙ（７）に対してグループ正規化が行われる。図３に、実際の数値を用いた演算結果の一例を示す。
【０１０５】
演算データＹ（４）〜Ｙ（７）に対して計算される絶対グループスケールファクタは、今回はブロックスケールファクタ検出器５４内のレジスタに保持されている内容と比較され、小さい方の値がブロックスケールファクタとして選択される。図３の例では、演算データＹ（４）〜Ｙ（７）から絶対グループスケールファクタ「１」が検出される。この場合、ブロックスケールファクタ検出器５４内のレジスタに保持されている「２」よりも「１」の方が小さいので、ブロックスケールファクタ検出器５４内のレジスタの内容は更新される。
【０１０６】
この例においては、この時点で、一つのデータブロックのすべてのデータに関する演算が完了したため、ブロックスケールファクタは、ブロックスケールファクタ検出器５４内のレジスタの現在の値、すなわち「１」に確定される。本例から容易に類推されるように、例えこの後に演算を行うべき複数のデータグループがあったとしても、２番目のデータグループに適用された上述の処理を繰り返すことが可能である。
【０１０７】
次に、本発明に係るデータ演算処理装置において、上式（１）により演算した演算データを、下式（２）により再度並列処理する手順を説明する。演算を始める前に、ブロックスケールファクタ検出器５４内のレジスタの内容をブロックスケールファクタレジスタ５６に転送しておく。
上式（２）によりデータメモリ１００の演算データに対して再度演算を行うときは、図２に示すように、制御ロジック４２０により、演算データＹ（０）〜Ｙ（３）を含む１番目のデータグループに対して第１次演算処理が実行され、その後、演算データＹ（４）〜Ｙ（７）を含む２番目のデータグループに対して第２次演算処理が実行される。
【０１０８】
第１次演算処理では、まず、演算データＹ（０）〜Ｙ（３）を含む１番目のデータグループがデータメモリ１００から読み出され、演算データＹ（０）〜Ｙ（３）がそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐ3の第２シフタ１０に振り分けられる。これと同時に、対応する絶対グループスケールファクタ、すなわち、本例においては「２」が、データアドレスバス１２０経由で与えられたアドレス情報により選択され、グループスケールファクタレジスタファイル５２から読み出される。各第２シフタ１０における右シフト量は、現在の絶対グループスケールファクタとブロックスケールファクタの差分、すなわち、本例においては、２−１＝１として与えられる。演算データＹ（０）〜Ｙ（３）に対して、この後適用される演算処理は、下式（１）について説明した演算処理とまったく同様である。
【０１０９】
次に、第２次演算処理では、まず、演算データＹ（４）〜Ｙ（７）を含む２番目のデータグループがデータメモリ１００から読み出され、演算データＹ（４）〜Ｙ（７）がそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐ3の第２シフタ１０に振り分けられる。このデータグループに対する絶対グループスケールファクタは、図３に示すように、「１」である。結果として、このデータグループのすべての演算データは、１−１＝０、すなわち第２シフタ１０でシフトされずに出力される。
【０１１０】
この段階で、すべての演算データＹ（０）〜Ｙ（７）が、データブロックの最大値の小数点位置に桁合わせされ、その結果、後続の積和演算において、固定小数点演算を行うことが可能となる。
このようにして、本実施の形態では、差分スケールファクタ検出器５０ａは、積和演算器１２からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これを負の値のスケールファクタとして第１シフタ２４に出力し、積和演算器１２からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域の冗長なデータのビット数を算出し、これを正の値のスケールファクタとして第１シフタ２４に出力し、第１シフタ２４は、負の値のスケールファクタが与えられたときは、与えられたスケールファクタの絶対値に相当するシフト量で、積和演算器１２からの演算データに対して右シフトを行い、正の値のスケールファクタが与えられたときは、与えられたスケールファクタの絶対値に相当するシフト量で、積和演算器１２からの演算データに対して左シフトを行い、またさらに、演算データに対して再度演算を行うときは、その演算の前に、第２シフタ１０により、データグループの各演算データに対してそのデータグループの絶対グループスケールファクタおよびブロックスケールファクタに基づいて右シフトを行うようになっている。
【０１１１】
これにより、第１次演算処理および第２次演算処理における演算の結果、演算後のデータが２ｎビットを超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、オーバーフローした分も併せて右シフトが行われるので、オーバーフローによる演算精度の低下を抑制できる。また、第１次演算処理および第２次演算処理における演算の結果、データビット領域の有効なデータが２ｎビットを下回っても、データビット領域のデータに対して左シフトが行われるので、桁落ちによる演算精度の低下を抑制することができる。したがって、従来に比して、ブロックフローティング方式において、演算精度の向上を図ることができる。
【０１１２】
上記実施の形態において、データメモリ１００は、請求項３、４または９記載の記憶手段に対応し、グループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６は、請求項４記載の第２記憶手段に対応し、第２シフタ１０は、請求項３、４、６、７または９記載の第１スケーリング手段に対応している。また、積和演算器１２は、請求項３、５ないし７または９記載の演算手段に対応し、ユニットスケールファクタ検出器２２は、請求項３、５または９記載のスケールファクタ算出手段に対応し、第１シフタ２４は、請求項３、６または９記載の第２スケーリング手段に対応している。
【０１１３】
また、上記実施の形態において、差分スケールファクタ検出器５０ａは、請求項３または９記載の相対グループスケールファクタ検出手段に対応し、累算スケールファクタ検出器５０ｂは、請求項３または９記載の絶対グループスケールファクタ検出手段に対応し、ブロックスケールファクタ検出器５４は、請求項３または９記載のブロックスケールファクタ検出手段に対応している。また、制御ロジック４２０は、請求項３、４、６または９記載の制御手段に対応している。
【０１１４】
なお、上記実施の形態においては、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０と積和演算器１２との相互間で、ハードウェア手段を通じてデータを転送することについて説明したが、具体的には、図５に示す構成を採用することができる。図５は、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０と積和演算器１２との相互間でデータを転送するための詳細な構成を示すブロック図である。
【０１１５】
図５において、計算ユニットＰ0は、第２シフタ１０からのデータを保持するレジスタ１１ａを備えている。計算ユニットＰ1，Ｐ2は、前段の計算ユニットＰ0，Ｐ1のレジスタ１１ａからのデータを保持するレジスタ１１ａと、前段の計算ユニットＰ0，Ｐ1のレジスタ１１ａからのデータおよび第２シフタ１０からのデータのいずれかを選択して積和演算器１２に出力するセレクタ１１ｂとを備えている。計算ユニットＰ3は、前段の計算ユニットＰ2のレジスタ１１ａからのデータおよび第２シフタ１０からのデータのいずれかを選択して積和演算器１２に出力するセレクタ１１ｂを備えている。
【０１１６】
また、上記実施の形態においては、ユニットスケールファクタ検出器２２および差分スケールファクタ検出器５０ａを備えて構成したが、これに限らず、例えば、図６に示す構成を採用することができる。図６は、ユニットスケールファクタ検出器２２および差分スケールファクタ検出器５０ａの他の構成を示すブロック図である。
【０１１７】
図６において、各計算ユニットＰ0〜Ｐ4は、ユニットスケールファクタ検出器２２に代えて、ＸＯＲアレイ１５ａからなる局所ブロックフローティングユニット１５で構成されている。そして、プライオリティエンコーダ２１からなるグループスケールファクタ検出器５１と、各計算ユニットＰ0〜Ｐ4の局所ブロックフローティングユニット１５とグループスケールファクタ検出器５１とを接続するワイヤードＯＲバスとを備えて構成されている。
【０１１８】
局所ブロックフローティングユニット１５は、積和演算器１２からの演算データを入力し、その演算データの隣り合うビットに対して排他的論理和演算を行って出力するようになっている。例えば、４ビットの演算データを入力した場合、最上位の４番目のビットおよび３番目のビットに対して排他的論理和演算を行ったものを出力データの３番目のビットとし、同じ要領で、３番目および２番目の演算結果を出力データの２番目のビットとし、２番目および１番目の演算結果を出力データの１番目のビットとし、そして、最上位のビットを出力データの最上位のビットとして出力する。
【０１１９】
これにより、各計算ユニットＰ0〜Ｐ4の積和演算器１２からの演算データのスケールファクタを算出し、それらスケールファクタから相対グループスケールファクタを算出しなくても、各計算ユニットＰ0〜Ｐ4の積和演算器１２からの演算データから直接相対グループスケールファクタを検出することもできる。
また、上記実施の形態においては、発明の理解を容易にするために、データグループは、計算ユニットＰ0〜Ｐk-1の数に相当する個数のデータを含んで構成したが、計算ユニットＰ0〜Ｐk-1の数にかかわらず、これよりも少ない個数のデータを含んで構成してもよいし、これよりも多い個数のデータを含んで構成してもよい。
【０１２０】
また、上記実施の形態においては、制御ロジック４２０を、内部のロジックに従って各部の制御を行うように構成したが、これに限らず、制御ロジック４２０に代えて、ＣＰＵ、ＲＡＭおよびＲＯＭをバス接続してデータ演算処理部を構成し、データ演算処理部は、ＣＰＵにより、上記の制御手順を示したプログラムをＲＯＭから読み出して実行するように構成してもよい。この場合、上記の制御手順を示したプログラムは、ＲＯＭに格納されているが、これに限らず、上記の制御手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭに読み込んで実行するようにしてもよい。
【０１２１】
また、上記実施の形態においては、本発明に係るデータ演算処理装置を、データメモリ１００と、演算部２２０と、制御部３１０と、制御ロジック４２０と、アドレス生成器５００とを備えたハードウェアで構成したが、これに限らず、例えば、ＣＰＵ、ＲＡＭおよびＲＯＭをバス接続して構成し、ＣＰＵにより、各部の機能を実現するための制御プログラムをＲＯＭから読み出して実行するように、一部または全部をソフトウェアで構成してもよい。この場合も、制御プログラムは、ＲＯＭに格納されているが、これに限らず、制御プログラムが記憶された記憶媒体から、その制御プログラムをＲＡＭに読み込んで実行するようにしてもよい。
【０１２２】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【０１２３】
また、上記実施の形態においては、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図１に示すように、ブロックフローティング方式で固定小数点演算を行う場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。
【０１２４】
【発明の効果】
以上説明したように、本発明に係る請求項１または２記載のデータ演算処理装置によれば、第１次演算処理および第２次演算処理においてオーバーフローが発生しても、オーバフローによる演算精度の低下を抑制することができる。また、第１次演算処理および第２次演算処理における演算の結果、データビット領域の有効なデータが所定ビット数を下回っても、桁落ちによる演算精度の低下を抑制することができる。したがって、従来に比して、ブロックフローティング方式において、演算精度の向上を図ることができるという効果が得られる。
【０１２５】
さらに、本発明に係る請求項３ないし７記載のデータ演算処理装置によれば、第１次演算処理および第２次演算処理においてオーバーフローが発生しても、オーバフローによる演算精度の低下を抑制することができる。また、第１次演算処理および第２次演算処理における演算の結果、データビット領域の有効なデータが所定ビット数を下回っても、桁落ちによる演算精度の低下を抑制することができる。したがって、従来に比して、ブロックフローティング方式において、演算精度の向上を図ることができるという効果が得られる。
【０１２６】
一方、本発明に係る請求項８記載のデータ演算処理プログラムによれば、請求項１記載のデータ演算処理装置と同等の効果が得られる。
さらに、本発明に係る請求項９記載のデータ演算処理プログラムによれば、請求項３記載のデータ演算処理装置と同等の効果が得られる。
【図面の簡単な説明】
【図１】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図２】各積和演算器１２で行われる積和演算手順を示す図である。
【図３】本発明を数値例に適用した場合の演算過程を説明するための図である。
【図４】データグループと絶対グループスケールファクタを関連付けて格納する方法の一例を示す図である。
【図５】各計算ユニットＰ0〜Ｐk-1の第２シフタ１０と積和演算器１２との相互間でデータを転送するための詳細な構成を示すブロック図である。
【図６】ユニットスケールファクタ検出器２２および差分スケールファクタ検出器５０ａの他の構成を示すブロック図である。
【図７】従来のデータ演算処理装置の構成を示すブロック図である。
【図８】データメモリ１００における演算単位となるデータのデータ構造を示す図である。
【図９】従来のデータ演算処理装置の構成を示すブロック図である。
【図１０】積和演算器１２からの演算データのデータ構造を示す図である。
【符号の説明】
１０                      第２シフタ
１２                      積和演算器
１４，１８，２２          ユニットスケールファクタ検出器
１６，２０，２４          第１シフタ
５０，５１                グループスケールファクタ検出器
５０ａ                    差分スケールファクタ検出器
５０ｂ                    累算スケールファクタ検出器
５２                      グループスケールファクタレジスタファイル
５４                      ブロックスケールファクタ検出器
５６                      ブロックスケールファクタレジスタ
６０                      桁合わせ用加算器
１００                    データメモリ
１１０                    データバス
１２０                    アドレスバス
２００〜２２０            演算部
３００，３１０            制御部
４００〜４２０            制御ロジック
５００                    アドレス生成器
１１０                    データバス
１２０                    データアドレスバス
１１ａ                    レジスタ
１１ｂ                    セレクタ
１５ａ                    ＸＯＲアレイ
１５                      局所ブロックフローティングユニット
２１                      プライオリティエンコーダ
【図１】
0003736745.tif 000004
【図２】
0003736745.tif 000005
【図３】
0003736745.tif 000006
【図４】
0003736745.tif 000007
【図５】
0003736745.tif 000008
【図６】
0003736745.tif 000009
【図７】
0003736745.tif 000010
【図８】
0003736745.tif 000011
【図９】
0003736745.tif 000012
【図１０】
0003736745.tif 000013