| 【発明の名称】 |
信号処理装置、信号処理方法、プログラム記録媒体及びコンピュータプログラム |
| 【発明者】 |
【氏名】宮阪 修二
【氏名】則松 武志
【氏名】津島 峰生
【氏名】石川 智一
【氏名】澤田 慶昭
|
| 【要約】 |
【課題】
【解決手段】指数部抽出部は入力の浮動小数点フォーマットのデータの指数部からビット列を取りだす。仮数部抽出部は仮数部の上位Kビットを取りだす。第1の変換部は指数部抽出部の出力eを入力とする関数X(e)の値を出力する。第2の変換部は仮数部抽出部の出力fを入力とする関数Y(f)の値を出力する。乗算部は第1, 第2の変換部の出力値を乗算する。第1, 第2の変換部にあらかじめ適宜のテーブルを設定しておくことにより浮動小数点フォーマットのデータvに対し、vのp乗(v^p)を計算を、少ない回路構成で、高速に、演算精度良く行うことができる。 |
【特許請求の範囲】
【請求項1】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理装置であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだす指数部抽出部と、前記浮動小数点データの仮数部の上位Kビットを取りだす仮数部抽出部と、前記指数部抽出部の出力eを入力とする関数X(e)の値を出力する第1の変換部と、前記仮数部抽出部の出力fを入力とする関数Y(f)の値を出力する第2の変換部と、前記第1の変換部の出力値と、前記第2の変換部の出力値とを乗算する乗算部とを備え、i、jを整数としたとき、前記X(i)は、X(i)=2^((i−((1<<E−1)−1)−K) *p) となる値を返す関数であり、前記Y(j)は、Y(j)=((1<<K)+j)^pとなる値を返す関数であることを特徴とする信号処理装置。 【請求項2】 前記第1の変換部は、アドレスiに対して、X(i)の値が予め格納されているテーブルによって構成されており、前記第2の変換部は、アドレスjに対して、Y(j)の値が予め格納されているテーブルによって構成されている請求項1記載の信号処理装置。 【請求項3】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理装置であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだす指数部抽出部と、前記浮動小数点データの仮数部の上位Kビットを取りだす仮数部抽出部と、前記指数部抽出部の出力eを入力とする関数X(e)の値を出力する第1の変換部と、前記仮数部抽出部の出力fを入力とする関数Y(f)の値を出力する第2の変換部と、前記第1の変換部の出力値と、前記第2の変換部の出力値とを乗算する乗算部とを備え、i、jを整数としたとき、実数Sに対し、前記X(i)は、X(i)=2^((i−((1<<E−1)−1)−K) *p)*Sとなる値を返す関数であり、前記Y(j)は、Y(j)=(((1<<K)+j )^p) /Sとなる値を返す関数であることを特徴とする信号処理装置。 【請求項4】 前記第1の変換部は、アドレスiに対して、X(i)の値が予め格納されているテーブルによって構成されており、前記第2の変換部は、アドレスjに対して、Y(j)の値が予め格納されているテーブルによって構成されている請求項3記載の信号処理装置。 【請求項5】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満とした時、vに対してvの1乗を整数化した値を出力する信号処理装置であって、(N−2)を2進数で表記した時の桁数をMとしたとき、前記指数部の少なくとも下位Mビットと前記仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだす指数部仮数部抽出部と、前記指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、前記ビットフィールドを示す値wを入力として該テーブルの値を読出す第3の変換部と、を有することを特徴とする信号処理装置。 【請求項6】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理方法であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだし、前記浮動小数点データ仮数部の上位Kビットを取りだし、iを整数としたとき、2^((i−((1<<E−1)−1)−K) *p)となる値を返す関数X(i)を保持するテーブルより、前記指数部抽出部の出力eを入力として関数X(e)の値を出力し、jを整数としたとき、((1<<K)+j)^pとなる値を返す関数Y(j)を保持するテーブルより、前記仮数部抽出部の出力fを入力として関数Y(f)の値を出力し、前記関数X(e)、Y(f)の出力値を乗算することにより巾乗を算出することを特徴とする信号処理方法。 【請求項7】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満とした時、vに対してvの1乗を整数化した値を出力する信号処理方法であって、(N−2)を2進数で表記した時の桁数をMとしたとき、前記指数部の少なくとも下位Mビットと前記仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだし、前記指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、前記ビットフィールドを示す値wを入力として該テーブルの値を読出ことによりv^1を整数化した値を算出することを特徴とする信号処理方法。 【請求項8】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理方法であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだすステップと、前記浮動小数点データ仮数部の上位Kビットを取りだすステップと、iを整数とした時、2^((i‐( (1<<E)‐1)‐K) *p)となる値を返す関数X(i)を保持するテーブルより前記指数部抽出部の出力eを入力として関数X(e)の値を出力するステップと、jを整数とした時、((1<<K)+j )^pとなる値を返す関数Y(j)を保持するテーブルより前記仮数部抽出部の出力fを入力として関数Y(f)の値を出力するステップと、関数X(e)、Y(e)の出力値を乗算することにより巾乗を算出するステップを含むコンピュータプログラムを記録したプログラム記録媒体。 【請求項9】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満とした時、vに対してvの1乗を整数化した値を出力する信号処理方法であって、(N−2)を2進数で表記した時の桁数をMとしたとき、前記指数部の少なくとも下位Mビットと前記仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだすステップと、前記指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、前記ビットフィールドを示す値wを入力として該テーブルの値を読出ことによりv^1を整数化した値を算出するステップを含むコンピュータプログラムを記録したプログラム記録媒体。 【請求項10】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理方法であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだすステップと、前記浮動小数点データ仮数部の上位Kビットを取りだすステップと、iを整数とした時、2^((i‐( (1<<E)‐1)‐K) *p)となる値を返す関数X(i)を保持するテーブルより前記指数部抽出部の出力eを入力として関数X(e)の値を出力するステップと、jを整数とした時、((1<<K)+j )^pとなる値を返す関数Y(j)を保持するテーブルより前記仮数部抽出部の出力fを入力として関数Y(f)の値を出力するステップと、関数X(e)、Y(e)の出力値を乗算することにより巾乗を算出するステップを実行させるためのコンピュータプログラム。 【請求項11】 Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満とした時、vに対してvの1乗を整数化した値を出力する信号処理方法であって、(N−2)を2進数で表記した時の桁数をMとしたとき、前記指数部の少なくとも下位Mビットと前記仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだすステップと、前記指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、前記ビットフィールドを示す値wを入力として該テーブルの値を読出ことによりv^1を整数化した値を算出するステップを実行させるためのコンピュータプログラム。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、浮動小数点フォーマットのデータvに対し、vのp乗(v^p)を算出する信号処理装置、信号処理方法及びその記録媒体とコンピュータプログラムに関するものである。 【0002】 【従来の技術】本発明者らは、特開平11−288365号公報にて、入力が整数であるところの巾乗算出装置、例えば、x^(4/3)を少ない回路構成で、かつ高速に算出する装置に関して、その構成を述べた。発明では、入力値xの変域を、例えば、0≦x<8192とした。その様な入力値xに対して、x^(4/3)は以下の様に算出される。 【0003】まず、図1に示すように、入力値xが1023以下の値か否かを検査する。1023以下の値であれば、x’=x、そうでなければ、x’=x/8とする。すなわちx’の値は、この段階で、x’≦1023となっている。その様にして設定したx’をアドレスとしてROMテーブルを引く。当該ROMテーブルには、図2に示すように0から1023までの値をアドレスとしてx’に対する(4/3)乗の値が格納されている。 【0004】さて、ここで、このようなROMテーブルを、x’をアドレスとして引き、得られたアドレスに対応するデータをy’とする。もしここで、元々の入力値xが1023以下の値である場合は、y=y’とし、そうでない場合は、y=y’*16とする。この様にして算出したyが、今求めようとしているx^(4/3)である。 【0005】このようにして、入力が整数のあるところの巾乗の計算が、少ない回路規模で、かつ高速に行えることとなる。 【0006】 【発明が解決しようとする課題】しかしながらこのような方法では、入力が整数であるということを前提にしているので、入力が浮動小数点データであるような場合適用できないという課題を有していた。 【0007】或いは、入力の浮動小数点データを整数に型変換してから、従来の技術で述べた構成で巾乗の算出を行うこともできるが、その場合、浮動小数点データを整数に型変換するという余分の処理が発生するし、また、型変換に伴い演算精度ロスが発生するという課題を有していた。 【0008】例えばAAC (Advanced audio coding)の処理においては、圧縮符号化のために実数を整数に変換する処理が必要となるが、そのためには夫々浮動小数点データを格納するメモリと整数データを格納するメモリとを要し、浮動小数点を小数に変換するためのメインプロセッサとコプロセッサとが必要になるなどの構成が複雑になっていた。 【0009】本発明は、入力値が浮動小数点データである場合でも、少ない回路構成で、高速に、演算精度良く、巾乗の計算を行えるような信号処理装置を提供することを目的とする。例えば、MPEG2或いは、MPEG4オーディオ符号化方式AACのエンコードで用いられる、vの0.75乗の計算やvの1乗の整数化の計算を少ない回路構成でかつ、高速に実現する信号処理装置、信号処理方法及びそのプログラムプロダクトを提供するものである。 【0010】 【課題を解決するための手段】本願の請求項1の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理装置であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだす指数部抽出部と、前記浮動小数点データの仮数部の上位Kビットを取りだす仮数部抽出部と、前記指数部抽出部の出力eを入力とする関数X(e)の値を出力する第1の変換部と、前記仮数部抽出部の出力fを入力とする関数Y(f)の値を出力する第2の変換部と、前記第1の変換部の出力値と、前記第2の変換部の出力値とを乗算する乗算部とを備え、i、jを整数としたとき、前記X(i)は、X(i)=2^((i−((1<<E−1)−1)−K) *p) となる値を返す関数であり、前記Y(j)は、Y(j)=((1<<K)+j)^pとなる値を返す関数であることを特徴とするものである。 【0011】本願の請求項2の発明は、請求項1の信号処理装置において、前記第1の変換部は、アドレスiに対して、X(i)の値が予め格納されているテーブルによって構成されており、前記第2の変換部は、アドレスjに対して、Y(j)の値が予め格納されているテーブルによって構成されているものである。 【0012】本願の請求項3の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理装置であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだす指数部抽出部と、前記浮動小数点データの仮数部の上位Kビットを取りだす仮数部抽出部と、前記指数部抽出部の出力eを入力とする関数X(e)の値を出力する第1の変換部と、前記仮数部抽出部の出力fを入力とする関数Y(f)の値を出力する第2の変換部と、前記第1の変換部の出力値と、前記第2の変換部の出力値とを乗算する乗算部とを備え、i、jを整数としたとき、実数Sに対し、前記X(i)は、X(i)=2^((i−((1<<E−1)−1)−K) *p)*Sとなる値を返す関数であり、前記Y(j)は、Y(j)=(((1<<K)+j )^p) /Sとなる値を返す関数であることを特徴とするものである。 【0013】本願の請求項4の発明は、請求項3の信号処理装置において、前記第1の変換部は、アドレスiに対して、X(i)の値が予め格納されているテーブルによって構成されており、前記第2の変換部は、アドレスjに対して、Y(j)の値が予め格納されているテーブルによって構成されているものである。 【0014】本願の請求項5の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満とした時、vに対してvの1乗を整数化した値を出力する信号処理装置であって、(N−2)を2進数で表記した時の桁数をMとしたとき、前記指数部の少なくとも下位Mビットと前記仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだす指数部仮数部抽出部と、前記指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、前記ビットフィールドを示す値wを入力として該テーブルの値を読出す第3の変換部と、を有することを特徴とするものである。 【0015】本願の請求項6の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理方法であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだし、前記浮動小数点データ仮数部の上位Kビットを取りだし、iを整数としたとき、2^((i−((1<<E−1)−1)−K) *p)となる値を返す関数X(i)を保持するテーブルより、前記指数部抽出部の出力eを入力として関数X(e)の値を出力し、jを整数としたとき、((1<<K)+j)^pとなる値を返す関数Y(j)を保持するテーブルより、前記仮数部抽出部の出力fを入力として関数Y(f)の値を出力し、前記関数X(e)、Y(f)の出力値を乗算することにより巾乗を算出することを特徴とするものである。 【0016】本願の請求項7の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満とした時、vに対してvの1乗を整数化した値を出力する信号処理方法であって、(N−2)を2進数で表記した時の桁数をMとしたとき、前記指数部の少なくとも下位Mビットと前記仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだし、前記指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、前記ビットフィールドを示す値wを入力として該テーブルの値を読出ことによりv^1を整数化した値を算出することを特徴とするものである。 【0017】本願の請求項8の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理方法であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだすステップと、前記浮動小数点データ仮数部の上位Kビットを取りだすステップと、iを整数とした時、2^((i‐( (1<<E)‐1)‐K) *p)となる値を返す関数X(i)を保持するテーブルより前記指数部抽出部の出力eを入力として関数X(e)の値を出力するステップと、jを整数とした時、((1<<K)+j )^pとなる値を返す関数Y(j)を保持するテーブルより前記仮数部抽出部の出力fを入力として関数Y(f)の値を出力するステップと、関数X(e)、Y(e)の出力値を乗算することにより巾乗を算出するステップを含むコンピュータプログラムを記録したものである。 【0018】本願の請求項9の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満とした時、vに対してvの1乗を整数化した値を出力する信号処理方法であって、(N−2)を2進数で表記した時の桁数をMとしたとき、前記指数部の少なくとも下位Mビットと前記仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだすステップと、前記指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、前記ビットフィールドを示す値wを入力として該テーブルの値を読出ことによりv^1を整数化した値を算出するステップを含むコンピュータプログラムを記録したものである。 【0019】本願の請求項10の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理方法であって(pは定数)、前記浮動小数点データの指数部からビット列を取りだすステップと、前記浮動小数点データ仮数部の上位Kビットを取りだすステップと、iを整数とした時、2^((i‐( (1<<E)‐1)‐K) *p)となる値を返す関数X(i)を保持するテーブルより前記指数部抽出部の出力eを入力として関数X(e)の値を出力するステップと、jを整数とした時、((1<<K)+j )^pとなる値を返す関数Y(j)を保持するテーブルより前記仮数部抽出部の出力fを入力として関数Y(f)の値を出力するステップと、関数X(e)、Y(e)の出力値を乗算することにより巾乗を算出するステップを実行させるためのものである。 【0020】本願の請求項11の発明は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満とした時、vに対してvの1乗を整数化した値を出力する信号処理方法であって、(N−2)を2進数で表記した時の桁数をMとしたとき、前記指数部の少なくとも下位Mビットと前記仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだすステップと、前記指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、前記ビットフィールドを示す値wを入力として該テーブルの値を読出ことによりv^1を整数化した値を算出するステップを実行させるためのものである。 【0021】 【発明の実施の形態】本実施の形態においては、入力の浮動小数点フォーマットは、IEEE754準拠の32ビット浮動小数点フォーマットとする。まず、このIEEE754準拠の32ビット浮動小数点フォーマットについて、概略を説明する。 【0022】図3は、IEEE754準拠の32ビット浮動小数点フォーマットのビットフィールドを表す図である。図において、最上位の1ビットは、符号ビット10であり、0なら正の数、1なら負の数を示す。 【0023】符号ビット10に続く8ビットは、指数部11といわれる領域である。指数部11に続く23ビットは、仮数部12といわれる領域である。ここで指数部を8ビットの整数と見た場合の値をe、仮数部23ビットを、該23ビットの最上位ビットの上に小数点があるような固定少数点数と見た場合の値をkとすると、この浮動小数点フォーマットで表される実数値vは、v=(2^(e−127))*(1・k) となる。ここで、(1・k)の表記は、23ビットデータkの最上位ビットに小数点があり、小数点の上の1ビットは、常に1である事を示している。例えば、23ビットデータkがk=10000000000000000000000 である場合、 (1・k)=B'1.10000000000000000000000 =1+0.5 =1.5 を表している。尚、B’は以下の数が2進数であることを示している。確認のために、もう1つ例を示すと、k=11100000000000000000000 である場合、 を表していることになる。 【0024】つまり、仮数部12は、1.0以上、2.0未満の値を表現するフィールドである。すなわち、IEEE754準拠の32ビット浮動小数点のビットパタンが、例えば、0 10000000 11100000000000000000000の場合、このビットパタンが示す実数値vは、v=(2^(128−127))*1.875=3.75となる。 【0025】また、0 01111110 10000000000000000000000の場合、このビットパタンが示す実数値vは、v=(2^(126−127))*1.5=0.75となる。 【0026】(実施の形態1)以下本発明の実施の形態1における信号処理装置について図面を参照しながら説明する。この信号処理装置は、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとした時、v^pの値を算出する信号処理装置とする。本実施の形態では、巾乗値v^0.75の値を求める巾乗算出装置として説明する。これはMPEG2、或いは、MPEG4AAC規格のオーディオエンコーダの中で頻繁に行われる処理に準拠している(ISO/IEC 13818-7:1997)。 【0027】図4は実施の形態1における信号処理装置の構成を示すブロック図である。この信号処理装置は、指数部抽出部20、仮数部抽出部21、第1の変換部22、第2の変換部23、乗算部24を含んで構成される。 【0028】指数部抽出部20は、浮動小数点フォーマットのデータの指数部からビット列を取りだす。すなわち本実施の形態では、IEEE754、32ビット浮動小数点に準拠する浮動小数点フォーマットとしているので、図3に示す指数部11の8ビットを取り出すことになる。 【0029】仮数部抽出部21は、浮動小数点フォーマットのデータの仮数部12から上位Kビットのビット列を取りだす。すなわち本実施の形態では、図3に示す仮数部12の23ビット中の、上位Kビットを取り出すことになる。本実施の形態では、Kは12とする。 【0030】第1の変換部22は、指数部抽出部20の出力値eに対して関数X(e)の値を出力する。図5は第1の変換部22を示すテーブルである。本テーブルには、出力値eのとり得る値をiとすると、アドレスiに対して、2 ^((i-127-K)*0.75) となる値が格納されている。これは一般的には2 ^((i((1<<(E-1))-1)-K*Pとして示される。 【0031】第2の変換部23は、仮数部抽出部21の出力値fに対して関数Y(f)の値を出力する。図6は第2の変換部23を示すテーブルである。本テーブルには、出力値fのとり得る値をjとすると、アドレスjに対して、((1<<K)+j)^0.75となる値が格納されている。尚1<<Kは2^K を示す。これは一般的には((1<<K)+j)^P として示される。 【0032】乗算部24は、第1の変換部22の出力値と、第2の変換部23の出力値とを乗算し、v^pの値を出力するものである。 【0033】このような構成の信号処理装置の動作について説明する。まず図4の指数部抽出部20は、入力値vが与えられると、該vに対する浮動小数点フォーマットにおける指数部を抽出する。 【0034】例えば、v=6144.0であれば、これに対する浮動小数点フォーマットのビットパタンは、0 10001011 10000000000000000000000であるので、指数部抽出部20はこの場合、10001011を抽出する。 【0035】次に、仮数部抽出部21は、入力値vが与えられると、該vに対する浮動小数点フォーマットにおける仮数部の上位Kビットを抽出する(K=12)。この例であれば、仮数部抽出部21はこの場合、100000000000を抽出する。 【0036】次に、第1の変換部22は、指数部抽出部20の出力値B'10001011をアドレスとして、図5に示すテーブルを引く。この例の場合、B'10001011は139であるので、アドレス139を引き、出力値1.000を得る。 【0037】次に、第2の変換部23は、仮数部抽出部21の出力値B'100000000000をアドレスとして、図6に示すテーブルを引く。この例の場合、B'100000000000は2048であるので、アドレス2048を引き、出力値693.966309を得る。 【0038】最後に、乗算部24は、第1の変換部22の出力値と、第2の変換部23の出力値とを乗算する。すなわち、1.000 * 693.966309=693.966309この乗算結果は本実施の形態で求めようとしているところの、6144.0^0.75になっている。 【0039】本実施の形態の動作を確認するために、v=1.875に対するv^0.75の算出過程を再度たどってみる。v=1.875の場合、これに対する浮動小数点フォーマットのビットパタンは、0 01111111 11100000000000000000000であるので、指数部抽出部20はこの場合、01111111を抽出する。 【0040】次に、仮数部抽出部21は、入力値vが与えられると、該vに対する浮動小数点フォーマットにおける仮数部の上位Kビットを抽出する(K=12)。仮数部抽出部21はこの場合、111000000000を抽出する。 【0041】次に、第1の変換部22は、指数部抽出部20の出力値B'01111111をアドレスとして、図5に示すテーブルを引く。この例の場合、B'01111111は127であるので、アドレス127を引き、出力値0.001953を得る。 【0042】次に、第2の変換部23は、仮数部抽出部21の出力値B'111000000000をアドレスとして、図6に示すテーブルを引く。この例の場合、B'111000000000は3584であるので、アドレス3584を引き、出力値820.391052を得る。 【0043】最後に、乗算部24は、第1の変換部22の出力値と、第2の変換部23の出力値とを乗算する。すなわち、0.001953 * 820.391052=1.602224この乗算値は、本実施の形態で求めようとしているところの、1.875^0.75になっている。 【0044】以上の実施の形態では、第1, 第2の変換部22,23は、図5, 図6に示すテーブルによって構成されており、夫々アドレスiに対して、2 ^((i-127-K)*0.75) 、アドレスjに対して、((1<<K)+j)^0.75となる値が格納されていたが、必ずしもその必要はない。X(i), Y(j)を以下のようにしてもよい。 X(i)=2^((i−((1<<(E−1))−1)−K) *p)*SY(j)=(((1<<K)+j )^p) /S例えば、アドレスiに対して、2 ^((i-127)*0.75) となる値が格納されているようにしてもよい。その場合、第2の変換部23は、アドレスjに対して、((1.0+j/(1<<K)) ^0.75となる値が格納されているようなテーブルで構成される。このようなテーブルを、図7、図8に示した。 【0045】図9は本実施の形態の他の構成例を示すブロック図である。この実施の形態では入力値vをプロセッサ25に入力する。プロセッサ25はメモリ26に接続されている。メモリ26は前述した第1、第2の変換部のテーブルのデータを保持しており、更にプロセッサ25のプログラムを保持している。そしてこのプロセッサ25により指数部抽出部20、仮数部抽出部21と同様の指数部抽出処理及び仮数部抽出処理を行う。又これらの指数部仮数部で抽出されたデータに基づいて第1、第2の変換部よりデータを読出し、乗算処理をして、その結果を出力値v^pとして出力する。メモリ26内にはこれらの処理を行うプログラムと変換テーブルとが記載されているので、プロセッサ25により変換処理が実行できる。又このようなプログラムを記載した記録媒体やプログラムをネットワークを介して伝送するコンピュータプログラムとしても実現できる。 【0046】以上のように本実施の形態によれば、入力の浮動小数点フォーマットのデータの指数部からビット列を取りだす指数部抽出部と、当該仮数部の上位Kビットを取りだす仮数部抽出部と、指数部抽出部の出力eを入力とする関数X(e)の値を出力する第1の変換部と、仮数部抽出部の出力fを入力とする関数Y(f)の値を出力する第2の変換部と、第1の変換部の出力値と、第2の変換部の出力値とを乗算する乗算部とを備えることによって、入力値が浮動小数点データである場合でも、少ない回路構成で、高速に、演算精度良く、巾乗の計算を行えることとなる。 【0047】ここで、少ない回路構成で、と言う意味は、仮数部抽出部によって、仮数部の上位ビットのみとり出しており、該上位ビットのみをアドレスとしてテーブルを引くので、テーブルのメモリ空間が小さくて済む、ということである。 【0048】また、高速に、という意味は、浮動小数点フォーマットのビットパタンを直接取り出す処理と、テーブルアクセスと、乗算とのみによって構成されているので、複雑な計算が不要となり、高速に実行できるということである。 【0049】また、演算精度良く、という意味は、浮動小数点から、整数への型変換を行うことがないので、どんな場合でも、この実施の形態では、12ビットの有効桁数が維持できる、ということである。 【0050】本実施の形態では、仮数部から取り出すビット数Kを上位12ビットとしたが、それ以外の値であっても良い。12ビットより大きい値であれば、有効桁数がより多くとれるので演算精度が向上するが、テーブルメモリのサイズが大きくなる。逆に、12ビットより小さい値であれば、有効桁数がより少なくなるので演算精度は劣化するが、テーブルメモリのサイズは小さくて済む。例えば、11ビットにした場合は、第1の変換部22には、アドレスiに対して、2 ^((i-127-11)*0.75)となる値が格納され、第2の変換部23には、アドレスjに対して、(2048+j)^0.75となる値が格納される。 【0051】(実施の形態2)次に本発明の実施の形態2における信号処理装置について、図面を参照しながら説明する。本実施の形態では、本発明の信号処理装置の応用として、巾乗値v^1.0 の値を整数化した値を求めるための構成、すなわち、浮動小数点値vを整数に型変換する装置の構成、動作を説明する。浮動小数点値を整数に型変換する処理は、オーディオやビデオのエンコード処理において、極めて頻繁に行われるので、この処理を高速に行えると、その効果は絶大となる。例えば、MPEG2、或いは、MPEG4AAC規格のオーディオエンコーダの中では、変域が1.0以上8192.0未満であるところの浮動小数点値vに対して、vの値を整数値に型変換する処理が頻繁に行われる。 【0052】本実施の形態では、Eビットの指数部と、Fビットの仮数部とによって構成されている浮動小数点データをvとし、vの値を2.0 以上、2^N未満としたとき、vに対してvの1乗を整数化した値を出力する信号処理装置について説明する。 【0053】図10は本実施の形態2における信号処理装置の構成を示すブロック図である。この信号処理装置は、指数部仮数部抽出部30、第3の変換部31を含んで構成される。指数部仮数部抽出部31は(N−2)を2進数で表記した時の桁数をMとしたとき、指数部の少なくとも下位Mビットと仮数部の少なくとも上位(N−1)ビットのビットフィールドを取りだすものである。第3の変換部31は、指数部仮数部抽出部から抽出されたビットフィールドが示す値をwとしたとき、このビットフィールドでとり得る全てのアドレスwにvを整数化した値が予め格納され、ビットフィールドを示す値wを入力として該テーブルの値を読出すものである。 【0054】vの値を2.0 以上、2^N未満としたとき、指数部からは(N−2)を2進数で表記したときの桁数分取り出せば十分であることの理由は、以下の通りである。まずv=2^Nの場合の指数部の値eは、2^N=2^(e−127)であるので、e=N+127となる。ここでvは2.0 以上(2^1以上)としているので、eは128 以上となる。つまりこの条件では、指数部8ビットの最上位ビットは必ず”1”であるので、値を識別する上で、少なくとも最上位ビットの情報は不要で、下位側の数ビットで十分となる。ここで何ビットが必要かはNに応じて以下のように決まる。指数部eの最上位ビットを除外した値をe’としたとき、上記式よりe=N+127であるので、e’=e−128 =N+127 −128 =N−1となる。つまりe’を表現するために必要なビット数は、(N−1)を表現するのに必要なビット数ということになる。本実施の形態ではvの値を2^N未満としたので、e’を表現する値は1減り、必要なビット数は、(N−2)を表現するのに必要なビット数となる。 【0055】さて次にvの値を2.0 以上、2^N未満としたとき、仮数部からは少なくともその上位(N−1)ビットのビットフィールドを取り出すとしている理由は以下の通りである。本実施の形態では、浮動小数点データを整数化する装置について述べているので、2^N未満の値を整数化した値が何ビットで表現されるかに注目する。例えば2^5未満の値は32未満であるので、5ビットで表現できる。同様に、2^6未満の値は64未満であるので、6ビットで表現できる。つまり本実施の形態の浮動小数点フォーマットでは、仮数部は値を上位ビット側詰めで格納し、且つ最上位ビットを除外する形で表現されるので、整数化したときに必要なビット数より1ビット少ないビット数で値が表現されていることになる。従って2^N未満の値の場合、仮数部のN−1ビット取り出せば値を識別できるので、仮数部からはその上位(N−1)ビットのビットフィールドを取り出している。 【0056】このように構成することにより、指数部仮数部抽出部30が取り出した値をアドレスとして、第3の変換部31を構成しているテーブルを引くことによって入力値が浮動小数点データである場合でも、少ない回路構成で、高速に、巾乗の計算を行えることとなる。 【0057】以下では説明の簡単化のために、変域が2.0 以上2^N、即ち32.0未満であるところの浮動小数点値vに対して、vの値を整数値に型変換する信号処理装置の構成、動作を説明する。指数部仮数部抽出部30では、浮動小数点フォーマットのデータの指数部と仮数部とをまたぐビットフィールドから仮数部の上位N−1ビットを含むビットパタンを取り出す。本実施の形態では浮動小数点フォーマットは、図3に示すものとし、その指数部の下位2ビットと仮数部の上位4ビットを取り出す。すなわち、浮動小数点フォーマットの20ビット目から25ビット目までの連続フィールドを取り出し、これをwとする。 【0058】このようにビットパターンを抽出する意図は以下のとおりである。今、入力の浮動小数点値vの変域は2.0 以上32.0未満としており、求めるものは、(int)(v^1)である。従って、出力値は、2以上31以下の整数である。さてここで、例えば、浮動小数点値2.0 のビットパタンは、0 10000000 00000000000000000000000であり、浮動小数点値31.99999999999999 のビットパタンは、0 10000011 11111111111111111111111であるので、この変域においては、指数部内でビットが変動するのは、指数部内の下位2ビットのみである。逆に言うと、この下位2ビットが分かれば、その値に128を加える事によって、元々の指数部の値が導き出せることが分かる。 【0059】一方、仮数部については、23ビットの全ビットが変動するが、最終的な出力値の有効桁数は5ビットであるので、仮数部として必要なビットは、仮数部内の上位4ビットのみとなる。要するに、仮数部内の上位4ビット以外のビットは、結果的に切り捨てられるビットである。そのために、指数部仮数部抽出部30では、必要最小限の指数部であるところの下位2ビットと、仮数部の上位4ビットのみを取り出すこととした。 【0060】第3の変換部31は、指数部仮数部抽出部30の出力値を受けて、関数Z(i,j)の値を出力する。ここで、i、jはwから導き出せる値である。図11は本実施の形態の第3の変換部31を構成するテーブルを示す。本テーブルのアドレスwには、以下の様に算出された値が格納されている。すなわち、iをwの上位2ビットの値に128を足した値、つまり、指数部仮数部抽出部30がアクセスした元々の浮動小数点データの指数部の値とし、jをwの下位4ビットの値、つまり、指数部仮数部抽出部30がアクセスした元々の浮動小数点データの仮数部の上位4ビットの値とする。アドレスwには、(2^((i-127-4)*1.0)) * ((1<<4)+j) ^1.0 となる値が格納されている。 【0061】このような構成の信号処理装置の動作について説明する。まず図10の指数部仮数部抽出部30は、入力値vが与えられると、該vに対する浮動小数点フォーマットにおける20ビット目から25ビット目までの6ビットの連続フィールドを抽出する。例えば、v=3.75であれば、これに対する浮動小数点フォーマットのビットパタンは、0 10000000 11100000000000000000000であるので、指数部仮数部抽出部30はこの場合、00 1110 を抽出する。 【0062】次に、第3の変換部31は、指数部仮数部抽出部30の出力値B'001110をアドレスとして、図11に示すテーブルを引く。この例の場合、B'001110は14であるので、アドレス14を引き、出力値3を得る。これは、入力値3.75を整数に型変換した値になっている。 【0063】本実施の形態の動作を確認するために、v=20.75に対する処理過程を再度たどってみる。v=20.75であれば、これに対する浮動小数点フォーマットのビットパタンは、0 10000011 01001100000000000000000であるので、指数部仮数部抽出部30はこの場合、11 0100 を抽出する。 【0064】次に、第3の変換部31は、指数部仮数部抽出部30の出力値B'110100をアドレスとして、図11に示すテーブルを引く。この例の場合、B'110100は52であるので、アドレス52を引き、出力値20を得る。これは、入力値20.75を整数に型変換した値になっている。 【0065】この実施の形態においても図9と同様にプロセッサとメモリを用いてメモリ内に必要なステップを保持すると共に、第3の変換部に相当する変換テーブルを保持しておくことによって、同様にソフトウェア処理により変換処理を実現することができる。又このようなプログラムを記載した記録媒体やプログラムをネットワークを介して伝送するコンピュータプログラムとしても実現できる。 【0066】特に、本実施の形態では、pを1、テーブルに格納されている値は整数値としているので、結果として本実施の形態は、浮動小数点フォーマットの入力値vに対して、当該vの値を整数値に型変換する処理を高速に行うことができるものとなる。 【0067】 【発明の効果】請求項1〜4,6,8,10記載の発明によれば、浮動小数点フォーマットのビットパタンを直接取り出す処理と、該取り出された値の変換処理と、乗算とのみによって構成されているので、複雑な計算が不要となり、高速に巾乗の計算が実行できるということである。 【0068】請求項2,4記載の発明によれば、仮数部から取り出されたKビット巾のデータでアクセスするKビット巾のテーブルと、指数部で必要なビット巾のテーブルを設ければよいので、容量の大きなテーブルを設ける必要が無くなり、少ないハードウェア規模で、巾乗値を概算することができる。 【0069】請求項5,7,9,11記載の発明によれば、指数部と仮数部とが連続のビットフィールドに配置されている場合、1回のビット切りだし処理で、指数部と仮数部とが同時に切り出せることとなる。
|
| 【出願人】 |
【識別番号】000005821 【氏名又は名称】松下電器産業株式会社
|
| 【出願日】 |
平成13年7月19日(2001.7.19) |
| 【代理人】 |
【識別番号】100084364 【弁理士】 【氏名又は名称】岡本 宜喜
|
| 【公開番号】 |
特開2002−108608(P2002−108608A) |
| 【公開日】 |
平成14年4月12日(2002.4.12) |
| 【出願番号】 |
特願2001−219160(P2001−219160) |
|