JP4163967B2 - 浮動小数点演算装置 - Google Patents

浮動小数点演算装置 Download PDF

Info

Publication number
JP4163967B2
JP4163967B2 JP2003011373A JP2003011373A JP4163967B2 JP 4163967 B2 JP4163967 B2 JP 4163967B2 JP 2003011373 A JP2003011373 A JP 2003011373A JP 2003011373 A JP2003011373 A JP 2003011373A JP 4163967 B2 JP4163967 B2 JP 4163967B2
Authority
JP
Japan
Prior art keywords
bit
value
point
floating
register
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.)
Expired - Fee Related
Application number
JP2003011373A
Other languages
English (en)
Other versions
JP2004078886A (ja
Inventor
修二 宮阪
智一 石川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2003011373A priority Critical patent/JP4163967B2/ja
Publication of JP2004078886A publication Critical patent/JP2004078886A/ja
Application granted granted Critical
Publication of JP4163967B2 publication Critical patent/JP4163967B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、固定小数点のプロセッサを用いて、浮動小数点数値を扱いやすくするような浮動小数点数値の格納方法と、前記浮動小数点数値の演算装置に関するものである。
【0002】
【従来の技術】
従来の浮動小数点数値(浮動小数点フォーマットの数値)の格納フォーマットの代表的な例として、IEEE754準拠の32ビット浮動小数点フォーマットがある。C言語におけるfloat型で宣言される変数は、このフォーマットに準拠している(たとえば、非特許文献1参照)。
【0003】
図12は、IEEE754準拠の32ビット浮動小数点フォーマットのビットフィールドを表す図である。本図において、最上位の1ビットは、符号ビット格納フィールドであり、0なら正の数、1なら負の数を示す。
【0004】
符号ビットに続く8ビットは、指数部格納フィールド71と呼ばれる領域である。指数部に続く23ビットは、仮数部格納フィールド72と呼ばれる領域である。ここで、指数部を8ビットの整数とした場合の値をe、仮数部23ビットを該23ビットの最上位ビットの上に小数点があるような固定小数点数値(固定小数点フォーマットの数値)とした場合の値をk、とすると、この浮動小数点フォーマットで表される実数値xは、
x=(2^(e−127))*(1・k)
となる。
【0005】
ここで、(1・k)の表記は、23ビットデータkの最上位ビットに小数点があり、小数点の上の1ビットは、常に1である事を示している。例えば、23ビットデータkが
k=10000000000000000000000 である場合、
(1・k)= B'1.10000000000000000000000 = 1 + 0.5 = 1.5
を表している。もう1つの例を示すと、
k=11100000000000000000000 である場合、
(1・k)= B'1.11100000000000000000000 = 1 + 0.5 + 0.25 + 0.125= 1.875
を表していることになる。つまり、仮数部は、1以上で2未満の値を表現するフィールドである。
【0006】
以上のことから、IEEE754準拠の32ビット浮動小数点のビットパターンが、例えば、
0 10000000 11100000000000000000000
の場合、このビットパターンが示す実数値xは、
x=(2^(128−127))*1.875=3.75
となる。また、
0 01111110 10000000000000000000000
の場合、このビットパターンが示す実数値xは、
x=(2^(126−127))*1.5=0.75
となる。
【0007】
このようにして、IEEE754準拠の32ビット浮動小数点フォーマットでは、実数xを表現するのに、x=a*2^nとしたときの仮数部a及び指数部nを上記のように変換して格納している。これによって、−2^129〜2^129という広範囲にわたる実数表現を可能にしている。
【0008】
一方、そのような煩雑な変換を必要としない数値フォーマットとして、固定小数点数値がある。これは、図13に示すように、上記のような指数部格納フィールドを持たない数値フォーマットであり、通常最上位ビットが符号情報で、以下の所定のビット位置に小数点が固定化されている数である。たとえば、図13(a)に示すように、小数点の位置が、符号ビットの直下の位置にある場合、数値の取りうる範囲は、−1〜+1と限定される。たとえば、
0 1000000000000000000000000000000
の場合、最上位ビットが0であるので、正の数であり、小数点以下第1位が1であるので、0.5を表している。また、たとえば、
0 1100000000000000000000000000000
の場合、最上位ビットが0であるので、正の数であり、小数点以下第1位及び第2位が1であるので、0.5+0.25、即ち、0.75を表している。正負の数値表現は通常2の補数で行われることが多く、その場合、たとえば、
1 0000000000000000000000000000000
は、−1を表す。
1 1100000000000000000000000000000
は、−0.25を表す
【0009】
また、−1〜+1という制限では扱いにくいような数を処理する場合は、図13(b)に示すように、たとえば、小数点の位置を、最上位ビットの2ビット下の位置に固定することもある。その場合、数値の取りうる範囲は、−2〜+2となる。
【0010】
たとえば、
01 010000000000000000000000000000
の場合、最上位ビットが0であるので、正の数であり、小数点の上位に1があり、小数点以下第2位が1であるので、1.25を表している。
【0011】
以上のように、従来では、浮動小数点数値については、IEEE754に代表されるように、上位桁から、符号ビット、指数部、仮数部の順にビットが格納されるフォーマットで表現され、一方、固定小数点数値については、上位桁から、符号ビット、数値の順にビットが格納されるフォーマットで表現される。
【0012】
【非特許文献1】
IEEE 754-1985 (R1990) 「Binary Floating-Point Arithmetic」 Institute of Electrical and Electronics Engineers, 01-May-1985
【0013】
【発明が解決しようとする課題】
しかしながら、上記のような浮動小数点数値の格納フォーマットでは、たとえば指数部の値だけを取り出したいような場合、元の32ビットデータから、最上位の1ビットと下位側の23ビットとを切り離すという処理を行う必要があり、多大の処理量を要するという問題がある。
【0014】
一方、仮数部の値だけを取り出したいような場合、元の32ビットデータのうち、下位側の23ビットだけを取り出した後に、先に示した(1・k)の処理を施す必要があり、この場合にも、やはり多大の処理量を要するという問題がある。
【0015】
また、上記のような浮動小数点フォーマットで格納された実数xとyとの乗算を行う場合、x=a*2^n、y=b*2^mとすると、
x*y=(a*2^n)*(b*2^m)=a*b*2^(n+m)
であるので、x、yそれぞれのビットフィールドの仮数部どうしの乗算と、指数部どうしの加算とを行う必要があるが、乗算の度に、それぞれのビットフィールドから仮数部と指数部それぞれを切り出す必要があり、多大の処理量を要するという問題がある。
【0016】
一方、上記のような固定小数点数値の格納フォーマットでは、演算に際して、指数部と仮数部とを切り離すという処理が不要なので、浮動小数点ファーマットに比べて処理量が少ないが、表現可能な値の範囲が制限されてしまうという問題がある。
【0017】
そこで、本発明は、このような従来の問題点に鑑みてなされたものであり、浮動小数点フォーマットを採用することによる表現可能な数値範囲の広さと、固定小数点フォーマットを採用することによる演算速度の高速化とを両立させることが可能な浮動小数点演算装置を提供することを目的とする。
【0018】
【課題を解決するための手段】
上記の目的を達成するために、本発明に係る浮動小数点格納方法は、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、該a、nをNビット(N≧(U+L))のビットフィールドに格納する浮動小数点格納方法であって、上記ビットフィールドの上位側のUビットに仮数部を固定小数点数値で格納し、上記ビットフィールドの下位側のLビットに指数部を整数で格納することを特徴とする。
【0019】
ここで、前記浮動小数点格納方法において、上記N、Lは8の倍数としてもよい。
また、上記目的を達成するために、本発明に係る浮動小数点演算装置は、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、2つの実数を乗算して得られる値を浮動小数点数値で出力する浮動小数点演算装置であって、上位側のUビットが仮数部を固定小数点数値で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような浮動小数点値を格納する第1及び第2のレジスタと、該第1のレジスタの全ビットフィールドの値と該第2のレジスタの全ビットフィールドの値とを乗算する乗算器と、該第1のレジスタの全ビットフィールドの値と該第2のレジスタの全ビットフィールドの値とを加算する加算器と、上記乗算器の出力の上位側Uビットと、上記加算器の出力の下位側Lビットとを結合するビット結合器とを有することを特徴とする。
【0020】
また、本発明に係る浮動小数点演算装置は、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、2つの実数を乗算して得られる値を固定小数点数値で出力する浮動小数点演算装置であって、上位側のUビットが仮数部を固定小数点数値で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような浮動小数点値を格納する第1及び第2のレジスタと、上記第1のレジスタの全ビットフィールドの値と上記第2のレジスタの全ビットフィールドの値とを乗算する乗算器と、上記第1のレジスタの全ビットフィールドの値と上記第2のレジスタの全ビットフィールドの値とを加算する加算器と、上記乗算器の出力の上位側ビットの値を、上記加算器の出力の下位側Lビットの値に応じてビットシフトするビットシフタとを有していてもよい。
【0021】
また、本発明に係る浮動小数点演算装置は、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、実数を整数に変換する浮動小数点演算装置であって、上位側のUビットが仮数部を固定小数点数で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような浮動小数点数値を格納するレジスタと、前記レジスタに格納された値を前記レジスタの下位側のLビットが示す値に応じてビットシフトするビットシフタとを備えることを特徴とする。
【0022】
そして、前記浮動小数点演算装置は、さらに、前記レジスタのビット数をN、前記仮数部格納フィールドにおける小数点位置より上位のビット数をS、前記レジスタの下位側のLビットが示す値をxとしたときに、(N−S−x)の計算を行う減算器を備え、前記ビットシフタは、前記減算器の出力値が示すビット数だけ、前記レジスタに格納された値をビットシフトしてもよいし、前記減算器は、さらに、予め決定されている数をXとしたときに、(N−S−x−X)の計算を行い、前記ビットシフタは、前記減算器の出力値が示すビット数だけ、前記レジスタに格納された値をビットシフトしてもよい。
【0023】
ここで、前記浮動小数点格納方法において、上記N、Lは8の倍数としてもよい。
なお、本発明は、浮動小数点フォーマットの数値どうしの乗算だけでなく、固定小数点フォーマットの数値と浮動小数点フォーマットの数値とを乗算する演算装置として実現してもよいし、それらの演算装置が備える手段をステップとする演算方法として実現してもよい。さらに、本発明は、マイクロプロセッサやDSP(Digital Signal Processor)等のハードウェアとして実現することができるだけでなく、そのような演算方法をコンピュータに実行させるプログラムとして実現することもできる。そして、そのようなプログラムをCD−ROM等の記録媒体やインターネット等の伝送媒体を介して流通させることができるは言うまでもない。
【0024】
【発明の実施の形態】
(実施の形態1)
以下、本発明の実施の形態1における浮動小数点格納方法について図面を参照しながら説明する。
【0025】
図1は本実施の形態1における浮動小数点格納方法において、実数xを格納する時のビットフィールドを示す図である。このビットフィールドは、指数部格納フィールド11、仮数部格納フィールド12を含んで構成される。
【0026】
指数部格納フィールド11は、実数xを、a*2^nで表した時のnの値が8ビットの整数で格納される。値は例えば2の補数で表現される。仮数部格納フィールド12は、実数xを、a*2^nで表した時のaの値が24ビットで格納される。値は小数点位置が固定化されている固定小数点数値で表現される。本実施の形態では、aの値は−1〜+1の範囲となるように正規化されるものとする。従って、24ビットのビット構成は、当該24ビットの最上位ビットが符号情報となり、その直下に小数点が固定化されるような2の補数の固定小数点数値となる。すなわち、最上位ビット(符号ビット)の1ビット下が0.5(2^(-1))を表現するビット、以下、0.25(2^(-2))、0.125(2^(-3))を表現するビット、というような数値表現である。
【0027】
このようなビットフィールドを持った浮動小数点格納方法の具体例について以下説明する。
まず、例えば、実数x=29.25を本実施例の浮動小数点格納方法で格納する場合について説明する。
【0028】
実数xをa*2^nと表現する場合、
29.25=0.9140625*2^5
であるので、a=0.9140625、n=5となる。従って、図1の指数部格納フィールド11には、5(=b'00000101)が格納される。仮数部格納フィールド12には、0.9140625を2の補数の固定小数点数値で表現した値(b'011101010000000000000000)が格納される。
従って、実数29.25を表現する全体のビット構成は、
b'011101010000000000000000 00000101
となる。
【0029】
次に、実数x=0.009033203125を本実施例の浮動小数点格納方法で格納する場合について説明する。
実数xをa*2^nと表現す場合、
0.009033203125=0.578125*2^(−6)
であるので、a=0.578125、n=−6となる。従って、図1の指数部格納フィールド11には、−6(=b'11111010)が格納される。
【0030】
仮数部格納フィールド12には、0.578125を2の補数の固定小数点数値で表現した値(b'010010100000000000000000)が格納される。
従って、実数0.009033203125を表現する全体のビット構成は、
b'010010100000000000000000 11111010
となる。
【0031】
次に、実数x=−4.0010986328125を本実施例の浮動小数点格納方法で格納する場合について説明する。
実数xをa*2^nと表現す場合、
−4.0010986328125=−0.5001373291015625*2^3
であるので、a=−0.5001373291015625、n=3となる。従って、図1の指数部格納フィールド11には、3(=b'00000011)が格納される。仮数部格納フィールド12には、−0.5001373291015625を2の補数の固定小数点数値で表現した値が格納される。
【0032】
ここで、負の固定小数点数値に対する2の補数について説明する。
上記−0.5001373291015625の絶対値を2の補数で表現すると、
b'010000000000010010000000
である。2の補数で負の値を表現する場合は、全ビットを反転し、最下位ビットに1を足すという処理で求められる。従って、−0.5001373291015625の2の補数表現は、
b'101111111111101100000000
となる。従って、実数−0.5001373291015625を表現する全体のビット構成は、
b'101111111111101100000000 00000011
となる。
【0033】
なお、以上の具体例では、指数部格納フィールド11を8ビット、仮数部格納フィールド12を24ビットとしたが、本発明は、このようなビット配分に限られず、値の取り得る範囲に応じて、変更してもよい。例えば、指数部格納フィールドを6ビット、仮数部格納フィールドを26ビットとした場合は、値の精度(仮数部の表現桁数)は、2ビット分向上するが、値の取り得る範囲が2ビット分小さくなる。
【0034】
また、本実施の形態では、仮数部格納フィールド12に格納する値は、−1〜+1の範囲に正規化された値が格納されるとしたが、例えば、−2〜+2の範囲に正規化されるとしてもよい。
【0035】
図2は、指数部のビットフィールド31を6ビット、仮数部のビットフィールド32を26ビット、仮数部の値の正規化を−2〜+2の範囲とした場合のビットフィールドを示す。本図に示すように、小数点位置が、最上位ビットから見て、2ビット目と3ビット目の間に固定化される。例えば、先の例では、
実数29.25を表現する全体のビット構成は、
b'011101010000000000000000 00000101
すなわち、29.25=0.9140625*2^5
と表現したが、図2に示すビットフィールドの場合は、
29.25=1.828125*2^4
と表現することになり、かつ指数部は6ビットであるので、全体のビット構成は、
b'01110101000000000000000000 000100
となる。
【0036】
以上のように本実施の形態によれば、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、該a、nをNビット(N≧(U+L))のビットフィールドに格納する際、上記ビットフィールドの上位側のUビットに仮数部を固定小数点数値で格納し、上記ビットフィールドの下位側のLビットに指数部を整数で格納することによって、仮数部が上位側ビットフィールドに集中し、指数部は下位側ビットフィールドに集中するので、仮数部を取り出したいときは、全ビットフィールドの上位側のフィールドのみを切り出せば容易に取り出せるし、指数部を取り出したいときは、全ビットフィールドの下位側のフィールドのみを切り出せば容易に取り出せることとなる。
【0037】
また、本実施の形態における浮動小数点格納方法によれば、全体のビットフィールドの上位側に仮数部が格納され、その仮数部と連続する下位側に指数部が格納されるので、仮数部を取り出す際に、下位側(指数部)のフィールドを切り離す処理を省略しても、つまり、切り出し処理なしに全ビット一括で取り出しその値をそのまま仮数部の値と見なしても、それによって生じる数値データの誤差は、高々2^(−24)以下であるので、実質的にその誤差ははほとんど無視し得るものであり、仮数部の値を取り出す際は、ビットフィールドの切り出し処理は実質的に不要となる。ここに、本実施の形態における浮動小数点格納方法の最大のメリットがある。
【0038】
例えば、先に述べた例では、実数29.25を表現する全体のビット構成を、
b'011101010000000000000000 00000101
すなわち、
29.25=0.9140625*2^5
と表現した。ここで正確には、符号ビットを含めた仮数部は、上位側24ビットであるが、仮に、32ビットすべてを仮数部と見なしても、仮数部の値は、
0.91406250232……
となり、誤差としては微小である。従って、当該浮動小数点数値の値を求める場合、全ビットフィールドをそのままアクセスすることによって得られる値を仮数部とし、下位側のビットのみアクセスすることによって得られる値を指数部とすることによって、ほぼ正確な浮動小数点数値を得られるので、ビット切り出し処理が極めて少なくて済むこととなる。
【0039】
また、特に、指数部格納フィールド11を全ビットフィールドの最下位8ビットとすることによって、以下に述べる特別な効果がさらに得られる。
図3は、図1に示されたフォーマットの数値データをメモリに格納した際のメモリ上のビットフィールドの配置を示した図である。ワード単位でのアクセスされる場合には、本図のワード単位でのアクセス範囲20に示されるように、浮動少数点で表された実数値の単位で、読み書きされる。一方、バイト単位でアクセスされる場合には、本図のバイト単位でのアクセス範囲21に示されるように、指数部格納フィールド11の単位で、読み書きされる。なお、図12に示された従来のフォーマットでは、指数部格納フィールド71は、全ビットフィールドにおけるバイトアラインされた位置に格納されていないので、本実施の形態のように、1回のバイトアクセスによって読み書きすることはできない。
【0040】
このように、指数部格納フィールドが全ビットフィールドの下位側8ビットに配置されている場合、全ビットフィールドの下位8ビットが格納されている領域をバイト単位でアクセスすることによって、1回のアクセスで指数部が取り出せることとなり、極めて高速に指数部取り出しが可能となる。
【0041】
(実施の形態2)
次に本発明の実施の形態2における浮動小数点演算装置について、図面を参照しながら説明する。
【0042】
図4は本実施の形態2における浮動小数点演算装置100の構成を示すブロック図である。なお、本実施の形態では、浮動小数点数値x、yを乗算する演算装置100について述べるが、浮動小数点数値の格納フォーマットは、先に実施の形態1で述べたフォーマットに準拠しているものとする。また、乗算の方法は、
x=a*(2^n)、y=b*(2^m)
としたときに、
x*y=a*b*(2^(n+m))
の式に基づいて行うので、仮数部どうしの乗算と、指数部どうしの加算が主な演算となる。
【0043】
この浮動小数点演算装置100は、32ビット長の2つの実数の乗算を算出し、その結果を浮動少数点フォーマットで出力する演算回路であり、第1のレジスタ101、第2のレジスタ102、乗算器103、加算器104及びビット結合器105から構成される。
【0044】
実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、第1のレジスタ101は、上位側の24ビットが仮数部格納フィールドで、下位側の8ビットが指数部格納フィールドであるような実数値を格納する32ビットのレジスタであり、第2のレジスタ102は、同様に、上位側の24ビットが仮数部格納フィールドで、下位側の8ビットが指数部格納フィールドであるような実数値を格納する32ビットのレジスタであり、乗算器103は、該第1のレジスタ101の値と該第2のレジスタ102の値とを乗算する乗算器、加算器104は、該第1のレジスタ101の値と該第2のレジスタ102の値とを加算する加算器、ビット結合器105は、上記乗算器103の出力の上位側24ビットと、加算器104の出力の下位側8ビットとを結合するビット結合器である。
【0045】
ここで、上記第1のレジスタ101及び、上記第2のレジスタ102に格納されている浮動小数点数値の格納のフォーマットは、図1に示すフォーマットであり、先に実施の形態1で述べたものと同様であるので、たとえば、実数29.25を表現する全体のビット構成は、
b'011101010000000000000000 00000101
となる。実数0.009033203125を表現する全体のビット構成は、
b'010010100000000000000000 11111010
となる。
【0046】
このようなビットフィールドを持った数値を扱う、浮動小数点演算装置100について以下説明する。いま、第1のレジスタ101には、値として、29.25が格納されているのもとする。すなわちビット構成は、
b'011101010000000000000000 00000101
となる。そして、第2のレジスタ102には、値として、0.009033203125が格納されているのもとする。すなわちビット構成は、
b'010010100000000000000000 11111010
となる。
【0047】
乗算器103は、該第1のレジスタ101の値と該第2のレジスタ102の値とを乗算する。この乗算は、仮数部どうしの乗算を行う過程であるので、正確には、32ビットの全体のビットフィールドから下位8ビットの指数部を切り離した形で仮数部を取り出し、当該仮数部どうしを乗算するのであるが、本実施の形態では、32ビットの全ビットフィールドを取り出し、そのまま当該値を乗算するものとする。これによって本来の値からは誤差が生じるが、その誤差は高々2^(−24)以下であるので、実質的には無視できる。
【0048】
具体的に上記の例では、第1のレジスタに格納されている仮数部の値は、正確には、
b'011101010000000000000000
であるので、10進数で表現すれば、0.9140625となる。
【0049】
一方、全ビットフィールドを仮数部と見た場合は、
b'01110101000000000000000000000101
であるので、10進数で表現すれば、0.91406250232831………となる。また、第2のレジスタに格納されている仮数部の値は、正確には、
b'010010100000000000000000
であるので、10進数で表現すれば、0.578125となる。
【0050】
一方、全ビットフィールドを仮数部と見た場合は、
b'01001010000000000000000011111010
であるので、10進数で表現すれば、0.57812511641532………となる。
【0051】
ところで、正確に切り出した仮数部どうしの乗算結果は、
0.9140625*0.5781250=0.5284423828125
であるので、2進数で表現すると
b'0 1000011101001000000000000000000
となるが、一方、全ビット仮数部とみなした場合の仮数部どうしの乗算結果は、
0.91406250232831*0.57812511641532 =0.52844249056943
であるので、2進数で表現すると
b'0 1000011101001000000000011100111
となる。ここで注目するべきことは、正確に切り出した仮数部どうしの乗算結果と、全ビット仮数部とみなした場合の仮数部どうしの乗算結果とは、上記24ビットまで、一致していることである。つまり、この乗算器103は、2つの実数値の仮数部を切り出すという処理を行うことなく、結果として、仮数部だけを切り出して乗算して場合と略等しい値を算出しているので、切り出し処理を省いた分だけ処理時間や回路を削減している。
【0052】
次に加算器104では、該第1のレジスタ101の値と該第2のレジスタ102の値とを加算する。この加算は、指数部どうしの加算を行う過程であるので、32ビットの全体のビットフィールドから下位8ビットのみを切り出し、当該指数部どうしを加算するのであるが、本実施の形態では、32ビットの全ビットフィールドを取り出し、そのまま当該値を加算するものとする。これは、指数部が格納されているビットフィールドが最下位側のフィールドであるので、加算結果の下位側の値は、入力の上位側の値に影響を受けないので、特に入力の上位側を取り離して加算する必要がないためである。具体的に上記の例では、第1のレジスタ101の値が、
b'01110101000000000000000000000101
であり、第2のレジスタ102の値が、
b'01001010000000000000000011111010
であるので、上記加算器の出力は、
b'10111111000000000000000011111111
となる。当然、上記加算結果の下位8ビットは、入力の下位8ビットを切り出して加算した結果と一致する。
【0053】
次に、ビット結合器105は、上記乗算器103の出力の上位側24ビットと、上記加算器104の出力の下位側8ビットとを結合する。
図5は、ビット結合器105で行われるビット結合の様子を示すものである。本図の左側に示された64ビットのデータ110は、乗算器103からの出力ビット列であり、そのうちのハッチングされた箇所(上位24ビット)が切り出されるビット、すなわち演算結果として有効な範囲であり、ビット結合器105の上位桁に入力される。
【0054】
一方、本図の右側に示された32ビットのデータ111は、加算器104からの出力ビット列であり、そのうちのハッチングされた箇所(下位8ビット)が切り出されるビット、すなわち演算結果として有効な範囲であり、ビット結合器105の下位桁に入力される。本図の下部に示される32ビットのデータ112は、64ビットデータ110及び32ビットデータ111それぞれから切り出されたビットが結合された後のビット列である。この32ビットデータ112は、乗算器103の出力と加算器104の出力それぞれの有効なビットのみが切り出されて結合されたものである。
【0055】
具体的には、上記乗算器103の出力は
b'01000011101001000000000011100111
であり、上記加算器104の出力は
b'10111111000000000000000011111111
であるので、上記ビット結合器の出力は、
b'01000011101001000000000011111111
となる。
【0056】
さて、このようにして得られたビット列112を本実施の形態の浮動小数点数値格納フォーマットに従って、10進数に換算してみると、
0.5284423828125*2^(−1)
=0.26422119140625
となり、元々の入力値29.25と0.009033203125との乗算結果と一致していることがわかる。
【0057】
以上のように本実施の形態によれば、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、上位側のUビットが仮数部を固定小数点数値で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような第1及び第2のレジスタと、該第1のレジスタの値と該第2のレジスタの値とを乗算する乗算器と、該第1のレジスタの値と該第2のレジスタの値とを加算する加算器と、上記乗算器の出力の上位側Uビットと、上記加算器の出力の下位側Lビットとを結合するビット結合器とを備えることによって、浮動小数点数値の乗算において、仮数部の乗算と指数部の加算とは、入力データの全ビットフィールドに対してそのまま行えばよく、かつ、乗算器の出力の上位側ビットと加算器の出力の下位側ビットのビット結合のみで、乗算結果を浮動小数点フォーマットにフォーマッティングできるので、非常に高速な浮動小数点数値の乗算が可能となる。
【0058】
なお、本実施の形態では、浮動小数点数値の乗算結果を浮動小数点数値にフォーマッティングして格納したが、乗算結果を固定小数点数値にフォーマッティングすることも容易である。
【0059】
図6は、そのような浮動小数点演算装置200の構成を示すブロック図である。浮動小数点演算装置200は、32ビット長の2つの実数の乗算を算出し、その結果を固定少数点フォーマットで出力する演算回路であり、第1のレジスタ101、第2のレジスタ102、乗算器103、加算器104及びビットシフタ201から構成される。なお、上記浮動小数点演算装置100と同じ構成要素については同一の符号を付している。
【0060】
図4に示される浮動小数点演算装置100と異なるのは、ビット結合器105の代わりにビットシフタ201が搭載されていることである。該ビットシフタ201は、乗算器103の出力を加算器104の出力の下位8ビットの値に応じてビットシフトする32ビットのシフトレジスタである。先の例と同様の数値を例にとると、乗算器103の出力は、
0.5284423828125
であり、加算器104の出力の下位8ビットの値は−1であるので、上記ビットシフタ201は、乗算器の値を1ビットシフトダウンすることにより、結果として、図4に示された浮動小数点演算装置100による結果と同様に、
0.26422119140625
を生成する。なお、この場合は、指数部の情報は意味がなくなるので指数部の値を下位8ビットに結合する必要はない。
【0061】
以上、本発明に係る浮動少数点格納方法及び浮動小数点演算装置について、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。
【0062】
例えば、本発明に係る浮動小数点格納方法は、2つの浮動少数点データを乗算する場合だけでなく、固定小数点数値と浮動小数点数値とを乗算する場合についても、高速化に役立つフォーマットである。したがって、本発明に係る浮動少数点格納方法は、以下のような固定小数点数値を扱う演算装置に適用することができる。
【0063】
図7は、固定小数点数値と浮動小数点数値とを乗算し、その結果を浮動小数点数値で出力する浮動小数点演算装置300の構成を示すブロック図である。この浮動小数点演算装置300は、図4に示された浮動小数点演算装置100において、加算器104を削除したものに等しい構成を備える。なお、第1のレジスタ101は、32ビットの固定小数点数値を格納している。
【0064】
乗算器103は、第1のレジスタ101に格納された32ビットデータと第2のレジスタ102に格納された32ビットデータとを、そのまま(いずれも固定小数点数値として)乗算し、64ビットの乗算結果を出力する。ビット結合器105は、図8に示されるように、乗算器103で得られた64ビットのうちの有効ビット(上位24ビット)を上位ビットとし、一方、第2のレジスタ102に格納されている指数部(下位8ビット)を下位ビットとして結合する。このような浮動小数点演算装置300であっても、乗算器103は、第2のレジスタ102に格納された32ビットデータから仮数部だけを切り出すことなく、32ビットデータをそのまま乗算することができるので、演算の高速化が図られる。
【0065】
図9は、固定小数点数値と浮動小数点数値とを乗算し、その結果を固定小数点数値で出力する浮動小数点演算装置400の構成を示すブロック図である。この浮動小数点演算装置400は、図6に示された浮動小数点演算装置200において、加算器104を削除したものに等しい構成を備える。なお、第1のレジスタ101は、32ビットの固定小数点数値を格納している。
【0066】
乗算器103は、第1のレジスタ101に格納された32ビットデータと第2のレジスタ102に格納された32ビットデータとを、そのまま(いずれも固定小数点数値として)乗算し、64ビットの乗算結果を出力する。ビットシフタ201は、乗算器103で得られた64ビットのうちの有効ビット(上位24ビット)を取り出した後に、その値を、第2のレジスタ102に格納されている指数部(下位8ビット)の値に応じたビット数だけビットシフトを行う。このような浮動小数点演算装置400であっても、乗算器103は、第2のレジスタ102に格納された32ビットデータから仮数部だけを切り出すことなく、32ビットデータをそのまま乗算することができるので、演算の高速化が図られる。
【0067】
(実施の形態3)
次に本発明の実施の形態3における浮動小数点演算装置について、図面を参照しながら説明する。
【0068】
図10は、本実施の形態3における浮動小数点数値演算装置の構成を示すブロック図である。浮動小数点演算装置500は、浮動小数点数値を整数に変換する演算装置であり、第1のレジスタ101と、減算器501と、ビットシフタ502とから構成される。
【0069】
第1のレジスタ101は、実施の形態1と同様のレジスタであり、実数xをa* (2^n)とあらわした時のaを仮数部、nを指数部としたときに、上位側の24ビットが仮数部格納フィールドで、下位側の8ビットが指数部格納フィールドであるような実数xを格納するレジスタである。
【0070】
減算器501は、第1のレジスタ101の下位側8ビットの値をxとしたときに、所定の値Cからxを減算する減算器であり、ビットシフタ502は、第1のレジスタ101に格納された値を、減算器501の出力値に対応するビット数だけ、右にシフトするビットシフタである。
【0071】
ここで、減算器501に入力されるCの値は、図11に示されるように、第1のレジスタ101のビット数をN、上記仮数部格納フィールドにおける小数点位置より上位のビット数をSとしたときに、
C=N−S
である。たとえば、Sの値は、第1のレジスタ101に格納されている値のビットフィールドが、図1に示されるフォーマットである場合には、1であり、また、図2に示されるフォーマットである場合には、2である。つまり、このSは、第1のレジスタ101に格納された浮動小数点数値の仮数部格納フィールドにおける小数点位置より上位のビット数を示している。
【0072】
なお、以下では、第1のレジスタ101に格納されている浮動小数点数値のフォーマットは、図1に示されるフォーマットであり、先に実施の形態1で述べたものと同様であるとする。たとえば、実数29.25を表現する全体のビット構成は、
b'011101010000000000000000 00000101
となるとする。
【0073】
次に、以上のように構成された浮動小数点演算装置500の具体的な動作を説明する。
いま、第1のレジスタ101には、実数として、29.25が格納されているのもとする。すなわち、ビット構成として、
b'011101010000000000000000 00000101
が格納されているとする。
【0074】
減算器501は、第1のレジスタ101の下位8ビットの値を上記Cの値から減算する。ここでは、Cの値は、第1のレジスタ101のビット数Nが32、仮数部格納フィールドにおける小数点位置より上位のビット数Sが1であるので、C=N−S
=32−1
=31
となる。一方、第1のレジスタ101の下位8ビットの値は5であるので、減算器501の出力値は、
31−5=26
となる。次にビットシフタ502は、減算器501からの出力値(26)が示すビット数だけ、第1のレジスタ101の値を右にビットシフトする。その結果、第1のレジスタ101に格納された実数値、
b'011101010000000000000000 00000101
は、26ビットだけ右にビットシフトされ、結果として、
b'00000000000000000000000000011101 = 29
となる。この値「29」は、第1のレジスタ101に格納されていた浮動小数点数値29.25を整数化した値に等しい。
【0075】
以上のように本実施の形態によれば、実数xをa* (2^n)とあらわした時のaを仮数部、nを指数部としたときに、上位側のUビットが仮数部を固定小数点数値で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような第1のレジスタ101と、その第1のレジスタ101に格納された値を第1のレジスタ101の下位側のLビットが示す値に応じてビットシフトするビットシフタ502とを備えることによって、浮動小数点数値を整数に変換する処理が減算処理とビットシフト処理のみで行えるので、非常に高速に処理できることになる。
【0076】
なお、本実施の形態では、減算器のプラス側の入力値Cとして、(第1のレジスタ101のビット数N)−(第1のレジスタ101に格納された浮動小数点数値の仮数部格納フィールドにおける小数点位置より上位のビット数S)としたが、これに代えて、所定の値Xをさらに減算した値としてもよい。例えばX=4とした場合、上記の例では、ビットシフトする量は、
32−1−5−4=22
となり、結果として、
b'011101010000000000000000 00000101
は、22ビットだけ右にビットシフトされ、
b'00000000000000000000000111010100
が得られる。この値は、浮動小数点数値「29.25」に対し、小数点以下4ビットの有効数字を備えた数として表現したものになる。このように、上記Xの値を適切に設定することによって、浮動小数点数値の小数点以下Xビットを有効化させた値の表現が簡単に実現される。
【0077】
【発明の効果】
以上の説明から明らかなように、本発明に係る浮動小数点格納方法は、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、該a、nをNビット(N≧(U+L))のビットフィールドに格納する浮動小数点格納方法であって、上記ビットフィールドの上位側のUビットに仮数部を固定小数点数値で格納し、上記ビットフィールドの下位側のLビットに指数部を整数で格納することを特徴とする。
【0078】
このような格納方法によれば、仮数部が上位側ビットフィールドに集中し、指数部は下位側ビットフィールドに集中するので、仮数部を取り出したいときは、全ビットフィールドの上位側のフィールドのみを切り出せば容易に取り出せるし、指数部を取り出したいときは、全ビットフィールドの下位側のフィールドのみを切り出せば容易に取り出せることとなる。また、仮数部を取り出す際に、下位側のフィールドを切り離す処理を省略しても、つまり、切り出し処理なしに全ビット一括で取り出しその値をそのまま仮数部の値と見なしても、それによって生じる数値データの誤差は、高々2^(−24)以下であるので、実質的にその誤差ははほとんど無視し得るものであり、仮数部の値を取り出す際にはビットフィールドの切り出し処理は実質的に不要となる。
【0079】
ここで、前記浮動小数点格納方法において、上記N、Lは8の倍数としてもよい。このようなサイズとすることで、例えば指数部格納フィールドが全ビットフィールドの下位側8ビットである場合に、そのような数値データをメモリに格納した際、全ビットフィールドの下位8ビットが格納されている領域をバイト単位でアクセスすることによって、自動的に指数部が取り出せることとなり、極めて高速に指数部取り出しが可能となる。
【0080】
また、本発明に係る浮動小数点演算装置は、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、2つの実数を乗算して得られる値を浮動小数点数値で出力する浮動小数点演算装置であって、上位側のUビットが仮数部を固定小数点数値で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような浮動小数点値を格納する第1及び第2のレジスタと、該第1のレジスタの全フィールドの値と該第2のレジスタの全ビットフィールドの値とを乗算する乗算器と、該第1のレジスタの全ビットフィールドの値と該第2のレジスタの全ビットフィールドの値とを加算する加算器と、上記乗算器の出力の上位側Uビットと、上記加算器の出力の下位側Lビットとを結合するビット結合器とを有することを特徴とする。
【0081】
このような演算装置によれば、浮動小数点数値の乗算において、仮数部の乗算と指数部の加算とは、入力データの全ビットフィールドに対してそのまま行えばよく、かつ、乗算器の出力の上位側ビットと加算器の出力の下位側ビットのビット結合のみで、乗算結果を浮動小数点フォーマットにフォーマッティングできるので、非常に高速な浮動小数点数値の乗算が可能となる。
【0082】
また、本発明に係る浮動小数点演算装置は、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、2つの実数を乗算して得られる値を固定小数点数値で出力する浮動小数点演算装置であって、上位側のUビットが仮数部を固定小数点数値で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような浮動小数点値を格納する第1及び第2のレジスタと、上記第1のレジスタの全ビットフィールドの値と上記第2のレジスタの全ビットフィールドの値とを乗算する乗算器と、上記第1のレジスタの全ビットフィールドの値と上記第2のレジスタの全ビットフィールドの値とを加算する加算器と、上記乗算器の出力の上位側ビットの値を、上記加算器の出力の下位側Lビットの値に応じてビットシフトするビットシフタとを有していてもよい。
【0083】
このような演算装置によれば、浮動小数点数値の乗算において、仮数部の乗算と指数部の加算とは、入力データの全ビットフィールドに対してそのまま行えばよく、かつ、乗算器の出力を加算器の出力の下位側の値に基づいてビットシフトするのみで、乗算結果を固定小数点フォーマットにフォーマッティングできることとなる。
【0084】
また、本発明に係る浮動小数点演算装置は、実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、実数を整数に変換する浮動小数点演算装置であって、上位側のUビットが仮数部を固定小数点数で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような浮動小数点数値を格納するレジスタと、前記レジスタに格納された値を前記レジスタの下位側のLビットが示す値に応じてビットシフトするビットシフタとを備えることを特徴とする。そして、前記浮動小数点演算装置は、さらに、前記レジスタのビット数をN、前記仮数部格納フィールドにおける小数点位置より上位のビット数をS、前記レジスタの下位側のLビットが示す値をxとしたときに、(N−S−x)の計算を行う減算器を備え、前記ビットシフタは、前記減算器の出力値が示すビット数だけ、前記レジスタに格納された値をビットシフトする。
【0085】
このような演算装置によれば、減算器とビットシフタだけで、任意の浮動小数点数値を整数に変換され、極めて小さな回路規模で、実数を整数に変換する変換器が実現される。
【0086】
ここで、前記減算器は、さらに、予め決定されている数をXとしたときに、(N−S−x−X)の計算を行い、前記ビットシフタは、前記減算器の出力値が示すビット数だけ、前記レジスタに格納された値をビットシフトしてもよい。
【0087】
このような演算装置によれば、減算器とビットシフタだけで、任意の浮動小数点数値に対して、その少数点以下Xビットを有効化させた数値が得られ、極めて小さな回路規模で、実数を、その少数点以下を有効化させた数値に変換する変換器が実現される。
【0088】
以上のように、本発明により、従来の浮動小数点フォーマットを変更するだけで、特別な回路等を設けることなく、固定小数点用の演算器だけを用いて浮動小数点数値の乗算が可能になるとともに、乗算の高速化が図られ、さらに、浮動小数点数値の整数化が簡単な回路で実現され、特に、乗算処理が多用される音声処理や画像処理等のマルチメディアデータ処理の高速化技術として、その実用的価値は極めて高い。
【図面の簡単な説明】
【図1】本発明の実施の形態1における浮動小数点数値データの格納フォーマットの一例を示す図である。
【図2】浮動小数点数値データの格納フォーマットの他の例を示す図である。
【図3】図1に示された浮動小数点数値データをメモリに格納した際のビットフィールドの配置を示す図である。
【図4】本発明の実施の形態2における浮動小数点演算装置の構成を示すブロック図である。
【図5】同浮動小数点演算装置におけるビット結合器の動作を示す図である。
【図6】浮動小数点演算装置の他の例の構成を示すブロック図である。
【図7】固定小数点数値と浮動小数点数値とを乗算する浮動小数点演算装置の構成を示すブロック図である。
【図8】同浮動小数点演算装置におけるビット結合器の動作を示す図である。
【図9】固定小数点数値と浮動小数点数値とを乗算する浮動小数点演算装置の他の例の構成を示すブロック図である。
【図10】本発明の実施の形態3における浮動小数点数値演算装置の構成を示すブロック図である。
【図11】図10に示された減算器に入力されるCの値を説明する図である。
【図12】IEEE754の32ビット浮動小数点フォーマットのビットフィールドを示す図である。
【図13】(a)は、固定小数点数値のフォーマットを示す図であり、(b)は、固定小数点数値の他の例のフォーマットを示す図である。
【符号の説明】
11、31 指数部格納フィールド
12、32 仮数部格納フィールド
20 ワード単位でのアクセス範囲
21 バイト単位でのアクセス範囲
100、200、300、400、500 浮動小数点演算装置
101 第1のレジスタ
102 第2のレジスタ
103 乗算器
104 加算器
105 ビット結合器
201、502 ビットシフタ
501 減算器

Claims (2)

  1. 実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、2つの実数を乗算して得られる値を浮動小数点数値で出力する浮動小数点演算装置であって、
    上位側のUビットが仮数部を固定小数点数値で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような浮動小数点数値を格納する第1及び第2のレジスタと、
    前記第1のレジスタの全ビットフィールドの値と前記第2のレジスタの全ビットフィールドの値とを乗算する乗算器と、
    前記第1のレジスタの全ビットフィールドの値と前記第2のレジスタの全ビットフィールドの値とを加算する加算器と、
    前記乗算器の出力の上位側Uビットと、前記加算器の出力の下位側Lビットとを結合するビット結合器と
    を備えることを特徴とする浮動小数点演算装置。
  2. 実数xをa* (2^n)と表した時のaを仮数部、nを指数部としたときに、2つの実数を乗算して得られる値を固定小数点数値で出力する浮動小数点演算装置であって、
    上位側のUビットが仮数部を固定小数点数値で格納する仮数部格納フィールドで、下位側のLビットが指数部を整数で格納する指数部格納フィールドであるような浮動小数点数値を格納する第1及び第2のレジスタと、
    前記第1のレジスタの全ビットフィールドの値と前記第2のレジスタの全ビットフィールドの値とを乗算する乗算器と、
    前記第1のレジスタの全ビットフィールドの値と前記第2のレジスタの全ビットフィールドの値とを加算する加算器と、
    前記乗算器の出力の上位側ビットの値を、前記加算器の出力の下位側Lビットの値に応じてビットシフトするビットシフタと
    を備えることを特徴とする浮動小数点演算装置。
JP2003011373A 2002-06-20 2003-01-20 浮動小数点演算装置 Expired - Fee Related JP4163967B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003011373A JP4163967B2 (ja) 2002-06-20 2003-01-20 浮動小数点演算装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002180630 2002-06-20
JP2003011373A JP4163967B2 (ja) 2002-06-20 2003-01-20 浮動小数点演算装置

Publications (2)

Publication Number Publication Date
JP2004078886A JP2004078886A (ja) 2004-03-11
JP4163967B2 true JP4163967B2 (ja) 2008-10-08

Family

ID=32032581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003011373A Expired - Fee Related JP4163967B2 (ja) 2002-06-20 2003-01-20 浮動小数点演算装置

Country Status (1)

Country Link
JP (1) JP4163967B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148371B (zh) * 2019-06-27 2023-10-24 北京地平线机器人技术研发有限公司 基于单指令多数据流的数据运算方法、装置、介质和设备
CN113593538B (zh) * 2021-09-02 2024-05-03 北京声智科技有限公司 语音特征的分类方法、相关设备及可读存储介质
CN117289851A (zh) * 2022-06-16 2023-12-26 加特兰微电子科技(上海)有限公司 数据存储位宽的确定方法及装置、存储指数数据的方法

Also Published As

Publication number Publication date
JP2004078886A (ja) 2004-03-11

Similar Documents

Publication Publication Date Title
US7188133B2 (en) Floating point number storage method and floating point arithmetic device
KR102430645B1 (ko) 독립형 부동소수점 변환장치
US5995991A (en) Floating point architecture with tagged operands
US8639737B2 (en) Method to compute an approximation to the reciprocal of the square root of a floating point number in IEEE format
JP2884057B2 (ja) 数値フォーマット変換装置
Murillo et al. Comparing different decodings for posit arithmetic
JP2689414B2 (ja) 浮動小数点表現変換器
KR20020063058A (ko) 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치
JP4273071B2 (ja) 除算・開平演算器
KR970006408B1 (ko) 논리회로의 자동설계방법 및 그 장치와 승산기
GB2549153B (en) Apparatus and method for supporting a conversion instruction
JP4163967B2 (ja) 浮動小数点演算装置
KR19980082906A (ko) 부동 소수점 숫자의 정수형으로의 변환 방법
Yadav et al. Design of 32-bit floating point unit for advanced processors
Trivedi et al. A Review on Single Precision Floating Point Arithmetic Unit of 32 bit Number
CN117827145B (zh) 浮点运算装置及其处理方法、信息处理系统、硬件加速器
JP2795253B2 (ja) 除算器
JP4643951B2 (ja) 剰余系の被変換数を2進数に変換する変換装置及び変換方法
JP2972326B2 (ja) 平方根計算装置
KR20230015844A (ko) 극소 검출
JP4428778B2 (ja) 演算装置及び演算方法並びに計算装置
JP2000081968A (ja) 逆数演算装置
Villalba-Moreno Digit recurence division under HUB format
JP2002344316A (ja) 非線形量子化装置および非線形量子化方法、並びに非線形量子化プログラム
JPH0540609A (ja) 浮動小数点除算装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051012

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080701

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080725

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110801

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4163967

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110801

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120801

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130801

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees