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

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

Info

Publication number
JP5307202B2
JP5307202B2 JP2011173104A JP2011173104A JP5307202B2 JP 5307202 B2 JP5307202 B2 JP 5307202B2 JP 2011173104 A JP2011173104 A JP 2011173104A JP 2011173104 A JP2011173104 A JP 2011173104A JP 5307202 B2 JP5307202 B2 JP 5307202B2
Authority
JP
Japan
Prior art keywords
result
precision
bit
bit precision
value
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
JP2011173104A
Other languages
English (en)
Other versions
JP2012022691A (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 JP2012022691A publication Critical patent/JP2012022691A/ja
Application granted granted Critical
Publication of JP5307202B2 publication Critical patent/JP5307202B2/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/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/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/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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

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)である。
当然ながら、本開示は、上述した特徴に限定されるものではない。当業者は、以下の詳細な説明を読むことによって、また、添付の図面を見ることによってさらなる特徴を理解するであろう。
精度制御反復算術論理演算ユニット(IALU)を含むプロセッサの実施形態を示すブロック図である。 図1の精度制御IALUの実施形態を示すブロック図である。 反復算術演算を実行するためのプログラム論理の実施形態を説明する論理フローチャートである。 丸め回路をさらに備える図1の精度制御IALUの実施形態を示すブロック図である。 図4の精度制御IALUによって生成された副精度結果を丸めるためのプログラム論理の実施形態を説明する論理フローチャートである。 図4の精度制御IALUによって生成された副精度結果を丸めるためのプログラム論理の実施形態を説明する論理フローチャートである。
発明の詳細な説明
図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)によってのみ限定される。

Claims (24)

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

Applications Claiming Priority (2)

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

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
JP2012022691A JP2012022691A (ja) 2012-02-02
JP5307202B2 true JP5307202B2 (ja) 2013-10-02

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 Before (1)

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

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
US8495121B2 (en) * 2008-11-20 2013-07-23 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
US20100125621A1 (en) * 2008-11-20 2010-05-20 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
WO2012001819A1 (en) * 2010-07-01 2012-01-05 Telefonaktiebolaget L M Ericsson (Publ) A circular floating-point number generator and a circular floating-point number adder
US9557998B2 (en) 2011-12-28 2017-01-31 Intel Corporation Systems, apparatuses, and methods for performing delta decoding on packed data elements
US9465612B2 (en) 2011-12-28 2016-10-11 Intel Corporation Systems, apparatuses, and methods for performing delta encoding 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
DE68926289T2 (de) 1989-01-13 1996-10-10 Ibm Gleitkommadivisions-Verfahren und -Anordnung
US5249149A (en) 1989-01-13 1993-09-28 International Business Machines Corporation Method and apparatus for performining floating point division
JPH03245226A (ja) 1990-02-22 1991-10-31 Matsushita Electric Ind Co Ltd 浮動小数点乗算装置
US5128889A (en) 1990-02-22 1992-07-07 Matsushita Electric Industrial Co., Ltd. Floating-point arithmetic apparatus with compensation for mantissa truncation
JP2943255B2 (ja) * 1990-06-25 1999-08-30 日本電気株式会社 逆数算出回路
JP3199371B2 (ja) * 1990-07-30 2001-08-20 松下電器産業株式会社 丸め装置
JPH0823812B2 (ja) 1990-08-24 1996-03-06 松下電器産業株式会社 浮動小数点データの演算方法および演算装置
EP0472148B1 (en) 1990-08-24 2001-05-09 Matsushita Electric Industrial Co., Ltd. Method and apparatus for computing floating point data
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
RU2008147911A (ru) 2010-06-10
KR20090007478A (ko) 2009-01-16
CN101432689A (zh) 2009-05-13
TW200821916A (en) 2008-05-16
EP2021916A2 (en) 2009-02-11
CA2649857A1 (en) 2007-11-15
JP5102288B2 (ja) 2012-12-19
CN101432689B (zh) 2014-04-02
WO2007130803A2 (en) 2007-11-15
RU2413972C2 (ru) 2011-03-10
BRPI0711301A2 (pt) 2011-11-22
CA2649857C (en) 2016-01-05
US9146706B2 (en) 2015-09-29
WO2007130803A3 (en) 2008-06-26
JP2012022691A (ja) 2012-02-02
JP2009536409A (ja) 2009-10-08
MX2008014047A (es) 2008-11-14
US20070260662A1 (en) 2007-11-08
TWI350990B (en) 2011-10-21

Similar Documents

Publication Publication Date Title
JP5307202B2 (ja) 精度制御反復算術論理演算ユニット
US9778906B2 (en) Apparatus and method for performing conversion operation
EP1934710B1 (en) Floating-point processor with selectable subprecision
US8595279B2 (en) Floating-point processor with reduced power requirements for selectable subprecision
US20170139677A1 (en) Multiplication of first and second operands using redundant representation
US9753694B2 (en) Division and root computation with fast result formatting
GB2549153B (en) Apparatus and method for supporting a conversion instruction
US9928031B2 (en) Overlap propagation operation
US7237000B2 (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: 20120207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120507

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120605

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121128

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121220

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130626

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5307202

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250