JP5102288B2 - 精度制御反復算術論理演算ユニット - Google Patents

精度制御反復算術論理演算ユニット Download PDF

Info

Publication number
JP5102288B2
JP5102288B2 JP2009509936A JP2009509936A JP5102288B2 JP 5102288 B2 JP5102288 B2 JP 5102288B2 JP 2009509936 A JP2009509936 A JP 2009509936A JP 2009509936 A JP2009509936 A JP 2009509936A JP 5102288 B2 JP5102288 B2 JP 5102288B2
Authority
JP
Japan
Prior art keywords
result
rounding
precision
bit
operand
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
JP2009509936A
Other languages
English (en)
Other versions
JP2009536409A (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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2009536409A publication Critical patent/JP2009536409A/ja
Application granted granted Critical
Publication of JP5102288B2 publication Critical patent/JP5102288B2/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
    • G06F7/49942Significance control
    • 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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • G06F7/537Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
    • 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/46Multiprogramming arrangements
    • 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/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

Landscapes

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

Description

分野
本発明は、一般的には、プロセッサに関し、より詳細には、プロセッサにおいて副精度反復算術演算(sub-precision iterative arithmetic operations)を実行することに関する。
背景
一般的なプロセッサは、除算、平方根演算、および、超越演算(transcendental operation)(例えば、SIN、COS)のような反復演算を実行するための1つまたは複数の算術論理演算ユニットを含む。反復算術演算は、一般的には、定義された所定のビット精度を有する結果が生成されるまで実行される。すなわち、オペランドは、結果レジスタに関連する精度または開始オペランドに関連する精度のような最大精度(full precision,)すなわちターゲット精度(target precision)を有する結果が生成されるまで、反復的に処理される。例えば、米国電気電子技術者協会(IEEE)は、2進浮動小数点演算に関連する規格を定義しており、この規格は、しばしば、IEEE754と呼ばれる。IEEE754規格は、単精度浮動小数点演算および倍精度浮動小数点演算(single and double precision floating-point operations)の両方に関する数値形式、基本的演算、変換、および、例外条件を規定している。
IEEE754準拠浮動小数点数は、3つの基本的な成分、すなわち、符号ビット、指数、仮数を含む。仮数は、さらに、整数部と小数部とに分けられる。符号化のときには、小数ビットだけが、記憶される。通常の数の場合、整数部は、暗黙的に値1に等しい。IEEE754準拠単精度数は、1つの符号ビット、8ビットの指数、および、23ビットの小数によって表現され、倍精度数は、1つの符号ビット、11ビットの指数、および、52ビットの小数によって表現される。そのようなものとして、IEEE754準拠浮動小数点数の反復処理は、単精度オペランドに対しては24ビットの精度および倍精度オペランドに対しては53ビットの精度を有する結果を生成する。例えば、単精度IEEE754準拠ALUを備えるプロセッサは、24ビットの最大精度を有する結果を生成する。しかしながら、openGL準拠グラフィックスアプリケーションのようなある種のアプリケーションは、最大の24ビット単精度を有する結果を必要としないことがある。そのようなものとして、最大単精度よりも多少低い精度、例えば、16ビットの精度を許容することのできるアプリケーションに対して結果を最大の24ビット単精度まで計算することによって、不必要な電力の消費および不必要な処理サイクルの浪費が、発生する。
一般的なプロセッサのあるものは、ターゲット形式の精度よりも低い精度を有する結果を生成する。しかしながら、これらのプロセッサは、実行されるオペランドがターゲット形式よりも低い精度を有するときにだけ、ターゲット形式に到達する前に反復算術演算を終了する。例えば、倍精度プロセッサは、ターゲットレジスタ形式が倍精度値の形式であるときでさえも、単精度オペランドに対して単精度演算を実行し、そして、単精度の結果を生成してもよい。そのようなものとして、通常の演算処理のあるものは、オペランド精度に依存する(operand-precision dependent)ものであり、したがって、オペランドの精度に等しい最大精度を有する結果を生成する。その結果として、電力およびプロセッササイクルは、ある種のアプリケーションに対しては許容または容認できる精度よりも高い精度を有する結果を生成するために、不必要に浪費されることがある。
開示の概要
ここに教示される方法および装置によれば、プロセッサ内に含まれる精度制御反復算術論理演算ユニット(controlled- precision Iterative Arithmetic Logic Unit)(IALU)は、副精度結果(sub-precision result)、すなわち、最大精度よりも低いビット精度を有する結果を生成する。1つまたは複数の実施形態においては、精度制御IALUは、算術論理演算回路および精度制御回路を備える。算術論理演算回路は、1つの結果(a result)を得るために、第1のビット精度のオペランド(operand of a first bit precision)を反復的に処理するように構成されている。精度制御回路は、該結果が、第1のビット精度よりも低いプログラムされた第2のビット精度に達するときに、反復オペランド処理を終了するように、構成されている。最大精度演算の場合のように、低い精度の演算は、適切な丸めを可能にするために、最終的な結果において必要とされるものよりも多いビットを生成することができる。これらの「丸めビット(rounding bits)」は、一般的に、ガード、ラウンド、および、スティッキービット("guard, round, and sticky bits")と呼ばれる。一実施形態においては、精度制御回路は、制御回路によって受け取られたインジケータに応じて、算術論理演算回路に反復オペランド処理を終了させる。精度制御IALUは、さらに、丸めモード、LSB、および、丸めビットに基づいて、副精度結果の最下位ビット(LSB)において、結果を条件付きでインクリメントする(conditionally increment)ように構成された丸め論理(rounding logic)を備える。一実施形態においては、丸め論理は、丸め値を結果のLSBに位置合わせすること(aligning)、および、位置合わせされた丸め値を結果に条件付きで加えること(adding)によって、結果を丸める(round)ように構成されている。
したがって、少なくとも1つの実施形態においては、副精度結果は、
1つの結果を得るために、第1のビット精度のオペランドを反復的に処理すること、および、結果が、第1のビット精度よりも低いプログラムされた第2のビット精度に達するときに、反復オペランド処理を終了すること、によって、プロセッサ内において生成される。さらに、パッドされた結果(padded result)が、第1のビット精度に対応するビット幅を有するように、副精度結果の幅は、結果をパッドすること(padding)によって調整されることができる。
別の実施形態においては、プロセッサは、精度制御IALU(controlled-precision IALU)を備える。プロセッサは、さらに、プログラムされた第2のビット精度を固定としてあるいは動的に変更可能な値として記憶するように構成された記憶エレメントを備える。プログラムされた第2のビット精度が、動的に変更可能な値として記憶される場合、その第2のビット精度は、プロセッサによって受け取られた1つまたは複数の命令に応答して、変更されることができる。精度制御IALUは、プロセッサによって受け取られたインジケータに応じて、反復オペランド処理を終了するように構成される。一実施形態においては、インジケータは、プロセッサ内に含まれるレジスタ内に記憶されたフラグビット(flag bit)である。
当然ながら、本開示は、上述した特徴に限定されるものではない。当業者は、以下の詳細な説明を読むことによって、また、添付の図面を見ることによって、さらなる特徴を理解するであろう。
詳細な説明
図1は、1つまたは複数の精度制御反復算術論理演算ユニット(IALU)12を含むプロセッサ10の一実施形態を示す。精度制御IALU12は、IALU12内に含まれるかまたはIALU12に結合された精度制御回路14の制御下において、IALU12によって生成される結果が最大精度に達する前に反復演算処理を終了するように構成される。すなわち、精度制御回路14によって受け取られた「プログラムされたビット精度(PBP:Programmed Bit Precision)値」に応じて、制御回路14は、副精度結果、すなわち、結果レジスタに関連するような精度または開始オペランドに関連する精度のようなターゲット精度よりも低いビット精度を有する結果をIALU12に生成させる。そのようなものとして、精度制御回路14は、PBP値に応じて、結果が最大精度に達する前にIALU12にオペランド処理を終了させてもよい。したがって、IALU12によって生成される副精度結果は、PBP値に対応する最大精度ではないビット精度を有する。PBP値は、プロセッサ10内に含まれる記憶エレメント、例えば、特殊用途かまたは汎用のレジスタ16またはデータキャッシュメモリー18に保存されてもよい。一実施形態においては、PBP値は、ハードワイヤードされたものであり、したがって、リプログラマブルなものではない。別の実施形態においては、PBP値は、PBPレジスタ16またはデータキャッシュ18内に記憶された動的に変更可能な値であり、したがって、変更することが可能である。PBP値は、1つの命令または一連の命令の一部として、例えば、超長命令語の一部として、プロセッサ10に提供されてもよい。
PBP値が、どのように生成、記憶、または、変更されたかに関係なく、精度制御回路14は、早期にすなわち結果が最大精度に達する前に精度制御IALU12は反復算術演算を終了すべきかどうかを制御するのにPBP値を使用する。一般的な技術とは異なり、精度制御回路14は、オペランド精度に関係なく、結果が最大精度に達する前にIALU12に反復算術演算を終了させてもよい。その代わりに、精度制御回路14は、オペランドの精度に直接に関連するものではないPBP値をそれの早期終了論理の根拠とする。その結果として、精度制御IALU12は、オペランド精度に関係なく副精度結果を生成することができ、それによって、副精度結果を許容することのできるアプリケーション例えばグラフィックスアプリケーションをプロセッサ10が実行しているときに、消費電力を減少させ、かつ、プロセッサ10の性能を改善することができる。
プロセッサ10は、さらに、命令ユニット20、1つまたは複数のロード/ストアユニット22、および、命令キャッシュ24を含む。命令ユニット20は、ロード/ストアユニット22および精度制御IALU12のような様々な実行ユニットへの命令の流れを中央制御する。これらの実行ユニットは、複数の命令を並列に実行してもよい。そのようなものとして、プロセッサ10は、スーパースケーラーであってもよく、および/または、スーパーパイプライン化されてもよい。命令キャッシュ24およびデータキャッシュ18は、システムレジスタ(図示しない)および実行ユニットが命令およびデータに迅速にアクセスするのを可能にする。さらに、データは、実行ユニットの中の1つ、例えば、ロード/ストアユニット22を介して、データキャッシュ18とシステムレジスタとの間を移動してもよい。
図2は、精度制御IALU12の一実施形態を示す。この実施形態においては、IALU12は、算術論理演算回路26を含む。算術論理演算回路26は、除算、平方根、および、超越的関数のような反復算術演算を実行するように構成される。算術論理演算回路26は、プロセッサ10内に含まれるレジスタ28、30からオペランドを受け取る。一例においては、オペランドは、IEEE754単精度に準拠したものであり、したがって、それぞれのレジスタ28、30は、1つの符号ビット、8ビットの指数、および、23ビットの小数を記憶する。さらなる例においては、オペランドは、IEEE754倍精度に準拠したものであり、したがって、それぞれのレジスタ28、30は、1つの符号ビット、11ビットの指数、および、52ビットの小数を記憶する。別の例においては、openGL規格またはカスタムアプリケーションの精度を満たすことのできるオペランドのような、IEEE754規格とは異なる最大精度を有する。
ただ単に説明を簡単にするために、次に、精度制御IALU12の詳細な動作が、IEEE754単精度(ここでは、一般的に単精度と呼ばれる)に対応する最大精度を有するオペランドを参照して説明される。しかしながら、当業者は、精度制御IALU12の1つまたは複数の実施形態は、どのようなビット精度を有するオペランドでも十分に処理できること、したがって、どのような精度が最大精度を定義するかに関係なく、最大精度に到達する前に反復算術演算を終了することができることを容易に理解できるはずである。
図2に戻ると、算術論理演算回路26は、図3のステップ100に示されるように、オペランドレジスタ28、30から受け取った単精度オペランドを反復的に処理する。精度制御回路14は、PBPレジスタ16の内容かまたは1つまたは複数の命令に応答して、算術論理演算回路26に反復処理を中断することなく完結させるか、あるいは、図3のステップ102に示されるように、最大精度結果に達する前に反復処理を終了することによって、算術論理演算回路26に「早期終了」を実行させる。PBPレジスタ16から受け取った情報の一部として、または、1つまたは複数の命令によって提供されるように、精度制御回路14は、算術論理演算回路26は処理を早期に終了すべきかどうかすなわち副精度結果を生成すべきかどうかを決定するインジケータ(RDP)を受け取る。一実施形態においては、インジケータは、PBPレジスタ16内にセットされたフラグビットである。インジケータが、セットされていなければ、精度制御回路14は、算術論理演算回路26に最大単精度が得られるまで反復させ、それによって、図3のステップ104によって示されるように、最大精度結果を生成する。しかしながら、インジケータが、セットされていれば、精度制御回路14は、制御信号(CTRL)を起動し、必要とされる丸めビットを含めて所望の副精度を満たす十分なビットが生成されたときに、算術論理演算回路26に反復を停止させ、それによって、図3のステップ106によって示されるように、副精度結果を生成する。
PBP値は、精度制御回路14が算術論理演算回路26に処理を終了させる時点における結果のビット精度を指示する。例えば、PBP値が、16ビットのビット精度を指示するならば、精度制御回路14は、16ビットのビット精度を備える適切に丸められた結果を生成するのに十分なビットを中間結果が有するときに、算術論理演算回路26に反復を停止させる。
一実施形態においては、PDP値を備えないRDPビットが、予め定められたサイズを有する副精度結果を生成するのに使用される。別の実施形態においては、RDPビットを備えないPDP値が、同様に、低い精度演算を可能にするのに使用される。
一実施形態においては、精度制御回路14は、実行される算術的な反復の回数を追跡するためのステートマシンまたはカウンターを備える。そのようなものとして、精度制御回路14は、算術論理演算回路の処理を監視する。算術論理演算回路26が、PBP値に合致するビット精度を備える適切に丸められた結果を生成するのに十分なビットを有する中間結果を生成したときに、精度制御回路14は、制御信号を起動し、それによって、算術論理演算回路26に処理を終了させる。例えば、精度制御回路14は、算術論理演算回路26によって実行される処理サイクルの数をカウントし、その数が最終的結果のビット精度がPBP値のビット精度に合致することを指示するときに、算術論理演算回路26に処理を終了させる。
精度制御IALU12は、生成された結果を、プロセッサ10内に含まれる結果レジスタ32内に記憶する。結果レジスタ32は、最大精度結果を記憶するのに十分なビット幅を有する。単精度結果の場合、レジスタ32は、最大精度小数結果を記憶するための23ビットの位置を含む(ここで、x=23)。算術論理演算回路26は、結果をレジスタ32内に記憶するとき、副精度結果をパッドすることができ、それによって、レジスタ32の内容が最大精度に対応するパッドされたビット幅を有することを確かなものにすることができる。一実施形態においては、パッドされた副精度結果が最大精度と等価なビット幅を有するように、算術論理演算回路26は、十分な量の論理「0」ビットを結果に付加することによって、副精度結果をパッドする。IALU12は、副精度結果を結果レジスタ32内に記憶してもよいが、(x−n)個のレジスタビットは、有効なものではなく、ここで、n=(PBP値よりも1つだけ大きな有意性を有するビット位置)である。あるいは、IALU12は、副精度結果を別の結果レジスタ(図示しない)内に記憶し、ここで、その別のレジスタのビット幅は、PBP値に対応している。
算術論理演算回路26は、1つまたは複数のオペランド最下位ビット(LSB)を切り捨ててもよく、それによって、切り捨てられたオペランドは、最大オペランド精度よりも低くかつPBP値に関連する精度よりも高いかまたはPBP値に関連する精度に等しいビット精度を有する。算術論理演算回路26は、精度制御回路14から受け取った切り捨て値(TRUNC)に応じて、1つまたは複数のオペランドLSBを切り捨てる。精度制御回路14は、切り捨て値をPBPレジスタ16からかまたは1つまたは複数の命令から得る。一例においては、算術論理演算回路26は、オペランドLSB(1つかまたは複数)をマスクすること(masking)によって、1つまたは複数のオペランドLSBを切り捨てる。
図4は、精度制御IALU12の別の実施形態を示し、IALU12は、さらに、算術論理演算回路26によって生成された結果を丸めるための丸め論理34を含む。この実施形態においては、算術論理演算回路26は、単精度除算器36および商結果を一時的に保持するための商レジスタ38を備える。一般的な丸め論理は、結果のLSB(1つかまたは複数)を削除しかつ残されたビットを調整するための1つまたは複数の丸めアルゴリズムを実施する。例えば、一般的な丸め論理は、1つまたは複数の丸めアルゴリズム、あるいは、以下の丸めアルゴリズム、すなわち、最近似値偶数への丸め、ゼロへの丸め、上方向への丸め、および/または、下方向への丸めを実施する。ガードビット、丸めビット、および、スティッキービットが、丸め処理を助けるのに使用されてもよい。しかしながら、一般的な丸め回路には、副精度結果を丸めるのは面倒なことである。このことは、副精度結果に関連するビット精度が、例えば、PBP値の動的な変更に応じて変化し、そのために、結果のLSB、ガードビット、ラウンドビット、および、スティッキービットが、位置を移動する場合に、とりわけ言えることである。
精度制御IALU12内に含まれる丸め論理34は、特定の副精度結果のLSBを識別することによって、動的に変更可能なビット精度を含めて、副精度結果に関連するビット精度に対して責任を果たす。丸め論理34は、丸め値をLSBに位置合わせすることによって、それによって、結果の適切な丸めを可能にすることによって、副精度結果のLSBに対して責任を果たす。丸め論理34は、丸め回路40および加算器42を含む。丸め回路40は、PBP値を処理し、特定の結果に関連するどのビット位置が条件付きでインクリメントされるべきかを決定する。例えば、丸め回路40は、PBP値に応じて、商レジスタ38内に記憶された結果の条件付きでインクリメントされるべきLSBを識別する。一実施形態においては、丸め回路40は、シフターを備える。シフターは、丸め値を移動またはシフトし、それによって、丸め値は、図5のステップ200によって示されるように、特定の副精度結果のLSB(1つかまたは複数)に位置合わせされる。丸め値は、論理「1」値を、PBP値のLSBに対応するビット位置へシフトすることによって、位置合わせされてもよい。そのようなものとして、丸め値は、対応する結果のLSBに対応するビット位置を除けばすべて論理「0」を有するビットパターンを備える。そして、シフトされた丸め値は、オペランドとして加算器42に提供される。算術論理演算回路26によって生成された副精度結果は、他方のオペランド、例えば、商レジスタ38内に記憶された結果の役割をなす。加算器42は、シフトされた丸め値を、算術論理演算回路26によって生成された結果に条件付きで加算し、図5のステップ202によって示されるように、正確に丸められた結果を生成する。当業者は、結果は、様々な公知の条件付きインクリメント技術の中の1つを用いる丸めモードと協力して、LSB、ガードビット、ラウンドビット、および、スティッキービットに基づいて、丸められてもよいことがわかるはずであり、それらの条件付きインクリメント技術のそれぞれは、ここで開示される実施形態の範囲内に存在する。
別の実施形態においては、丸め回路40は、丸め値を副精度結果のLSB(1つかまたは複数)に位置合わせするための復号器を備え、それによって、結果を適切に丸めることを可能にする。復号器は、PBP値を受け取り、そして、図6のステップ300によって示されるように、そのPBP値に対応する丸め値を生成する。一実施形態においては、丸め値は、PBP値のLSBに対応するビット位置を除けばすべて論理「0」を有するビットパターンを備える。PBP値のLSBに対応する丸め値のビット位置は、論理「1」を備える。そして、丸め値は、オペランドとして加算器42に提供され、そして、算術論理演算回路26によって生成された結果は、他方のオペランドの役割をなす。加算器42は、その丸め値を、算術論理演算回路26によって生成された結果に条件付きで加算し、図6のステップ302によって示されるように、正確に丸められた結果を生成する。このように、丸め値を適切にシフトするかまたはPBP値を復号化し、丸めオペランドを生成し、そして、その丸めオペランドを対応する結果に条件付きで加えることによって、精度制御IALU12は、正確な副精度結果を生成することができる。
上述した一連の変形およびアプリケーションを考えれば、本発明はこれまでの説明によって限定されることはなく、また添付の図面によって限定されることもないことがわかるはずである。その代わりに、本発明は、添付の特許請求の範囲およびそれらの法律上の均等物(legal equivalents)によってのみ限定される。
精度制御反復算術論理演算ユニット(IALU)を含むプロセッサの実施形態を示すブロック図である。 図1の精度制御IALUの実施形態を示すブロック図である。 反復算術演算を実行するためのプログラム論理の実施形態を説明する論理フローチャートである。 丸め回路をさらに備える図1の精度制御IALUの実施形態を示すブロック図である。 図4の精度制御IALUによって生成された副精度結果を丸めるためのプログラム論理の実施形態を説明する論理フローチャートである。 図4の精度制御IALUによって生成された副精度結果を丸めるためのプログラム論理の実施形態を説明する論理フローチャートである。

Claims (30)

  1. プロセッサにおいて反復算術演算を実行する方法であって、
    1つの結果を得るために第1のビット精度のオペランドを反復的に処理することと、
    前記結果が前記第1のビット精度よりも低いプログラムされた第2のビット精度に達するときに前記反復処理を終了することと、なお、前記プログラムされた第2のビット精度は動的に変更可能な値である、
    前記結果を丸めることと、
    を備え、前記の結果を丸めることは、
    前記プログラムされた第2のビット精度に従って丸めオペランドを生成することと、
    前記丸めオペランドを前記結果に加えることと、
    を備える
    方法。
  2. パッドされた結果が前記第1のビット精度に対応するビット幅を有するように前記結果をパッドすることをさらに備える、請求項1に記載の方法。
  3. 前記パッドされた結果が前記第1のビット精度に対応するビット幅を有するように前記結果をパッドすることは、1つまたは複数の論理「0」ビットを前記結果に付加することを備える、請求項2に記載の方法。
  4. 前記第1のビット精度よりも小さいビット幅を有するレジスタ内に前記結果を記憶することをさらに備える、請求項1に記載の方法。
  5. 切り捨てられたオペランドが、前記第1のビット精度よりも低くかつ前記プログラムされた第2のビット精度よりも高いかまたは前記プログラムされた第2のビット精度に等しいビット精度を有するように、前記反復処理を開始する前に、前記オペランドの1つまたは複数の最下位ビット(LSB)を切り捨てることをさらに備える、請求項1に記載の方法。
  6. 前記オペランドの1つまたは複数のLSBを切り捨てることは、前記オペランドの1つまたは複数のLSBをマスクすることを備える、請求項5に記載の方法。
  7. 前記丸めオペランドを生成することは、
    丸め処理されるべき前記結果の最下位ビット(LSB)を識別するために前記プログラムされた第2のビット精度を処理することと、
    丸め値を前記結果の識別された最下位ビット(LSB)に位置合わせすることと、
    位置合わせされた前記丸め値を前記丸めオペランドとして供給することと、
    を備える、請求項1に記載の方法。
  8. 前記丸め値を前記結果の前記識別されたLSBに位置合わせすることは、
    前記丸め値が、前記の結果の前記識別されたLSBに対応するビット位置に配置された論理「1」を有するように、前記丸め値をシフトすることを備える、請求項に記載の方法。
  9. 前記丸めオペランドを生成することは、前記丸めオペランドを生成するために前記第2のプログラムされたビット精度を復号化することを備える、請求項に記載の方法。
  10. 前記プロセッサ内に含まれるレジスタの内容における変化に応じて、前記プログラムされた第2のビット精度を変更することをさらに備える、請求項1に記載の方法。
  11. 前記プロセッサによって受け取られた1つまたは複数の命令に応答して、前記プログラムされた第2のビット精度を変更することをさらに備える、請求項1に記載の方法。
  12. プロセッサにおいて使用するための反復算術論理演算ユニットであって、
    1つの結果を得るために第1のビット精度のオペランドを反復的に処理するように構成された算術論理演算回路と;
    前記結果が、前記第1のビット精度よりも低いプログラムされた第2のビット精度に達するときに、前記反復処理を終了するように構成された精度制御回路と、なお、前記プログラムされた第2のビット精度は動的に変更可能な値である;
    前記結果を丸めるように構成された丸め論理と;
    を備え
    前記丸め論理は、
    前記プログラムされた第2のビット精度に従って丸めオペランドを生成するように構成された丸め回路と、
    前記丸めオペランドを前記結果に加えるように構成された加算器と、
    を備える、反復算術論理演算ユニット。
  13. パッドされた結果が、前記第1のビット精度に対応するビット幅を有するように、前記算術論理演算回路は、さらに、前記の結果をパッドするように構成された、請求項12に記載の反復算術論理演算ユニット。
  14. 前記パッドされた結果が1つまたは複数の論理「0」ビットを前記結果に付加することによって前記第1のビット精度に対応するビット幅を有するように、前記算術論理演算回路は前記の結果をパッドするように構成された、請求項13に記載の反復算術論理演算ユニット。
  15. 切り捨てられたオペランドが、前記第1のビット精度よりも低くかつ前記プログラムされた第2のビット精度よりも高いかまたは前記プログラムされた第2のビット精度に等しいビット精度を有するように、前記算術論理演算回路は、さらに、前記オペランドの1つまたは複数の最下位ビット(LSB)を切り捨てるように構成された、請求項12に記載の反復算術論理演算ユニット。
  16. 前記算術論理演算回路は、前記オペランドの1つまたは複数のLSBをマスクすることによって、前記オペランドの1つまたは複数のLSBを切り捨てるように構成された、請求項15に記載の反復算術論理演算ユニット。
  17. 前記丸め回路は、丸め処理されるべき前記結果の最下位ビット(LSB)を識別するために前記プログラムされた第2のビット精度を処理することによって丸めオペランドを生成し、丸め値を前記結果の識別された最下位ビット(LSB)に位置合わせし、位置合わせされた前記丸め値を前記丸めオペランドとして供給することによって丸めオペランドを生成するように構成された、請求項12に記載の反復算術論理演算ユニット。
  18. 前記丸め回路は、前記丸め値が前記の果の前記識別されたLSBに対応するビット位置に配置された論理「1」を有するように前記丸め値をシフトすることによって、前記丸め値を前記結果の前記識別されたLSBに位置合わせするように構成された、請求項17に記載の反復算術論理演算ユニット。
  19. 前記丸め回路は、前記第2のプログラムされたビット精度を復号化することによって、丸めオペランドを生成するように構成された、請求項12に記載の反復算術論理演算ユニット。
  20. 前記精度制御回路は、前記精度制御回路によって受け取られたインジケータに応じて、前記反復処理を終了するように構成されている、請求項12に記載の反復算術論理演算ユニット。
  21. 1つの結果を得るために第1のビット精度のオペランドを反復的に処理し、前記の結果が前記第1のビット精度よりも低いプログラムされた第2のビット精度に達するときに、前記反復処理を終了するように構成された反復算術論理演算ユニットを備えたプロセッサであって、前記プログラムされた第2のビット精度は動的に変更可能な値であり、前記反復算術論理演算ユニットはさらに、前記プログラムされた第2のビット精度に基づいて丸めオペランドを生成し、前記丸めオペランドを前記結果に加えることによって前記結果を丸めるように構成された、
    プロセッサ。
  22. パッドされた結果が、前記第1のビット精度に対応するビット幅を有するように、前記反復算術論理演算ユニットは、さらに、前記結果をパッドするように構成された、請求項21に記載のプロセッサ。
  23. 前記の結果を記憶するためのレジスタをさらに備え、前記レジスタは、前記第1のビット精度よりも小さいビット幅を有する、請求項21に記載のプロセッサ。
  24. 前記反復算術論理演算ユニットは、丸め処理されるべき前記結果の最下位ビット(LSB)を識別するために前記プログラムされた第2のビット精度を処理することによって丸めオペランドを生成し、丸め値を前記結果の識別された最下位ビット(LSB)に位置合わせし、位置合わせされた前記丸め値を前記丸めオペランドとして供給することによって丸めオペランドを生成するように構成された、請求項21に記載のプロセッサ。
  25. 前記反復算術論理演算ユニットは、前記丸め値が、前記結果の前記識別されたLSBに対応するビット位置に配置された論理「1」を有するように、前記丸め値をシフトすることによって、前記丸め値を前記結果の前記識別されたLSBに位置合わせするように構成された、請求項24に記載のプロセッサ。
  26. 前記反復算術論理演算ユニットは、丸めオペランドを生成するために、前記第2のプログラムされたビット精度を復号化することによって、丸めオペランドを生成するように構成された、請求項21に記載のプロセッサ。
  27. 前記プログラムされた第2のビット精度を動的に変更可能な値として記憶するように構成された記憶エレメントをさらに備える、請求項21に記載のプロセッサ。
  28. 前記記憶される動的に変更可能な値は、前記プロセッサによって受け取られた1つまたは複数の命令に応答して変更される、請求項27に記載のプロセッサ。
  29. 前記算術論理演算ユニットは、前記プロセッサによって受け取られたインジケータに応じて、前記反復処理を終了する、請求項21に記載のプロセッサ。
  30. 前記インジケータは、前記プロセッサ内に含まれるレジスタにおいて記憶されたフラグビットを備える、請求項29に記載のプロセッサ。
JP2009509936A 2006-05-05 2007-04-20 精度制御反復算術論理演算ユニット Active JP5102288B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/381,870 2006-05-05
US11/381,870 US9146706B2 (en) 2006-05-05 2006-05-05 Controlled-precision iterative arithmetic logic unit
PCT/US2007/067119 WO2007130803A2 (en) 2006-05-05 2007-04-20 Controlled-precision iterative arithmetic logic unit

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011173104A Division JP5307202B2 (ja) 2006-05-05 2011-08-08 精度制御反復算術論理演算ユニット

Publications (2)

Publication Number Publication Date
JP2009536409A JP2009536409A (ja) 2009-10-08
JP5102288B2 true JP5102288B2 (ja) 2012-12-19

Family

ID=38662342

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009509936A Active JP5102288B2 (ja) 2006-05-05 2007-04-20 精度制御反復算術論理演算ユニット
JP2011173104A Active JP5307202B2 (ja) 2006-05-05 2011-08-08 精度制御反復算術論理演算ユニット

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011173104A Active JP5307202B2 (ja) 2006-05-05 2011-08-08 精度制御反復算術論理演算ユニット

Country Status (11)

Country Link
US (1) US9146706B2 (ja)
EP (1) EP2021916A2 (ja)
JP (2) JP5102288B2 (ja)
KR (1) KR20090007478A (ja)
CN (1) CN101432689B (ja)
BR (1) BRPI0711301A2 (ja)
CA (1) CA2649857C (ja)
MX (1) MX2008014047A (ja)
RU (1) RU2413972C2 (ja)
TW (1) TWI350990B (ja)
WO (1) WO2007130803A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100125621A1 (en) * 2008-11-20 2010-05-20 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
US8495121B2 (en) * 2008-11-20 2013-07-23 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
US9047119B2 (en) * 2010-07-01 2015-06-02 Telefonaktiebolaget L M Ericsson (Publ) Circular floating-point number generator and a circular floating-point number adder
US9465612B2 (en) 2011-12-28 2016-10-11 Intel Corporation Systems, apparatuses, and methods for performing delta encoding on packed data elements
US9557998B2 (en) 2011-12-28 2017-01-31 Intel Corporation Systems, apparatuses, and methods for performing delta decoding on packed data elements
RU2610247C1 (ru) * 2015-10-19 2017-02-08 Олег Александрович Козелков Многофункциональное логическое устройство
US10296292B2 (en) * 2016-10-20 2019-05-21 Advanced Micro Devices, Inc. Dynamic variable precision computation
CN107038016B (zh) * 2017-03-29 2019-11-15 广州酷狗计算机科技有限公司 一种基于gpu的浮点数转换方法及装置
US10684824B2 (en) 2018-06-06 2020-06-16 Nvidia Corporation Stochastic rounding of numerical values

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3434114A (en) * 1966-09-23 1969-03-18 Ibm Variable floating point precision
US3626427A (en) * 1967-01-13 1971-12-07 Ibm Large-scale data processing system
JPS5378742A (en) * 1976-12-23 1978-07-12 Toshiba Corp Multiplication control system
US4276607A (en) * 1979-04-09 1981-06-30 Sperry Rand Corporation Multiplier circuit which detects and skips over trailing zeros
JPS61213927A (ja) * 1985-03-18 1986-09-22 Hitachi Ltd 浮動小数点演算処理装置
US4823260A (en) * 1987-11-12 1989-04-18 Intel Corporation Mixed-precision floating point operations from a single instruction opcode
EP0377992B1 (en) 1989-01-13 1996-04-17 International Business Machines Corporation Floating point division method and apparatus
US5249149A (en) 1989-01-13 1993-09-28 International Business Machines Corporation Method and apparatus for performining floating point division
US5128889A (en) * 1990-02-22 1992-07-07 Matsushita Electric Industrial Co., Ltd. Floating-point arithmetic apparatus with compensation for mantissa truncation
JPH03245226A (ja) 1990-02-22 1991-10-31 Matsushita Electric Ind Co Ltd 浮動小数点乗算装置
JP2943255B2 (ja) * 1990-06-25 1999-08-30 日本電気株式会社 逆数算出回路
JP3199371B2 (ja) * 1990-07-30 2001-08-20 松下電器産業株式会社 丸め装置
DE69133072T2 (de) 1990-08-24 2003-03-20 Matsushita Electric Ind Co Ltd Verfahren und Gerät zur Berechnung von Gleitkommadaten
JPH0823812B2 (ja) 1990-08-24 1996-03-06 松下電器産業株式会社 浮動小数点データの演算方法および演算装置
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
GB2287333B (en) * 1994-03-11 1998-02-11 Advanced Risc Mach Ltd Data processing multiplier
WO1995031767A1 (en) 1994-05-11 1995-11-23 Vlsi Technology, Inc. Floating-point processor with apparent-precision based selection of execution-precision
US6108772A (en) * 1996-06-28 2000-08-22 Intel Corporation Method and apparatus for supporting multiple floating point processing models
US6029243A (en) * 1997-09-19 2000-02-22 Vlsi Technology, Inc. Floating-point processor with operand-format precision greater than execution precision
US6490607B1 (en) * 1998-01-28 2002-12-03 Advanced Micro Devices, Inc. Shared FP and SIMD 3D multiplier
US6487575B1 (en) 1998-08-31 2002-11-26 Advanced Micro Devices, Inc. Early completion of iterative division
US6173303B1 (en) * 1998-11-06 2001-01-09 National Semiconductor Corp. Multiply circuit and method that detects portions of operands whose partial products are superfluous and modifies partial product manipulation accordingly
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
RU2276805C2 (ru) 2001-07-13 2006-05-20 Интел Зао Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
US6922714B2 (en) 2002-05-09 2005-07-26 International Business Machines Corporation Floating point unit power reduction scheme
NZ524378A (en) * 2003-02-24 2004-12-24 Tait Electronics Ltd Binary shift and subtract divider for phase lock loops
JP2004310432A (ja) 2003-04-07 2004-11-04 Casio Comput Co Ltd 演算装置及びプログラム

Also Published As

Publication number Publication date
JP2012022691A (ja) 2012-02-02
TWI350990B (en) 2011-10-21
WO2007130803A3 (en) 2008-06-26
TW200821916A (en) 2008-05-16
US20070260662A1 (en) 2007-11-08
EP2021916A2 (en) 2009-02-11
JP5307202B2 (ja) 2013-10-02
CA2649857C (en) 2016-01-05
US9146706B2 (en) 2015-09-29
RU2008147911A (ru) 2010-06-10
MX2008014047A (es) 2008-11-14
CA2649857A1 (en) 2007-11-15
JP2009536409A (ja) 2009-10-08
CN101432689B (zh) 2014-04-02
CN101432689A (zh) 2009-05-13
WO2007130803A2 (en) 2007-11-15
RU2413972C2 (ru) 2011-03-10
KR20090007478A (ko) 2009-01-16
BRPI0711301A2 (pt) 2011-11-22

Similar Documents

Publication Publication Date Title
JP5307202B2 (ja) 精度制御反復算術論理演算ユニット
US9778906B2 (en) Apparatus and method for performing conversion operation
US8595279B2 (en) Floating-point processor with reduced power requirements for selectable subprecision
EP1934710B1 (en) Floating-point processor with selectable subprecision
US20170139677A1 (en) Multiplication of first and second operands using redundant representation
US9753694B2 (en) Division and root computation with fast result formatting
US11704092B2 (en) High-precision anchored-implicit processing
US20030037088A1 (en) Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly
JP2010033275A (ja) データ処理方法及びデータ処理プロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110509

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110808

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120607

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120615

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

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

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

Free format text: PAYMENT UNTIL: 20151005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5102288

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250