(57)【要約】【課題】浮動小数点型データの絶対値演算を、従来の手法に比べて高速に行うことができるようにする。【解決手段】制御手段１５は、絶対値を求めたい浮動小数点型データを符号なし整数型データに一時的に型変換し、メモリ１１からレジスタ１２にロードする。次に、整数演算器１３により、その整数型データにおける、浮動小数点型データの符号ビットに対応する部分を正の数にするための整数演算を行う。整数演算器１３は、その演算したデータをレジスタ１４へストアする。最後に、制御手段１５は、レジスタ１４の整数型データを型変換して浮動小数点型データに戻し、その浮動小数点型データをメモリ１１へストアする。【選択図】      図１
2005031847.tif 000002
【特許請求の範囲】
【請求項１】
符号ビットを含む浮動小数点型データの絶対値演算をコンピュータで行う整数演算の方法であって、
第１の変換手段が、浮動小数点型データを符号なし整数型データに型変換するステップと、
整数演算手段が、前記型変換された整数型データにおける、前記浮動小数点型データの符号ビットに対応する部分を、正の数を示すビット値に変更し、その他の部分の値は変更しないような整数演算を施すステップと、
第２の変換手段が、前記整数演算後の整数型データを浮動小数点型データに型変換するステップと
を含むことを特徴とする整数演算の方法。
【請求項２】
符号ビットを含む浮動小数点型データの絶対値演算をコンピュータに実行させるための整数演算プログラムであって、
第１の変換手段が、浮動小数点型データを符号なし整数型データに型変換するステップと、
整数演算手段が、前記型変換された整数型データにおける、前記浮動小数点型データの符号ビットに対応する部分を、正の数を示すビット値に変更し、その他の部分の値は変更しないような整数演算を施すステップと、
第２の変換手段が、前記整数演算後の整数型データを浮動小数点型データに型変換するステップと
を含む各ステップをコンピュータに実行させるためのものである
ことを特徴とする整数演算プログラム。
【請求項３】
符号ビットを含む浮動小数点型データの絶対値演算を行う整数演算装置であって、
浮動小数点型データを符号なし整数型データに型変換する第１の変換手段と、
前記型変換された整数型データにおける、前記浮動小数点型データの符号ビットに対応する部分を、正の数を示すビット値に変更し、その他の部分の値は変更しないような整数演算を施す整数演算手段と、
前記整数演算後の整数型データを浮動小数点型データに型変換する第２の変換手段と
を備えたことを特徴とする整数演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、整数演算の方法および整数演算プログラム、ならびに整数演算装置に関し、より詳しくは整数演算装置を用いて浮動小数点型データの絶対値計算を行う技術に関する。
【０００２】
【従来の技術】
コンピュータで扱う数の表現法としては、整数型や実数型などがある。整数型データでは、ビット列を固定小数点表現と解釈して、整数値を表す。実数型データ（浮動小数点型データ）では、ビット列を浮動小数点表現と解釈して、実数値を表す。浮動小数点型データの表現形式としては、例えばＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｆｏｒ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｉｎｇ）７５４規格によるものがある。
【０００３】
図７（Ａ），（Ｂ）はそれぞれ、ＩＥＥＥ７５４規格による単精度および倍精度の浮動小数点型データの表現形式を表している。この表現形式では、下位ビット側（右側）から順に、仮数部Ｆ、指数部Ｅ、および符号ビットＳからなるビット列で浮動小数点型データが構成される。数値表現形式で表すと、以下のとおりとなる。Ｂは、バイアス成分である。
（−１）Ｓ（２Ｅ−Ｂ）（１．Ｆ）
【０００４】
ここでは特に、単精度の浮動小数点型データ（図７（Ａ））について説明する。単精度の場合、３１ビット目は符号を表すビットで仮数部が正の場合は０、負の場合は１となる。３０〜２３ビット目の８ビットは指数部を表している。指数部のビット構成は「指数値＋バイアス」となる。ＩＥＥＥ７５４規格では単精度のバイアスとして１２７を使用している。そのため、例えば指数値が０のときは“０＋１２７”であり、指数部は１２７のビット構成（０ｘ７ｆ）となる（“０ｘ”は、“７ｆ”が１６進数であることを示す）。なお、指数部が０と２５５の場合は特別な意味があるが、ここでは説明を省略する。２２〜０ビット目の２３ビットは仮数部を表している。
【０００５】
図８は、浮動小数点型データの絶対値演算を行うための従来の回路構成を示している。浮動小数点型データの絶対値を計算する場合、従来の手法では浮動小数点演算器１０３を使用した上で正の数であるか負の数であるかの判定を行う制御手段１０５を必要とする。従来の手法では、０より小さい値（負の数）であるか否かを判定するために１回の浮動小数点演算を行い、さらに０より小さい値であった場合には、正の数にするために再度の浮動小数点演算を行う必要がある。
【０００６】
図９を参照して、この従来の絶対値演算の手法についてさらに詳しく説明する。まず、絶対値を求めたい浮動小数点型データをメモリ１０１からレジスタ１０２にロードする（ステップＳ１０１）。次に、浮動小数点演算器１０３による浮動小数点演算を行い、その演算結果に基づいてデータが０以上であるか否かを制御手段１０５が判断する（ステップＳ１０２）。
【０００７】
０以上（正の数）である場合（ステップＳ１０２：Ｙ）には、これ以上の浮動小数点演算を行う必要はなく、データをそのままレジスタ１０４からメモリ１０１へストアする（ステップＳ１０３，ステップＳ１０６）。０よりも小さい場合（ステップＳ１０２：Ｎ）には、さらに浮動小数点演算器１０３による浮動小数点演算を行って符号ビットを０にし（ステップＳ１０４）、その演算したデータをレジスタ１０４へストアする（ステップＳ１０５）。さらにそのデータをレジスタ１０４からメモリ１０１へストアする（ステップＳ１０６）。
【０００８】
図９に示した絶対値演算（単精度）を実現するためのＣ言語による従来のプログラム例を以下に示す。
【数１】
2005031847.tif 000003
【０００９】
絶対値演算を目的としたものではないが、浮動小数点演算器を用いた浮動小数点演算に関する技術の従来例としては、例えば以下の文献記載のものがある。
【００１０】
【特許文献１】
特許第２６８９４１４号公報
【特許文献２】
特許第２５５８６６９号公報
【特許文献３】
特公平０７−４０２２１号公報
【００１１】
【発明が解決しようとする課題】
以上説明したように、浮動小数点型データの絶対値演算を行う場合、従来の手法では、浮動小数点演算器１０３を用いて最低でも１回の浮動小数点演算を行わなければならない。しかしながら、すでに良く知られているように、浮動小数点演算は演算処理が複雑であり、実行時間が長くなってしまうという問題がある。
【００１２】
本発明はかかる問題点に鑑みてなされたもので、その目的は、浮動小数点型データの絶対値演算を、従来の手法に比べて高速に行うことができるようにした整数演算の方法および整数演算プログラム、ならびに整数演算装置を提供することにある。
【００１３】
【課題を解決するための手段】
本発明による整数演算の方法は、符号ビットを含む浮動小数点型データの絶対値演算をコンピュータで行う整数演算の方法であって、第１の変換手段が、浮動小数点型データを符号なし整数型データに型変換するステップと、整数演算手段が、型変換された整数型データにおける、浮動小数点型データの符号ビットに対応する部分を、正の数を示すビット値に変更し、その他の部分の値は変更しないような整数演算を施すステップと、第２の変換手段が、整数演算後の整数型データを浮動小数点型データに型変換するステップとを含むものである。
【００１４】
本発明による整数演算プログラムは、符号ビットを含む浮動小数点型データの絶対値演算をコンピュータに実行させるための整数演算プログラムであって、第１の変換手段が、浮動小数点型データを符号なし整数型データに型変換するステップと、整数演算手段が、型変換された整数型データにおける、浮動小数点型データの符号ビットに対応する部分を、正の数を示すビット値に変更し、その他の部分の値は変更しないような整数演算を施すステップと、第２の変換手段が、整数演算後の整数型データを浮動小数点型データに型変換するステップとを含む各ステップを、コンピュータに実行させるためのものである。
【００１５】
本発明による整数演算装置は、符号ビットを含む浮動小数点型データの絶対値演算を行う整数演算装置であって、浮動小数点型データを符号なし整数型データに型変換する第１の変換手段と、型変換された整数型データにおける、浮動小数点型データの符号ビットに対応する部分を、正の数を示すビット値に変更し、その他の部分の値は変更しないような整数演算を施す整数演算手段と、整数演算後の整数型データを浮動小数点型データに型変換する第２の変換手段とを備えたものである。
【００１６】
本発明による整数演算の方法および整数演算プログラム、ならびに整数演算装置では、演算対象となる浮動小数点型データが符号なし整数型データに型変換され、その整数型データにおける、浮動小数点型データの符号ビットに対応する部分が正の数を示すビット値に変更され、その他の部分の値は変更されないような整数演算が施される。そして、その整数演算後の整数型データが再度浮動小数点型データに型変換される。浮動小数点演算器を用いることなく、浮動小数点演算器よりも高速演算が可能な整数演算手段を用いることによって、高速に絶対値の計算が行われる。さらに従来の手法では、正の数であるか負の数であるかの判定を行っていたが、本発明では、そのような判定を行う必要がなく、演算サイクルの削減が可能となる。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１８】
図１は、本発明の一実施の形態に係る整数演算の方法を実現するための具体的な装置構成例を示している。この整数演算装置は、コンピュータにより構成されるものであり、データを保持するメモリ１１およびレジスタ１２，１４と、整数演算を行う整数演算器１３と、これら各部の制御を行う制御手段１５とを備えている。制御手段１５は、本発明の一実施の形態に係る整数演算プログラムに従って、各部の制御を行うものである。
【００１９】
この整数演算装置は、浮動小数点型データを一時的に符号なし整数型データに型変換する第１の変換手段としての機能と、型変換された整数型データに対して所定の整数演算を施す整数演算手段としての機能と、整数演算後の整数型データを再び浮動小数点型データに型変換する第２の変換手段としての機能とを有している。整数演算手段による整数演算としては、型変換された整数型データにおける、浮動小数点型データの符号ビットに対応する部分を、正の数を示すビット値（ＩＥＥＥ７５４規格では“０”）に変更するような演算を施すようになっている。この整数演算の具体例は後に詳述する。
【００２０】
ここで、本実施の形態において、主に制御手段１５が、本発明における「第１の変換手段」および「第２の変換手段」の一具体例に対応する。また、整数演算器１３が、本発明における「整数演算手段」の一具体例に対応する。
【００２１】
次に、以上のように構成された整数演算装置の動作を、本実施の形態に係る整数演算の方法と共に説明する。
【００２２】
ここでは、ＩＥＥＥ７５４規格による単精度の浮動小数点型データ（図７（Ａ））における絶対値の求め方について説明する。浮動小数点型データをビット単位で演算処理することは原則としてできない。浮動小数点型データでは、仮数部、指数部、および符号ビットという異なった要素で１つのデータが構成されているため、一義的な演算を行うことができないからである。しかし、浮動小数点型データを一旦符号なし整数型データに一時的に型変換することで、一義的なデータとして取り扱うことが可能となる。
【００２３】
図４は、数値“−３．１４１５９”を表す浮動小数点型データを符号なし整数型データに型変換した場合のデータ表現の例を示している。ここで、「型変換する」というのは、変数の取り扱うオペランドを変換するということである。従って、浮動小数点型データを整数型データに型変換するということは、ビット列自体は変えずに、そのビット列に対する解釈の仕方を浮動小数点型から整数型に変えるという意味である。符号なし整数型データに変換した場合には、形式上、仮数部、指数部、および符号ビットというビット列の区分はなくなる。
【００２４】
ところで、ＩＥＥＥ７５４の浮動小数点規格では、図５に示すように仮数部、指数部、および符号ビットのすべてが０である場合、“０．０”を意味する。これに対して、図６に示すように符号ビットが１で仮数部および指数部がすべて０である場合は、“−０．０”を意味している。これによって符号ビットを０にする処理だけで絶対値を求めることが可能である。
【００２５】
図２は、この整数演算装置の動作およびそれによって実現される整数演算の方法を示している。まず、制御手段１５の第１の変換手段としての機能により、絶対値を求めたい浮動小数点型データを符号なし整数型データに一時的に型変換し、メモリ１１からレジスタ１２にロードする（ステップＳ１１）。次に、整数演算器１３の整数演算手段としての機能により、その整数型データにおける、浮動小数点型データの符号ビットに対応する部分を０にするための整数演算を行う（ステップＳ１２）。整数演算器１３は、その演算したデータをレジスタ１４へストアする（ステップＳ１３）。次に、制御手段１５の第２の変換手段としての機能により、レジスタ１４の整数型データを型変換して浮動小数点型データに戻し、その浮動小数点型データをメモリ１１へストアする（ステップＳ１４）。
【００２６】
図３は、この整数演算の具体的な実行例を示している。図示したように、メモリ１１のアドレス“０ｘ３Ａ７１Ｅ０１０”に、“−３．１４１５９”という単精度の浮動小数点型データが格納されているものとする。制御手段１５は、演算プログラムによる型宣言から、アドレス“０ｘ３Ａ７１Ｅ０１０”が指し示す変数の型が浮動小数点型であることを認識可能である。
【００２７】
以下、図３の実行例を図２の流れ図における各ステップに対応付けて説明する。制御手段１５は、アドレス“０ｘ３Ａ７１Ｅ０１０”が指し示す変数の型を符号なし整数型に型変換することで、“−３．１４１５９”という浮動小数点型データを一時的に符号なし整数型データとしてメモリ１１からレジスタ１２にロードする（ステップＳ１１）。“−３．１４１５９”は、図４に示したようなビット列で表現できる。このビット列は、１６進数で“Ｃ０４９０ＦＤ０”と表すことができる。１６進数を示す“０ｘ”を付加すると“０ｘＣ０４９０ＦＤ０”と表せる。
【００２８】
次に、整数演算器１３によって、整数型の値“Ｃ０４９０ＦＤ０”における符号ビットに対応する部分を、浮動小数点型で表したときに正の数になるように変更し、それをレジスタ１４にストアする（ステップＳ１２，Ｓ１３）。具体的には、符号ビットに対応する部分を０にするために、“Ｃ０４９０ＦＤ０”の最上位ビットのみを０にすれば良いので、“Ｃ０４９０ＦＤ０”と“７ＦＦＦＦＦＦＦ”とのビットごとのＡＮＤ演算を行う。このＡＮＤ演算を行うことで、最上位ビットのみが０となり、それ以外のビット値は元のままとなる。ＡＮＤ演算後の値は、１６進数で“４０４９０ＦＤ０”となり、これがレジスタ１４にストアされる。
【００２９】
なお、図３のステップＳ２１のように、メモリ１１上のデータを浮動小数点型のままレジスタ１２にロードした場合には、浮動小数点型のデータ“−３．１４１５９”と整数型のデータ“７ＦＦＦＦＦＦＦ”とのＡＮＤ演算を行うことになるが、このような異なる型同士の演算はできないので、上述のように、“−３．１４１５９”を整数型のデータ“Ｃ０４９０ＦＤ０”に変換する必要がある。
【００３０】
最後に、制御手段１５は、レジスタ１４に格納された整数型データ“４０４９０ＦＤ０”を浮動小数点型に再変換し、その浮動小数点型データをメモリ１１へストアする（ステップＳ１４）。浮動小数点型としてメモリ１１へストアするため、この時点では１６進数表現はできない。メモリ１１へストアされた値は、符号ビットのみが変更されているため“３．１４１５９”と正の値として表現される。
【００３１】
以上の整数演算を実現するＣ言語による計算プログラムの具体例を以下に示す。データは、単精度とする。
【数２】
2005031847.tif 000004
【００３２】
また、下記のような計算プログラムでも同様の結果を得ることができる。
【数３】
2005031847.tif 000005
【００３３】
以上説明したように、本実施の形態によれば、浮動小数点型データを符号なし整数型データに型変換し、その整数型データにおける、浮動小数点型データの符号ビットに対応する部分を正の数を示すビット値に変更するような整数演算を施し、最後に再び浮動小数点型データに変換するようにしたので、浮動小数点演算器を用いることなく、浮動小数点演算器よりも高速演算が可能な整数演算器１３を用いることができ、高速に浮動小数点型データの絶対値の計算を行うことができる。従来の浮動小数点演算器を用いた手法では、正の数であるか負の数であるかの判定を行う必要があったが、本実施の形態では、そのような判定を行う必要がなく、演算サイクルの削減が可能となる。これにより、浮動小数点型データの絶対値演算を、従来の手法に比べて高速に行うことができる。
【００３４】
【発明の効果】
以上説明したように、本発明の整数演算の方法および整数演算プログラム、ならびに整数演算装置によれば、浮動小数点演算器を用いることなく、浮動小数点演算器よりも高速演算が可能な整数演算手段を用いることによって絶対値の計算を行うようにしたので、浮動小数点型データの絶対値演算を、従来の手法に比べて高速に行うことができる。従来の手法では、正の数であるか負の数であるかの判定を行う必要があったが、本発明では、そのような判定を行う必要がなく、その分、演算サイクルの削減が可能となり高速な演算を行うことができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態に係る整数演算装置の構成例を示すブロック図である。
【図２】本発明の一実施の形態に係る整数演算装置による整数演算の方法を示す流れ図である。
【図３】本発明の一実施の形態に係る整数演算の方法による具体的な演算例を示す説明図である。
【図４】浮動小数点型変数を符号なし整数型変数に型変換した場合のデータ表現の例を示す説明図である。
【図５】仮数部、指数部、および符号ビットのすべてが０である場合のデータ表現を示す説明図である。
【図６】符号ビットのみが１である場合のデータ表現を示す説明図である。
【図７】浮動小数点の表現方法の一例を示す説明図である。
【図８】浮動小数点型データの絶対値演算を行うための従来の回路構成を示すブロック図である。
【図９】浮動小数点型データの絶対値演算の従来手法を示す流れ図である。
【符号の説明】
１１…メモリ、１２，１４…レジスタ、１３…整数演算器、１５…制御手段。
【図１】
2005031847.tif 000006
【図２】
2005031847.tif 000007
【図３】
2005031847.tif 000008
【図４】
2005031847.tif 000009
【図５】
2005031847.tif 000010
【図６】
2005031847.tif 000011
【図７】
2005031847.tif 000012
【図８】
2005031847.tif 000013
【図９】
2005031847.tif 000014