(57)【要約】【課題】本発明は加算時に桁落ちが発生せず、精度の高い計算が可能な浮動小数点ＤＤＡ処理を実現することが出来る浮動小数点演算器及びＤＤＡ演算処理を提供することを課題とする。【解決手段】入力された浮動小数点形式のデータをデータ分離部１１で符号部、指数部、及び仮数部に分離する。分離した指数部を固定小数点形式のデータに変換し、加算結果保持レジスタ１４内の値と固定小数点形式の変換したデータとの累積加算演算をｎ回繰り返して結果を加算結果保持レジスタ１４に保持する。前記累積加算演算をｎ回繰り返した後、加算結果保持レジスタ１４内の値を浮動小数形式のデータに変換することにより演算結果が得られる。【選択図】図３
2009282684.tif 000002
【特許請求の範囲】
【請求項１】
演算対象の仮数部の累積加算結果を保持する加算結果保持レジスタと、
前記加算結果保持レジスタの値を浮動小数点形式のデータに変換する変換部と、
を備えることを特徴とする浮動小数点演算器。
【請求項２】
前記浮動小数点形式のデータから符号部、指数部及び仮数部を分離する第１の分割部と、
前記第１の分割部が分離した仮数部の最上位にｂｉｔ１を付加する暗黙値付加部と、
前記暗黙値付加部によって付加が行われた仮数部を前記演算対象の仮数部として累積加算演算を行い、結果を前記加算結果保持レジスタに保持する第１の加算部と、
を更に備えることを特徴とする請求項１に記載の浮動小数点演算器。
【請求項３】
前記変換部によって変換された前記浮動小数形式のデータから仮数部と指数部を分離する第２の分割部と
前記第１の分割部が分離した指数部に、前記第２の分割部が分離した指数部からバイアス値を減算した値を加算する第２の加算部と、
を更に備え、
前記変換部は、前記第１の分離部が分離した符号部を新しい符号部とし、前記第２の加算部の加算結果を新しい指数部とし、前記第２の分割部が分離した仮数部を新しい仮数部として、前記前記加算結果保持レジスタの値を浮動小数点形式のデータに変換することを特徴とする請求項２に記載の浮動小数点演算器。
【請求項４】
前記データの浮動小数形式及び変換部が変換する浮動小数形式はＩＥＥＥ７５４の単精度浮動小数点形式であり、前記バイアス値は１２７であることを特徴とする請求項３に記載の浮動小数点演算器。
【請求項５】
入力された浮動小数点形式のデータを符号部、指数部、及び仮数部に分離し、
前記分離した指数部を固定小数点形式のデータに変換し、
レジスタ内の値と前記変換したデータとの累積加算演算をｎ回繰り返して結果を前記レジスタに保持し、
前記累積加算演算をｎ回繰り返した後、前記レジスタ内の値を浮動小数形式のデータに変換することを特徴とするＤＤＡ演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、浮動小数点演算器に関し、更に詳しくは、ＤＤＡ（Ｄｉｇｉｔａｌ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ａｎａｌｙｚｅｒ）演算を行なう機能を備えた浮動小数点演算器に関する。
【背景技術】
【０００２】
ある値Ｘに、Ｘの微少な変化量であるｄｘ／ｄｙを加算していき、乗算を用いずにＸ＋ｄｘ／ｄｙ＊ｎの結果を求める処理をＤＤＡという。
特許文献１には、浮動小数点ＤＤＡ処理を実現するシステムが開示されている。
【０００３】
このＤＤＡ処理は、例えばコンピュータグラフィック処理などによく用いられる。
コンピュータグラフィックス処理では、線分描画の際にｙ方向のｘ値の増分量ｄｘ／ｄｙを用いて、線分の開始点にｄｘ／ｄｙをラインごとに加算していくことで直線を描画する。その他、三角形内部の色やテクスチャ座標等のパラメータの補間にも用いられる。
【０００４】
図６は、線分を描画するときのＸ座標を求める場合のＤＤＡ処理を示すもので、Ｙが１増える毎にＸをＤＤＡ処理によってｄｘ／ｄｙ＝０．４増やすことにより、線分の通るＸ、Ｙ座標を求めている。
【０００５】
また図７は、色の補完処理をＤＤＡ処理によって実現したものを示す図である。
同図は、矢印方向に色が青から赤に徐々に変化している図であり、このような色の補完処理を行なうためには矢印方向の増分をｙ、青色の増分をｘとしてＤＤＡ処理を行なうとともに矢印の逆方向の増分をｙ、赤色の増分をｘとしてＤＤＡ処理を行なうことによって実現することが出来る。
【０００６】
またＤＤＡ処理は、グラフィックス以外の分野では、特許文献２のように画像の補間フィルタとして使われたり、特許文献３に示す様に音声の生成に用いられるなど、用途は様々である。
【特許文献１】特開昭５８−１０６６３９号公報
【特許文献２】特開平１−１４２８７９号公報
【特許文献３】特開平３−２０３７９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ＤＤＡ処理を行う際に浮動小数点形式を用いると、加算による桁落ちが発生し、演算結果の誤差が大きくなってしまうという問題がある。
例えば１００００００に０．００００１を足すと、０．００００１は無視されてしまう。結果、０．００００１を足す処理を何回繰り返しても値は増えないことになってしまう。
【０００８】
図８は、浮動小数点形式によるＤＤＡ処理で生じる、加算時の桁落ちを示す図である。
同図では、ＤＤＡ処理として、符号部１ｂｉｔ、指数部８ｂｉｔ、仮数部２３ｂｉｔのＩＥＥＥ７５４の単精度浮動小数点形式で表した１．００００００００００００００００１を加えていった場合を示している。
【０００９】
同図において（１）は、１．００００００００００００００００１をＩＥＥＥ７５４形式で表したもの、（２）は（１）を５回足した結果である。この（２）の５回足した結果
までは、加算で求めても乗算で求めても結果は同じとなる。
【００１０】
しかし６回足した結果は、（３）のように１００．０００＿００００＿００００＿００００＿００００＿０１００＋１．０００＿００００＿００００＿００００＿００００＿０００１＝１００．００００＿００００＿００００＿００００＿００００＿０１０１となる。しかし仮数部は２３ｂｉｔなので（３）の下から２ｂｉｔで四捨五入され、最下位ｂｉｔは切り捨てられて（４）のようになる。
【００１１】
一方（１）×６の結果は（５）のように求まった結果から、最下位ｂｉｔを四捨五入して（６）のようになる。
したがって、ＤＤＡ処理により加算を続けて解を求める方式だと、加算を行なうたび毎に下位ｂｉｔの丸めが発生するため、乗算によって求めた場合（６）とは、結果が異なってくる。
【００１２】
浮動小数点形式の値のＤＤＡ演算に関する誤差を発生させないようにする為にはＤＤＡ処理による計算方法を用いず、乗算を用いてＸ＋ｄｘ／ｄｙ＊ｎの計算を各ｎごとに行えばよいが、その場合だと乗算回路が必要となり、演算回路の規模が大きくなってしまう。
【００１３】
この誤差を発生させないようにする為にはＤＤＡ処理による計算方法を用いず、乗算を用いてＸ＋ｄｘ／ｄｙ＊ｎの計算を各ｎごとに行えばよいが、この場合は乗算処理を含むこととなるため、演算回路規模が大きくなってしまうという問題がある。
【００１４】
そこで本発明は、回路規模が小さく、加算時に桁落ちが発生しない浮動小数点ＤＤＡ処理が可能な浮動小数演算器及びＤＤＡ演算処理を実現することを課題とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するため本浮動小数点演算器は、加算結果保持レジスタ及び変換部を備える。
加算結果保持レジスタは、演算対象の仮数部の累積加算結果を保持する。
【００１６】
変換部は、前記加算結果保持レジスタの値を浮動小数点形式のデータに変換する。
また本ＤＤＡ演算処理方法は、入力された浮動小数点形式のデータを符号部、指数部、及び仮数部に分離し、前記分離した指数部を固定小数点形式のデータに変換し、レジスタ内の値と前記変換したデータとの累積加算演算をｎ回繰り返して結果を前記レジスタに保持し、前記累積加算演算をｎ回繰り返した後、前記レジスタ内の値を浮動小数形式のデータに変換することを特徴とする。
【発明の効果】
【００１７】
本浮動小数点演算器によれば、加算時に桁落ちが発生せず、精度の高い計算が可能な浮動小数点ＤＤＡ処理を実現することが出来る。
また本浮動小数点演算器によれば、回路規模が小さくまとめることが出来る。
【発明を実施するための最良の形態】
【００１８】
以下に図面を参照しながら本発明の一実施形態について説明する。
本実施形態の浮動小数点演算器では、ＤＤＡ処理を行うに当たり、まず各サイクルで入力されるｄｘ／ｄｙの浮動小数点データ（Ａ）を符号部、仮数部、指数部に分ける。そして仮数部を隠しｂｉｔを含めた符号なしの１ｂｉｔ整数＋２３ｂｉｔ小数の固定小数点形式に変換した後ＤＤＡ処理を行い、その結果を固定小数点形式から浮動小数点形式（Ｂ）に変換する。指数部については、バイアスを考慮して変換結果（Ｂ）の指数部を（Ａ）の指数部に加算した結果と、（Ａ）の符号部、（Ｂ）の仮数部を用いて、浮動小数点データ
（Ｃ）を作成する。
【００１９】
これにより、最下位ｂｉｔを四捨五入は、固定小数点形式から浮動小数形式の変換時の１度のみなので、桁落ちが生じてＤＤＡ処理による計算結果が乗算処理による計算結果と異なる値となることはない。
【００２０】
次に本実施形態の浮動小数点演算器によるＤＤＡ処理について例を挙げて詳細に説明する。
図１は、本実施形態の浮動小数点演算器によるＤＤＡ処理例を示す図である。
【００２１】
同図は、図８と同様、２進表示で１．００００００００００００００００１の値を加えていった場合を例として示している。
この１．００００００００００００００００１の値を符号部１ｂｉｔ、指数部８ｂｉｔ、仮数部２３ｂｉｔのＩＥＥＥ７５４の単精度浮動小数点形式で表すと図１の（１）のようになる。
【００２２】
尚図１の例では符号部１ｂｉｔ、指数部８ｂｉｔ、仮数部２３ｂｉｔのＩＥＥＥ７５４の単精度浮動小数点形式を例としたが、本実施形態の浮動小数点演算器はこのような形式を扱うものに限定されるものではなく、任意の指数部、仮数部をもつ形式に対応する事が出来る。
【００２３】
本実施形態の浮動小数点演算器では、まず（１）の浮動小数データを符号部、指数部、仮数部に分ける。
次に浮動小数点演算器では、仮数部は隠しｂｉｔを含めると符号無しの１ｂｉｔ整数＋２３ｂｉｔ小数の固定小数点として扱うことが出来るので、仮数部を固定小数点形式に変換する。この変換結果は（２）のようになる。
【００２４】
固定小数点形式に変換した仮数部（２）を加算してゆく。本例では６回加算する。この加算結果は、（３）のようになる。
そして加算結果（３）を固定小数点形式から浮動小数形式に変換する。この変換結果は、（４）のようになる。
【００２５】
そして指数部の計算として、バイアス値１２７（０１１１１１１１）を減算した（４）の指数部と（１）の指数部を加算して新しい指数部を求める。この結果が（５）となる。
そして最後に（１）の符号部、（５）の指数部及び（３）の仮数部を組み合わせると目的の浮動小数点データ結果が得られる。この結果が（６）である。
【００２６】
このように本実施形態の浮動小数点演算器におけるＤＤＡ処理による計算は、加算時に丸めを行わないので、桁落ちが生じて演算誤差が出ることはなく、正確な計算結果を得ることが出来る。また乗算処理を行わず加算処理のみにより計算できるので演算器回路の回路規模を削減する事が出来る。
【００２７】
図２は、本実施形態の浮動小数点演算器で行われるＤＤＡ処理の処理フローを示す図である。
同図を用いて以下に本実施形態の浮動小数点演算器で行われるＤＤＡ処理の処理フローを説明する。
【００２８】
まずステップＳ１として、浮動小数点演算器は、浮動小数形式で表されたＤＤＡ処理対象の数値を符号部、指数部及び仮数部に分離する。
次にステップＳ２として、浮動小数点演算器は、ステップＳ１で分離した仮数部に対し
て、最上位に隠しｂｉｔである１を付加する。そして浮動小数点演算器は、ステップＳ３としてステップＳ２で求めた仮数部の値を整数部が１ｂｉｔの固定小数と見なしてＤＤＡ加算処理を行い、ステップＳ４としてこの結果を浮動小数形式に変換後、ステップＳ５として変換結果から指数部と仮数部を取り出す。
【００２９】
また浮動小数点演算器は、仮数部に対する処理としてステップＳ６において、ステップＳ１で分離したＤＤＡ処理対象の数値の指数部と、ステップＳ５で浮動小数形式に変換した後の数値から分離した指数部を加算し、ステップＳ７としてバイアス値を減算して新しい指数部を求める。
【００３０】
そしてステップＳ８において、浮動小数点演算器は、ステップＳ１で分離した符号部と、ステップＳ５で取り出した仮数部と，ステップＳ７で求めた指数部を結合し、ステップＳ９として浮動小数ＤＤＡ加算処理結果を得る。
【００３１】
次に本実施形態の浮動小数点演算器の構成要素であるＤＤＡ回路の構成について説明する。
図３は、本実施形態のＤＤＡ回路の構成例を示す図である。
【００３２】
同図においてＤＤＡ回路１は、データ分割部１１、仮数部暗黙値付加部１２、加算器１３、加算結果保持レジスタ１４、固定小数−＞浮動小数変換器１５、データ分割部１６、減算器１７、加算器１８、及びデータ結合部１９を備えている。
【００３３】
データ分割部１１は、入力された浮動小数点データを符号部、指数部及び仮数部に分離する。仮数部暗黙値付加部１２は、データ分割部１１から出力される仮数部の最上位に１を付加する。加算器１３は、仮数部暗黙値付加部１２からの出力と加算結果保持レジスタ１４内の値とを加算し、結果を加算結果保持レジスタ１４に出力する。加算結果保持レジスタ１４は、加算器１４による加算結果を保持するレジスタで、ｎ回この加算結果保持レジスタが保持している値に仮数部暗黙値付加部１２からの出力を加えた結果を加算結果保持レジスタに再保持させることによりＤＤＡ処理のｄｘ／ｄｙ＊ｎの計算を実現する。固定小数−＞浮動小数変換器１５は、加算結果保持レジスタ１４に保持されている固定小数点形式の値を浮動小数形式の値に変換する。データ分割部１６は、固定小数−＞浮動小数変換器１５から出力される浮動小数点値を符号部、指数部及び仮数部に分割する。減算器１７は、データ分割部１６は、データ分割部１６によって分離された仮数部の値からバイアス値１２７（０１１１１１１１）を減算する。加算器１８は、減算部１７から出力される指数部の値にデータ分割部１１から出力される指数部の値を加算する。データ結合部１９は、データ分割部１１から出力される符号部、加算器１８から出力される仮数部及びデータ分割部１６から出力される仮数部を結合して演算結果を生成し、これを出力する。
【００３４】
このような構成により、本実施形態のＤＤＡ回路は、加算を固定小数として行うので丸めが生じず、精度の高い計算を行うことが出来る。また演算器は、加算器１３、１８及び減算器１７のみであり、乗算器を持たないので回路構成を小さくまとめることが出来る。
【００３５】
次に本実施形態のＤＤＡ回路を備えたグラフィック描画回路について説明する。
図４は、本実施形態のＤＤＡ回路を備えたグラフィックス描画回路を構成例を示す図である。
【００３６】
同図のグラフィック描画回路２０は、頂点処理部２１、クリップ透視変換、ビューポート変換部２２、セットアップ部２３、ＤＤＡ演算部２４、及び画素後処理部２５を備えている。
【００３７】
頂点処理部２１は、描画する画像の頂点位置の移動による描画画像の回転や移動等の処理を行うものである。クリップ透視変換、ビューポート変換部２２は、画像のクリップ（表示画面外の頂点の削除）やビューポート変換（表示デバイスでの座標系に合うように頂点座標を変換する）を司る。セットアップ部２３は、頂点の位置から、図形の各辺の傾き、色やテクスチャ座標等の各パラメータの変化量、描画開始位置等を求めるものである。ＤＤＡ演算部２４は、図３に示した本実施形態のＤＤＡ回路１と実質的に同じもので、グラフィック描画回路２０内ではＤＤＡ演算を行って、各ライン毎の描画の開始位置を求める。画素後処理部２５は、描画画素の後処理を行うものである。
【００３８】
このような構成のグラフィックス描画回路２０では、描画対象となる図形の頂点情報を元に描画を行う。
まず頂点処理部２１により、頂点の位置の回転・平行移動・拡大縮小を行う。次に頂点後処理部２２よって、クリップ、透視変換（視点から遠くのものは小さく見えるようにする処理）、ビューポート変換を行う。そして次にセットアップ部２３が頂点の位置から、図形の各辺の傾き、色やテクスチャ座標等の各パラメータの変化量、描画開始位置等を求める。またセットアップ部２３は、ｙが１増えた場合のｘの変化量ｄｘ／ｄｙ、ｘ、ｙが１増えた場合の各パラメータの変化量を求める。そしてこれらの情報を元にＤＤＡ演算部２４は、ＤＤＡ演算処理を行い、各ライン毎の画素の描画開始位置を求める。例えば、開始位置（ｘ０、ｙ０）のラインの一つ上のラインの開始位置は、（ｘ０＋ｄｘ／ｄｙ、ｙ０＋１）となる。そして後処理部２５は、描画画素の後処理を行う。この後処理には、デプステスト（対象画素より手前の物体が描画されていれば、対象画素は描画しない）、アルファブレンド（既に描画済みの同一位置の画素とブレンド処理を行う）等がある。
そして生成された描画画素は、フレームバッファ３０に格納される。
【００３９】
図５は、図４のグラフィックス描画回路２０のＤＤＡ演算部２４によるＤＤＡ演算処理の例を示す図である。
同図では、線分４１を先頭としたｘ方向の線分を描く図形を描画する例を示している。
【００４０】
描画する線分４２の開始座標は、座標ｙの値は１つずつ増やしてゆき、それに対応する座標ｘの値をＤＤＡ演算処理によって求め、対応する線分の開始画素の座標を求めている。
【００４１】
このように本実施形態のＤＤＡ回路は、グラフィックス描画回路２０にも適用することが出来る。また図４のグラフィックス描画回路２０のような小規模な回路だけでなくＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のような大規模なプロセッサに適用することも出来る。
【００４２】
また上記例では、ＤＤＡ回路をコンピュータグラフィックスの分野に適用する場合を例としているが、本実施形態のＤＤＡ回路はグラフィック分野だけでなく、それ以外の分野、例えば音声の生成等他の分野に用いることが出来るのはいうまでもない。
【００４３】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
演算対象の仮数部の累積加算結果を保持する加算結果保持レジスタと、
前記加算結果保持レジスタの値を浮動小数点形式のデータに変換する変換部と、
を備えることを特徴とする浮動小数点演算器。
（付記２）
前記浮動小数点形式のデータから符号部、指数部及び仮数部を分離する第１の分割部と、
前記第１の分割部が分離した仮数部の最上位にｂｉｔ１を付加する暗黙値付加部と、
前記暗黙値付加部によって付加が行われた仮数部を前記演算対象の仮数部として累積加算演算を行い、結果を前記加算結果保持レジスタに保持する第１の加算部と、
を更に備えることを特徴とする付記１に記載の浮動小数点演算器。
（付記３）
前記変換部によって変換された前記浮動小数形式のデータから仮数部と指数部を分離する第２の分割部と
前記第１の分割部が分離した指数部に、前記第２の分割部が分離した指数部からバイアス値を減算した値を加算する第２の加算部と、
を更に備え、
前記変換部は、前記第１の分離部が分離した符号部を新しい符号部とし、前記第２の加算部の加算結果を新しい指数部とし、前記第２の分割部が分離した仮数部を新しい仮数部として、前記前記加算結果保持レジスタの値を浮動小数点形式のデータに変換することを特徴とする付記２に記載の浮動小数点演算器。
（付記４）
前記データの浮動小数形式及び変換部が変換する浮動小数形式はＩＥＥＥ７５４の単精度浮動小数点形式であり、前記バイアス値は１２７であることを特徴とする付記３に記載の浮動小数点演算器。
（付記５）
入力された浮動小数点形式のデータを符号部、指数部、及び仮数部に分離し、
前記分離した指数部を固定小数点形式のデータに変換し、
レジスタ内の値と前記変換したデータとの累積加算演算をｎ回繰り返して結果を前記レジスタに保持し、
前記累積加算演算をｎ回繰り返した後、前記レジスタ内の値を浮動小数形式のデータに変換することを特徴とするＤＤＡ演算処理方法。
（付記６）
前記浮動小数形式のデータへの変換は、前記入力された浮動小数点形式のデータから分離した符号部を新しい符号部とし、前記入力された浮動小数点形式のデータから分離した指数部と前記レジスタ内の値を浮動小数形式のデータに変換後のデータから分離した指数部からバイアス値を引いた値を加算したものを新しい指数部とし、前記レジスタ内の値を浮動小数形式のデータに変換した値から分離した仮数部を新しい仮数部として行うことを特徴とする付記５に記載のＤＤＡ演算処理方法。
【図面の簡単な説明】
【００４４】
【図１】本実施形態の浮動小数点演算器によるＤＤＡ処理例を示す図である。
【図２】本実施形態の浮動小数点演算器で行われるＤＤＡ処理の処理フローを示す図である。
【図３】本実施形態のＤＤＡ回路の構成例を示す図である。
【図４】本実施形態のＤＤＡ回路を備えたグラフィックス描画回路を構成例を示す図である。
【図５】グラフィックス描画回路のＤＤＡ演算部によるＤＤＡ演算処理の例を示す図である。
【図６】線分を描画するときのＸ座標を求める場合のＤＤＡ処理を示す図である。
【図７】色の補完処理をＤＤＡ処理によって実現したものを示す図である。
【図８】浮動小数点形式によるＤＤＡ処理で生じる、加算時の桁落ちを示す図である。
【符号の説明】
【００４５】
１      ＤＤＡ回路
１１、１６      データ分割部
１２      仮数部暗黙値付加部
１３、１８      加算器
１４      加算結果保持レジスタ
１５      固定小数−＞浮動小数変換器
１７      減算器
１９      データ結合部
２０      グラフィック描画回路
２１      頂点処理部
２２      クリップ透視変換、ビューポート変換部
２３      セットアップ部
２４      ＤＤＡ演算部
２５      画素後処理部
【図１】
2009282684.tif 000003
【図２】
2009282684.tif 000004
【図３】
2009282684.tif 000005
【図４】
2009282684.tif 000006
【図８】
2009282684.tif 000007
【図５】
2009282684.tif 000008
【図６】
2009282684.tif 000009
【図７】
2009282684.tif 000010