(57)【特許請求の範囲】
【請求項１】
１又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタ及び前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、
複数のデータブロックを用いた加算又は減算を行うときは、その演算前にスケール補正処理を行うようになっており、
前記スケール補正処理は、前記複数のデータブロックのブロックスケールファクタのうち絶対値が最大のデータを含むデータブロックのものを共通ブロックスケールファクタとして選択し、
前記データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記共通ブロックスケールファクタとの差分からなるスケールファクタに基づいて、当該データグループの各データに対してスケーリングを行うようになっていることを特徴とするデータ演算処理装置。
【請求項２】
複数の計算ユニットを備え、１又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタ及び前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、
前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行うスケーリング手段と、前記スケーリング手段からのデータに対して加算又は減算を行う演算手段とを有し、
さらに、データを記憶するための記憶手段と、データ処理のための制御を行う制御手段とを備え、
前記制御手段は、複数のデータブロックを用いた加算又は減算を行うときは、その演算前にスケール補正処理を行うようになっており、
前記スケール補正処理は、
前記各データブロックのブロックスケールファクタを前記記憶手段から読み出し、読み出したブロックスケールファクタのうち絶対値が最大のデータを含むデータブロックのものを共通ブロックスケールファクタとして選択し、
前記各データブロックの同一順位のデータグループについて、前記各データブロックごとに、その該当データグループのグループスケールファクタと前記共通ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、その該当データグループの各データを前記記憶手段から読み出し、読み出したデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの演算手段に入力し、すべての該当データグループについて前記演算手段への入力が完了するのを待って前記演算手段による加算又は減算を行い、
前記同一順位のデータグループに対して行うこれら一連の処理を、すべてのデータグループに対して行うようになっていることを特徴とするデータ演算処理装置。
【請求項３】
請求項２において、
前記スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっていることを特徴とするデータ演算処理装置。
【請求項４】
請求項２において、
前記スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっていることを特徴とするデータ演算処理装置。
【請求項５】
コンピュータからなる請求項１記載のデータ演算処理装置に実行させるためのプログラムであって、
複数のデータブロックを用いた加算又は減算を行うときは、その演算前にスケール補正処理を行うという処理を実行させるためのプログラムであり、
前記スケール補正処理は、前記複数のデータブロックのブロックスケールファクタのうち絶対値が最大のデータを含むデータブロックのものを共通ブロックスケールファクタとして選択し、
前記データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記共通ブロックスケールファクタとの差分からなるスケールファクタに基づいて、当該データグループの各データに対してスケーリングを行うようになっていることを特徴とするデータ演算処理プログラム。
【請求項６】
コンピュータからなる請求項２記載のデータ演算処理装置における前記制御手段に実行させるためのプログラムであって、
複数のデータブロックを用いた加算又は減算を行うときは、その演算前にスケール補正処理を行うという処理を実行させるためのプログラムであり、
前記スケール補正処理は、
前記各データブロックのブロックスケールファクタを前記記憶手段から読み出し、読み出したブロックスケールファクタのうち絶対値が最大のデータを含むデータブロックのものを共通ブロックスケールファクタとして選択し、
前記各データブロックの同一順位のデータグループについて、前記各データブロックごとに、その該当データグループのグループスケールファクタと前記共通ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、その該当データグループの各データを前記記憶手段から読み出し、読み出したデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの演算手段に入力し、すべての該当データグループについて前記演算手段への入力が完了するのを待って前記演算手段による加算又は減算を行い、
前記同一順位のデータグループに対して行うこれら一連の処理を、すべてのデータグループに対して行うようになっていることを特徴とするデータ演算処理プログラム。
【請求項７】
請求項６において、
前記スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっていることを特徴とするデータ演算処理プログラム。
【請求項８】
請求項６において、
前記スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっていることを特徴とするデータ演算処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データブロック単位でデータを処理する装置およびプログラムに係り、特に、ブロックフローティング方式で固定小数点演算を行うブロックフローティング型のデジタル・シグナル・プロセッサ（以下、単にＤＳＰという。）に関する。
【０００２】
【従来の技術】
デジタル信号処理における数値表現方法として、固定小数点表現または浮動小数点表現がある。
浮動小数点表現では、各データが指数部と仮数部をもち、これにより、高い精度と広いダイナミックレンジが確保可能という利点がある反面、複雑で大規模なハードウェアが必要となるという問題がある。一方、固定小数点表現では、ハードウェアが簡単で回路規模も小さくてすむが、演算精度の低下が問題となる。
【０００３】
そこで、固定小数点表現における問題の対策法として提案されたのがブロックフローティングという方式である。この方式では、所定数（例えば、ｍ個）のデータを１つのデータブロックとし、データブロックに対し１個のブロックスケールファクタをもたせ、データブロックのｍ個のデータに対し共通のスケーリングを行うことにより、限られたダイナミックレンジを有効に用いて精度の劣化を抑える。
【０００４】
従来、ブロックフローティング方式により演算を行う装置としては、本出願人が先に出願した国際出願（国際公開番号WO99/66423）に開示されてるデータ演算処理装置がある。図２は、ブロックフローティング方式による従来のデータ演算処理装置の構成を示すブロック図である。
従来のデータ演算処理装置は、図２に示すように、データを記憶するためのデータメモリ１００と、データメモリ１００のデータに対して積和演算を行う演算部２００と、ブロックフローティングに必要な正規化を行うための制御部３００と、これらの制御を行う制御ロジック４００と、アドレス生成器５００とで構成されている。
【０００５】
データメモリ１００は、図示しない外部からデータを入力し、演算部２００の演算対象となるデータとして格納するようになっている。データメモリ１００では、データは、図３に示すように、データブロック単位で格納される。図３は、データメモリ１００におけるデータ構造を示す図である。データメモリ１００では、図３に示すように、データが計算ユニットの数に相当する個数（この場合、ｋ個）組合わさってデータグループとして格納され、さらに、データグループが複数組合わさってデータブロックとして格納される。すなわち、データブロックは、複数のデータグループを含んで構成され、データグループは、計算ユニットの数に相当する個数のデータを含んで構成されている。
【０００６】
演算部２００は、同一機能を有するｋ個の計算ユニットＰ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〜ｒn-1と、レジスタｒ0〜ｒn-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の第１シフタ１６からの演算データをデータバス１１０経由でデータメモリ１００に格納する。
次に、上記実施の形態の動作を説明する。
【００４７】
以下、２つのデータを含んでデータグループを構成し、３つのデータグループを含んでデータブロックを構成した場合において、３つのデータブロックＡ，Ｂ，Ｃ間でデータを加算する場合を説明する。なお、データブロックＡ〜Ｃのデータは、Ａij，Ｂij，Ｃij（ｉ＝１〜３、ｊ＝１，２）と表記し、データブロックＡ〜Ｃのブロックスケールファクタは、ＡB，ＢB，ＣBと表記し、データブロックＡ〜Ｃの各グループスケールファクタは、ＡGi，ＢGi，ＣGiと表記する。本実施の形態においては、データの最大値が大きくなれば、それに対応するスケールファクタは、小さくなるものとする。
【００４８】
初めに、制御ロジック４００により、ブロックスケールファクタＡB，ＢB，ＣBがデータメモリ１００から読み出され、下式（１）により、読み出されたブロックスケールファクタＡB，ＢB，ＣBのうち絶対値が最大のデータを含むデータブロックのものが共通ブロックスケールファクタＳBとして選択される。式中、「ｍｉｎ」は、引数のなかで最小値を選択する関数である。以下、下式（５）において同じである。
【００４９】
【数１】
0003773033.tif 000002
【００５０】
次に、各データブロックＡ〜Ｃの１番目のデータグループについて加算が行われる。
具体的には、まず、制御ロジック４００により、グループスケールファクタＡG1および共通ブロックスケールファクタＳBがデータメモリ１００から読み出されてシフタ制御装置５８に出力される。シフタ制御装置５８では、それらスケールファクタを入力すると、グループスケールファクタＡG1と共通ブロックスケールファクタＳBとの差分からなるスケールファクタが各計算ユニットＰ0，Ｐ1の第２シフタ１０に与えられる。そして、制御ロジック４００により、データブロックＡの１番目のデータグループの各データＡ11，Ａ12がデータメモリ１００から読み出され、読み出されたデータＡ11，Ａ12がそれぞれ第２シフタ１０を介して各計算ユニットＰ0，Ｐ1のレジスタｒ0に入力される。したがって、データＡ11，Ａ12は、第２シフタ１０により、シフタ制御装置５８からのスケールファクタに相当するシフト量で右シフトされ、レジスタｒ0に保持される。
【００５１】
次いで、制御ロジック４００により、グループスケールファクタＢG1および共通ブロックスケールファクタＳBがデータメモリ１００から読み出されてシフタ制御装置５８に出力される。シフタ制御装置５８では、それらスケールファクタを入力すると、グループスケールファクタＢG1と共通ブロックスケールファクタＳBとの差分からなるスケールファクタが各計算ユニットＰ0，Ｐ1の第２シフタ１０に与えられる。そして、制御ロジック４００により、データブロックＢの１番目のデータグループの各データＢ11，Ｂ12がデータメモリ１００から読み出され、読み出されたデータＢ11，Ｂ12がそれぞれ第２シフタ１０を介して各計算ユニットＰ0，Ｐ1のレジスタｒ1に入力される。したがって、データＢ11，Ｂ12は、第２シフタ１０により、シフタ制御装置５８からのスケールファクタに相当するシフト量で右シフトされ、レジスタｒ1に保持される。データＢ11，Ｂ12は、この右シフトにより、データＡ11，Ａ12と桁位置が一致する。
【００５２】
次いで、制御ロジック４００により、グループスケールファクタＣG1および共通ブロックスケールファクタＳBがデータメモリ１００から読み出されてシフタ制御装置５８に出力される。シフタ制御装置５８では、それらスケールファクタを入力すると、グループスケールファクタＣG1と共通ブロックスケールファクタＳBとの差分からなるスケールファクタが各計算ユニットＰ0，Ｐ1の第２シフタ１０に与えられる。そして、制御ロジック４００により、データブロックＣの１番目のデータグループの各データＣ11，Ｃ12がデータメモリ１００から読み出され、読み出されたデータＣ11，Ｃ12がそれぞれ第２シフタ１０を介して各計算ユニットＰ0，Ｐ1のレジスタｒ2に入力される。したがって、データＣ11，Ｃ12は、第２シフタ１０により、シフタ制御装置５８からのスケールファクタに相当するシフト量で右シフトされ、レジスタｒ2に保持される。データＣ11，Ｃ12は、この右シフトにより、データＡ11，Ａ12，Ｂ11，Ｂ12と桁位置が一致する。
【００５３】
このように、１番目のデータグループの各データがレジスタｒ0〜ｒ2に格納されると、加算器１８により加算が行われる。すなわち、計算ユニットＰ0では、レジスタｒ0〜ｒ2のデータが加算され、その加算結果としてＹ11が出力され、計算ユニットＰ1では、レジスタｒ0〜ｒ2のデータが加算され、その加算結果としてＹ12が出力される。１番目のデータグループについての演算式は、下式（２）のようになる。式中、「ｓｈｉｆｔｒ」は、第１引数のデータに対して第２引数の値に相当するシフト量で右シフトを行う関数である。以下、下式（３），（４）において同じである。
【００５４】
なお、演算データＹ11，Ｙ12は、グループスケールファクタ検出器５０によりそのグループスケールファクタＹG1が検出され、第１シフタ１６により正規化された後、グループスケールファクタＹG1と対応付けられてデータメモリ１００に格納される。
【００５５】
【数２】
0003773033.tif 000003
【００５６】
次に、各データブロックＡ〜Ｃの２番目のデータグループについて加算が行われる。ここで加算対象となるのは、データＡ21，Ａ22，Ｂ21，Ｂ22，Ｃ21，Ｃ22である。これらのデータも１番目のデータグループについての処理と同じ要領で、計算ユニットＰ0では、データＡ21，Ｂ21，Ｃ21がそれぞれ正規化されて加算され、加算結果としてＹ21が出力され、計算ユニットＰ1では、データＡ22，Ｂ22，Ｃ22がそれぞれ正規化されて加算され、加算結果としてＹ22が出力される。２番目のデータグループについての演算式は、下式（３）のようになる。
【００５７】
なお、演算データＹ21，Ｙ22は、グループスケールファクタ検出器５０によりそのグループスケールファクタＹG2が検出され、第１シフタ１６により正規化された後、グループスケールファクタＹG2と対応付けられてデータメモリ１００に格納される。
【００５８】
【数３】
0003773033.tif 000004
【００５９】
次に、各データブロックＡ〜Ｃの３番目のデータグループについて加算が行われる。ここで加算対象となるのは、データＡ31，Ａ32，Ｂ31，Ｂ32，Ｃ31，Ｃ32である。これらのデータも１番目のデータグループについての処理と同じ要領で、計算ユニットＰ0では、データＡ31，Ｂ31，Ｃ31がそれぞれ正規化されて加算され、加算結果としてＹ31が出力され、計算ユニットＰ1では、データＡ32，Ｂ32，Ｃ32がそれぞれ正規化されて加算され、加算結果としてＹ32が出力される。３番目のデータグループについての演算式は、下式（４）のようになる。
【００６０】
なお、演算データＹ31，Ｙ32は、グループスケールファクタ検出器５０によりそのグループスケールファクタＹG3が検出され、第１シフタ１６により正規化された後、グループスケールファクタＹG3と対応付けられてデータメモリ１００に格納される。
【００６１】
【数４】
0003773033.tif 000005
【００６２】
データブロック間ですべてのデータの加算が終了すると、ブロックスケールファクタ検出器５４により、グループスケールファクタＹG1，ＹG2，ＹG3のうち最小のものが下式（５）によりブロックスケールファクタＹBとして検出され、検出されたブロックスケールファクタＹBがデータブロックＹと対応付けられてデータメモリ１００に格納される。
【００６３】
【数５】
0003773033.tif 000006
【００６４】
このようにして、本実施の形態では、複数のデータブロックを用いた加算を行うときは、その演算前にスケール補正処理を行うようになっており、スケール補正処理は、複数のデータブロックのブロックスケールファクタのうち絶対値が最大のデータを含むデータブロックのものを共通ブロックスケールファクタとして選択し、データブロックの各データグループごとに、そのデータグループのグループスケールファクタと共通ブロックスケールファクタとの差分からなるスケールファクタに基づいて、そのデータグループの各データに対してスケーリングを行うようになっている。
【００６５】
これにより、１つのデータについて第２シフタ１０による１回のスケーリングにより、データブロック内での正規化およびデータブロック間での正規化を同時に行うことができるので、従来に比して、演算処理を比較的簡素化することができる。
上記実施の形態において、第２シフタ１０は、請求項２、３、６または７記載のスケーリング手段に対応し、加算器１８は、請求項２または６記載の演算手段に対応し、データメモリ１００は、請求項２または６記載の記憶手段に対応し、制御ロジック４００およびシフタ制御装置５８は、請求項２または６記載の制御手段に対応している。
【００６６】
なお、上記実施の形態においては、データブロックの各データに対して右シフトを行うことにより桁位置を一致させるように構成したが、これに限らず、データブロックの各データに対して左シフトを行うことにより桁位置を一致させるように構成してもよい。
また、上記実施の形態においては、３つのデータブロック間で加算を行う例を説明したが、これに限らず、２つのデータブロック間または４つ以上のデータブロック間で加算を行うこともできる。
【００６７】
また、上記実施の形態においては、加算器１８により複数のデータブロック間で加算を行うように構成したが、これに限らず、加算器１８に代えて減算器を設け、減算器により複数のデータブロック間で減算を行うように構成してもよい。また、上記実施の形態においては、数値演算を行うのに本発明を適用した場合について説明したが、これに限らず、本発明の主旨を逸脱しない範囲で他のものにも適用可能である。
【００６８】
また、上記実施の形態においては、制御ロジック４００を、内部のロジックに従って各部の制御を行うように構成したが、これに限らず、制御ロジック４００に代えて、ＣＰＵ、ＲＡＭおよびＲＯＭをバス接続してデータ演算処理部を構成し、データ演算処理部は、ＣＰＵにより、上記の制御手順を示したプログラムをＲＯＭから読み出して実行するように構成してもよい。この場合、上記の制御手順を示したプログラムは、ＲＯＭに格納されるに限らず、上記の制御手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭに読み込んで実行するようにしてもよい。
【００６９】
また、上記実施の形態においては、本発明に係るデータ演算処理装置を、データメモリ１００と、演算部２１０と、制御部３１０と、制御ロジック４００と、アドレス生成器５００とを備えたハードウェアで構成したが、これに限らず、例えば、ＣＰＵ、ＲＡＭおよびＲＯＭをバス接続して構成し、ＣＰＵにより、各部の機能を実現するための制御プログラムをＲＯＭから読み出して実行するように、一部または全部をソフトウェアで構成してもよい。この場合も、制御プログラムは、ＲＯＭに格納されるに限らず、制御プログラムが記憶された記憶媒体から、その制御プログラムをＲＡＭに読み込んで実行するようにしてもよい。
【００７０】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【００７１】
【発明の効果】
以上説明したように、本発明に係る請求項１記載のデータ演算処理装置によれば、１つのデータについて１回のスケーリングにより、データブロック内での正規化およびデータブロック間での正規化を同時に行うことができるので、従来に比して、演算処理を比較的簡素化することができるという効果が得られる。
【００７２】
さらに、本発明に係る請求項２ないし４記載のデータ演算処理装置によれば、１つのデータについてスケーリング手段による１回のスケーリングにより、データブロック内での正規化およびデータブロック間での正規化を同時に行うことができるので、従来に比して、演算処理を比較的簡素化することができるという効果が得られる。
【００７３】
一方、本発明に係る請求項５記載のデータ演算処理プログラムによれば、請求項１記載のデータ演算処理装置と同等の効果が得られる。
さらに、本発明に係る請求項６ないし８記載のデータ演算処理プログラムによれば、請求項２記載のデータ演算処理装置と同等の効果が得られる。
【図面の簡単な説明】
【図１】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図２】ブロックフローティング方式による従来のデータ演算処理装置の構成を示すブロック図である。
【図３】データメモリ１００におけるデータ構造を示す図である。
【符号の説明】
１０                      第２シフタ
１４                      ユニットスケールファクタ検出器
１６                      第１シフタ
１８                      加算器
５０                      グループスケールファクタ検出器
５２                      グループスケールファクタレジスタファイル
５４                      ブロックスケールファクタ検出器
５６                      ブロックスケールファクタレジスタ
５８                      シフタ制御装置
６０                      桁合わせ用加算器
１００                    データメモリ
１１０                    データバス
１２０                    アドレスバス
２００，２１０            演算部
３００，３１０            制御部
４００                    制御ロジック
５００                    アドレス生成器
Ｐ0〜Ｐk-1                  計算ユニット
ｒ0〜ｒn-1                  レジスタ
【図１】
0003773033.tif 000007
【図２】
0003773033.tif 000008
【図３】
0003773033.tif 000009