(57)【特許請求の範囲】
【請求項１】
１又は複数のデータを含んでデータブロックを構成し、前記データブロックは、前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、
与えられたスケールファクタに基づいて第１データブロックの各データに対してスケーリングを行う第１スケーリング手段と、与えられたスケールファクタに基づいて第２データブロックの各データに対してスケーリングを行う第２スケーリング手段と、第３データブロック及び前記第１スケーリング手段からの第１データブロックを用いた乗算を行う乗算手段と、前記乗算手段からの乗算結果データブロック及び前記第２スケーリング手段からの第２データブロックを用いた加算を行う加算手段とを備え、
前記第１データブロック及び前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、
前記補正ブロックスケールファクタを前記第１スケーリング手段に与え、前記第１データブロックのデータを前記第１スケーリング手段に入力し、且つ、前記第２スケーリング手段にスケールファクタを与えず、前記第２データブロックのデータを前記第２スケーリング手段に入力する第１スケール補正処理と、
前記補正ブロックスケールファクタを前記第２スケーリング手段に与え、前記第２データブロックのデータを前記第２スケーリング手段に入力し、且つ、前記第１スケーリング手段にスケールファクタを与えず、前記第１データブロックのデータを前記第１スケーリング手段に入力する第２スケール補正処理とのうちいずれかを行うようになっていることを特徴とするデータ演算処理装置。
【請求項２】
請求項１において、
前記乗算結果ブロックスケールファクタ及び前記第２データブロックのブロックスケールファクタの大小関係に基づいて、前記第１スケール補正処理及び前記第２スケール補正処理のいずれかを選択的に行うようになっていることを特徴とするデータ演算処理装置。
【請求項３】
請求項２において、
前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、
前記第２スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、
前記第２データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第１スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第２データブロックのブロックスケールファクタよりも大きいときは、前記第２スケール補正処理を行うようになっていることを特徴とするデータ演算処理装置。
【請求項４】
請求項２において、
前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、
前記第２スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、
前記第２データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第２スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第２データブロックのブロックスケールファクタよりも大きいときは、前記第１スケール補正処理を行うようになっていることを特徴とするデータ演算処理装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とを備え、
前記第１データブロック及び前記第３データブロックのデータを前記記憶手段から読み出し、読み出した第１データブロックのデータを前記第１スケーリング手段に入力するとともに、読み出した第３データブロックのデータを前記乗算手段に入力し、
前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第２データブロックを構成し、構成した第２データブロックのデータを前記記憶手段に格納するとともに前記第２スケーリング手段に入力するようになっていることを特徴とするデータ演算処理装置。
【請求項６】
請求項１乃至４のいずれかにおいて、
データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とを備え、
前記第１データブロック及び前記第３データブロックのデータを前記記憶手段から読み出し、読み出した第１データブロックのデータを前記第１スケーリング手段に入力するとともに、読み出した第３データブロックのデータを前記乗算手段に入力し、
前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第２データブロックを構成し、構成した第２データブロックのデータを前記記憶手段に格納し、再演算を行うときは、前記第２データブロックのデータを前記記憶手段から読み出し、読み出した第２データブロックのデータを前記第２スケーリング手段に入力するようになっていることを特徴とするデータ演算処理装置。
【請求項７】
１又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタ及び前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、
与えられたスケールファクタに基づいて第１データブロックの各データに対してスケーリングを行う第１スケーリング手段と、与えられたスケールファクタに基づいて第２データブロックの各データに対してスケーリングを行う第２スケーリング手段と、第３データブロック及び前記第１スケーリング手段からの第１データブロックを用いた乗算を行う乗算手段と、前記乗算手段からの乗算結果データブロック及び前記第２スケーリング手段からの第２データブロックを用いた加算を行う加算手段とを備え、
前記第１データブロック及び前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、
前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第１スケーリング手段に与え、当該データグループのデータを前記第１スケーリング手段に入力し、且つ、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第２スケーリング手段に与え、当該データグループのデータを前記第２スケーリング手段に入力する第１スケール補正処理と、
前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第２スケーリング手段に与え、当該データグループのデータを前記第２スケーリング手段に入力し、且つ、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第１スケーリング手段に与え、当該データグループのデータを前記第１スケーリング手段に入力する第２スケール補正処理とのうちいずれかを行うようになっていることを特徴とするデータ演算処理装置。
【請求項８】
複数の計算ユニットを備え、１又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタ及び前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、
前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行うスケーリング手段と、前記スケーリング手段からのデータに対して乗算を行う乗算手段と、前記スケーリング手段からのデータ及び前記乗算手段からのデータに対して加算を行う加算手段とを有し、
さらに、データを記憶するための記憶手段と、データ処理のための制御を行う制御手段とを備え、
前記制御手段は、第１データブロック、第２データブロック及び第３データブロックを前記記憶手段から読み出し、前記第１データブロック及び前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第１スケール補正処理及び第２スケール補正処理のいずれかを行うようになっており、
前記第１スケール補正処理は、
前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、
前記第３データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第３データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、
前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であり、
前記第２スケール補正処理は、
前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、
前記第３データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第３データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、
前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であることを特徴とするデータ演算処理装置。
【請求項９】
コンピュータからなる請求項１記載のデータ演算処理装置に実行させるためのプログラムであって、
前記第１データブロック及び前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、
前記補正ブロックスケールファクタを前記第１スケーリング手段に与え、前記第１データブロックのデータを前記第１スケーリング手段に入力し、且つ、前記第２スケーリング手段にスケールファクタを与えず、前記第２データブロックのデータを前記第２スケーリング手段に入力する第１スケール補正処理と、
前記補正ブロックスケールファクタを前記第２スケーリング手段に与え、前記第２データブロックのデータを前記第２スケーリング手段に入力し、且つ、前記第１スケーリング手段にスケールファクタを与えず、前記第１データブロックのデータを前記第１スケーリング手段に入力する第２スケール補正処理とのうちいずれかを行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。
【請求項１０】
請求項９において、
前記乗算結果ブロックスケールファクタ及び前記第２データブロックのブロックスケールファクタの大小関係に基づいて、前記第１スケール補正処理及び前記第２スケール補正処理のいずれかを選択的に行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。
【請求項１１】
請求項１０において、
前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、
前記第２スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、
前記第２データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第１スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第２データブロックのブロックスケールファクタよりも大きいときは、前記第２スケール補正処理を行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。
【請求項１２】
請求項１０において、
前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、
前記第２スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、
前記第２データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第２スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第２データブロックのブロックスケールファクタよりも大きいときは、前記第１スケール補正処理を行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。
【請求項１３】
請求項９乃至１２のいずれかにおいて、
データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とが利用可能となっており、
前記第１データブロック及び前記第３データブロックのデータを前記記憶手段から読み出し、読み出した第１データブロックのデータを前記第１スケーリング手段に入力するとともに、読み出した第３データブロックのデータを前記乗算手段に入力し、
前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第２データブロックを構成し、構成した第２データブロックのデータを前記記憶手段に格納するとともに前記第２スケーリング手段に入力する処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。
【請求項１４】
請求項９乃至１２のいずれかにおいて、
データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とが利用可能となっており、
前記第１データブロック及び前記第３データブロックのデータを前記記憶手段から読み出し、読み出した第１データブロックのデータを前記第１スケーリング手段に入力するとともに、読み出した第３データブロックのデータを前記乗算手段に入力し、
前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第２データブロックを構成し、構成した第２データブロックのデータを前記記憶手段に格納し、再演算を行うときは、前記第２データブロックのデータを前記記憶手段から読み出し、読み出した第２データブロックのデータを前記第２スケーリング手段に入力する処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。
【請求項１５】
コンピュータからなる請求項７記載のデータ演算処理装置に実行させるためのプログラムであって、
前記第１データブロック及び前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、
前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第１スケーリング手段に与え、当該データグループのデータを前記第１スケーリング手段に入力し、且つ、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第２スケーリング手段に与え、当該データグループのデータを前記第２スケーリング手段に入力する第１スケール補正処理と、
前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第２スケーリング手段に与え、当該データグループのデータを前記第２スケーリング手段に入力し、且つ、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第１スケーリング手段に与え、当該データグループのデータを前記第１スケーリング手段に入力する第２スケール補正処理とのうちいずれかを行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。
【請求項１６】
コンピュータからなる請求項８記載のデータ演算処理装置における制御手段に実行させるためのプログラムであって、
第１データブロック、第２データブロック及び第３データブロックを前記記憶手段から読み出し、前記第１データブロック及び前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第１スケール補正処理及び第２スケール補正処理のいずれかを行う処理を実行させるためのプログラムであり、
前記第１スケール補正処理は、
前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、
前記第３データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第３データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、
前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であり、
前記第２スケール補正処理は、
前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、
前記第３データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第３データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、
前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であることを特徴とするデータ演算処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データブロック単位でデータを処理する装置およびプログラムに係り、特に、ブロックフローティング方式で固定小数点演算を行うブロックフローティング型のデジタル・シグナル・プロセッサ（以下、単にＤＳＰという。）に関する。
【０００２】
【従来の技術】
デジタル信号処理における数値表現方法として、固定小数点表現または浮動小数点表現がある。
浮動小数点表現では、各データが指数部と仮数部をもち、これにより、高い精度と広いダイナミックレンジが確保可能という利点がある反面、複雑で大規模なハードウェアが必要となるという問題がある。一方、固定小数点表現では、ハードウェアが簡単で回路規模も小さくてすむが、演算精度の低下が問題となる。
【０００３】
そこで、固定小数点表現における問題の対策法として提案されたのがブロックフローティングという方式である。この方式では、所定数（例えば、ｍ個）のデータを１つのデータブロックとし、データブロックに対し１個のブロックスケールファクタをもたせ、データブロックのｍ個のデータに対し共通のスケーリングを行うことにより、限られたダイナミックレンジを有効に用いて精度の劣化を抑える。
【０００４】
従来、ブロックフローティング方式により乗累算（複数の乗算結果を足し合わせてその総和を求める演算をいう。以下、同じ。）を行う装置としては、図７および図８に示すようなデータ演算処理装置があった。図７および図８は、ブロックフローティング方式による従来のデータ演算処理装置の構成を示すブロック図である。
【０００５】
図７において、データ演算処理装置は、データを記憶するためのデータメモリ１００と、データメモリ１００のデータに対して乗累算を行う演算部２６０と、ブロックフローティングに必要な正規化を行うための制御部３５０と、これらの制御を行う制御ロジック４００と、アドレス生成器５００とで構成されている。データメモリ１００、演算部２６０、制御部３５０および制御ロジック４００は、データバス１１０で相互にかつデータ授受可能に接続されており、データメモリ１００およびアドレス生成器５００は、データアドレスバス１２０で相互にかつデータ授受可能に接続されている。
【０００６】
データメモリ１００は、図示しない外部からデータを入力し、演算部２６０の演算対象となるデータとして格納するようになっている。データメモリ１００では、複数のデータを含んでデータブロックを構成し、データは、データブロック単位で格納される。また、データブロックには、そのデータブロックのデータのうち絶対値が最大のもののスケールファクタを代表とし、これがブロックスケールファクタとして含まれている。データブロックのすべてのデータは、ブロックスケールファクタに基づいて共通にスケーリングされている。なお、スケールファクタは、データをビットシフトするときのシフト量であり、シフトするビット数を示す。以下、グループスケールファクタおよびブロックスケールファクタについても同様である。
【０００７】
演算部２６０は、データバス１１０から与えられる２つのデータブロックを用いた乗算を行う乗算器３０と、与えられたスケールファクタに基づいて乗算器３０からの乗算結果データブロックの各データに対してスケーリングを行う第１シフタ３１と、与えられたスケールファクタに基づいて累積加算器３３からの加算結果データブロックの各データに対してスケーリングを行う第２シフタ３２と、第１シフタ３１および第２シフタ３２からそれぞれ与えられる２つのデータブロックを用いた加算を行う累積加算器３３とで構成されている。
【０００８】
第１シフタ３１は、与えられたスケールファクタに相当するシフト量で、乗算器３０からの３２ビットのデータに対して下位ビットの方向へビットシフト（以下、単に右シフトという。）を行い、その結果を４０ビットのデータとして出力するようになっている。
第２シフタ３２は、与えられたスケールファクタに相当するシフト量で、累積加算器３３からの４０ビットのデータに対して右シフトを行い、その結果を４０ビットのデータとして出力するようになっている。
【０００９】
制御部３５０は、データバス１１０から与えられる２つのブロックスケールファクタを加算する加算器７０と、加算器７０の加算結果に基づいて第１シフタ３１および第２シフタ３２を制御するシフタ制御装置７１と、累積加算器３３からの加算結果データブロックについてブロックスケールファクタを検出するブロックスケールファクタ検出器７２とで構成されている。
【００１０】
加算器７０は、乗算器３０に与えられる各データブロックのブロックスケールファクタが与えられるので、それらを加算することにより、乗算器３０からの乗算結果データブロックのブロックスケールファクタ（以下、乗算結果ブロックスケールファクタという。）を算出するようになっている。
シフタ制御装置７１は、加算器７０からの乗算結果ブロックスケールファクタと、ブロックスケールファクタ検出器７２からのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、乗算結果ブロックスケールファクタがブロックスケールファクタ検出器７２からのブロックスケールファクタよりも大きいときは、補正ブロックスケールファクタを第２シフタ３２に入力し、乗算結果ブロックスケールファクタの方が小さいときは、補正ブロックスケールファクタを第１シフタ３１に入力するようになっている。すなわち、累積加算器３３で加算を行う際には、シフタ制御装置７１、第１シフタ３１および第２シフタ３２により両者の各データの桁位置が一致するように補正が行われる。
【００１１】
制御ロジック４００は、データメモリ１００のデータに対して乗累算を行うときは、演算対象となる２つのデータブロックをデータメモリ１００から読み出し、一方のデータブロックのデータを順次乗算器３０に乗数として与えるとともに、他方のデータブロックのデータを順次乗算器３０に被乗数として与える。そして、これと同時に、読み出した各データブロックのブロックスケールファクタを加算器７０に与える。
【００１２】
こうした構成であれば、異なる複数のデータブロック間で乗累算を行う場合には、下式（１），（２）に示すように、各乗累算が前段の乗累算の完了を待って直列に行われる。下式（１），（２）において、Ａは乗数となるデータブロックを、Ｘは被乗数となるデータブロックを示し、それぞれ第１番目の要素がブロック番号を示している。また、第２番目の要素がデータブロック内のデータ番号を示しているので、Ａ[i][0]，Ｘ[i][0]，Ａ[i][1]，Ｘ[i][1]（ｉは０〜ｋの整数である。以下、同じ。）は、データブロックの各データとなる。
【００１３】
【数１】
0003659408.tif 000002
【００１４】
データＡ[i][0]，Ｘ[i][0]を用いてＹ[0]を求める第１の乗累算と、データＡ[i][1]，Ｘ[i][1]を用いてＹ[1]を求める第２の乗累算とを行うことを考える。第１の乗累算については、例えば、ｋ個のデータを含むデータブロックＡ，Ｘが与えられたとき、累積加算器３３による第１回目の演算により上式（１）の右辺第１項が演算され、累積加算器３３による第２回目の演算により上式（１）の右辺第１項および第２項が演算され、同じ要領でこれをｋ回繰り返すことにより、累積加算器３３からの加算結果データブロックが演算結果Ｙ[0]として得られる。演算結果Ｙ[0]は、演算が完了した時点でデータメモリ１００に格納される。第２の乗累算についてもこれと同様である。
【００１５】
一方、図８において、データ演算処理装置は、図７のデータ演算処理装置とほぼ同一の構成であるが、異なるのは、シフタ制御装置７１が、加算器７０からの乗算結果ブロックスケールファクタのほかデータバス１１０から与えられるブロックスケールファクタに基づいて第１シフタ３１および第２シフタ３２を制御するようになっている点、累積加算器３３に代えて加算器３４を設けた点、および第２シフタ３２への入力がデータバス１１０からとなっている点である。
【００１６】
こうした構成であれば、異なる複数のデータブロック間で乗累算を行う場合には、下式（３）〜（８）に示すように、各乗累算が前段の乗累算の完了を待つことなく並列に行われる。下式（３）〜（８）において、Ａは乗数となるデータブロックを、Ｘは被乗数となるデータブロックを示し、それぞれ第１番目の要素がブロック番号を示している。また、第２番目の要素がデータブロック内のデータ番号を示しているので、Ａ[i][0]，Ｘ[i][0]，Ａ[i][1]，Ｘ[i][1]は、データブロックの各データとなる。
【００１７】
【数２】
0003659408.tif 000003
【００１８】
データＡ[i][0]，Ｘ[i][0]を用いてＹ[0]を求める第１の乗累算と、データＡ[i][1]，Ｘ[i][1]を用いてＹ[1]を求める第２の乗累算とを行うことを考える。第１の乗累算と第２の乗累算は、並列して行われる。第１の乗累算については、例えば、ｋ個のデータを含むデータブロックＡ[0]，Ｘ[0]が与えられたとき、まず、データブロックＡ[0]，Ｘ[0]の１番目のデータを乗算器３０に与え、上式（３）のように、加算器３４による演算により第１項が演算され、その結果がＹ'''[0]としてデータメモリ１００に格納される。そして、上式（４）に示すように、同じ要領で第２の乗累算における第１項が演算され、その結果がＹ'''[1]としてデータメモリ１００に格納される。
【００１９】
次いで、第１の乗累算については、データブロックＡ[0]，Ｘ[0]の２番目のデータを乗算器３０に、Ｙ'''[0]を第２シフタ３２にそれぞれ与え、上式（５）のように、加算器３４による演算により第１項および第２項が演算され、その結果がＹ''[0]としてデータメモリ１００に格納される。そして、上式（６）に示すように、同じ要領で第２の乗累算における第１項および第２項が演算され、その結果がＹ''[1]としてデータメモリ１００に格納される。
【００２０】
その後は、同じ要領でこれを交互にｋ回繰り返すことにより、データメモリ１００には、第１の乗累算結果および第２の乗累算結果がそれぞれ格納されることになる。
なお、ブロックフローティング方式の一般的な技術については、特許協力条約に基づいて公開された国際出願（国際公開番号WO99/66423）にその詳細が開示されている。
【００２１】
【発明が解決しようとする課題】
しかしながら、上記従来のデータ演算処理装置にあってはいずれも、乗算器３０の出力側に第１シフタ３１を設けた構成となっているため、シフタとして少なくとも４０ビットのビット幅を備えなければならず、回路規模が大きい。また、乗算器３０と加算器３４との間はクリティカルパスとなっているため、第１シフタ３１を設けることにより演算負荷が増大する。
【００２２】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、ブロックフローティング方式により乗累算を行う場合において、回路規模を縮小するとともに、クリティカルパスを改善して演算負荷を低減するのに好適なデータ演算処理装置およびデータ演算処理プログラムを提供することを目的としている。
【００２３】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る請求項１記載のデータ演算処理装置は、１または複数のデータを含んでデータブロックを構成し、前記データブロックは、前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、与えられたスケールファクタに基づいて第１データブロックの各データに対してスケーリングを行う第１スケーリング手段と、与えられたスケールファクタに基づいて第２データブロックの各データに対してスケーリングを行う第２スケーリング手段と、第３データブロックおよび前記第１スケーリング手段からの第１データブロックを用いた乗算を行う乗算手段と、前記乗算手段からの乗算結果データブロックおよび前記第２スケーリング手段からの第２データブロックを用いた加算を行う加算手段とを備え、前記第１データブロックおよび前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、前記補正ブロックスケールファクタを前記第１スケーリング手段に与え、前記第１データブロックのデータを前記第１スケーリング手段に入力し、かつ、前記第２スケーリング手段にスケールファクタを与えず、前記第２データブロックのデータを前記第２スケーリング手段に入力する第１スケール補正処理と、前記補正ブロックスケールファクタを前記第２スケーリング手段に与え、前記第２データブロックのデータを前記第２スケーリング手段に入力し、かつ、前記第１スケーリング手段にスケールファクタを与えず、前記第１データブロックのデータを前記第１スケーリング手段に入力する第２スケール補正処理とのうちいずれかを行うようになっている。
【００２４】
このような構成であれば、乗算結果ブロックスケールファクタと第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタが算出され、第１スケール補正処理および第２スケール補正処理のうちいずれかが行われる。
第１スケール補正処理が行われると、補正ブロックスケールファクタが第１スケーリング手段に与えられ、第１データブロックのデータが第１スケーリング手段に入力され、第１スケーリング手段により、補正ブロックスケールファクタに基づいて、第１データブロックの各データに対してスケーリングが行われる。そして、乗算手段により、第３データブロックおよび第１スケーリング手段からの第１データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。すなわち、乗算結果データブロックの各データは、第１データブロックに対するスケーリングにより、第２データブロックのデータと桁位置が一致するように補正される。
【００２５】
一方、第２スケーリング手段にはスケールファクタが与えられることなく、第２データブロックのデータが第２スケーリング手段に入力されるので、第２データブロックの各データは、スケーリングが行われずそのまま加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよび第２スケーリング手段からの第２データブロックを用いた加算が行われる。
【００２６】
また、第２スケール補正処理が行われると、補正ブロックスケールファクタが第２スケーリング手段に与えられ、第２データブロックのデータが第２スケーリング手段に入力され、第２スケーリング手段により、補正ブロックスケールファクタに基づいて、第２データブロックの各データに対してスケーリングが行われ、その結果が加算手段に入力される。すなわち、第２データブロックの各データは、そのスケーリングにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【００２７】
一方、第１スケーリング手段にはスケールファクタが与えられることなく、第１データブロックのデータが第１スケーリング手段に入力されるので、第１データブロックの各データは、スケーリングが行われずそのまま乗算手段に入力される。そして、乗算手段により、第３データブロックおよび第１スケーリング手段からの第１データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよび第２スケーリング手段からの第２データブロックを用いた加算が行われる。
【００２８】
ここで、スケールファクタとしては、例えば、データをビットシフトするときのシフト量を挙げることができる。この場合、スケールファクタに相当するシフト量で、データに対してビットシフトを行うことによりスケーリングを行う。以下、請求項７および８記載のデータ演算処理装置、並びに請求項９、１５および１６記載のデータ演算処理プログラムにおいて同じである。
【００２９】
さらに、本発明に係る請求項２記載のデータ演算処理装置は、請求項１記載のデータ演算処理装置において、前記乗算結果ブロックスケールファクタおよび前記第２データブロックのブロックスケールファクタの大小関係に基づいて、前記第１スケール補正処理および前記第２スケール補正処理のいずれかを選択的に行うようになっている。
【００３０】
このような構成であれば、乗算結果ブロックスケールファクタおよび第２データブロックのブロックスケールファクタの大小関係に基づいて、第１スケール補正処理および第２スケール補正処理のいずれかが選択的に行われる。
さらに、本発明に係る請求項３記載のデータ演算処理装置は、請求項２記載のデータ演算処理装置において、前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、前記第２スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、前記第２データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第１スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第２データブロックのブロックスケールファクタよりも大きいときは、前記第２スケール補正処理を行うようになっている。
【００３１】
このような構成であれば、第２データブロックのブロックスケールファクタが乗算結果ブロックスケールファクタよりも大きいと、第１スケール補正処理が行われる。これに対し、乗算結果ブロックスケールファクタが第２データブロックのブロックスケールファクタよりも大きいと、第２スケール補正処理が行われる。すなわち、第２データブロックのブロックスケールファクタおよび乗算結果ブロックスケールファクタのうち値が小さいものに係るデータブロックについては、第１スケーリング手段または第２スケーリング手段により、補正ブロックスケールファクタに相当するビット量で、その各データに対して右シフトが行われる。
【００３２】
さらに、本発明に係る請求項４記載のデータ演算処理装置は、請求項２記載のデータ演算処理装置において、前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、前記第２スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、前記第２データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第２スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第２データブロックのブロックスケールファクタよりも大きいときは、前記第１スケール補正処理を行うようになっている。
【００３３】
このような構成であれば、第２データブロックのブロックスケールファクタが乗算結果ブロックスケールファクタよりも大きいと、第２スケール補正処理が行われる。これに対し、乗算結果ブロックスケールファクタが第２データブロックのブロックスケールファクタよりも大きいと、第１スケール補正処理が行われる。すなわち、第２データブロックのブロックスケールファクタおよび乗算結果ブロックスケールファクタのうち値が大きいものに係るデータブロックについては、第１スケーリング手段または第２スケーリング手段により、補正ブロックスケールファクタに相当するビット量で、その各データに対して上位ビットの方向へビットシフト（以下、単に左シフトという。）が行われる。
【００３４】
さらに、本発明に係る請求項５記載のデータ演算処理装置は、請求項１ないし４のいずれかに記載のデータ演算処理装置において、データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とを備え、前記第１データブロックおよび前記第３データブロックのデータを前記記憶手段から読み出し、読み出した第１データブロックのデータを前記第１スケーリング手段に入力するとともに、読み出した第３データブロックのデータを前記乗算手段に入力し、前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第２データブロックを構成し、構成した第２データブロックのデータを前記記憶手段に格納するとともに前記第２スケーリング手段に入力するようになっている。
【００３５】
このような構成であれば、第１データブロックおよび第３データブロックのデータが記憶手段から読み出され、読み出された第１データブロックのデータが第１スケーリング手段に入力されるとともに、読み出された第３データブロックのデータが乗算手段に入力される。加算手段により加算が行われると、ブロックスケール検出手段により、加算手段からの加算結果データブロックについてブロックスケールファクタが検出され、検出されたブロックスケールファクタを加算結果データブロックに含めて第２データブロックが構成される。そして、構成された第２データブロックのデータが記憶手段に格納されるとともに第２スケーリング手段に入力される。したがって、２度目以降の加算では、加算手段による前回までの累算結果と乗算手段からの乗算結果とが加算されることになる。
【００３６】
ここで、記憶手段は、データをあらゆる手段でかつあらゆる時期に記憶するものであり、データをあらかじめ記憶してあるものであってもよいし、データをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によってデータを記憶するようになっていてもよい。以下、請求項６および８記載のデータ演算処理装置、並びに請求項１３、１４および１６記載のデータ演算処理プログラムにおいて同じである。
【００３７】
さらに、本発明に係る請求項６記載のデータ演算処理装置は、請求項１ないし４のいずれかに記載のデータ演算処理装置において、データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とを備え、前記第１データブロックおよび前記第３データブロックのデータを前記記憶手段から読み出し、読み出した第１データブロックのデータを前記第１スケーリング手段に入力するとともに、読み出した第３データブロックのデータを前記乗算手段に入力し、前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第２データブロックを構成し、構成した第２データブロックのデータを前記記憶手段に格納し、再演算を行うときは、前記第２データブロックのデータを前記記憶手段から読み出し、読み出した第２データブロックのデータを前記第２スケーリング手段に入力するようになっている。
【００３８】
このような構成であれば、第１データブロックおよび第３データブロックのデータが記憶手段から読み出され、読み出された第１データブロックのデータが第１スケーリング手段に入力されるとともに、読み出された第３データブロックのデータが乗算手段に入力される。加算手段により加算が行われると、ブロックスケール検出手段により、加算手段からの加算結果データブロックについてブロックスケールファクタが検出され、検出されたブロックスケールファクタを加算結果データブロックに含めて第２データブロックが構成される。そして、構成された第２データブロックのデータが記憶手段に格納される。
【００３９】
再演算を行うときは、第２データブロックのデータが記憶手段から読み出され、読み出された第２データブロックのデータが第２スケーリング手段に入力される。したがって、２度目以降の加算では、記憶手段に格納されている前回までの累算結果と乗算手段からの乗算結果とが加算されることになる。
さらに、本発明に係る請求項７記載のデータ演算処理装置は、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタおよび前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、与えられたスケールファクタに基づいて第１データブロックの各データに対してスケーリングを行う第１スケーリング手段と、与えられたスケールファクタに基づいて第２データブロックの各データに対してスケーリングを行う第２スケーリング手段と、第３データブロックおよび前記第１スケーリング手段からの第１データブロックを用いた乗算を行う乗算手段と、前記乗算手段からの乗算結果データブロックおよび前記第２スケーリング手段からの第２データブロックを用いた加算を行う加算手段とを備え、前記第１データブロックおよび前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第１スケーリング手段に与え、当該データグループのデータを前記第１スケーリング手段に入力し、かつ、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第２スケーリング手段に与え、当該データグループのデータを前記第２スケーリング手段に入力する第１スケール補正処理と、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第２スケーリング手段に与え、当該データグループのデータを前記第２スケーリング手段に入力し、かつ、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第１スケーリング手段に与え、当該データグループのデータを前記第１スケーリング手段に入力する第２スケール補正処理とのうちいずれかを行うようになっている。
【００４０】
このような構成であれば、乗算結果ブロックスケールファクタと第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタが算出され、第１スケール補正処理および第２スケール補正処理のうちいずれかが行われる。
第１スケール補正処理が行われると、第１データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが第１スケーリング手段に与えられ、そのデータグループのデータが第１スケーリング手段に入力される。したがって、第１スケーリング手段により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、第１データブロックの各データに対してスケーリングが行われる。そして、乗算手段により、第３データブロックおよび第１スケーリング手段からの第１データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。すなわち、乗算結果データブロックの各データは、第１データブロックに対するスケーリングにより、第２データブロックのデータと桁位置が一致するように補正される。
【００４１】
一方、第２データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第２データブロックのブロックスケールファクタとの差分からなるスケールファクタが第２スケーリング手段に与えられ、そのデータグループのデータが第２スケーリング手段に入力される。したがって、第２スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第２データブロックの各データに対してスケーリングが行われ、加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよび第２スケーリング手段からの第２データブロックを用いた加算が行われる。
【００４２】
また、第２スケール補正処理が行われると、第２データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが第２スケーリング手段に与えられ、そのデータグループのデータが第２スケーリング手段に入力される。したがって、第２スケーリング手段により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、第２データブロックの各データに対してスケーリングが行われ、その結果が加算手段に入力される。すなわち、第２データブロックの各データは、そのスケーリングにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【００４３】
一方、第１データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第１データブロックのブロックスケールファクタとの差分からなるスケールファクタが第１スケーリング手段に与えられ、そのデータグループのデータが第１スケーリング手段に入力される。したがって、第１スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第１データブロックの各データに対してスケーリングが行われ、乗算手段に入力される。そして、乗算手段により、第３データブロックおよび第１スケーリング手段からの第１データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよび第２スケーリング手段からの第２データブロックを用いた加算が行われる。
【００４４】
さらに、本発明に係る請求項８記載のデータ演算処理装置は、複数の計算ユニットを備え、１または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタおよび前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行うスケーリング手段と、前記スケーリング手段からのデータに対して乗算を行う乗算手段と、前記スケーリング手段からのデータおよび前記乗算手段からのデータに対して加算を行う加算手段とを有し、さらに、データを記憶するための記憶手段と、データ処理のための制御を行う制御手段とを備え、前記制御手段は、第１データブロック、第２データブロックおよび第３データブロックを前記記憶手段から読み出し、前記第１データブロックおよび前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第１スケール補正処理および第２スケール補正処理のいずれかを行うようになっており、前記第１スケール補正処理は、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、前記第３データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第３データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であり、前記第２スケール補正処理は、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、前記第３データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第３データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理である。
【００４５】
このような構成であれば、制御手段により、第１データブロック、第２データブロックおよび第３データブロックが記憶手段から読み出され、乗算結果ブロックスケールファクタと第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタが算出され、算出された補正ブロックスケールファクタに基づいて第１スケール補正処理および第２スケール補正処理のいずれかが行われる。
【００４６】
第１スケール補正処理が行われると、第１データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの乗算手段に乗数として入力される。したがって、スケーリング手段により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、第１データブロックの各データに対してスケーリングが行われる。また、第３データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第３データブロックのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの乗算手段に被乗数として入力される。したがって、スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第３データブロックの各データに対してスケーリングが行われる。そして、乗算手段により、スケーリング手段からの第１データブロックおよび第３データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。すなわち、乗算結果データブロックの各データは、第１データブロックに対する補正ブロックスケールファクタによるスケーリングにより、第２データブロックのデータと桁位置が一致するように補正される。
【００４７】
一方、第２データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第２データブロックのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの加算手段に入力される。したがって、スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第２データブロックの各データに対してスケーリングが行われる。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよびスケーリング手段からの第２データブロックを用いた加算が行われる。
【００４８】
また、第２スケール補正処理が行われると、第２データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの加算手段に入力される。したがって、スケーリング手段により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、第２データブロックの各データに対してスケーリングが行われ、その結果が加算手段に入力される。すなわち、第２データブロックの各データは、補正ブロックスケールファクタによるスケーリングにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【００４９】
一方、第１データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第１データブロックのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの乗算手段に乗数として入力される。したがって、スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第１データブロックの各データに対してスケーリングが行われる。また、第３データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第３データブロックのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの乗算手段に被乗数として入力される。したがって、スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第３データブロックの各データに対してスケーリングが行われる。そして、乗算手段により、スケーリング手段からの第１データブロックおよび第３データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよびスケーリング手段からの第２データブロックを用いた加算が行われる。
【００５０】
一方、上記目的を達成するために、本発明に係る請求項９記載のデータ演算処理プログラムは、コンピュータからなる請求項１記載のデータ演算処理装置に実行させるためのプログラムであって、前記第１データブロックおよび前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、前記補正ブロックスケールファクタを前記第１スケーリング手段に与え、前記第１データブロックのデータを前記第１スケーリング手段に入力し、かつ、前記第２スケーリング手段にスケールファクタを与えず、前記第２データブロックのデータを前記第２スケーリング手段に入力する第１スケール補正処理と、前記補正ブロックスケールファクタを前記第２スケーリング手段に与え、前記第２データブロックのデータを前記第２スケーリング手段に入力し、かつ、前記第１スケーリング手段にスケールファクタを与えず、前記第１データブロックのデータを前記第１スケーリング手段に入力する第２スケール補正処理とのうちいずれかを行う処理を実行させるためのプログラムである。
【００５１】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項１記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項１０記載のデータ演算処理プログラムは、請求項９記載のデータ演算処理プログラムにおいて、前記乗算結果ブロックスケールファクタおよび前記第２データブロックのブロックスケールファクタの大小関係に基づいて、前記第１スケール補正処理および前記第２スケール補正処理のいずれかを選択的に行う処理を実行させるためのプログラムである。
【００５２】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項２記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項１１記載のデータ演算処理プログラムは、請求項１０記載のデータ演算処理プログラムにおいて、前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、前記第２スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、前記第２データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第１スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第２データブロックのブロックスケールファクタよりも大きいときは、前記第２スケール補正処理を行う処理を実行させるためのプログラムである。
【００５３】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項３記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項１２記載のデータ演算処理プログラムは、請求項１０記載のデータ演算処理プログラムにおいて、前記第１スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、前記第２スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、前記第２データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第２スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第２データブロックのブロックスケールファクタよりも大きいときは、前記第１スケール補正処理を行う処理を実行させるためのプログラムである。
【００５４】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項４記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項１３記載のデータ演算処理プログラムは、請求項９ないし１２のいずれかに記載のデータ演算処理プログラムにおいて、データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とが利用可能となっており、前記第１データブロックおよび前記第３データブロックのデータを前記記憶手段から読み出し、読み出した第１データブロックのデータを前記第１スケーリング手段に入力するとともに、読み出した第３データブロックのデータを前記乗算手段に入力し、前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第２データブロックを構成し、構成した第２データブロックのデータを前記記憶手段に格納するとともに前記第２スケーリング手段に入力する処理を実行させるためのプログラムである。
【００５５】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項５記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項１４記載のデータ演算処理プログラムは、請求項９ないし１２のいずれかに記載のデータ演算処理プログラムにおいて、データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とが利用可能となっており、前記第１データブロックおよび前記第３データブロックのデータを前記記憶手段から読み出し、読み出した第１データブロックのデータを前記第１スケーリング手段に入力するとともに、読み出した第３データブロックのデータを前記乗算手段に入力し、前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第２データブロックを構成し、構成した第２データブロックのデータを前記記憶手段に格納し、再演算を行うときは、前記第２データブロックのデータを前記記憶手段から読み出し、読み出した第２データブロックのデータを前記第２スケーリング手段に入力する処理を実行させるためのプログラムである。
【００５６】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項６記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項１５記載のデータ演算処理プログラムは、コンピュータからなる請求項７記載のデータ演算処理装置に実行させるためのプログラムであって、前記第１データブロックおよび前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第１スケーリング手段に与え、当該データグループのデータを前記第１スケーリング手段に入力し、かつ、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第２スケーリング手段に与え、当該データグループのデータを前記第２スケーリング手段に入力する第１スケール補正処理と、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第２スケーリング手段に与え、当該データグループのデータを前記第２スケーリング手段に入力し、かつ、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第１スケーリング手段に与え、当該データグループのデータを前記第１スケーリング手段に入力する第２スケール補正処理とのうちいずれかを行う処理を実行させるためのプログラムである。
【００５７】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項７記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項１６記載のデータ演算処理プログラムは、コンピュータからなる請求項８記載のデータ演算処理装置における制御手段に実行させるためのプログラムであって、第１データブロック、第２データブロックおよび第３データブロックを前記記憶手段から読み出し、前記第１データブロックおよび前記第３データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第２データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第１スケール補正処理および第２スケール補正処理のいずれかを行う処理を実行させるためのプログラムであり、前記第１スケール補正処理は、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、前記第３データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第３データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であり、前記第２スケール補正処理は、前記第１データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第１データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、前記第３データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第３データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、前記第２データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第２データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理である。
【００５８】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項７記載のデータ演算処理装置と同等の作用が得られる。
【００５９】
【発明の実施の形態】
以下、本発明の第１の実施の形態を図面を参照しながら説明する。図１および図２は、本発明に係るデータ演算処理装置の第１の実施の形態を示す図である。本実施の形態は、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図１に示すように、ブロックフローティング方式により乗累算を行う場合について適用したものである。
【００６０】
まず、本発明に係るデータ演算処理装置の構成を図１を参照しながら説明する。図１は、本発明に係るデータ演算処理装置の構成を示すブロック図である。
本発明に係るデータ演算処理装置は、図１に示すように、データを記憶するためのデータメモリ１００と、データメモリ１００のデータに対して乗累算を行う演算部２５０と、ブロックフローティングに必要な正規化を行うための制御部３５０と、これらの制御を行う制御ロジック４００と、アドレス生成器５００とで構成されている。データメモリ１００、演算部２５０、制御部３５０および制御ロジック４００は、データバス１１０で相互にかつデータ授受可能に接続されており、データメモリ１００およびアドレス生成器５００は、データアドレスバス１２０で相互にかつデータ授受可能に接続されている。
【００６１】
データメモリ１００は、図示しない外部からデータを入力し、演算部２５０の演算対象となるデータとして格納するようになっている。データメモリ１００では、複数のデータを含んでデータブロックを構成し、データは、データブロック単位で格納される。また、データブロックには、そのデータブロックのデータのうち絶対値が最大のもののスケールファクタを代表とし、これがブロックスケールファクタとして含まれている。データブロックのすべてのデータは、ブロックスケールファクタに基づいて共通にスケーリングされている。
【００６２】
演算部２５０は、データバス１１０から与えられるデータブロックの各データに対してスケーリングを行う第１シフタ３５と、データバス１１０から与えられるデータブロックおよび第１シフタ３５からのデータブロックを用いた乗算を行う乗算器３０と、与えられたスケールファクタに基づいて累積加算器３３からの加算結果データブロックの各データに対してスケーリングを行う第２シフタ３２と、第２シフタ３２からのデータブロックおよび乗算器３０からの乗算結果データブロックを用いた加算を行う累積加算器３３とで構成されている。
【００６３】
第１シフタ３５は、与えられたスケールファクタに相当するシフト量で、データバス１１０からの１６ビットのデータに対して右シフトを行い、その結果を１６ビットのデータとして出力するようになっている。
第２シフタ３２は、与えられたスケールファクタに相当するシフト量で、累積加算器３３からの４０ビットのデータに対して右シフトを行い、その結果を４０ビットのデータとして出力するようになっている。
【００６４】
制御部３５０は、データバス１１０から与えられる２つのブロックスケールファクタを加算する加算器７０と、加算器７０の加算結果に基づいて第１シフタ３５および第２シフタ３２を制御するシフタ制御装置７１と、累積加算器３３からの加算結果データブロックについてブロックスケールファクタを検出するブロックスケールファクタ検出器７２とで構成されている。
【００６５】
加算器７０は、乗算器３０に与えられる各データブロックのブロックスケールファクタが与えられるので、それらを加算することにより乗算器３０からの乗算結果ブロックスケールファクタを算出するようになっている。
シフタ制御装置７１は、加算器７０からの乗算結果ブロックスケールファクタと、ブロックスケールファクタ検出器７２からのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、乗算結果ブロックスケールファクタがブロックスケールファクタ検出器７２からのブロックスケールファクタよりも大きいときは、補正ブロックスケールファクタを第２シフタ３２に入力し、乗算結果ブロックスケールファクタの方が小さいときは、補正ブロックスケールファクタを第１シフタ３５に入力するようになっている。すなわち、累積加算器３３で加算を行う際には、シフタ制御装置７１、第１シフタ３５および第２シフタ３２により両者の各データの桁位置が一致するように補正が行われる。
【００６６】
制御ロジック４００は、データメモリ１００のデータに対して乗累算を行うときは、演算対象となる２つのデータブロックをデータメモリ１００から読み出し、一方のデータブロックのデータを順次乗算器３０に乗数として与えるとともに、他方のデータブロックのデータを順次乗算器３０に被乗数として与える。そして、これと同時に、読み出した各データブロックのブロックスケールファクタを加算器７０に与える。
【００６７】
次に、上記第１の実施の形態の動作を図２を参照しながら説明する。図２は、乗累算を行う過程を時系列に示す図である。
まず、制御ロジック４００により、図２に示すように、データブロックＡおよびデータブロックＢがデータメモリ１００から読み出される。そして、制御ロジック４００とシフタ制御装置７１との連携により、補正ブロックスケールファクタが算出され、補正ブロックスケールファクタに基づいて第１スケール補正処理および第２スケール補正処理のうちいずれかが選択的に行われる。
【００６８】
第１スケール補正処理は、ブロックスケールファクタ検出器７２からのブロックスケールファクタが乗算結果ブロックスケールファクタよりも大きいときに行われる。第１スケール補正処理が行われると、補正ブロックスケールファクタが第１シフタ３５に与えられ、データブロックＡの１番目のデータが第１シフタ３５に入力され、第１シフタ３５により、補正ブロックスケールファクタに相当するシフト量で、データブロックＡの１番目のデータに対して右シフトが行われる。また、これと同時に、データブロックＢの１番目のデータが乗算器３０に入力される。そして、乗算器３０により、データブロックＢおよび第１シフタ３５からのデータブロックＡを用いた乗算が行われ、その結果が乗算結果データブロックとして累積加算器３３に入力される。累積加算器３３では、加算を行う一方のデータが存在していないので、乗算器３０からの乗算結果データブロックがそのまま第２シフタ３２に入力される。これにより、上式（１）における右辺第１項に相当する演算が完了する。以下、第２シフタ３２に入力された乗算結果データブロックをデータブロックＣと称し、第１スケール補正処理による２回目以降の演算を説明する。
【００６９】
２回目の演算では、補正ブロックスケールファクタが第１シフタ３５に与えられ、データブロックＡの２番目のデータが第１シフタ３５に入力され、第１シフタ３５により、補正ブロックスケールファクタに相当するシフト量で、データブロックＡの２番目のデータに対して右シフトが行われる。また、これと同時に、データブロックＢの２番目のデータが乗算器３０に入力される。そして、乗算器３０により、データブロックＢおよび第１シフタ３５からのデータブロックＡを用いた乗算が行われ、その結果が乗算結果データブロックとして累積加算器３３に入力される。すなわち、乗算結果データブロックのデータは、データブロックＡに対する右シフトにより、データブロックＣのデータと桁位置が一致するように補正される。
【００７０】
一方、第２シフタ３２にはスケールファクタが与えられることなく、データブロックＣのデータが第２シフタ３２に入力されるので、データブロックＣのデータは、右シフトが行われずそのまま累積加算器３３に入力される。最終的な加算では、累積加算器３３により、桁位置が一致した状態で、乗算器３０からの乗算結果データブロックおよび第２シフタ３２からのデータブロックＣを用いた加算が行われる。
【００７１】
３回目以降の演算については、２回目の演算と同様であり、最終の演算が終了すると、累積加算器３３からの加算結果データブロックがデータメモリ１００に格納される。
また、第２スケール補正処理は、乗算結果ブロックスケールファクタがブロックスケールファクタ検出器７２からのブロックスケールファクタよりも大きいときに行われる。なお、第２スケール補正処理による１回目の演算については、第１スケール補正処理による１回目の演算と同様であるので、２回目以降の演算を説明する。
【００７２】
第２スケール補正処理が行われると、補正ブロックスケールファクタが第２シフタ３２に与えられ、データブロックＣのデータが第２シフタ３２に入力され、第２シフタ３２により、補正ブロックスケールファクタに相当するシフト量で、データブロックＣのデータに対して右シフトが行われ、その結果が累積加算器３３に入力される。すなわち、データブロックＣのデータは、その右シフトにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【００７３】
一方、第１シフタ３５にはスケールファクタが与えられることなく、データブロックＡの２番目のデータが第１シフタ３５に入力されるので、データブロックＡのデータは、右シフトが行われずそのまま乗算器３０に入力される。また、これと同時に、データブロックＢの２番目のデータが乗算器３０に入力される。そして、乗算器３０により、データブロックＢおよび第１シフタ３５からのデータブロックＡを用いた乗算が行われ、その結果が乗算結果データブロックとして累積加算器３３に入力される。最終的な加算では、累積加算器３３により、桁位置が一致した状態で、乗算器３０からの乗算結果データブロックおよび第２シフタ３２からのデータブロックＣを用いた加算が行われる。
【００７４】
３回目以降の演算については、２回目の演算と同様であり、最終の演算が終了すると、累積加算器３３からの加算結果データブロックがデータメモリ１００に格納される。
したがって、異なる複数のデータブロック間で乗累算を行う場合には、上式（１），（２）に示すように、各乗累算が前段の乗累算の完了を待って直列に行われる。
【００７５】
データＡ[i][0]，Ｘ[i][0]を用いてＹ[0]を求める第１の乗累算と、データＡ[i][1]，Ｘ[i][1]を用いてＹ[1]を求める第２の乗累算とを行うことを考える。第１の乗累算については、例えば、ｋ個のデータを含むデータブロックＡ，Ｘが与えられたとき、累積加算器３３による第１回目の演算により上式（１）の右辺第１項が演算され、累積加算器３３による第２回目の演算により上式（１）の右辺第１項および第２項が演算され、同じ要領でこれをｋ回繰り返すことにより、累積加算器３３からの加算結果データブロックが演算結果Ｙ[0]として得られる。演算結果Ｙ[0]は、演算が完了した時点でデータメモリ１００に格納される。第２の乗累算についてもこれと同様である。
【００７６】
このようにして、本実施の形態では、与えられたスケールファクタに基づいてデータブロックＡの各データに対してスケーリングを行う第１シフタ３５と、与えられたスケールファクタに基づいてデータブロックＣの各データに対してスケーリングを行う第２シフタ３２と、データブロックＢおよび第１シフタ３５からのデータブロックＡを用いた乗算を行う乗算器３０と、乗算器３０からの乗算結果データブロックおよび第２シフタ３２からのデータブロックＣを用いた加算を行う累積加算器３３とを備え、補正ブロックスケールファクタを算出し、補正ブロックスケールファクタを第１シフタ３５に与え、データブロックＡのデータを第１シフタ３５に入力し、かつ、第２シフタ３２にスケールファクタを与えず、データブロックＣのデータを第２シフタ３２に入力する第１スケール補正処理と、補正ブロックスケールファクタを第２シフタ３２に与え、データブロックＣのデータを第２シフタ３２に入力し、かつ、第１シフタ３５にスケールファクタを与えず、データブロックＡのデータを第１シフタ３５に入力する第２スケール補正処理とのうちいずれかを行うようになっている。
【００７７】
これにより、第１シフタ３５によるスケーリングを乗算前に行うので、従来に比して、第１シフタ３５の回路規模を比較的縮小することができる。具体的に、上記第１の実施の形態では、従来４０ビット必要であったものが１６ビットにすることができる。また、乗算器３０と累積加算器３３との間に第１シフタ３５を設けないので、クリティカルパスが改善され、従来に比して、演算負荷を比較的低減することができる。
【００７８】
上記第１の実施の形態において、第１シフタ３５は、請求項１、３、５、９、１１または１３記載の第１スケーリング手段に対応し、第２シフタ３２は、請求項１、３、５、９、１１または１３記載の第２スケーリング手段に対応し、乗算器３０は、請求項１、５または１３記載の乗算手段に対応している。また、累積加算器３３は、請求項１、５または１３記載の加算手段に対応し、データメモリ１００は、請求項５または１３記載の記憶手段に対応し、ブロックスケールファクタ検出器７２は、請求項５または１３記載のブロックスケールファクタ検出手段に対応している。
【００７９】
次に、本発明の第２の実施の形態を図面を参照しながら説明する。図３および図４は、本発明に係るデータ演算処理装置の第２の実施の形態を示す図である。なお、以下、上記第１の実施の形態と異なる部分についてのみ説明し、重複する部分については同一の符号を付して説明を省略する。
本実施の形態は、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図３に示すように、ブロックフローティング方式により乗累算を行う場合について適用したものであり、上記第１の実施の形態と異なるのは、異なる複数のデータブロック間で乗累算を並列に行う点にある。
【００８０】
まず、本発明に係るデータ演算処理装置の構成を図３を参照しながら説明する。図３は、本発明に係るデータ演算処理装置の構成を示すブロック図である。
本発明に係るデータ演算処理装置は、図３に示すように、上記第１の実施の形態におけるデータ演算処理装置とほぼ同一の構成であるが、異なるのは、シフタ制御装置７１が、加算器７０からの乗算結果ブロックスケールファクタのほかデータバス１１０から与えられるブロックスケールファクタに基づいて第１シフタ３５および第２シフタ３２を制御するようになっている点、累積加算器３３に代えて加算器３４を設けた点、および第２シフタ３２への入力がデータバス１１０からとなっている点である。
【００８１】
次に、上記第２の実施の形態の動作を図４を参照しながら説明する。図４は、乗累算を行う過程を時系列に示す図である。
まず、制御ロジック４００により、図４に示すように、データブロックＡおよびデータブロックＢがデータメモリ１００から読み出される。そして、制御ロジック４００とシフタ制御装置７１との連携により、補正ブロックスケールファクタが算出され、補正ブロックスケールファクタに基づいて第１スケール補正処理および第２スケール補正処理のうちいずれかが選択的に行われる。
【００８２】
第１スケール補正処理は、ブロックスケールファクタ検出器７２からのブロックスケールファクタが乗算結果ブロックスケールファクタよりも大きいときに行われる。第１スケール補正処理が行われると、補正ブロックスケールファクタが第１シフタ３５に与えられ、データブロックＡの１番目のデータが第１シフタ３５に入力され、第１シフタ３５により、補正ブロックスケールファクタに相当するシフト量で、データブロックＡの１番目のデータに対して右シフトが行われる。また、これと同時に、データブロックＢの１番目のデータが乗算器３０に入力される。そして、乗算器３０により、データブロックＢおよび第１シフタ３５からのデータブロックＡを用いた乗算が行われ、その結果が乗算結果データブロックとして加算器３４に入力される。加算器３４では、加算を行う一方のデータが存在していないので、加算器３４からの加算結果データブロックがデータメモリ１００に格納される。以下、データメモリ１００に格納された加算結果データブロックをデータブロックＣと称し、第１スケール補正処理による２回目以降の演算を説明する。
【００８３】
２回目の演算では、補正ブロックスケールファクタが第１シフタ３５に与えられ、データブロックＡの２番目のデータが第１シフタ３５に入力され、第１シフタ３５により、補正ブロックスケールファクタに相当するシフト量で、データブロックＡの２番目のデータに対して右シフトが行われる。また、これと同時に、データブロックＢの２番目のデータが乗算器３０に入力される。そして、乗算器３０により、データブロックＢおよび第１シフタ３５からのデータブロックＡを用いた乗算が行われ、その結果が乗算結果データブロックとして加算器３４に入力される。すなわち、乗算結果データブロックのデータは、データブロックＡに対する右シフトにより、データブロックＣのデータと桁位置が一致するように補正される。
【００８４】
一方、第２シフタ３２にはスケールファクタが与えられることなく、データブロックＣのデータが第２シフタ３２に入力されるので、データブロックＣのデータは、右シフトが行われずそのまま加算器３４に入力される。最終的な加算では、加算器３４により、桁位置が一致した状態で、乗算器３０からの乗算結果データブロックおよび第２シフタ３２からのデータブロックＣを用いた加算が行われる。加算器３４からの加算結果データブロックは、またデータメモリ１００に格納される。
【００８５】
３回目以降の演算については、２回目の演算と同様であり、最終の演算が終了すると、乗累算が完了した加算結果データブロックがデータメモリ１００に格納される。
また、第２スケール補正処理は、乗算結果ブロックスケールファクタがブロックスケールファクタ検出器７２からのブロックスケールファクタよりも大きいときに行われる。なお、第２スケール補正処理による１回目の演算については、第１スケール補正処理による１回目の演算と同様であるので、２回目以降の演算を説明する。
【００８６】
第２スケール補正処理が行われると、補正ブロックスケールファクタが第２シフタ３２に与えられ、データブロックＣのデータが第２シフタ３２に入力され、第２シフタ３２により、補正ブロックスケールファクタに相当するシフト量で、データブロックＣのデータに対して右シフトが行われ、その結果が加算器３４に入力される。すなわち、データブロックＣのデータは、その右シフトにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【００８７】
一方、第１シフタ３５にはスケールファクタが与えられることなく、データブロックＡの２番目のデータが第１シフタ３５に入力されるので、データブロックＡのデータは、右シフトが行われずそのまま乗算器３０に入力される。また、これと同時に、データブロックＢの２番目のデータが乗算器３０に入力される。そして、乗算器３０により、データブロックＢおよび第１シフタ３５からのデータブロックＡを用いた乗算が行われ、その結果が乗算結果データブロックとして加算器３４に入力される。最終的な加算では、加算器３４により、桁位置が一致した状態で、乗算器３０からの乗算結果データブロックおよび第２シフタ３２からのデータブロックＣを用いた加算が行われる。加算器３４からの加算結果データブロックは、またデータメモリ１００に格納される。
【００８８】
３回目以降の演算については、２回目の演算と同様であり、最終の演算が終了すると、乗累算が完了した加算結果データブロックがデータメモリ１００に格納される。
したがって、異なる複数のデータブロック間で乗累算を行う場合には、上式（３）〜（８）に示すように、各乗累算を、前段の乗累算の完了を待つことなく並列に行うことができる。
【００８９】
データＡ[i][0]，Ｘ[i][0]を用いてＹ[0]を求める第１の乗累算と、データＡ[i][1]，Ｘ[i][1]を用いてＹ[1]を求める第２の乗累算とを行うことを考える。第１の乗累算と第２の乗累算は、並列して行われる。第１の乗累算については、例えば、ｋ個のデータを含むデータブロックＡ[0]，Ｘ[0]が与えられたとき、まず、データブロックＡ[0]，Ｘ[0]の１番目のデータを乗算器３０に与え、上式（３）のように、加算器３４による演算により第１項が演算され、その結果がＹ'''[0]としてデータメモリ１００に格納される。そして、上式（４）に示すように、同じ要領で第２の乗累算における第１項が演算され、その結果がＹ'''[1]としてデータメモリ１００に格納される。
【００９０】
次いで、第１の乗累算については、データブロックＡ[0]，Ｘ[0]の２番目のデータを乗算器３０に、Ｙ'''[0]を第２シフタ３２にそれぞれ与え、上式（５）のように、加算器３４による演算により第１項および第２項が演算され、その結果がＹ''[0]としてデータメモリ１００に格納される。そして、上式（６）に示すように、同じ要領で第２の乗累算における第１項および第２項が演算され、その結果がＹ''[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は、与えられたスケールファクタに基づいてデータに対して右シフトを行う第２シフタ１０と、第２シフタ１０からのデータに対して乗算を行う乗算器２０と、第２シフタ１０からのデータおよび乗算器２０からのデータに対して加算を行う累積加算器２２とを有し、制御ロジック４００は、データブロックＡ〜Ｃをデータメモリ１００から読み出し、データブロックＡおよびデータブロックＣのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、データブロックＢのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第１スケール補正処理および第２スケール補正処理のいずれかを行うようになっている。
【０１１５】
これにより、上記第２の実施の形態と同等の効果が得られる。
上記第３の実施の形態において、第２シフタ１０は、請求項７若しくは１５記載の第１スケーリング手段、または請求項７若しくは１５記載の第２スケーリング手段に対応し、乗算器２０は、請求項７記載の乗算手段に対応し、累積加算器２２は、請求項７記載の加算手段に対応している。
【０１１６】
上記第３の実施の形態において、第２シフタ１０は、請求項８または１６記載のスケーリング手段に対応し、乗算器２０は、請求項８または１６記載の乗算手段に対応し、累積加算器２２は、請求項８または１６記載の加算手段に対応し、データメモリ１００は、請求項８または１６記載の記憶手段に対応している。また、制御ロジック４００は、請求項８または１６記載の制御手段に対応している。
【０１１７】
なお、上記第１ないし第３の実施の形態においては、加算対象となる２つのデータブロックのうちブロックスケールファクタの小さいものの各データに対して、右シフトを行うことにより桁位置を一致させるように構成したが、これに限らず、加算対象となる２つのデータブロックのうちブロックスケールファクタの大きいものの各データに対して、左シフトを行うことにより桁位置を一致させるように構成してもよい。
【０１１８】
また、上記第１ないし第３の実施の形態においては、数値演算を行うのに本発明を適用した場合について説明したが、これに限らず、本発明の主旨を逸脱しない範囲で他のものにも適用可能である。
また、上記第１ないし第３の実施の形態においては、制御ロジック４００を、内部のロジックに従って各部の制御を行うように構成したが、これに限らず、制御ロジック４００に代えて、ＣＰＵ、ＲＡＭおよびＲＯＭをバス接続してデータ演算処理部を構成し、データ演算処理部は、ＣＰＵにより、上記の制御手順を示したプログラムをＲＯＭから読み出して実行するように構成してもよい。この場合、上記の制御手順を示したプログラムは、ＲＯＭに格納されるに限らず、上記の制御手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭに読み込んで実行するようにしてもよい。
【０１１９】
また、上記第１ないし第３の実施の形態においては、本発明に係るデータ演算処理装置を、データメモリ１００と、演算部２００，２５０と、制御部３００と、制御ロジック４００と、アドレス生成器５００とを備えたハードウェアで構成したが、これに限らず、例えば、ＣＰＵ、ＲＡＭおよびＲＯＭをバス接続して構成し、ＣＰＵにより、各部の機能を実現するための制御プログラムをＲＯＭから読み出して実行するように、一部または全部をソフトウェアで構成してもよい。この場合も、制御プログラムは、ＲＯＭに格納されるに限らず、制御プログラムが記憶された記憶媒体から、その制御プログラムをＲＡＭに読み込んで実行するようにしてもよい。
【０１２０】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【０１２１】
【発明の効果】
以上説明したように、本発明に係る請求項１ないし７記載のデータ演算処理装置によれば、第１スケーリング手段によるスケーリングを乗算前に行うので、従来に比して、第１スケーリング手段の回路規模を比較的縮小することができるという効果が得られる。また、乗算手段と加算手段との間に第１スケーリング手段を設けないので、クリティカルパスが改善され、従来に比して、演算負荷を比較的低減することができるという効果も得られる。
【０１２２】
さらに、本発明に係る請求項８記載のデータ演算処理装置によれば、スケーリング手段によるスケーリングを乗算前に行うので、従来に比して、スケーリング手段の回路規模を比較的縮小することができるという効果が得られる。また、乗算手段と加算手段との間にスケーリング手段を設けないので、クリティカルパスが改善され、従来に比して、演算負荷を比較的低減することができるという効果も得られる。
【０１２３】
一方、本発明に係る請求項９ないし１５記載のデータ演算処理プログラムによれば、請求項１記載のデータ演算処理装置と同等の効果が得られる。
さらに、本発明に係る請求項１６記載のデータ演算処理プログラムによれば、請求項８記載のデータ演算処理装置と同等の効果が得られる。
【図面の簡単な説明】
【図１】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図２】乗累算を行う過程を時系列に示す図である。
【図３】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図４】乗累算を行う過程を時系列に示す図である。
【図５】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図６】データメモリ１００におけるデータ構造を示す図である。
【図７】ブロックフローティング方式による従来のデータ演算処理装置の構成を示すブロック図である。
【図８】ブロックフローティング方式による従来のデータ演算処理装置の構成を示すブロック図である。
【符号の説明】
１０，３２                第２シフタ
１４                      ユニットスケールファクタ検出器
１６，３１，３５          第１シフタ
１８ａ，１８ｂ            入力レジスタ
２０，３０                乗算器
２２，３３                累積加算器
２４                      セレクタ
２６                      累積レジスタ
３４，７０                加算器
５０                      グループスケールファクタ検出器
５２                      グループスケールファクタレジスタファイル
５４，７２                ブロックスケールファクタ検出器
５６                      ブロックスケールファクタレジスタ
５８                      加減算器
６０                      桁合わせ用加算器
７１                      シフタ制御装置
１００                    データメモリ
１１０                    データバス
１２０                    アドレスバス
２００，２５０            演算部
３００，３５０            制御部
４００                    制御ロジック
５００                    アドレス生成器
【図１】
0003659408.tif 000004
【図２】
0003659408.tif 000005
【図３】
0003659408.tif 000006
【図４】
0003659408.tif 000007
【図５】
0003659408.tif 000008
【図６】
0003659408.tif 000009
【図７】
0003659408.tif 000010
【図８】
0003659408.tif 000011