JP5640081B2 - 飽和を伴う整数乗算および乗算加算演算 - Google Patents

飽和を伴う整数乗算および乗算加算演算 Download PDF

Info

Publication number
JP5640081B2
JP5640081B2 JP2012513148A JP2012513148A JP5640081B2 JP 5640081 B2 JP5640081 B2 JP 5640081B2 JP 2012513148 A JP2012513148 A JP 2012513148A JP 2012513148 A JP2012513148 A JP 2012513148A JP 5640081 B2 JP5640081 B2 JP 5640081B2
Authority
JP
Japan
Prior art keywords
signal
bias
sign
output
input
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.)
Active
Application number
JP2012513148A
Other languages
English (en)
Other versions
JP2012528391A (ja
JP2012528391A5 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2012528391A publication Critical patent/JP2012528391A/ja
Publication of JP2012528391A5 publication Critical patent/JP2012528391A5/ja
Application granted granted Critical
Publication of JP5640081B2 publication Critical patent/JP5640081B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/499Denomination or exception handling, e.g. rounding or overflow
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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/544Methods 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 for evaluating functions by calculation
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

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

Description

本開示は概してデータ処理装置に係り、具体的には演算処理装置に係る。
データ処理装置には、整数または浮動小数点の処理装置などの特殊な演算処理部が含まれる場合がある。演算処理部はグラフィックス処理、デジタルシグナル処理、そして科学アプリケーションに関連するタスクを実行する上で特に有効である。演算処理部は一般的に、命令が特定の数学的計算に関連付けられている事を特徴として、命令を実行する。例えば、演算処理部は乗算、加算、乗加算、行列計算などの算術演算を実行する命令が含まれる場合がある。演算処理部は一般的に、バイナリ浮動小数点形式、バイナリ整数形式のいずれか、または両方を使用して数値を表す。浮動小数点数と整数の数値は、各関連付けられた精度を持ち、特定の値の範囲を表す事が出来、それは数値を表すために使用されるバイナリビット数によって決まる。演算処理部は、サポートされている範囲を超えた数学的演算の結果を表すために、飽和演算を使える。
飽和演算は、算術演算の結果が最小値と最大値の間の一定の範囲に限定されている算術の一種である。また、演算の結果が最大値より大きい場合(オーバーフロー状態と呼ぶ)、演算処理部は表現可能な最大値に対応する結果を出す。また、演算の結果が最小値より小さい場合(アンダーフロー状態と呼ぶ)、演算処理部は表現可能な最小値に対応する結果を出す。飽和演算を使用する事で、計算がオーバーフローまたはアンダーフロー状態のいずれかをもたらす場合に、発生し得るエラーの重大度を軽減出来る。例えば、飽和を使用せずに、計算がサポートされている範囲をオーバーフローした場合、演算処理部は負の値の結果を出す可能性がある。残念な事に、演算処理部が正しい飽和結果を出すために飽和が生じたことを検出する事は、装置の計算性能に悪影響を与える可能性がある。これは、特に結果のサイズ(数を表すために使用されるバイナリビット数)が、被乗数、乗数または加数と同サイズに制限される乗算加算操作で当てはまる。
第1の態様においては、乗算加算器は、第1および第2演算数を受け取るための第1および第2入力、和シグナルを提供するための第1出力、ならびにキャリー・シグナルを提供するための第2出力を有する乗算器と、第1および第2演算数の符号ビットを受け取るための第1および第2入力、第3演算数を受け取るための第3入力、バイアス加数シグナルを提供するための第1出力、ならびに第1および第2演算数の積の符号を表すシグナルを提供するための第2出力を有するバイアス加数発生器と、乗算器の第1および第2出力に結合される第1および第2入力、バイアス加数シグナルを受け取るための第3入力、ならびに第1、第2および第3入力の和を表すシグナルを提供するための出力を有する加算器と、加算器の第1出力に結合される第1入力、飽和最小値を受け取るための第2入力、飽和最大値を受け取るための第3入力、制御入力、および飽和シグナルを伴う乗算加算結果を提供するための出力を有するマルチプレクサ(466)と、バイアス発生器の第2出力に結合される第1入力、和の符号を表すシグナルを受け取るための第2入力、およびマルチプレクサの制御入力に結合される出力を有する選択ロジックと、を含む。
第1の態様の1つの実施形態においては、乗算器は、キャリー・セーブ乗算器配列であり、そしてブースの再コーディングを使用することで特徴付けられる。第1の態様の別の実施形態においては、バイアス加数シグナルは和およびキャリー・シグナルと同じビット数を含む。第1の態様のさらなる実施形態においては、第1、第2および第3演算数の各々は符号付き整数を含む。第1の態様のさらに別の実施形態においては、バイアス加数発生器は、第1演算数の符号ビットを受け取るための第1入力、第2演算数の符号ビットを受け取るための第2入力、ならびに第1および第2演算数の積の符号を表す符号シグナルを提供するための出力を有するロジックゲートと、第1バイアスを受け取るための第1入力、第2バイアスを受け取るための第2入力、第3バイアスを受け取るための第3入力、第4バイアスを受け取るための第4入力、ロジックゲートの出力に結合される第1制御入力、第3演算数の符号を受け取るための第2制御入力、ならびに加算器の第3入力に結合されてバイアス加数シグナルを供給するための出力を有するマルチプレクサと、を含む。第1の態様の別の実施形態においては、第1および第2演算数はパックされた演算数を含み、乗算加算器は飽和を伴う類似する複数の乗算加算結果を生成するための複数のセクションを含む。
第2の態様においては、演算処理部は、第1および第2演算数の積を表す和およびキャリー・シグナルを提供するための乗算器と、和シグナル、キャリー・シグナルおよびバイアス・シグナルの和を表す中間結果シグナルを提供するための加算器と、第1および第2演算数の積の符号によって決定される値を有するバイアス・シグナルを提供するためのバイアス発生器と、積の符号および中間結果の符合に応じて、加算器の第1出力シグナルの部分、飽和最小値および飽和最大値の1つを選択するための出力選択回路とを含む。第2の態様の1つの実施形態においては、加算器は、符号拡張加数に基づいて中間結果シグナルをさらに提供する。第2の態様の別の実施形態においては、演算処理部は、第3演算数を符号拡張して符号拡張加数を提供するための符号拡張ロジックをさらに含む。第2の態様のさらなる実施形態においては、第1、第2および第3演算数の各々は符号付き整数を含む。第2の態様のさらに別の実施形態においては、バイアス発生器は、第1および第2演算数の積の符号に応じて負のバイアスおよび正のバイアスの一方をバイアス・シグナルとして提供する。第2の態様のさらなる別の実施形態においては、第1および第2演算数はパックされた演算数を含み、演算処理部は飽和を伴う類似する複数の結果を生成するための複数のセクションを含む。第2の態様の別の実施形態においては、出力選択回路は、第1出力シグナルの部分の最上位ビットをさらに反転する。
第3の態様においては、方法は、第1および第2演算数の積を表す和およびキャリー・シグナルを形成することと、第1および第2演算数の積の符号によって決定される値を有するバイアス・シグナルを形成することと、和シグナル、キャリー・シグナル、符号拡張加数およびバイアス・シグナルの加算に応じて第1出力シグナルを提供することと、積の符号および第1出力シグナルの符合に応じて、第1出力シグナルの部分、飽和最小値および飽和最大値の1つを最終結果として選択することと、を含む。第3の態様の1つの実施形態においては、和およびキャリー・シグナルを形成することは、キャリー・セーブ乗算器配列およびブースの再コーディングを使用して和およびキャリー・シグナルを形成することをさらに含む。第3の態様のさらなる実施形態においては、方法は、和およびキャリー・シグナルの各々のビットサイズと一致するように第3演算数を符号拡張することをさらに含む。第3の態様のさらに別の実施形態においては、バイアス・シグナルを形成することは、第1演算数の符号ビット、第2演算数の符号ビット、第1および第2演算数に基づいて乗算の積の符号を決定すること、ならびに積の符号に基づいて負のバイアスまたは正のバイアスの間で選択すること、に応じてバイアス・シグナルを形成することをさらに含む。第3の態様の更に別の実施形態においては、最終結果は第3演算数と同じバイナリビット数を含む。第3の態様の別の実施形態においては、和およびキャリー・シグナルを形成することは、第1および第2のパックされた演算数の積を表すパックされた和およびキャリー・シグナルを形成することを含む。第3の態様のさらなる実施形態においては、第1出力シグナルを提供することは、和シグナル、キャリー・シグナル、符号拡張加数およびバイアス・シグナルの和として第1出力シグナルを提供することを含み、最終結果は和より少ないバイナリビット数を含む。
本開示は、添付の図面を参照する事により、当業者はより良く理解出来、そしてその多くの特徴および利点は明らになる:
図1は、以前から知られている形で飽和演算を実行する操作が可能な、従来の演算処理部を示すブロック図である。 図2は、本発明の一実施形態に従って、飽和演算を実行する操作が可能な、演算処理部を示すブロック図である。 図3は、図2のバイアス発生器を示す部分回路図であって部分ブロック図である。 図4は、本発明の別の実施形態に従って、飽和演算を実行する操作が可能な、演算処理部を示すブロック図である。 図5は、図4のバイアス加数発生器を示す部分回路図であって部分ブロック図である。 図6は、本発明のさらに別の実施形態による、パックされた演算数の飽和演算を実行する操作が可能な、演算処理部を示すブロック図である。
別の図面での同じ参照符号の使用は、類似または同一の項目を示す。明確にすると、同一名はシグナル、シグナルを通すノード、シグナルで表される情報を示す。
図1は以前から知られている形で、飽和演算を実行する操作が可能な、従来の演算処理部100を示すブロック図である。演算処理部100は、2つの演算数を乗算して積を得ると共に、中間結果を出すために3つ目の演算数に積を加算することによって、乗算加算演算を行う。飽和検出回路は、中間結果を受け取り、計算の最終結果を出す。演算処理部100は、「A」とラベルされた被乗数演算数112、「B」とラベルされた乗数演算数114、「C」とラベルされた加数演算数116、中間結果を出すための乗算加算モジュール120、「結果(RESULT)」とラベルされた最終結果を出す飽和モジュール190を含む。
乗算加算モジュール120は、演算数112を受け取るための第1入力、演算数114を受け取るための第2入力、演算数116を受け取るための第3入力、そして出力を持つ。飽和モジュール190は、乗算加算モジュール120の出力に接続された入力、シグナルRESULTを出す出力、を持つ。演算処理部100は、後続の乗算加算演算の加数として、以前に計算された乗算加算結果を用いて乗算加算演算を実行することも出来る。
演算処理部100は、それぞれが16ビット符号付き整数である演算数A、BとCを受け取る。乗算加算モジュール120によって提供された中間結果は、正確に乗算加算演算の結果を表すための追加ビットを含む。図1で示した本例では、飽和モジュール190によって提供された最終結果は、32ビットの符号付き整数である。飽和モジュール190は、乗算加算モジュール120によって提供された中間結果の値が、32ビットの符号付き整数で表す事が出来るものを超えているかを検出する(オーバーフローまたはアンダーフローと呼ばれる状態)。オーバーフローが発生した場合、飽和モジュール190は、最大の正の32ビット符号付き整数、バイナリ01111...1111を表すシグナルRESULTを生成する。アンダーフローが発生した場合、飽和モジュール190は、最大の負の32ビットの符号付き整数、バイナリ100...0000を表すシグナルRESULTを生成する。乗算加算モジュール120によって提供された中間結果が、サポートされている範囲内であれば、飽和検出モジュール190は、変更されていない中間結果をその出力に出す。
飽和モジュール190は、各演算数のそれぞれの符号と中間結果の符号に基づいて、オーバーフローまたはアンダーフロー状態が発生したかを判定する。しかしながら、最終結果の表現が符号付き16ビット整数に制限される場合、飽和モジュール190の操作はより複雑でかなりの時間がかかる。したがって、演算処理部100の計算性能が低下する。
乗算加算演算のオーバーフローおよびアンダーフローは、演算の最終結果に基づいて決定される。したがって、飽和した乗算加算を実行する事は、飽和した乗算操作に続いて飽和した加算の操作を実行する事とは数学的に等価ではない。例えば、乗算操作は自らサポートされている範囲を超えた積を生成する可能性があるが、加数の加算は最終的な乗算加算結果をサポートされているバイナリビット数で表現可能な値に返す事が出来る。乗算加算演算を特徴付ける4つの可能な例がある:1)乗算の積は結果を表すために割り当てられたビット数を超え、加数の加算は最終結果をサポートされている範囲に戻さない。2)乗算の積は、結果を表すために割り当てられるビット数を超えて加数の加算は、サポートされている範囲に最終結果を戻す。3)乗算の積は、結果を表すために割り当てられるビット数を超えないが、加算の加算はサポートされている範囲を超える値が結果となる。4)乗算の積は、結果を表すために割り当てられるビット数を超えず、加算の加算はサポートされている範囲を超えない値が結果となる。
図2は、本発明の一実施形態に従って、飽和演算を実行する操作が可能な演算処理部200を示すブロック図である。演算処理部200は、乗算加算演算を実行し、バイアス値を提供するためのバイアス発生器を備えている。バイアス値、中間積、加数演算数は共に加算され、図1の飽和モジュール190によって実行される、複雑で時間のかかる操作は、図1の演算処理部100のように結果を大幅に遅延させる事なく、迅速に実行出来る単純な多重化操作に置き換えられる。
演算処理部200は、「A」とラベルされた被乗数演算数212、「B」とラベルされた乗数演算数214、「C」とラベルされた加数演算数216、乗算器220、バイアス発生器240、拡張ロジック250、加算器230、出力選択回路260を含む。
乗算器220は、演算数212を受け取るための第1入力、演算数214を受け取るための第2入力、「キャリー(CARRY)」とラベルされたシグナルを提供するための第1出力、「和(SUM)」とラベルされたシグナルを提供するための第2出力を持つ。バイアス発生器240は、演算数212の符号に対応する「SIGNA」とラベルされたシグナルを受け取るための第1入力、演算数214の符号に対応する「SIGNB」とラベルされたシグナルを受け取るための第2入力、「バイアス(BIAS)」とラベルされたシグナルを提供するための出力、「SIGNPROD」とラベルされた演算数212と演算数214の積の符号を表すシグナルを提供するための出力を持つ。拡張ロジック250は、演算数216を受け取るための第1入力、「CEXT」とラベルされたシグナルを提供するための出力を持つ。加算器230は、シグナルCARRYを受け取るための第1入力、シグナルSUMを受け取るための第2入力、シグナルBIASを受け取るための第3入力、シグナルCEXTを受け取るための第4入力、「IR」とラベルされた中間結果を出すための出力、を持つ。選択回路260は、中間結果シグナルIRを受け取るための第1入力、シグナルSIGNPRODを受け取るための第2入力、「結果(RESULT)」とラベルされた最終結果を出すための出力を持つ。
各演算数212、214および216は、16ビット符号付き整数である。乗算器220は演算数212と演算数214を受け取り、シグナルCARRYで表される32ビットのCARRY値の形にある積と、シグナルSUMで表される32ビットの和を出す。
バイアス発生器240は、被乗数演算数212と乗数演算数214の積の符号に基づいた、シグナルBIASによって表されるバイアス値を提供する。積の符号は、シグナルSIGNAとSIGNBで表される、それぞれの演算数の符号に基づいて決定される。シグナルBIASは、高位17ビットが重要で下位15ビットが各ゼロである事を特徴とする32ビットの情報を含む。拡張ロジック250は、32ビットシグナルCEXTを提供するために加数演算数216を符号拡張し、シグナルSUM、CARRY、BIASのそれぞれに関連付けられたビット数に対応するようにする。
加算器230は、32ビットのバイアス値(シグナルBIAS)、32ビットの符号拡張加数(シグナルCEXT)、2つの32ビット乗算結果(シグナルCARRYとシグナルSUM)を加算し、シグナルIRで表される32ビットの中間結果を出す。一実施形態で加算器230は、1つ以上のキャリー(CARRY)セーブ加算器(CSA)ステージと最後のキャリー(CARRY)伝播加算器(CPA)を含む。別の実施形態では、加算器230に含まれているCSAステージは、乗算器220に含まれているCSAステージと共有出来る。従って、32ビットのバイアス値と符号拡張加数は、乗算器220内に含まれる1つ以上のCSAステージ内で加算(圧縮)出来る。バイアス値は、16ビット符号付き整数に関連付けられた範囲を超えたはずだが32ビットの符号付き整数の範囲内にある全ての結果が、シグナルIRで表される32ビットの中間結果のオーバーフローやアンダーフローの表示を提供するように強制する。つまり、16ビット符号付き整数のオーバーフローやアンダーフローは、32ビットの中間結果の符号と演算数212と214の積の符号に基づいて、簡単に決定出来る。
出力選択回路260は、シグナルSIGNPRODで表される演算数212と演算数214の積の符号、そしてシグナルIRの最上位ビットで表される中間結果の符号を使用して、乗加算演算がオーバーフローまたはアンダーフロー状態をもたらしたかを判断する。中間結果はバイアス値の加算を含むので、出力選択回路260は、32ビットの中間結果に基づいて、必要な16ビットの結果に対応するオーバーフローおよびアンダーフロー状態を容易に検出出来る。演算数212と演算数214の積の符号が1(負)であり、且つ中間結果の符号がゼロ(正)である場合、アンダーフローが発生したものとして、出力選択回路260は、16ビット符号付き整数、バイナリ1000 0000 0000 0000を使用して表現可能な最も負の値にシグナルRESULTを設定する。演算数212と演算数214の積の符号がゼロ(正)であり、且つ中間結果の符号が1(負)である場合、オーバーフローが発生したものとして、出力選択回路260は、16ビット符号付き整数、バイナリ0111 1111 1111 1111を使用して表現可能な最大の正の値にシグナルRESULTを設定する。オーバーフロー、アンダーフローのどちらも発生しなかった場合、出力選択回路260は中間結果の一部に基づいて出力を提供する。具体的には、飽和が発生しなかった場合、最終結果は、ビット15を反転後のシグナルIRで表される中間結果の下位16ビットに等しい。
図3は、図2のバイアス発生器240を示す部分回路図であって部分ブロック図である。バイアス発生器240は、負のバイアス値242、正のバイアス値244、排他的NORゲート246、マルチプレクサ248を含む。排他的NORゲート246は、シグナルSIGNAを受け取るための第1入力、シグナルSIGNBを受け取るための第2入力、シグナルSIGNPRODを提供するための出力を持つ。マルチプレクサ248は、負のバイアス値242を受け取るための第1データ入力、正のバイアス値244を受け取るための第2入力、シグナルSIGNPRODを受け取るための制御入力、シグナルBIASを供給するための出力を持つ。
シグナルSIGNPRODがロジック高位(負)の場合、マルチプレクサ248は負のバイアス値242を選択し、以下のバイナリの値を持つシグナルBIASを生成する。
1000 0000 0000 0000 1000 0000 0000 0000
シグナルSIGNPRODがロジック低位(正)の場合、マルチプレクサ248は正のバイアス値244を選択し、以下のバイナリの値を持つシグナルBIASを生成する。
0111 1111 1111 1111 1000 0000 0000 0000
図4は、本発明の一実施形態に係る、飽和演算を実行する操作が可能な、演算処理部400を示すブロック図である。演算処理部400は、乗算加算演算を実行出来る。図2の演算処理部200とは異なり、演算処理部400は、バイアス発生器240の機能と拡張ロジック250の機能を、「(バイアス加数(BIASEDADDEND)」とラベルされたバイアス加数を形成する単一モジュールに結合する。演算処理部400は、「A」とラベルされた被乗数演算数412と、「B」とラベルされた乗数演算数414と、「C」とラベルされた加数演算数416と、ブース・エンコーダ422およびCSA配列424を含む乗数モジュール420と、バイアス加数発生器440と、3:2コンプレッサー432およびキャリー(CARRY)伝播加算器434を含む加算器430と、飽和最小値462、飽和最大値464、マルチプレクサ466、インバータ450、および選択ロジック468を含む出力選択回路460と、を含む。
乗算器420は、演算数412を受け取るための第1入力、演算数414を受け取るための第2入力、「キャリー(CARRY)」とラベルされたシグナルを提供するための第1出力、「和(SUM)」とラベルされたシグナルを提供するための第2出力を持つ。バイアス加数発生器440は、演算数412の符号に対応する「SIGNA」とラベルされたシグナルを受け取るための第1入力、演算数414の符号に対応する「SIGNB」とラベルされたシグナルを受け取るための第2入力、「加数(ADDEND)」とラベルされたシグナルによって表される加数演算数416を受け取るための入力、「バイアス加数(BIASEDADDEND)」とラベルされたシグナルを提供するための第1出力、演算数412と演算数414の積の符号に対応する「SIGNPROD」とラベルされたシグナルを提供するための第2出力を持つ。加算器430は、シグナルCARRYを受け取るための第1入力と、シグナルSUMを受け取るための第2入力と、シグナルBIASEDADDENDを受け取るための第3入力と、CPA434によって提供された32ビットの中間結果の最下位16ビットに対応する「IR」とラベルされた中間結果を出すための第1出力と、CPA434によって提供された32ビットの中間結果の符号に対応する「SIGNIR」とラベルされたシグナルを提供するための第2出力と、を有する。インバータ450は、シグナルIRのビット15を受け取るための入力と、出力を持つ。マルチプレクサ466は、飽和最小値462を受け取るための第1入力、飽和最大値464を受け取るための第2入力、16ビットの非飽和の結果を受け取るための第3入力、「選択(SELECT)」とラベルされたシグナルを受け取るための制御入力、「結果(RESULT)」とラベルされたシグナルを出力するための出力を持つ。16ビットの非飽和結果の最上位ビットは、インバータ450によって提供され、16ビットの非飽和結果の14〜0のビットは、シグナルIR(14:0)によって提供される。選択ロジック468は、シグナルSIGNIRを受け取るための第1入力、シグナルSIGNPRODを受け取るための第2入力、マルチプレクサ466の制御入力にシグナルSELECTを提供する出力を持つ。
各演算数412、414、416は16ビット符号付き整数である。乗算器420は、演算数412および演算数414を受け取り、シグナルCARRYで表される32ビットのCARRY値の形にある積と、シグナルSUMで表される32ビットの和を出す。乗算器420は、ブース・エンコーダ422を使用して、ブースの再コーディング(Booth’s recoding)として知られるプロセスで部分積を出す。CSA配列424は、シグナルCARRYとSUMを提供するために、これらの部分積を、連続するCSAステージで二つの部分積に縮退する。
バイアス加数発生器440はバイアス値を生成し、32ビットシグナルBIASEDADDENDを提供するために、そのバイアス値を加数演算数416と組み合わせる。バイアス加数発生器440の操作は、下記図5を参照しながらさらに説明する。
コンプレッサ432は、シグナルCARRY、SUMとBIASEDADDENDを受け取り、CPA434に32ビットキャリーと32ビット和シグナルで表されるそれぞれの値の和を提供する。CPA434は、コンプレッサー432により生成されたキャリー/和表現を、単一の32ビットのバイナリ整数で表される結果に変換し、シグナルIRを介してマルチプレクサ466に、この値の最下位16ビットを提供する。選択モジュール468がオーバーフローかアンダーフロー状態のどちらも発生しなかったと判断した場合、シグナルIRによって表される値が乗加算演算の最終結果と等しくなる。
マルチプレクサ466と選択モジュール468の操作は、図2の出力選択回路260を参照して説明したものと同じであり、ここに追加の詳細を示す。選択モジュール468がオーバーフロー状態を検出した場合、選択モジュール468は、マルチプレクサ466がシグナルRESULTを介して飽和最大値464を最終結果として提供するように、シグナルSELECTを介してマルチプレクサ466を設定する。選択モジュール468がアンダーフロー状態を検出した場合、選択モジュール468は、マルチプレクサ466がシグナルRESULTを介して飽和最小値462を最終結果として提供するように、マルチプレクサ466を設定する。選択モジュール468がオーバーフローとアンダーフロー状態のいずれも検出しない場合、選択モジュール468は最終結果として非飽和の結果を出すようマルチプレクサ466を設定する。
図5は、図4のバイアス加数発生器440を示す部分回路図であって部分ブロック図である。バイアス加数発生器440は、図2のバイアス発生器240と拡張ロジック250によって実行される操作を組み合わせ、バイアス値およびそれとは別の符号拡張加数よりはむしろ単一のバイアス加数を提供する。この機能によって、加算器430は3つの値のみの和を計算するのに対し、図2の加算器230は4つの値の和を計算する必要がある。
バイアス加数発生器440は、第1バイアス値510、第2バイアス値520、第3バイアス値530、第4バイアス値540、排他的NORゲート550、マルチプレクサ560を含む。排他的NORゲート550は、シグナルSIGNAを受け取るための第1入力、シグナルSIGNBを受け取るための第2入力、シグナルSIGNPRODを提供するための出力を持つ。マルチプレクサ560は、バイアス値510を受け取るための第1データ入力、バイアス値520を受け取るための第2データ入力、バイアス値530を受け取るための第3データ入力、バイアス値540を受け取るための第4データ入力、シグナルSIGNPRODを受け取るための第1制御入力、加数オペランド416の符号を表す「SIGNC」とラベルされたシグナルを受け取るための第2制御入力、「バイアス(BIAS)」とラベルされたシグナルを提供するための出力を持つ。シグナルBIASは17ビットのバイナリ値であり、32ビットシグナルバイアス加数(BIASEDADDEND)の17ビット上位部分を提供する。シグナルBIASEDADDENDの最下位15ビットは、シグナル加数(ADDEND)の最下位15ビットに基づいて決定される。バイアス加数発生器の操作は、次の表に示される:
Figure 0005640081
このように、シグナルBIASEDADDENDは、バイアス値と加数の符号が無い部分を連結したものである。なお、シグナルBIASEDADDENDのビット15は加数演算数416の符号の逆元である。
図6は、本発明のさらに別の実施形態による、パックされた演算数の飽和演算を実行する操作が可能な、演算処理部600を示すブロック図である。演算処理部600は、「A1、A2、A3、A4」とラベルされた被乗数演算数612、「B1、B2、B3、B4」とラベルされた乗数演算数614、「C1、C2、C3、C4」とラベルされた加数演算数616、乗算器620、バイアス発生器640、拡張ロジック650、加算器630、出力選択回路660、「R1、R2、R3、R4」とラベルされた結果618を含む。
演算処理部600の接続と操作は、図2の演算処理部200に似ているが、例外として演算数612、614、及び616、そして結果618の各々は、それぞれが4つの別個の16ビット符号付き整数を含むパックされた演算数である。パックされた演算数を、複数多重精度演算数と呼ぶ事も出来る。演算処理部600は、4つの乗算加算演算を並行して実行する。例えば、演算処理部600は、R1=(A1×B1)+C1、R2=(A2×B2)+C2、R3=(A3×B3)+C3、及びR4=(A4×B4)+C4の結果を計算する。演算処理部600は、図2の演算処理部200を参照して説明したのと同様の方法で、これらの各計算を個々に実行する。乗算器620は、それぞれが複数の積を表す、128ビットのキャリー・シグナルと128ビットの和シグナルを提供する。バイアス発生器640は、それぞれの計算に対応する一意のバイアス値を提供する。出力選択回路660は、それぞれの計算がオーバフローまたはアンダフローになるかを決定し、必要に応じて表現可能な最大値または表現可能な最小値を置換する。
上記の一般説明で記載されている全ての活動や要素が必須ではない事、特定の活動または装置の一部が不要になる可能性がある事、1つ以上のさらなる活動が行われる可能性がある事、または記載されているものに加えて、要素が含まれる可能性がある事に留意されたい。さらにまた、活動がリストされている順序は、それらが実行される順序とは限らない。
さらに、各概念は特定の実施形態を参照して説明されている。しかしながら、当業者は様々な修正および変更が以下の特許請求の範囲に記載された本開示の範囲から逸脱する事なく行う事が出来る事を理解出来る。それに応じて、仕様および図面は限定的な意味ではなく、例示としてみなされるべきであり、全てのそのような修正は本開示の範囲内に含まれる事が意図されている。
例えば、本明細書中で使用される技法は、乗算演算を行う事が出来るが乗算加算操作ができない乗算器でも使える。この場合においては、加数の入力が省略される。しかしながら、乗算加算演算を行う事が出来る演算処理部は、実行制御部によって、単純な乗算操作を実行するために入力された加数を無効にするよう設定出来る。開示された技術は、乗算または乗算加算演算の結果が、対応する中間積を表すために使用されるビット数よりも少ないビット数の情報を含む場合、いつでも適用出来る。例えば、最終結果を表すために使用されるビット数が、各演算数を表すために使用されるビット数と等しい場合、または最終結果を表すために使用されるビット数が、加数演算数を表すために使用されるビット数と等しい場合に、飽和が必要であるかもしれない。
利点、他の長所、及び問題の解決策は特定の実施形態に関連して上記で説明されている。しかしながら、利点、長所、問題の解決策、および任意の利点、長所、または解決策を生じさせまたはより明白なものにしえるいかなる特徴も、臨界的であるとして、必須であるとして、または任意のもしくは全ての請求項の本質的な特徴として解釈されるべきではない。

Claims (20)

  1. 第1および第2演算数を受け取るための第1および第2入力、和シグナルを提供するための第1出力、ならびにキャリー・シグナルを提供するための第2出力を有する乗算器(420)と、
    前記第1および第2演算数の符号ビットを受け取るための第1および第2入力、第3演算数を受け取るための第3入力、バイアス加数シグナルを提供するための第1出力、ならびに前記第1および第2演算数の積の符号を表すシグナルを提供するための第2出力を有するバイアス加数発生器(440)と、
    前記乗算器の前記第1および第2出力に結合される第1および第2入力、前記バイアス加数シグナルを受け取るための第3入力、ならびに前記第1、第2および第3入力の和を表すシグナルを提供するための出力を有する加算器(430)と、
    前記加算器の前記出力に結合される第1入力、飽和最小値を受け取るための第2入力、飽和最大値を受け取るための第3入力、制御入力、および飽和シグナルを伴う乗算加算結果を提供するための出力を有するマルチプレクサ(466)と、
    前記バイアス加数発生器の前記第2出力に結合される第1入力、前記和の符号を表すシグナルを受け取るための第2入力、および前記マルチプレクサの前記制御入力に結合される出力を有する選択ロジック(468)とを備えた乗算加算器(400)。
  2. 前記乗算器はブースの再コーディング(422)を使用することで特徴付けられるキャリー・セーブ乗算器配列(424)である請求項1の乗算加算器(400)。
  3. 前記バイアス加数シグナルは前記和およびキャリー・シグナルと同じビット数を含む請求項1の乗算加算器(400)。
  4. 前記第1、第2および第3演算数の各々は符号付き整数からなる請求項1,2,3のいずれかの乗算加算器(400)。
  5. 前記バイアス加数発生器(440)は、
    前記第1演算数の符号ビットを受け取るための第1入力、前記第2演算数の符号ビットを受け取るための第2入力、ならびに前記第1および第2演算数の前記積の前記符号を表す符号シグナルを提供するための出力を有するロジックゲート(550)と、
    第1バイアスを受け取るための第1入力、第2バイアスを受け取るための第2入力、第3バイアスを受け取るための第3入力、第4バイアスを受け取るための第4入力、前記ロジックゲートの前記出力に結合される第1制御入力、前記第3演算数の前記符号を受け取るための第2制御入力、ならびに前記加算器の前記第3入力に結合されて前記バイアス加数シグナルを供給するための出力を有するマルチプレクサ(560)と、を備える請求項3の乗算加算器(400)。
  6. 前記第1および第2演算数はパックされた演算数からなり、前記乗算加算器は飽和を伴う類似する複数の乗算加算結果を生成するための複数のセクションを備える請求項1,2,3,5のいずれかの乗算加算器(400)。
  7. 第1および第2演算数のを表す和シグナルおよび第1および第2演算数の積を表すキャリー・シグナルを提供するための乗算器(220)と、
    前記和シグナル、前記キャリー・シグナルおよびバイアス・シグナルの和を表す中間結果シグナルを提供するための加算器(230)と、
    前記第1および第2演算数の積の符号によって決定される値を有する前記バイアス・シグナルを提供するためのバイアス発生器(240)と、
    前記積の前記符号および前記中間結果の符合に応じて、前記加算器の前記中間結果シグナルの部分、飽和最小値および飽和最大値の1つを選択するための出力選択回路(260)と、を備えた演算処理部(200)。
  8. 前記加算器は符号拡張加数に基づいて前記中間結果シグナルをさらに提供する請求項7の演算処理部(200)。
  9. 第3演算数を符号拡張して前記符号拡張加数を提供するための符号拡張ロジック(250)をさらに備えた請求項8の演算処理部(200)。
  10. 前記第1、第2および第3演算数の各々は符号付き整数からなる請求項7,8,9のいずれかの演算処理部(200)。
  11. 前記バイアス発生器(240)は前記第1および第2演算数の前記積の前記符号に応じて負のバイアスおよび正のバイアスの一方を前記バイアス・シグナルとして提供する請求項9の演算処理部(200)。
  12. 前記第1(612)および第2(614)演算数はパックされた演算数からなり、前記演算処理部は飽和を伴う類似する複数の結果(618)を生成するための複数のセクションを備える請求項7,8,9,11のいずれかの演算処理部(200)。
  13. 前記出力選択回路(260,460)は前記中間結果シグナルの前記部分の最上位ビットをさらに反転する(450)請求項7の演算処理部(200)。
  14. 第1(212)および第2(214)演算数のを表す和シグナルおよび第1(212)および第2(214)演算数の積を表すキャリー・シグナルを形成することと、
    前記第1および第2演算数の積の符号によって決定される値を有するバイアス・シグナル(240)を形成することと、
    前記和シグナル、前記キャリー・シグナル、符号拡張加数および前記バイアス・シグナルの加算(230)に応じて第1出力シグナルを提供することと、
    前記積の前記符号および前記第1出力シグナルの符合に応じて、前記第1出力シグナルの部分、飽和最小値(462)および飽和最大値(464)の1つを最終結果として選択することと、を備えた方法。
  15. 前記和およびキャリー・シグナルを形成することは、キャリー・セーブ乗算器配列(424)およびブースの再コーディング(422)を使用して前記和およびキャリー・シグナルを形成することをさらに備える請求項14の方法。
  16. 前記和およびキャリー・シグナルの各々のビットサイズと一致するように第3演算数(216)を符号拡張すること(250)をさらに備えた請求項14の方法。
  17. 前記バイアス・シグナルを形成することは、
    前記第1演算数(212)の符号ビット、
    前記第2演算数(214)の符号ビット、
    前記第1および第2演算数に基づいて前記積の前記符号を決定すること、ならびに
    前記積の前記符号に基づいて負のバイアス(242)または正のバイアス(244)の間で選択すること(248)、に応じて前記バイアス・シグナルを形成することをさらに備える請求項16の方法。
  18. 前記最終結果は前記第3演算数と同じバイナリビット数からなる請求項16又は17の方法。
  19. 前記和およびキャリー・シグナルを形成することは、当該第1および第2のパックされた演算数の積を表すパックされた和およびキャリー・シグナルを形成することを備える請求項14の方法。
  20. 前記第1出力シグナルを提供することは、前記和シグナル、前記キャリー・シグナル、前記符号拡張加数および前記バイアス・シグナルの和として前記第1出力シグナルを提供することを備え、前記最終結果は前記和より少ないバイナリビット数からなる請求項14,15,16,17のいずれかの方法。
JP2012513148A 2009-05-27 2010-05-24 飽和を伴う整数乗算および乗算加算演算 Active JP5640081B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/472,715 US8316071B2 (en) 2009-05-27 2009-05-27 Arithmetic processing unit that performs multiply and multiply-add operations with saturation and method therefor
US12/472,715 2009-05-27
PCT/US2010/035900 WO2010138432A1 (en) 2009-05-27 2010-05-24 Integer multiply and multiply-add operations with saturation

Publications (3)

Publication Number Publication Date
JP2012528391A JP2012528391A (ja) 2012-11-12
JP2012528391A5 JP2012528391A5 (ja) 2013-07-04
JP5640081B2 true JP5640081B2 (ja) 2014-12-10

Family

ID=42299237

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012513148A Active JP5640081B2 (ja) 2009-05-27 2010-05-24 飽和を伴う整数乗算および乗算加算演算

Country Status (6)

Country Link
US (1) US8316071B2 (ja)
EP (1) EP2435904B1 (ja)
JP (1) JP5640081B2 (ja)
KR (1) KR101560340B1 (ja)
CN (1) CN102804128B (ja)
WO (1) WO2010138432A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838664B2 (en) * 2011-06-29 2014-09-16 Advanced Micro Devices, Inc. Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
WO2014105154A1 (en) * 2012-12-24 2014-07-03 Intel Corporation Systems, methods, and computer program products for performing mathematical operations
US20160179530A1 (en) * 2014-12-23 2016-06-23 Elmoustapha Ould-Ahmed-Vall Instruction and logic to perform a vector saturated doubleword/quadword add
US9836278B2 (en) * 2015-05-29 2017-12-05 Huawei Technologies Co., Ltd. Floating point computation apparatus and method
CN109716290B (zh) 2016-10-20 2023-12-19 英特尔公司 用于经融合的乘加的***、装置和方法
US11327718B2 (en) * 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations
CN111610955B (zh) * 2020-06-28 2022-06-03 中国人民解放军国防科技大学 一种数据饱和加打包处理部件、芯片及设备
CN116257207B (zh) * 2022-09-08 2023-10-03 重庆位图信息技术有限公司 一种数据截位方法、模块、计算机设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6211933A (ja) 1985-07-09 1987-01-20 Nec Corp 演算回路
US5623434A (en) 1994-07-27 1997-04-22 Chromatic Research, Inc. Structure and method of using an arithmetic and logic unit for carry propagation stage of a multiplier
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
JP3710193B2 (ja) * 1996-03-11 2005-10-26 沖電気工業株式会社 積和演算回路
JPH1173408A (ja) * 1997-08-29 1999-03-16 Internatl Business Mach Corp <Ibm> 演算処理システム及び演算処理方法
US6223198B1 (en) 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US7870182B2 (en) * 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7882165B2 (en) * 2003-12-29 2011-02-01 Xilinx, Inc. Digital signal processing element having an arithmetic logic unit
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
WO2006059267A2 (en) 2004-12-01 2006-06-08 Koninklijke Philips Electronics N.V. Electronic device having multi operand arithmetic circuitry
US7716266B2 (en) * 2005-02-01 2010-05-11 International Business Machines Corporation Common shift-amount calculation for binary and hex floating point
JP2006227939A (ja) * 2005-02-17 2006-08-31 Matsushita Electric Ind Co Ltd 演算装置
CN100410873C (zh) * 2005-04-12 2008-08-13 威盛电子股份有限公司 分离饱和加减功能以改善处理器管线的关键执行阶段时程
US8082287B2 (en) 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier

Also Published As

Publication number Publication date
WO2010138432A1 (en) 2010-12-02
US8316071B2 (en) 2012-11-20
KR20120017457A (ko) 2012-02-28
EP2435904A1 (en) 2012-04-04
CN102804128A (zh) 2012-11-28
CN102804128B (zh) 2015-08-19
JP2012528391A (ja) 2012-11-12
US20100306301A1 (en) 2010-12-02
EP2435904B1 (en) 2016-05-04
KR101560340B1 (ko) 2015-10-14

Similar Documents

Publication Publication Date Title
JP5640081B2 (ja) 飽和を伴う整数乗算および乗算加算演算
US8229991B2 (en) Processor core and multiplier that support a multiply and difference operation by inverting sign bits in booth recoding
US6779013B2 (en) Floating point overflow and sign detection
JP2002108606A (ja) スティッキービット生成回路及び乗算器
JPH02196328A (ja) 浮動小数点演算装置
JPH0612229A (ja) 乗累算回路
US9146707B2 (en) Generating a fast 3x multiplicand term for radix-8 booth multiplication
US8996601B2 (en) Method and apparatus for multiply instructions in data processors
TWI776213B (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
TWI396130B (zh) 預飽和固定點乘法器
US8234326B2 (en) Processor core and multiplier that support both vector and single value multiplication
US20050228844A1 (en) Fast operand formatting for a high performance multiply-add floating point-unit
JP2010238011A (ja) ベクトル乗算処理装置および方法ならびにプログラム
JP5794385B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2511527B2 (ja) 浮動小数点演算器
KR102208274B1 (ko) 특히 함수 모델을 순수 하드웨어에 기초하여 연산하기 위한 함수 모델 유닛 내에서 사용하기 위한 fma 유닛
JP2010218197A (ja) 浮動小数点積和演算装置、浮動小数点積和演算方法、及び浮動小数点積和演算用プログラム
JPH096595A (ja) 演算結果の表示方法
JPH11296346A (ja) 浮動小数点2進4倍長語フォ―マット乗算命令装置
Liu et al. A multi-functional floating point multiplier
JP2765516B2 (ja) 積和演算器
JP3100868B2 (ja) 浮動小数点数のための算術演算装置
JP3803653B2 (ja) 乗算処理装置
Esmaeildoust et al. High Speed Reverse Converter for the Five Moduli Set {2n, 2n-1, 2n+ 1, 2n-3, 2n-1-1}
JPS6285333A (ja) 浮動小数点乗算器丸め処理方式

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130514

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140903

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141027

R150 Certificate of patent or registration of utility model

Ref document number: 5640081

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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