JPWO2005024625A1 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JPWO2005024625A1
JPWO2005024625A1 JP2005508741A JP2005508741A JPWO2005024625A1 JP WO2005024625 A1 JPWO2005024625 A1 JP WO2005024625A1 JP 2005508741 A JP2005508741 A JP 2005508741A JP 2005508741 A JP2005508741 A JP 2005508741A JP WO2005024625 A1 JPWO2005024625 A1 JP WO2005024625A1
Authority
JP
Japan
Prior art keywords
data
rounding
bit
shifter
shift
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.)
Granted
Application number
JP2005508741A
Other languages
English (en)
Other versions
JP4243277B2 (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.)
Hitachi Solutions Technology Ltd
Original Assignee
Hitachi ULSI Systems 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 Hitachi ULSI Systems Co Ltd filed Critical Hitachi ULSI Systems Co Ltd
Publication of JPWO2005024625A1 publication Critical patent/JPWO2005024625A1/ja
Application granted granted Critical
Publication of JP4243277B2 publication Critical patent/JP4243277B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

効率的な回路構成で丸め処理のオーバヘッド低減でき、固定小数点演算器を用いた情報処理装置の数値演算精度を効率的に向上することのできるデータ処理装置である。 このデータ処理装置は、右ビットシフト演算機能を有するシフタ(10)と、2つの入力データの加算に、最下位ビットに1ビットデータを加算するキャリーイン機能を有するALU(50)とを含んで構成されたプロセッサと、プロセッサを単一命令で制御する制御ユニット(200)とで構成されるデータ処理装置であって、シフタ(10)は、シフト演算結果のデータを出力すると同時に、右ビットシフトの場合に切り捨てられるビットについて丸め評価をしてシフト演算結果の最下位ビットに“1”加算が必要か否かを示す1ビットデータを出力する丸め評価回路(110)を有し、ALU(50)は、2入力データの内の一方をシフタ(10)の出力データとし、キャリーイン機能で用いるデータをシフタの丸め評価回路(110)が出力する1ビットデータとする。

Description

