JP5819380B2 - 入力データ値に応じたfmaユニットにおける電力消費の低減 - Google Patents

入力データ値に応じたfmaユニットにおける電力消費の低減 Download PDF

Info

Publication number
JP5819380B2
JP5819380B2 JP2013218301A JP2013218301A JP5819380B2 JP 5819380 B2 JP5819380 B2 JP 5819380B2 JP 2013218301 A JP2013218301 A JP 2013218301A JP 2013218301 A JP2013218301 A JP 2013218301A JP 5819380 B2 JP5819380 B2 JP 5819380B2
Authority
JP
Japan
Prior art keywords
input data
multiplier
circuit
value
storage element
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
JP2013218301A
Other languages
English (en)
Other versions
JP2014093085A (ja
Inventor
ジェイ. ヒックマン ブライアン
ジェイ. ヒックマン ブライアン
アール. ブラッドフォード デニス
アール. ブラッドフォード デニス
ディー. フレッチャー トマス
ディー. フレッチャー トマス
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2014093085A publication Critical patent/JP2014093085A/ja
Application granted granted Critical
Publication of JP5819380B2 publication Critical patent/JP5819380B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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
    • 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
    • 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
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Nonlinear Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、入力データ値に応じたFMAユニットにおける電力消費の低減に関する。
プロセッサにおける1つの共通した実行ユニットは、FMA(Fused Multiply-Add)ユニットである。一般に、FMAユニットは、最初にオペランドの2つを乗算し、次いでその積に第3のオペランドを累算するという、3つの入来するオペランドに対する演算を実行することができる。より具体的に、FMA算術論理演算ユニット(ALU;Arithmetic Logic Unit)は、A×B+Cを計算するよう設計される。なお、A、B及びCは任意の値である。通常、Aは乗数入力と呼ばれ、Bは被乗数入力と呼ばれ、Cは加数入力と呼ばれる。最新のFMA ALU設計はパワーを増し、FMA ALUへ与えられるデータ入力にかかわらず同じ電力レベルで動作する。これは、特に、FMAの乗算ユニットの消費電力が大きいので、余分の電力消費を引き起こしうる。
幾つかのプロセッサは、選択回路による第3のオペランド又はオペランド及び結果のルーティングの適切な選択により加算、減算及び乗算のようなより簡単な数学演算を実行するためにそのようなユニットを用いる。然るに、多くのプロセッサにおいて、FMAユニットは、実行ユニットのバックボーンを形成し、プロセッサの周波数、電力及び面積の決定における重要な回路となり得る。
FMAユニットの平均電力を低減する従前の解決法は、通常、FMA ALUに負わされたより簡単な演算のための電力を、それらの演算をFMAA LUから独立した別個の浮動小数点ALUに置くことによって、低減することに焦点を当てる。これは、FMA ALUが、それらのより簡単な演算についてパワーを落とすことを可能にし、そのような場合において電力消費を低減する。
しかしながら、従前の解決法は、面積及び漏れ電力に関して費用がかかり、従って、理想的な解決法ではない。加えて、この解決法は、FMA命令実行のために電力を節約することができない。
本発明の実施形態によれば、命令を実行する複数の実行ユニット及び制御ロジックを含むコアを有し、前記複数の実行ユニットは、複数の入力データ値を受け取って該入力データ値に対してFMA命令を実行するFMA回路を含み、前記FMA回路は、乗算器ユニットと、該乗算器ユニットの出力へ結合される加算器ユニットとを含み、前記制御ロジックは、前記複数の入力データ値を受け取り、該複数の入力データ値の少なくとも1つの値に基づき前記FMA回路の1又はそれ以上の構成要素をゲーティングする、プロセッサが提供される。
本発明の実施形態によれば、乗算器回路及び加算器回路を含むプロセッサのALUにおいて実行される動作に関連する複数の入力データ値を受け取るステップと、前記複数の入力データ値の少なくとも1つが第1のタイプであるかどうかを、前記プロセッサの制御ロジックにおいて決定するステップと、前記複数の入力データ値の少なくとも1つが前記第1のタイプであるとの決定に応答して、前記乗算器回路及び前記加算器回路の少なくとも1つを無効にし、前記ALUにおいて前記動作を実行して結果を生成するステップとを有する方法が提供される。
本発明の実施形態によれば、複数のコアを含むマルチコアプロセッサ、及び該マルチコアプロセッサへ結合されるDRAMを有し、前記コアの少なくとも1つは、メインデータパス及び例外データパスを有するFMA回路と、該FMA回路へ結合され、第1のタイプの入力データ値の入力に応答して前記メインデータパスの少なくとも一部を無効にする制御ロジックとを含み、前記FMA回路は、前記第1のタイプの前記入力データ値を含む複数の入力データ値に関連する命令の結果を生成し、前記メインデータパスは、前記複数の入力データ値の夫々1つを受ける記憶要素の第1の段と、第1の入力データ値及び第2の入力データ値を乗算する乗算器回路と、少なくとも1つの記憶要素が前記乗算器回路の出力へ結合される記憶要素の第2の段と、第3の入力データ値を選択されたデータ値と加算する加算器回路とを含む、システムが提供される。
本発明の実施形態によれば、入力データ値に応じたFMAユニットにおける電力消費の低減が可能となる。
本発明の実施形態に従う一般的なFMAユニットのブロック図である。 本発明の実施形態に従うFMA回路の概略図である。 本発明の他の実施形態に従うFMA回路の概略図である。 本発明の他の実施形態に従うFMA回路の概略図である。 本発明の他の実施形態に従うFMA回路の概略図である。 本発明の実施形態に従う更なる他のFMA回路の概略図である。 本発明の実施形態に従う方法のフロー図である。 本発明の一実施形態に従うプロセッサコアのブロック図である。 本発明の実施形態に従うマルチドメインプロセッサのブロック図である。 本発明の実施形態に従うシステムのブロック図である。
様々な実施形態において、FMA回路の電力消費は、入力データ値の1若しくはそれ以上の解析及び/又は回路において実行される命令に基づき制御され低減され得る。例えば、多くのデータ入力について、答えは、自明に知られるか、又は、より電力効率の良い方法で計算され得る。一例として、乗数又は被乗数入力の一方又は両方が零である場合は、FMA計算の結果は自明に加数に等しい。よって、電力を節約するために、FMAユニットの少なくとも部分はクロックゲーティングを介してパワーを落とされ、加数は出力へ直接バイパスされる。
更に、より複雑な最適化が可能である。被乗数が2の直接の累乗である場合を考える(例えば、1.0×2=2)。この場合に、積を計算する乗算ユニットは、クロックゲーティングを用いてゲートオフ可能であり、シフト演算が積を計算するために使用されてよく、回路の乗算器ユニットで消費される大量の電力を節約する。そのようなものとして、データ入力自体に基づく最適化は、クロックゲーティングを制御し、経路をバイパスして効率的な演算を実現するために使用されてよい。
更に、多くの演算が、可能な限りデータパスの多くを再利用するために、FMA ALU内のメインFMAデータパスの上にオーバーレイされる。それらの演算は、乗算、加算及び減算のような簡単な算術演算、AND/OR/シフト/循環のような論理演算、MIN関数、MAX関数、整数演算、比較演算、並びに浮動小数点−整数変換、整数−浮動小数点変換、倍−単精度変換及び単−倍精度変換のような変換演算を含むことができる。実施形態は、FMAユニット内で更なる平均電力を節約するよう、それらの演算のために入力データにより駆動されるクロックゲーティングを実行してよい。
よって、実施形態は、それらの特別のデータ入力及び/又は命令タイプが検出される場合に平均電力を下げるよう、関連する制御及び乗算ロジックを介して制御される精細なクロックゲーティングを実施してよい。このようにして、FMA演算、すなわちAB+Cの演算を含む演算は、より効率的に実行され得る。一般に、FMAユニットは、乗算器及び加算器を有し、更に単一のラウンダー(rounder)を有する。このFMAユニットは、ベクトルサイズ値のようなより広い幅のオペランドを受け入れるよう、比較的広いデータ幅であることができる。例えば、一実施形態において、このFMAユニットは64ビットオペラントを受けて、それらに対してFMA演算を実行することができる。
本発明の適用範囲はこれに関して制限されず、多くの実施において、FMAユニットは浮動小数点乗累算演算を実行し、所与のフォーマットの、例えば、浮動小数点(FP)計算のためのIEEE(Institute of Electrical and Electronics Engineers)標準754−2008(2008年発行)のような所与のIEEE標準のオペランドに適合してよい。更に、所与の実施は、単及び倍精度浮動小数点フォーマットであってよいオペランドを含む様々なタイプの入来データを扱うために使用されてよい。
一実施形態において、FMA命令シンタックスは、3つのソースオペランドを用いて定義されてよい。ここで、第1のソースオペランドは、データ要素の算術演算の結果に基づき更新される。そのようなものとして、第1のソースオペランドはまた、目標オペランドであってもよい。例えば、演算コードx1、x2、x3の命令フォーマットが存在してよく、この演算コードは、所与の算術演算を実行するための複数のユーザレベルFMA又は他の命令の1つに対応し、x1乃至x3は、演算において処理されるオペランドに対応する。
FMA命令において実行される算術FMA演算は、複数の形、例えば:
r=(x×y)+z;
r=(x×y)−z;
r=−(x×y)+z;又は
r=−(x×y)−z
のうちの1つを取ることができる。
実施形態において、パックFMA命令は、256ビットベクトルを有する8つの単精度FMA演算又は4つの倍精度FMA演算を実行することができる。スカラーFMA命令は、ベクトルレジスタを用いて実施される場合に、下位データ要素に対して1つの算術演算のみを実行する。目的オペランドの下位128ビットにおける残りのデータ要素の内容は保持され、一方、目的オペランドの上位128ビットは零を充填される。
実施形態において、r=(x×y)+zの形をとる算術FMA演算は、2つのIEEE754−2008単(倍)精度値をとり、それらを乗算して中間値を形成する。この中間値は、第3の(単)倍精度値に加えられ、単(倍)精度結果を得るよう丸められる。異なる丸めモード及び精度が異なる実施形態において実施されてよい。
一実施形態において、ベクトル命令は、様々なパックデータタイプ表現で実行され得る。それらのデータタイプは、128ビット幅のオペランドについてパックバイト(packed byte)、パックワード(packed word)、並びにパックダブルワード(packed doubleword(dword))及びパッククワドワード(packed quadword)を含んでよい。例として、パックバイトフォーマットは、128ビット長さであり、16個のパックバイトデータ要素を含むことができる。バイトは、ここでは、8ビットのデータとして定義される。バイトデータ要素ごとの情報は、バイト0についてはビット7乃至ビット0に、バイト1についてはビット15乃至ビット8に、バイト2についてビット23乃至ビット16に、そして最後にバイト15についてはビット127乃至ビット120に格納される。なお、実施形態はスカラー(個別、すなわち、非パック)表現に等しく当てはまると理解されたい。
一般に、データ要素は、同じ長さの他のデータ要素とともに単一のレジスタ又はメモリ位置に記憶される個々のデータ片である。幾つかのパックデータシーケンスにおいて、レジスタに記憶されるデータ要素の数は、個々のデータ要素のビットにおける長さによって分割される128ビットであってよい。データタイプは128ビット長さであってよいが、本発明の実施形態はまた、64ビット幅の又は他のサイズのオペランドを有して動作することができる。
パックデータフォーマットは更に、他のレジスタ長さへ、例えば、96ビット、160ビット、192ビット、224ビット、256ビット又はそれ以上へ拡大されてよいことは明らかである。加えて、様々な符号付き及び符号なしのパックデータタイプ表現が、本発明の実施形態に従ってマルチメディアレジスタにおいて扱われ得る。そして、様々なタイプのスカラーデータフォーマットも、本発明の実施形態に従ってレジスタファイルのレジスタにおいて扱われてよい。
ここで図1を参照すると、本発明の実施形態に従う一般的なFMAユニットのブロック図が示されている。図1に示されるように、FMAユニット10は、乗算器ユニット15、加算器ユニット20、及びラウンダーユニット30を有する。図1に示される実施形態では、FMAユニット10は、乗算器ユニット15で複数のソースオペランドを受けるよう構成され得る。図示される実施形態では、2つのソースオペランド、例えば、64ビット幅の夫々が受け取られ得るが、本発明の適用範囲はこれに関して制限されない。例えば、他の実施形態では、ソースオペランドは32ビット又は128ビットであってよい。
然るに、乗算器ユニット15は、例えば、ソースオペランドのための入力が倍精度値の53ビット仮数であるとすると、106ビットの幅を有する積を生成することができる。加算器ユニット20は、この入来する積を受け入れるために108ビットの幅を有するよう構成される。加えて、加算器ユニット20は更に、追加のソースオペランドを受けるよう構成される。この追加のオペランドは、幾つかの実施形態において、やはり64ビットであってよい。よって、加算器ユニット20は、106バイトである和を生成する。この和はラウンダーユニット3へ供給され、ラウンダーユニット3は、例えば53ビットの、丸められた出力を生成する。当然、データパスは他の実施形態では異なるサイズを有してよいと理解されたい。
このハードウェアにおいてFMA演算を実行するために、係数A及び変数Bに対応する2つのソースオペランドが乗算器ユニット15へ供給され得る。次いで、それらの値の積は、加算器ユニット20において第3のソースオペランド(C)と加算され、このようにして、ラウンダーユニット3で丸められ得る和を求めることができる。よって、結果は、AB+Cの値に対応することができる。そのようなFMAを実行することに加えて、このハードウェアは更に、乗算器ユニット15で乗算を実行し、更に加算器ユニット20で他の演算を実行するよう構成される。
異なるタイプの命令が然るべくFMAユニット10で実行され得る。本発明の適用範囲はこれに関して制限されないが、一実施形態において、かかる命令は、倍精度FMA命令、単精度FMA命令、並びに他の倍精度及び単精度命令を含むことができる。
ここで図2を参照すると、本発明の実施形態に従うFMA回路の概略図が示されている。図2に示されるように、FMA回路100は、入力データを受け取り、所望の結果を得るよう演算を実行する様々な構成要素を有する。様々な実施形態に従って、入力データ値及び/又は命令タイプの1又はそれ以上に基づき、回路の制御は、特定の演算のために必要とされない場合に、回路の1又はそれ以上の構成要素をクロックゲーティングすることにより電力消費を低減するように起こることができる。本発明の実施形態を用いて利用可能な具体的な電力節約技術の議論の前に、FMA回路100の全体的な処理パイプラインの簡単な議論が与えられる。
見て分かるように、3つの入来する入力データ値の夫々は、記憶要素の対応する組の1つへ与えられる。より具体的に、図2の実施形態では、複数のフロップ105〜105が存在する。ここで記載される実施形態は、記憶要素としてD型フリップフロップのようなフリップフロップを用いるが、本発明の適用範囲はこれに関して制限されず、他の実施形態では、ラッチのような異なるタイプの記憶要素が使用されてよいことを理解されたい。見て分かるように、加数入力データ値はフロップ105へ供給され、被乗数入力データ値はフロップ105へ供給され、乗数入力データ値はフロップ105へ供給される。
次いで、それらの値の夫々は、FMA回路の更なる回路へ結合される。見て分かるように、加数は整列回路115へ、更に例外ロジック119へ供給される。乗数値及び被乗数値は、乗算器回路110へ、更に例外ロジック119へ供給される。実施形態において、整列回路115は、加数と乗数及び被乗数の積との間の指数差を決定するよう動作してよい。乗算器回路110は、乗数値及び被乗数値を乗算して積を生成するよう動作する。実施形態において、基数8の乗算器が存在してよいが、如何なるタイプの乗算器も使用されてよい(例えば、他の基数又は他の設計)。乗算器回路110からの積はフロップ120へ供給され、一方、整列された加数はフロップ120へ供給される。次いで、それらの値は加算器回路125で加算されてよい。結果として得られる和は、フロップ1301を介して正規化回路135へ送られる。正規化回路135は、和に対して正規化演算を実行してよい。この正規化された値は、フロップ1401を介してラウンダー回路145へ結合してよい。ラウンダー回路145は、例えば、制御レジスタにおいて特定される所与の丸めモードに従って、又は実行される命令において特定される丸めモードに応答して、丸めを実行してよい。そのようなものとして、丸められた値はセレクタ150へ供給される。セレクタ150において、値は、例外がセレクタ150への例外入力を介して示されないとすると、結果として出力され得る。
このメインデータパスに加えて、例外データパスが存在する。上述されたように、例外ロジック119は入力データ値を受け取る。これらの入力データ値及び他の情報(例えば、様々な設定情報、等)に基づき、例外ロジック119は、例えば、例外的な入力又は他の例外条件により、例外を生成してよい。そのような例外インジケーションは、次いで、セレクタ150へ供給される前に、一連のフロップ120、130及び140を通ってよい。
このように図2から分かるように、2つのメインデータパスが存在し、1つはメインFMA計算のためのデータパスであり、もう1つは、例えばIEEE−754−2008浮動小数点標準によって定義されるような、例外事由のためのデータパスである。幾つかの実施形態において、このバイパス経路は、データに基づくクロックゲーティングスキームを実施する費用を削減するために使用され得る。上記の議論は、このように、FMA回路の入力からその出力までのデータパスの基本的な動作について記載する。
2つの経路に加えて、FMA回路100は、入来するデータ値を受け取る制御ロジック160を有する。ロジック160は更に、所与の命令に応答してFMA回路100で実行される演算のタイプのインジケーションを受け取ってよい。この情報に基づき、制御ロジック160は、例えば、命令タイプ又はデータの状態により、メインデータパス(及び/又は例外データパス)の1又はそれ以上の構成要素が所与の命令の正確な演算のために必要とされないと決定してよい。そのようなものとして、制御ロジック160は、制御信号を1又はそれ以上の構成要素へ供給してそれらをオフしてよい。本発明の適用範囲はこれに関して制限されないが、実施形態において、制御ロジック160は、データパスの全体を通して1又はそれ以上のフロップへのクロック信号をゲーティングして、それらのフロップを非作動としてよい。このようにして、電力消費は、それらのフロップが作動していないので、低減される。加えて、作動中のフロップなしでは、その出力でのデータのトグリングは存在せず、そのようなものとして、このフロップから下流の回路も切り替わらず、更に電力消費を低減する。図2の実施形態ではこのようなハイレベルで示されているが、本発明の適用範囲はこれに関して制限されないと理解されたい。例えば、更なる構造が、データパスの異なる点への入力のための適切な値のスイッチング、バイパス、乗算及び他の選択を扱うためにFMA回路において存在してよいことを理解されたい。また、FMA回路100に関して、回路のデータパスは、入力が最終の結果を得るようデータパスの全体を通して処理されるために複数のプロセッサクロックサイクルが起こるように、多段階又はサイクルデータパスである点に留意されたい。図2に示される具体的な実施形態では、4段階又はサイクル回路が示されている。なお、本発明の適用範囲はこれに関して制限されない。
乗数又は被乗数の一方又は両方が零に等しい場合に、乗数及び被乗数の積は零となり、最終の結果は、FMA回路全体をゲーティングし且つ加数を出力へ直接送ることによって、求められ得る。乗数及び被乗数入力データ値の一方又は両方が零に等しい例において、実質的にメインデータパスの全てがゲートオフされ、加数は出力へ直接送られる。制御ロジック160が、乗数及び被乗数データ値の一方又は両方が零であることを検出する場合に、これは、それらの値もフロップ105〜105へ供給される第一サイクルにおいて決定され得、続くクロックゲーティングが起こってよい。具体的に、命令の第2クロックサイクルの間、フロップ105及び105はゲーティングされ、一方、フロップ105は、加数が整列回路115を通ることを可能にするようクロック制御され、整列回路115は切り替わる。フロップ105及び105はクロックゲーティングされるので、乗算器回路110は切り替わらない点に留意されたい。続くクロックサイクルで、フロップ120及び120はクロックゲーティングされ、更なるクロックサイクルで、フロップ130及び140もクロックゲーティングされ、それにより、加算器回路125、正規化回路お135及びラウンダー回路145は切り替わらず、更に追加の電力節約を提供する。最終の結果を実現するよう、加数はセレクタ150へ直接供給され得る。加数値のこのような供給は、フロップ1052から直接的にセレクタ150へ至るバイパス経路を介することができる(図示せず。)。あるいは、値は、依然としてクロック制御される例外ロジック119並びにフロップ120、130及び140を含む例外データパスを通され得る。よって、実施形態において、加数は、この例外データパスを通ってセレクタ150へ送られ得る。
入力データ値に基づく電力制御の他の例は、例外的な入力が存在する場合である。そのような入力(例えば、sNaN(signaling not a number)、qNaN(quiet not a number)、無限大、及び零)が存在する場合に、IEEE754標準例外処理規則は、生成されるべき出力を規定する。そのような規則は、通常、定数(例えば、+∞×+∞)又は入力値の1つの変形された値のいずれかが返されることを定める。例えば、sNaN入力は僅かに変形され、最終の生成物として返される。そのような例外事由において、最終の結果は、入力値の解析によって決定され得る。再び図2を参照すると、フロップ120及び120並びにメインデータパスの全ての下流のフロップは、電力消費を低減するよう、そのような例外的な入力の場合にはクロックゲーティングされ得る。この電力消費は、それらのフロップのクロックゲーティング並びに加算器回路125、正規化回路135及びラウンダー回路145を含むメインデータパス回路における入力トグリングの欠如の両方により実現される。結果は、依然としてクロック制御されている例外データパスを介して求められ得る。FMA入力が例外事由に当たらない場合は、ゲーティングは反対の事例において同様に行われ、バイパス経路は少量の電力を節約するためにゲートオフされ得る。
加数が零に等しい場合に、加数入力は無効にされてよく、加算器回路125はバイパスされ、最終の結果は積にのみ等しくなる。図2に示されるような回路はこの制御を実行することができるが、幾つかの実施形態において、異なるFMA配置が存在してよい。ここで図2Aを参照すると、本発明の更なる他の実施形態に従うFMA回路の概略図が示されている。図2Aに示されるように、FMA回路100’は、FMA回路100の構成と同様に構成されてよい。しかし、加算器回路125及びフロップ120の下流に結合されるセレクタ128の存在に留意すべきである。加数が零である場合に、フロップ105はクロックゲーティングされてよく、よって、整列回路115が切り替わらないことを可能にする。加えて、フロップ120は、同様にクロックゲーティングされてよい。代わりに、乗算器回路110からの積は、メインデータパスの残りのみを通るこの積の通過が結果として出力されることを可能にするよう、フロップ120からセレクタ128へ直接結合してよい。他の点において、FMA回路100’は、図2の回路100の構成と同様に構成されてよい。
更なる他の事例は、乗数又は被乗数が厳密に2の累乗であり(1.0×2。ここで、Nは整数であり、2の累乗と呼ばれる。)、従って、積を計算する乗算器がゲートオフされ得る場合であり、シフト演算はそのような場合に積を計算するために使用され得る。
ここで図3を参照すると、本発明の他の実施形態に従うFMA回路の概略図が示されている。図3から分かるように、FMA回路100”は、図2のFMA回路と略同じように構成されてよい。しかし、図3の実施形態では、更なる論理回路、選択メカニズム及びシフトメカニズムが、電力消費の削減を可能にするよう更なるデータ値の場合を扱うことを可能にするために提供される。具体的に、図3の回路によれば、乗数及び被乗数の少なくとも一方が2の累乗である場合が、電力削減態様において扱われ得る。
図1にあるように上記の回路に加えて、FMA回路100”は、被乗数及び乗数を受け取り、制御ロジック160による制御に応答してそれらの値の選択された1つがシフタ114へ供給されることを可能にするよう夫々構成された一対のセレクタ112及び112を更に有する。セレクタ112は、シフタ114への適切な入力を選択するよう動作する。然るに、シフタ114は、乗数又は被乗数Nビットの選択された1つを(入力に応じて左又は右へ)シフトするよう動作する。ここで、Nは、乗数及び被乗数の他方の2の直接の累乗である。このように、このシフトされた値はセレクタ118へ渡り、セレクタ118は更に乗算器回路110の出力を受け取る。然るに、乗算器回路110が、2の直接の累乗である乗数/被乗数であるこの場合についてクロックゲーティングされる場合に、シフタ114の出力は、このようにしてセレクタ118を介してフロップ120へ至る。
依然として図3を参照して、更に、ANDゲート108及び108の存在に留意されたい。それらのANDゲートは、乗数入力値及び被乗数入力値の対応する1つを入力として受け取ってよい。加えて、それらのANDゲートは更に、フロップ105及び105へのクロック信号を受け取る。よって、それらの値が特別の場合に当てはまらず、よって乗算器回路110において演算されるべき場合に、ANDゲートは切り替わって、値を乗算器回路110へ送る。代わりに、特別の場合が存在する状況において、例えば、入力データ値の1つが2の直接の累乗である場合に、それらのフロップはクロックゲーティングされて、ANDゲートは切り替わらない。他の点においては、FMA回路100”の通常の動作が起こる。他の点においては、FMA回路100”は、図2のFMA回路100と略同じに構成されてよい。
これら上記の例は、データ入力により駆動される精細クロックゲーティングが如何にしてオーバーヘッド費用及び複雑性の低減とともにFMA ALU内の平均電力を低減することができるのかを表す。実施形態はまた、算術演算(例えば、不動乗数点加算及び減算)のような非FMA演算、AND/OR/シフト/循環のような論理演算、整数演算、比較演算、及び変換演算をFMA回路において実行する電力消費を低減してよい。このために、FMA ALUは、命令タイプに基づきALUの部分をクロックゲートオフすることによって、FMA以外の演算について低電力で動作することができる。通常、命令タイプは、ALUにおける命令の実際の実行より前によく知られており、従って、命令タイプによるクロックゲーティングの制御は、クロックゲーティングに対する如何なるタイミング経路も回避する。
一実施形態において、最大の電力削減を得るために、ALU内のフロップ段は、可能な限り多くのサブグループに分けられてよい。1つの可能な分割は図4に表されており、例えば、4サイクルFMA ALUである。分割は、3つのソース(乗数、被乗数及び加数)の夫々について入力フロップをグループに分けることを含む。内部フロップ段は、機能によってグループに分けられ得る。例えば、浮動小数点指数ロジックに関するフロップは、それらのフロップが浮動小数点演算についてのみ有効にされる必要があるように、別個のグループに分けられてよい。グループが細かければ細かいほど、演算の電力に対する制御はより大きくなり得る。
フロップ段がグループに分けられると、次いで夫々のグループは、夫々の命令タイプについて必要とされるように有効又は無効にされる。高精細なフロップグループは、ALUのかなりの部分がALUの上にオーバーレイされているより簡単な演算のために切り替わらないようにすることを可能にする。そのようなものとして、実施形態はそれらのより簡単な演算のための電力消費を低減して、プログラムを実行するために費やされる全体的なエネルギを低減する。
図4に示されるように、FMA回路200は概して、上記のFMA回路と同様の構成を有する。しかし、更なる構成要素が、他の演算がデータパス内で実行されることを可能にするよう存在する。図4の回路において、入力データ値は、フロップ205〜205の組を通って供給される。見て分かるように、被乗数及び乗数は、乗算器回路210へ供給される。また、全ての3つの入力は指数ロジック212及び例外ロジック219へ供給される点に留意されたい。加えて、全ての入力は、入力データ値及び/又はFMA回路内で実行される命令のタイプに基づき、本発明の実施形態に従う電力制御を実行する制御ロジック295へ供給されてよい。浮動小数点比較命令のような比較命令について、フロップ205へ入力される被乗数は、乗算器回路210内のトグルレートを低減するようクロックゲーティングされ得る。また更に、フロップ270及び270からの出力は、同様にクロックゲーティングされ得、よって、ラウンダー回路280において入力トグリングを引き起こさない。そのようなものとして、比較の最終結果は、セレクタ265を介して及びフロップ270を通じて得られる。
より一層多くのクロックゲーティングは、整数乗算命令のような乗算命令について起こり得る。この場合に、フロップ205を介して入力される加数は、フロップ220、220及び220並びにフロップ240〜240とともに、クロックゲーティングされ得る。これは、加算器回路250、先行零予測器(LZA;leading zero anticipator)260、シフタ268及び指数ロジック266内のトグリングを有効にしない。フロップ270及び270のクロックゲーティングに加えて、ラウンダー回路280におけるトグリングも回避される。例外ロジックからの経路は、結果を出力へ渡すよう設けられてよい点に留意されたい。
浮動小数点加算及び減算のような演算は、A×1.0+B又はA×1.0−BとしてFMA回路へ入力される。同様の入力は、比較演算及び変換演算について起こる。通常、それらの演算の大部分は、乗算を実行する必要がなく、入力の1つに関する定数を送ることによって実施される(例えば、加算のためにA×1.0+B)。
上述されたように、実施形態は、A×1.0のような場合に乗算器ユニットへのフロップ入力をクロックゲートオフすることによって、及び乗算器ユニットのためのあらゆる内在的及び出力フロップをクロックゲートオフすることによって、それらの場合に電力を低減してよい。これは、入力データ値に依存して、乗算器アレイが大電力を要する構成であり、通常、FMA ALUにおける少なくとも50%の面積及び動的電力の大部分の主たる原因となることから、命令によって消費される動的電力を低減することができる。
データパスは、前段から値を受け取るフロップ220〜220の組を更に有する。フロップ220及び220は出力を加算器回路225へ供給し、一方、フロップ220は指数ロジック226の更なる段への入力を供給する。次いで、フロップ220の出力はセレクタ230へ供給され、一方、フロップ220の出力はセレクタ230及び230へ供給される。それらのセレクタ230及び230は両方とも、加算器回路225の和出力を更に受け取る。また、和出力は、セレクタ230へも供給される。セレクタ230の出力は、シフタ235へ供給される。このシフトされた出力は、フロップ240〜240の組のフロップ240へ供給される。フロップ240及び240の出力は、正規化の間に使用される他の加算器回路250及び先行零予測器260へ供給される。次いで、フロップ240の出力は、セレクタ265へ供給され、フロップ240の出力は、指数ロジック266の更なる段へ供給される。
加算器回路250の和出力は、他のシフタ268へ及びセレクタ265へ供給され、一方、先行零予測器260の出力は、指数ロジック266及びシフタ268を制御するよう結合される。シフタ268の出力はフロップ270を介してラウンダー回路280へ結合する。指数ロジック266の出力はフロップ270を介して結合され、その出力はラウンダー回路280を制御するために使用される。最後のセレクタ290は、ラウンダー回路280の丸め出力と、セレクタ265及びフロップ270を介する例外パスの出力とを受け取るよう結合される。図4の実施形態ではこのようなハイレベルで記載されているが、更なる回路が他の実施形態ではFMAデータパス内に存在してよいことを理解されたい。
ここで図5を参照すると、本発明の実施形態に従う更なる他のFMA回路の概略図が示されている。この実施形態では、入力データ値は、フロップ305〜305の組を介して供給される。加えて、乗数入力値は更に、更なるフロップ305を介して結合される点に留意されたい。乗数及び被乗数入力データ値は、乗算器回路310へ結合する。次いで、乗算器回路310は積を出力し、この積はフロップ335を介してセレクタ345へ供給される。このFMA回路のクロックゲーティング及び他の制御は、制御ロジック375を介してよい。
被乗数が所定値、例えば1.0である場合に、フロップ305及び305の両方並びに乗算器回路310(及び積フロップ335)はクロック制御される必要がない。代わりに、フロップ305を通じて供給され且つセレクタ325を介する乗数入力データ値は、例外バイパスフロップ330を通ってセレクタ345へ送られてよい。セレクタ345は、この直接の乗数入力データ値を加算器回路350へ送るよう制御され得る。加算器回路350は、加数フロップ340を介して加算器回路350へ供給される加数を乗数に加えるよう動作する。図5の実施形態ではこのようなハイレベルで図示されるが、本発明の適用範囲はこれに関して制限されないと理解されたい。
ここで図6を参照すると、本発明の実施形態に従う方法のフロー図が示されている。一実施形態において、方法400は、上述されたようなFMA ALUの制御ロジックによって実行され得る。概して、この制御ロジックは、実行される命令のタイプのインジケーションとともに、FMA回路の入力データ値を受けるよう構成される。このインジケーションは、命令自体の入力を介してよく、あるいは、それは、例えば、命令タイプ(例えば、FMA命令や、加算、乗算、比較等のより簡単な演算)を示すプロセッサのフロントエンドデコーダから受け取られるインジケーションであってよい。
図6から分かるように、方法400は、制御ロジック及びデータパスの両方においてそれらの入力データ値を受けることによって、ブロック410から始まる。上述されたように、幾つかの実施形態では、入力データ値に加えて、制御ロジックは更に、命令タイプインジケーションを受け取ることができる。
次に、ダイヤモンド420で、入力データ値の少なくとも1つが特別の場合の値として特定されるかどうかが決定され得る。そのような特別の場合の値の多くは上述された通りであり、例えば、0、1、若しくは2の累乗を有する乗数若しくは被乗数、零の加数、又は例外的な入力である。そのような入力データ値が存在する場合は、制御はブロック430へ移り、データパスの1又はそれ以上の構成要素がクロックゲーティングされ得る。また更に、特定のバイパス、シフト、選択動作も実行され得る。そのような動作は、他の入力データ値の1又はそれ以上がそのデータパスにおいて、又はデータパスのサイクルにおける実行の過程において演算される前に、起こることができる。見て分かるように、制御はブロック440へ移り、命令が実行され、結果を出力するよう完了され得る。代わりにダイヤモンド420で特別の場合が存在しないと決定される場合は、制御は直接にブロック440へ移る。同様の方法は、特定の命令タイプに応答して、例えば、入力データ値のいずれも特別の場合でない場合でさえ、クロックゲーティング及び他の演算を実行するよう制御ロジックによって実行され得る点に留意されたい。図6の実施形態ではこのようなハイレベルで図示されるが、本発明の適用範囲はこれに関して制限されないと理解されたい。
実施形態は多種多様なシステムにおいて実施され得る。例えば、実施形態は、マルチコアプロセッサのようなプロセッサにおいて実現され得る。ここで図7を参照すると、本発明の実施形態に従うプロセッサコアのブロック図が示されている。図7に示されるように、プロセッサコア500は、多段パイプライン型アウトオブオーダープロセッサであってよい。プロセッサコア500は、本発明の実施形態に従うFMAユニットとともに使用される様々な特徴を表すよう、図7において比較的な簡単な態様で示されている。
図7に示されるように、コア500はフロントエンドユニット510を有する。フロントエンドユニット510は、実行される命令をフェッチし、それらをプロセッサにおける後の使用のために用意するために使用されてよい。例えば、フロントエンドユニット510は、フェッチユニット501、命令キャッシュ503、及び命令デコーダ505を有してよい。幾つかの実施において、フロントエンドユニット510は、マイクロコード記憶部及びマイクロオペレーション記憶部とともに、トレースキャッシュを更に有してよい。フェッチユニット501は、例えばメモリ又は命令キャッシュ503から、マクロ命令をフェッチし、それらを例えばプロセッサによる実行のためにマイクロオペレーションのようなプリミティブへとデコードするようそれらのマクロ命令を命令デコーダ505へ供給してよい。
フロンエンドユニット510と実行ユニット520との間には、マイクロ命令を受け取ってそれらを実行のために用意するために使用されてよいアウトオブオーダー(OOO;out-of-order)エンジン515が結合される。より具体的に、OOOエンジン515は、マイクロ命令フローを並べ替えて、実行のために必要とされる様々なリソースを割り当て、更には、論理レジスタのリネーミングをレジスタファイル530及び拡張レジスタ535のような様々なレジスタファイル内の記憶位置に与えるように、様々なバッファを有してよい。レジスタファイル530は、整数及び浮動小数点演算のための別個のレジスタファイルを有してよく、拡張レジスタファイル535は、例えばレジスタごとに256又は512ビットといったベクトルサイズ単位のための記憶を提供してよい。
様々なリソースが、例えば、幾つかある特別のハードウェアの中でもとりわけ、様々な整数、浮動小数点、及びSIMD(single instruction multiple data)論理ユニットを含め、実行ユニット520において存在してよい。例えば、そのような実行ユニットは、1又はそれ以上のALU522を有してよい。加えて、FMAユニット524が、ユニットに対してスケジューリングされたFMA又は他の命令の最終結果を生成するよう存在してよい。様々な実施形態において、ユニットは、上述されたようにユニットの部分をクロックゲーティングするよう制御ロジックを有してよい。
演算が実行ユニット内でデータに対して行われる場合に、結果は退去ロジック、すなわち、リオーダーバッファ(ROB)540へ供給されてよい。より具体的に、ROB540は、実行される命令に関連する情報を受け取るよう様々なアレイ及びロジックを有してよい。次いで、この情報は、命令が有効に退去され、プロセッサのアーキテクチャ状態にコミットしているデータを生むことができるかどうか、あるいは、1又はそれ以上の実行が命令の適切な退去を防いで起きたかどうかを決定するよう、ROB540によって試験される。当然、ROB540は、退去に関連する他の演算を扱ってよい。
図7に示されるように、ROB540は、キャッシュ550へ結合される。キャッシュ550は、一実施形態において低レベルキャッシュ(例えば、L1キャッシュ)であってよく、トランザクション・ルックアサイド・バッファ(TLB)555を更に有してよい。なお、本発明の適用範囲はこれに関して制限されない。また、実行ユニット520は、直接にキャッシュ550へ結合され得る。キャッシュ550から、データ通信は、より高レベルのキャッシュ、システムメモリ等により起こってよい。図7のプロセッサの実施は、所謂x86ISAアーキテクチャのようなアウトオブオーダーマシンに関するが、本発明の適用範囲はこれに関して制限されない点に留意されたい。すなわち、他の実施形態がインオーダープロセッサ、ARMに基づくプロセッサのようなRISC(reduced instruction set computing)プロセッサ、又はエミュレーションエンジン及び関連するロジック回路を介して異なるISAの命令及び演算をエミュレートすることができる他のタイプのISAのプロセッサにおいて実施されてよい。
ここで図8を参照すると、本発明の実施形態に従うマルチドメインプロセッサのブロック図が示されている。図8の実施形態で示されるように、プロセッサ600は複数の領域を有する。具体的に、コア領域610は、複数のコア610〜610を有することができ、グラフィクス領域620は、1又はそれ以上のグラフィクスエンジンを有することができ、システムエージェント領域650は更に存在してよい。様々な実施形態において、システムエージェント領域650は、固定の周波数で実行してよく、且つ、領域610及び620が動的に低電力状態に出入りするよう制御され得るように、電力制御イベント及び電力管理を扱うよう常にオンされたままであってよい。3つの領域によってしか示されないが、本発明の適用範囲はこれに関して制限されず、更なる領域が他の実施形態では存在してよいことを理解されたい。例えば、複数のコア領域は、夫々が少なくとも1つのコアを有して存在してよい。
概して、夫々のコア610は、本発明の実施形態に従う1又はそれ以上のFMAユニットのような様々な実行ユニット、及び更なるプロセッシング要素に加えて、低レベルキャッシュを更に有してよい。次いで、様々なコアは互いに及び、ラストレベルキャッシュ(LLC)640〜640の複数のユニットから形成される共有キャッシュメモリへ結合されてよい。様々な実施形態において、LLC650は、コア及びグラフィクスエンジン並びに様々なメディアプロセッシング回路の間で共有されてよい。見て分かるように、リング型インターコネクト630はこのようにコアどうしを結合し、コア、グラフィクスエンジン620及びシステムエージェント回路650の間の相互接続を提供する。
図8の実施形態では、システムエージェント領域650は、ディスプレイコントローラ652を有してよい。ディスプレイコントローラ652は、関連するディスプレイへその制御及びインターフェースを提供してよい。更に分かるように、システムエージェント領域650は、電力制御ユニット655を有してよい。電力制御ユニット655は、プロセッサが置かれているシステムのための電力管理を実行することができる。
図8から更に分かるように、プロセッサ600は、動的ランダムアクセスメモリ(DRAM)のようなシステムメモリへのインターフェースを提供することができる集積メモリコントローラ(IMC)670を更に有することができる。複数のインターフェース680〜680は、プロセッサと他の回路との間の相互接続を可能にするよう存在してよい。例えば、一実施形態において、少なくとも1つの直接メディアインターフェース(DMI)が、1又はそれ以上のPCI(Peripheral Component Interconnect)エクスプレス(PCIe)インターフェースと同様に設けられてよい。また更に、更なるプロセッサ又は回路のような他のエージェントの間の通信を提供するよう、インテル(登録商標)のクイックパスインターコネクト(QPI)に従う1又はそれ以上のインターフェースが設けられてもよい。図8の実施形態においてこのようにハイレベルで示されるが、本発明の適用範囲はこれに関して制限されないと理解されたい。
実施形態は、多種多様なシステムタイプにおいて実施されてよい。ここで図9を参照すると、本発明の実施形態に従うシステムのブロック図が示されている。図9に示されるように、マルチプロセッサシステム700はポイント・ツー・ポイント相互接続システムであり、ポイント・ツー・ポイントインターコネクト750を介して結合されている第1のプロセッサ770及び第2のプロセッサ780を有する。図9に示されるように、プロセッサ770及び780の夫々は、第1及び第2のプロセッサコア(プロセッサコア774a及び774b並びにプロセッサコア784a及び784b)を含むマルチコアプロセッサであるが、潜在的に多くの更なるコアがプロセッサにおいて存在してよい。コアの夫々は、ここで記載されるように、1又はそれ以上の入力データ値及び/又は命令タイプに基づきFMAの1又はそれ以上のデータパスの様々な部分のクロックゲーティングを実行するようクロックゲートロジックを有するFMAユニットを有することができる。
依然として図9を参照して、第1のプロセッサ770は、メモリコントローラハブ(MCH)772並びにポイント・ツー・ポイント(P−P)インターフェース776及び778を更に有する。同様に、第2のプロセッサ780は、MCH782並びにP−Pインターフェース786及び788を有する。図9に示されるように、MCH772及び782はプロセッサを各々のメモリ、すなわち、メモリ732及びメモリ734へ結合する。これらのメモリは、各々のプロセッサへ局所的に付属したシステムメモリ(例えば、DRAM)の部分であってよい。第1のプロセッサ770及び第2のプロセッサ780は、夫々、P−Pインターコネクト752及び754を介してチップセット790へ結合されてよい。図9に示されるように、チップセット790は、P−Pインターフェース794及び798を有する。
更に、チップセット790は、チップセット790をP−Pインターフェース739によって高性能グラフィクスエンジン738と結合するようインターフェース792を有する。次いで、チップセット790は、インターフェース796を介して第1のバス716へ結合されてよい。図9に示されるように、様々な入力/出力(I/O)デバイス714が、第1のバス716を第2のバス720へ結合するバスブリッジ718とともに、第1のバス716へ結合されてよい。様々なデバイスが、例えば、キーボード/マウス722、通信デバイス726及びデータ記憶ユニット728(例えば、一実施形態においてコード730を有することができるディスクドライブ又は他の大容量記憶デバイス)を含め、第2のバス720へ結合されてよい。更に、オーディオI/O724が第2のバス720へ結合されてよい。実施形態は、スマートセルラー電話、タブレットコンピュータ、ネットブック等のようなモバイルデバイスを含む他のタイプのシステムに組み込まれ得る。
実施形態は、コードにおいて実施されてよく、命令を実行するようシステムをプログラムするために使用され得る命令を記憶した持続性記憶媒体に記憶されてよい。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、ソリッドステートドライブ(SSD)、コンパクトディスク読出専用メモリ(CD−ROM)、書換可能コンパクトディスク(CD−RW)、及び光学磁気ディスクを含むあらゆるタイプのディスク、読出専用メモリ(ROM)、ランダムアクセスメモリ(RAM)(例えば、動的ランダムアクセスメモリ(DRAM)、静的ランダムアクセスメモリ(SDRAM))、消去可能なプログラム可能読出専用メモリ(EPROM)、フラッシュメモリ、及び電気的に消去可能なプログラム可能読出専用メモリ(EEPROM)のような半導体メモリ、磁気又は光学カード、あるいは、電気命令を記憶するのに適したあらゆる他のタイプのメディアを有してよいが、これらに限られない。
本発明は、有限な数の実施形態に関して記載されてきたが、当業者には、それらからの多数の改良及び変形が認識されるであろう。添付の特許請求の範囲は、本発明の真の精神及び適用範囲内にある全てのそのような改良及び変形を網羅することが意図される。
10,524 FMAユニット
15 乗算器ユニット
20 加算器ユニット
100,100’,100”,200 FMA回路
105〜105,120〜120,130〜130,140〜140,205〜205,220〜220,240〜240,270〜270,305〜305,330,335,340 フロップ
110,210,310 乗算器回路
112,112,118,128,150,230〜230,265,290,345 セレクタ
114,268 シフタ
119,219 例外ロジック
125,225,250,350 加算器回路
160,295,375 制御ロジック
400 方法
500 プロセッサコア
520 実行ユニット
522 ALU
600,770,780 プロセッサ
610〜610 コア
700 マルチプロセッサシステム
774a,774b,784a,784b プロセッサコア

Claims (21)

  1. 命令を実行する複数の実行ユニット及び制御ロジックを含むコアを有し、
    前記複数の実行ユニットは、複数の入力データ値を受け取って該入力データ値に対してFMA命令を実行するFMA回路を含み、
    前記FMA回路は、乗算器ユニットと、該乗算器ユニットの出力へ結合される加算器ユニットとを含み、
    前記制御ロジックは、前記複数の入力データ値を受け取り、該複数の入力データ値の少なくとも1つの値に基づき前記FMA回路の1又はそれ以上の構成要素をゲーティングし、
    前記制御ロジックは、前記複数の入力データ値の中の乗数又は前記複数の入力データ値の中の被乗数が2 であり、Nが整数である場合に、前記乗算器ユニットをゲートオフさせる
    プロセッサ。
  2. 前記FMA回路は、
    前記複数の入力データ値を受け取り、該複数の入力データ値の少なくとも1つに基づき例外を呼び出すべきかどうかを決定する例外ロジック
    を更に有する、請求項1に記載のプロセッサ。
  3. 前記複数の入力データ値の中の乗数及び前記複数の入力データ値の中の被乗数の1つが零であることに応答して、前記制御ロジックは、前記例外ロジックに前記複数の入力データ値の中の加数を出力させ、前記加算器ユニット及び前記乗算器ユニットは、トグリングしないようにされる、
    請求項2に記載のプロセッサ。
  4. 前記例外ロジックは、例外値に対応する前記複数の入力データ値の選択された1つを出力し、前記乗算器ユニット及び前記加算器ユニットは、トグリングしないようにされる、
    請求項2に記載のプロセッサ。
  5. 前記制御ロジックは、前記複数の入力データ値の加数が零である場合に、前記加算器ユニットをゲートオフさせる、
    請求項1に記載のプロセッサ。
  6. 前記FMA回路は、
    前記乗数及び前記被乗数の1つを入力として選択し、該1つをシフト値を得るためにNだけシフトするシフタ
    を更に有する、請求項に記載のプロセッサ。
  7. 前記加算器ユニットは、前記複数の入力データ値の中の加数と前記シフト値とを合計して和を求める、
    請求項に記載のプロセッサ。
  8. 前記制御ロジックは、前記FMA回路において実行される命令タイプを受け取り、該命令タイプに基づき前記FMA回路の少なくとも1つの構成要素をゲーティングする、
    請求項1に記載のプロセッサ。
  9. 前記FMA回路は、
    前記乗算器ユニットからの積を受け取るよう結合される複数の第1セレクタと、
    前記複数の第1セレクタの第1の1つの出力へ結合されるシフタと、
    前記複数の第1セレクタの第2の1つへ結合される第1記憶要素と、
    前記複数の第1セレクタの第3の1つへ結合される第2記憶要素と、
    前記シフタの出力へ結合される第3記憶要素と
    を更に有し、
    前記積は、前記第1記憶要素へ前記複数の第1セレクタの前記第1の1つによって出力され、前記第2記憶要素及び前記第3記憶要素は、乗算命令の実行中にクロックゲーティングされる、
    請求項1に記載のプロセッサ。
  10. 前記FMA回路は、
    前記複数の入力データ値の中の乗数を受け取る第1記憶要素及び第4記憶要素と、前記複数の入力データ値の中の被乗数を受け取る第2記憶要素と、前記複数の入力データ値の中の加数を受け取る第3記憶要素とを含む第1の記憶要素の組
    を有し、
    前記第1記憶要素及び前記第2記憶要素は、前記被乗数が1に等しい場合に、クロックゲーティングされる、
    請求項1に記載のプロセッサ。
  11. 前記制御ロジックは、前記被乗数が1に等しい場合に前記乗算器ユニットの順次クロックがトグリングしないようにし、前記複数の入力データ値の乗数を、前記複数の入力データ値の中の加数との加算のために、前記第4記憶要素から前記加算器ユニットへ転送させる、
    請求項10に記載のプロセッサ。
  12. 乗算器回路及び加算器回路を含むプロセッサのALUにおいて実行される動作に関連する複数の入力データ値を受け取るステップと、
    前記複数の入力データ値の少なくとも1つが第1のタイプであるかどうかを、前記プロセッサの制御ロジックにおいて決定するステップと、
    前記複数の入力データ値の少なくとも1つが前記第1のタイプであるとの決定に応答して、前記乗算器回路及び前記加算器回路の少なくとも1つを無効にし、前記ALUにおいて前記動作を実行して結果を生成するステップと
    を有し、
    前記乗算器回路及び前記加算器回路の少なくとも1つを無効にすることは、
    前記乗算器回路及び前記加算器回路の当該少なくとも1つの入力へ結合される記憶要素をクロックゲーティングすることを有し、
    前記制御ロジックは、前記複数の入力データ値の中の乗数又は前記複数の入力データ値の中の被乗数が2 であり、Nが整数である場合に、前記乗算器回路をゲートオフさせる、方法。
  13. 乗数入力データ値及び被乗数入力データ値の少なくとも1つが第1の値に等しい場合に、前記乗算器回路及び前記加算器回路を無効にし、前記ALUの出力へ加数入力データ値を供給して前記結果を生成する、
    請求項12に記載の方法。
  14. 被乗数入力データ値及び乗数入力データ値の一方が第2の値に等しい場合に、前記乗算器回路を無効にし、前記被乗数入力データ値及び前記乗数入力データ値の他方の値を、前記乗数入力データ値及び前記被乗数入力データ値の前記一方に基づく選択されたビット数だけシフトし、該シフトされた値を加数入力データ値と足し合わせて前記結果を生成する、
    請求項12に記載の方法。
  15. 被乗数入力データ値及び乗数入力データ値の一方が第3の値に等しい場合に、前記乗算器回路を無効にし、前記被乗数入力データ値及び前記乗数入力データ値の他方を加数入力データ値と足し合わせて前記結果を生成する、
    請求項12に記載の方法。
  16. 前記複数の入力データ値の少なくとも1つが例外ケースである場合に、前記乗算器回路及び前記加算器回路を無効にし、前記ALUの例外データパスにおいて前記結果を生成する、
    請求項12に記載の方法。
  17. 複数のコアを含むマルチコアプロセッサ、及び該マルチコアプロセッサへ結合されるDRAMを有し、
    前記コアの少なくとも1つは、メインデータパス及び例外データパスを有するFMA回路と、該FMA回路へ結合され、第1のタイプの入力データ値の入力に応答して前記メインデータパスの少なくとも一部を無効にする制御ロジックとを含み、
    前記FMA回路は、前記第1のタイプの前記入力データ値を含む複数の入力データ値に関連する命令の結果を生成し、
    前記メインデータパスは、前記複数の入力データ値の夫々1つを受ける記憶要素の第1の段と、第1の入力データ値及び第2の入力データ値を乗算する乗算器回路と、少なくとも1つの記憶要素が前記乗算器回路の出力へ結合される記憶要素の第2の段と、第3の入力データ値を選択されたデータ値と加算する加算器回路とを含み、
    前記制御ロジックは、前記複数の入力データ値の少なくとも1つが前記第1のタイプであるとの決定に応答して前記乗算器回路及び前記加算器回路の少なくとも1つを無効にし、前記乗算器回路及び前記加算器回路の当該少なくとも1つの入力へ結合される記憶要素をクロックゲーティングし、
    前記制御ロジックは、前記複数の入力データ値の中の乗数又は前記複数の入力データ値の中の被乗数が2 であり、Nが整数である場合に、前記乗算器回路をゲートオフさせる、システム。
  18. 前記制御ロジックは、更に、前記命令のタイプに応答して少なくとも前記メインデータパスを無効にする、
    請求項17に記載のシステム。
  19. 前記制御ロジックは、前記第1の入力データ値及び前記第2の入力データ値の少なくとも1つが零に等しい場合に、前記記憶要素の第1の段の中の第1及び第2の記憶要素を無効にする、
    請求項17に記載のシステム。
  20. 前記制御ロジックは、前記第1の入力データ値及び前記第2の入力データ値の少なくとも1つが零に等しい場合に、前記第3の入力データ値を前記例外データパスから出力させる、
    請求項17に記載のシステム。
  21. 前記記憶要素の第1の段は、前記第1の入力データ値を受ける第1記憶要素及び第4記憶要素と、前記第2の入力データ値を受ける第2記憶要素と、前記第3の入力データ値を受ける第3記憶要素とを有し、
    前記第1記憶要素及び前記第2記憶要素は、前記第2の入力データ値が1に等しい場合に、クロックゲーティングされる、
    請求項17に記載のシステム。
JP2013218301A 2012-10-31 2013-10-21 入力データ値に応じたfmaユニットにおける電力消費の低減 Expired - Fee Related JP5819380B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/664,689 US9152382B2 (en) 2012-10-31 2012-10-31 Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values
US13/664,689 2012-10-31

Publications (2)

Publication Number Publication Date
JP2014093085A JP2014093085A (ja) 2014-05-19
JP5819380B2 true JP5819380B2 (ja) 2015-11-24

Family

ID=49680022

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013218301A Expired - Fee Related JP5819380B2 (ja) 2012-10-31 2013-10-21 入力データ値に応じたfmaユニットにおける電力消費の低減

Country Status (8)

Country Link
US (2) US9152382B2 (ja)
JP (1) JP5819380B2 (ja)
KR (1) KR101566257B1 (ja)
CN (1) CN103793203B (ja)
BR (1) BR102013027768A2 (ja)
DE (1) DE102013111605A1 (ja)
GB (1) GB2507656B (ja)
TW (1) TWI515649B (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8892619B2 (en) * 2012-07-24 2014-11-18 The Board Of Trustees Of The Leland Stanford Junior University Floating-point multiply-add unit using cascade design
US9152382B2 (en) 2012-10-31 2015-10-06 Intel Corporation Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values
US9829956B2 (en) * 2012-11-21 2017-11-28 Nvidia Corporation Approach to power reduction in floating-point operations
US9383968B2 (en) * 2013-09-27 2016-07-05 Nvidia Corporation Math processing by detection of elementary valued operands
CN106126189B (zh) * 2014-07-02 2019-02-15 上海兆芯集成电路有限公司 微处理器中的方法
US10297001B2 (en) * 2014-12-26 2019-05-21 Intel Corporation Reduced power implementation of computer instructions
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10108397B2 (en) 2015-08-25 2018-10-23 Samsung Electronics Co., Ltd. Fast close path solution for a three-path fused multiply-add design
US11061672B2 (en) * 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
US20170177336A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Hardware cancellation monitor for floating point operations
US10673213B2 (en) * 2016-04-14 2020-06-02 Nagaki Seiki Co., Ltd. Wire grip and live wire distributing tool having the wire grip
US9977680B2 (en) * 2016-09-30 2018-05-22 International Business Machines Corporation Clock-gating for multicycle instructions
US10078512B2 (en) 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10372416B2 (en) 2017-04-28 2019-08-06 Intel Corporation Multiply-accumulate “0” data gating
US10372417B2 (en) 2017-07-13 2019-08-06 International Business Machines Corporation Multiply-add operations of binary numbers in an arithmetic unit
GB2568085B (en) * 2017-11-03 2020-01-01 Imagination Tech Ltd Hardware unit for performing matrix multiplication with clock gating
US10481869B1 (en) 2017-11-10 2019-11-19 Apple Inc. Multi-path fused multiply-add with power control
US10564931B1 (en) 2018-04-05 2020-02-18 Apple Inc. Floating-point arithmetic operation range exception override circuit
US11824502B2 (en) 2018-06-05 2023-11-21 Telefonaktiebolaget Lm Ericsson (Publ) Digital predistortion low power implementation
EP3804130A1 (en) 2018-06-05 2021-04-14 Telefonaktiebolaget LM Ericsson (publ) Low-power approximate dpd actuator for 5g-new radio
WO2020053618A1 (en) * 2018-09-10 2020-03-19 Badenhorst Emile A processor and a method of operating a processor
US10713012B2 (en) 2018-10-15 2020-07-14 Intel Corporation Method and apparatus for efficient binary and ternary support in fused multiply-add (FMA) circuits
JP7115211B2 (ja) * 2018-10-18 2022-08-09 富士通株式会社 演算処理装置および演算処理装置の制御方法
US20200159495A1 (en) * 2018-11-15 2020-05-21 Samsung Electronics Co., Ltd. Processing apparatus and method of processing add operation therein
EP4024223A1 (en) 2019-03-15 2022-07-06 Intel Corporation Systems and methods for cache optimization
AU2020241262A1 (en) 2019-03-15 2021-11-04 Intel Corporation Sparse optimizations for a matrix accelerator architecture
US12013808B2 (en) 2019-03-15 2024-06-18 Intel Corporation Multi-tile architecture for graphics operations
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
KR20200111939A (ko) * 2019-03-20 2020-10-05 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
CN110515656B (zh) * 2019-08-28 2021-07-16 中国人民解放军国防科技大学 一种casp指令的执行方法、微处理器及计算机设备
US20210200539A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Generic linear unit hardware accelerator
US11269631B2 (en) 2020-07-29 2022-03-08 Ghost Locomotion Inc. Extending fused multiply-add instructions
US20220188073A1 (en) * 2020-12-11 2022-06-16 Amazon Technologies, Inc. Data-type-aware clock-gating
US20220197595A1 (en) * 2020-12-21 2022-06-23 Intel Corporation Efficient multiply and accumulate instruction when an operand is equal to or near a power of two
JP2024048930A (ja) * 2022-09-28 2024-04-09 ルネサスエレクトロニクス株式会社 半導体装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5128890A (en) * 1991-05-06 1992-07-07 Motorola, Inc. Apparatus for performing multiplications with reduced power and a method therefor
JP3229057B2 (ja) * 1993-02-22 2001-11-12 株式会社東芝 例外処理装置
JP3222313B2 (ja) 1993-04-27 2001-10-29 松下電器産業株式会社 演算装置及び演算方法
JP3561051B2 (ja) * 1995-08-28 2004-09-02 株式会社東芝 演算同期回路
US6427159B1 (en) 1999-08-03 2002-07-30 Koninklijke Philips Electronics N.V. Arithmetic unit, digital signal processor, method of scheduling multiplication in an arithmetic unit, method of selectively delaying adding and method of selectively adding during a first or second clock cycle
US7254698B2 (en) 2003-05-12 2007-08-07 International Business Machines Corporation Multifunction hexadecimal instructions
JP4482052B2 (ja) 2006-02-14 2010-06-16 富士通株式会社 演算装置および演算方法
JP4873546B2 (ja) 2006-06-20 2012-02-08 ルネサスエレクトロニクス株式会社 データ処理装置、データ処理方法
US8037118B2 (en) 2007-04-10 2011-10-11 Eric Quinnell Three-path fused multiply-adder circuit
JP4935619B2 (ja) 2007-10-23 2012-05-23 ヤマハ株式会社 デジタル信号処理装置
US8106914B2 (en) 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US8255726B2 (en) 2008-07-18 2012-08-28 International Business Machines Corporation Zero indication forwarding for floating point unit power reduction
US9152382B2 (en) 2012-10-31 2015-10-06 Intel Corporation Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values

Also Published As

Publication number Publication date
TWI515649B (zh) 2016-01-01
GB2507656B (en) 2016-10-12
TW201428611A (zh) 2014-07-16
CN103793203B (zh) 2017-04-12
GB201318169D0 (en) 2013-11-27
KR20140056080A (ko) 2014-05-09
CN103793203A (zh) 2014-05-14
BR102013027768A2 (pt) 2015-06-30
JP2014093085A (ja) 2014-05-19
US20140122555A1 (en) 2014-05-01
KR101566257B1 (ko) 2015-11-05
DE102013111605A1 (de) 2014-04-30
US20140122554A1 (en) 2014-05-01
US9152382B2 (en) 2015-10-06
US9323500B2 (en) 2016-04-26
GB2507656A (en) 2014-05-07

Similar Documents

Publication Publication Date Title
JP5819380B2 (ja) 入力データ値に応じたfmaユニットにおける電力消費の低減
US9778911B2 (en) Reducing power consumption in a fused multiply-add (FMA) unit of a processor
US10402168B2 (en) Low energy consumption mantissa multiplication for floating point multiply-add operations
TWI625671B (zh) 微處理器與在微處理器中執行之方法
US8577948B2 (en) Split path multiply accumulate unit
CN111767516A (zh) 用于利用所选择的舍入来执行浮点加法的系统和方法
JPH06236257A (ja) データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置
CN102576302B (zh) 微处理器及用于微处理器上增强精确度乘积和计算的方法
US6351760B1 (en) Division unit in a processor using a piece-wise quadratic approximation technique
EP1089166A2 (en) An integer instruction set architecture and implementation
US9519458B1 (en) Optimized fused-multiply-add method and system
CN116991481A (zh) 一种运算指令的执行方法、装置以及介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140916

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150317

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150713

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150721

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150930

R150 Certificate of patent or registration of utility model

Ref document number: 5819380

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

LAPS Cancellation because of no payment of annual fees