JP2010102431A - 浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置 - Google Patents
浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置 Download PDFInfo
- Publication number
- JP2010102431A JP2010102431A JP2008271858A JP2008271858A JP2010102431A JP 2010102431 A JP2010102431 A JP 2010102431A JP 2008271858 A JP2008271858 A JP 2008271858A JP 2008271858 A JP2008271858 A JP 2008271858A JP 2010102431 A JP2010102431 A JP 2010102431A
- Authority
- JP
- Japan
- Prior art keywords
- remainder
- mantissa
- unit
- exponent
- bits
- 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.)
- Pending
Links
Images
Abstract
【課題】単精度演算を行う回路で切り捨てられるガードビットを有効に利用して、ゲート数が少なく、コスト面、高速性に優れ、また、特に累算において精度の高い浮動小数点数演算回路を提供する。
【解決手段】仮数演算部4に付加ビット列を生成する付加ビット生成器9を備え、余りビット列から余り仮数と指数調整値を生成する余り仮数生成部12と、指数と指数調整値から余りビット列の余り指数を生成する余り指数生成部11とを有する余り正規化部7と、余り正規化部7で生成された余り指数と余り仮数を用いて余りの丸めを行い余り出力を生成する余り丸め部8とを浮動小数点演算部1に備えると共に、余り出力を記憶する余り記憶部13を備える。
【選択図】図1
【解決手段】仮数演算部4に付加ビット列を生成する付加ビット生成器9を備え、余りビット列から余り仮数と指数調整値を生成する余り仮数生成部12と、指数と指数調整値から余りビット列の余り指数を生成する余り指数生成部11とを有する余り正規化部7と、余り正規化部7で生成された余り指数と余り仮数を用いて余りの丸めを行い余り出力を生成する余り丸め部8とを浮動小数点演算部1に備えると共に、余り出力を記憶する余り記憶部13を備える。
【選択図】図1
Description
本発明は、浮動小数点数を用いて実行される制御演算で利用される浮動小数点数演算回路と浮動小数点演算方法及び浮動小数点数演算回路を搭載したサーボ制御装置に関する。
サーボモータを制御するサーボ制御装置のような制御演算を行う装置では、低コストで高速で精度の良い演算が求められる。このため、浮動少数点数を用いて演算する場合がある。
一般に浮動小数点数は指数を利用して広いダイナミックレンジを扱うことが出来る。そのため、比例処理のようにデータにゲインを掛け合わせる処理で、整数のようなオーバフローを心配することなく、単精度浮動小数点数でも演算を行なことができる。制御演算で利用される処理には比例処理のほかにも、ディジタルフィルタや積分処理等がある。例えば、ディジタルフィルタではタップ数に相当するデータが累算され、また、積分処理では最初からのデータが累算される。浮動小数点数の精度は仮数+1ビット分である。そのため、従来の浮動小数点数演算回路は、積分処理のように過去からのデータが累算される処理においては、仮数の演算結果のオーバフローが生じやすく、単精度演算では演算精度が低下するという問題があった。
また、精度を確保するため、倍精度浮動小数点数で演算をすることも考えられるが、ASIC(Application Specific Integrated Circuit)で実現する場合ゲート数が増大してしまうという問題がある。
これに対し、浮動小数点演算の加算に関する桁合わせシフト時のkビット生成回路を倍精度のみとし、ハードウエアの量を減少したものが提案されている。(例えば特許文献1参照)
図8は特許文献1に示される従来の浮動小数点演算回路の例を示すブロック図である。図8の浮動小数点数演算回路は、単精度データの有効ビット以降に0を必要数付加して、擬似的に倍精度データを生成するシフト量生成回路100と、加算すべき2つの倍精度の浮動小数点データの指数部の値に応じて、一方の浮動小数点データの仮数部をシフトして桁合せを行う桁合せシフタ101、103と、上記桁合せシフタにより仮数部のデータをシフトした場合に、充溢したビットからKビットを生成する倍精度用kビット生成回路102、104と、桁合せを行った仮数部のデータを加算する加算器105と、上記加算器により加算した後のデータから、単精度用のKビットを生成する単精度用kビット生成回路106とを具備することにより構成されている。
特開平2−85922号公報(4頁、第1図)
一般に浮動小数点数は指数を利用して広いダイナミックレンジを扱うことが出来る。そのため、比例処理のようにデータにゲインを掛け合わせる処理で、整数のようなオーバフローを心配することなく、単精度浮動小数点数でも演算を行なことができる。制御演算で利用される処理には比例処理のほかにも、ディジタルフィルタや積分処理等がある。例えば、ディジタルフィルタではタップ数に相当するデータが累算され、また、積分処理では最初からのデータが累算される。浮動小数点数の精度は仮数+1ビット分である。そのため、従来の浮動小数点数演算回路は、積分処理のように過去からのデータが累算される処理においては、仮数の演算結果のオーバフローが生じやすく、単精度演算では演算精度が低下するという問題があった。
また、精度を確保するため、倍精度浮動小数点数で演算をすることも考えられるが、ASIC(Application Specific Integrated Circuit)で実現する場合ゲート数が増大してしまうという問題がある。
これに対し、浮動小数点演算の加算に関する桁合わせシフト時のkビット生成回路を倍精度のみとし、ハードウエアの量を減少したものが提案されている。(例えば特許文献1参照)
図8は特許文献1に示される従来の浮動小数点演算回路の例を示すブロック図である。図8の浮動小数点数演算回路は、単精度データの有効ビット以降に0を必要数付加して、擬似的に倍精度データを生成するシフト量生成回路100と、加算すべき2つの倍精度の浮動小数点データの指数部の値に応じて、一方の浮動小数点データの仮数部をシフトして桁合せを行う桁合せシフタ101、103と、上記桁合せシフタにより仮数部のデータをシフトした場合に、充溢したビットからKビットを生成する倍精度用kビット生成回路102、104と、桁合せを行った仮数部のデータを加算する加算器105と、上記加算器により加算した後のデータから、単精度用のKビットを生成する単精度用kビット生成回路106とを具備することにより構成されている。
従来の浮動小数点数の演算では、単精度での演算では積分処理のように過去からのデータが累算される処理においては、仮数の演算結果のオーバフローが生じやすく、演算精度が低下するという問題があった。
また、倍精度演算を使用すると、精度面では問題ないが、ゲート数が増加し、コスト面、高速性で問題がある。特許文献1の提案を使用しても、倍精度演算で対応するため、単精度演算に比べるとゲート数が増加してしまう。
本発明はこのような問題点に鑑みてなされたものであり、単精度演算を行う回路で切り捨てられるガードビットを有効に利用して、ゲート数が少なく、コスト面、高速性に優れ、また、特に累算において精度の高い浮動小数点数演算回路を提供することを目的とする。
また、倍精度演算を使用すると、精度面では問題ないが、ゲート数が増加し、コスト面、高速性で問題がある。特許文献1の提案を使用しても、倍精度演算で対応するため、単精度演算に比べるとゲート数が増加してしまう。
本発明はこのような問題点に鑑みてなされたものであり、単精度演算を行う回路で切り捨てられるガードビットを有効に利用して、ゲート数が少なく、コスト面、高速性に優れ、また、特に累算において精度の高い浮動小数点数演算回路を提供することを目的とする。
上記問題を解決するため、本発明は次のようにしたのである。
請求項1に記載の発明は、IEEE754に準拠する2つの浮動小数点数の演算を行うために、前記各入力の符号を演算する符号演算部と、指数を演算する指数演算部と、仮数演算器により仮数を演算する仮数演算部と、前記指数演算部と前記仮数演算部で演算された結果を正規化する正規化部と、前記符号演算部と前記正規化部で演算された結果を丸める丸め部を備えた浮動小数点演算部を有する浮動小数点演算回路において、前記仮数演算部に、入力された浮動小数点数のラウンドビットの下位に、必要な精度の余りを生成するために必要なビット数の付加ビット列を生成する付加ビット生成器を備え、前記正規化部で正規化の際に生成された余りの23ビット以降のビットである余りビット列から余り仮数と指数調整値を生成する余り仮数生成部と、前記正規化部で正規化の際に生成された指数と前記指数調整値から余りビット列の余り指数を生成する余り指数生成部とを有する余り正規化部と、該余り正規化部で生成された前記余り指数と前記余り仮数を用いて余りの丸めを行い余り出力を生成する余り丸め部とを前記浮動小数点演算部に備えると共に、前記余り出力を記憶する余り記憶部を備えるものである。
また、請求項2に記載の発明は、請求項1記載の浮動小数点演算回路において、前記余り仮数は前記余りビット列の1の場所をMSBから走査して最初に1が出現するまでのビット数nを検出し、1をMSBとしてnビット目以降に必要な0が追加されたものとするものである。
また、請求項3に記載の発明は、請求項2記載の浮動小数点演算回路において、前記指数調整値は1のMSB側のビット数n−1とするものである。
また、請求項4に記載の発明は、請求項3記載の浮動小数点演算回路において、前記余り指数は前記指数演算部で演算された指数から、前記指数調整値と単精度浮動小数点数の仮数部のビット数である23との加算結果を引いたものとするものである。
また、請求項5に記載の発明は、請求項1乃至4いずれかに記載の浮動小数点演算回路において、前記余り記憶部の前段に置かれ、余り出力と余り記憶部の出力の2つを入力とし、出力を余り記憶部へ出力する浮動小数点数加算器をさらに備えるものである。
請求項1に記載の発明は、IEEE754に準拠する2つの浮動小数点数の演算を行うために、前記各入力の符号を演算する符号演算部と、指数を演算する指数演算部と、仮数演算器により仮数を演算する仮数演算部と、前記指数演算部と前記仮数演算部で演算された結果を正規化する正規化部と、前記符号演算部と前記正規化部で演算された結果を丸める丸め部を備えた浮動小数点演算部を有する浮動小数点演算回路において、前記仮数演算部に、入力された浮動小数点数のラウンドビットの下位に、必要な精度の余りを生成するために必要なビット数の付加ビット列を生成する付加ビット生成器を備え、前記正規化部で正規化の際に生成された余りの23ビット以降のビットである余りビット列から余り仮数と指数調整値を生成する余り仮数生成部と、前記正規化部で正規化の際に生成された指数と前記指数調整値から余りビット列の余り指数を生成する余り指数生成部とを有する余り正規化部と、該余り正規化部で生成された前記余り指数と前記余り仮数を用いて余りの丸めを行い余り出力を生成する余り丸め部とを前記浮動小数点演算部に備えると共に、前記余り出力を記憶する余り記憶部を備えるものである。
また、請求項2に記載の発明は、請求項1記載の浮動小数点演算回路において、前記余り仮数は前記余りビット列の1の場所をMSBから走査して最初に1が出現するまでのビット数nを検出し、1をMSBとしてnビット目以降に必要な0が追加されたものとするものである。
また、請求項3に記載の発明は、請求項2記載の浮動小数点演算回路において、前記指数調整値は1のMSB側のビット数n−1とするものである。
また、請求項4に記載の発明は、請求項3記載の浮動小数点演算回路において、前記余り指数は前記指数演算部で演算された指数から、前記指数調整値と単精度浮動小数点数の仮数部のビット数である23との加算結果を引いたものとするものである。
また、請求項5に記載の発明は、請求項1乃至4いずれかに記載の浮動小数点演算回路において、前記余り記憶部の前段に置かれ、余り出力と余り記憶部の出力の2つを入力とし、出力を余り記憶部へ出力する浮動小数点数加算器をさらに備えるものである。
請求項1〜4、6〜9に記載の発明によると、単精度浮動小数点数演算では有効に利用されなかったガードビットから単精度浮動小数点数の余りを生成できるため、単精度浮動小数点数演算でありながら倍精度浮動小数点数演算の精度を得ることができる。また、単精度浮動小数点数演算のため、倍精度浮動小数点数演算に比べ、ゲート数を減らし、演算処理も高速にできるようになる。
また、請求項5、10に記載の発明によると、余りを単精度浮動小数点数演算で累算して余りの精度を低下させないため、累算を必要とする演算の精度を向上することができる。
また、請求項11に記載の発明によると、サーボ制御装置のシステムの性能を向上できることから、システムへ与えるクロック周波数を低減することができるため、システムの消費電力を低減することができる。
また、請求項5、10に記載の発明によると、余りを単精度浮動小数点数演算で累算して余りの精度を低下させないため、累算を必要とする演算の精度を向上することができる。
また、請求項11に記載の発明によると、サーボ制御装置のシステムの性能を向上できることから、システムへ与えるクロック周波数を低減することができるため、システムの消費電力を低減することができる。
以下、本発明の実施の形態について図を参照して説明する。
図1は、本発明の浮動小数点数演算回路のブロック図である。図1において、1は浮動小数点の演算を行う浮動小数点演算部であり、浮動小数点数である2つの入力、入力1と入力2をオペコードの内容で浮動小数点数演算を行う。浮動小数点数演算は符号S1、S2と指数E1、E2、仮数M1、M2のフィールドに分けられ、符号は符号演算部2で、指数は指数演算部3で、仮数は仮数演算部4でそれぞれ演算が行われる。
指数演算部3と仮数演算部4の結果は正規化部5で正規化が行われる。正規化部5の結果と符号演算部2の結果は丸め部6に入力される。算術演算で余り出力O2を生成する場合には丸めは実行せずに、浮動小数点数である出力O1を生成する。比較演算や、算術演算でも余りを必要としない場合等余りを生成しない場合には、あらかじめ設定された丸めモードに従って丸め部6で丸めを行う。
仮数演算部4ではLSB(Least Significant Bit)の下位にガードビットb5、b6、ラウンドビットb7、b8と、付加ビット列生成器9により付加ビット列b9、b10が付加される。
付加ビット列生成器9はオペコードを検査して、ラウンドビットb7、b8の下位に必要な精度の余りを生成するために必要なビット数の付加ビット列を生成する。同じく、仮数のMSB(Most Significant Bit)の上位にもけちビットb3、b4とガードビットb1、b2が付加される。IEEE754では正規化された仮数は(1.b1b2‥‥b23)の形をしている。この1はあるものとして省略されて浮動小数点数にエンコードされる。この1をけちビットという。なお、一般的には、演算精度確保のため仮数の下位に追加する3ビットをそれぞれガードビット、ラウンドビット、スティッキービットと呼ぶ。スティッキービットはラウンドビット以降の論理和であるが、ここでは、論理和をとる前の状態のビット列を付加ビット列と呼ぶ。また、MSB側のけちビットの上位に付加されるビットもガードビットと呼ぶ。
このMSBの上位にはガードビットの0とけちビットの1の2ビットが付加される。LSBの下位に付加される付加ビット列b9、b10の個数はオペコードの種類により異なるが、必要な精度が得られる個数のビットが付加される。ガードビットや付加ビット列が付加された仮数は仮数演算器10で演算が行われる。仮数演算器10の演算結果は正規化部5に入力され正規化される。余りを生成しない場合は、MSB側とLSB側にそれぞれ2ビットを付加した27ビットの仮数の生成後、丸め部6で丸め処理の後に単精度浮動小数点数としてO1として出力される。余りを生成する場合には、仮数として利用される23ビットが生成される。仮数の23ビット以降のビットは26ビットの余りビット列b11として生成される。正規化部で生成された余りビット列b11は余り正規化部7の余り仮数生成部12に入力される。
指数演算部3と仮数演算部4の結果は正規化部5で正規化が行われる。正規化部5の結果と符号演算部2の結果は丸め部6に入力される。算術演算で余り出力O2を生成する場合には丸めは実行せずに、浮動小数点数である出力O1を生成する。比較演算や、算術演算でも余りを必要としない場合等余りを生成しない場合には、あらかじめ設定された丸めモードに従って丸め部6で丸めを行う。
仮数演算部4ではLSB(Least Significant Bit)の下位にガードビットb5、b6、ラウンドビットb7、b8と、付加ビット列生成器9により付加ビット列b9、b10が付加される。
付加ビット列生成器9はオペコードを検査して、ラウンドビットb7、b8の下位に必要な精度の余りを生成するために必要なビット数の付加ビット列を生成する。同じく、仮数のMSB(Most Significant Bit)の上位にもけちビットb3、b4とガードビットb1、b2が付加される。IEEE754では正規化された仮数は(1.b1b2‥‥b23)の形をしている。この1はあるものとして省略されて浮動小数点数にエンコードされる。この1をけちビットという。なお、一般的には、演算精度確保のため仮数の下位に追加する3ビットをそれぞれガードビット、ラウンドビット、スティッキービットと呼ぶ。スティッキービットはラウンドビット以降の論理和であるが、ここでは、論理和をとる前の状態のビット列を付加ビット列と呼ぶ。また、MSB側のけちビットの上位に付加されるビットもガードビットと呼ぶ。
このMSBの上位にはガードビットの0とけちビットの1の2ビットが付加される。LSBの下位に付加される付加ビット列b9、b10の個数はオペコードの種類により異なるが、必要な精度が得られる個数のビットが付加される。ガードビットや付加ビット列が付加された仮数は仮数演算器10で演算が行われる。仮数演算器10の演算結果は正規化部5に入力され正規化される。余りを生成しない場合は、MSB側とLSB側にそれぞれ2ビットを付加した27ビットの仮数の生成後、丸め部6で丸め処理の後に単精度浮動小数点数としてO1として出力される。余りを生成する場合には、仮数として利用される23ビットが生成される。仮数の23ビット以降のビットは26ビットの余りビット列b11として生成される。正規化部で生成された余りビット列b11は余り正規化部7の余り仮数生成部12に入力される。
余り正規化部7の余り仮数生成部12では、余りビット列b11に対する仮数を演算する。具体的には、余りビット列の1の場所をMSBから走査して、1が出現するビット数nを検出する。1をMSBとして、nビット目以降に必要な0が付加されたものを余り仮数M4とする。また、1のMSB側のビット数n−1を指数調整値E5とする。正規化部5で生成された指数E3と指数調整値E5が余り正規化部7の余り指数生成部11に入力される。余り指数生成部11では正規化部5で生成された指数E3から、指数調整値E5と浮動小数点数の仮数部のビット数(単精度の場合23ビット)が引かれて、余り指数E4が生成される。余り丸め部8では、符号演算部3で演算された符号と余り正規化部7で生成された余り指数E4と余り仮数M4を用いて余りの丸めが行われて、浮動小数点数の余り出力O2が生成される。余り丸め部8では丸め検出部14で丸めが発生するかどうかを検出し、あらかじめ設定された丸めモードに従って丸めが行われる。IEEE754では丸めモードは、最近値丸め、+∞方向丸め、0方向丸め、−∞方向丸めの4つのモードが定義されている。余り出力O2は余り記憶部13に記憶され、これ以降の演算で利用できる。
実施例1が図8の従来技術と異なる点は、付加ビット列生成器9によりLSB側に付加される付加ビット列のビット長と、仮数演算部4で生成された演算結果の余りビット列b11を利用する余り正規化部7、そして余り丸め部8と余り記憶部13を構成要素として含む点である。さらに、作用として単精度の浮動小数点数から、演算結果と余りの2つの単精度の浮動小数点数を同時に生成する点である。
次に、本発明による加算の演算例を説明する。
図2は本発明の浮動小数点数演算回路の加算の演算例である。
仮数M1、M2のMSB上位にはガードビットb1、b2とけちビットb3、b4が、LSBの下位にはガードビットとラウンドビットと24ビットの付加ビット列b9、b10が付加される。付加されるビット列の内容はMSB側には01(2進表示)、LSB側には00000000000000000000000000(2進表示)である。ビット列が付加された2つの仮数を仮数演算器10で加算する。この加算の結果は51ビットの演算結果が生成され、その演算結果が正規化部5に入力される。正規化部5では、この演算結果を基に正規化された仮数を生成し、小数点の位置を基に指数が調整される。正規化された仮数のLSBの26ビットは余り正規化部7で利用される余りビット列b11となる。加算の場合には指数を等しくして演算をする必要があるので、どちらか一方の仮数が右シフトされる。、余りの仮数精度はけちビットにする1の場所に依存するため、余りビット列を26ビットにする場合、付加ビット列の個数を24ビット必要とする。また、減算の場合も同様に付加ビット列の個数を24ビット必要とする。正規化部5で生成される余りビット列b11は余り正規化部7で正規化される。
しかし、この演算をもし倍精度で行う場合は、倍精度は仮数が53ビットのためガードビットをLSB、MSBとも2ビットつけて演算を実行すると演算結果は57ビット必要である。
このように、本発明による演算は、倍精度で演算するよりゲート数が少なくなる。
図2は本発明の浮動小数点数演算回路の加算の演算例である。
仮数M1、M2のMSB上位にはガードビットb1、b2とけちビットb3、b4が、LSBの下位にはガードビットとラウンドビットと24ビットの付加ビット列b9、b10が付加される。付加されるビット列の内容はMSB側には01(2進表示)、LSB側には00000000000000000000000000(2進表示)である。ビット列が付加された2つの仮数を仮数演算器10で加算する。この加算の結果は51ビットの演算結果が生成され、その演算結果が正規化部5に入力される。正規化部5では、この演算結果を基に正規化された仮数を生成し、小数点の位置を基に指数が調整される。正規化された仮数のLSBの26ビットは余り正規化部7で利用される余りビット列b11となる。加算の場合には指数を等しくして演算をする必要があるので、どちらか一方の仮数が右シフトされる。、余りの仮数精度はけちビットにする1の場所に依存するため、余りビット列を26ビットにする場合、付加ビット列の個数を24ビット必要とする。また、減算の場合も同様に付加ビット列の個数を24ビット必要とする。正規化部5で生成される余りビット列b11は余り正規化部7で正規化される。
しかし、この演算をもし倍精度で行う場合は、倍精度は仮数が53ビットのためガードビットをLSB、MSBとも2ビットつけて演算を実行すると演算結果は57ビット必要である。
このように、本発明による演算は、倍精度で演算するよりゲート数が少なくなる。
次に、本発明による乗算の演算例を示す。
図3は本発明の浮動小数点数演算回路の乗算の演算例である。仮数M1、M2のMSB上位にはガードビットb1、b2とけちビットb3、b4が、LSBの下位には1ビットのガードビットb12、b13が付加される。付加されるビット列の内容はMSB側には01(2進表示)で、LSB側には0(2進表示)である。ビット列が付加された2つの仮数を乗算する。この乗算の結果は52ビットの演算結果が生成され、その演算結果が正規化部5に入力される。この演算結果を基に正規化された仮数を生成し、小数点の位置を基に指数が調整される。正規化された仮数のLSBの27ビットは余り正規化部7で利用される余りビット列b11となる。
Nビット×Nビットの演算結果は2Nビットになり、1≦仮数<2のため、乗算の結果は1≦仮数<4になる。乗算の場合には、余りビット列を27ビットにするには、付加するビットをガードビットの1ビットで済ますことができる。また、この27ビットの余りビット列のLSBの1ビットを使用しなくとも演算精度には影響がないので、加算時と合わせるため余りビット列は26ビットとする。
しかし、この演算をもし倍精度で行う場合は、仮数が53ビットのためガードビットをLSBに2ビットとMSBに1ビットつけて演算を実行すると演算結果は102ビット必要である。
このように、本発明による演算は、倍精度で演算するよりゲート数が少なくなる。
図3は本発明の浮動小数点数演算回路の乗算の演算例である。仮数M1、M2のMSB上位にはガードビットb1、b2とけちビットb3、b4が、LSBの下位には1ビットのガードビットb12、b13が付加される。付加されるビット列の内容はMSB側には01(2進表示)で、LSB側には0(2進表示)である。ビット列が付加された2つの仮数を乗算する。この乗算の結果は52ビットの演算結果が生成され、その演算結果が正規化部5に入力される。この演算結果を基に正規化された仮数を生成し、小数点の位置を基に指数が調整される。正規化された仮数のLSBの27ビットは余り正規化部7で利用される余りビット列b11となる。
Nビット×Nビットの演算結果は2Nビットになり、1≦仮数<2のため、乗算の結果は1≦仮数<4になる。乗算の場合には、余りビット列を27ビットにするには、付加するビットをガードビットの1ビットで済ますことができる。また、この27ビットの余りビット列のLSBの1ビットを使用しなくとも演算精度には影響がないので、加算時と合わせるため余りビット列は26ビットとする。
しかし、この演算をもし倍精度で行う場合は、仮数が53ビットのためガードビットをLSBに2ビットとMSBに1ビットつけて演算を実行すると演算結果は102ビット必要である。
このように、本発明による演算は、倍精度で演算するよりゲート数が少なくなる。
次に、本発明による余りに対する正規化と丸めの演算例を示す。
図4は本発明の浮動小数点数演算回路の加算後の余りに対する正規化と丸めの演算例である。余りビット列b11は余り正規化部7の余り仮数生成部12に入力され正規化が行なわれる。IEEE754の正規化とは(1.b1b2‥‥b23)のフォーマットにすることで小数点の次のビットb1が仮数のMSBになる。余り仮数生成部12では余りビット列b11の1の場所をMSB側から走査して、1が出現するビット数nを検出する。1をMSBとして、nビット目以降に必要な0が付加された26ビットの余り仮数M4が生成される。1のMSB側のビット数n−1は指数調整値E5として、余り指数生成部11に入力される。余り指数生成部11には指数E3と指数調整値E5が入力される。余り指数生成部11は、指数E3から、指数調整値E5と単精度浮動小数点数の仮数部のビット数である23との加算結果を引くことで余り指数E4を生成する。
余り丸め部8は符号と余り指数E4、余り仮数M4を入力として単精度浮動小数点数である余り出力O2を生成する。余り仮数M4のMSBから25ビット目と26ビット目の2ビットが丸め検出部14に入力される。丸め検出部14ではこの2ビットと丸めモードを利用して丸めが発生するか検出し、発生する場合は1を、しない場合は0を生成する。MSBから24ビットの余り仮数は、MSBの上位に1ビットのガードビットb14が付加され、丸め検出部14の結果が足される。ガードビットb15に1が立った場合はガードビットb15以降の23ビットが仮数に、0の時にはガードビットb15の次のビットは無視し、その次のビットから23ビットを仮数とする。ガードビットb15は余り指数E4と加算され指数となる。符号をMSBに、その次に指数の8ビット、その次に仮数の23ビットをエンコードすることで32ビットの単精度浮動少数点数である余り出力O2が生成される。
次に、本発明の浮動小数点演算回路により浮動小数点演算を行うときの浮動小数点演算方法の余りの処理について説明する。
図5は本発明の浮動小数点演算方法の余りに関する処理手順を示すフローチャートである。ステップS1で入力された浮動小数点数のラウンドビットの下位に、必要な精度の余りを生成するために必要なビット数の付加ビット列を生成する。ステップS2で正規化部で正規化の際に生成された余りの23ビット以降のビットである余りビット列から余り仮数と指数調整値を生成する。ステップS3で正規化部で正規化の際に生成された指数と指数調整値から余りビット列の余り指数を生成する。ステップS4で余り指数と余り仮数を用いて余りの丸めを行い余り出力を生成する。ステップS5とステップS6は後述する余りを累積させる場合の処理であるので、余りを累積させない場合はステップS7に進み余り出力を記憶する。
図4は本発明の浮動小数点数演算回路の加算後の余りに対する正規化と丸めの演算例である。余りビット列b11は余り正規化部7の余り仮数生成部12に入力され正規化が行なわれる。IEEE754の正規化とは(1.b1b2‥‥b23)のフォーマットにすることで小数点の次のビットb1が仮数のMSBになる。余り仮数生成部12では余りビット列b11の1の場所をMSB側から走査して、1が出現するビット数nを検出する。1をMSBとして、nビット目以降に必要な0が付加された26ビットの余り仮数M4が生成される。1のMSB側のビット数n−1は指数調整値E5として、余り指数生成部11に入力される。余り指数生成部11には指数E3と指数調整値E5が入力される。余り指数生成部11は、指数E3から、指数調整値E5と単精度浮動小数点数の仮数部のビット数である23との加算結果を引くことで余り指数E4を生成する。
余り丸め部8は符号と余り指数E4、余り仮数M4を入力として単精度浮動小数点数である余り出力O2を生成する。余り仮数M4のMSBから25ビット目と26ビット目の2ビットが丸め検出部14に入力される。丸め検出部14ではこの2ビットと丸めモードを利用して丸めが発生するか検出し、発生する場合は1を、しない場合は0を生成する。MSBから24ビットの余り仮数は、MSBの上位に1ビットのガードビットb14が付加され、丸め検出部14の結果が足される。ガードビットb15に1が立った場合はガードビットb15以降の23ビットが仮数に、0の時にはガードビットb15の次のビットは無視し、その次のビットから23ビットを仮数とする。ガードビットb15は余り指数E4と加算され指数となる。符号をMSBに、その次に指数の8ビット、その次に仮数の23ビットをエンコードすることで32ビットの単精度浮動少数点数である余り出力O2が生成される。
次に、本発明の浮動小数点演算回路により浮動小数点演算を行うときの浮動小数点演算方法の余りの処理について説明する。
図5は本発明の浮動小数点演算方法の余りに関する処理手順を示すフローチャートである。ステップS1で入力された浮動小数点数のラウンドビットの下位に、必要な精度の余りを生成するために必要なビット数の付加ビット列を生成する。ステップS2で正規化部で正規化の際に生成された余りの23ビット以降のビットである余りビット列から余り仮数と指数調整値を生成する。ステップS3で正規化部で正規化の際に生成された指数と指数調整値から余りビット列の余り指数を生成する。ステップS4で余り指数と余り仮数を用いて余りの丸めを行い余り出力を生成する。ステップS5とステップS6は後述する余りを累積させる場合の処理であるので、余りを累積させない場合はステップS7に進み余り出力を記憶する。
次に、余り出力を累積させる場合について説明する。
図6は、本発明の実施例2の浮動小数点数演算回路のブロック図である。実施例1と異なるのは、浮動小数点数演算部1と余り記憶部13の間に浮動小数点数加算器15が追加されている点である。浮動小数点数演算部1で生成された余り出力O2と余り記憶部13の出力は浮動小数点数加算器15に入力され、その加算結果が余り記憶部13に記憶される。これにより、浮動小数点数加算器15はアキュムレータとして動作し、精度を落とすことなく余り出力の累算を実行する。
なお、この場合の浮動小数点演算方法は図5のステップS5の判断でYES側となり、ステップS6で今回出力した前記余り出力に前回記憶した余り出力を加算して新しい余り出力とする処理を行う。
図6は、本発明の実施例2の浮動小数点数演算回路のブロック図である。実施例1と異なるのは、浮動小数点数演算部1と余り記憶部13の間に浮動小数点数加算器15が追加されている点である。浮動小数点数演算部1で生成された余り出力O2と余り記憶部13の出力は浮動小数点数加算器15に入力され、その加算結果が余り記憶部13に記憶される。これにより、浮動小数点数加算器15はアキュムレータとして動作し、精度を落とすことなく余り出力の累算を実行する。
なお、この場合の浮動小数点演算方法は図5のステップS5の判断でYES側となり、ステップS6で今回出力した前記余り出力に前回記憶した余り出力を加算して新しい余り出力とする処理を行う。
次に、本発明の浮動小数点演算回路をサーボ制御装置に組み込む場合について説明する。
図7は、本発明の浮動小数点数演算回路を搭載したサーボ制御装置のブロック図である。サーボ制御装置20は制御ソフトウェアを実行するためにCPU21を備える。CPU21内の演算処理部の一つとして浮動小数点数演算部1を利用した浮動小数点演算回路を備え、浮動小数点数演算を行う。余り処理を単精度浮動小数点数で行えるため、低コストで高速に精度の高い制御を行うことが出来る。なお、CPU21に代えてDSP(Digital Signal Processor)で実現することも可能である。
図7は、本発明の浮動小数点数演算回路を搭載したサーボ制御装置のブロック図である。サーボ制御装置20は制御ソフトウェアを実行するためにCPU21を備える。CPU21内の演算処理部の一つとして浮動小数点数演算部1を利用した浮動小数点演算回路を備え、浮動小数点数演算を行う。余り処理を単精度浮動小数点数で行えるため、低コストで高速に精度の高い制御を行うことが出来る。なお、CPU21に代えてDSP(Digital Signal Processor)で実現することも可能である。
1 浮動小数点数演算部
2 符号演算部
3 指数演算部
4 仮数演算部
5 正規化部
6 丸め部
7 余り正規化部
8 余り丸め部
9 付加ビット列生成器
10 仮数演算部
11 余り指数生成部
12 余り仮数生成部
13 余り記憶部
14 丸め検出部
15 浮動小数点加算器
20 サーボ制御装置
21 CPU
100 シフト量生成回路
101、103 桁合せシフタ
102、104 倍精度用kビット生成回路
105 加算器
106 単精度用kビット生成回路
2 符号演算部
3 指数演算部
4 仮数演算部
5 正規化部
6 丸め部
7 余り正規化部
8 余り丸め部
9 付加ビット列生成器
10 仮数演算部
11 余り指数生成部
12 余り仮数生成部
13 余り記憶部
14 丸め検出部
15 浮動小数点加算器
20 サーボ制御装置
21 CPU
100 シフト量生成回路
101、103 桁合せシフタ
102、104 倍精度用kビット生成回路
105 加算器
106 単精度用kビット生成回路
Claims (11)
- IEEE754に準拠する2つの浮動小数点数の演算を行うために、
前記各入力の符号を演算する符号演算部と、
指数を演算する指数演算部と、
仮数演算器により仮数を演算する仮数演算部と、
前記指数演算部と前記仮数演算部で演算された結果を正規化する正規化部と、
前記符号演算部と前記正規化部で演算された結果を丸める丸め部を備えた浮動小数点演算部を有する浮動小数点演算回路において、
前記仮数演算部に、入力された浮動小数点数のラウンドビットの下位に、必要な精度の余りを生成するために必要なビット数の付加ビット列を生成する付加ビット生成器を備え、
前記正規化部で正規化の際に生成された余りの23ビット以降のビットである余りビット列から余り仮数と指数調整値を生成する余り仮数生成部と、
前記正規化部で正規化の際に生成された指数と前記指数調整値から余りビット列の余り指数を生成する余り指数生成部とを有する余り正規化部と、
該余り正規化部で生成された前記余り指数と前記余り仮数を用いて余りの丸めを行い余り出力を生成する余り丸め部とを前記浮動小数点演算部に備えると共に、
前記余り出力を記憶する余り記憶部を備えることを特徴とする浮動小数点数演算回路。 - 前記余り仮数は前記余りビット列の1の場所をMSBから走査して最初に1が出現するまでのビット数nを検出し、1をMSBとしてnビット目以降に必要な0が追加されたものとすることを特徴とする請求項1記載の浮動小数点演算回路。
- 前記指数調整値は1のMSB側のビット数n−1とすることを特徴とする請求項2記載の浮動小数点演算回路。
- 前記余り指数は前記指数演算部で演算された指数から、前記指数調整値と単精度浮動小数点数の仮数部のビット数である23との加算結果を引いたものとすることを特徴とする請求項3記載の浮動小数点演算回路。
- 前記余り記憶部の前段に置かれ、余り出力と余り記憶部の出力の2つを入力とし、出力を余り記憶部へ出力する浮動小数点数加算器をさらに備えることを特徴とする請求項1乃至4いずれかに記載の浮動小数点数演算回路。
- IEEE754に準拠する2つの浮動小数点数の演算を行うために、
前記各入力の符号を演算する符号演算部と、
指数を演算する指数演算部と、
仮数演算器により仮数を演算する仮数演算部と、
前記指数演算部と前記仮数演算部で演算された結果を正規化する正規化部と、
前記符号演算部と前記正規化部で演算された結果を丸める丸め部を備えた浮動小数点演算部を有する浮動小数点演算回路の浮動小数点演算方法において、
入力された浮動小数点数のラウンドビットの下位に、必要な精度の余りを生成するために必要なビット数の付加ビット列を生成するステップと、
前記正規化部で正規化の際に生成された余りの23ビット以降のビットである余りビット列から余り仮数と指数調整値を生成するステップと、
前記正規化部で正規化の際に生成された指数と前記指数調整値から余りビット列の余り指数を生成するステップと、
前記余り指数と前記余り仮数を用いて余りの丸めを行い余り出力を生成するステップと、
前記余り出力を記憶するステップを備えることを特徴とする浮動小数点数演算方法。 - 前記余り仮数は前記余りビット列の1の場所をMSBから走査して最初に1が出現するまでのビット数nを検出し、1をMSBとしてnビット目以降に必要な0が追加されたものとすることを特徴とする請求項6記載の浮動小数点演算方法。
- 前記指数調整値は1のMSB側のビット数n−1とすることを特徴とする請求項7記載の浮動小数点演算方法。
- 前記余り指数は前記指数演算部で演算された指数から、前記指数調整値と単精度浮動小数点数の仮数部のビット数である23との加算結果を引いたものとすることを特徴とする請求項8記載の浮動小数点演算方法。
- 前記余り指数と前記余り仮数を用いて余りの丸めを行い余り出力を生成するステップと、前記余り出力を記憶するステップの間に、
今回出力した前記余り出力に前回記憶した余り出力を加算して新しい余り出力とするステップを追加することを特徴とする請求項6乃至9いずれかに記載の浮動小数点演算方法。 - 請求項1乃至5いずれかに記載の浮動小数点数演算回路を、サーボ制御装置のCPUもしくはDSPの演算処理部として利用することを特徴とするサーボ制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008271858A JP2010102431A (ja) | 2008-10-22 | 2008-10-22 | 浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008271858A JP2010102431A (ja) | 2008-10-22 | 2008-10-22 | 浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010102431A true JP2010102431A (ja) | 2010-05-06 |
Family
ID=42293040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008271858A Pending JP2010102431A (ja) | 2008-10-22 | 2008-10-22 | 浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010102431A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015506022A (ja) * | 2011-12-07 | 2015-02-26 | エイアールエム リミテッド | 浮動小数点値を整数浮動小数点値に丸めるための装置および方法 |
US9077367B2 (en) | 2011-03-24 | 2015-07-07 | Semiconductor Components Industries, Llc | Bit length converting circuit for floating-point numbers, and vibration correction control circuit using the bit length converting circuit |
CN109791513A (zh) * | 2016-09-29 | 2019-05-21 | 英特尔公司 | 用于检测数值累加误差的指令和逻辑 |
-
2008
- 2008-10-22 JP JP2008271858A patent/JP2010102431A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9077367B2 (en) | 2011-03-24 | 2015-07-07 | Semiconductor Components Industries, Llc | Bit length converting circuit for floating-point numbers, and vibration correction control circuit using the bit length converting circuit |
JP2015506022A (ja) * | 2011-12-07 | 2015-02-26 | エイアールエム リミテッド | 浮動小数点値を整数浮動小数点値に丸めるための装置および方法 |
CN109791513A (zh) * | 2016-09-29 | 2019-05-21 | 英特尔公司 | 用于检测数值累加误差的指令和逻辑 |
CN109791513B (zh) * | 2016-09-29 | 2023-04-18 | 英特尔公司 | 用于检测数值累加误差的指令和逻辑 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6360450B2 (ja) | 浮動小数点オペランドを乗算するためのデータ処理装置及び方法 | |
JP4500358B2 (ja) | 演算処理装置および演算処理方法 | |
US7315163B2 (en) | Arithmetic unit | |
US7720899B2 (en) | Arithmetic operation unit, information processing apparatus and arithmetic operation method | |
JP6415236B2 (ja) | 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法 | |
JP3845009B2 (ja) | 積和演算装置、及び積和演算方法 | |
KR100203468B1 (ko) | 부동소수점수를 위한 산술연산장치 | |
JP2008152360A (ja) | 3項入力の浮動小数点加減算器 | |
KR19980041731A (ko) | 조정 및 정규화 클래스를 구비한 부동 소수점 승산 및 누산장치 | |
JP2002149397A (ja) | 固定小数点データ生成方法及び固定小数点データ生成回路 | |
US20070038693A1 (en) | Method and Processor for Performing a Floating-Point Instruction Within a Processor | |
JP2010102431A (ja) | 浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置 | |
JP2010238011A (ja) | ベクトル乗算処理装置および方法ならびにプログラム | |
JP2001222410A (ja) | 除算器 | |
JP4279626B2 (ja) | 剰余系演算システム、スケーリング演算器、スケーリング演算方法、及びそのプログラムと記録媒体 | |
JP2008257407A (ja) | 対数演算器及び対数演算方法 | |
JP2558669B2 (ja) | 浮動小数点演算装置 | |
JP2006318382A (ja) | 演算装置および型変換装置 | |
JP2003216419A (ja) | 計算装置及び計算方法 | |
US10353671B2 (en) | Circuitry and method for performing division | |
JP4163967B2 (ja) | 浮動小数点演算装置 | |
JP2003029960A (ja) | 浮動小数点加算器のショートパスにおける丸めステップの排除 | |
JP3257278B2 (ja) | 冗長なシフト数予測とシフト誤り補正を用いた正規化装置 | |
JP3517162B2 (ja) | 除算・開平演算装置 | |
JP2723707B2 (ja) | 正規化回路 |