本発明は、データ処理装置に関し、特にプロセッサエレメントにおける固定小数点演算器で、効率的なハードウェア構成により丸め演算を実現する技術に関する。
動画圧縮を含めた画像処理は、比較的単純な計算アルゴリズムの反復であり、同一命令に対するデータ並列性が大きい。そのため、画像処理の高速化には、SIMD(Single Instruction Multiple Data stream)型並列計算手法が適する。
動画圧縮規格としては、MPEG(ISO/IEC14496−2(MPEG4),ISO/IEC13818−2(MPEG2),ISO/IEC11172−2(MPEG1))が知られている。この動画圧縮規格によれば、デジタル化された画像をブロック分割して各ブロック毎に動きベクトルを検出し、DTC(離散コサイン変換)、及び量子化を施し、ハフマン符号化して画像データを圧縮する。
SIMD型並列計算アーキテクチャをMPEG動画圧縮に適用すると、複数のプロセッサを上記画像ブロックの計算単位とすることがきる。すなわち、動きベクトル検出では、検出範囲のシフトブロックを複数プロセッサのローカルメモリに配置し、制御系から圧縮対象のブロックを全プロセッサにブロードキャストしてフレーム差を並列演算することで、プロセッサ数倍の高速化が期待できる。また、圧縮対象のブロック画像あるいは検出した動きベクトル位置とのブロック単位のフレーム差データを複数プロセッサのローカルメモリに配置し、DCT(あるいはIDCT)あるいは量子化(あるいは逆量子化)の計算を並列演算することで、プロセッサ数倍の高速化が期待できる。
本発明者らの検討によれば、上記した技術では、固定小数点形式のデータについて、乗算によって変更されるビット数の調整あるいは加減算で整数部の有効桁数を調整するための小数点位置の変更は、プロセッサ内のシフタで行われる。このとき、乗算結果を所定のデータ幅に縮小するためにLSB側のビットを削除あるいはシフタによる右ビットシフトする場合には、演算精度の劣化を避けるためにデータのLSBに対して丸め処理が必要である。
丸め処理には、浮動小数点形式の規格であるIEEE754において、演算の途中結果を仮数部の所定ビットに丸めて出力するために定められた方法がある。本規格によれば、最近値丸め、−∞方向丸め、+∞方向丸め、及び0方向丸めの4種の方法があり、アプリケーションは必要な精度に応じて何れかの丸め方法(以下丸めモードと記載する)を選択可能とされる。
上記した技術では、ハード的には単に切り捨てのために、データは−∞方向の丸めとなる。その他の最近値丸め、+∞方向丸め、あるいは0方向丸めを用いるためには、プログラムの記述によってソフト的に行う必要がある。すなわち、プログラムの記述によって、所望の丸め方法に応じて切り捨てるビットを調べその状態について判断し丸める最下位ビットに1を加算するように動作させる。
しかしながら、プログラムによる上記丸め処理の実現では、切り捨てるビットを評価するためのシフト演算と、その状態を判断するためのALU(算術論理演算ユニット)によるコンディションコードの取得処理が必要となる。
そのため、ハード的に無策な−∞方向の場合には、例えばパイプライン処理によって見かけ上の1データを1ステップで処理可能とされる演算であっても、その他の最近値丸め、+∞方向丸め、あるいは0方向丸めを用いる場合には丸めのための処理ステップが必要となり、速度性能が劣化する。特に、SIMD型並列演算器構成では、1つのプログラムに対して複数の演算データが同時に存在するため、データ状態に応じた処理ステップの分岐による高速化は困難であり、全ケースの処理ステップ時間が必要となる。
本発明の目的は、効率的な回路構成で丸め処理のオーバヘッド低減でき、固定小数点演算器を用いた情報処理装置の数値演算精度を効率的に向上することのできるデータ処理装置を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
すなわち、本発明のデータ処理装置は、以下のような特徴を有するものである。
(1)右ビットシフト演算機能を有するシフタと、2つの入力データの加算に、最下位ビットに1ビットデータを加算するキャリーイン機能を有するALUとを含んで構成されたプロセッサと、前記プロセッサを単一命令で制御する制御ユニットとで構成されるデータ処理装置であって、上記シフタは、シフト演算結果のデータを出力すると同時に、右ビットシフトの場合に切り捨てられるビットについて丸め評価をしてシフト演算結果の最下位ビットに“1”加算が必要か否かを示す1ビットデータを出力する丸め評価手段を有し、上記ALUは、2入力データの内の一方を上記シフタの出力データとし、上記キャリーイン機能で用いるデータを上記シフタの丸め評価手段が出力する1ビットデータとするものである。
これにより、異なる小数点位置のデータを加算する場合、整数桁を保証するために、整数桁の少ないデータを右シフトして桁合わせをしてから加算する。上記のように構成したことによって、先ずシフタにおいて桁合わせのための右シフトと同時に丸め処理のための1加算の要否が1ビットデータとして出力でき、次にALUにおいて桁合わせされた2つのデータの加算と同時にこの検出された1ビットデータを加算できるので、右シフトするデータについての丸め処理に要する時間を解消することができる。
また、丸めのための1加算は、従来技術のALUにおけるキャリーイン付き加算機能とすることができるので、シフタへの丸め評価と該結果としての1ビットデータ出力の回路を追加するだけですむ。
(2)上記シフタにおける右シフト演算及び上記ALUにおけるキャリーイン機能の加算は、2の補数形式のデータに対応した演算である。
これにより、上記シフタ及びALUの演算を従来技術である2の補数形式の演算とすることで、符号付き演算に対して、上記同様の構成で丸め処理を実現することができる。例えば、上記シフタ及びALUの演算を制御系からの制御信号に呼応して符号無し演算または符号付き演算の何れかに選択可能とすれば、符号無しデータ及び符号付きデータが混在するような利用目的であっても、上記同様の効果の丸め処理が可能となる。
(3)丸めモード選択手段を有し、上記丸め評価手段は、該丸めモード選択手段
で選択可能な複数の丸めモードの個々に対応した丸め評価を行うものである。
これにより、上記丸め評価回路を、複数の丸めモードに対応させることで、上記同様の構成で所望の丸めモードの丸め処理を実現することができる。例えば、上記丸め評価回路の動作における丸めモードを制御系からの制御信号に呼応して選択可能とすれば、異なる丸めモードを動的に変更して用いるような利用目的に対して、上記同様の効果の丸め処理が可能となる。
(4)上記プロセッサは複数からなり、上記丸めモード選択手段は、上記複数のプロセッサの個々に設けられたデータ記憶手段によって丸めモードを選択するものである。
これにより、上記丸めモードを選択する手段を、プロセッサ毎に設けたレジスタなどの記憶手段とすることで、制御系から複数のプロセッサに対する制御信号の本数を低減できる効果がある。
(5)上記丸め評価は、上記右ビットシフトで切り捨てられるビットの論理和である。
これにより、上記丸め評価の動作を、上記シフタにおける右ビットシフトで切り捨てられるビットの論理和とすることで、符号無しデータあるいは2の補数形式の符号付きデータに対して+∞方向丸め(切り上げ)を実現することができる。また、符号付き絶対値形式のデータに対して、符号の∞方向丸めを実現することができる。
(6)上記丸め評価は、上記右ビットシフトで切り捨てられるビットの論理和と、シフト演算データの符号との論理積である。
これにより、上記丸め評価の動作を、上記シフタにおける右ビットシフトで切り捨てられるビットの論理和と、シフト演算データの符号との論理積とすることで、2の補数形式の符号付きデータに対して0方向丸めを実現することができる。また、符号付き絶対値形式のデータに対して、−∞方向丸めを実現することができる。
(7)上記丸め評価は、上記右ビットシフトで切り捨てられるビットの内の最上位ビットを除くビットとシフト演算結果の最下位ビットとの論理和と、上記右ビットシフトで切り捨てられるビットの内の最上位ビットとの論理積である。
これにより、上記丸め評価の動作を、上記シフタにおけるシフトで切り捨てられるビットの内の最上位ビットを除くビットとシフト演算結果の最下位ビットとの論理和と、上記右シフトで切り捨てられるビットの内の最上位ビットとの論理積とすることで、符号無しデータ、2の補数形式の符号付きデータあるいは符号付き絶対値形式のデータに対して、最近値丸めを実現することができる。
(8)1つの半導体基板に構成されたものである。
上記データ処理装置によれば、さらに、従来の技術同様に切り捨てを実現するためには、上記丸めモード選択手段によって、上記丸め評価回路から上記ALUへの1ビットデータ出力を常にネゲートする状態を設ければよい。このとき、2の補数形式の符号付きデータに対して−∞方向丸めとして動作する。また、符号無しデータあるいは符号付き絶対値形式のデータに対して0方向丸め(切り捨て)として動作する。
上記のごとく丸め評価回路を設けたことによるシフタの端子追加は、モード指定の信号とALUへの1ビットデータ出力信号だけですむ。また、シフタに追加する丸め評価回路が、複数の丸めモードに対応させたとしても、切り捨てるビットの論理和を共通にすることができるので回路規模は少なくてすむ。
以上のように、効率的な回路構成で丸め処理のオーバヘッド低減を達成する。
図1は、本発明の一実施の形態である丸め処理を実現する回路構成を示すブロック図である。
図2は、図1のシフタの詳細な回路構成を示すブロック図である。
図3は、図2の丸め評価回路における動作の真理値表を示す図である。
図4は、図1の回路構成を含んだSIMD型の並列DSPの構成を示す図である。
図5は、図2,図3のシフタにシフトビット数を指定する記憶手段を追加する構成を示す図である。
図6は、図4のデータ演算実行部の別の構成を示す図である。
図7は、図6のシフタの詳細な回路構成を示すブロック図である。
図8は、図7の丸め評価回路における動作の真理値表を示す図である。
図9は、従来のデータ処理装置に本発明の丸め処理を適用した構成を示す図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には同一の符号を付し、その繰り返しの説明は省略する。
図1は、本発明の一実施の形態である丸め処理を実現する回路構成を示すブロック図である。
図1において、nはデータ信号のビット数を表し、例えば32ビットとすることができる。
シフタ10は、シフタ入力ラインを介して、汎用レジスタファイル20または外部から択一的に伝達されたnビットデータについて、シフト演算し、結果をnビットのシフタ出力ラッチ30に出力する。同時に、丸め評価結果を1ビットのラッチr40に出力する。
ここで、シフタ入力ラインでのデータの選択は、図示しないが、例えば、外部から与えられる制御信号などで為される。
シフタ10におけるシフト演算は、左右m(<n)ビットシフトの算術・論値シフト機能を有し、図示しないが、例えば、外部から与えられる制御信号などで指定された演算が為される。
算術シフトと論理シフトの相違は、算術シフトが入力データを2の補数形式の2進数としたシフトであって、シフト演算による符号(MSBビット)が変更されない点である。すなわち、右シフトの場合、算術シフトでは出力データの上位シフトビット数には符号ビット(入力のMSBビット)が詰められ、論理シフトでは0が詰められる。
左シフトの場合、出力データの下位シフトビット数には算術及び論理シフト共に0が詰められるが、算術シフトでは入力データの上位のシフトビット数+1ビットが同じでない入力データに対してオーバフロー処理が為され、入力データの符号に等しい最大値(32ビットの場合、正の最大値はH’7fffffff、負の最大値はH’80000000、ただしH’は16進数を表すための接頭詞)が出力される。
さらに、シフタ10は丸め評価機能を有し、右シフトで右にあふれるビットを上記右シフト演算結果の出力データに丸めるために1加算が必要な場合にはラッチr40に1を出力し、それ以外の場合にはラッチr40に0を出力する。
ALU50は、ALU入力▲1▼ラインを介して、シフタ出力ラッチ30、汎用レジスタファイル20または外部から択一的に伝達された第1のnビットデータまたは定数“0”と、ALU入力▲2▼ラインを介して、累積加算レジスタΣR60または汎用レジスタファイル20から択一的に伝達された第2のnビットデータまたは定数“0”と、セレクタ90により1ビットのラッチr40またはラッチCO70から選択された1ビットデータとについて、算術論理演算し、結果をnビットのALU出力ラッチ80及び累積加算レジスタΣR60に出力する。
同時に、最上位ビットからの桁上がり(キャリーアウト)を1ビットのラッチCO70に出力する。ここで、ALU入力▲1▼ライン及びALU入力▲2▼ラインでのデータの選択、定数0の選択、及び1ビットデータの選択は、図示しないが、例えば、外部から与えられる制御信号などで為される。
ALU50における算術・論理演算は、算術演算としての加減算、及び論理演算機能を有し、図示しないが、例えば、外部から与えられる制御信号などで指定された演算が為される。算術演算は、上記第1のデータと第2のデータを2の補数形式の2進数とした符号付き加減算、または上記第1のデータと第2のデータを符号無し2進数とした符号無し加減算であり、さらに、これら2つの加減算において、最下位ビット(LSB)に1ビットデータを同時に加算するキャリーイン機能が選択可能である。
論理演算は、特に制限されないが、上記第1のデータと第2のデータの各対応するビットについての、論理和、論理積、排他的論理和、論理和反転、論理積反転、または排他的論理和反転である。
累積加算レジスタΣR60は、図示しないが、例えば、外部から与えられる制御信号などに呼応してALU50が出力するnビットデータが書き込まれる。
汎用レジスタファイル20は、特に制限されないが、nビット×複数ワードのレジスタ群について1入力2出力で構成され、図示しないが、例えば、外部から与えられる制御信号などで指定されたレジスタへの書き込みと読み出しが為される。
すなわち、上記制御信号に呼応して、RF書込ラインを介して、シフタ出力ラッチ30あるいはALU出力ラッチ80から択一的に伝達されたnビットデータが、制御信号に含まれる汎用レジスタアドレス1(RFA1)で指定されたレジスタに書き込まれる。
また、汎用レジスタファイル20の2つの出力の内、一方は、上記制御信号に含まれる汎用レジスタアドレス0(RFA0)で指定されたレジスタのデータが出力され、シフタ入力ライン及びALU入力▲1▼ラインに伝達される。他方は、上記汎用レジスタアドレス1(RFA1)で指定されたレジスタのデータが出力され、ALU入力▲2▼ライン及び外部に伝達される。なお、汎用レジスタアドレス1(RFA1)で指定されたレジスタについて、上記書き込みが為される場合、上記出力データは書き込み前のデータとなる。
次に、上記図1の回路構成例による丸め処理を用いた動作について、以下例題で説明する。
まず、例題として、汎用レジスタファイル20に格納された固定小数点位置が異なる3つの2の補数形式の2進数A,B,Cを加算し、汎用レジスタファイル20に格納する場合の動作を説明する。
ここでは、説明を簡単するため、データ幅n=32ビットとし、データの固定小数点位置を、データ名(整数ビット数.小数ビット数)、で表すとき、上記3つのデータの固定小数点位置をA(10.22)、B(1.31)、C(15.17)とし、加算結果Xの固定小数点位置をX(16.16)とする。
[処理ステップ1]
汎用レジスタファイル20に対して、A(10.22)が格納されているアドレスをRFA0で指定してA(10.22)を出力させる。
同時に、シフタ入力ラインに対して、汎用レジスタファイル20を選択し、シフタにA(10.22)を伝達する。
同時に、シフタ10に対して、右6ビット算術シフト演算を指定する。
以上による制御で、処理ステップ1では、A(10.22)を右6ビット算術シフトしたデータがシフタ出力ラッチ30に出力され、同時に切り捨てられる6ビットについての丸め評価結果がラッチr40に出力される。
[処理ステップ2]
汎用レジスタファイル20に対して、B(1.31)が格納されているアドレスをRFA0で指定してB(1.31)を出力させる。
同時に、シフタ入力ラインに対して、汎用レジスタファイル20を選択し、シフタにB(1.31)を伝達する。
同時に、シフタ10に対して、右15ビット算術シフト演算を指定する。
同時に、ALU入力▲1▼ラインに対して、シフタ出力ラッチ30を選択し、ALU50の第1のデータとして処理ステップ1でのAのシフト結果を伝達する。
同時に、ALU入力▲2▼ラインに対して、定数0を選択し、ALU50の第2のデータを0とする。
同時に、ALU50に対して、キャリーインをラッチr40とするキャリーイン機能付き符号付き加算演算を指定する。
同時に、累積加算レジスタΣR60に対して、書き込みを指定する。
以上による制御で、処理ステップ2では、B(1.31)を右15ビット算術シフトしたデータがシフタ出力ラッチ30に出力され、同時に切り捨てられる15ビットについての丸め評価結果がラッチr40に出力される。また、ALU50によって、A(10.22)をA(16.16)に桁合わせする際のLSB側6ビットに対する丸め処理がされ、累積加算レジスタΣR60に出力される。
[処理ステップ3]
汎用レジスタファイル20に対して、C(15.17)が格納されているアドレスをRFA0で指定してC(15.17)を出力させる。
同時に、シフタ入力ラインに対して、汎用レジスタファイル20を選択し、シフタ10にC(15.17)を伝達する。
同時に、シフタ10に対して、右1ビット算術シフト演算を指定する。
同時に、ALU入力▲1▼ラインに対して、シフタ出力ラッチ30を選択し、ALU50の第1のデータとして処理ステップ2でのBのシフト結果を伝達する。
同時に、ALU入力▲2▼ラインに対して、累積加算レジスタΣR0を選択し、ALU50の第2のデータとして処理ステップ2でのAの丸め処理結果を伝達する。
同時に、ALU50に対して、キャリーインをラッチr40とするキャリーイン機能付き符号付き加算演算を指定する。
同時に、累積加算レジスタΣR60に対して、書き込みを指定する。
以上による制御で、処理ステップ3では、C(15.17)を右1ビット算術シフトしたデータがシフタ出力ラッチ30に出力され、同時に切り捨てられる1ビットについての丸め評価結果がラッチr40に出力される。また、ALU50によって、B(1.31)をB(16.16)に桁合わせする際のLSB側15ビットに対する丸め処理と、処理ステップ2で桁合わせされたA(16.16)への加算が同時にされ、累積加算レジスタΣR60に出力される。
[処理ステップ4]
ALU入力▲1▼ラインに対して、シフタ出力ラッチ30を選択し、ALU50の第1のデータとして処理ステップ3でのCのシフト結果を伝達する。
同時に、ALU入力▲2▼ラインに対して、累積加算レジスタΣR60を選択し、ALU50の第2のデータとして処理ステップ3でのAとBの丸め・加算結果を伝達する。
同時に、ALU50に対して、キャリーインをラッチr40とするキャリーイン機能付き符号付き加算演算を指定する。
以上による制御で、処理ステップ4では、ALU50によって、C(15.17)をB(16.16)に桁合わせする際のLSB側1ビットに対する丸め処理と、処理ステップ2で桁合わせされたA(16.16)とB(16.16)の加算結果への加算が同時にされ、ALU出力ラッチ80に出力される。
[処理ステップ5]
RF書込ラインに対して、ALU出力ラッチ80を選択する。
汎用レジスタファイル20に対して、X(16.16)を格納するアドレスをRFA1で指定して、書き込みを指定する。
以上による制御で、処理ステップ5では、A、B及びCについて(16.16)に丸め処理を施して桁合わせした加算結果が汎用レジスタファイル20に出力され、目的とされるX(16.16)を得る。
以上、説明したように、固定小数点位置が異なる複数データの加算について、データ数に等しい処理ステップとパイプラインのための2ステップのオーバヘッドで処理することができ、桁合わせで発生する切り捨てビットに対する丸め処理のための処理ステップを解消することができる。
次に、図1のシフタ10の詳細な回路構成について説明する。
図2は、図1のシフタの詳細な回路構成を示すブロック図である。
図2において、バレルシフタ100は、シフタ入力ラインのnビットデータについて、制御信号に従ってシフト演算してnビット出力する。
制御信号の内、算術シフト/論理シフト選択信号は、特に制限されないが、バレルシフタ100に対して0が算術シフト、1が論理シフトを指示する。
シフトビット数は、特に制限されないが、±nを2の補数形式でエンコードした値(mとする)の信号で、正が左シフトビット数、負が右シフトビット数を指示する。
丸めモード選択信号は、丸め評価回路110に対して丸めモードを指示する信号で、特に制限されないが、2ビットとされ、B’00が−∞方向丸め、B’01が+∞方向丸め、B’10が0方向丸め、B’11が最近値丸めを指示する。(ただしB’は2進数を表すための接頭詞)
ここで、−∞方向丸めとは、真値(入力データが表す値)より大きくない最近値(出力データの固定小数点位置で表現可能な値の内で、条件を満たした最も近い値)に丸める方式の丸めモードである。
+∞方向丸めとは、真値より大きくない最近値に丸める方式の丸めモードである。
0方向丸めとは、真値の絶対値より大きくない最近値に丸める方式の丸めモードである。
最近値丸めとは、無条件に最近値に丸める方式の丸めモードである。ただし、2つの最近値が真値から等距離にある場合、LSBが“0”となる最近値に丸める。
丸め評価回路110は、上記シフトビット数mの指示が右シフトビット数(m<0)である場合、入力データの下位の|m|ビット(すなわち切り捨てられるビット)を、上記シフト結果(バレルシフタ100の出力)に丸めるために1加算が必要か否かを、上記丸めモード選択信号で指示された丸めモードで評価し、1加算が必要な場合は1、不要な場合は0を示す1ビットを出力する。
図3には、上記図2の丸め評価回路110における動作の真理値表が示される。
図3に示す真理値表に基づき、評価結果としての1ビット出力信号Rを、丸めモード毎の論理式で表記すれば以下になる。
▲1▼−∞方向丸め:R=0
▲2▼+∞方向丸め:R=(切り捨てられるビットの論理和)
=(入力データの第|m|−1ビット 〜 第0ビットの論理和)
▲3▼0方向丸め:R=(入力データが負)∩(切り捨てられるビットの論理和)
=(入力データのMSB)∩(入力データの第|m|−1ビット 〜 第0ビットの論理和)
▲4▼最近値丸め:R=(切り捨てられるデータの内の最上位ビット)
∩ {((切り捨てられるデータの内の最上位を除くビット)∪(出力データのLSBとなるビット)}
=(入力データの第|m|−1ビット)∩{(第|m|−2ビット〜第0ビットの論理和)∪(入力データの第|m|ビット)}
ここで、上記論理式において、「∪」は論理和、「∩」は論理積を意味する。また、「第iビット」は入力データのLSBを0、MSBをn−1として各ビットに0からn−1まで連続する整数で番号付けたときに番号iとなる位置のビットを示す。
以上、図2〜3で説明したように、シフタ10に丸め機能を設けたことによりシフタブロックに追加される端子は、丸めモード選択信号と評価結果としての1ビット出力信号だけですみ、これにより、例えば、半導体基板上に回路をブロック分割して実装する場合のブロック間配線を最小限にすることができる。さらに、丸めモードの複数に対応したとしても、上記論理式における(第|m|−2ビット〜第0ビットの論理和)などの論理の共通化ができるので、実装面積の増大を抑えることができるという効果がある。
次に、図1の回路構成を含んで構成されるプロセッサの複数と、これらのプロセッサを制御する1つの制御ユニットとで構成されるSIMD型の並列DSPの構成について説明する。
図4は、図1の回路構成を含んだSIMD型の並列DSPの構成を示す図であり、例えば半導体基板上に構成される。
図4において、制御ユニット200は、特に制限されないが、プログラムメモリ210を含んだプログラム実行制御部220と、データメモリ230を含んだデータ制御部240とを含んで構成される。
これらのプログラムメモリ210及びデータメモリ230には、外部からのデータの入出力が可能であり、外部から設定された計算手順(計算アルゴリズム)に従った情報処理が可能である。
プロセッサアレイ250は、同一構成のプロセッサ260の複数で構成され、全プロセッサ260は、命令バス、ブロードキャストデータバス、及びトライステートバッファを介した共通データバスで制御ユニット200に接続される。
また、各プロセッサ260には、各プロセッサ260に対応して設けられたトライステートバッファの制御と共通のプロセッサ選択信号が入力され、制御ユニット200によって常に唯一のプロセッサ260が選択される。
プロセッサ260は、プロセッサ制御部270とデータ演算実行部280を含んで構成される。
データ演算実行部280は、例えば、図1記載の回路構成とすることができる。
プロセッサ制御部270は、制御ユニット200から命令バスを介して与えられる命令に基づき、データ演算実行部を制御する。
制御ユニット200内のプログラム実行制御部220が処理ステップに同期して出力する命令は、例えば、VLIW(Very Long Instruction Word)方式とされ、各部の動作が水平に制御される。すなわち、制御ユニット200が出力する各ステップの命令には各部に対応したフィールドが設けられ、1ステップで複数の機能ブロックを水平に制御することができる。
上記命令の内、プロセッサ260に対する命令(プロセッサ命令フィールド)は、命令バスを介して全プロセッサ260に伝達される。すなわち、制御ユニット200は、全プロセッサ260を同一の命令で制御する。
プロセッサ260に伝達された上記プロセッサ命令フィールドは、プロセッサ260内のプロセッサ制御部270に伝達される。
プロセッサ制御部270は、上記伝達されたプロセッサ命令フィールドの内、プロセッサ制御部270に対する命令(プロセッサ制御部命令フィールド)に従って動作し、データ演算実行部280に対する命令(データ演算実行部命令フィールド)をデータ演算実行部280に伝達する。
このとき、プロセッサ制御部270は、プロセッサ制御部命令フィールド内の命令でアドレスマスク実行指示がある場合には、データ演算実行部命令フィールドの内の全ての書き込み命令をプロセッサ選択信号のネゲートでマスクして、データ演算実行部280に伝達する。これによって、プロセッサ260の1つを選択して動作させることが可能であり、例えば、データ演算実行部280内の汎用レジスタファイル20に対して、各プロセッサ固有のデータを設定することができる。
また、プロセッサ制御部270には、データ演算実行部280よりコンディションコード信号(CC)が入力される。プロセッサ制御部270は、プロセッサ制御部命令フィールド内の命令でグループマスク実行指示がある場合には、データ演算実行部命令フィールドの内の全ての書き込み命令を、指定されたコンディションコード信号でマスクして、データ演算実行部280に伝達する。
このコンディションコード信号は、特に制限されないが、データ演算実行部280の演算状態を示す信号であり、図1におけるALU50からラッチCO70を介して出力される桁上がり(キャリーアウト)信号であり、さらに、図1の図示しないが、上記桁上がり信号と同様にALU50からラッチ80を介して出力される符号(データのMSB)信号、零(演算結果が0であるときアサートされる)信号、及びオーバフロー(MSBの桁上がり信号とMSB−1ビットの桁上がり信号の排他的論理和)信号である。
これによって、プロセッサ260の内部状態に応じた動作が可能であり、例えば演算結果が負であったプロセッサ260のみグループマスクして、このデータを0からの減算で符号反転することにより絶対値をとるといった条件実行が可能である。
プロセッサ260内のデータ演算実行部280に伝達されるデータ演算実行部命令フィールドには、シフタ10に対するシフタ命令フィールド、ALU50に対するALU命令フィールド及び汎用レジスタファイル20に対する汎用レジスタファイル命令フィールドがあり、図1記載の回路構成の各機能ブロックを制御して、上記処理ステップ1〜5に例示した丸め処理を実現することができる。
ここで、図2に記載したシフタ内の丸め評価回路に対する丸めモード選択信号は、上記プロセッサ制御部270に設けられた丸めモード選択レジスタRMR290によって制御される。この丸めモード選択レジスタRMR290には、上記プロセッサ制御部命令フィールド内の命令でRMR書き込み指示がある場合に、ブロードキャストデータバスのデータが書き込まれる。
このとき、特に制限されないが、図2〜3記載の丸めモード選択信号は2ビットのため丸めモード選択レジスタRMR290は2ビット構成とされ、ブロードキャストデータバスから入力するn(例えば32)ビットデータの下位2ビットが書き込まれる。
丸めモードは各処理ステップ毎に変更する用途が少ないため、命令バスに丸めモード選択のためのフィールドを設ける必要がなく、上記丸めモード選択レジスタRMR290によるレジスタ設定とすることができ、これによって、命令バス幅の増大を低減する効果を得る。
上記プロセッサ260の演算結果の外部への取り出しは、上記プロセッサ選択信号で所望のプロセッサ260を選択することによって、該プロセッサ260のトライステートバッファ300がドライブ状態となりデータ共通データバスを介して制御ユニットに出力されることで為される。
以上説明したように、図4記載のSIMD型並列DSPの半導体装置において、1つの制御系から出力される単一の命令とデータについて複数のプロセッサ260が内に持つ固有データとの演算を並列に処理していくことによって、加減算を基本とする並列アルゴリズムを適切な丸め処理による演算で高速に処理することが可能となる。
以上説明した実施の形態では、本発明の丸め処理に焦点を絞って説明したが、利用目的に応じて、種々変更可能であることは言うまでもない。
例えば、上記したSIMD型並列DSPの各プロセッサにおいて、シフト演算のシフトビット数を指定する記憶手段を追加することによって、各プロセッサ固有のデータとすることができる。
図5には、上記図2〜3で説明した本発明によるシフタに、上記シフトビット数を指定する記憶手段を追加する場合の実施例が示される。
図5において、上記記憶手段としてシフトビットレジスタSBR400は、図2記載のシフタにおけるシフトビット数を表現するのに必要なビット数(例えばn=32とするとき6ビット)で構成され、上記データ演算実行部命令フィールド内に追加した書き込み指示に呼応してデータが設定される。
シフトビットレジスタSBR400に書き込むデータは、特に制限されないがALU50の出力データがオーバフロー処理回路410を介して伝達されたデータである。オーバフロー処理回路410は、ALU50の出力であるnビットデータを2の補数形式の2進整数として入力し、シフトビットレジスタSBR400の構成ビット数の2の補数形式の2進整数に上位ビットを丸めて出力する。
すなわち、シフトビットレジスタSBR400の構成ビット数を6ビットとしたとき、ALU50の出力が−31〜31の場合はその値を出力するが、ALU50の出力が32以上の場合(正のオーバフロー)には31を出力し、ALU50の出力が−32以下の場合(負のオーバフロー)には−31を出力する。
また、シフタ10へのシフトビット数の出力は、上記データ演算実行部命令フィールド内の命令と、上記シフトビットレジスタSBR400とから、セレクタ420によって選択される。このセレクタ420の制御は、特に制限されないが、例えば、上記データ演算実行部命令フィールド内の命令で指定されたシフトビット数が負の最大値(シフトビット数が6ビットの場合は−32)であるとき、SBR出力を選択し、その他の場合は上記データ演算実行部命令フィールド内の命令で指定されるシフトビット数を選択するように、データのコンペア回路430で為され、コンペア回路30の出力の「0」、「1」により切替が行われる。
上記説明した実施の形態について、画像処理やニューラルネットワークなどの並列アルゴリズムを高速処理するためには、上記プロセッサに、積和演算を高速処理するための乗算器、及びプロセッサ固有のデータをより多く分散配置させるためのローカルメモリを設ければよい。
図6には、図4におけるプロセッサ内のデータ演算実行部の別の回路構成例として、図1に記載した回路構成に乗算器及びローカルメモリLMを追加した回路構成が示される。
図6において、乗算器500は、乗算器入力▲1▼ラインを介して、シフタ出力ラッチ30、汎用レジスタファイル20または外部から択一的に伝達される第1のnビットデータと、乗算器入力▲2▼ラインを介して、汎用レジスタファイル20またはローカルメモリLM510の出力ラッチ520から択一的に伝達された第2のnビットデータとについて、乗算し、結果の2nビット(nが32のとき64ビット)データを乗算器出力ラッチ530に伝達する。ここで、乗算器入力▲1▼ライン及び乗算器入力▲2▼ラインでのデータの選択は、図示しないが、例えば、外部から与えられる制御信号などで為される。
乗算器出力ラッチ530の出力は、シフタ入力ラインに伝達される。
ローカルメモリLM510は、nビット×複数ワードのRAM(Random Access Memory)で構成され、図示しないが、例えば、外部から与えられる制御信号などに呼応して、シフタ出力ラッチ30、ALU出力ラッチ80または外部から択一的に伝達されたnビットデータについて、LMアドレス制御部540内のローカルメモリポインタレジスタLMPR550から伝達されるアドレスに書き込む。または、該アドレスに格納されているデータを後段のローカルメモリ出力ラッチ520に読み出す。
ローカルメモリ出力ラッチ520の出力は、乗算器入力▲2▼ライン、シフタ入力ライン及びALU入力▲2▼ラインに伝達される。
LMアドレス制御部540は、ローカルメモリLM510の書き込み/読み出しアドレス出力するローカルメモリポインタレジスタLMPR550を含み、図示しないが、例えば、外部から与えられる制御信号などに従って、ローカルメモリポインタレジスタLMPR550のインクリメント、ディクリメント、あるいはALU出力ラッチ80から伝達されたデータの書き込みを行う。
ローカルメモリポインタレジスタLMPR550の出力は、ローカルメモリLM510へのアドレスの他に、RF書込ラインに伝達され汎用レジスタファイル20への退避や、ALU50による演算が可能となる。
上記、乗算器500、ローカルメモリLM510、及びLMアドレス制御部540の追加により、図1に記載した機能ブロックの変更点は、乗算器500の出力データ幅に対応して、シフタ600の入力データ幅が増加したことである。
シフタ入力ラインのデータ幅の2nビットについて、上記制御信号で選択されたデータが汎用レジスタファイル20、外部またはローカルメモリ出力ラッチ520のnビットデータの場合には、シフタ入力ラインのMSB側nビットに伝達され、このとき、シフタ入力ラインのLSB側のnビットは0となる。
図7には、図6のシフタの詳細な回路構成を示すブロック図が示される。
図7において、バレルシフタ610は、2nビットの入力データのMSBを基準として、図2に記載のバレルシフタ100と同様のシフト演算を行い、nビット出力する。図2で説明したバレルシフタ100との相違点は、左シフトにおいて、オーバフローが発生しない場合、LSB側シフトビット数の出力が、図2では0であるのに対して、図7のバレルシフタ610では入力データの下位nビットデータの内の上位ビットとした点である。
図8には、図7に記載の丸め評価回路における動作の真理値表が示される。図7の上記説明したバレルシフタ610は、入力の2nビットデータについてMSBを基準にしてシフトしてnビットを出力するため、左ビット(0ビットシフトを含む)でも切り捨てビットが発生する。これに対応して、図7における丸め評価回路620は、図2における丸め評価回路110の動作に対して、シフト演算のシフト方向によらず(すなわち常に)、2nビット入力データの内の切り捨てビットを評価する点が異なる。
以上により、画像処理あるいはニューラルネットワークなどの並列アルゴリズムを、1つの制御系と複数のプロセッサで構成されるSIMD型並列DSPで高速に処理する情報処理装置に、比較的小規模の回路追加で処理ステップの増加なく丸め処理機能を組み込むことができ、このことが、固定小数点演算器を用いた情報処理装置の数値演算精度を効率的に向上するという本発明の目的を達成する。
図9には、従来のデータ処理装置に本発明の丸め処理を適用した構成が示される。
図9において、データ処理装置を構成するプロセッサは、演算ユニット11、ローカルメモリユニット12、及びトライステートバッファ13とを含む。
演算ユニット11は、本実施の形態の丸めモード選択レジスタRMR290を含むプロセッサ制御回路1101、ラッチ回路1102,1105,1107,1112,1114、汎用レジスタファイル1103、乗算来1104、本実施の形態のCOレジスタ70を含むコンディションコードレジスタ(CCR)1106、累積レジスタ1108、本実施の形態のALU(算術論理演算ユニット)50及びセレクタ90、SBR(シフトビットレジスタ)1110、本実施の形態のシフタ10及びタッチr40、差分絶対値演算器1113を含む。
ローカルメモリユニット12は、ローカルメモリ(LM0,LM1)1202,1204、ローカルメモリ1202のアドレス信号を生成するためのアドレス演算回路1201、ローカルメモリ1204のアドレス信号を生成するためのアドレス演算回路1203、セレクタ1205,1206,1207,1208,1209を含む。
また、図9に示すデータ処理装置の動作は、シフタ10、ラッチr40、ALU(算術論理演算ユニット)50、及びセレクタ90は、本実施の形態で説明した動作をし、その他の動作については、特願2003−23076号に示されるデータ処理装置の動作と同様である。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
本願発明によって開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下の通りである。
シフタに丸め評価機能を設けたことによりシフタブロックに追加される端子は、丸めモード選択信号と評価結果としての1ビット出力信号だけですみ、効率的な回路構成で丸め処理のオーバヘッド低減できるので、固定小数点演算器を用いた情報処理装置の数値演算精度が効率的に向上する。
1個プロセッサ、すなわち一般的なDSPに適用することができ、SIMD型並列DSPをはじめとするDSPを搭載した半導体装置に応用することができる。
また、浮動小数点演算を処理するための回路構成に応用することができる。
さらには、SHマイコンに代表されるCPUの演算実行部(Execution Unit)に適用することもできる。
その他、丸め処理が必要なデジタル信号処理装置全般にも適用することもできる。

Claims (8)

  1. 右ビットシフト演算機能を有するシフタと、2つの入力データの加算に、最下位ビットに1ビットデータを加算するキャリーイン機能を有するALUとを含んで構成されたプロセッサと、
    前記プロセッサを単一命令で制御する制御ユニットとで構成されるデータ処理装置であって、
    上記シフタは、シフト演算結果のデータを出力すると同時に、右ビットシフトの場合に切り捨てられるビットについて丸め評価をしてシフト演算結果の最下位ビットに“1”加算が必要か否かを示す1ビットデータを出力する丸め評価手段を有し、
    上記ALUは、2入力データの内の一方を上記シフタの出力データとし、上記キャリーイン機能で用いるデータを上記シフタの丸め評価手段が出力する1ビットデータとすることを特徴とするデータ処理装置。
  2. 上記シフタにおける右シフト演算及び上記ALUにおけるキャリーイン機能の加算は、2の補数形式のデータに対応した演算であることを特徴とする請求項1記載のデータ処理装置。
  3. 丸めモード選択手段を有し、上記丸め評価手段は、該丸めモード選択手段で選択可能な複数の丸めモードの個々に対応した丸め評価を行うことを特徴とする請求項1または2記載のデータ処理装置。
  4. 上記プロセッサは複数からなり、上記丸めモード選択手段は、上記複数のプロセッサの個々に設けられたデータ記憶手段によって丸めモードを選択することを特徴とする請求項1乃至3の何れか1項に記載のデータ処理装置。
  5. 上記丸め評価は、上記右ビットシフトで切り捨てられるビットの論理和であることを特徴とする請求項1乃至4の何れか1項に記載のデータ処理装置。
  6. 上記丸め評価は、上記右ビットシフトで切り捨てられるビットの論理和と、シフト演算データの符号との論理積であることを特徴とする請求項2乃至4の何れか1項に記載のデータ処理装置。
  7. 上記丸め評価は、上記右ビットシフトで切り捨てられるビットの内の最上位ビットを除くビットとシフト演算結果の最下位ビットとの論理和と、上記右ビットシフトで切り捨てられるビットの内の最上位ビットとの論理積であることを特徴とする請求項1乃至4の何れか1項に記載のデータ処理装置。
  8. 1つの半導体基板に構成されたことを特徴とする請求項1乃至7の何れか1項に記載のデータ処理装置。
JP2005508741A 2003-08-28 2003-08-28 データ処理装置 Expired - Lifetime JP4243277B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2003/010976 WO2005024625A1 (ja) 2003-08-28 2003-08-28 データ処理装置

Publications (2)

Publication Number Publication Date
JPWO2005024625A1 true JPWO2005024625A1 (ja) 2006-11-02
JP4243277B2 JP4243277B2 (ja) 2009-03-25

Family

ID=34260081

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005508741A Expired - Lifetime JP4243277B2 (ja) 2003-08-28 2003-08-28 データ処理装置

Country Status (2)

Country Link
JP (1) JP4243277B2 (ja)
WO (1) WO2005024625A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104479B2 (en) * 2011-12-07 2015-08-11 Arm Limited Apparatus and method for rounding a floating-point value to an integral floating-point value
CN108510064B (zh) * 2016-04-18 2021-12-10 中国科学院计算技术研究所 包括多个核心处理模块的人工神经网络的处理系统及方法
CN106611216A (zh) * 2016-12-29 2017-05-03 北京旷视科技有限公司 基于神经网络的计算方法及装置
JP6823495B2 (ja) * 2017-02-27 2021-02-03 株式会社日立製作所 情報処理装置および画像認識装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202530A (ja) * 1995-01-24 1996-08-09 Hitachi Ltd 正規化前丸め手段を有する浮動小数点加減算処理装置及び方法
JP2000010762A (ja) * 1998-06-19 2000-01-14 Mitsubishi Electric Corp 浮動小数点演算装置

Also Published As

Publication number Publication date
WO2005024625A1 (ja) 2005-03-17
JP4243277B2 (ja) 2009-03-25

Similar Documents

Publication Publication Date Title
JP3711147B2 (ja) パック・データを処理する1組の命令
JP5273866B2 (ja) 乗算器/アキュムレータ・ユニット
US4758972A (en) Precision rounding in a floating point arithmetic unit
US6032170A (en) Long instruction word controlling plural independent processor operations
US5761103A (en) Left and right justification of single precision mantissa in a double precision rounding unit
US5862067A (en) Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations
US6574651B1 (en) Method and apparatus for arithmetic operation on vectored data
TWI493453B (zh) 提高精確度積和演算之微處理器及其視頻解碼裝置、其方法及其電腦程式產品
WO1997023822A1 (en) A system for providing the absolute difference of unsigned values
KR100465371B1 (ko) 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치
US6243728B1 (en) Partitioned shift right logic circuit having rounding support
JP2001331474A (ja) 単一命令複数データ指示を備えた逆離散コサイン変換の実行方法、圧縮データの伸張方法、圧縮データ信号の伸張装置、並びに、コンピュータ・プログラム製品
JP4243277B2 (ja) データ処理装置
CN116974512A (zh) 浮点运算装置、矢量处理装置、处理器及电子设备
JP2002519957A (ja) 符号関数を処理する方法および装置
US6615228B1 (en) Selection based rounding system and method for floating point operations
US5907500A (en) Motion compensation adder for decoding/decompressing compressed moving pictures
US6594396B1 (en) Adaptive difference computing element and motion estimation apparatus dynamically adapting to input data
JP2004234407A (ja) データ処理装置
CN117372495B (zh) 一种加速数字图像处理中不同位宽点积的计算方法
EP4290364A1 (en) Method and device for variable precision computing
EP4290363A1 (en) Method and device for rounding in variable precision computing
KR100434391B1 (ko) 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법
JP3610564B2 (ja) 情報処理装置
EP1237070A2 (en) Denormalization circuit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060810

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: 20081209

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: 20081226

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4243277

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: 20130109

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term