(57)【特許請求の範囲】
【請求項１】
１又は複数のデータを含んでデータグループが構成され、さらに複数のデータグループを含んで構成されたデータブロック単位で、データを処理するデータ演算処理装置であって、
前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタをグループスケールファクタとして検出し、検出したグループスケールファクタに基づいて前記各演算データに対してスケーリングを行うこれら一連の処理を、前記データブロックの各データグループごとに行い、さらに、検出したグループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、
スケーリングした演算データに対して再度演算を行うときは、演算の前に、前記データグループの各演算データに対して当該データグループのグループスケールファクタ及び前記ブロックスケールファクタに基づいてスケーリングを行うようになっていることを特徴とするデータ演算処理装置。
【請求項２】
請求の範囲第１項において、
スケーリングした演算データに対して再度演算を行うときは、演算の前に、前記データグループの各演算データに対して当該データグループのグループスケールファクタと前記ブロックスケールファクタとの差分に基づいてスケーリングを行うようになっていることを特徴とするデータ演算処理装置。
【請求項３】
複数の計算ユニットを備え、１又は複数のデータを含んでデータグループが構成され、さらに複数のデータグループを含んで構成されたデータブロック単位で、データを処理するデータ演算処理装置であって
前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第１のスケーリング手段と、前記第１のスケーリング手段からのデータに対して演算を行う演算手段と、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段と、与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第２のスケーリング手段と、を有しており、
さらに、データを記憶するための記憶手段と、前記各計算ユニットのスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものをグループスケールファクタとして検出するグループスケールファクタ検出手段と、前記グループスケールファクタ検出手段で検出したグループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段と、データ処理のための制御を行う制御手段と、を備え、
前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、前記データグループのデータをそれぞれ前記各計算ユニットの第１のスケーリング手段に振り分け、前記グループスケールファクタ検出手段で検出したグループスケールファクタを前記各計算ユニットの第２のスケーリング手段に与え、前記各計算ユニットの第２のスケーリング手段からの演算データを前記記憶手段に格納し、
前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、前記データグループの演算データをそれぞれ前記各計算ユニットの第１のスケーリング手段に振り分けるとともに、前記データグループのグループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第１のスケーリング手段に与えるようになっていることを特徴とするデータ演算処理装置。
【請求項４】
請求の範囲第３項において、
前記グループスケールファクタ及び前記ブロックスケールファクタを記憶するための第２の記憶手段を備え、
前記制御手段は、前記グループスケールファクタ及び前記ブロックスケールファクタを演算データと対応させて前記第２の記憶手段に記憶し、
前記記憶手段の演算データに対して再度演算を行うときは、対応するグループスケールファクタ及びブロックスケールファクタを前記第２の記憶手段から読み出し、前記データブロックの各データグループごとに、前記データグループの演算データをそれぞれ前記各計算ユニットの第１のスケーリング手段に振り分け、前記データグループのグループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第１のスケーリング手段に与えるようになっていることを特徴とするデータ演算処理装置。
【請求項５】
請求の範囲第３項及び第４項のいずれかにおいて、
前記スケールファクタ算出手段は、前記演算手段からの演算データの冗長なビット数を算出し、これをスケールファクタとして算出するようになっていることを特徴とするデータ演算処理装置。
【請求項６】
請求の範囲第５項において、
前記演算手段は、固定小数点演算器であり、
前記第１のスケーリング手段は、与えられたスケールファクタに相当するシフト量で、データに対してビットシフトを行うようになっており
前記第２のスケーリング手段は、与えられた他のスケールファクタに相当するシフト量で、前記演算手段からの演算データに対してビットシフトを行うようになっていることを特徴とするデータ演算処理装置。
【請求項７】
請求の範囲第３項乃至第６項のいずれかにおいて、
前記演算手段は、前記第１のスケーリング手段からのデータと所定の係数との積和を演算する積和演算器であることを特徴とするデータ演算処理装置。
【発明の詳細な説明】
技術分野
本発明は、１または複数のデータを含んでデータグループが構成され、さらに複数のデータグループを含んで構成されたデータブロック単位で、データを処理する装置に係り、特に、ブロックフローティング方式で固定小数点演算を行うブロックフローティング型のデジタル・シグナル・プロセッサ（以下、単にＤＳＰという。）に関する。
背景技術
デジタル信号処理における数値表現方法として、固定小数点表現または浮動小数点表現がある。
浮動小数点表現では、各データが指数部と仮数部をもち、これにより、高い精度と広いダイナミックレンジが確保可能という利点がある反面、複雑で大規模なハードウェアが必要となるという問題がある。
一方、固定小数点表現では、ハードウェアが簡単で回路規模も小さくてすむが、演算精度の低下が問題となる。従来の代表的な固定小数点型のＤＳＰとしては、例えば、図１０に示すものがある。図１０は、従来の固定小数点型のＤＳＰの構成および各構成要素の入出力段におけるデータのビット数を示す図である。
従来の固定小数点型のＤＳＰは、図１０に示すように、データをｎビット単位で格納するメモリ１００と、ｎビットのデータをデータメモリ１００から入力して２ｎビットの演算データを出力する積和演算器１２と、２ｎビットの演算データのうち上位のｎビットのデータを選択する選択回路１３と、データバス１１０と、で構成されており、演算対象となるデータをデータメモリ１００から読み出し、読み出したデータを積和演算器１２で演算し、積和演算器１２からの演算データのうち上位のｎビットのデータを選択回路１３で選択し、選択回路１３からの演算データをデータメモリ１００に再度格納するようになっている。
積和演算器１２は、データメモリ１００からのデータを保持する第１のレジスタファイル１２ａと、第１のレジスタファイル１２ａのデータを乗算する乗算器１２ｂと、乗算器１２ｂからの乗算データをこれまでの加算データと加算する加算器１２ｃと、加算器１２ｃからの加算データを演算データとして保持する第２のレジスタファイル１２ｄと、で構成されている。
演算精度の低下は、選択回路１３で２ｎビットからｎビットを選択する際に、下位ｎビットが切り捨てられるために生じる。
固定小数点表現における演算精度の低下を、下式（１），（２）の数式例を用いて示す。すなわち、積和演算器１２は、下式（１），（２）により演算を行うようになっている。
ここでは簡単のため、データメモリ１００からのデータを８ビット、積和演算器１２の出力を１６ビットとし、データＸ（０）〜Ｘ（７）および係数データＡ（０）〜Ａ（３）、Ｂ（０），Ｂ（１）を演算対象として積和演算器１２に与える。データＸ（０）〜Ｘ（７）および係数データＡ（０）〜Ａ（３）、Ｂ（０），Ｂ（１）は、それぞれ図１１に示すような値をもち、Ｘ（−３）＝Ｘ（−２）＝Ｘ（−１）＝Ｙ（−１）＝０とする。また、図１２に示すように、各データと係数データの最上位ビット（ＭＳＢ）は符号ビットとし、符号ビットと右隣のビットとの間に小数点位置が定められ、符号ビットの右隣は０．５を表すものとして、各データと係数データの値の十進数表現を合わせて図１１に示す。
上記従来の固定小数点型のＤＳＰを用いて、下式（１），（２）により演算を行ったときの演算結果を図１３に示す。データメモリ１００に格納される最終的な演算結果（二進数表現および十進数表現）とともに、途中結果として積和演算器１２の出力（１６ビットの二進数表現）を、そしてまた比較のため、浮動小数点で演算を行ったときの演算結果も合わせて示す。１６ビットから８ビットを選択する際に、下位８ビットのデータが失われるため、精度が落ちていることがわかる。ここで、精度の劣化量を表す尺度として信号対雑音比（ＳＮＲ）を導入し、これを下式（３）のように定義する。
下式（３）は、浮動小数点演算結果の二乗和を、誤差（固定小数点演算結果と浮動小数点演算結果の差）の二乗和で割ったもので、精度が劣化するほど小さい値をとる。図１３の結果を用いてＳＮＲを計算すると、下式（４），（５）に示すようになる。なお、下式（４）は、下式（１）の演算結果に基づくＳＮＲを示す式であり、下式（５）は、下式（２）の演算結果に基づくＳＮＲを示す式である。
このように、固定小数点表現では、連続して演算を繰り返すごとに精度が大きく劣化していくのである。
この問題への対策法として提案されたのがブロックフローティングという方式である。この方式では、所定数（例えば、ｍ個）のデータを一つのデータブロックとし、データブロックに対し１個のブロックスケールファクタをもたせ、データブロックのｍ個のデータに対し共通のスケーリング（以下、ブロック正規化という。）を行うことにより、限られたダイナミックレンジを有効に用いて精度の劣化を抑える。
このブロックフローティングを効率良く実現するために、例えば、図１４のようなＤＳＰが提案されている（特開平10-40073号公報）。
このブロックフローティング型のＤＳＰは、図１４に示すように、上記従来の固定小数点型のＤＳＰに加え、与えられたスケールファクタに基づいて積和演算器１２への入力データをブロック正規化する第２シフタ１０と、データブロックに含まれる各データに基づいてブロックスケールファクタを検出するブロックスケールファクタ検出器５４と、ブロックスケールファクタを格納するブロックスケールファクタレジスタ５６と、で構成されている。
ブロックスケールファクタ検出器５４は、選択回路１３からの演算データを入力し、そのデータブロックの各データのうち絶対値が最大となるデータを検出し、検出したデータの冗長なビット数をブロックスケールファクタとして検出するようになっている。
第２シフタ１０は、図示しない制御装置によりブロックスケールファクタレジスタ５６のブロックスケールファクタが与えられたときは、そのブロックスケールファクタに相当するシフト量で、データブロックの各データに対して上位ビットの方向へビットシフト（以下、単に左シフトという。）を行うようになっている。
次に、上記従来のブロックフローティング型のＤＳＰで、下式（１），（２）をブロックフローティング処理した場合の動作について説明する。
まず、データブロックに含まれるデータの個数を「ブロックサイズ」と、データメモリ１００からデータブロックの各データを読み出して積和演算を行ったのち、演算結果である演算データを再度データメモリ１００へ格納する一連の処理を「ブロック処理」と定義する。
下式（１），（２）では、ブロックサイズを８とし、初回のブロック処理でデータブロックＸ（０）〜Ｘ（７）を入力として下式（１）により演算を行い、Ｙ（０）〜Ｙ（７）を求め、２回目のブロック処理でデータブロックＹ（０）〜Ｙ（７）を入力として下式（２）により演算を行い、Ｚ（０）〜Ｚ（７）を求めることとする。なお、初回のブロック処理では、ブロックスケールファクタレジスタ５６には、ブロックスケールファクタとして“０”が設定されているので、第２シフタ１０においてブロック正規化は行われないこととする。また、以下の説明では、係数データＡ（０）〜Ａ（３）、Ｂ（０），Ｂ（１）の設定方法については特に触れないが、必要に応じてデータメモリ１００から読み出すなどして与えることができる。
まず、第１のステップとして、ｎ＝０〜７について次の処理を行う。データＸ（ｎ）、Ｘ（ｎ−１）、Ｘ（ｎ−２）を順次データメモリ１００から読み出して第２シフタ１０に入力する。初回ブロック処理では、ブロックスケールファクタレジスタ５６のブロックスケールファクタが“０”であるため、第２シフタ１０においてブロック正規化は行わず、Ｘ（ｎ）、Ｘ（ｎ−１）、Ｘ（ｎ−２）をそのまま積和演算器１２に入力する。積和演算器１２では、下式（１）により演算を行い、演算データを選択回路１３に入力する。選択回路１３では、演算データのうち上位ｎビットを選択して取り出す。選択回路１３からのｎビットの演算データは、データバス１１０経由でＹ（ｎ）としてデータメモリ１００に格納される。一方、この格納処理と並行して、２回目のブロック処理に用いるブロックスケールファクタを決定するために演算データＹ（ｎ）を、ブロックスケールファクタ検出器５４に入力する。
次いで、第２のステップとして、第１のステップが終了した時点で、ブロックスケールファクタ検出器５４では、２回目のブロック処理に用いるブロックスケールファクタを決定し、決定したブロックスケールファクタをブロックスケールファクタレジスタ５６に格納する。
次いで、第３のステップとして、ｎ＝０〜７について以下の処理を行う。データＹ（ｎ）、Ｙ（ｎ−１）を順次データメモリ１００から読み出して第２シフタ１０に入力する。第２シフタ１０では、ブロックスケールファクタレジスタ５６のブロックスケールファクタに基づいてブロック正規化を行い、ブロック正規化を行ったデータを積和演算器１２に入力する。積和演算器１２では、下式（２）により演算を行い、演算データを選択回路１３に入力する。選択回路１３では、演算データのうち上位ｎビットを選択して取り出す。選択回路１３からのｎビットの演算データは、データバス１１０経由でＺ（ｎ）としてデータメモリ１００に格納される。一方、この格納処理と並行して、３回目のブロック処理に用いるブロックスケールファクタを決定するために演算データＺ（ｎ）を、ブロックスケールファクタ検出器５４に入力する。
次いで、第４のステップとして、第３のステップ３が終了した時点で、ブロックスケールファクタ検出器５４では、３回目のブロック処理に用いるブロックスケールファクタを決定し、決定したブロックスケールファクタをブロックスケールファクタレジスタ５６に格納する。
上記第１ないし第４のステップを経て、下式（１），（２）により実際にブロックフローティング処理した演算結果を図１５に示す。そして、この演算結果を用いて下式（３）によりＳＮＲを計算すると、下式（６），（７）に示すようになる。なお、下式（６）は、下式（１）の演算結果に基づくＳＮＲを示す式であり、下式（７）は、下式（２）の演算結果に基づくＳＮＲを示す式である。
下式（６），（７）によれば、固定小数点演算を単に行うよりも精度が改善されていることがわかる。
先の例からもわかる通り、上記従来のブロックフローティング型のＤＳＰにあっては、確かに、上記従来の固定小数点型のＤＳＰに比して演算精度を改善することができるが、なお演算精度上の課題が存在する。
すなわち、上記従来のブロックフローティング型のＤＳＰにあっては、ブロック処理が終了するまでブロックスケールファクタを決定することができないため、選択回路１３で上位ｎビットを選択してデータメモリ１００に格納し、ブロック処理終了後に、その演算データに対してブロックスケールファクタに相当するシフト量で左シフトを行っている。このため、第２シフタ１０からのデータのうち、ブロックスケールファクタに相当するビット数の下位ビットは、“０”となって意味のない情報となる。
積和演算器１２からの演算データを１６ビット、データメモリ１００からのデータを８ビット、演算データを“００００１１０１  １１０１０１０１”、ブロック処理終了後に確定したブロックスケールファクタを“２”とした場合のブロック正規化後のデータを、理想的な場合と従来法の場合とのについて図１６に例示する。この例では、ブロック正規化後のデータの下位２ビットに着目してみると、理想的には“１１”となるべきところが従来のＤＳＰでは“００”となっていることがわかる。これが演算精度の向上を妨げる要因となっているのである。
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、ブロックフローティング方式で固定小数点演算を行うときの演算精度を向上するのに好適なデータ演算処理装置を提供することを目的としている。
発明の開示
本発明では、従来のデータ区分であるデータブロックをさらに細分化し、データグループという区分を新たに導入する。すなわち、データブロックは、複数のデータグループを含んで構成され、データグループは、１または複数のデータを含んで構成される。ここで、データグループに含まれるデータの個数を「グループサイズ」と定義する。
上記目的を達成するために、本発明に係る請求の範囲第１項記載のデータ演算処理装置は、１または複数のデータを含んでデータグループが構成され、さらに複数のデータグループを含んで構成されたデータブロック単位で、データを処理するデータ演算処理装置であって、前記データグループの各データに対して演算を行い、それら演算データのうち絶対値が最大となるもののスケールファクタをグループスケールファクタとして検出し、検出したグループスケールファクタに基づいて前記各演算データに対してスケーリングを行うこれら一連の処理を、前記データブロックの各データグループごとに行い、さらに、検出したグループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出し、スケーリングした演算データに対して再度演算を行うときは、演算の前に、前記データグループの各演算データに対して当該データグループのグループスケールファクタおよび前記ブロックスケールファクタに基づいてスケーリングを行うようになっている。
このような構成であれば、データグループの各データに対して演算が行われ、それら演算データのうち絶対値が最大となるもののスケールファクタがグループスケールファクタとして検出され、検出されたグループスケールファクタに基づいて、各演算データに対してスケーリングが行われる。こうした一連の処理が、データブロックの各データグループごとに行われる。そして、一つのデータブロックについて処理が終了すると、各データグループごとに検出されたグループスケールファクタのうち絶対値が最大となる演算データに対応するものがブロックスケールファクタとして検出される。
次に、スケーリングされた演算データに対して再度演算を行うときは、データグループの各演算データに対して、そのデータグループのグループスケールファクタおよびブロックスケールファクタに基づいて、スケーリングが行われる。
なお、その後は、スケーリングされた各演算データに対して演算が行われ、その演算結果である演算データのうち絶対値が最大となるもののスケールファクタがグループスケールファクタとして検出され、検出されたグループスケールファクタに基づいて、各演算データに対してスケーリングが行われる。こうした一連の処理が、データブロックの各データグループごとに行われる。そして、一つのデータブロックについて処理が終了すると、各データグループごとに検出されたグループスケールファクタのうち絶対値が最大となるものがブロックスケールファクタとして検出される。
ここで、スケールファクタとしては、例えば、データをビットシフトするときのシフト量を挙げることができる。この場合、スケールファクタに相当するシフト量で、データに対してビットシフトを行うことによりスケーリングを行う。
また、グループスケールファクタを検出する構成は、データグループの各データに対して演算を行ったのち、それら演算データのスケールファクタを算出し、算出したスケールファクタのうち最小のものをグループスケールファクタとして検出するようになっていてもよいし、それら演算データのスケールファクタを算出せず、それら演算データから直接グループスケールファクタを検出するようになっていてもよい。
さらに、本発明に係る請求の範囲第２項記載のデータ演算処理装置は、請求の範囲第１項記載のデータ演算処理装置において、スケーリングした演算データに対して再度演算を行うときは、演算の前に、前記データグループの各演算データに対して当該データグループのグループスケールファクタと前記ブロックスケールファクタとの差分に基づいてスケーリングを行うようになっている。
このような構成であれば、スケーリングされた演算データに対して再度演算を行うときは、データグループの各演算データに対して、そのデータグループのグループスケールファクタとブロックスケールファクタとの差分に基づいて、スケーリングが行われる。
さらに、本発明に係る請求の範囲第３項記載のデータ演算処理装置は、複数の計算ユニットを備え、１または複数のデータを含んでデータグループが構成され、さらに複数のデータグループを含んで構成されたデータブロック単位で、データを処理するデータ演算処理装置であって、前記各計算ユニットは、与えられたスケールファクタに基づいてデータに対してスケーリングを行う第１のスケーリング手段と、前記第１のスケーリング手段からのデータに対して演算を行う演算手段と、前記演算手段からの演算データのスケールファクタを算出するスケールファクタ算出手段と、与えられた他のスケールファクタに基づいて前記演算手段からの演算データに対してスケーリングを行う第２のスケーリング手段と、を有しており、さらに、データを記憶するための記憶手段と、前記各計算ユニットのスケールファクタ算出手段で算出したスケールファクタのうち絶対値が最大となる演算データに対応するものをグループスケールファクタとして検出するグループスケールファクタ検出手段と、前記グループスケールファクタ検出手段で検出したグループスケールファクタのうち絶対値が最大となる演算データに対応するものをブロックスケールファクタとして検出するブロックスケールファクタ検出手段と、データ処理のための制御を行う制御手段と、を備え、前記制御手段は、前記データブロック単位でデータを前記記憶手段から読み出し、前記データブロックの各データグループごとに、前記データグループのデータをそれぞれ前記各計算ユニットの第１のスケーリング手段に振り分け、前記グループスケールファクタ検出手段で検出したグループスケールファクタを前記各計算ユニットの第２のスケーリング手段に与え、前記各計算ユニットの第２のスケーリング手段からの演算データを前記記憶手段に格納し、前記記憶手段の演算データに対して再度演算を行うときは、前記データブロックの各データグループごとに、前記データグループの演算データをそれぞれ前記各計算ユニットの第１のスケーリング手段に振り分けるとともに、前記データグループのグループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第１のスケーリング手段に与えるようになっている。
このような構成であれば、制御手段により、データブロック単位でデータが記憶手段から読み出され、データブロックの各データグループごとに、データグループのデータがそれぞれ各計算ユニットの第１のスケーリング手段に振り分けられる。
各計算ユニットでは、初期状態では第１のスケーリング手段にスケールファクタが与えられていないので、第１のスケーリング手段によるスケーリングが行われず、そのまま演算手段に入力される。そして、演算手段により、第１のスケーリング手段からのデータに対して演算が行われ、スケールファクタ算出手段により、演算手段からの演算データのスケールファクタが算出される。
各計算ユニットでスケールファクタが算出されると、グループスケールファクタ検出手段により、各計算ユニットのスケールファクタ算出手段で算出されたスケールファクタのうち絶対値が最大となる演算データに対応するものがグループスケールファクタとして検出され、制御手段により、算出されたグループスケールファクタが各計算ユニットの第２のスケーリング手段に与えられる。
これにより、各計算ユニットでは、第２のスケーリング手段により、与えられたグループスケールファクタに基づいて、演算手段からの演算データに対してスケーリングが行われる。
このように各計算ユニットで演算データに対してスケーリングが行われると、制御手段により、各計算ユニットの第２のスケーリング手段からの演算データが記憶手段に格納されるとともに、ブロックスケールファクタ検出手段により、グループスケールファクタ検出手段で検出されたグループスケールファクタのうち絶対値が最大となる演算データに対応するものがブロックスケールファクタとして検出される。
次に、記憶手段の演算データに対して再度演算を行うときは、制御手段により、データブロック単位で演算データが記憶手段から読み出され、データブロックの各データグループごとに、データグループの演算データがそれぞれ各計算ユニットの第１のスケーリング手段に振り分けられるとともに、そのデータグループのグループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットの第１のスケーリング手段に与えられる。
各計算ユニットでは、第１のスケーリング手段により、前回の処理において検出されたグループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタに基づいて、与えられた演算データに対してスケーリングが行われ、演算手段により、第１のスケーリング手段からの演算データに対して演算が行われ、スケールファクタ算出手段により、演算手段からの演算データのスケールファクタが算出される。
各計算ユニットでスケールファクタが算出されると、グループスケールファクタ検出手段により、各計算ユニットのスケールファクタ算出手段で算出されたスケールファクタのうち絶対値が最大となる演算データに対応するものがグループスケールファクタとして検出され、制御手段により、算出されたグループスケールファクタが各計算ユニットの第２のスケーリング手段に与えられる。
これにより、各計算ユニットでは、第２のスケーリング手段により、与えられたグループスケールファクタに基づいて、演算手段からの演算データに対してスケーリングが行われる。
このように各計算ユニットで演算データに対してスケーリングが行われると、制御手段により、各計算ユニットの第２のスケーリング手段からの演算データが記憶手段に格納されるとともに、ブロックスケールファクタ検出手段により、グループスケールファクタ検出手段で検出されたグループスケールファクタのうち絶対値が最大となる演算データに対応するものがブロックスケールファクタとして検出される。
ここで、記憶手段は、データを記憶するためのものであればよく、データをあらかじめ記憶しておくものであってもよいし、本装置の動作時にデータを記憶するものであってもよい。
また、スケールファクタとしては、例えば、データをビットシフトするときのシフト量を挙げることができる。この場合、スケールファクタに相当するシフト量で、データに対してビットシフトを行うことによりスケーリングを行う。
さらに、本発明に係る請求の範囲第４項記載のデータ演算処理装置は、請求の範囲第３項記載のデータ演算処理装置において、前記グループスケールファクタおよび前記ブロックスケールファクタを記憶するための第２の記憶手段を備え、前記制御手段は、前記グループスケールファクタおよび前記ブロックスケールファクタを演算データと対応させて前記第２の記憶手段に記憶し、前記記憶手段の演算データに対して再度演算を行うときは、対応するグループスケールファクタおよびブロックスケールファクタを前記第２の記憶手段から読み出し、前記データブロックの各データグループごとに、前記データグループの演算データをそれぞれ前記各計算ユニットの第１のスケーリング手段に振り分け、前記データグループのグループスケールファクタと前記ブロックスケールファクタとの差分からなるスケールファクタを前記各計算ユニットの第１のスケーリング手段に与えるようになっている。
このような構成であれば、記憶手段の演算データに対して再度演算を行うときは、制御手段により、グループスケールファクタ検出手段で検出されたグループスケールファクタおよびブロックスケールファクタ検出手段で検出されたブロックスケールファクタが、各計算ユニットの第２のスケーリング手段からの演算データと対応づけられて第２の記憶手段に格納される。
そして、記憶手段の演算データに対して再度計算を行うときは、制御手段により、対応するグループスケールファクタおよびブロックスケールファクタが第２の記憶手段から読み出され、データブロックの各データグループごとに、データグループの演算データがそれぞれ各計算ユニットの第１のスケーリング手段に振り分けられるとともに、そのデータグループのグループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタが各計算ユニットの第１のスケーリング手段に与えられる。
これにより、各計算ユニットでは、第１のスケーリング手段により、前回の処理において検出されたグループスケールファクタとブロックスケールファクタとの差分からなるスケールファクタに基づいて、与えられた演算データに対してスケーリングが行われる。
ここで、第２の記憶手段は、グループスケールファクタおよびブロックスケールファクタを記憶するためのものであって、グループスケールファクタおよびブロックスケールファクタをあらかじめ記憶していることを要しない。
さらに、本発明に係る請求の範囲第５項記載のデータ演算処理装置は、請求の範囲第３項および第４項のいずれかに記載のデータ演算処理装置において、前記スケールファクタ算出手段は、前記演算手段からの演算データの冗長なビット数を算出し、これをスケールファクタとして算出するようになっている。
このような構成であれば、スケールファクタ算出手段により、演算手段からの演算データの冗長なビット数が算出され、これがスケールファクタとして算出される。
さらに、本発明に係る請求の範囲第６項記載のデータ演算処理装置は、請求の範囲第５項記載のデータ演算処理装置において、前記演算手段は、固定小数点演算器であり、前記第１のスケーリング手段は、与えられたスケールファクタに相当するシフト量で、データに対してビットシフトを行うようになっており、前記第２のスケーリング手段は、与えられた他のスケールファクタに相当するシフト量で、前記演算手段からの演算データに対してビットシフトを行うようになっている。
このような構成であれば、各計算ユニットでは、第１のスケーリング手段により、与えられたスケールファクタに相当するシフト量で、与えられたデータに対してビットシフトが行われ、演算手段により、第１のスケーリング手段からのデータに対して固定小数点演算が行われる。そして、第２のスケーリング手段により、与えられたスケールファクタに相当するシフト量で、演算手段からの演算データに対してビットシフトが行われる。
ここで、第１のスケーリング手段は、例えば、データに対して下位ビットの方向へビットシフト（以下、単に右シフトという。）を行うようになっている。また、第２のスケーリング手段は、例えば、データに対して左シフトまたは右シフトを行うようになっている。
さらに、本発明に係る請求の範囲第７項記載のデータ演算処理装置は、請求の範囲第３項ないし第６項のいずれかに記載のデータ演算処理装置において、前記演算手段は、前記第１のスケーリング手段からのデータと所定の係数との積和を演算する積和演算器である。
このような構成であれば、演算手段により、第１のスケーリング手段からのデータと所定の係数との積和が演算され、積和されたデータが演算データとして出力される。
本発明の概要は、例えば、図１に示す通りである。本発明では、データグループごとに一つのスケールファクタを計算してこれをグループスケールファクタとし、各積和演算器１２から出力されたデータをグループスケールファクタで正規化（以下、グループ正規化という。）し、グループスケールファクタを、グループ正規化されたデータグループと関連づけてレジスタファイル５２に格納する。こうした一連の処理は、データブロックに含まれる他のデータグループに対しても、繰り返し適用される。ひとつのデータブロックの処理を行ったのち、複数のグループスケールファクタうち最小のスケールファクタを検出してこれをブロックスケールファクタとし、データブロックと関連つけてレジスタファイル５６に格納する。その後、このデータブロックをブロック処理する場合、ブロックスケールファクタとグループスケールファクタとが異なり、データグループ間で桁の位置が合っていない可能性があるため、グループスケールファクタとブロックスケールファクタとの差分に基づいて、各データグループをシフト（ブロック正規化）して桁合わせしたのち、積和演算器１２に入力する。
これにより、積和演算終了後のデータは、データグループ単位で一旦グループ正規化を行ってデータメモリ１００に格納され、次のブロック処理で使用する際に、ブロック正規化されるため、ブロック正規化後のデータの下位ビットに意味のない情報が含まれることがなく、ブロックフローティング方式で固定小数点演算を行うときの演算誤差が小さくなる。
以上では、上記目的を達成するためのデータ演算処理装置を提案したが、これに限らず、上記目的を達成するために、次の第１ないし第７のデータ演算処理装置を提案することもできる。
第１のデータ演算処理装置は、スケーリングを用いることで仮数部とスケール部とに分解可能な複数のデータを含むデータグループに対して単一で共通のスケールファクタを決定し、複数の仮数部をひとまとめにし、前記共通のスケールファクタを参照してデータを処理するデジタル信号処理のためのデータ演算処理装置であって、一番目のデータグループから、複数のスケールファクタのうち単一の最小値をグループスケールファクタとして決定し、前記グループスケールファクタを参照して当該データグループの各データをスケーリングし、スケーリングした各データを格納し、前記グループスケールファクタを当該データグループと唯一に対応する関係をもって格納し、これらの処理を二番目以降のデータグループに対して引き続き繰り返し、複数のグループスケールファクタのうち単一の最小値を複数のデータグループのブロックスケールファクタとして決定し、前記ブロックスケールファクタを一番目と二番目以降の複数のデータグループから構成される単一のデータブロックと唯一に対応する関係をもって格納し、前記各データグループの各データを、前記各グループスケールファクタと前記ブロックスケールファクタとの差分として得られる整列スケールファクタを用いてスケーリングするようになっている。
さらに、第２のデータ演算処理装置は、上記第１のデータ演算処理装置において、前記整列スケールファクタを用いてスケーリングした複数のデータを単一の新しいデータブロックとして格納し、前記整列スケールファクタを前記ブロックスケールファクタとして唯一つに決定するようになっている。
さらに、第３のデータ演算処理装置は、上記第１および第２のいずれかのデータ演算処理装置において、前記整列ファクタを用いてスケーリングしたデータを引き続き固定小数点データ表現を用いて処理するようになっている。
さらに、第４のデータ演算処理装置は、上記第１ないし第３のいずれかのデータ演算処理装置において、前記グループスケールファクタを、関連するデータグループとともに格納するようになっている。
さらに、第５のデータ演算処理装置は、データを処理するため少なくとも一つの計算ユニットとレジスタとメモリを備えたデジタルデータ処理プロセッサによるデジタルデータ処理のためのデータ演算処理装置であって、複数のデータから複数のスケールファクタを計算する手段と、前記スケールファクタを参照して複数のデータからスケーリングされた値を生成する手段と、複数の前記スケーリングされた値をデータグループ（スケーリングされた値の組）として格納する手段と、前記データグループうち最小のスケールファクタ（グループスケールファクタ）を検出する手段と、前記グループスケールファクタを格納する手段と、複数の前記データグループうち最小のスケールファクタ（ブロックスケールファクタ）を検出する手段と、前記ブロックスケールファクタを格納する手段と、を備えている。
さらに、第６のデータ演算処理装置は、上記第５のデータ演算処理装置において、前記グループスケールファクタを一時的に格納するためのレジスタファイルによる手段と、一時的に格納したグループスケールファクタとそれに対応するデータグループを関連づけるための手段と、前記レジスタファイルに一時的に格納したグループスケールファクタを格納する手段と、を備えている。
さらに、第７のデータ演算処理装置は、上記第５および第６のいずれかのデータ演算処理装置において、最小のスケールファクタを検出する手段と、冗長な符号ビットを計数する手段と、冗長な符号ビットの情報を一つにまとめる手段と、を備えている。
以上では、上記目的を達成するためのデータ演算処理装置を提案したが、これに限らず、上記目的を達成するために、次の第１の記憶媒体を提案することもできる。
第１の記憶媒体は、１または複数のデータを含んでデータグループが構成され、さらに複数のデータグループを含んで構成されたデータブロック単位で、データを処理するためのプログラムを記憶した記憶媒体であって、請求の範囲第３項ないし第７項のいずれかに記載の、前記各計算ユニット、前記第１のスケーリング手段、前記演算手段、前記スケールファクタ算出手段、前記第２のスケーリング手段、前記グループスケールファクタ検出手段、前記ブロックスケールファクタ検出手段および前記制御手段としてコンピュータを機能させるためのプログラムを記憶したコンピュータ読み取り可能なものである。
このような構成であれば、記憶媒体に記憶された情報がコンピュータによって読み取られ、コンピュータが各手段として機能させられたときは、上記請求の範囲第３項ないし第７項のいずれかに記載のデータ演算処理装置と同様の作用が得られる。
【図面の簡単な説明】
図１は、本発明に係るデータ演算処理装置の構成を示すブロック図である。図２は、データメモリ１００におけるデータ構造を示す図である。図３は、各積和演算器１２で行われる積和演算を示す図である。図４は、本発明を数値例に適用した場合の演算過程を説明するための図である。図５は、データグループとグループスケールファクタを関連付けて格納する方法の一例である。図６は、本発明を数値例に適用した場合の演算結果を示す図である。図７は、本発明による方式と従来方式との演算精度の比較を示す図である。図８は、各計算ユニットＰ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〜Ｐ3の第２シフタ１０に振り分けられる。このとき、データＸ（０）〜Ｘ（３）は、最初でスケールに関する情報はないので、制御ロジック４００は、データＸ（０）〜Ｘ（３）がシフトされないように第２シフタ１０を制御する。これらのデータを各積和演算器１２に保持するための手段（例えば、図１４の積和演算器１２の第１レジスタファイル）は利用可能であるとする。このような保持手段は本発明とは関係ないため、図１には示されていない。
各積和演算器１２では、図３の手順に従って、係数データＡ（０）〜Ａ（３）とデータＸ（０）〜Ｘ（３）との積和演算が行われ、サイクル２からサイクル５までを経て、最初の積和演算結果である演算データＹ（０）〜Ｙ（３）が得られる。これらの演算過程では、データＸ（０）〜Ｘ（３）は、各計算ユニットＰ0〜Ｐk-1間をハードウェア手段を通じて転送されるものとする。
演算データＹ（０）〜Ｙ（３）は、その後、各ユニットスケールファクタ検出器１４に入力される。各ユニットスケールファクタ検出器１４では、積和演算器１２からの演算データの冗長なビット数が算出され、これがスケールファクタとして算出される。この算出では、例えば、演算データＹ（０）〜Ｙ（３）のうちあるデータ“００００１１００”は、“０１１０００００”にスケーリングされ、その場合、冗長なビット数が“３”であるため、スケールファクタは“３”となる。
各ユニットスケールファクタ検出器１４で算出された複数のスケールファクタは、次に、グループスケールファクタ検出器５０に入力され、ここで複数のスケールファクタのうち最小のものがグループスケールファクタとして検出される。
このグループスケールファクタは、さらに各計算ユニットＰ0〜Ｐ3の第１シフタ１６に入力される。これとともに、各積和演算器１２からの演算データＹ（０）〜Ｙ（３）も第１シフタ１６に入力される。グループスケールファクタに従って、第１シフタ１６により、１６ビットの演算データＹ（０）〜Ｙ（３）に対してグループ正規化が行われる。図４に、実際の数値を用いた演算結果の一例を示す。
これらのグループ正規化された演算データは、さらに、次のブロック処理に備えるため、データメモリ１００に格納される。データメモリ１００のデータのビット数は演算データよりも少ないため、各演算データは、下位の８ビットが切り捨てられ、８ビットの演算データに丸められる。これらの丸められた演算データＹ（０）〜Ｙ（３）は、図４の中でデータメモリ１００の入力欄に示されている。演算データＹ（０）〜Ｙ（３）をデータメモリ１００に格納する間に、グループスケールファクタもグループスケールファクタレジスタファイル５２に入力される。このグループスケールファクタは、グループスケールファクタレジスタファイル５２内に、対応するデータグループと関連付けられて格納される。例えば、データグループは、データメモリ１００に格納する場合、ある一つのメモリアドレスを取り、そのデータグループのすべてのデータは、一つのメモリアドレスで同時にアクセスされるとして、演算データをデータメモリ１００に格納するのに用いられるのと同じアドレスで特定されるレジスタに格納する。あるいは、図５に示すように、データグループが格納されているデータメモリ１００のアドレスと、グループスケールファクタが格納されているグループスケールファクタレジスタファイル５２のアドレスとの対応表を、データメモリ１００の一部に作成してこれらのアドレスを管理してもよい。
グループスケールファクタは、また、ブロックスケールファクタ検出器５４にも入力され、そこで、複数のグループスケールファクタのうち最小のものがブロックスケールファクタとして検出される。あるデータブロックの最初のデータグループの計算が終わった時点では、今計算されたばかりのグループスケールファクタ、すなわち、この図４の例では“２”が初期値として、ブロックスケールファクタ検出器５４内のレジスタ（図１には示されていない）に格納される。
次に、サイクル６で、データＸ（４）〜Ｘ（７）を含む２番目のデータグループがデータメモリ１００から読み出され、データＸ（４）〜Ｘ（７）がそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐ3の第２シフタ１０に振り分けられる。データＸ（０）〜Ｘ（３）を含む１番目のデータグループに対するのと同様の演算処理が、このデータグループに対しても行われる。唯一異なるのは、演算データＹ（４）〜Ｙ（７）に対して計算されるグループスケールファクタは、今回はブロックスケールファクタ検出器５４内のレジスタに保持されている内容と比較され、小さい方の値がブロックスケールファクタとして選択されるという点である。図４の例では、演算データＹ（４）〜Ｙ（７）からグループスケールファクタ“１”が検出される。この場合、ブロックスケールファクタ検出器５４内のレジスタに保持されている“２”よりも“１”の方が小さいので、ブロックスケールファクタ検出器５４内のレジスタの内容は更新される。
この例においては、この時点で、一つのデータブロックのすべてのデータに関する演算が完了したため、ブロックスケールファクタは、ブロックスケールファクタ検出器５４内のレジスタの現在の値、すなわち“１”に確定される。本例から、容易に類推されるように、例えこの後に演算を行うべき複数のデータグループがあったとしても、２番目のデータグループに適用された上述の処理を繰り返すことが可能である。
次に、下式（２）の信号処理を開始する。演算を始める前に、ブロックスケールファクタ検出器５４内のレジスタの内容をブロックスケールファクタレジスタ５６に転送しておく。
下式（２）によりデータメモリ１００の演算データに対して再度演算を行うときは、演算データＹ（０）〜Ｙ（３）を含む１番目のデータグループがデータメモリ１００から読み出され、演算データＹ（０）〜Ｙ（３）がそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐ3の第２シフタ１０に振り分けられる。これとともに、対応するグループスケールファクタ、すなわち、本例においては“２”が、アドレスバス１２０経由で与えられるアドレス情報により選択され、グループスケールファクタレジスタファイル５２から読み出される。第２シフタ１０における右シフト量は、現在のグループスケールファクタとブロックスケールファクタの差分、すなわち、本例においては、２−１＝１、として与えられる。このため、第２シフタ１０は、現在の入力を１ビット右シフトするように制御される。演算データＹ（０）〜Ｙ（３）に対して、この後適用される演算処理は、下式（１）について説明した演算処理とまったく同様である。
次に、演算データＹ（４）〜Ｙ（７）を含む２番目のデータグループがデータメモリ１００から読み出され、演算データＹ（４）〜Ｙ（７）がそれぞれデータバス１１０経由で各計算ユニットＰ0〜Ｐ3の第２シフタ１０に振り分けられる。このデータグループに対するグループスケールファクタは、図４に示すように、“１”である。結果として、このデータグループのすべての演算データは、１−１＝０、すなわち第２シフタ１０でシフトされずに出力される。
この段階で、すべての演算データＹ（０）〜Ｙ（７）が、データブロックの最大値の小数点位置に桁合わせされ、その結果、のちに続く積和演算において、固定小数点演算を行うことが可能となる。
図６に、本発明のブロックフローティング方式によって得られる演算データＹ（０）〜Ｙ（７）、Ｚ（０）〜Ｚ（７）を示す。そして、この演算結果を用いて下式（３）によりＳＮＲを計算すると、下式（８），（９）に示すようになる。なお、下式（８）は、下式（１）の演算結果に基づくＳＮＲを示す式であり、下式（９）は、下式（２）の演算結果に基づくＳＮＲを示す式である。
また、図７に、下式（１），（２）により、従来の固定小数点処理、従来のブロックフローティング処理および本発明によるブロックフローティング処理をそれぞれ行った場合のＳＮＲをまとめて示す。図７によれば、本発明によるブロックフローティング処理では、演算精度が大幅に改善されていることがわかる。
このようにして、本実施の形態では、データグループの各データに対して演算を行い、それら演算データを代表する最小のスケールファクタをグループスケールファクタとして検出し、検出したグループスケールファクタに基づいて各演算データに対してスケーリングを行うこれら一連の処理を、データブロックの各データグループごとに行い、さらに、検出したグループスケールファクタのうち最小のものをブロックスケールファクタとして検出し、スケーリングした演算データに対して再度演算を行うときは、演算の前に、データグループの各演算データに対して当該データグループのグループスケールファクタおよびブロックスケールファクタに基づいてスケーリングを行うようにした。
これにより、積和演算器１２からの演算データは、そのデータグループの演算データのうち絶対値が最大となるものの冗長なビット分だけ左シフトされてから丸められ、演算データに対して再度演算を行うときは、データメモリ１００の演算データは、そのデータブロックの演算データ（前回の演算における積和演算器１２からの演算データ）のうち正の最大値の小数点位置に桁合わせが行われてから演算が行われるので、演算過程におけるデータの桁落ちが少なくなる。また、従来の構成に対して回路をわずかに追加または変更するだけでよいので、回路を簡易に構成することができる。したがって、従来に比して、比較的簡易な構成により、ブロックフローティング方式で固定小数点演算を行うときの演算精度を向上することができる。
また、本実施の形態では、複数の計算ユニットＰ0〜Ｐk-1を備え、データグループ単位でデータを並列処理するようにした。これにより、ブロックフローティング方式で固定小数点演算を行うときの演算精度を向上しつつ、さらにデータの演算処理を高速に行うこともできる。
なお、上記実施の形態においては、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０と積和演算器１２と相互間で、ハードウェア手段を通じてデータを転送することについて説明したが、具体的には、図８に示す構成を採用することができる。図８は、各計算ユニットＰ0〜Ｐk-1の第２シフタ１０と積和演算器１２と相互間でデータを転送するための詳細な構成を示すブロック図である。
図８において、計算ユニットＰ0は、第２シフタ１０からのデータを保持するレジスタ１１ａを備えている。計算ユニットＰ1，Ｐ2は、前段の計算ユニットＰ0，Ｐ1のレジスタ１１ａからのデータを保持するレジスタ１１ａと、前段の計算ユニットＰ0，Ｐ1のレジスタ１１ａからのデータおよび第２シフタ１０からのデータのいずれかを選択して積和演算器１２に出力するセレクタ１１ｂと、を備えている。計算ユニットＰ3は、前段の計算ユニットＰ2のレジスタ１１ａからのデータおよび第２シフタ１２からのデータのいずれかを選択して積和演算器１２に出力するセレクタ１１ｂを備えている。
また、上記実施の形態においては、ユニットスケールファクタ検出器１４と、グループスケールファクタ検出器５０と、を備えて構成したが、これに限らず、例えば、図９に示す構成を採用することができる。図９は、ユニットスケールファクタ検出器１４およびグループスケールファクタ検出器５０の他の構成を示すブロック図である。
図９において、各計算ユニットＰ0〜Ｐ4は、ユニットスケールファクタ検出器１４に代えて、ＸＯＲアレイ１５ａからなる局所ブロックフローティングユニット１５で構成されている。そして、プライオリティエンコーダ２１からなるグループスケールファクタ検出器５１と、各計算ユニットＰ0〜Ｐ4の局所ブロックフローティングユニット１５とグループスケールファクタ検出器５１とを接続するワイヤードＯＲバスと、を備えて構成されている。
局所ブロックフローティングユニット１５は、積和演算器１２からの演算データを入力し、その演算データの隣り合うビットに対して排他的論理和演算を行って出力するようになっている。例えば、４ビットの演算データを入力した場合、最上位の４番目のビットおよび３番目のビットに対して排他的論理和演算を行ったものを出力データの３番目のビットとし、同じ要領で、３番目および２番目の演算結果を出力データの２番目のビットとし、２番目および１番目の演算結果を出力データの１番目のビットとし、そして、最上位のビットを出力データの最上位のビットとして出力する。
これにより、各計算ユニットＰ0〜Ｐ4の積和演算器１２からの演算データのスケールファクタを算出し、それらスケールファクタからグループスケールファクタを算出しなくても、各計算ユニットＰ0〜Ｐ4の積和演算器１２からの演算データから直接グループスケールファクタを検出することもできる。
また、上記実施の形態においては、数値演算を行うのに本発明を適用した場合について説明したが、これに限らず、本発明の主旨を逸脱しない範囲で他のものにも適用可能である。
また、上記実施の形態においては、制御ロジック４００を、内部のロジックに従って各部の制御を行うように構成したが、これに限らず、制御ロジック４００に代えて、ＣＰＵ、ＲＡＭおよびＲＯＭをバス接続してデータ演算処理部を構成し、データ演算処理部は、ＣＰＵにより、上記の制御手順を示したプログラムをＲＯＭから読み出して実行するように構成してもよい。この場合、上記の制御手順を示したプログラムは、ＲＯＭに格納されているが、これに限らず、上記の制御手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭに読み込んで実行するようにしてもよい。
また、上記実施の形態においては、本発明に係るデータ演算処理装置を、データメモリ１００と、演算部２００と、制御部３００と、制御ロジック４００と、アドレス生成器５００と、を備えたハードウェアで構成したが、これに限らず、例えば、ＣＰＵ、ＲＡＭおよびＲＯＭをバス接続して構成し、ＣＰＵにより、各部の機能を実現するための制御プログラムをＲＯＭから読み出して実行するように、一部または全部をソフトウェアで構成してもよい。この場合も、制御プログラムは、ＲＯＭに格納されているが、これに限らず、制御プログラムが記憶された記憶媒体から、その制御プログラムをＲＡＭに読み込んで実行するようにしてもよい。
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
上記実施の形態において、データメモリ１００は、請求の範囲第３項または第４項記載の記憶手段に対応し、グループスケールファクタレジスタファイル５２およびブロックスケールファクタレジスタ５６は、請求の範囲第４項記載の第２の記憶手段に対応している。
また、第２シフタ１０は、請求の範囲第３項、第４項、第６項または第７項記載の第１のスケーリング手段に対応し、積和演算器１２は、請求の範囲第３項、第５項、第６項または第７項記載の演算手段に対応し、ユニットスケールファクタ検出器１４は、請求の範囲第３項または第５項記載のスケールファクタ算出手段に対応し、第１シフタ１６は、請求の範囲第３項または第６項記載の第２のスケーリング手段に対応している。
また、グループスケールファクタ検出器５０は、請求の範囲第３項記載の検出グループスケールファクタ検出手段に対応し、ブロックスケールファクタ検出器５４は、請求の範囲第３項記載のブロックスケールファクタ検出手段に対応し、制御ロジック４００は、請求の範囲第３項または第４項記載の制御手段に対応している。
0003736741.tif 000002
産業上の利用可能性
以上説明したように、本発明に係る請求の範囲第１項ないし第７項記載のデータ演算処理装置によれば、従来に比して、比較的簡易な構成により、ブロックフローティング方式で固定小数点演算を行うときの演算精度を向上することができるという効果が得られる。
さらに、本発明に係る請求の範囲第３項記載のデータ演算処理装置によれば、ブロックフローティング方式で固定小数点演算を行うときの演算精度を向上しつつ、さらにデータの演算処理を高速に行うことができるという効果も得られる。
【図１】
0003736741.tif 000003
【図２】
0003736741.tif 000004
【図３】
0003736741.tif 000005
【図４】
0003736741.tif 000006
【図５】
0003736741.tif 000007
【図６】
0003736741.tif 000008
【図７】
0003736741.tif 000009
【図８】
0003736741.tif 000010
【図９】
0003736741.tif 000011
【図１０】
0003736741.tif 000012
【図１１】
0003736741.tif 000013
【図１２】
0003736741.tif 000014
【図１３】
0003736741.tif 000015
【図１４】
0003736741.tif 000016
【図１５】
0003736741.tif 000017
【図１６】
0003736741.tif 000018