説明

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

【課題】オペランド精度よりも高い精度で演算するので不必要な処理サイクルが発生することを防止する。
【解決手段】プロセッサに含まれる精度制御反復算術論理演算ユニット(IALU)は、副精度結果、すなわち、最大精度よりも低いビット精度を有する結果を生成する。一実施形態においては、精度制御IALUは、算術論理演算回路および精度制御回路を備える。算術論理演算回路は、結果を得るために、第1のビット精度のオペランドを反復的に処理するように構成される。精度制御回路は、第1のビット精度よりも低いプログラムされた第2のビット精度に結果が達するときに、反復オペランド処理を終了するように構成される。一実施形態においては、精度制御回路は、制御回路によって受け取られたインジケータに応じて、算術論理演算回路に反復オペランド処理を終了させる。精度制御IALUは、さらに、副精度結果を丸めるように構成された丸め論理を備える。

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

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

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−22691(P2012−22691A)
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−173104(P2011−173104)
【出願日】平成23年8月8日(2011.8.8)
【分割の表示】特願2009−509936(P2009−509936)の分割
【原出願日】平成19年4月20日(2007.4.20)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED