JP3736745B2 - データ演算処理装置及びデータ演算処理プログラム - Google Patents
データ演算処理装置及びデータ演算処理プログラム Download PDFInfo
- Publication number
- JP3736745B2 JP3736745B2 JP2001125248A JP2001125248A JP3736745B2 JP 3736745 B2 JP3736745 B2 JP 3736745B2 JP 2001125248 A JP2001125248 A JP 2001125248A JP 2001125248 A JP2001125248 A JP 2001125248A JP 3736745 B2 JP3736745 B2 JP 3736745B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- scale factor
- group
- calculation
- scaling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、1または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データブロック単位でデータを処理する装置に係り、特に、ブロックフローティング方式で固定小数点演算を行うブロックフローティング型のデジタル・シグナル・プロセッサ(以下、単にDSPという。)に関する。
【0002】
【従来の技術】
デジタル信号処理における数値表現方法として、固定小数点表現方法および浮動小数点表現方法がある。浮動小数点表現方法では、各データが指数部と仮数部をもち、これにより、高い精度と広いダイナミックレンジが確保可能という利点がある反面、複雑で大規模なハードウェアが必要となるという問題がある。一方、固定小数点表現方法では、ハードウェアが簡単で回路規模も小さくてすむが、演算精度の低下が問題となる。そこで、これらの問題への対策法として提案されたのがブロックフローティングという方式である。この方式では、所定数(例えば、m個)のデータを一つのデータブロックとし、データブロックに対し1個のブロックスケールファクタをもたせ、データブロックのm個のデータに対し共通のスケーリング(以下、ブロック正規化という。)を行うことにより、限られたダイナミックレンジを有効に用いて精度の劣化を抑える。
【0003】
ブロックフローティングを効率良く実現するために、例えば、特許協力条約に基づいて公開された国際出願(国際公開番号WO99/66423)には、桁落ちによる演算精度の低下を抑制するのに好適なデータ演算処理装置(以下、単に第1の従来例という。)が提案されている。その他、本出願人が学会で発表した論文(1999 IEEE WORKSHOP ON SIGNAL PROCESSING SYSTEMS(SiPS 99) Design and Implementation)には、オーバーフローによる演算精度の低下を抑制するのに好適なデータ演算処理装置(以下、単に第2の従来例という。)が提案されている。
【0004】
まず、第1の従来例の構成を図7を参照しながら説明する。図7は、従来のデータ演算処理装置の構成を示すブロック図である。
第1の従来例は、図7に示すように、データブロック単位でデータを記憶するためのデータメモリ100と、データメモリ100のデータに対して積和演算を行う演算部200と、ブロックフローティングに必要な正規化を行うための制御部300と、これらの制御を行う制御ロジック400と、アドレス生成器500とで構成されている。データメモリ100、演算部200、制御部300および制御ロジック400は、データバス110で相互にかつデータ授受可能に接続されており、データメモリ100、制御部300およびアドレス生成器500は、データアドレスバス120で相互にかつデータ授受可能に接続されている。
【0005】
データメモリ100は、図示しない外部からデータを入力し、図8に示すように、演算部200の演算対象となるデータとして、入力したデータをデータブロック単位で格納するようになっている。図8は、データメモリ100における演算単位となるデータのデータ構造を示す図である。
データメモリ100では、図8に示すように、データが計算ユニットの数に相当する個数(この場合、k個)組合わさってデータグループとして格納され、さらに、データグループが複数組合わさってデータブロックとして格納される。すなわち、データブロックは、複数のデータグループを含んで構成され、データグループは、計算ユニットの数に相当する個数のデータを含んで構成されている。
【0006】
演算部200は、同一機能を有するk個の計算ユニットP0〜Pk-1で構成されている。各計算ユニットP0〜Pk-1には、一つのデータグループのデータがそれぞれ振り分けられ、各計算ユニットP0〜Pk-1は、データグループ単位でデータを並列処理する。
各計算ユニットP0〜Pk-1は、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第2シフタ10と、第2シフタ10からのデータに対して積和演算を行う積和演算器12と、積和演算器12からの演算データのスケールファクタを算出するユニットスケールファクタ検出器14と、与えられたスケールファクタに基づいて積和演算器12からの演算データに対してスケーリングを行う第1シフタ16とで構成されている。
【0007】
ユニットスケールファクタ検出器14は、積和演算器12からの演算データの冗長なデータのビット数を算出し、これをスケールファクタとして算出するようになっている。ここで、スケールファクタは、データをビットシフトするときのシフト量であり、シフトするビット数を示す。以下、グループスケールファクタおよびブロックスケールファクタについても同様である。
【0008】
第2シフタ10は、与えられたスケールファクタに相当するシフト量で、与えられたデータに対して下位ビットの方向へビットシフト(以下、単に右シフトという。)を行うようになっている。
第1シフタ16は、与えられたスケールファクタに相当するシフト量で、積和演算器12からの演算データに対して上位ビットの方向へビットシフト(以下、単に左シフトという。)を行うようになっている。また、第1シフタ16からの演算データは、さらに次のブロック処理に備えるため、データメモリ100に格納されるが、データメモリ100のデータのビット数は、第1シフタ16からの演算データのそれよりも少ないため、第1シフタ16は、左シフトした演算データのうち最上位ビットを基準としてデータメモリ100のデータのビット数分を取り、それよりも下位のビットを切り捨て、データメモリ100のデータのビット数の演算データとして丸め処理を行うようになっている。
【0009】
制御部300は、ユニットスケールファクタ検出器14で算出したスケールファクタからグループスケールファクタを検出するグループスケールファクタ検出器50と、グループスケールファクタを格納するグループスケールファクタレジスタファイル52と、グループスケールファクタからブロックスケールファクタを検出するブロックスケールファクタ検出器54と、ブロックスケールファクタを格納するブロックスケールファクタレジスタ56と、グループスケールファクタとブロックスケールファクタの差分を計算する桁合わせ用加算器60とで構成されている。
【0010】
グループスケールファクタ検出器50は、各計算ユニットP0〜Pk-1のユニットスケールファクタ検出器14で算出したスケールファクタうち最小のものをグループスケールファクタとして検出し、制御ロジック400の制御により、検出したグループスケールファクタをグループスケールファクタレジスタファイル52および各計算ユニットP0〜Pk-1の第1シフタ16に出力するようになっている。例えば、各計算ユニットP0〜Pk-1(例えば、k=3)のユニットスケールファクタ検出器14からスケールファクタとして「1」、「2」、「3」を入力した場合、そのうちの最小値である「1」をそのグループスケールファクタとして検出する。
【0011】
グループスケールファクタレジスタファイル52は、グループスケールファクタ検出器50で検出したグループスケールファクタをそれぞれ一時的に格納し、制御ロジック400の制御により、データメモリ100または桁合わせ用加算器60にグループスケールファクタを出力するようになっている。
ブロックスケールファクタ検出器54は、グループスケールファクタ検出器50で検出したグループスケールファクタのうち最小のものをブロックスケールファクタとして検出するようになっている。例えば、データブロックのグループスケールファクタが「3」、「4」、「5」として検出された場合、そのうちの最小値である「3」をそのブロックスケールファクタとして検出する。
【0012】
ブロックスケールファクタレジスタ56は、ブロックスケールファクタ検出器54で検出したブロックスケールファクタを一時的に格納し、制御ロジック400の制御により、データメモリ100または桁合わせ用加算器60にブロックスケールファクタを出力するようになっている。
桁合わせ用加算器60は、グループスケールファクタレジスタファイル52から出力されたグループスケールファクタと、ブロックスケールファクタレジスタ56から出力されたブロックスケールファクタとを入力し、グループスケールファクタからブロックスケールファクタを減算してその差分を計算し、制御ロジック400の制御により、その差分からなるスケールファクタを各計算ユニットP0〜Pk-1の第2シフタ10に出力するようになっている。
【0013】
制御ロジック400は、データメモリ100のデータに対して初めて演算を行うときは、次の制御処理を実行するようになっている。
まず、データブロック単位でデータをデータメモリ100から読み出し、データブロックの各データグループごとに、データグループのデータをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分ける。
【0014】
そして、グループスケールファクタ検出器50で検出したグループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ16に与え、各計算ユニットP0〜Pk-1の第1シフタ16からの演算データをデータバス110経由でデータメモリ100に格納する。
また、制御ロジック400は、データメモリ100のデータに対して再度演算を行うときは、次の制御処理を実行するようになっている。
【0015】
まず、データブロック単位で演算データをデータメモリ100から読み出し、データブロックの各データグループごとに、データグループの演算データをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分ける。これと同時に、各計算ユニットP0〜Pk-1の第2シフタ10に振り分けたデータのグループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル52およびブロックスケールファクタレジスタ56に格納されているときは、ブロックスケールファクタレジスタ56からブロックスケールファクタを読み出して桁合わせ用加算器60に与えるとともに、グループスケールファクタレジスタファイル52からグループスケールファクタを順次読み出して桁合わせ用加算器60に与える。次いで、桁合わせ用加算器60により各グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタを各計算ユニットP0〜Pk-1の第2シフタ10に与える。
【0016】
そして、グループスケールファクタ検出器50で検出したグループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ16に与え、各計算ユニットP0〜Pk-1の第1シフタ16からの演算データをデータバス110経由でデータメモリ100に格納する。
次に、第2の従来例の構成を図9を参照しながら説明する。図9は、従来のデータ演算処理装置の構成を示すブロック図である。なお、第2の従来例は、第1の従来例の構成と重複する部分があるため、以下、異なる部分についてのみ説明し、重複する部分については説明を省略する。
【0017】
第2の従来例は、図9に示すように、データメモリ100と、データメモリ100のデータに対して積和演算を行う演算部210と、ブロックフローティングに必要な正規化を行うための制御部310と、これらの制御を行う制御ロジック410と、アドレス生成器500とで構成されている。
各計算ユニットP0〜Pk-1は、第2シフタ10と、積和演算器12と、積和演算器12からの演算データのスケールファクタを算出するユニットスケールファクタ検出器18と、与えられたスケールファクタに基づいて積和演算器12からの演算データに対してスケーリングを行う第1シフタ20とで構成されている。ここで、積和演算器12からの演算データは、図10に示すように、2nビット(データメモリ100のデータのビット数をnとしてその2倍のビット数)を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが2nビットを超えてオーバーフローしたときのそのオーバーフロー分のデータをmビットを上限として保持するガードビット領域を有している。図10は、積和演算器12からの演算データのデータ構造を示す図である。
【0018】
ユニットスケールファクタ検出器18は、積和演算器12からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これをスケールファクタとして出力するようになっている。ここで、スケールファクタは、データをビットシフトするときのシフト量であり、シフトするビット数を示す。以下、相対グループスケールファクタおよび絶対グループスケールファクタについても同様である。
【0019】
第1シフタ20は、与えられたスケールファクタに相当するシフト量で、積和演算器12からの演算データに対して右シフトを行うようになっている。この点、第1の従来例における第1シフタ16の構成とは異なる。
制御部310は、ユニットスケールファクタ検出器18で算出したスケールファクタから相対グループスケールファクタを検出する差分スケールファクタ検出器50aと、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する累算スケールファクタ検出器50bと、絶対グループスケールファクタを格納するグループスケールファクタレジスタファイル52と、絶対グループスケールファクタからブロックスケールファクタを検出するブロックスケールファクタ検出器54と、ブロックスケールファクタレジスタ56と、桁合わせ用加算器60とで構成されている。
【0020】
差分スケールファクタ検出器50aは、各計算ユニットP0〜Pk-1のユニットスケールファクタ検出器18で算出したスケールファクタうち最大のものを相対グループスケールファクタとして検出し、制御ロジック410の制御により、検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ20に出力するようになっている。
【0021】
累算スケールファクタ検出器50bは、差分スケールファクタ検出器50aで検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力するようになっている。
グループスケールファクタレジスタファイル52は、累算スケールファクタ検出器50bで検出した絶対グループスケールファクタをそれぞれ一時的に格納し、制御ロジック420の制御により、データメモリ100または桁合わせ用加算器60に絶対グループスケールファクタを出力するようになっている。
【0022】
ブロックスケールファクタ検出器54は、累算スケールファクタ検出器50bで検出した絶対グループスケールファクタのうち最大のものをブロックスケールファクタとして検出するようになっている。例えば、データブロックの絶対グループスケールファクタが「3」、「4」、「5」として検出された場合、そのうちの最大値である「5」をそのブロックスケールファクタとして検出する。
【0023】
ブロックスケールファクタレジスタ56は、ブロックスケールファクタ検出器54で検出したブロックスケールファクタを一時的に格納し、制御ロジック420の制御により、データメモリ100または桁合わせ用加算器60にブロックスケールファクタを出力するようになっている。
桁合わせ用加算器60は、グループスケールファクタレジスタファイル52から出力された絶対グループスケールファクタと、ブロックスケールファクタレジスタ56から出力されたブロックスケールファクタとを入力し、データメモリ100に格納されている入力データブロックの各データグループのグループスケールファクタから入力データブロックのブロックスケールファクタを減算したものに今回の絶対グループスケールファクタを累算したものを計算し、制御ロジック420の制御により、その差分からなるスケールファクタを各計算ユニットP0〜Pk-1の第2シフタ10に出力するようになっている。
【0024】
制御ロジック410は、データメモリ100のデータに対して初めて演算を行うときは、第1次演算処理を実行した後、第2次演算処理を繰り返し実行するようになっている。
第1次演算処理は、データブロック単位でデータをデータメモリ100から読み出し、データブロックの各データグループごとに、データグループのデータをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分ける。
【0025】
そして、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ20に与え、各計算ユニットP0〜Pk-1の第1シフタ20からの演算データをデータバス110経由でデータメモリ100に格納する。
第2次演算処理は、各計算ユニットP0〜Pk-1の第1シフタ20からの演算データをそれぞれ各計算ユニットP0〜Pk-1の積和演算器12に振り分けるとともに、次のデータグループのデータをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分ける。
【0026】
そして、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ20に与え、各計算ユニットP0〜Pk-1の第1シフタ20からの演算データをデータバス110経由でデータメモリ100に格納する。
また、制御ロジック410は、データメモリ100のデータに対して再度演算を行うときは、第1次演算処理を実行した後、第2次演算処理を繰り返し実行するようになっている。
【0027】
第1次演算処理は、データブロック単位で演算データをデータメモリ100から読み出し、データブロックの各データグループごとに、データグループの演算データをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分ける。これと同時に、各計算ユニットP0〜Pk-1の第2シフタ10に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル52およびブロックスケールファクタレジスタ56に格納されているときは、ブロックスケールファクタレジスタ56からブロックスケールファクタを読み出して桁合わせ用加算器60に与えるとともに、グループスケールファクタレジスタファイル52から絶対グループスケールファクタを順次読み出して桁合わせ用加算器60に与える。次いで、桁合わせ用加算器60により各絶対グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタを各計算ユニットP0〜Pk-1の第2シフタ10に与える。
【0028】
そして、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ20に与え、各計算ユニットP0〜Pk-1の第1シフタ20からの演算データをデータバス110経由でデータメモリ100に格納する。
第2次演算処理は、次のデータグループのデータをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分ける。これと同時に、各計算ユニットP0〜Pk-1の第2シフタ10に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル52およびブロックスケールファクタレジスタ56に格納されているときは、ブロックスケールファクタレジスタ56からブロックスケールファクタを読み出して桁合わせ用加算器60に与えるとともに、グループスケールファクタレジスタファイル52から絶対グループスケールファクタを順次読み出して桁合わせ用加算器60に与える。次いで、桁合わせ用加算器60により各絶対グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタにこれまでの演算処理の絶対グループスケールファクタを加算したスケールファクタを、各計算ユニットP0〜Pk-1の第2シフタ10に与える。次いで、第2シフタ10からのデータを積和演算器12に与えるのと同時に、各計算ユニットP0〜Pk-1の第1シフタ20からの演算データをそれぞれ各計算ユニットP0〜Pk-1の積和演算器12に振り分ける。
【0029】
そして、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ20に与え、各計算ユニットP0〜Pk-1の第1シフタ20からの演算データをデータバス110経由でデータメモリ100に格納する。
一方、固定小数点演算ではあるが、特開平4-267432号公報には、オーバフローによる演算精度の低下を抑制するのに好適な演算回路(以下、単に第3の従来例という。)が提案されている。
【0030】
第3の従来例は、同一の加減算においてはオーバーフローは高々1ビットしか生じないことに着目し、nビットの数値同士の加算を行うために1ビットのヘッドマージンを有するn+1ビットの演算器を備え、オーバーフローが生じた場合に小数点を移動し、加減算の演算過程において小数点をもとに戻してもよい状態になったときに小数点を戻すように構成したものである。
【0031】
【発明が解決しようとする課題】
しかしながら、第1の従来例にあっては、各計算ユニットP0〜Pk-1のユニットスケールファクタ検出器14で算出したスケールファクタうち最小のものをグループスケールファクタとして検出し、検出したグループスケールファクタに相当するシフト量で、積和演算器12からの演算データに対して左シフトを行う構成となっているため、積和演算器12の演算結果がオーバフローした場合には、オーバーフローにより演算精度が低下するという問題があった。
【0032】
また、第2の従来例にあっては、各計算ユニットP0〜Pk-1のユニットスケールファクタ検出器18で算出したスケールファクタうち最大のものを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに相当するシフト量で、積和演算器12からの演算データに対して右シフトを行う構成となっているため、オーバーフローによる演算精度の低下を抑制することができるものの、逆に、データビット領域の有効なデータが2nビットを下回った場合(すなわち、データビット領域に冗長なデータが生じた場合)には、第1シフタ20からの演算データの桁落ちが大きくなり、演算精度が低下するという問題があった。
【0033】
また、第3の従来例にあっては、演算器からの演算データにヘッドマージンを設け、オーバーフローによる演算精度の低下を抑制する構成となっているが、ブロックフローティング方式にこの構成をそのまま適用することはできず、しかも、加減算の計算過程で発生するオーバーフローにしか対処しておらず、多くの演算式に対応することはできないという問題があった。
【0034】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、ブロックフローティング方式において、オーバーフローおよび桁落ちによる演算精度の低下を抑制することにより、演算精度の向上を図ることができるデータ演算処理装置およびデータ演算処理プログラムを提供することを目的としている。
【0035】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る請求項1記載のデータ演算処理装置は、1または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理する装置であって、前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第1次演算処理と、前記第1次演算処理の実行により得られた各演算データに対して再度演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを前記相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第2次演算処理と、前記第1次演算処理および前記第2次演算処理の実行時に検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力する絶対グループスケールファクタ出力処理とを実行可能となっており、前記第1次演算処理および前記第2次演算処理の実行により前記演算データを得ることを、前記データブロックの各データグループごとに行い、さらに、前記絶対グループスケールファクタ出力処理で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、前記第1次演算処理および前記第2次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタおよび前記ブロックスケールファクタに基づいてスケーリングを行うようになっており、一方さらに、前記演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、前記相対グループスケールファクタの検出は、前記絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正および負のうち一方の値として検出し、前記絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として検出することにより行い、前記第1次演算処理は、前記相対グループスケールファクタに基づいて前記ガードビット領域および前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部または全部を出力するようになっている。
【0036】
このような構成であれば、第1次演算処理および第2次演算処理の実行により、データブロックの各データグループごとに、演算データが得られる。
第1次演算処理では、データグループの各データに対して演算が行われ、それら演算データのうち絶対値が最大となるもののスケールファクタが相対グループスケールファクタとして検出される。このとき、相対グループスケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあると、そのガードビット領域のデータ量に応じて正および負のうち一方の値として検出されるが、絶対値が最大となる演算データのガードビット領域に有効なデータがないと、そのデータビット領域のデータ量に応じて反対符号の値として検出される。そして、検出された相対グループスケールファクタに基づいてガードビット領域およびデータビット領域のデータに対してスケーリングが行われ、スケーリングされた演算データのうちデータビット領域のものの一部または全部が出力される。すなわち、演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、オーバーフローした分も併せてスケーリングが行われるので、第1次演算処理においてオーバーフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【0037】
また、第1次演算処理の実行終了後、第2次演算処理では、第1次演算処理の実行により得られた各演算データに対して再度演算が行われ、それら演算データのうち絶対値が最大となるもののスケールファクタが相対グループスケールファクタとして検出される。このとき、相対グループスケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあると、そのガードビット領域のデータ量に応じて正および負のうち一方の値として検出されるが、絶対値が最大となる演算データのガードビット領域に有効なデータがないと、そのデータビット領域のデータ量に応じて反対符号の値として検出される。そして、検出された相対グループスケールファクタに基づいて各演算データに対してスケーリングが行われる。すなわち、演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、オーバーフローした分も併せてスケーリングが行われるので、第2次演算処理においてオーバフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【0038】
一方、絶対グループスケールファクタ検出処理が実行され、第1次演算処理および第2次演算処理の実行時に検出された相対グループスケールファクタがその検出順に累算され、その累算結果が、その検出に係るデータグループの絶対グループスケールファクタとして出力される。
そして、一つのデータブロックについて第1次演算処理および第2次演算処理が終了すると、各データグループごとに検出された絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものがブロックスケールファクタとして検出される。
【0039】
次に、第1次演算処理および第2次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、データグループの各演算データに対して、そのデータグループの絶対グループスケールファクタおよびブロックスケールファクタに基づいてスケーリングが行われる。
ここで、スケールファクタとしては、例えば、データをビットシフトするときのシフト量を挙げることができる。この場合、スケールファクタに相当するシフト量で、データに対してビットシフトを行うことによりスケーリングを行う。以下、請求項3記載のデータ演算処理装置において同じである。
【0040】
また、相対グループスケールファクタを検出する構成としては、例えば、データグループの各データに対して演算を行った後、それら演算データのスケールファクタを算出し、算出したスケールファクタのうち最小のものを相対グループスケールファクタとして検出するようになっていてもよいし、それら演算データのスケールファクタを算出せず、それら演算データから直接相対グループスケールファクタを検出するようになっていてもよい。
【0041】
さらに、本発明に係る請求項2記載のデータ演算処理装置は、請求項1記載のデータ演算処理装置において、前記第1次演算処理および前記第2次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分に基づいてスケーリングを行うようになっている。
【0042】
このような構成であれば、第1次演算処理および第2次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、データグループの各演算データに対して、そのデータグループの絶対グループスケールファクタとブロックスケールファクタとの差分に基づいてスケーリングが行われる。
【0043】
さらに、本発明に係る請求項3記載のデータ演算処理装置は、複数の計算ユニットを備え、1または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理する装置であって、前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第1スケーリング手段と、前記第1スケーリング手段からのデータに対して演算を行う演算手段と、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段と、与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第2スケーリング手段とを有し、さらに、データを記憶するための記憶手段と、前記各計算ユニットのスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものを相対グループスケールファクタとして検出する相対グループスケールファクタ検出手段と、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する絶対グループスケールファクタ検出手段と、前記絶対グループスケールファクタ検出手段で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段と、データ処理のための制御を行う制御手段とを備え、前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループのデータをそれぞれ前記各計算ユニットの第1スケーリング手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各計算ユニットの第2スケーリング手段に与える第1次演算処理と、前記各計算ユニットの第2スケーリング手段からの演算データをそれぞれ前記各計算ユニットの演算手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各計算ユニットの第2スケーリング手段に与える第2次演算処理と、前記第1次演算処理または前記第2次演算処理の終了時に前記各計算ユニットの第2スケーリング手段からの演算データを前記記憶手段に格納する演算データ格納処理とを実行し、前記第1次演算処理は、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各計算ユニットの第1スケーリング手段に振り分けるとともに、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第1スケーリング手段に与え、前記絶対グループスケールファクタ検出手段は、前記第1次演算処理および前記第2次演算処理の実行時に前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力し、一方さらに、前記演算手段からの演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正および負のうち一方の値として前記スケールファクタを算出し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として前記スケールファクタを算出し、前記第2スケーリング手段は、与えられた他のスケールファクタに基づいて前記ガードビット領域および前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部または全部を出力するようになっている。
【0044】
このような構成であれば、制御手段により、第1次演算処理および第2次演算処理が実行され、データブロックの各データグループごとに、演算データが得られる。
第1次演算処理では、データブロック単位でデータが記憶手段から読み出され、データブロックの各データグループごとに、データグループのデータがそれぞれ各計算ユニットの第1スケーリング手段に振り分けられる。
【0045】
各計算ユニットでは、初期状態では第1スケーリング手段にスケールファクタが与えられないので、第1スケーリング手段によるスケーリングが行われず、そのまま演算手段に入力される。そして、演算手段により、第1スケーリング手段からのデータに対して演算が行われ、スケールファクタ算出手段により、演算手段からの演算データのスケールファクタが算出される。このとき、スケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあると、そのガードビット領域のデータ量に応じて正および負のうち一方の値として算出されるが、絶対値が最大となる演算データのガードビット領域に有効なデータがないと、そのデータビット領域のデータ量に応じて反対符号の値として算出される。
【0046】
各計算ユニットでスケールファクタが算出されると、相対グループスケールファクタ検出手段により、算出されたスケールファクタのうち絶対値が最大となる演算データに対応するものが相対グループスケールファクタとして検出され、制御手段により、検出された相対グループスケールファクタが各計算ユニットの第2スケーリング手段に与えられる。一方、絶対グループスケールファクタ検出手段により、検出された相対グループスケールファクタがその検出順に累算され、その累算結果が、その検出に係るデータグループの絶対グループスケールファクタとして出力される。
【0047】
各計算ユニットでは、第2スケーリング手段により、与えられた相対グループスケールファクタに基づいてガードビット領域およびデータビット領域のデータに対してスケーリングが行われ、スケーリングされた演算データのうちデータビット領域のものの一部または全部が出力される。すなわち、演算手段による演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、第2スケーリング手段により、オーバーフローした分も併せてスケーリングが行われるので、第1次演算処理においてオーバフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【0048】
このように第1次演算処理が終了すると、制御手段により、演算データ格納処理が実行され、各計算ユニットの第2スケーリング手段からの演算データが記憶手段に格納される。なお、記憶手段への格納は、演算内容によっては、第1次演算処理の終了時に必ずしも行うものではなく、第2次演算処理の終了時にのみ行ってもよい。
【0049】
また、第1次演算処理の実行終了後、第2次演算処理では、各計算ユニットの第2スケーリング手段からの演算データが各計算ユニットの演算手段に振り分けられる。
各計算ユニットでは、演算手段により、与えられた演算データに対して演算が行われ、スケールファクタ算出手段により、演算手段からの演算データのスケールファクタが算出される。このとき、スケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあると、そのガードビット領域のデータ量に応じて正および負のうち一方の値として算出されるが、絶対値が最大となる演算データのガードビット領域に有効なデータがないと、そのデータビット領域のデータ量に応じて反対符号の値として算出される。
【0050】
各計算ユニットでスケールファクタが算出されると、相対グループスケールファクタ検出手段により、算出されたスケールファクタのうち絶対値が最大となる演算データに対応するものが相対グループスケールファクタとして検出され、制御手段により、検出された相対グループスケールファクタが各計算ユニットの第2スケーリング手段に与えられる。一方、絶対グループスケールファクタ検出手段により、検出された相対グループスケールファクタがその検出順に累算され、その累算結果が、その検出に係るデータグループの絶対グループスケールファクタとして出力される。
【0051】
各計算ユニットでは、第2スケーリング手段により、与えられた相対グループスケールファクタに基づいてガードビット領域およびデータビット領域のデータに対してスケーリングが行われ、スケーリングされた演算データのうちデータビット領域のものの一部または全部が出力される。すなわち、演算手段による演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、第2スケーリング手段により、オーバーフローした分も併せてスケーリングが行われるので、第2次演算処理においてオーバーフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【0052】
このように第2次演算処理が終了すると、制御手段により、演算データ格納処理が実行され、各計算ユニットの第2スケーリング手段からの演算データが記憶手段に格納される。
次に、記憶手段の演算データに対して再度演算を行うときは、制御手段により、第1次演算処理および第2次演算処理が実行され、データブロックの各データグループごとに、演算データが得られる。
【0053】
第1次演算処理では、データブロック単位で演算データが記憶手段から読み出され、データブロックの各データグループごとに、データグループの演算データがそれぞれ各計算ユニットの第1スケーリング手段に振り分けられるとともに、そのデータグループの絶対グループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットの第1スケーリング手段に与えられる。
【0054】
各計算ユニットでは、第1スケーリング手段により、前回の処理において検出された絶対グループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタに基づいて、与えられた演算データに対してスケーリングが行われる。
ここで、記憶手段は、データをあらゆる手段でかつあらゆる時期に記憶するものであり、データをあらかじめ記憶してあるものであってもよいし、データをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によってデータを記憶するようになっていてもよい。
【0055】
さらに、本発明に係る請求項4記載のデータ演算処理装置は、請求項3記載のデータ演算処理装置において、前記絶対グループスケールファクタおよび前記ブロックスケールファクタを記憶するための第2記憶手段を備え、前記制御手段は、前記絶対グループスケールファクタおよび前記ブロックスケールファクタを前記演算データと対応付けて前記第2記憶手段に記憶し、前記記憶手段の演算データに対して再度演算を行うときは、対応する絶対グループスケールファクタおよびブロックスケールファクタを前記第2記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各計算ユニットの第1スケーリング手段に振り分け、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第1スケーリング手段に与えるようになっている。
【0056】
このような構成であれば、制御手段により、絶対グループスケールファクタ検出手段で検出された絶対グループスケールファクタおよびブロックスケールファクタ検出手段で検出されたブロックスケールファクタが、各計算ユニットの第2スケーリング手段からの演算データと対応付けられて第2記憶手段に格納される。
【0057】
そして、記憶手段の演算データに対して再度演算を行うときは、制御手段により、対応する絶対グループスケールファクタおよびブロックスケールファクタが第2記憶手段から読み出され、データブロックの各データグループごとに、データグループの演算データがそれぞれ各計算ユニットの第1スケーリング手段に振り分けられるとともに、そのデータグループの絶対グループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットの第1スケーリング手段に与えられる。
【0058】
各計算ユニットでは、第1スケーリング手段により、前回の処理において検出された絶対グループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタに基づいて、与えられた演算データに対してスケーリングが行われる。
ここで、第2記憶手段は、絶対グループスケールファクタおよびブロックスケールファクタをあらゆる手段でかつあらゆる時期に記憶するものであり、絶対グループスケールファクタおよびブロックスケールファクタをあらかじめ記憶してあるものであってもよいし、絶対グループスケールファクタおよびブロックスケールファクタをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によって絶対グループスケールファクタおよびブロックスケールファクタを記憶するようになっていてもよい。
【0059】
さらに、本発明に係る請求項5記載のデータ演算処理装置は、請求項3および4のいずれかに記載のデータ演算処理装置において、前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これを正および負のうち一方の値として出力し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域の冗長なデータのビット数を算出し、これを前記一方とは反対符号の値として出力するようになっている。
【0060】
このような構成であれば、演算手段からの演算データのガードビット領域に有効なデータがあると、スケールファクタ算出手段により、そのガードビット領域の有効なデータのビット数が算出され、これが正および負のうち一方の値として出力される。これに対し、演算手段からの演算データのガードビット領域に有効なデータがないと、スケールファクタ算出手段により、そのデータビット領域の冗長なデータのビット数が算出され、これが反対符号の値として出力される。
【0061】
さらに、本発明に係る請求項6記載のデータ演算処理装置は、請求項5記載のデータ演算処理装置において、前記演算手段は、固定小数点演算器であり、前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、データに対してビットシフトを行い、前記第2スケーリング手段は、与えられた他のスケールファクタに相当するシフト量で、前記ガードビット領域および前記データビット領域のデータに対してビットシフトを行い、前記制御手段は、前記反対符号の値となる相対グループスケールファクタに基づいて前記第2スケーリング手段によるビットシフトを行うときは、前記一方の符号の値となる相対グループスケールファクタであって一つのデータブロックについて前記第2スケーリング手段に与えたものの総和の絶対値を限度として、前記第2スケーリング手段に与える相対グループスケールファクタを調整するようになっている。
【0062】
このような構成であれば、各計算ユニットでは、第1スケーリング手段により、与えられたスケールファクタに相当するシフト量で、与えられたデータに対してビットシフトが行われ、演算手段により、第1スケーリング手段からのデータに対して固定小数点演算が行われる。そして、第2スケーリング手段により、与えられたスケールファクタに相当するシフト量で、演算手段からの演算データに対してビットシフトが行われる。
【0063】
ただし、反対符号の値となる相対グループスケールファクタに基づいて第2スケーリング手段によるビットシフトを行うときは、制御手段により、一方の符号の値となる相対グループスケールファクタであって一つのデータブロックについて第2スケーリング手段に与えたものの総和の絶対値を限度として、第2スケーリング手段に与える相対グループスケールファクタが調整される。
【0064】
ここで、第1スケーリング手段は、例えば、反対符号の値となるスケールファクタが与えられると、データに対して右シフトを行うようになっている。また、第2スケーリング手段は、例えば、反対符号の値となるスケールファクタが与えられると、データに対して右シフトを行い、一方の符号の値となるスケールファクタが与えられると、データに対して左シフトを行うようになっている。
【0065】
さらに、本発明に係る請求項7記載のデータ演算処理装置は、請求項3ないし6のいずれかに記載のデータ演算処理装置において、前記演算手段は、前記第1スケーリング手段からのデータと所定の係数との積和を演算する積和演算器である。
このような構成であれば、演算手段により、第1スケーリング手段からのデータと所定の係数との積和が演算され、積和されたデータが演算データとして出力される。
【0066】
一方、上記目的を達成するために、本発明に係る請求項8記載のデータ演算処理プログラムは、1または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理するコンピュータ実行可能なプログラムであって、前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第1次演算処理と、前記第1次演算処理の実行により得られた各演算データに対して再度演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを前記相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第2次演算処理と、前記第1次演算処理および前記第2次演算処理の実行時に検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力する絶対グループスケールファクタ出力処理とを実行可能となっており、前記第1次演算処理および前記第2次演算処理の実行により前記演算データを得ることを、前記データブロックの各データグループごとに行い、さらに、前記絶対グループスケールファクタ出力処理で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、前記第1次演算処理および前記第2次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタおよび前記ブロックスケールファクタに基づいてスケーリングを行うようになっており、一方さらに、前記演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、前記相対グループスケールファクタの検出は、前記絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正および負のうち一方の値として検出し、前記絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として検出することにより行い、前記第1次演算処理は、前記相対グループスケールファクタに基づいて前記ガードビット領域および前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部または全部を出力するようになっている。
【0067】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項1記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項9記載のデータ演算処理プログラムは、1または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データを記憶するための記憶手段を有するコンピュータに対して、前記データブロック単位でデータを処理させるプログラムであって、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第1スケーリング手段、前記第1スケーリング手段からのデータに対して演算を行う演算手段、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段、および与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第2スケーリング手段として実現される処理を前記各データグループごとに実行させるためのプログラムと、前記各データグループに対応するスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものを相対グループスケールファクタとして検出する相対グループスケールファクタ検出手段、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する絶対グループスケールファクタ検出手段、前記絶対グループスケールファクタ検出手段で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段、およびデータ処理のための制御を行う制御手段として実現される処理を実行させるためのプログラムとを備え、前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループのデータをそれぞれ前記各データグループに対応する第1スケーリング手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各データグループに対応する第2スケーリング手段に与える第1次演算処理と、前記各データグループに対応する第2スケーリング手段からの演算データをそれぞれ前記各データグループに対応する演算手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各データグループに対応する第2スケーリング手段に与える第2次演算処理と、前記第1次演算処理または前記第2次演算処理の終了時に前記各データグループに対応する第2スケーリング手段からの演算データを前記記憶手段に格納する演算データ格納処理とを実行し、前記第1次演算処理は、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各データグループに対応する第1スケーリング手段に振り分けるとともに、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各データグループに対応する第1スケーリング手段に与え、前記絶対グループスケールファクタ検出手段は、前記第1次演算処理および前記第2次演算処理の実行中に前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力し、一方さらに、前記演算手段からの演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて前記スケールファクタを正および負のうち一方の値として算出し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記スケールファクタを前記一方とは反対符号の値として算出し、前記第2スケーリング手段は、与えられた他のスケールファクタに基づいて前記ガードビット領域および前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部または全部を出力するようになっている。
【0068】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項3記載のデータ演算処理装置と同等の作用が得られる。
本発明の概要は、例えば、図1に示す通りである。本発明では、データグループごとに一つのスケールファクタを計算してこれを相対グループスケールファクタとし、各積和演算器12から出力されたデータを相対グループスケールファクタで正規化(以下、グループ正規化という。)する。相対グループスケールファクタは、絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正の値として検出し、絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて負の値として検出する。一方、相対グループスケールファクタを順次累算し、その累算結果である絶対グループスケールファクタを、グループ正規化されたデータグループと関連付けてグループスケールファクタレジスタファイル52に格納する。
【0069】
こうした一連の処理は、データブロックに含まれる他のデータグループに対しても、繰り返し適用される。一つのデータブロックの処理を行った後、複数の絶対グループスケールファクタうち最小のスケールファクタを検出してこれをブロックスケールファクタとし、データブロックと関連付けてブロックスケールファクタレジスタ56に格納する。その後、このデータブロックをブロック処理する場合、ブロックスケールファクタと絶対グループスケールファクタとが異なり、データグループ間で桁位置が合っていない可能性があるため、絶対グループスケールファクタとブロックスケールファクタとの差分に基づいて、各データグループのデータを正規化(以下、ブロック正規化という。)して桁合わせをした後、積和演算器12に入力する。
【0070】
これにより、積和演算終了後のデータは、データグループ単位で一旦グループ正規化を行ってデータメモリ100に格納され、次のブロック処理で使用する際に、ブロック正規化されるため、ブロック正規化後のデータの下位ビットに意味のない情報が含まれることがなく、ブロックフローティング方式で固定小数点演算を行うときの演算誤差が小さくなる。また、演算の結果、演算後のデータが所定ビット数を超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、オーバーフローした分も併せてスケーリングが行われるので、オーバーフローが発生しても、オーバーフローによる演算精度の低下を抑制できる。
【0071】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。図1ないし図4は、本発明に係るデータ演算処理装置の実施の形態を示す図である。
本実施の形態は、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図1に示すように、ブロックフローティング方式で固定小数点演算を行う場合について適用したものであり、第1の従来例と異なるのは、第1シフタ24を用いてオーバーフローによる演算精度の低下を抑制する点にある。
【0072】
まず、本発明に係るデータ演算処理装置の構成を図1を参照しながら説明する。図1は、本発明に係るデータ演算処理装置の構成を示すブロック図である。
本発明に係るデータ演算処理装置は、図1に示すように、データブロック単位でデータを記憶するためのデータメモリ100と、データメモリ100のデータに対して積和演算を行う演算部220と、ブロックフローティングに必要な正規化を行うための制御部310と、これらの制御を行う制御ロジック420と、アドレス生成器500とで構成されている。データメモリ100、演算部220、制御部310および制御ロジック420は、データバス110で相互にかつデータ授受可能に接続されており、データメモリ100、制御部310およびアドレス生成器500は、データアドレスバス120で相互にかつデータ授受可能に接続されている。
【0073】
データメモリ100は、図示しない外部からデータを入力し、図8に示すように、演算部220の演算対象となるデータとして、入力したデータをデータブロック単位で格納するようになっている。
データメモリ100では、図8に示すように、データが計算ユニットの数に相当する個数(この場合、k個)組合わさってデータグループとして格納され、さらに、データグループが複数組合わさってデータブロックとして格納される。すなわち、データブロックは、複数のデータグループを含んで構成され、データグループは、計算ユニットの数に相当する個数のデータを含んで構成されている。
【0074】
演算部220は、同一機能を有するk個の計算ユニットP0〜Pk-1で構成されている。各計算ユニットP0〜Pk-1には、一つのデータグループのデータがそれぞれ振り分けられ、各計算ユニットP0〜Pk-1は、データグループ単位でデータを並列処理する。
各計算ユニットP0〜Pk-1は、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第2シフタ10と、第2シフタ10からのデータに対して積和演算を行う積和演算器12と、積和演算器12からの演算データのスケールファクタを算出するユニットスケールファクタ検出器22と、与えられたスケールファクタに基づいて積和演算器12からの演算データに対してスケーリングを行う第1シフタ24とで構成されている。ここで、積和演算器12からの演算データは、図10に示すように、2nビット(データメモリ100のデータのビット数をnとしてその2倍のビット数)を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが2nビットを超えてオーバーフローしたときのそのオーバーフロー分のデータをmビットを上限として保持するガードビット領域を有している。
【0075】
ユニットスケールファクタ検出器22は、積和演算器12からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これを負の値のスケールファクタとして出力し、積和演算器12からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域の冗長なデータのビット数を算出し、これを正の値のスケールファクタとして出力するようになっている。
【0076】
第2シフタ10は、与えられたスケールファクタに相当するシフト量で、与えられたデータに対して右シフトを行うようになっている。
第1シフタ24は、負の値のスケールファクタが与えられたときは、与えられたスケールファクタの絶対値に相当するシフト量で、積和演算器12からの演算データ(ガードビット領域およびデータビット領域のデータ)に対して右シフトを行い、正の値のスケールファクタが与えられたときは、与えられたスケールファクタの絶対値に相当するシフト量で、積和演算器12からの演算データ(ガードビット領域およびデータビット領域のデータ)に対して左シフトを行うようになっている。また、第1シフタ24からの演算データは、さらに次のブロック処理に備えるため、データメモリ100に格納されるが、データメモリ100のデータのビット数は、第1シフタ24からの演算データのそれよりも少ないため、第1シフタ24は、左シフトした演算データのうち最上位ビットを基準としてデータメモリ100のデータのビット数分を取り、それよりも下位のビットを単純に切り捨て、データメモリ100のデータのビット数の演算データを出力するようになっている。
【0077】
制御部310は、ユニットスケールファクタ検出器22で算出したスケールファクタから相対グループスケールファクタを検出する差分スケールファクタ検出器50aと、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する累算スケールファクタ検出器50bと、絶対グループスケールファクタを格納するグループスケールファクタレジスタファイル52と、絶対グループスケールファクタからブロックスケールファクタを検出するブロックスケールファクタ検出器54と、ブロックスケールファクタを格納するブロックスケールファクタレジスタ56と、絶対グループスケールファクタとブロックスケールファクタの差分を計算する桁合わせ用加算器60とで構成されている。
【0078】
差分スケールファクタ検出器50aは、各計算ユニットP0〜Pk-1のユニットスケールファクタ検出器22で算出したスケールファクタうち最小のものを相対グループスケールファクタとして検出し、制御ロジック420の制御により、検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ24に出力するようになっている。例えば、各計算ユニットP0〜Pk-1(例えば、k=3)のユニットスケールファクタ検出器22からスケールファクタとして「1」、「2」、「3」を入力した場合、そのうちの最小値である「1」をその相対グループスケールファクタとして検出する。
【0079】
累算スケールファクタ検出器50bは、差分スケールファクタ検出器50aで検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力するようになっている。
グループスケールファクタレジスタファイル52は、累算スケールファクタ検出器50bで検出した絶対グループスケールファクタをそれぞれ一時的に格納し、制御ロジック420の制御により、データメモリ100または桁合わせ用加算器60に絶対グループスケールファクタを出力するようになっている。
【0080】
ブロックスケールファクタ検出器54は、累算スケールファクタ検出器50bで検出した絶対グループスケールファクタのうち最小のものをブロックスケールファクタとして検出するようになっている。例えば、データブロックの絶対グループスケールファクタが「3」、「4」、「5」として検出された場合、そのうちの最小値である「3」をそのブロックスケールファクタとして検出する。
【0081】
ブロックスケールファクタレジスタ56は、ブロックスケールファクタ検出器54で検出したブロックスケールファクタを一時的に格納し、制御ロジック420の制御により、データメモリ100または桁合わせ用加算器60にブロックスケールファクタを出力するようになっている。
桁合わせ用加算器60は、グループスケールファクタレジスタファイル52から出力された絶対グループスケールファクタと、ブロックスケールファクタレジスタ56から出力されたブロックスケールファクタとを入力し、絶対グループスケールファクタからブロックスケールファクタを減算してその差分を計算し、制御ロジック420の制御により、その差分からなるスケールファクタを各計算ユニットP0〜Pk-1の第2シフタ10に出力するようになっている。
【0082】
制御ロジック420は、データメモリ100のデータに対して初めて演算を行うときは、第1次演算処理を実行した後、第2次演算処理を繰り返し実行するようになっている。
第1次演算処理は、データブロック単位でデータをデータメモリ100から読み出し、データブロックの各データグループごとに、データグループのデータをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分け、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ24に与える。このとき、負の値の相対グループスケールファクタであって一つのデータブロックについて第1シフタ24に与えたものの総和の絶対値を限度として、第1シフタ24に与える相対グループスケールファクタを調整する。例えば、一つのデータブロックについて第1シフタ24にこれまで与えた負の値の相対グループスケールファクタの総和が「−2」であるときは、差分スケールファクタ検出器50aで検出された相対グループスケールファクタが「3」であっても、実際に第1シフタ24に与えられるのは「2」となる。
【0083】
そして、各計算ユニットP0〜Pk-1の第1シフタ24からの演算データをデータバス110経由でデータメモリ100に格納する。
第2次演算処理は、各計算ユニットP0〜Pk-1の第1シフタ24からの演算データをそれぞれ各計算ユニットP0〜Pk-1の積和演算器12に振り分けるとともに、次のデータグループのデータをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分け、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ24に与える。このとき、負の値の相対グループスケールファクタであって一つのデータブロックについて第1シフタ24に与えたものの総和の絶対値を限度として、第1シフタ24に与える相対グループスケールファクタを調整する。
【0084】
そして、各計算ユニットP0〜Pk-1の第1シフタ24からの演算データをデータバス110経由でデータメモリ100に格納する。
また、制御ロジック420は、データメモリ100のデータに対して再度演算を行うときは、第1次演算処理を実行した後、第2次演算処理を繰り返し実行するようになっている。
【0085】
第1次演算処理は、データブロック単位で演算データをデータメモリ100から読み出し、データブロックの各データグループごとに、データグループの演算データをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分ける。これと同時に、各計算ユニットP0〜Pk-1の第2シフタ10に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル52およびブロックスケールファクタレジスタ56に格納されているときは、ブロックスケールファクタレジスタ56からブロックスケールファクタを読み出して桁合わせ用加算器60に与えるとともに、グループスケールファクタレジスタファイル52から絶対グループスケールファクタを順次読み出して桁合わせ用加算器60に与える。次いで、桁合わせ用加算器60により各絶対グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタを各計算ユニットP0〜Pk-1の第2シフタ10に与える。
【0086】
そして、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ24に与え、各計算ユニットP0〜Pk-1の第1シフタ24からの演算データをデータバス110経由でデータメモリ100に格納する。
第2次演算処理は、次のデータグループのデータをそれぞれデータバス110経由で各計算ユニットP0〜Pk-1の第2シフタ10に振り分ける。これと同時に、各計算ユニットP0〜Pk-1の第2シフタ10に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル52およびブロックスケールファクタレジスタ56に格納されているときは、ブロックスケールファクタレジスタ56からブロックスケールファクタを読み出して桁合わせ用加算器60に与えるとともに、グループスケールファクタレジスタファイル52から絶対グループスケールファクタを順次読み出して桁合わせ用加算器60に与える。次いで、桁合わせ用加算器60により各絶対グループスケールファクタとブロックスケールファクタとの差分を計算し、その差分からなるスケールファクタを各計算ユニットP0〜Pk-1の第2シフタ10に与える。次いで、第2シフタ10からのデータを積和演算器12に与えるのと同時に、各計算ユニットP0〜Pk-1の第1シフタ24からの演算データをそれぞれ各計算ユニットP0〜Pk-1の積和演算器12に振り分ける。
【0087】
そして、差分スケールファクタ検出器50aで検出した相対グループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ24に与え、各計算ユニットP0〜Pk-1の第1シフタ24からの演算データをデータバス110経由でデータメモリ100に格納する。
なお、各計算ユニットP0〜Pk-1の第2シフタ10に振り分けたデータの絶対グループスケールファクタおよびブロックスケールファクタがグループスケールファクタレジスタファイル52およびブロックスケールファクタレジスタ56に格納されていないときは、各計算ユニットP0〜Pk-1の第2シフタ10に振り分けたデータに対応する絶対グループスケールファクタおよびブロックスケールファクタをデータメモリ100から読み出し、これらをデータバス110経由でグループスケールファクタレジスタファイル52およびブロックスケールファクタレジスタ56に格納してから、上記処理を実行する。
【0088】
次に、上記実施の形態の動作を図2ないし図4を参照しながら説明する。
本例では、積和演算器12は、初回の演算を、下式(1)により行い、下式(1)により演算した結果に対する2回目以降の演算を、下式(2)により行うものとする。下式(1)において、A(k)は、係数データであり、X(n−k)は、第2シフタ10からのデータである。下式(2)において、B(l)は、係数データであり、Y(m−l)は、下式(1)により演算した結果であって第2シフタ10からのデータである。
【0089】
【数1】
【0090】
【数2】
【0091】
また、データメモリ100からのデータを8ビット、積和演算器12の出力のうちガードビット領域を8ビット、データビット領域を16ビットとする。さらに、演算部220が4つの計算ユニットから構成されるものとし、データブロックは、2つのデータグループを含んで構成され、データグループは、計算ユニットの数に相当する4つのデータを含んで構成されているものとする。また、あらかじめ定められた係数データA(0)〜A(3)、B(0),B(1)は、必要な時にはいつでも利用可能であると仮定する。これらの係数データをどのように供給するかは、本発明の本質とは直接的ではないので特に説明しないが、例えば、必要に応じてデータメモリ100から読み出すなどして各積和演算器12に与えることができる。
【0092】
まず、本発明に係るデータ演算処理装置において、下式(1)によりデータを並列処理する手順を図2を参照しながら説明する。図2は、各積和演算器12で行われる積和演算手順を示す図である。
上式(1)によりデータメモリ100のデータに対して演算を行うときは、図2に示すように、制御ロジック420により、データX(0)〜X(3)を含む1番目のデータグループに対して第1次演算処理が実行され、その後、データX(4)〜X(7)を含む2番目のデータグループに対して第2次演算処理が実行される。
【0093】
第1次演算処理では、まず、サイクル1で、データX(0)〜X(3)を含む1番目のデータグループがデータメモリ100から読み出され、データX(0)〜X(3)がそれぞれデータバス110経由で各計算ユニットP0〜P3の第2シフタ10に振り分けられる。初期状態では、データX(0)〜X(3)に対応するスケールファクタは存在しないので、制御ロジック420により、データX(0)〜X(3)がシフトされないように第2シフタ10が制御される。
【0094】
各積和演算器12では、図2の手順に従って、係数データA(0)〜A(3)とデータX(0)〜X(3)との積和演算が行われ、サイクル2からサイクル5までを経て、最初の積和演算結果である演算データY(0)〜Y(3)が得られる。これらの演算過程では、データX(0)〜X(3)は、各計算ユニットP0〜P3間をハードウェア手段を通じて転送されるものとする。
【0095】
演算データY(0)〜Y(3)は、その後、各ユニットスケールファクタ検出器22に入力され、積和演算器12からの演算データのガードビット領域に有効なデータがあると、各ユニットスケールファクタ検出器22により、そのガードビット領域の有効なデータのビット数が算出され、これが負の値のスケールファクタとして算出される。例えば、ガードビット領域のデータが「00001100」である場合は、その最下位ビットから4番目までデータが存在するため、有効なデータのビット数が「4」となり、スケールファクタは「−4」となる。これに対し、積和演算器12からの演算データのガードビット領域に有効なデータがないと、各ユニットスケールファクタ検出器22により、そのデータビット領域の冗長なデータのビット数が算出され、これが正の値のスケールファクタとして算出される。例えば、ガードビット領域に有効なデータがなく、データビット領域のデータが「00011100」である場合は、その最上位ビットから「0」が3つ連続するため、冗長なデータのビット数が「3」となり、スケールファクタは「3」となる。
【0096】
各ユニットスケールファクタ検出器22で算出された複数のスケールファクタは、差分スケールファクタ検出器50aに入力され、差分スケールファクタ検出器50aにより、入力された複数のスケールファクタのうち最小のものが相対グループスケールファクタとして検出される。次いで、相対グループスケールファクタは、累算スケールファクタ検出器50bに入力され、累算スケールファクタ検出器50bにより、相対グループスケールファクタがその検出順に累算され、その累算結果が絶対グループスケールファクタとして出力される。
【0097】
また、相対グループスケールファクタは、各計算ユニットP0〜P3の第1シフタ24に入力される。これと同時に、各積和演算器12からの演算データY(0)〜Y(3)も第1シフタ24に入力される。そして、第1シフタ24により、相対グループスケールファクタに相当するシフト量で、24ビットの演算データY(0)〜Y(3)に対してグループ正規化が行われる。図3に、実際の数値を用いた演算結果の一例を示す。
【0098】
これらのグループ正規化された演算データは、さらに次のブロック処理に備えるため、データメモリ100に格納される。データメモリ100のデータのビット数は演算データよりも少ないため、各演算データは、下位の8ビットが単純に切り捨てられる。第1シフタ24からの演算データY(0)〜Y(3)は、図3の中でデータメモリ100の入力欄に示されている。また、演算データY(0)〜Y(3)をデータメモリ100に格納する間に、絶対グループスケールファクタがグループスケールファクタレジスタファイル52に入力される。絶対グループスケールファクタは、グループスケールファクタレジスタファイル52内に、対応するデータグループと関連付けられて格納される。例えば、データメモリ100に格納する場合、データグループは、ある一つのメモリアドレスを取り、そのデータグループのすべてのデータは、一つのメモリアドレスで同時にアクセスされるものとして、演算データをデータメモリ100に格納するのに用いられるのと同じアドレスで特定されるレジスタに格納する。あるいは、図4に示すように、データグループが格納されているデータメモリ100のアドレスと、絶対グループスケールファクタが格納されているグループスケールファクタレジスタファイル52のアドレスとの対応表を、データメモリ100の一部に作成してこれらのアドレスを管理してもよい。
【0099】
さらに、絶対グループスケールファクタは、ブロックスケールファクタ検出器54に入力され、ブロックスケールファクタ検出器54により、複数の絶対グループスケールファクタのうち最小のものがブロックスケールファクタとして検出される。あるデータブロックの最初のデータグループの演算が終わった時点では、今演算されたばかりの絶対グループスケールファクタ、すなわち、図3の例では「2」が初期値として、ブロックスケールファクタ検出器54内のレジスタ(図1には示されていない)に格納される。
【0100】
次に、第2次演算処理では、図2に示すように、まず、サイクル6で、データX(4)〜X(7)を含む2番目のデータグループがデータメモリ100から読み出され、データX(4)〜X(7)がそれぞれデータバス110経由で各計算ユニットP0〜P3の第2シフタ10に振り分けられる。次いで、第2シフタ10からのデータが積和演算器12に与えられるのと同時に、各計算ユニットP0〜Pk-1の第1シフタ24からの演算データY(0)〜Y(3)がそれぞれ各計算ユニットP0〜Pk-1の積和演算器12に振り分けられる。
【0101】
各積和演算器12では、図2の手順に従って、演算データY(0)〜Y(3)とデータX(4)〜X(7)との積和演算が行われ、サイクル7からサイクル10までを経て、次の積和演算結果である演算データY(4)〜Y(7)が得られる。これらの演算過程では、データX(4)〜X(7)は、各計算ユニットP0〜P3間をハードウェア手段を通じて転送されるものとする。
【0102】
演算データY(4)〜Y(7)は、その後、各ユニットスケールファクタ検出器22に入力され、積和演算器12からの演算データのガードビット領域に有効なデータがあると、各ユニットスケールファクタ検出器22により、そのガードビット領域の有効なデータのビット数が算出され、これが負の値のスケールファクタとして算出される。これに対し、積和演算器12からの演算データのガードビット領域に有効なデータがないと、各ユニットスケールファクタ検出器22により、そのデータビット領域の冗長なデータのビット数が算出され、これが正の値のスケールファクタとして算出される。
【0103】
各ユニットスケールファクタ検出器22で算出された複数のスケールファクタは、差分スケールファクタ検出器50aに入力され、差分スケールファクタ検出器50aにより、入力された複数のスケールファクタのうち最小のものが相対グループスケールファクタとして検出される。次いで、相対グループスケールファクタは、累算スケールファクタ検出器50bに入力され、累算スケールファクタ検出器50bにより、相対グループスケールファクタがその検出順に累算され、その累算結果が絶対グループスケールファクタとして出力される。
【0104】
また、相対グループスケールファクタは、各計算ユニットP0〜P3の第1シフタ24に入力される。これと同時に、各積和演算器12からの演算データY(4)〜Y(7)も第1シフタ24に入力される。そして、第1シフタ24により、相対グループスケールファクタに相当するシフト量で、24ビットの演算データY(4)〜Y(7)に対してグループ正規化が行われる。図3に、実際の数値を用いた演算結果の一例を示す。
【0105】
演算データY(4)〜Y(7)に対して計算される絶対グループスケールファクタは、今回はブロックスケールファクタ検出器54内のレジスタに保持されている内容と比較され、小さい方の値がブロックスケールファクタとして選択される。図3の例では、演算データY(4)〜Y(7)から絶対グループスケールファクタ「1」が検出される。この場合、ブロックスケールファクタ検出器54内のレジスタに保持されている「2」よりも「1」の方が小さいので、ブロックスケールファクタ検出器54内のレジスタの内容は更新される。
【0106】
この例においては、この時点で、一つのデータブロックのすべてのデータに関する演算が完了したため、ブロックスケールファクタは、ブロックスケールファクタ検出器54内のレジスタの現在の値、すなわち「1」に確定される。本例から容易に類推されるように、例えこの後に演算を行うべき複数のデータグループがあったとしても、2番目のデータグループに適用された上述の処理を繰り返すことが可能である。
【0107】
次に、本発明に係るデータ演算処理装置において、上式(1)により演算した演算データを、下式(2)により再度並列処理する手順を説明する。演算を始める前に、ブロックスケールファクタ検出器54内のレジスタの内容をブロックスケールファクタレジスタ56に転送しておく。
上式(2)によりデータメモリ100の演算データに対して再度演算を行うときは、図2に示すように、制御ロジック420により、演算データY(0)〜Y(3)を含む1番目のデータグループに対して第1次演算処理が実行され、その後、演算データY(4)〜Y(7)を含む2番目のデータグループに対して第2次演算処理が実行される。
【0108】
第1次演算処理では、まず、演算データY(0)〜Y(3)を含む1番目のデータグループがデータメモリ100から読み出され、演算データY(0)〜Y(3)がそれぞれデータバス110経由で各計算ユニットP0〜P3の第2シフタ10に振り分けられる。これと同時に、対応する絶対グループスケールファクタ、すなわち、本例においては「2」が、データアドレスバス120経由で与えられたアドレス情報により選択され、グループスケールファクタレジスタファイル52から読み出される。各第2シフタ10における右シフト量は、現在の絶対グループスケールファクタとブロックスケールファクタの差分、すなわち、本例においては、2−1=1として与えられる。演算データY(0)〜Y(3)に対して、この後適用される演算処理は、下式(1)について説明した演算処理とまったく同様である。
【0109】
次に、第2次演算処理では、まず、演算データY(4)〜Y(7)を含む2番目のデータグループがデータメモリ100から読み出され、演算データY(4)〜Y(7)がそれぞれデータバス110経由で各計算ユニットP0〜P3の第2シフタ10に振り分けられる。このデータグループに対する絶対グループスケールファクタは、図3に示すように、「1」である。結果として、このデータグループのすべての演算データは、1−1=0、すなわち第2シフタ10でシフトされずに出力される。
【0110】
この段階で、すべての演算データY(0)〜Y(7)が、データブロックの最大値の小数点位置に桁合わせされ、その結果、後続の積和演算において、固定小数点演算を行うことが可能となる。
このようにして、本実施の形態では、差分スケールファクタ検出器50aは、積和演算器12からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これを負の値のスケールファクタとして第1シフタ24に出力し、積和演算器12からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域の冗長なデータのビット数を算出し、これを正の値のスケールファクタとして第1シフタ24に出力し、第1シフタ24は、負の値のスケールファクタが与えられたときは、与えられたスケールファクタの絶対値に相当するシフト量で、積和演算器12からの演算データに対して右シフトを行い、正の値のスケールファクタが与えられたときは、与えられたスケールファクタの絶対値に相当するシフト量で、積和演算器12からの演算データに対して左シフトを行い、またさらに、演算データに対して再度演算を行うときは、その演算の前に、第2シフタ10により、データグループの各演算データに対してそのデータグループの絶対グループスケールファクタおよびブロックスケールファクタに基づいて右シフトを行うようになっている。
【0111】
これにより、第1次演算処理および第2次演算処理における演算の結果、演算後のデータが2nビットを超えてオーバーフローすると、オーバーフローした分がガードビット領域に格納されることとなるが、オーバーフローした分も併せて右シフトが行われるので、オーバーフローによる演算精度の低下を抑制できる。また、第1次演算処理および第2次演算処理における演算の結果、データビット領域の有効なデータが2nビットを下回っても、データビット領域のデータに対して左シフトが行われるので、桁落ちによる演算精度の低下を抑制することができる。したがって、従来に比して、ブロックフローティング方式において、演算精度の向上を図ることができる。
【0112】
上記実施の形態において、データメモリ100は、請求項3、4または9記載の記憶手段に対応し、グループスケールファクタレジスタファイル52およびブロックスケールファクタレジスタ56は、請求項4記載の第2記憶手段に対応し、第2シフタ10は、請求項3、4、6、7または9記載の第1スケーリング手段に対応している。また、積和演算器12は、請求項3、5ないし7または9記載の演算手段に対応し、ユニットスケールファクタ検出器22は、請求項3、5または9記載のスケールファクタ算出手段に対応し、第1シフタ24は、請求項3、6または9記載の第2スケーリング手段に対応している。
【0113】
また、上記実施の形態において、差分スケールファクタ検出器50aは、請求項3または9記載の相対グループスケールファクタ検出手段に対応し、累算スケールファクタ検出器50bは、請求項3または9記載の絶対グループスケールファクタ検出手段に対応し、ブロックスケールファクタ検出器54は、請求項3または9記載のブロックスケールファクタ検出手段に対応している。また、制御ロジック420は、請求項3、4、6または9記載の制御手段に対応している。
【0114】
なお、上記実施の形態においては、各計算ユニットP0〜Pk-1の第2シフタ10と積和演算器12との相互間で、ハードウェア手段を通じてデータを転送することについて説明したが、具体的には、図5に示す構成を採用することができる。図5は、各計算ユニットP0〜Pk-1の第2シフタ10と積和演算器12との相互間でデータを転送するための詳細な構成を示すブロック図である。
【0115】
図5において、計算ユニットP0は、第2シフタ10からのデータを保持するレジスタ11aを備えている。計算ユニットP1,P2は、前段の計算ユニットP0,P1のレジスタ11aからのデータを保持するレジスタ11aと、前段の計算ユニットP0,P1のレジスタ11aからのデータおよび第2シフタ10からのデータのいずれかを選択して積和演算器12に出力するセレクタ11bとを備えている。計算ユニットP3は、前段の計算ユニットP2のレジスタ11aからのデータおよび第2シフタ10からのデータのいずれかを選択して積和演算器12に出力するセレクタ11bを備えている。
【0116】
また、上記実施の形態においては、ユニットスケールファクタ検出器22および差分スケールファクタ検出器50aを備えて構成したが、これに限らず、例えば、図6に示す構成を採用することができる。図6は、ユニットスケールファクタ検出器22および差分スケールファクタ検出器50aの他の構成を示すブロック図である。
【0117】
図6において、各計算ユニットP0〜P4は、ユニットスケールファクタ検出器22に代えて、XORアレイ15aからなる局所ブロックフローティングユニット15で構成されている。そして、プライオリティエンコーダ21からなるグループスケールファクタ検出器51と、各計算ユニットP0〜P4の局所ブロックフローティングユニット15とグループスケールファクタ検出器51とを接続するワイヤードORバスとを備えて構成されている。
【0118】
局所ブロックフローティングユニット15は、積和演算器12からの演算データを入力し、その演算データの隣り合うビットに対して排他的論理和演算を行って出力するようになっている。例えば、4ビットの演算データを入力した場合、最上位の4番目のビットおよび3番目のビットに対して排他的論理和演算を行ったものを出力データの3番目のビットとし、同じ要領で、3番目および2番目の演算結果を出力データの2番目のビットとし、2番目および1番目の演算結果を出力データの1番目のビットとし、そして、最上位のビットを出力データの最上位のビットとして出力する。
【0119】
これにより、各計算ユニットP0〜P4の積和演算器12からの演算データのスケールファクタを算出し、それらスケールファクタから相対グループスケールファクタを算出しなくても、各計算ユニットP0〜P4の積和演算器12からの演算データから直接相対グループスケールファクタを検出することもできる。
また、上記実施の形態においては、発明の理解を容易にするために、データグループは、計算ユニットP0〜Pk-1の数に相当する個数のデータを含んで構成したが、計算ユニットP0〜Pk-1の数にかかわらず、これよりも少ない個数のデータを含んで構成してもよいし、これよりも多い個数のデータを含んで構成してもよい。
【0120】
また、上記実施の形態においては、制御ロジック420を、内部のロジックに従って各部の制御を行うように構成したが、これに限らず、制御ロジック420に代えて、CPU、RAMおよびROMをバス接続してデータ演算処理部を構成し、データ演算処理部は、CPUにより、上記の制御手順を示したプログラムをROMから読み出して実行するように構成してもよい。この場合、上記の制御手順を示したプログラムは、ROMに格納されているが、これに限らず、上記の制御手順を示したプログラムが記憶された記憶媒体から、そのプログラムをRAMに読み込んで実行するようにしてもよい。
【0121】
また、上記実施の形態においては、本発明に係るデータ演算処理装置を、データメモリ100と、演算部220と、制御部310と、制御ロジック420と、アドレス生成器500とを備えたハードウェアで構成したが、これに限らず、例えば、CPU、RAMおよびROMをバス接続して構成し、CPUにより、各部の機能を実現するための制御プログラムをROMから読み出して実行するように、一部または全部をソフトウェアで構成してもよい。この場合も、制御プログラムは、ROMに格納されているが、これに限らず、制御プログラムが記憶された記憶媒体から、その制御プログラムをRAMに読み込んで実行するようにしてもよい。
【0122】
ここで、記憶媒体とは、RAM、ROM等の半導体記憶媒体、FD、HD等の磁気記憶型記憶媒体、CD、CDV、LD、DVD等の光学的読取方式記憶媒体、MO等の磁気記憶型/光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【0123】
また、上記実施の形態においては、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図1に示すように、ブロックフローティング方式で固定小数点演算を行う場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。
【0124】
【発明の効果】
以上説明したように、本発明に係る請求項1または2記載のデータ演算処理装置によれば、第1次演算処理および第2次演算処理においてオーバーフローが発生しても、オーバフローによる演算精度の低下を抑制することができる。また、第1次演算処理および第2次演算処理における演算の結果、データビット領域の有効なデータが所定ビット数を下回っても、桁落ちによる演算精度の低下を抑制することができる。したがって、従来に比して、ブロックフローティング方式において、演算精度の向上を図ることができるという効果が得られる。
【0125】
さらに、本発明に係る請求項3ないし7記載のデータ演算処理装置によれば、第1次演算処理および第2次演算処理においてオーバーフローが発生しても、オーバフローによる演算精度の低下を抑制することができる。また、第1次演算処理および第2次演算処理における演算の結果、データビット領域の有効なデータが所定ビット数を下回っても、桁落ちによる演算精度の低下を抑制することができる。したがって、従来に比して、ブロックフローティング方式において、演算精度の向上を図ることができるという効果が得られる。
【0126】
一方、本発明に係る請求項8記載のデータ演算処理プログラムによれば、請求項1記載のデータ演算処理装置と同等の効果が得られる。
さらに、本発明に係る請求項9記載のデータ演算処理プログラムによれば、請求項3記載のデータ演算処理装置と同等の効果が得られる。
【図面の簡単な説明】
【図1】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図2】各積和演算器12で行われる積和演算手順を示す図である。
【図3】本発明を数値例に適用した場合の演算過程を説明するための図である。
【図4】データグループと絶対グループスケールファクタを関連付けて格納する方法の一例を示す図である。
【図5】各計算ユニットP0〜Pk-1の第2シフタ10と積和演算器12との相互間でデータを転送するための詳細な構成を示すブロック図である。
【図6】ユニットスケールファクタ検出器22および差分スケールファクタ検出器50aの他の構成を示すブロック図である。
【図7】従来のデータ演算処理装置の構成を示すブロック図である。
【図8】データメモリ100における演算単位となるデータのデータ構造を示す図である。
【図9】従来のデータ演算処理装置の構成を示すブロック図である。
【図10】積和演算器12からの演算データのデータ構造を示す図である。
【符号の説明】
10 第2シフタ
12 積和演算器
14,18,22 ユニットスケールファクタ検出器
16,20,24 第1シフタ
50,51 グループスケールファクタ検出器
50a 差分スケールファクタ検出器
50b 累算スケールファクタ検出器
52 グループスケールファクタレジスタファイル
54 ブロックスケールファクタ検出器
56 ブロックスケールファクタレジスタ
60 桁合わせ用加算器
100 データメモリ
110 データバス
120 アドレスバス
200〜220 演算部
300,310 制御部
400〜420 制御ロジック
500 アドレス生成器
110 データバス
120 データアドレスバス
11a レジスタ
11b セレクタ
15a XORアレイ
15 局所ブロックフローティングユニット
21 プライオリティエンコーダ
Claims (9)
- 1又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理する装置であって、
前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第1次演算処理と、
前記第1次演算処理の実行により得られた各演算データに対して再度演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを前記相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第2次演算処理と、
前記第1次演算処理及び前記第2次演算処理の実行時に検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力する絶対グループスケールファクタ出力処理とを実行可能となっており、
前記第1次演算処理及び前記第2次演算処理の実行により前記演算データを得ることを、前記データブロックの各データグループごとに行い、さらに、前記絶対グループスケールファクタ出力処理で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、
前記第1次演算処理及び前記第2次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタ及び前記ブロックスケールファクタに基づいてスケーリングを行うようになっており、
一方さらに、前記演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、
前記相対グループスケールファクタの検出は、前記絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正及び負のうち一方の値として検出し、前記絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として検出することにより行い、
前記第1次演算処理は、前記相対グループスケールファクタに基づいて前記ガードビット領域及び前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部又は全部を出力するようになっていることを特徴とするデータ演算処理装置。 - 請求項1において、
前記第1次演算処理及び前記第2次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分に基づいてスケーリングを行うようになっていることを特徴とするデータ演算処理装置。 - 複数の計算ユニットを備え、1又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理する装置であって、
前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第1スケーリング手段と、前記第1スケーリング手段からのデータに対して演算を行う演算手段と、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段と、与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第2スケーリング手段とを有し、
さらに、データを記憶するための記憶手段と、前記各計算ユニットのスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものを相対グループスケールファクタとして検出する相対グループスケールファクタ検出手段と、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する絶対グループスケールファクタ検出手段と、前記絶対グループスケールファクタ検出手段で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段と、データ処理のための制御を行う制御手段とを備え、
前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループのデータをそれぞれ前記各計算ユニットの第1スケーリング手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各計算ユニットの第2スケーリング手段に与える第1次演算処理と、
前記各計算ユニットの第2スケーリング手段からの演算データをそれぞれ前記各計算ユニットの演算手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各計算ユニットの第2スケーリング手段に与える第2次演算処理と、
前記第1次演算処理又は前記第2次演算処理の終了時に前記各計算ユニットの第2スケーリング手段からの演算データを前記記憶手段に格納する演算データ格納処理とを実行し、
前記第1次演算処理は、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各計算ユニットの第1スケーリング手段に振り分けるとともに、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第1スケーリング手段に与え、
前記絶対グループスケールファクタ検出手段は、前記第1次演算処理及び前記第2次演算処理の実行時に前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力し、
一方さらに、前記演算手段からの演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、
前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正及び負のうち一方の値として前記スケールファクタを算出し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として前記スケールファクタを算出し、
前記第2スケーリング手段は、与えられた他のスケールファクタに基づいて前記ガードビット領域及び前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部又は全部を出力するようになっていることを特徴とするデータ演算処理装置。 - 請求項3において、
前記絶対グループスケールファクタ及び前記ブロックスケールファクタを記憶するための第2記憶手段を備え、
前記制御手段は、前記絶対グループスケールファクタ及び前記ブロックスケールファクタを前記演算データと対応付けて前記第2記憶手段に記憶し、
前記記憶手段の演算データに対して再度演算を行うときは、対応する絶対グループスケールファクタ及びブロックスケールファクタを前記第2記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各計算ユニットの第1スケーリング手段に振り分け、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第1スケーリング手段に与えるようになっていることを特徴とするデータ演算処理装置。 - 請求項3及び4のいずれかにおいて、
前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域の有効なデータのビット数を算出し、これを正及び負のうち一方の値として出力し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域の冗長なデータのビット数を算出し、これを前記一方とは反対符号の値として出力するようになっていることを特徴とするデータ演算処理装置。 - 請求項5において、
前記演算手段は、固定小数点演算器であり、
前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、データに対してビットシフトを行い、
前記第2スケーリング手段は、与えられた他のスケールファクタに相当するシフト量で、前記ガードビット領域及び前記データビット領域のデータに対してビットシフトを行い、
前記制御手段は、前記反対符号の値となる相対グループスケールファクタに基づいて前記第2スケーリング手段によるビットシフトを行うときは、前記一方の符号の値となる相対グループスケールファクタであって一つのデータブロックについて前記第2スケーリング手段に与えたものの総和の絶対値を限度として、前記第2スケーリング手段に与える相対グループスケールファクタを調整するようになっていることを特徴とするデータ演算処理装置。 - 請求項3乃至6のいずれかにおいて、
前記演算手段は、前記第1スケーリング手段からのデータと所定の係数との積和を演算する積和演算器であることを特徴とするデータ演算処理装置。 - 1又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロック単位でデータを処理するコンピュータ実行可能なプログラムであって、
前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第1次演算処理と、
前記第1次演算処理の実行により得られた各演算データに対して再度演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタを前記相対グループスケールファクタとして検出し、検出した相対グループスケールファクタに基づいて前記各演算データに対してスケーリングを行う第2次演算処理と、
前記第1次演算処理及び前記第2次演算処理の実行時に検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力する絶対グループスケールファクタ出力処理とを実行可能となっており、
前記第1次演算処理及び前記第2次演算処理の実行により前記演算データを得ることを、前記データブロックの各データグループごとに行い、さらに、前記絶対グループスケールファクタ出力処理で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、
前記第1次演算処理及び前記第2次演算処理の実行により得られた演算データに対して再度演算を行うときは、その演算の前に、前記データグループの各演算データに対して当該データグループの絶対グループスケールファクタ及び前記ブロックスケールファクタに基づいてスケーリングを行うようになっており、
一方さらに、前記演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、
前記相対グループスケールファクタの検出は、前記絶対値が最大となる演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて正及び負のうち一方の値として検出し、前記絶対値が最大となる演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記一方とは反対符号の値として検出することにより行い、
前記第1次演算処理は、前記相対グループスケールファクタに基づいて前記ガードビット領域及び前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部又は全部を出力するようになっていることを特徴とするデータ演算処理プログラム。 - 1又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データを記憶するための記憶手段を有するコンピュータに対して、前記データブロック単位でデータを処理させるプログラムであって、
与えられたスケールファクタに基づいてデータに対してスケーリングを行う第1スケーリング手段、前記第1スケーリング手段からのデータに対して演算を行う演算手段、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段、及び与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第2スケーリング手段として実現される処理を前記各データグループごとに実行させるためのプログラムと、
前記各データグループに対応するスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものを相対グループスケールファクタとして検出する相対グループスケールファクタ検出手段、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを累算して絶対グループスケールファクタを出力する絶対グループスケールファクタ検出手段、前記絶対グループスケールファクタ検出手段で出力した絶対グループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段、及びデータ処理のための制御を行う制御手段として実現される処理を実行させるためのプログラムとを備え、
前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、そのデータグループのデータをそれぞれ前記各データグループに対応する第1スケーリング手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各データグループに対応する第2スケーリング手段に与える第1次演算処理と、
前記各データグループに対応する第2スケーリング手段からの演算データをそれぞれ前記各データグループに対応する演算手段に振り分け、前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタを前記各データグループに対応する第2スケーリング手段に与える第2次演算処理と、
前記第1次演算処理又は前記第2次演算処理の終了時に前記各データグループに対応する第2スケーリング手段からの演算データを前記記憶手段に格納する演算データ格納処理とを実行し、
前記第1次演算処理は、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、そのデータグループの演算データをそれぞれ前記各データグループに対応する第1スケーリング手段に振り分けるとともに、前記データグループの絶対グループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各データグループに対応する第1スケーリング手段に与え、
前記絶対グループスケールファクタ検出手段は、前記第1次演算処理及び前記第2次演算処理の実行中に前記相対グループスケールファクタ検出手段で検出した相対グループスケールファクタをその検出順に累算し、その累算結果を、その検出に係るデータグループの絶対グループスケールファクタとして出力し、
一方さらに、前記演算手段からの演算データは、所定ビット数を上限として演算後のデータを保持するデータビット領域に加え、演算後のデータが前記所定ビット数を超えてオーバーフローしたときのそのオーバーフロー分のデータを保持するガードビット領域を有し、
前記スケールファクタ算出手段は、前記演算手段からの演算データのガードビット領域に有効なデータがあるときは、そのガードビット領域のデータ量に応じて前記スケールファクタを正及び負のうち一方の値として算出し、前記演算手段からの演算データのガードビット領域に有効なデータがないときは、そのデータビット領域のデータ量に応じて前記スケールファクタを前記一方とは反対符号の値として算出し、
前記第2スケーリング手段は、与えられた他のスケールファクタに基づいて前記ガードビット領域及び前記データビット領域のデータに対してスケーリングを行い、スケーリングした演算データのうち前記データビット領域のものの一部又は全部を出力するようになっていることを特徴とするデータ演算処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001125248A JP3736745B2 (ja) | 2001-04-24 | 2001-04-24 | データ演算処理装置及びデータ演算処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001125248A JP3736745B2 (ja) | 2001-04-24 | 2001-04-24 | データ演算処理装置及びデータ演算処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002318792A JP2002318792A (ja) | 2002-10-31 |
JP3736745B2 true JP3736745B2 (ja) | 2006-01-18 |
Family
ID=18974499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001125248A Expired - Fee Related JP3736745B2 (ja) | 2001-04-24 | 2001-04-24 | データ演算処理装置及びデータ演算処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3736745B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2454201A (en) * | 2007-10-30 | 2009-05-06 | Advanced Risc Mach Ltd | Combined Magnitude Detection and Arithmetic Operation |
CN102378960B (zh) * | 2010-06-22 | 2014-07-30 | 日本电气株式会社 | 半导体集成电路和指数计算方法 |
WO2014030257A1 (ja) * | 2012-08-24 | 2014-02-27 | 富士通株式会社 | 演算処理装置および演算処理方法 |
-
2001
- 2001-04-24 JP JP2001125248A patent/JP3736745B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002318792A (ja) | 2002-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3244506B2 (ja) | 小型乗算器 | |
JP3736741B2 (ja) | データ演算処理装置 | |
WO2007096982A1 (ja) | 演算処理装置および演算処理方法 | |
JPH06250823A (ja) | ポピュレーション・カウントの計算装置 | |
JP3736745B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
KR101007259B1 (ko) | 패리티 생성 회로, 계수 회로 및 계수 방법 | |
US20140059106A1 (en) | Arithmetic circuit for performing division based on restoring division | |
JP3613466B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
CN113485751A (zh) | 执行伽罗瓦域乘法的方法、运算单元和电子装置 | |
JP3773033B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
US20100030836A1 (en) | Adder, Synthesis Device Thereof, Synthesis Method, Synthesis Program, and Synthesis Program Storage Medium | |
JP3659408B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
KR100309520B1 (ko) | 라운드오프기능을갖는승산방법및승산회로 | |
WO2023189191A1 (ja) | 固定小数点積和演算装置 | |
JP3675111B2 (ja) | 3入力比較器 | |
JPH08123664A (ja) | 絶対値計算方法および回路 | |
JP2009245407A (ja) | 複素数の積和演算装置および積和演算方法 | |
CN112732223B (zh) | 半精度浮点数除法器数据处理方法及*** | |
JP2010049611A (ja) | Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ | |
JP2009267606A (ja) | 演算器 | |
JPH0637592A (ja) | ディジタルフィルタ設計法 | |
JP3482102B2 (ja) | 絶対値距離演算回路 | |
US20130262549A1 (en) | Arithmetic circuit and arithmetic method | |
JP3522167B2 (ja) | 演算処理回路及び演算処理方法 | |
JPH06243194A (ja) | 論理回路の自動設計方法およびその装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040322 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050929 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20051004 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051020 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081104 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091104 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091104 Year of fee payment: 4 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101104 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101104 Year of fee payment: 5 |
|
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101104 Year of fee payment: 5 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101104 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101104 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111104 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111104 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121104 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121104 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131104 Year of fee payment: 8 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
LAPS | Cancellation because of no payment of annual fees |