JP3659408B2 - データ演算処理装置及びデータ演算処理プログラム - Google Patents
データ演算処理装置及びデータ演算処理プログラム Download PDFInfo
- Publication number
- JP3659408B2 JP3659408B2 JP2001251429A JP2001251429A JP3659408B2 JP 3659408 B2 JP3659408 B2 JP 3659408B2 JP 2001251429 A JP2001251429 A JP 2001251429A JP 2001251429 A JP2001251429 A JP 2001251429A JP 3659408 B2 JP3659408 B2 JP 3659408B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- scale factor
- group
- data block
- 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
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、1または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データブロック単位でデータを処理する装置およびプログラムに係り、特に、ブロックフローティング方式で固定小数点演算を行うブロックフローティング型のデジタル・シグナル・プロセッサ(以下、単にDSPという。)に関する。
【0002】
【従来の技術】
デジタル信号処理における数値表現方法として、固定小数点表現または浮動小数点表現がある。
浮動小数点表現では、各データが指数部と仮数部をもち、これにより、高い精度と広いダイナミックレンジが確保可能という利点がある反面、複雑で大規模なハードウェアが必要となるという問題がある。一方、固定小数点表現では、ハードウェアが簡単で回路規模も小さくてすむが、演算精度の低下が問題となる。
【0003】
そこで、固定小数点表現における問題の対策法として提案されたのがブロックフローティングという方式である。この方式では、所定数(例えば、m個)のデータを1つのデータブロックとし、データブロックに対し1個のブロックスケールファクタをもたせ、データブロックのm個のデータに対し共通のスケーリングを行うことにより、限られたダイナミックレンジを有効に用いて精度の劣化を抑える。
【0004】
従来、ブロックフローティング方式により乗累算(複数の乗算結果を足し合わせてその総和を求める演算をいう。以下、同じ。)を行う装置としては、図7および図8に示すようなデータ演算処理装置があった。図7および図8は、ブロックフローティング方式による従来のデータ演算処理装置の構成を示すブロック図である。
【0005】
図7において、データ演算処理装置は、データを記憶するためのデータメモリ100と、データメモリ100のデータに対して乗累算を行う演算部260と、ブロックフローティングに必要な正規化を行うための制御部350と、これらの制御を行う制御ロジック400と、アドレス生成器500とで構成されている。データメモリ100、演算部260、制御部350および制御ロジック400は、データバス110で相互にかつデータ授受可能に接続されており、データメモリ100およびアドレス生成器500は、データアドレスバス120で相互にかつデータ授受可能に接続されている。
【0006】
データメモリ100は、図示しない外部からデータを入力し、演算部260の演算対象となるデータとして格納するようになっている。データメモリ100では、複数のデータを含んでデータブロックを構成し、データは、データブロック単位で格納される。また、データブロックには、そのデータブロックのデータのうち絶対値が最大のもののスケールファクタを代表とし、これがブロックスケールファクタとして含まれている。データブロックのすべてのデータは、ブロックスケールファクタに基づいて共通にスケーリングされている。なお、スケールファクタは、データをビットシフトするときのシフト量であり、シフトするビット数を示す。以下、グループスケールファクタおよびブロックスケールファクタについても同様である。
【0007】
演算部260は、データバス110から与えられる2つのデータブロックを用いた乗算を行う乗算器30と、与えられたスケールファクタに基づいて乗算器30からの乗算結果データブロックの各データに対してスケーリングを行う第1シフタ31と、与えられたスケールファクタに基づいて累積加算器33からの加算結果データブロックの各データに対してスケーリングを行う第2シフタ32と、第1シフタ31および第2シフタ32からそれぞれ与えられる2つのデータブロックを用いた加算を行う累積加算器33とで構成されている。
【0008】
第1シフタ31は、与えられたスケールファクタに相当するシフト量で、乗算器30からの32ビットのデータに対して下位ビットの方向へビットシフト(以下、単に右シフトという。)を行い、その結果を40ビットのデータとして出力するようになっている。
第2シフタ32は、与えられたスケールファクタに相当するシフト量で、累積加算器33からの40ビットのデータに対して右シフトを行い、その結果を40ビットのデータとして出力するようになっている。
【0009】
制御部350は、データバス110から与えられる2つのブロックスケールファクタを加算する加算器70と、加算器70の加算結果に基づいて第1シフタ31および第2シフタ32を制御するシフタ制御装置71と、累積加算器33からの加算結果データブロックについてブロックスケールファクタを検出するブロックスケールファクタ検出器72とで構成されている。
【0010】
加算器70は、乗算器30に与えられる各データブロックのブロックスケールファクタが与えられるので、それらを加算することにより、乗算器30からの乗算結果データブロックのブロックスケールファクタ(以下、乗算結果ブロックスケールファクタという。)を算出するようになっている。
シフタ制御装置71は、加算器70からの乗算結果ブロックスケールファクタと、ブロックスケールファクタ検出器72からのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、乗算結果ブロックスケールファクタがブロックスケールファクタ検出器72からのブロックスケールファクタよりも大きいときは、補正ブロックスケールファクタを第2シフタ32に入力し、乗算結果ブロックスケールファクタの方が小さいときは、補正ブロックスケールファクタを第1シフタ31に入力するようになっている。すなわち、累積加算器33で加算を行う際には、シフタ制御装置71、第1シフタ31および第2シフタ32により両者の各データの桁位置が一致するように補正が行われる。
【0011】
制御ロジック400は、データメモリ100のデータに対して乗累算を行うときは、演算対象となる2つのデータブロックをデータメモリ100から読み出し、一方のデータブロックのデータを順次乗算器30に乗数として与えるとともに、他方のデータブロックのデータを順次乗算器30に被乗数として与える。そして、これと同時に、読み出した各データブロックのブロックスケールファクタを加算器70に与える。
【0012】
こうした構成であれば、異なる複数のデータブロック間で乗累算を行う場合には、下式(1),(2)に示すように、各乗累算が前段の乗累算の完了を待って直列に行われる。下式(1),(2)において、Aは乗数となるデータブロックを、Xは被乗数となるデータブロックを示し、それぞれ第1番目の要素がブロック番号を示している。また、第2番目の要素がデータブロック内のデータ番号を示しているので、A[i][0],X[i][0],A[i][1],X[i][1](iは0〜kの整数である。以下、同じ。)は、データブロックの各データとなる。
【0013】
【数1】
【0014】
データA[i][0],X[i][0]を用いてY[0]を求める第1の乗累算と、データA[i][1],X[i][1]を用いてY[1]を求める第2の乗累算とを行うことを考える。第1の乗累算については、例えば、k個のデータを含むデータブロックA,Xが与えられたとき、累積加算器33による第1回目の演算により上式(1)の右辺第1項が演算され、累積加算器33による第2回目の演算により上式(1)の右辺第1項および第2項が演算され、同じ要領でこれをk回繰り返すことにより、累積加算器33からの加算結果データブロックが演算結果Y[0]として得られる。演算結果Y[0]は、演算が完了した時点でデータメモリ100に格納される。第2の乗累算についてもこれと同様である。
【0015】
一方、図8において、データ演算処理装置は、図7のデータ演算処理装置とほぼ同一の構成であるが、異なるのは、シフタ制御装置71が、加算器70からの乗算結果ブロックスケールファクタのほかデータバス110から与えられるブロックスケールファクタに基づいて第1シフタ31および第2シフタ32を制御するようになっている点、累積加算器33に代えて加算器34を設けた点、および第2シフタ32への入力がデータバス110からとなっている点である。
【0016】
こうした構成であれば、異なる複数のデータブロック間で乗累算を行う場合には、下式(3)〜(8)に示すように、各乗累算が前段の乗累算の完了を待つことなく並列に行われる。下式(3)〜(8)において、Aは乗数となるデータブロックを、Xは被乗数となるデータブロックを示し、それぞれ第1番目の要素がブロック番号を示している。また、第2番目の要素がデータブロック内のデータ番号を示しているので、A[i][0],X[i][0],A[i][1],X[i][1]は、データブロックの各データとなる。
【0017】
【数2】
【0018】
データA[i][0],X[i][0]を用いてY[0]を求める第1の乗累算と、データA[i][1],X[i][1]を用いてY[1]を求める第2の乗累算とを行うことを考える。第1の乗累算と第2の乗累算は、並列して行われる。第1の乗累算については、例えば、k個のデータを含むデータブロックA[0],X[0]が与えられたとき、まず、データブロックA[0],X[0]の1番目のデータを乗算器30に与え、上式(3)のように、加算器34による演算により第1項が演算され、その結果がY'''[0]としてデータメモリ100に格納される。そして、上式(4)に示すように、同じ要領で第2の乗累算における第1項が演算され、その結果がY'''[1]としてデータメモリ100に格納される。
【0019】
次いで、第1の乗累算については、データブロックA[0],X[0]の2番目のデータを乗算器30に、Y'''[0]を第2シフタ32にそれぞれ与え、上式(5)のように、加算器34による演算により第1項および第2項が演算され、その結果がY''[0]としてデータメモリ100に格納される。そして、上式(6)に示すように、同じ要領で第2の乗累算における第1項および第2項が演算され、その結果がY''[1]としてデータメモリ100に格納される。
【0020】
その後は、同じ要領でこれを交互にk回繰り返すことにより、データメモリ100には、第1の乗累算結果および第2の乗累算結果がそれぞれ格納されることになる。
なお、ブロックフローティング方式の一般的な技術については、特許協力条約に基づいて公開された国際出願(国際公開番号WO99/66423)にその詳細が開示されている。
【0021】
【発明が解決しようとする課題】
しかしながら、上記従来のデータ演算処理装置にあってはいずれも、乗算器30の出力側に第1シフタ31を設けた構成となっているため、シフタとして少なくとも40ビットのビット幅を備えなければならず、回路規模が大きい。また、乗算器30と加算器34との間はクリティカルパスとなっているため、第1シフタ31を設けることにより演算負荷が増大する。
【0022】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、ブロックフローティング方式により乗累算を行う場合において、回路規模を縮小するとともに、クリティカルパスを改善して演算負荷を低減するのに好適なデータ演算処理装置およびデータ演算処理プログラムを提供することを目的としている。
【0023】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る請求項1記載のデータ演算処理装置は、1または複数のデータを含んでデータブロックを構成し、前記データブロックは、前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、与えられたスケールファクタに基づいて第1データブロックの各データに対してスケーリングを行う第1スケーリング手段と、与えられたスケールファクタに基づいて第2データブロックの各データに対してスケーリングを行う第2スケーリング手段と、第3データブロックおよび前記第1スケーリング手段からの第1データブロックを用いた乗算を行う乗算手段と、前記乗算手段からの乗算結果データブロックおよび前記第2スケーリング手段からの第2データブロックを用いた加算を行う加算手段とを備え、前記第1データブロックおよび前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、前記補正ブロックスケールファクタを前記第1スケーリング手段に与え、前記第1データブロックのデータを前記第1スケーリング手段に入力し、かつ、前記第2スケーリング手段にスケールファクタを与えず、前記第2データブロックのデータを前記第2スケーリング手段に入力する第1スケール補正処理と、前記補正ブロックスケールファクタを前記第2スケーリング手段に与え、前記第2データブロックのデータを前記第2スケーリング手段に入力し、かつ、前記第1スケーリング手段にスケールファクタを与えず、前記第1データブロックのデータを前記第1スケーリング手段に入力する第2スケール補正処理とのうちいずれかを行うようになっている。
【0024】
このような構成であれば、乗算結果ブロックスケールファクタと第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタが算出され、第1スケール補正処理および第2スケール補正処理のうちいずれかが行われる。
第1スケール補正処理が行われると、補正ブロックスケールファクタが第1スケーリング手段に与えられ、第1データブロックのデータが第1スケーリング手段に入力され、第1スケーリング手段により、補正ブロックスケールファクタに基づいて、第1データブロックの各データに対してスケーリングが行われる。そして、乗算手段により、第3データブロックおよび第1スケーリング手段からの第1データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。すなわち、乗算結果データブロックの各データは、第1データブロックに対するスケーリングにより、第2データブロックのデータと桁位置が一致するように補正される。
【0025】
一方、第2スケーリング手段にはスケールファクタが与えられることなく、第2データブロックのデータが第2スケーリング手段に入力されるので、第2データブロックの各データは、スケーリングが行われずそのまま加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよび第2スケーリング手段からの第2データブロックを用いた加算が行われる。
【0026】
また、第2スケール補正処理が行われると、補正ブロックスケールファクタが第2スケーリング手段に与えられ、第2データブロックのデータが第2スケーリング手段に入力され、第2スケーリング手段により、補正ブロックスケールファクタに基づいて、第2データブロックの各データに対してスケーリングが行われ、その結果が加算手段に入力される。すなわち、第2データブロックの各データは、そのスケーリングにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【0027】
一方、第1スケーリング手段にはスケールファクタが与えられることなく、第1データブロックのデータが第1スケーリング手段に入力されるので、第1データブロックの各データは、スケーリングが行われずそのまま乗算手段に入力される。そして、乗算手段により、第3データブロックおよび第1スケーリング手段からの第1データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよび第2スケーリング手段からの第2データブロックを用いた加算が行われる。
【0028】
ここで、スケールファクタとしては、例えば、データをビットシフトするときのシフト量を挙げることができる。この場合、スケールファクタに相当するシフト量で、データに対してビットシフトを行うことによりスケーリングを行う。以下、請求項7および8記載のデータ演算処理装置、並びに請求項9、15および16記載のデータ演算処理プログラムにおいて同じである。
【0029】
さらに、本発明に係る請求項2記載のデータ演算処理装置は、請求項1記載のデータ演算処理装置において、前記乗算結果ブロックスケールファクタおよび前記第2データブロックのブロックスケールファクタの大小関係に基づいて、前記第1スケール補正処理および前記第2スケール補正処理のいずれかを選択的に行うようになっている。
【0030】
このような構成であれば、乗算結果ブロックスケールファクタおよび第2データブロックのブロックスケールファクタの大小関係に基づいて、第1スケール補正処理および第2スケール補正処理のいずれかが選択的に行われる。
さらに、本発明に係る請求項3記載のデータ演算処理装置は、請求項2記載のデータ演算処理装置において、前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、前記第2スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、前記第2データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第1スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第2データブロックのブロックスケールファクタよりも大きいときは、前記第2スケール補正処理を行うようになっている。
【0031】
このような構成であれば、第2データブロックのブロックスケールファクタが乗算結果ブロックスケールファクタよりも大きいと、第1スケール補正処理が行われる。これに対し、乗算結果ブロックスケールファクタが第2データブロックのブロックスケールファクタよりも大きいと、第2スケール補正処理が行われる。すなわち、第2データブロックのブロックスケールファクタおよび乗算結果ブロックスケールファクタのうち値が小さいものに係るデータブロックについては、第1スケーリング手段または第2スケーリング手段により、補正ブロックスケールファクタに相当するビット量で、その各データに対して右シフトが行われる。
【0032】
さらに、本発明に係る請求項4記載のデータ演算処理装置は、請求項2記載のデータ演算処理装置において、前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、前記第2スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、前記第2データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第2スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第2データブロックのブロックスケールファクタよりも大きいときは、前記第1スケール補正処理を行うようになっている。
【0033】
このような構成であれば、第2データブロックのブロックスケールファクタが乗算結果ブロックスケールファクタよりも大きいと、第2スケール補正処理が行われる。これに対し、乗算結果ブロックスケールファクタが第2データブロックのブロックスケールファクタよりも大きいと、第1スケール補正処理が行われる。すなわち、第2データブロックのブロックスケールファクタおよび乗算結果ブロックスケールファクタのうち値が大きいものに係るデータブロックについては、第1スケーリング手段または第2スケーリング手段により、補正ブロックスケールファクタに相当するビット量で、その各データに対して上位ビットの方向へビットシフト(以下、単に左シフトという。)が行われる。
【0034】
さらに、本発明に係る請求項5記載のデータ演算処理装置は、請求項1ないし4のいずれかに記載のデータ演算処理装置において、データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とを備え、前記第1データブロックおよび前記第3データブロックのデータを前記記憶手段から読み出し、読み出した第1データブロックのデータを前記第1スケーリング手段に入力するとともに、読み出した第3データブロックのデータを前記乗算手段に入力し、前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第2データブロックを構成し、構成した第2データブロックのデータを前記記憶手段に格納するとともに前記第2スケーリング手段に入力するようになっている。
【0035】
このような構成であれば、第1データブロックおよび第3データブロックのデータが記憶手段から読み出され、読み出された第1データブロックのデータが第1スケーリング手段に入力されるとともに、読み出された第3データブロックのデータが乗算手段に入力される。加算手段により加算が行われると、ブロックスケール検出手段により、加算手段からの加算結果データブロックについてブロックスケールファクタが検出され、検出されたブロックスケールファクタを加算結果データブロックに含めて第2データブロックが構成される。そして、構成された第2データブロックのデータが記憶手段に格納されるとともに第2スケーリング手段に入力される。したがって、2度目以降の加算では、加算手段による前回までの累算結果と乗算手段からの乗算結果とが加算されることになる。
【0036】
ここで、記憶手段は、データをあらゆる手段でかつあらゆる時期に記憶するものであり、データをあらかじめ記憶してあるものであってもよいし、データをあらかじめ記憶することなく、本装置の動作時に外部からの入力等によってデータを記憶するようになっていてもよい。以下、請求項6および8記載のデータ演算処理装置、並びに請求項13、14および16記載のデータ演算処理プログラムにおいて同じである。
【0037】
さらに、本発明に係る請求項6記載のデータ演算処理装置は、請求項1ないし4のいずれかに記載のデータ演算処理装置において、データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とを備え、前記第1データブロックおよび前記第3データブロックのデータを前記記憶手段から読み出し、読み出した第1データブロックのデータを前記第1スケーリング手段に入力するとともに、読み出した第3データブロックのデータを前記乗算手段に入力し、前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第2データブロックを構成し、構成した第2データブロックのデータを前記記憶手段に格納し、再演算を行うときは、前記第2データブロックのデータを前記記憶手段から読み出し、読み出した第2データブロックのデータを前記第2スケーリング手段に入力するようになっている。
【0038】
このような構成であれば、第1データブロックおよび第3データブロックのデータが記憶手段から読み出され、読み出された第1データブロックのデータが第1スケーリング手段に入力されるとともに、読み出された第3データブロックのデータが乗算手段に入力される。加算手段により加算が行われると、ブロックスケール検出手段により、加算手段からの加算結果データブロックについてブロックスケールファクタが検出され、検出されたブロックスケールファクタを加算結果データブロックに含めて第2データブロックが構成される。そして、構成された第2データブロックのデータが記憶手段に格納される。
【0039】
再演算を行うときは、第2データブロックのデータが記憶手段から読み出され、読み出された第2データブロックのデータが第2スケーリング手段に入力される。したがって、2度目以降の加算では、記憶手段に格納されている前回までの累算結果と乗算手段からの乗算結果とが加算されることになる。
さらに、本発明に係る請求項7記載のデータ演算処理装置は、1または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタおよび前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、与えられたスケールファクタに基づいて第1データブロックの各データに対してスケーリングを行う第1スケーリング手段と、与えられたスケールファクタに基づいて第2データブロックの各データに対してスケーリングを行う第2スケーリング手段と、第3データブロックおよび前記第1スケーリング手段からの第1データブロックを用いた乗算を行う乗算手段と、前記乗算手段からの乗算結果データブロックおよび前記第2スケーリング手段からの第2データブロックを用いた加算を行う加算手段とを備え、前記第1データブロックおよび前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第1スケーリング手段に与え、当該データグループのデータを前記第1スケーリング手段に入力し、かつ、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第2スケーリング手段に与え、当該データグループのデータを前記第2スケーリング手段に入力する第1スケール補正処理と、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第2スケーリング手段に与え、当該データグループのデータを前記第2スケーリング手段に入力し、かつ、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第1スケーリング手段に与え、当該データグループのデータを前記第1スケーリング手段に入力する第2スケール補正処理とのうちいずれかを行うようになっている。
【0040】
このような構成であれば、乗算結果ブロックスケールファクタと第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタが算出され、第1スケール補正処理および第2スケール補正処理のうちいずれかが行われる。
第1スケール補正処理が行われると、第1データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが第1スケーリング手段に与えられ、そのデータグループのデータが第1スケーリング手段に入力される。したがって、第1スケーリング手段により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、第1データブロックの各データに対してスケーリングが行われる。そして、乗算手段により、第3データブロックおよび第1スケーリング手段からの第1データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。すなわち、乗算結果データブロックの各データは、第1データブロックに対するスケーリングにより、第2データブロックのデータと桁位置が一致するように補正される。
【0041】
一方、第2データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第2データブロックのブロックスケールファクタとの差分からなるスケールファクタが第2スケーリング手段に与えられ、そのデータグループのデータが第2スケーリング手段に入力される。したがって、第2スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第2データブロックの各データに対してスケーリングが行われ、加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよび第2スケーリング手段からの第2データブロックを用いた加算が行われる。
【0042】
また、第2スケール補正処理が行われると、第2データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが第2スケーリング手段に与えられ、そのデータグループのデータが第2スケーリング手段に入力される。したがって、第2スケーリング手段により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、第2データブロックの各データに対してスケーリングが行われ、その結果が加算手段に入力される。すなわち、第2データブロックの各データは、そのスケーリングにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【0043】
一方、第1データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第1データブロックのブロックスケールファクタとの差分からなるスケールファクタが第1スケーリング手段に与えられ、そのデータグループのデータが第1スケーリング手段に入力される。したがって、第1スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第1データブロックの各データに対してスケーリングが行われ、乗算手段に入力される。そして、乗算手段により、第3データブロックおよび第1スケーリング手段からの第1データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよび第2スケーリング手段からの第2データブロックを用いた加算が行われる。
【0044】
さらに、本発明に係る請求項8記載のデータ演算処理装置は、複数の計算ユニットを備え、1または複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタおよび前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行うスケーリング手段と、前記スケーリング手段からのデータに対して乗算を行う乗算手段と、前記スケーリング手段からのデータおよび前記乗算手段からのデータに対して加算を行う加算手段とを有し、さらに、データを記憶するための記憶手段と、データ処理のための制御を行う制御手段とを備え、前記制御手段は、第1データブロック、第2データブロックおよび第3データブロックを前記記憶手段から読み出し、前記第1データブロックおよび前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第1スケール補正処理および第2スケール補正処理のいずれかを行うようになっており、前記第1スケール補正処理は、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、前記第3データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第3データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であり、前記第2スケール補正処理は、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、前記第3データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第3データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理である。
【0045】
このような構成であれば、制御手段により、第1データブロック、第2データブロックおよび第3データブロックが記憶手段から読み出され、乗算結果ブロックスケールファクタと第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタが算出され、算出された補正ブロックスケールファクタに基づいて第1スケール補正処理および第2スケール補正処理のいずれかが行われる。
【0046】
第1スケール補正処理が行われると、第1データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの乗算手段に乗数として入力される。したがって、スケーリング手段により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、第1データブロックの各データに対してスケーリングが行われる。また、第3データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第3データブロックのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの乗算手段に被乗数として入力される。したがって、スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第3データブロックの各データに対してスケーリングが行われる。そして、乗算手段により、スケーリング手段からの第1データブロックおよび第3データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。すなわち、乗算結果データブロックの各データは、第1データブロックに対する補正ブロックスケールファクタによるスケーリングにより、第2データブロックのデータと桁位置が一致するように補正される。
【0047】
一方、第2データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第2データブロックのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの加算手段に入力される。したがって、スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第2データブロックの各データに対してスケーリングが行われる。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよびスケーリング手段からの第2データブロックを用いた加算が行われる。
【0048】
また、第2スケール補正処理が行われると、第2データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの加算手段に入力される。したがって、スケーリング手段により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、第2データブロックの各データに対してスケーリングが行われ、その結果が加算手段に入力される。すなわち、第2データブロックの各データは、補正ブロックスケールファクタによるスケーリングにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【0049】
一方、第1データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第1データブロックのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの乗算手段に乗数として入力される。したがって、スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第1データブロックの各データに対してスケーリングが行われる。また、第3データブロックの各データグループごとに、そのデータグループのグループスケールファクタと第3データブロックのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットのスケーリング手段に与えられ、そのデータグループのデータがそれぞれスケーリング手段を介して各計算ユニットの乗算手段に被乗数として入力される。したがって、スケーリング手段により、各グループスケールファクタおよびブロックスケールファクタに基づいて、第3データブロックの各データに対してスケーリングが行われる。そして、乗算手段により、スケーリング手段からの第1データブロックおよび第3データブロックを用いた乗算が行われ、その結果が乗算結果データブロックとして加算手段に入力される。最終的な加算では、加算手段により、桁位置が一致した状態で、乗算手段からの乗算結果データブロックおよびスケーリング手段からの第2データブロックを用いた加算が行われる。
【0050】
一方、上記目的を達成するために、本発明に係る請求項9記載のデータ演算処理プログラムは、コンピュータからなる請求項1記載のデータ演算処理装置に実行させるためのプログラムであって、前記第1データブロックおよび前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、前記補正ブロックスケールファクタを前記第1スケーリング手段に与え、前記第1データブロックのデータを前記第1スケーリング手段に入力し、かつ、前記第2スケーリング手段にスケールファクタを与えず、前記第2データブロックのデータを前記第2スケーリング手段に入力する第1スケール補正処理と、前記補正ブロックスケールファクタを前記第2スケーリング手段に与え、前記第2データブロックのデータを前記第2スケーリング手段に入力し、かつ、前記第1スケーリング手段にスケールファクタを与えず、前記第1データブロックのデータを前記第1スケーリング手段に入力する第2スケール補正処理とのうちいずれかを行う処理を実行させるためのプログラムである。
【0051】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項1記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項10記載のデータ演算処理プログラムは、請求項9記載のデータ演算処理プログラムにおいて、前記乗算結果ブロックスケールファクタおよび前記第2データブロックのブロックスケールファクタの大小関係に基づいて、前記第1スケール補正処理および前記第2スケール補正処理のいずれかを選択的に行う処理を実行させるためのプログラムである。
【0052】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項2記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項11記載のデータ演算処理プログラムは、請求項10記載のデータ演算処理プログラムにおいて、前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、前記第2スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、前記第2データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第1スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第2データブロックのブロックスケールファクタよりも大きいときは、前記第2スケール補正処理を行う処理を実行させるためのプログラムである。
【0053】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項3記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項12記載のデータ演算処理プログラムは、請求項10記載のデータ演算処理プログラムにおいて、前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、前記第2スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、前記第2データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第2スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第2データブロックのブロックスケールファクタよりも大きいときは、前記第1スケール補正処理を行う処理を実行させるためのプログラムである。
【0054】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項4記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項13記載のデータ演算処理プログラムは、請求項9ないし12のいずれかに記載のデータ演算処理プログラムにおいて、データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とが利用可能となっており、前記第1データブロックおよび前記第3データブロックのデータを前記記憶手段から読み出し、読み出した第1データブロックのデータを前記第1スケーリング手段に入力するとともに、読み出した第3データブロックのデータを前記乗算手段に入力し、前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第2データブロックを構成し、構成した第2データブロックのデータを前記記憶手段に格納するとともに前記第2スケーリング手段に入力する処理を実行させるためのプログラムである。
【0055】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項5記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項14記載のデータ演算処理プログラムは、請求項9ないし12のいずれかに記載のデータ演算処理プログラムにおいて、データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とが利用可能となっており、前記第1データブロックおよび前記第3データブロックのデータを前記記憶手段から読み出し、読み出した第1データブロックのデータを前記第1スケーリング手段に入力するとともに、読み出した第3データブロックのデータを前記乗算手段に入力し、前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第2データブロックを構成し、構成した第2データブロックのデータを前記記憶手段に格納し、再演算を行うときは、前記第2データブロックのデータを前記記憶手段から読み出し、読み出した第2データブロックのデータを前記第2スケーリング手段に入力する処理を実行させるためのプログラムである。
【0056】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項6記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項15記載のデータ演算処理プログラムは、コンピュータからなる請求項7記載のデータ演算処理装置に実行させるためのプログラムであって、前記第1データブロックおよび前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第1スケーリング手段に与え、当該データグループのデータを前記第1スケーリング手段に入力し、かつ、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第2スケーリング手段に与え、当該データグループのデータを前記第2スケーリング手段に入力する第1スケール補正処理と、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第2スケーリング手段に与え、当該データグループのデータを前記第2スケーリング手段に入力し、かつ、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第1スケーリング手段に与え、当該データグループのデータを前記第1スケーリング手段に入力する第2スケール補正処理とのうちいずれかを行う処理を実行させるためのプログラムである。
【0057】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項7記載のデータ演算処理装置と同等の作用が得られる。
さらに、本発明に係る請求項16記載のデータ演算処理プログラムは、コンピュータからなる請求項8記載のデータ演算処理装置における制御手段に実行させるためのプログラムであって、第1データブロック、第2データブロックおよび第3データブロックを前記記憶手段から読み出し、前記第1データブロックおよび前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第1スケール補正処理および第2スケール補正処理のいずれかを行う処理を実行させるためのプログラムであり、前記第1スケール補正処理は、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、前記第3データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第3データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であり、前記第2スケール補正処理は、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、前記第3データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第3データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理である。
【0058】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、請求項7記載のデータ演算処理装置と同等の作用が得られる。
【0059】
【発明の実施の形態】
以下、本発明の第1の実施の形態を図面を参照しながら説明する。図1および図2は、本発明に係るデータ演算処理装置の第1の実施の形態を示す図である。本実施の形態は、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図1に示すように、ブロックフローティング方式により乗累算を行う場合について適用したものである。
【0060】
まず、本発明に係るデータ演算処理装置の構成を図1を参照しながら説明する。図1は、本発明に係るデータ演算処理装置の構成を示すブロック図である。
本発明に係るデータ演算処理装置は、図1に示すように、データを記憶するためのデータメモリ100と、データメモリ100のデータに対して乗累算を行う演算部250と、ブロックフローティングに必要な正規化を行うための制御部350と、これらの制御を行う制御ロジック400と、アドレス生成器500とで構成されている。データメモリ100、演算部250、制御部350および制御ロジック400は、データバス110で相互にかつデータ授受可能に接続されており、データメモリ100およびアドレス生成器500は、データアドレスバス120で相互にかつデータ授受可能に接続されている。
【0061】
データメモリ100は、図示しない外部からデータを入力し、演算部250の演算対象となるデータとして格納するようになっている。データメモリ100では、複数のデータを含んでデータブロックを構成し、データは、データブロック単位で格納される。また、データブロックには、そのデータブロックのデータのうち絶対値が最大のもののスケールファクタを代表とし、これがブロックスケールファクタとして含まれている。データブロックのすべてのデータは、ブロックスケールファクタに基づいて共通にスケーリングされている。
【0062】
演算部250は、データバス110から与えられるデータブロックの各データに対してスケーリングを行う第1シフタ35と、データバス110から与えられるデータブロックおよび第1シフタ35からのデータブロックを用いた乗算を行う乗算器30と、与えられたスケールファクタに基づいて累積加算器33からの加算結果データブロックの各データに対してスケーリングを行う第2シフタ32と、第2シフタ32からのデータブロックおよび乗算器30からの乗算結果データブロックを用いた加算を行う累積加算器33とで構成されている。
【0063】
第1シフタ35は、与えられたスケールファクタに相当するシフト量で、データバス110からの16ビットのデータに対して右シフトを行い、その結果を16ビットのデータとして出力するようになっている。
第2シフタ32は、与えられたスケールファクタに相当するシフト量で、累積加算器33からの40ビットのデータに対して右シフトを行い、その結果を40ビットのデータとして出力するようになっている。
【0064】
制御部350は、データバス110から与えられる2つのブロックスケールファクタを加算する加算器70と、加算器70の加算結果に基づいて第1シフタ35および第2シフタ32を制御するシフタ制御装置71と、累積加算器33からの加算結果データブロックについてブロックスケールファクタを検出するブロックスケールファクタ検出器72とで構成されている。
【0065】
加算器70は、乗算器30に与えられる各データブロックのブロックスケールファクタが与えられるので、それらを加算することにより乗算器30からの乗算結果ブロックスケールファクタを算出するようになっている。
シフタ制御装置71は、加算器70からの乗算結果ブロックスケールファクタと、ブロックスケールファクタ検出器72からのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、乗算結果ブロックスケールファクタがブロックスケールファクタ検出器72からのブロックスケールファクタよりも大きいときは、補正ブロックスケールファクタを第2シフタ32に入力し、乗算結果ブロックスケールファクタの方が小さいときは、補正ブロックスケールファクタを第1シフタ35に入力するようになっている。すなわち、累積加算器33で加算を行う際には、シフタ制御装置71、第1シフタ35および第2シフタ32により両者の各データの桁位置が一致するように補正が行われる。
【0066】
制御ロジック400は、データメモリ100のデータに対して乗累算を行うときは、演算対象となる2つのデータブロックをデータメモリ100から読み出し、一方のデータブロックのデータを順次乗算器30に乗数として与えるとともに、他方のデータブロックのデータを順次乗算器30に被乗数として与える。そして、これと同時に、読み出した各データブロックのブロックスケールファクタを加算器70に与える。
【0067】
次に、上記第1の実施の形態の動作を図2を参照しながら説明する。図2は、乗累算を行う過程を時系列に示す図である。
まず、制御ロジック400により、図2に示すように、データブロックAおよびデータブロックBがデータメモリ100から読み出される。そして、制御ロジック400とシフタ制御装置71との連携により、補正ブロックスケールファクタが算出され、補正ブロックスケールファクタに基づいて第1スケール補正処理および第2スケール補正処理のうちいずれかが選択的に行われる。
【0068】
第1スケール補正処理は、ブロックスケールファクタ検出器72からのブロックスケールファクタが乗算結果ブロックスケールファクタよりも大きいときに行われる。第1スケール補正処理が行われると、補正ブロックスケールファクタが第1シフタ35に与えられ、データブロックAの1番目のデータが第1シフタ35に入力され、第1シフタ35により、補正ブロックスケールファクタに相当するシフト量で、データブロックAの1番目のデータに対して右シフトが行われる。また、これと同時に、データブロックBの1番目のデータが乗算器30に入力される。そして、乗算器30により、データブロックBおよび第1シフタ35からのデータブロックAを用いた乗算が行われ、その結果が乗算結果データブロックとして累積加算器33に入力される。累積加算器33では、加算を行う一方のデータが存在していないので、乗算器30からの乗算結果データブロックがそのまま第2シフタ32に入力される。これにより、上式(1)における右辺第1項に相当する演算が完了する。以下、第2シフタ32に入力された乗算結果データブロックをデータブロックCと称し、第1スケール補正処理による2回目以降の演算を説明する。
【0069】
2回目の演算では、補正ブロックスケールファクタが第1シフタ35に与えられ、データブロックAの2番目のデータが第1シフタ35に入力され、第1シフタ35により、補正ブロックスケールファクタに相当するシフト量で、データブロックAの2番目のデータに対して右シフトが行われる。また、これと同時に、データブロックBの2番目のデータが乗算器30に入力される。そして、乗算器30により、データブロックBおよび第1シフタ35からのデータブロックAを用いた乗算が行われ、その結果が乗算結果データブロックとして累積加算器33に入力される。すなわち、乗算結果データブロックのデータは、データブロックAに対する右シフトにより、データブロックCのデータと桁位置が一致するように補正される。
【0070】
一方、第2シフタ32にはスケールファクタが与えられることなく、データブロックCのデータが第2シフタ32に入力されるので、データブロックCのデータは、右シフトが行われずそのまま累積加算器33に入力される。最終的な加算では、累積加算器33により、桁位置が一致した状態で、乗算器30からの乗算結果データブロックおよび第2シフタ32からのデータブロックCを用いた加算が行われる。
【0071】
3回目以降の演算については、2回目の演算と同様であり、最終の演算が終了すると、累積加算器33からの加算結果データブロックがデータメモリ100に格納される。
また、第2スケール補正処理は、乗算結果ブロックスケールファクタがブロックスケールファクタ検出器72からのブロックスケールファクタよりも大きいときに行われる。なお、第2スケール補正処理による1回目の演算については、第1スケール補正処理による1回目の演算と同様であるので、2回目以降の演算を説明する。
【0072】
第2スケール補正処理が行われると、補正ブロックスケールファクタが第2シフタ32に与えられ、データブロックCのデータが第2シフタ32に入力され、第2シフタ32により、補正ブロックスケールファクタに相当するシフト量で、データブロックCのデータに対して右シフトが行われ、その結果が累積加算器33に入力される。すなわち、データブロックCのデータは、その右シフトにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【0073】
一方、第1シフタ35にはスケールファクタが与えられることなく、データブロックAの2番目のデータが第1シフタ35に入力されるので、データブロックAのデータは、右シフトが行われずそのまま乗算器30に入力される。また、これと同時に、データブロックBの2番目のデータが乗算器30に入力される。そして、乗算器30により、データブロックBおよび第1シフタ35からのデータブロックAを用いた乗算が行われ、その結果が乗算結果データブロックとして累積加算器33に入力される。最終的な加算では、累積加算器33により、桁位置が一致した状態で、乗算器30からの乗算結果データブロックおよび第2シフタ32からのデータブロックCを用いた加算が行われる。
【0074】
3回目以降の演算については、2回目の演算と同様であり、最終の演算が終了すると、累積加算器33からの加算結果データブロックがデータメモリ100に格納される。
したがって、異なる複数のデータブロック間で乗累算を行う場合には、上式(1),(2)に示すように、各乗累算が前段の乗累算の完了を待って直列に行われる。
【0075】
データA[i][0],X[i][0]を用いてY[0]を求める第1の乗累算と、データA[i][1],X[i][1]を用いてY[1]を求める第2の乗累算とを行うことを考える。第1の乗累算については、例えば、k個のデータを含むデータブロックA,Xが与えられたとき、累積加算器33による第1回目の演算により上式(1)の右辺第1項が演算され、累積加算器33による第2回目の演算により上式(1)の右辺第1項および第2項が演算され、同じ要領でこれをk回繰り返すことにより、累積加算器33からの加算結果データブロックが演算結果Y[0]として得られる。演算結果Y[0]は、演算が完了した時点でデータメモリ100に格納される。第2の乗累算についてもこれと同様である。
【0076】
このようにして、本実施の形態では、与えられたスケールファクタに基づいてデータブロックAの各データに対してスケーリングを行う第1シフタ35と、与えられたスケールファクタに基づいてデータブロックCの各データに対してスケーリングを行う第2シフタ32と、データブロックBおよび第1シフタ35からのデータブロックAを用いた乗算を行う乗算器30と、乗算器30からの乗算結果データブロックおよび第2シフタ32からのデータブロックCを用いた加算を行う累積加算器33とを備え、補正ブロックスケールファクタを算出し、補正ブロックスケールファクタを第1シフタ35に与え、データブロックAのデータを第1シフタ35に入力し、かつ、第2シフタ32にスケールファクタを与えず、データブロックCのデータを第2シフタ32に入力する第1スケール補正処理と、補正ブロックスケールファクタを第2シフタ32に与え、データブロックCのデータを第2シフタ32に入力し、かつ、第1シフタ35にスケールファクタを与えず、データブロックAのデータを第1シフタ35に入力する第2スケール補正処理とのうちいずれかを行うようになっている。
【0077】
これにより、第1シフタ35によるスケーリングを乗算前に行うので、従来に比して、第1シフタ35の回路規模を比較的縮小することができる。具体的に、上記第1の実施の形態では、従来40ビット必要であったものが16ビットにすることができる。また、乗算器30と累積加算器33との間に第1シフタ35を設けないので、クリティカルパスが改善され、従来に比して、演算負荷を比較的低減することができる。
【0078】
上記第1の実施の形態において、第1シフタ35は、請求項1、3、5、9、11または13記載の第1スケーリング手段に対応し、第2シフタ32は、請求項1、3、5、9、11または13記載の第2スケーリング手段に対応し、乗算器30は、請求項1、5または13記載の乗算手段に対応している。また、累積加算器33は、請求項1、5または13記載の加算手段に対応し、データメモリ100は、請求項5または13記載の記憶手段に対応し、ブロックスケールファクタ検出器72は、請求項5または13記載のブロックスケールファクタ検出手段に対応している。
【0079】
次に、本発明の第2の実施の形態を図面を参照しながら説明する。図3および図4は、本発明に係るデータ演算処理装置の第2の実施の形態を示す図である。なお、以下、上記第1の実施の形態と異なる部分についてのみ説明し、重複する部分については同一の符号を付して説明を省略する。
本実施の形態は、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図3に示すように、ブロックフローティング方式により乗累算を行う場合について適用したものであり、上記第1の実施の形態と異なるのは、異なる複数のデータブロック間で乗累算を並列に行う点にある。
【0080】
まず、本発明に係るデータ演算処理装置の構成を図3を参照しながら説明する。図3は、本発明に係るデータ演算処理装置の構成を示すブロック図である。
本発明に係るデータ演算処理装置は、図3に示すように、上記第1の実施の形態におけるデータ演算処理装置とほぼ同一の構成であるが、異なるのは、シフタ制御装置71が、加算器70からの乗算結果ブロックスケールファクタのほかデータバス110から与えられるブロックスケールファクタに基づいて第1シフタ35および第2シフタ32を制御するようになっている点、累積加算器33に代えて加算器34を設けた点、および第2シフタ32への入力がデータバス110からとなっている点である。
【0081】
次に、上記第2の実施の形態の動作を図4を参照しながら説明する。図4は、乗累算を行う過程を時系列に示す図である。
まず、制御ロジック400により、図4に示すように、データブロックAおよびデータブロックBがデータメモリ100から読み出される。そして、制御ロジック400とシフタ制御装置71との連携により、補正ブロックスケールファクタが算出され、補正ブロックスケールファクタに基づいて第1スケール補正処理および第2スケール補正処理のうちいずれかが選択的に行われる。
【0082】
第1スケール補正処理は、ブロックスケールファクタ検出器72からのブロックスケールファクタが乗算結果ブロックスケールファクタよりも大きいときに行われる。第1スケール補正処理が行われると、補正ブロックスケールファクタが第1シフタ35に与えられ、データブロックAの1番目のデータが第1シフタ35に入力され、第1シフタ35により、補正ブロックスケールファクタに相当するシフト量で、データブロックAの1番目のデータに対して右シフトが行われる。また、これと同時に、データブロックBの1番目のデータが乗算器30に入力される。そして、乗算器30により、データブロックBおよび第1シフタ35からのデータブロックAを用いた乗算が行われ、その結果が乗算結果データブロックとして加算器34に入力される。加算器34では、加算を行う一方のデータが存在していないので、加算器34からの加算結果データブロックがデータメモリ100に格納される。以下、データメモリ100に格納された加算結果データブロックをデータブロックCと称し、第1スケール補正処理による2回目以降の演算を説明する。
【0083】
2回目の演算では、補正ブロックスケールファクタが第1シフタ35に与えられ、データブロックAの2番目のデータが第1シフタ35に入力され、第1シフタ35により、補正ブロックスケールファクタに相当するシフト量で、データブロックAの2番目のデータに対して右シフトが行われる。また、これと同時に、データブロックBの2番目のデータが乗算器30に入力される。そして、乗算器30により、データブロックBおよび第1シフタ35からのデータブロックAを用いた乗算が行われ、その結果が乗算結果データブロックとして加算器34に入力される。すなわち、乗算結果データブロックのデータは、データブロックAに対する右シフトにより、データブロックCのデータと桁位置が一致するように補正される。
【0084】
一方、第2シフタ32にはスケールファクタが与えられることなく、データブロックCのデータが第2シフタ32に入力されるので、データブロックCのデータは、右シフトが行われずそのまま加算器34に入力される。最終的な加算では、加算器34により、桁位置が一致した状態で、乗算器30からの乗算結果データブロックおよび第2シフタ32からのデータブロックCを用いた加算が行われる。加算器34からの加算結果データブロックは、またデータメモリ100に格納される。
【0085】
3回目以降の演算については、2回目の演算と同様であり、最終の演算が終了すると、乗累算が完了した加算結果データブロックがデータメモリ100に格納される。
また、第2スケール補正処理は、乗算結果ブロックスケールファクタがブロックスケールファクタ検出器72からのブロックスケールファクタよりも大きいときに行われる。なお、第2スケール補正処理による1回目の演算については、第1スケール補正処理による1回目の演算と同様であるので、2回目以降の演算を説明する。
【0086】
第2スケール補正処理が行われると、補正ブロックスケールファクタが第2シフタ32に与えられ、データブロックCのデータが第2シフタ32に入力され、第2シフタ32により、補正ブロックスケールファクタに相当するシフト量で、データブロックCのデータに対して右シフトが行われ、その結果が加算器34に入力される。すなわち、データブロックCのデータは、その右シフトにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【0087】
一方、第1シフタ35にはスケールファクタが与えられることなく、データブロックAの2番目のデータが第1シフタ35に入力されるので、データブロックAのデータは、右シフトが行われずそのまま乗算器30に入力される。また、これと同時に、データブロックBの2番目のデータが乗算器30に入力される。そして、乗算器30により、データブロックBおよび第1シフタ35からのデータブロックAを用いた乗算が行われ、その結果が乗算結果データブロックとして加算器34に入力される。最終的な加算では、加算器34により、桁位置が一致した状態で、乗算器30からの乗算結果データブロックおよび第2シフタ32からのデータブロックCを用いた加算が行われる。加算器34からの加算結果データブロックは、またデータメモリ100に格納される。
【0088】
3回目以降の演算については、2回目の演算と同様であり、最終の演算が終了すると、乗累算が完了した加算結果データブロックがデータメモリ100に格納される。
したがって、異なる複数のデータブロック間で乗累算を行う場合には、上式(3)〜(8)に示すように、各乗累算を、前段の乗累算の完了を待つことなく並列に行うことができる。
【0089】
データA[i][0],X[i][0]を用いてY[0]を求める第1の乗累算と、データA[i][1],X[i][1]を用いてY[1]を求める第2の乗累算とを行うことを考える。第1の乗累算と第2の乗累算は、並列して行われる。第1の乗累算については、例えば、k個のデータを含むデータブロックA[0],X[0]が与えられたとき、まず、データブロックA[0],X[0]の1番目のデータを乗算器30に与え、上式(3)のように、加算器34による演算により第1項が演算され、その結果がY'''[0]としてデータメモリ100に格納される。そして、上式(4)に示すように、同じ要領で第2の乗累算における第1項が演算され、その結果がY'''[1]としてデータメモリ100に格納される。
【0090】
次いで、第1の乗累算については、データブロックA[0],X[0]の2番目のデータを乗算器30に、Y'''[0]を第2シフタ32にそれぞれ与え、上式(5)のように、加算器34による演算により第1項および第2項が演算され、その結果がY''[0]としてデータメモリ100に格納される。そして、上式(6)に示すように、同じ要領で第2の乗累算における第1項および第2項が演算され、その結果がY''[1]としてデータメモリ100に格納される。
【0091】
その後は、同じ要領でこれを交互にk回繰り返すことにより、データメモリ100には、第1の乗累算結果および第2の乗累算結果がそれぞれ格納されることになる。
このようにして、本実施の形態では、与えられたスケールファクタに基づいてデータブロックAの各データに対してスケーリングを行う第1シフタ35と、与えられたスケールファクタに基づいてデータブロックCの各データに対してスケーリングを行う第2シフタ32と、データブロックBおよび第1シフタ35からのデータブロックAを用いた乗算を行う乗算器30と、乗算器30からの乗算結果データブロックおよび第2シフタ32からのデータブロックCを用いた加算を行う加算器34とを備え、補正ブロックスケールファクタを算出し、補正ブロックスケールファクタを第1シフタ35に与え、データブロックAのデータを第1シフタ35に入力し、かつ、第2シフタ32にスケールファクタを与えず、データブロックCのデータを第2シフタ32に入力する第1スケール補正処理と、補正ブロックスケールファクタを第2シフタ32に与え、データブロックCのデータを第2シフタ32に入力し、かつ、第1シフタ35にスケールファクタを与えず、データブロックAのデータを第1シフタ35に入力する第2スケール補正処理とのうちいずれかを行うようになっている。
【0092】
これにより、上記第1の実施の形態と同等の効果が得られる。
上記第2の実施の形態において、第1シフタ35は、請求項1、3、6、9、11または14記載の第1スケーリング手段に対応し、第2シフタ32は、請求項1、3、6、9、11または14記載の第2スケーリング手段に対応し、乗算器30は、請求項1、6または14記載の乗算手段に対応している。また、加算器34は、請求項1、6または14記載の加算手段に対応し、データメモリ100は、請求項6または14記載の記憶手段に対応し、ブロックスケールファクタ検出器72は、請求項6または14記載のブロックスケールファクタ検出手段に対応している。
【0093】
次に、本発明の第3の実施の形態を図面を参照しながら説明する。図5および図6は、本発明に係るデータ演算処理装置の第3の実施の形態を示す図である。本実施の形態は、本発明に係るデータ演算処理装置およびデータ演算処理プログラムを、図5に示すように、ブロックフローティング方式により乗累算を行う場合について適用したものであり、上記第1および第2の実施の形態と異なるのは、複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、データブロックは、ブロックスケールファクタのほか各データグループのグループスケールファクタを含む点にある。
【0094】
まず、本発明に係るデータ演算処理装置の構成を図5を参照しながら説明する。図5は、本発明に係るデータ演算処理装置の構成を示すブロック図である。
本発明に係るデータ演算処理装置は、図5に示すように、データを記憶するためのデータメモリ100と、データメモリ100のデータに対して乗累算を行う演算部200と、ブロックフローティングに必要な正規化を行うための制御部300と、これらの制御を行う制御ロジック400と、アドレス生成器500とで構成されている。データメモリ100、演算部200、制御部300および制御ロジック400は、データバス110で相互にかつデータ授受可能に接続されており、データメモリ100およびアドレス生成器500は、データアドレスバス120で相互にかつデータ授受可能に接続されている。
【0095】
データメモリ100は、図示しない外部からデータを入力し、演算部200の演算対象となるデータとして格納するようになっている。データメモリ100では、データは、図6に示すように、データブロック単位で格納される。図6は、データメモリ100におけるデータ構造を示す図である。データメモリ100では、図6に示すように、データが計算ユニットの数に相当する個数(この場合、k個)組合わさってデータグループとして格納され、さらに、データグループが複数組合わさってデータブロックとして格納される。すなわち、データブロックは、複数のデータグループを含んで構成され、データグループは、計算ユニットの数に相当する個数のデータを含んで構成されている。
【0096】
演算部200は、同一機能を有するk個の計算ユニットP0〜Pk-1で構成されている。各計算ユニットP0〜Pk-1には、1つのデータグループのデータがそれぞれ振り分けられ、各計算ユニットP0〜Pk-1は、データグループ単位でデータを並列処理する。
各計算ユニットP0〜Pk-1は、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第2シフタ10と、第2シフタ10からのデータを保持する入力レジスタ18a,18bと、入力レジスタ18a,18bのデータを乗算する乗算器20と、乗算器20からのデータと累積レジスタ26のデータを加算する累積加算器22と、第2シフタ10の出力および累積加算器22の出力を切り換えるセレクタ24と、セレクタ24からのデータを保持する累積レジスタ26と、累積レジスタ26のデータのスケールファクタを算出するユニットスケールファクタ検出器14と、与えられたスケールファクタに基づいて累積レジスタ26のデータに対してスケーリングを行う第1シフタ16とで構成されている。
【0097】
第2シフタ10は、与えられたスケールファクタに相当するシフト量で、与えられたデータに対して右シフトを行うようになっており、第1シフタ16は、与えられたスケールファクタに相当するシフト量で、累積レジスタ26のデータに対して左シフトを行うようになっている。
制御部300は、ユニットスケールファクタ検出器14で算出したスケールファクタからグループスケールファクタを検出するグループスケールファクタ検出器50と、グループスケールファクタを格納するグループスケールファクタレジスタファイル52と、グループスケールファクタ検出器50で算出したスケールファクタからブロックスケールファクタを検出するブロックスケールファクタ検出器54と、ブロックスケールファクタを格納するブロックスケールファクタレジスタ56と、加減算器58と、グループスケールファクタとブロックスケールファクタの差分を計算する桁合わせ用加算器60とで構成されている。
【0098】
グループスケールファクタ検出器50は、各計算ユニットP0〜Pk-1のユニットスケールファクタ検出器14で算出したスケールファクタうち最小のものをグループスケールファクタとして検出し、制御ロジック400の制御により、検出したグループスケールファクタをグループスケールファクタレジスタファイル52および各計算ユニットP0〜Pk-1の第1シフタ16に出力するようになっている。例えば、各計算ユニットP0〜Pk-1(例えば、k=3)のユニットスケールファクタ検出器14からスケールファクタとして「1」、「2」、「3」を入力した場合、そのうちの最小値である「1」をそのグループスケールファクタとして検出する。
【0099】
グループスケールファクタレジスタファイル52は、グループスケールファクタ検出器50で検出したグループスケールファクタをそれぞれ一時的に格納し、制御ロジック400の制御により、データメモリ100または桁合わせ用加算器60にグループスケールファクタを出力するようになっている。
ブロックスケールファクタ検出器54は、グループスケールファクタ検出器50で検出したグループスケールファクタのうち最小のものをブロックスケールファクタとして検出するようになっている。例えば、あるデータブロックのグループスケールファクタが「3」、「4」、「5」として検出された場合、そのうちの最小値である「3」をそのブロックスケールファクタとして検出する。
【0100】
ブロックスケールファクタレジスタ56は、ブロックスケールファクタ検出器54で検出したブロックスケールファクタを一時的に格納し、制御ロジック400の制御により、データメモリ100または桁合わせ用加算器60にグループスケールファクタを出力するようになっている。
桁合わせ用加算器60は、グループスケールファクタレジスタファイル52から出力されたグループスケールファクタと、ブロックスケールファクタレジスタ56から出力されたブロックスケールファクタとを入力し、グループスケールファクタからブロックスケールファクタを減算してその差分を計算し、制御ロジック400の制御により、その差分からなるスケールファクタを各計算ユニットP0〜Pk-1の第2シフタ10に出力するようになっている。
【0101】
制御ロジック400は、データメモリ100のデータに対して初めて演算を行うときは、次の制御処理を実行するようになっている。
まず、乗算対象となる2つのデータブロックをデータメモリ100から読み出し、一方のデータブロックの各データグループごとに、そのデータグループのデータをそれぞれ第2シフタ10を介して各計算ユニットP0〜Pk-1の入力レジスタ18aに振り分ける。また、他方のデータブロックの各データグループごとに、そのデータグループのデータをそれぞれ第2シフタ10を介して各計算ユニットP0〜Pk-1の入力レジスタ18bに振り分ける。
【0102】
そして、グループスケールファクタ検出器50で検出したグループスケールファクタを各計算ユニットP0〜Pk-1の第1シフタ16に与え、各計算ユニットP0〜Pk-1の第1シフタ16からのデータをデータバス110経由でデータメモリ100に格納する。
また、制御ロジック400は、データメモリ100のデータに対して再度演算を行うときは、次の制御処理を実行するようになっている。
【0103】
まず、乗算対象となる2つのデータブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、加算結果データブロックのブロックスケールファクタとの差分である補正ブロックスケールファクタを算出し、補正ブロックスケールファクタに基づいて第1スケール補正処理および第2スケール補正処理のうちいずれかを選択的に行う。
【0104】
第1スケール補正処理は、加算結果データブロックのブロックスケールファクタが乗算結果ブロックスケールファクタよりも小さいときに行う。第1スケール補正処理では、乗算対象となる2つのデータブロックをデータメモリ100から読み出し、一方のデータブロックの各データグループごとに、そのデータグループのグループスケールファクタとそのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものを第2シフタ10に与え、そのデータグループのデータをそれぞれ第2シフタ10を介して各計算ユニットP0〜Pk-1の入力レジスタ18aに振り分ける。また、他方のデータブロックの各データグループごとに、そのデータグループのグループスケールファクタとそのブロックスケールファクタとの差分からなるスケールファクタを第2シフタ10に与え、そのデータグループのデータをそれぞれ第2シフタ10を介して各計算ユニットP0〜Pk-1の入力レジスタ18bに振り分ける。
【0105】
一方、加算結果データブロックをデータメモリ100から読み出し、加算結果データブロックの各データグループごとに、そのデータグループのグループスケールファクタとそのブロックスケールファクタとの差分からなるスケールファクタを第2シフタ10に与え、そのデータグループのデータをそれぞれ第2シフタ10、セレクタ24および累積レジスタ26を介して各計算ユニットP0〜Pk-1の累積加算器22に振り分ける。
【0106】
また、第2スケール補正処理は、乗算結果ブロックスケールファクタが加算結果データブロックのブロックスケールファクタよりも小さいときに行う。第2スケール補正処理では、乗算対象となる2つのデータブロックをデータメモリ100から読み出し、一方のデータブロックの各データグループごとに、そのデータグループのグループスケールファクタとそのブロックスケールファクタとの差分からなるスケールファクタを第2シフタ10に与え、そのデータグループのデータをそれぞれ第2シフタ10を介して各計算ユニットP0〜Pk-1の入力レジスタ18aに振り分ける。また、他方のデータブロックの各データグループごとに、そのデータグループのグループスケールファクタとそのブロックスケールファクタとの差分からなるスケールファクタを第2シフタ10に与え、そのデータグループのデータをそれぞれ第2シフタ10を介して各計算ユニットP0〜Pk-1の入力レジスタ18bに振り分ける。
【0107】
一方、加算結果データブロックをデータメモリ100から読み出し、加算結果データブロックの各データグループごとに、そのデータグループのグループスケールファクタとそのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものを第2シフタ10に与え、そのデータグループのデータをそれぞれ第2シフタ10、セレクタ24および累積レジスタ26を介して各計算ユニットP0〜Pk-1の累積加算器22に振り分ける。
【0108】
次に、上記第3の実施の形態の動作を説明する。
各計算ユニットP0〜Pk-1では、制御ロジック400の制御およびセレクタ24の切換により、第2シフタ10が、上記第2の実施の形態における第1シフタ35および第2シフタ32の役割を果たし、上記第2の実施の形態とほぼ同様の動作が行われる。したがって、上記第2の実施の形態の動作例を参照して2回目以降の演算を説明する。
【0109】
まず、制御ロジック400により、データブロックAおよびデータブロックBがデータメモリ100から読み出される。そして、制御ロジック400により、補正ブロックスケールファクタが算出され、補正ブロックスケールファクタに基づいて第1スケール補正処理および第2スケール補正処理のうちいずれかが選択的に行われる。
【0110】
第1スケール補正処理が行われると、データブロックAの各データグループごとに、そのデータグループのグループスケールファクタとデータブロックAのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが各計算ユニットP0〜Pk-1の第2シフタ10に与えられ、そのデータグループのデータがそれぞれ第2シフタ10および入力レジスタ18aを介して各計算ユニットP0〜Pk-1の乗算器20に乗数として入力される。したがって、第2シフタ10により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、データブロックAの各データに対して右シフトが行われる。また、データブロックBの各データグループごとに、そのデータグループのグループスケールファクタとデータブロックBのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットP0〜Pk-1の第2シフタ10に与えられ、そのデータグループのデータがそれぞれ第2シフタ10および入力レジスタ18bを介して各計算ユニットP0〜Pk-1の乗算器20に被乗数として入力される。したがって、第2シフタ10により、各グループスケールファクタおよびブロックスケールファクタに基づいて、データブロックBの各データに対して右シフトが行われる。そして、乗算器20により、第2シフタ10からのデータブロックAおよびデータブロックBを用いた乗算が行われ、その結果が乗算結果データブロックとして累積加算器22に入力される。すなわち、乗算結果データブロックの各データは、データブロックAに対する補正ブロックスケールファクタによる右シフトにより、データブロックCのデータと桁位置が一致するように補正される。
【0111】
一方、データブロックCの各データグループごとに、そのデータグループのグループスケールファクタとデータブロックCのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットP0〜Pk-1の第2シフタ10に与えられ、そのデータグループのデータがそれぞれ第2シフタ10、セレクタ24および累積レジスタ26を介して各計算ユニットP0〜Pk-1の累積加算器22に入力される。したがって、第2シフタ10により、各グループスケールファクタおよびブロックスケールファクタに基づいて、データブロックCの各データに対して右シフトが行われる。最終的な加算では、累積加算器22により、桁位置が一致した状態で、乗算器20からの乗算結果データブロックおよび第2シフタ10からのデータブロックCを用いた加算が行われる。
【0112】
また、第2スケール補正処理が行われると、データブロックCの各データグループごとに、そのデータグループのグループスケールファクタとデータブロックCのブロックスケールファクタとの差分からなるスケールファクタに補正ブロックスケールファクタを加算したものが各計算ユニットP0〜Pk-1の第2シフタ10に与えられ、そのデータグループのデータがそれぞれ第2シフタ10、セレクタ24および累積レジスタ26を介して各計算ユニットP0〜Pk-1の累積加算器22に入力される。したがって、第2シフタ10により、各グループスケールファクタ、ブロックスケールファクタおよび補正ブロックスケールファクタに基づいて、データブロックCの各データに対して右シフトが行われ、その結果が累積加算器22に入力される。すなわち、データブロックCの各データは、補正ブロックスケールファクタによる右シフトにより、乗算結果データブロックのデータと桁位置が一致するように補正される。
【0113】
一方、データブロックAの各データグループごとに、そのデータグループのグループスケールファクタとデータブロックAのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットP0〜Pk-1の第2シフタ10に与えられ、そのデータグループのデータがそれぞれ第2シフタ10および入力レジスタ18aを介して各計算ユニットP0〜Pk-1の乗算器20に乗数として入力される。したがって、第2シフタ10により、各グループスケールファクタおよびブロックスケールファクタに基づいて、データブロックAの各データに対して右シフトが行われる。また、データブロックBの各データグループごとに、そのデータグループのグループスケールファクタとデータブロックBのブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットP0〜Pk-1の第2シフタ10に与えられ、そのデータグループのデータがそれぞれ第2シフタ10および入力レジスタ18bを介して各計算ユニットP0〜Pk-1の乗算器20に被乗数として入力される。したがって、第2シフタ10により、各グループスケールファクタおよびブロックスケールファクタに基づいて、データブロックBの各データに対して右シフトが行われる。そして、乗算器20により、第2シフタ10からのデータブロックAおよびデータブロックBを用いた乗算が行われ、その結果が乗算結果データブロックとして累積加算器22に入力される。最終的な加算では、累積加算器22により、桁位置が一致した状態で、乗算器20からの乗算結果データブロックおよび第2シフタ10からのデータブロックCを用いた加算が行われる。
【0114】
このようにして、本実施の形態では、各計算ユニットP0〜Pk-1は、与えられたスケールファクタに基づいてデータに対して右シフトを行う第2シフタ10と、第2シフタ10からのデータに対して乗算を行う乗算器20と、第2シフタ10からのデータおよび乗算器20からのデータに対して加算を行う累積加算器22とを有し、制御ロジック400は、データブロックA〜Cをデータメモリ100から読み出し、データブロックAおよびデータブロックCのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、データブロックBのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第1スケール補正処理および第2スケール補正処理のいずれかを行うようになっている。
【0115】
これにより、上記第2の実施の形態と同等の効果が得られる。
上記第3の実施の形態において、第2シフタ10は、請求項7若しくは15記載の第1スケーリング手段、または請求項7若しくは15記載の第2スケーリング手段に対応し、乗算器20は、請求項7記載の乗算手段に対応し、累積加算器22は、請求項7記載の加算手段に対応している。
【0116】
上記第3の実施の形態において、第2シフタ10は、請求項8または16記載のスケーリング手段に対応し、乗算器20は、請求項8または16記載の乗算手段に対応し、累積加算器22は、請求項8または16記載の加算手段に対応し、データメモリ100は、請求項8または16記載の記憶手段に対応している。また、制御ロジック400は、請求項8または16記載の制御手段に対応している。
【0117】
なお、上記第1ないし第3の実施の形態においては、加算対象となる2つのデータブロックのうちブロックスケールファクタの小さいものの各データに対して、右シフトを行うことにより桁位置を一致させるように構成したが、これに限らず、加算対象となる2つのデータブロックのうちブロックスケールファクタの大きいものの各データに対して、左シフトを行うことにより桁位置を一致させるように構成してもよい。
【0118】
また、上記第1ないし第3の実施の形態においては、数値演算を行うのに本発明を適用した場合について説明したが、これに限らず、本発明の主旨を逸脱しない範囲で他のものにも適用可能である。
また、上記第1ないし第3の実施の形態においては、制御ロジック400を、内部のロジックに従って各部の制御を行うように構成したが、これに限らず、制御ロジック400に代えて、CPU、RAMおよびROMをバス接続してデータ演算処理部を構成し、データ演算処理部は、CPUにより、上記の制御手順を示したプログラムをROMから読み出して実行するように構成してもよい。この場合、上記の制御手順を示したプログラムは、ROMに格納されるに限らず、上記の制御手順を示したプログラムが記憶された記憶媒体から、そのプログラムをRAMに読み込んで実行するようにしてもよい。
【0119】
また、上記第1ないし第3の実施の形態においては、本発明に係るデータ演算処理装置を、データメモリ100と、演算部200,250と、制御部300と、制御ロジック400と、アドレス生成器500とを備えたハードウェアで構成したが、これに限らず、例えば、CPU、RAMおよびROMをバス接続して構成し、CPUにより、各部の機能を実現するための制御プログラムをROMから読み出して実行するように、一部または全部をソフトウェアで構成してもよい。この場合も、制御プログラムは、ROMに格納されるに限らず、制御プログラムが記憶された記憶媒体から、その制御プログラムをRAMに読み込んで実行するようにしてもよい。
【0120】
ここで、記憶媒体とは、RAM、ROM等の半導体記憶媒体、FD、HD等の磁気記憶型記憶媒体、CD、CDV、LD、DVD等の光学的読取方式記憶媒体、MO等の磁気記憶型/光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【0121】
【発明の効果】
以上説明したように、本発明に係る請求項1ないし7記載のデータ演算処理装置によれば、第1スケーリング手段によるスケーリングを乗算前に行うので、従来に比して、第1スケーリング手段の回路規模を比較的縮小することができるという効果が得られる。また、乗算手段と加算手段との間に第1スケーリング手段を設けないので、クリティカルパスが改善され、従来に比して、演算負荷を比較的低減することができるという効果も得られる。
【0122】
さらに、本発明に係る請求項8記載のデータ演算処理装置によれば、スケーリング手段によるスケーリングを乗算前に行うので、従来に比して、スケーリング手段の回路規模を比較的縮小することができるという効果が得られる。また、乗算手段と加算手段との間にスケーリング手段を設けないので、クリティカルパスが改善され、従来に比して、演算負荷を比較的低減することができるという効果も得られる。
【0123】
一方、本発明に係る請求項9ないし15記載のデータ演算処理プログラムによれば、請求項1記載のデータ演算処理装置と同等の効果が得られる。
さらに、本発明に係る請求項16記載のデータ演算処理プログラムによれば、請求項8記載のデータ演算処理装置と同等の効果が得られる。
【図面の簡単な説明】
【図1】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図2】乗累算を行う過程を時系列に示す図である。
【図3】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図4】乗累算を行う過程を時系列に示す図である。
【図5】本発明に係るデータ演算処理装置の構成を示すブロック図である。
【図6】データメモリ100におけるデータ構造を示す図である。
【図7】ブロックフローティング方式による従来のデータ演算処理装置の構成を示すブロック図である。
【図8】ブロックフローティング方式による従来のデータ演算処理装置の構成を示すブロック図である。
【符号の説明】
10,32 第2シフタ
14 ユニットスケールファクタ検出器
16,31,35 第1シフタ
18a,18b 入力レジスタ
20,30 乗算器
22,33 累積加算器
24 セレクタ
26 累積レジスタ
34,70 加算器
50 グループスケールファクタ検出器
52 グループスケールファクタレジスタファイル
54,72 ブロックスケールファクタ検出器
56 ブロックスケールファクタレジスタ
58 加減算器
60 桁合わせ用加算器
71 シフタ制御装置
100 データメモリ
110 データバス
120 アドレスバス
200,250 演算部
300,350 制御部
400 制御ロジック
500 アドレス生成器
Claims (16)
- 1又は複数のデータを含んでデータブロックを構成し、前記データブロックは、前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、
与えられたスケールファクタに基づいて第1データブロックの各データに対してスケーリングを行う第1スケーリング手段と、与えられたスケールファクタに基づいて第2データブロックの各データに対してスケーリングを行う第2スケーリング手段と、第3データブロック及び前記第1スケーリング手段からの第1データブロックを用いた乗算を行う乗算手段と、前記乗算手段からの乗算結果データブロック及び前記第2スケーリング手段からの第2データブロックを用いた加算を行う加算手段とを備え、
前記第1データブロック及び前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、
前記補正ブロックスケールファクタを前記第1スケーリング手段に与え、前記第1データブロックのデータを前記第1スケーリング手段に入力し、且つ、前記第2スケーリング手段にスケールファクタを与えず、前記第2データブロックのデータを前記第2スケーリング手段に入力する第1スケール補正処理と、
前記補正ブロックスケールファクタを前記第2スケーリング手段に与え、前記第2データブロックのデータを前記第2スケーリング手段に入力し、且つ、前記第1スケーリング手段にスケールファクタを与えず、前記第1データブロックのデータを前記第1スケーリング手段に入力する第2スケール補正処理とのうちいずれかを行うようになっていることを特徴とするデータ演算処理装置。 - 請求項1において、
前記乗算結果ブロックスケールファクタ及び前記第2データブロックのブロックスケールファクタの大小関係に基づいて、前記第1スケール補正処理及び前記第2スケール補正処理のいずれかを選択的に行うようになっていることを特徴とするデータ演算処理装置。 - 請求項2において、
前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、
前記第2スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、
前記第2データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第1スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第2データブロックのブロックスケールファクタよりも大きいときは、前記第2スケール補正処理を行うようになっていることを特徴とするデータ演算処理装置。 - 請求項2において、
前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、
前記第2スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、
前記第2データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第2スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第2データブロックのブロックスケールファクタよりも大きいときは、前記第1スケール補正処理を行うようになっていることを特徴とするデータ演算処理装置。 - 請求項1乃至4のいずれかにおいて、
データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とを備え、
前記第1データブロック及び前記第3データブロックのデータを前記記憶手段から読み出し、読み出した第1データブロックのデータを前記第1スケーリング手段に入力するとともに、読み出した第3データブロックのデータを前記乗算手段に入力し、
前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第2データブロックを構成し、構成した第2データブロックのデータを前記記憶手段に格納するとともに前記第2スケーリング手段に入力するようになっていることを特徴とするデータ演算処理装置。 - 請求項1乃至4のいずれかにおいて、
データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とを備え、
前記第1データブロック及び前記第3データブロックのデータを前記記憶手段から読み出し、読み出した第1データブロックのデータを前記第1スケーリング手段に入力するとともに、読み出した第3データブロックのデータを前記乗算手段に入力し、
前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第2データブロックを構成し、構成した第2データブロックのデータを前記記憶手段に格納し、再演算を行うときは、前記第2データブロックのデータを前記記憶手段から読み出し、読み出した第2データブロックのデータを前記第2スケーリング手段に入力するようになっていることを特徴とするデータ演算処理装置。 - 1又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタ及び前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、
与えられたスケールファクタに基づいて第1データブロックの各データに対してスケーリングを行う第1スケーリング手段と、与えられたスケールファクタに基づいて第2データブロックの各データに対してスケーリングを行う第2スケーリング手段と、第3データブロック及び前記第1スケーリング手段からの第1データブロックを用いた乗算を行う乗算手段と、前記乗算手段からの乗算結果データブロック及び前記第2スケーリング手段からの第2データブロックを用いた加算を行う加算手段とを備え、
前記第1データブロック及び前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、
前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第1スケーリング手段に与え、当該データグループのデータを前記第1スケーリング手段に入力し、且つ、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第2スケーリング手段に与え、当該データグループのデータを前記第2スケーリング手段に入力する第1スケール補正処理と、
前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第2スケーリング手段に与え、当該データグループのデータを前記第2スケーリング手段に入力し、且つ、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第1スケーリング手段に与え、当該データグループのデータを前記第1スケーリング手段に入力する第2スケール補正処理とのうちいずれかを行うようになっていることを特徴とするデータ演算処理装置。 - 複数の計算ユニットを備え、1又は複数のデータを含んでデータグループを構成し、さらに複数のデータグループを含んでデータブロックを構成し、前記データブロックは、前記各データグループのグループスケールファクタ及び前記データブロックのブロックスケールファクタを含み、前記データブロック単位でデータを処理する装置であって、
前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行うスケーリング手段と、前記スケーリング手段からのデータに対して乗算を行う乗算手段と、前記スケーリング手段からのデータ及び前記乗算手段からのデータに対して加算を行う加算手段とを有し、
さらに、データを記憶するための記憶手段と、データ処理のための制御を行う制御手段とを備え、
前記制御手段は、第1データブロック、第2データブロック及び第3データブロックを前記記憶手段から読み出し、前記第1データブロック及び前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第1スケール補正処理及び第2スケール補正処理のいずれかを行うようになっており、
前記第1スケール補正処理は、
前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、
前記第3データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第3データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、
前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であり、
前記第2スケール補正処理は、
前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、
前記第3データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第3データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、
前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であることを特徴とするデータ演算処理装置。 - コンピュータからなる請求項1記載のデータ演算処理装置に実行させるためのプログラムであって、
前記第1データブロック及び前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、
前記補正ブロックスケールファクタを前記第1スケーリング手段に与え、前記第1データブロックのデータを前記第1スケーリング手段に入力し、且つ、前記第2スケーリング手段にスケールファクタを与えず、前記第2データブロックのデータを前記第2スケーリング手段に入力する第1スケール補正処理と、
前記補正ブロックスケールファクタを前記第2スケーリング手段に与え、前記第2データブロックのデータを前記第2スケーリング手段に入力し、且つ、前記第1スケーリング手段にスケールファクタを与えず、前記第1データブロックのデータを前記第1スケーリング手段に入力する第2スケール補正処理とのうちいずれかを行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。 - 請求項9において、
前記乗算結果ブロックスケールファクタ及び前記第2データブロックのブロックスケールファクタの大小関係に基づいて、前記第1スケール補正処理及び前記第2スケール補正処理のいずれかを選択的に行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。 - 請求項10において、
前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、
前記第2スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して下位ビットの方向へビットシフトを行うようになっており、
前記第2データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第1スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第2データブロックのブロックスケールファクタよりも大きいときは、前記第2スケール補正処理を行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。 - 請求項10において、
前記第1スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、
前記第2スケーリング手段は、与えられたスケールファクタに相当するシフト量で、入力したデータに対して上位ビットの方向へビットシフトを行うようになっており、
前記第2データブロックのブロックスケールファクタが前記乗算結果ブロックスケールファクタよりも大きいときは、前記第2スケール補正処理を行い、前記乗算結果ブロックスケールファクタが前記第2データブロックのブロックスケールファクタよりも大きいときは、前記第1スケール補正処理を行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。 - 請求項9乃至12のいずれかにおいて、
データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とが利用可能となっており、
前記第1データブロック及び前記第3データブロックのデータを前記記憶手段から読み出し、読み出した第1データブロックのデータを前記第1スケーリング手段に入力するとともに、読み出した第3データブロックのデータを前記乗算手段に入力し、
前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第2データブロックを構成し、構成した第2データブロックのデータを前記記憶手段に格納するとともに前記第2スケーリング手段に入力する処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。 - 請求項9乃至12のいずれかにおいて、
データを記憶するための記憶手段と、前記加算手段からの加算結果データブロックについて前記ブロックスケールファクタを検出するブロックスケールファクタ検出手段とが利用可能となっており、
前記第1データブロック及び前記第3データブロックのデータを前記記憶手段から読み出し、読み出した第1データブロックのデータを前記第1スケーリング手段に入力するとともに、読み出した第3データブロックのデータを前記乗算手段に入力し、
前記ブロックスケールファクタ検出手段で検出したブロックスケールファクタを前記加算結果データブロックに含めて前記第2データブロックを構成し、構成した第2データブロックのデータを前記記憶手段に格納し、再演算を行うときは、前記第2データブロックのデータを前記記憶手段から読み出し、読み出した第2データブロックのデータを前記第2スケーリング手段に入力する処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。 - コンピュータからなる請求項7記載のデータ演算処理装置に実行させるためのプログラムであって、
前記第1データブロック及び前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、
前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第1スケーリング手段に与え、当該データグループのデータを前記第1スケーリング手段に入力し、且つ、前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第2スケーリング手段に与え、当該データグループのデータを前記第2スケーリング手段に入力する第1スケール補正処理と、
前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記第2スケーリング手段に与え、当該データグループのデータを前記第2スケーリング手段に入力し、且つ、前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記第1スケーリング手段に与え、当該データグループのデータを前記第1スケーリング手段に入力する第2スケール補正処理とのうちいずれかを行う処理を実行させるためのプログラムであることを特徴とするデータ演算処理プログラム。 - コンピュータからなる請求項8記載のデータ演算処理装置における制御手段に実行させるためのプログラムであって、
第1データブロック、第2データブロック及び第3データブロックを前記記憶手段から読み出し、前記第1データブロック及び前記第3データブロックのブロックスケールファクタの和である乗算結果ブロックスケールファクタと、前記第2データブロックのブロックスケールファクタとの差分からなる補正ブロックスケールファクタを算出し、算出した補正ブロックスケールファクタに基づいて第1スケール補正処理及び第2スケール補正処理のいずれかを行う処理を実行させるためのプログラムであり、
前記第1スケール補正処理は、
前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、
前記第3データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第3データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、
前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であり、
前記第2スケール補正処理は、
前記第1データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第1データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に乗数として入力し、
前記第3データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第3データブロックのブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの乗算手段に被乗数として入力し、
前記第2データブロックの各データグループごとに、当該データグループのグループスケールファクタと前記第2データブロックのブロックスケールファクタとの差分からなるスケールファクタに前記補正ブロックスケールファクタを加算したものを前記各計算ユニットのスケーリング手段に与え、当該データグループのデータをそれぞれ前記スケーリング手段を介して前記各計算ユニットの加算手段に入力する処理であることを特徴とするデータ演算処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001251429A JP3659408B2 (ja) | 2001-08-22 | 2001-08-22 | データ演算処理装置及びデータ演算処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001251429A JP3659408B2 (ja) | 2001-08-22 | 2001-08-22 | データ演算処理装置及びデータ演算処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003067178A JP2003067178A (ja) | 2003-03-07 |
JP3659408B2 true JP3659408B2 (ja) | 2005-06-15 |
Family
ID=19080076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001251429A Expired - Fee Related JP3659408B2 (ja) | 2001-08-22 | 2001-08-22 | データ演算処理装置及びデータ演算処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3659408B2 (ja) |
-
2001
- 2001-08-22 JP JP2001251429A patent/JP3659408B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003067178A (ja) | 2003-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002108606A (ja) | スティッキービット生成回路及び乗算器 | |
JP5640081B2 (ja) | 飽和を伴う整数乗算および乗算加算演算 | |
JP3736741B2 (ja) | データ演算処理装置 | |
CN106250098A (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
TW201030607A (en) | Instruction and logic for performing range detection | |
EP3987388A1 (en) | Signed multiword multiplier | |
CN113626759A (zh) | 使用低位宽点积引擎对高位宽数求和 | |
US6813628B2 (en) | Method and apparatus for performing equality comparison in redundant form arithmetic | |
KR20080050226A (ko) | 모듈러 곱셈 장치 및 설계 방법 | |
JP3659408B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
JPH09146924A (ja) | 演算方法、演算装置及びマイクロプロセッサ | |
US6963895B1 (en) | Floating point pipeline method and circuit for fast inverse square root calculations | |
CN113485751A (zh) | 执行伽罗瓦域乘法的方法、运算单元和电子装置 | |
JP3064405B2 (ja) | 複素数の演算処理方式 | |
JP3736745B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
JPH0540605A (ja) | 浮動小数点乗算装置 | |
JP3773033B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
JP4159565B2 (ja) | ベクトル積和演算回路 | |
Hass | Synthesizing optimal fixed-point arithmetic for embedded signal processing | |
JP3793505B2 (ja) | 演算器及びそれを用いた電子回路装置 | |
KR100309520B1 (ko) | 라운드오프기능을갖는승산방법및승산회로 | |
JP2020071642A (ja) | 演算処理装置及びその制御方法 | |
JP3613466B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
JP3315042B2 (ja) | 乗算装置 | |
JP3517162B2 (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: 20050214 |
|
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: 20050222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050309 |
|
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: 20080325 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090325 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090325 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100325 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100325 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: 20100325 Year of fee payment: 5 |
|
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: 20100325 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: 20100325 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: 20100325 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: 20110325 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110325 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120325 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120325 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130325 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140325 Year of fee payment: 9 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |