説明

選択可能な下位精度を有する浮動小数点プロセッサ

【課題】選択可能な下位精度を有する浮動小数点プロセッサを実現する。
【解決手段】選択可能な下位精度を有する浮動小数点プロセッサは浮動小数点フォーマット内の複数のビットを蓄積するように構成されたレジスタ、コントローラ、および浮動小数点数学演算子を含む。コントローラは、ユーザ入力に応じて、浮動小数点演算子のための下位精度を選択するように構成される。コントローラは、選択された下位精度に従って、ビットのサブセットを決定するように構成される。浮動小数点演算子はビットのサブセットのみを使用して浮動小数点演算を実行するように構成される。浮動小数点演算子内で使用されない過剰ビットは低漏洩状態内に押し込まれてもよい。浮動小数点演算に起因する出力値は選択された下位精度に切り詰められるかまたはまるめられる。

【発明の詳細な説明】
【技術分野】
【0001】
[背景]
浮動小数点プロセッサはある数学的な計算、例えば、乗算、割算、三角関数、および指数関数、を高速で行う専門化された計算ユニットである。よって、強力な計算システムはしばしば、主プロセッサの部分としてかまたは共同プロセッサとして、浮動小数点プロセッサを組み込む。1数字の浮動小数点表示は典型的に符号部、指数、および仮数を含む。浮動小数点数の数値を見つけ出すために、仮数は指数の冪に累乗された底(base)(通常コンピュータでは2)によって掛け合わされる。符号は結果値にあてはめられる。
【0002】
浮動小数点プロセッサの精度は仮数を表すために使用されたビット数によって定義される。仮数内のビットが多いほど、精度がより大きい。浮動小数点プロセッサの精度は通常特定のアプリケーション次第である。例えば、ANSI/IEEE−754標準(ほとんどすべてのコンピュータによってフォローされる)は1ビット符号、8ビット指数、および24ビット仮数(mantissa)を有する32ビットシングルフォーマットを指定する。仮数の23端数ビット(fraction bit)のみが32ビット符号化において蓄積され、偶数ビットは、2進ポイントの左に直接含まれる。IEEE−754はまた1ビット符号、11ビット指数、および53ビット仮数を有する64ビットダブルフォーマットをも指定する。シングル符号化に類似して、仮数の52端数ビットのみが64ビット符号化において蓄積され、偶数ビットは、2進ポイントの左に直接含まれる。より高い精度はより高い確度という結果になるが、しかし増大した電力消費という結果になって電算機的にはより強烈である。
【0003】
浮動小数点プロセッサは典型的にシングルフォーマット、またはシングルとダブルフォーマットとの両者のいずれかによって提供された精度に限られるので、浮動小数点算術演算の性能は電算機的な非能率を引き起こすことができる。いくつかのアプリケーションはこれらのタイプの精度を必要とするかもしれない一方で、他のアプリケーションは必要としないかもしれない。例えば、いくつかの図形アプリケーションは16ビット仮数を必要とするだけかもしれない。これらの図形アプリケーションについては、16ビットの精度を越えた任意の確度は不必要な電力消費という結果になりがちである。これは、無線電話機、パーソナルディジタルアシスタント(PDA)、ラップトップ、ゲームコンソール、ページャ、およびカメラのような、電力が貴重である電池動作の装置において特に重要である。もしも1アプリケーションがある低減精度を常に必要とすることが分かれば浮動小数点プロセッサが設計されて、この低減精度を組み入れることができる。しかしながら、最も汎用のプロセッサに関して、代表的な場面はあるアプリケーション、例えば、低減精度が受け入れられる、3D図形を発生することであり、そして他のアプリケーション、例えば、より大きい精度が必要とされる、グローバルポジショニングシステム(GPS)機能を実施することである。よって、浮動小数点フォーマットの低減精度、または下位精度(subprecision)が選択可能である浮動小数点プロセッサについてこの分野において必要性がある。
【発明の概要】
【0004】
浮動小数点プロセッサの1つの実施形態では、浮動小数点プロセッサは1つまたはそれ以上の浮動小数点フォーマット内の複数のビットを蓄積するように構成された浮動小数点レジスタ、コントローラ、および少なくとも1つの浮動小数点演算子を含む。コントローラは浮動小数点演算用の指定された精度の下位精度を選択するように構成される。コントローラは、選択された下位精度に従って、複数のビットのサブセットを決定するようにさらに構成される。浮動小数点演算子は複数のビットのサブセットのみを使用して浮動小数点演算を実行するように構成される。
【0005】
浮動小数点演算を実行することに関する方法の1つの実施形態では、方法は浮動小数点演算用の下位精度を選択することを含む。この方法は選択された下位精度に従って、浮動小数点レジスタ内に蓄積された複数のビットのサブセットを決定することを含む。この方法は複数のビットのサブセットのみを使用して浮動小数点演算を実行することを含む。
【0006】
浮動小数点プロセッサの、および浮動小数点演算を実行することに関する方法の他の実施形態は、その中で浮動小数点プロセッサのおよび浮動小数点演算を実行することに関する方法のいろいろな実施形態が示され、そして図面の方法によって記述される、以下の詳細説明からこの分野の技術者には容易に明白になるであろうことは理解されねばならない。達成されるであろうように、浮動小数点プロセッサのおよび浮動小数点演算を実行することに関する方法の他のおよび異なる実施形態が可能であり、そしてこれらの実施形態を記述するために使用された詳細は多くの点で修正可能である。よって、図面および詳細説明は現存している実例として、そして限定的ではないとして評価されるべきである。
【図面の簡単な説明】
【0007】
【図1】選択可能な下位精度を有する浮動小数点プロセッサの1例を示す機能ブロック図。
【図2】選択可能な下位精度を有する浮動小数点プロセッサ内で使用される浮動小数点レジスタファイルの1例を図式的に示す図。
【図3A】選択可能な下位精度を有する浮動小数点プロセッサを使用して実行される浮動小数点加算の1例を示す概念図。
【図3B】選択可能な下位精度を有する浮動小数点プロセッサを使用して実行される浮動小数点乗算の1例を示す概念図。
【発明を実施するための形態】
【0008】
添付された図面に関して下に述べられた詳細説明は本発明のいろいろな実施形態を記述することを意図しているが、しかし本発明がその中で実行できる実施形態のみを示そうとは思わない。詳細説明は、本発明の徹底的な理解を可能とするために、特別の詳細を含む。しかしながら、本発明がこれらの特別の詳細無しに実施されうることはこの分野の技術者によって理解されねばならない。いくつかの事例では、本発明の概念をより明瞭に図示するために、周知の構造およびコンポーネントはブロック図形式で示される。
【0009】
浮動小数点プロセッサの少なくとも1つの実施形態では、1つまたはそれ以上の浮動小数点演算のための精度は指定されたフォーマットのそれから減少されることができる。数学的な演算を実行するために浮動小数点プロセッサに供給された命令はプログラマブル制御フィールドを含むことができる。制御フィールドは浮動小数点フォーマットの下位精度を選択するために使用されることができる。まさに特別の演算のために要する精度の総計に、浮動小数点フォーマットの下位精度を選択することによって、有意の電力保存のほかにより大きい効率が達成されることができる。
【0010】
図1は選択可能な下位精度を有する浮動小数点プロセッサ(FPP)100の1例を示す機能ブロック図である。浮動小数点プロセッサ100は浮動小数点レジスタファイル(FPR)110;浮動小数点コントローラ(CTL)130;および浮動小数点数学演算子(FPO)140を含む。浮動小数点プロセッサ100は主プロセッサの部分、共同プロセッサ、あるいはバスまたは他のチャネルにより主プロセッサに接続された別個のエンティティとして実施されることができる。
【0011】
浮動小数点レジスタ110は任意の適当な蓄積媒体であってもよい。図1に示された実施形態では、浮動小数点レジスタファイル110はいくつかのアドレス可能なレジスタロケーション115−1(REG1)、115−2(REG2)、…115−N(REGN)を含み、おのおの浮動小数点演算のためのオペランドを蓄積するように構成される。オペランドはメインメモリからのデータおよび/または以前の浮動小数点演算の結果を含むことができる。浮動小数点プロセッサに供給された命令はメインメモリへのおよびからのオペランドを移動するために使用されることができる。
【0012】
図2は、図1とともに記述されたと同様に、選択可能な下位精度を有する浮動小数点プロセッサ100内で使用される浮動小数点レジスタファイル110のためのデータ構造の1例を図式的に示す。図2に図示された実施形態では、浮動小数点レジスタファイル110は、便宜上図2では各レジスタロケーションが参照数字200で参照されている16個のアドレス可能なレジスタを含む。各レジスタロケーション200はIEEE−754 32ビットシングルフォーマットにおける、32ビットの浮動小数点2進数を蓄積するように構成される。特に、各レジスタロケーション200は1ビット符号202、8ビット指数204、および23ビット端数206を含む。しかしながら、浮動小数点プロセッサ100の他の実施形態がIEEE32ビットシングルフォーマット(しかしIEEE64ビットダブルフォーマットに限定されないことを含む)と異なるようにフォーマットされる浮動小数点レジスタファイル210を含んでもよいこと、および/または異なる番号のレジスタロケーションを含むことは理解されねばならない。
【0013】
図1に戻り参照して、浮動小数点コントローラ130は浮動小数点演算の下位精度を選択するように使用されることができる。制御レジスタ137は1つまたはそれ以上の命令の制御フィールド内に送信された下位精度選択ビットを負荷されることができる。後ほどより詳細に記述されるべき方法では、下位精度選択ビットはオペランドの精度を低下させ、そして浮動小数点プロセッサ100内の演算を指示するために浮動小数点コントローラ130によって使用されることができる。
【0014】
浮動小数点演算子140は浮動小数点演算を行うように構成された1つまたはそれ以上のコンポーネントを含んでもよい。これらのコンポーネントは、浮動小数点加算および減算命令を実行するように構成された浮動小数点加算器(ADD)142、および浮動小数点乗算命令を実行するように構成された浮動小数点乗算器(MUL)144を含んでもよいが、しかしそれに限定されない。図1内に見られるように、浮動小数点演算子140内の計算ユニットADD142およびMUL144の各々は相互に、そして各計算ユニットおよび浮動小数点レジスタファイル110の間と同様に、多少演算子が計算ユニット間を転送されるのを認めるように浮動小数点レジスタファイル110に連結される。浮動小数点プロセッサ100の少なくとも1つの実施形態では、計算ユニット(ADD142およびMUL144)の任意の1つの出力は任意の他の計算ユニットの入力であってもよい。浮動小数点レジスタファイル110は、浮動小数点演算子140からの出力である結果と同様に、中間結果を蓄積するために使用されることができる。
【0015】
加算器142は、浮動小数点フォーマットで標準の算術演算を実行するように構成された、従来の浮動小数点加算器であってもよい。乗算器144は、浮動小数点乗算を実行するように構成された、従来の浮動小数点乗算器であってもよい。乗算器144は、実例によって、ブースまたは修正ブースアルゴリズムを用いて実施でき、そして部分積を発生する部分積発生論理、および部分積を合計する多数のけた上げ保留加算器を含んでもよい。
【0016】
簡単のため加算器142および乗算器144のみが図1には示されているが、浮動小数点演算子140はまた、この分野で知られている、そして他のタイプの浮動小数点数学演算を実行するように構成される(図示されない)他の計算ユニットを含んでもよい。これらの計算ユニットは下記を含んでもよいが、しかしこれに限定されない:浮動小数点割算命令を実行するように構成された浮動小数点除算器;浮動小数点平方根抽出命令を実行するように構成された浮動小数点平方根抽出器;浮動小数点指数命令を実行するように構成された浮動小数点指数演算子;対数関数を計算するための命令を実行するように構成された浮動小数点対数演算子;および三角関数を計算するための命令を実行するように構成された浮動小数点三角法演算子。
【0017】
浮動小数点プロセッサ100の種々の実施形態は上に記録された計算ユニットの1つのみ、またはいくつか、あるいはすべてを含んでもよい。浮動小数点演算子もまた、実例によって、比較、および変換のような、より多くの基本演算を行うための(図示されない)他のユニットを含んでもよい。そのようなユニットはこの分野では周知であり、そして任意の適当な商業的に使用可能なユニットが使用されてもよい。例えば、加算器142および乗算器144は各々、入力演算子を一直線にするアライナー、結果を標準フォーマットにシフトするノーマライザー、および結果を指定されたラウンディングモードに基づいてまるめる(rounding)ラウンダーのような1つまたはそれ以上の周知の従来のサブユニットを含んでもよい。ビットインバータ、マルチプレクサ、カウンタ、および結合論理回路のような周知の回路エレメントもまた加算器142および乗算器144内に含まれる。
【0018】
図1に図示されたように、浮動小数点演算子140は、要求された浮動小数点演算の各命令について、関連がある計算ユニット、即ち、加算器142または乗算器144が、1つまたはそれ以上のレジスタロケーションREG1,…,REGN内に蓄積された1つまたはそれ以上のオペランドを浮動小数点レジスタファイル110から受信することができるように、浮動小数点レジスタファイル110に接続される。レジスタファイル110からオペランドを選択して受信し、そして受信されたオペランドを計算ユニットによって認識された内部データフォーマットに変換する従来の浮動小数点フォーマットコンバータ(図示せず)は、浮動小数点レジスタファイル100におよび各計算ユニット(ADD142またはMUL144)に連結されることができる。
【0019】
浮動小数点レジスタファイル110からオペランドを受信して、浮動小数点演算子140内の1つまたはそれ以上の計算ユニットは、浮動小数点コントローラ130によって選択された下位精度で、受信オペランド上の要求された浮動小数点演算の命令を実行できる。出力は、図1に示されたように、蓄積用の浮動小数点レジスタ110に送り返されることができる。
【0020】
浮動小数点プロセッサ100の少なくとも1つの実施形態では、ソフトウェア選択可能モードは浮動小数点演算の精度を減少させるために使用されることができる。上で説明されたように、浮動小数点プロセッサ100に供給された命令は下位精度選択ビットを送信するためにプログラマブル制御フィールドを含んでもよい。下位精度選択ビットは、浮動小数点演算の間各オペランド用の仮数のビット長を順番に制御する、制御レジスタ137に書き込まれる。あるいは、下位精度選択ビットは、図1に示されたモニタスクリーン/キーボード/マウスコンビネーション150を限定されずに含む、任意の適切なユーザインターフェイスから直接に書き込まれることができる。浮動小数点プロセッサ100のもう1つの実施形態では、下位精度選択ビットは主プロセッサ、またはそれの運用システムから、制御レジスタ137に直接に書き込まれることができる。浮動小数点コントローラ130内に示される、制御レジスタ137は、孤立したエンティティ、もう1つに統合されたエンティティ、または中で分配された複数のエンティティとしてほかの場所に属してもよい。
【0021】
下位精度選択ビットは浮動小数点演算の精度を減少させるために使用されることができる。これは種々様々な方法で達成されることができる。少なくとも1つの実施形態では、コントローラ130は浮動小数点演算子140に下位精度選択ビットによって指定された精度を満たすために必要な端数の最上位ビット(MSB)のみをレジスタファイル110から読み出させることができる。精度が高いほど、より多くの端数ビットが必要である。実例によって、もしもレジスタファイル内の各ロケーションが23ビット端数を含み、そして浮動小数点演算子のために必要とされる下位精度が10ビットであれば、端数の9MSBのみが必要とされる;隠れまたは整数ビットは第10番目になる。もしも1つまたはそれ以上の命令についての下位精度が16ビットに増加されれば、その時仮数の15MSBが必要とされるであろう。後者の場合には、端数の8最下位ビット(LSB)が単純に無視されてもよい。あるいは、コントローラ130は過剰ビット(excess bit)224に対応する蓄積レジスタエレメントをターンオフしてもよい。
【0022】
追加の電力保存は、浮動小数点レジスタファイル110が動的読出し論理を用いて実施される時に実現されることができる。静的読出し論理と違って、動的読出し論理はビットラインをプリチャージすること、そしてその後選択されたメモリロケーション内のデータに基づいてそれらをディスチャージすることによってより速い読出し時間を可能にする。このように、動的読出し論理と共に、過剰仮数ビット(excess mantissa bit)に対応する読出し論理はプリチャージされる必要が無いので、電力は保存されることができる。浮動小数点プロセッサ100のある実施形態では、浮動小数点演算子140は各オペランドについて全端数を読み出す。コントローラ130はその後、浮動小数点演算を実行する前に浮動小数点演算子140に過剰仮数ビットを切り詰め(truncate)させることができる。浮動小数点プロセッサ100の他の実施形態では、コントローラ130は各演算子に関する仮数を要求された精度にまるめるために浮動小数点演算子140のフロントエンドにおける特別な処理(図示せず)を促すことができる。
【0023】
もう1つの可能性のあるアプローチはコントローラ130に対して浮動小数点演算子140について各オペランドに関する過剰仮数ビットを低漏洩状態(low-leakage state)に押し込むことを促すことである。一般に多くの電子コンポーネント、そして特に半導体装置は、漏洩電流を経験する。漏洩電流は、例えば、金属酸化物半導体(MOS)トランジスタのゲート酸化物領域を横切って流れている電流のような、寄生電流である。トランジスタのサイズは小さくなり続け、そして1チップに統合されたトランジスタの数は増加するので、漏洩電流はより大きい関心事になる。複数のトランジスタから成る、論理ゲートの特定の構造次第で、1つの状態では他よりも多くの漏洩電流を有する傾向があるであろう。浮動小数点演算子140の特殊の論理ゲート配列は知られているので、浮動小数点演算子140は過剰仮数ビットを低漏洩状態、即ち、最小漏洩電流という結果になる状態、に押し込むために使用されることができる。この構造について後でより詳細に説明されるであろうように、浮動小数点演算子140は低漏洩状態に押し込められた過剰仮数ビットが浮動小数点演算の結果に影響を及ぼすことをさせないように構成される。
【0024】
図3Aは、上述されたように、選択可能な下位精度を有する浮動小数点プロセッサを使用して実行される、浮動小数点加算を示す概念図である。簡単のため、加算器300内の2つの浮動小数点数302および304の加算が図示される。また、簡単のため、2つの浮動小数点数302および304は、いかなる移動も必要としないように、既に整列されていた。浮動小数点数302および304は、選択されたビット、即ち、加算演算のための仮数のMSB、および過剰ビットの数、即ち、加算演算では使用されないであろう仮数のLSBで示される。選択されたビットは・記号を使用して示され、そして浮動小数点数302については参照数字312で、および浮動小数点数304については参照数字314で示される。加算において使用されない過剰ビットは×記号を使用して図示され、そして浮動小数点数302については参照数字313で、および浮動小数点数304については参照数字315で示される。
【0025】
過剰ビットがゼロ(0)に押し込まれる事態では、浮動小数点数加算演算はその結果に影響を及ぼすこと無しに行われることができる。しかしながら、加算器について過剰ビットが低漏洩状態に押し込まれるところでは、過剰ビットがその結果に影響を及ぼすのを防ぐために、あるステップが取られねばならない。実例によって、もしも低漏洩状態が1つ(1)ならば、過剰ビットの加算は選択されたビットにキャリーアウトを生成できる。少なくとも1つの実施形態では、浮動小数点数演算子は過剰ビットの加算の結果としてのいかなるキャリーアウトもブロックするか、あるいは選択されたビットを加算する時に、そのようなキャリーアウトを無視するように構成されてもよい。あるいは、過剰ビットの加算がキャリーアウトという結果にならないことを確かめるために十分な数の最上位過剰ビットがゼロ(0)に設定されてもよい。
【0026】
図1に戻り参照して、浮動小数点加算演算は最大精度を有する結果を生成できる。コントローラ130は、結果をレジスタファイル110内に書き戻す前に、浮動小数点演算子140に結果の精度を適当なレベルに減少させるために使用されることができる。これは制御レジスタ137内の下位精度選択ビットにより必要とされる精度にこの結果をまるめることによって達成されることができる。あるいは、浮動小数点加算演算の結果として生ずる過剰仮数ビットが切り詰められてもよい。もしも浮動小数点演算子140へのオペランド入力内の過剰仮数ビットがゼロ(0)に設定されたならば、その時浮動小数点加算演算もまた過剰仮数ビット内にゼロ付きの結果を生成するであろう。しかしながら、もしもオペランド内の過剰端数ビットが切り詰められなかったかあるいは低漏洩状態に設定されたならば、浮動小数点加算演算の結果として生ずる過剰端数ビットはオールゼロ(0)ではありえない。この場合には、コントローラ130は、結果をレジスタファイル110内に書き戻す前に、すべての過剰端数ビットをゼロ(0)に設定するために浮動小数点演算子140にある処理(図示せず)を行わせる。浮動小数点演算子の少なくとも1つの実施形態では、結果は低漏洩状態に設定されている過剰端数ビットを有するレジスタファイルに書き戻されることができる。また、少なくとも1つの実施形態では、過剰端数ビットは、レジスタファイルを更新すること、それによってレジスタファイル内の電力を保存することを妨害されるかもしれない。
【0027】
図3Bは、上述されたように、選択可能な下位精度を有する浮動小数点プロセッサ100を使用して行われる、乗算器(MUL)400内の浮動小数点乗算を示す概念図である。周知のように、2進数乗算は基本的に一連の桁送り値の加算である。もしもユーザによって選択された下位精度がN仮数ビットを供給するならば、(各々N仮数ビットを有する)2つの浮動数の乗算の結果として生ずる乗算器の生の出力値は2N出力仮数ビットまでを持つことができる。乗算器の結果が2N仮数ビットの場合は、N過剰ビットは結果がレジスタファイルに書き戻される前に除去されることができる。コントローラはこの機能をいろいろの方法で行うことができる。実例によって、コントローラは浮動小数点演算子にその結果を所望の精度に切り詰めさせることができる。あるいは、コントローラは浮動小数点演算子にその結果を所望のNビット精度にまるめさせることができる。いずれにしても、N−1端数ビットは過剰端数ビット位置にゼロを有するかまたは有さないレジスタファイルに書き込まれることができる。浮動小数点演算子の少なくとも1つの実施形態では、その結果は低漏洩状態に設定されている過剰端数ビットと共にレジスタファイルに書き戻されることができる。
【0028】
この中に開示された実施形態に関して記述されたいろいろの実例となる論理ユニット、ブロック、モジュール、回路、エレメント、および/またはコンポーネントは、汎用プロセッサの部分である浮動小数点プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理コンポーネント、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいはそれによってこの中に記述された機能を実行するように設計された任意の組合わせにおいて実施または実行されることができる。汎用プロセッサはマイクロプロセッサであってもよいが、しかし代替例では、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた計算コンポーネントの組合わせ、例えば、DSPとマイクロプロセッサとの組合わせ、複数のマイクロプロセッサ、DSPコアとともに1つまたはそれ以上のマイクロプロセッサ、あるいは任意の他のそのような構成として実施されてもよい。
【0029】
この中に開示された実施形態に関して記述された方法またはアルゴリズムはハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、あるいはこの2つの組合わせで、直接に実施されることができる。ソフトウェアモジュールはRAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、着脱可能型ディスク、CD−ROM、またはこの分野で既知の任意の他の形式の蓄積媒体であってもよい。蓄積媒体は、プロセッサがこの蓄積媒体から情報を読み取り、そしてこれに情報を書き込むことができるようにプロセッサに連結されてもよい。代替案では、蓄積媒体はプロセッサに統合されてもよい。
【0030】
開示された実施形態の前の説明はこの分野の任意の技術者が本発明を製作または使用することを可能とするように提供される。これらの実施形態へのいろいろな変更はこの分野の技術者にはたやすく明白であるだろうし、そしてこの中に定義された包括的な原理はこの発明の精神または範囲から逸脱すること無しに他の実施形態に適用されてもよい。したがって、本発明はこの中に示された実施形態に制限されるつもりはないが、しかしクレームと一致する全範囲が許容されるべきであり、ここにおいて単数での要素の引用は明確にそう表現しない限り“1つのおよび唯一の”を意味することを意図せず、むしろ“1つまたはそれ以上の”を意味する。この分野の通常の技術者に知られているかあるいは後で知られることになるこの開示の全体を通して記述されたいろいろな実施形態の要素との構造的なおよび機能的な等価物はすべて引用によってこの中に明確に組み込まれ、そしてクレームによって包含されることを意図する。さらに、この中に開示されなかった何物も、そのような開示がクレームに明白に記載されるかどうかにかかわらず公共に捧げられる意図はない。要素が慣用句“ための方法”を使用して明白に記載されるか、あるいは方法のクレームの場合には、要素が慣用句“ためのステップ”を使用して記載されなければ、どのクレーム要素も35U・S・C§112、第6節の規定の下で解釈されるべきではない。

【特許請求の範囲】
【請求項1】
浮動小数点演算を実行する方法であって、
浮動小数点演算のためのフォーマットを選択すること、
該浮動小数点演算のための下位精度を選択すること、
選択された下位精度に従い、浮動小数点レジスタ内に蓄積された複数のビットのサブセットを決定すること、なお、該浮動小数点レジスタは指数ビットを蓄積するように構成された指数セクションおよび端数ビットを蓄積するように構成された端数セクションを含み、そして該過剰ビットは端数ビットを含み、そして、
該複数のビットの該サブセットのみを使用して該浮動小数点演算を実行すること
を含む方法。
【請求項2】
該複数のビットの該サブセットを決定することは、該サブセットから1つまたはそれ以上の過剰ビットを排除することを含む、請求項1記載の方法。
【請求項3】
該過剰ビットを低漏洩状態に押し込むことをさらに含む、請求項2記載の方法。
【請求項4】
該浮動小数点演算を実行することは、
該選択された下位精度によって特徴づけられた入力数を発生するために、該レジスタから該サブセット内に含まれた該ビットのみを読み取ること、および該過剰ビットのいずれをも読み取らないこと、そして
複数の出力ビットを有する出力数を発生するために、該入力数上で該浮動小数点演算を実行すること
を含む、請求項2記載の方法。
【請求項5】
該出力数から該選択された下位精度を超過する該出力ビットのいずれかを切り詰めることをさらに含み、それにより該選択された下位精度によって特徴づけられた切り詰められた出力数を発生する、請求項4記載の方法。
【請求項6】
該出力数を該選択された下位精度にまるめることをさらに含む、請求項4記載の方法。
【請求項7】
該サブセット内の該ビットを読み取ることは該サブセット内の該ビットラインのすべてをプリチャージすること、および該過剰ビットのすべてをディスチャージされた状態のままにすることを含む、請求項4記載の方法。
【請求項8】
該浮動小数点演算を実行することは
該レジスタから該複数のビットのすべてを読み取ること、
読み取られた該ビットから、該過剰ビットのすべてを切り詰め、それにより該選択された下位精度によって特徴づけられた切り詰められた入力数を発生すること、および
複数の出力ビットを有する出力数を発生するために該切り詰められた入力数上で該浮動小数点演算を実行すること
を含む、請求項2記載の方法。
【請求項9】
該出力数から該選択された下位精度を超過する該出力ビットのいずれかを切り詰めることをさらに含む、請求項8記載の方法。
【請求項10】
該出力数を該選択された下位精度にまるめることをさらに含む、請求項8記載の方法。
【請求項11】
該浮動小数点演算を実行することはすべての過剰ビットをゼロに押し込むことを含む、請求項2記載の方法。
【請求項12】
該レジスタは複数のレジスタエレメントを具備し、各レジスタエレメントは該複数のビットのそれぞれの1つに対応し、そして該浮動小数点演算を実行することは該過剰ビットの1つに対応する該レジスタエレメントのいずれかをターンオフすることを含む、請求項2記載の方法。
【請求項13】
該浮動小数点演算を実行することは該過剰ビットのいずれかから該サブセット内のいずれかの1つへのキャリーアウトをブロックすることを含む、請求項2記載の方法。
【請求項14】
該浮動小数点のためのフォーマットは、
1つの符号ビット、8指数ビット、および23端数ビットを含むシングルフォーマット、
1つの符号ビット、11指数ビット、および52端数ビットを含むダブルフォーマット、および
1つの符号ビット、15指数ビット、および64仮数ビットを含む拡張フォーマット、
の少なくとも1つを含む請求項1記載の方法。
【請求項15】
該浮動小数点演算は、浮動小数点加算、浮動小数点減算、浮動小数点乗算、浮動小数点割算、浮動小数点平方根抽出、浮動小数点三角関数計算、浮動小数点指数関数計算、および浮動小数点対数関数計算の少なくとも1つを含む、請求項1記載の方法:。
【請求項16】
浮動小数点プロセッサであって、
浮動小数点フォーマット内の複数のビットを蓄積するように構成されたレジスタ、
浮動小数点演算のための下位精度を選択するように構成された、および該選択された下位精度に従って該複数のビットのサブセットを決定するようにさらに構成されたコントローラ、および
該複数のビットの該サブセットのみを使用して該浮動小数点演算を実行するように構成された浮動小数点演算子
を具備する浮動小数点プロセッサ。
【請求項17】
該コントローラはユーザ入力に応じて該下位精度を選択するようにさらに構成された、請求項16記載の浮動小数点プロセッサ。
【請求項18】
該コントローラは該サブセットから1つまたはそれ以上の過剰ビットを排除することによって該ビットの該サブセットを決定するようにさらに構成される、請求項16記載の浮動小数点プロセッサ。
【請求項19】
該浮動小数点レジスタは指数ビットを蓄積するように構成された指数セクションおよび端数ビットを蓄積するように構成された端数セクションを具備し、および
該過剰ビットは端数ビットを具備する、
請求項18記載の浮動小数点プロセッサ。
【請求項20】
該コントローラは該過剰ビットを低漏洩状態に押し込むようにさらに構成される、請求項18記載の浮動小数点プロセッサ。
【請求項21】
該浮動小数点演算子は、
浮動小数点加算および減算を実行するように構成された浮動小数点加算器、
浮動小数点乗算を実行するように構成された浮動小数点乗算器、
浮動小数点割算を実行するように構成された浮動小数点除算器、
浮動小数点平方根抽出を実行するように構成された浮動小数点平方根抽出器、
浮動小数点指数関数を計算するように構成された浮動小数点指数演算子、
浮動小数点対数関数を計算するように構成された浮動小数点対数演算子、および
浮動小数点三角関数を計算するように構成された浮動小数点三角関数演算子の少なくとも1つを具備する、
請求項16記載の浮動小数点プロセッサ。
【請求項22】
該浮動小数点演算子は該選択された下位精度によって特徴づけられた1つまたはそれ以上の浮動小数点数を入力として受け入れるように、該レジスタから該サブセット内の該ビットのみを読み取るように、および該過剰ビットのいずれをも読み取らないようにさらに構成され、および
該浮動小数点演算子は複数の出力ビットを有する出力数を発生するように1つまたはそれ以上の入力浮動小数点数上で該浮動小数点演算を実行するようにさらに構成される、
請求項18記載の浮動小数点プロセッサ。
【請求項23】
該浮動小数点演算子は該出力数から該選択された下位精度を超過する該出力ビットのいずれかを切り詰めるようにさらに具備され、それにより該選択された下位精度によって特徴づけられた切り詰められた出力数を発生する、
請求項22記載の浮動小数点プロセッサ。
【請求項24】
該浮動小数点演算子は該出力数を該選択された下位精度にまるめるようにさらに構成される、請求項22記載の浮動小数点プロセッサ。
【請求項25】
該浮動小数点演算子は該サブセット内の該ビットのすべてをプリチャージするように、および該過剰ビットのすべてをディスチャージされた状態のままにするようにさらに構成される、請求項22記載の浮動小数点プロセッサ。
【請求項26】
該浮動小数点演算子は該レジスタから該レジスタ内に蓄積された該複数のビットのすべてを読み取るようにさらに構成され、
該浮動小数点演算子は読み取られた該ビットから、該過剰ビットのすべてを切り詰めるようにさらに構成され、それにより該選択された下位精度によって特徴づけられた切り詰められた入力数を発生し、および
該浮動小数点演算子は複数の出力ビットを有する出力数を発生するために該切り詰めるられた入力数上で該浮動小数点演算を実行するようにさらに構成される、請求項18記載の浮動小数点プロセッサ。
【請求項27】
該浮動小数点演算子は該出力数から該選択された下位精度を超過する該出力ビットのいずれかを切り詰めるようにさらに構成される、請求項26記載の浮動小数点プロセッサ。
【請求項28】
該浮動小数点演算子は該出力数を該選択された下位精度にまるめるようにさらに構成される、請求項26記載の浮動小数点プロセッサ。
【請求項29】
該コントローラはすべての過剰ビットをゼロに押し込むようにさらに構成される、請求項18記載の浮動小数点プロセッサ。
【請求項30】
該レジスタは複数のレジスタエレメントを具備し、各レジスタエレメントは該複数のビットのそれぞれの1つに対応し、そして該コントローラは該過剰ビットの1つに対応する該レジスタエレメントのいずれかをターンオフするようにさらに構成される、請求項18記載の浮動小数点プロセッサ。
【請求項31】
該コントローラはキャリングオーバから該サブセット内のビットの1つへの該過剰ビットのいずれかをブロックオフするように構成される、請求項18記載の浮動小数点プロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate


【公開番号】特開2012−69123(P2012−69123A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−222834(P2011−222834)
【出願日】平成23年10月7日(2011.10.7)
【分割の表示】特願2008−534695(P2008−534695)の分割
【原出願日】平成18年10月4日(2006.10.4)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED