(57)【要約】選択可能な下位精度を有する浮動小数点プロセッサ  選択可能な下位精度を有する浮動小数点プロセッサは浮動小数点フォーマット内の複数のビットを蓄積するように構成されたレジスタ、コントローラ、および浮動小数点数学演算子を含む。コントローラは、ユーザ入力に応じて、浮動小数点演算子のための下位精度を選択するように構成される。コントローラは、選択された下位精度に従って、ビットのサブセットを決定するように構成される。浮動小数点演算子はビットのサブセットのみを使用して浮動小数点演算を実行するように構成される。浮動小数点演算子内で使用されない過剰ビットは低漏洩状態内に押し込まれてもよい。浮動小数点演算に起因する出力値は選択された下位精度に切り詰められるかまたはまるめられる。
2009512017.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点演算を実行する方法であって、
浮動小数点演算のためのフォーマットを選択すること、
該浮動小数点演算のための下位精度を選択すること、
選択された下位精度に従い、浮動小数点レジスタ内に蓄積された複数のビットのサブセットを決定すること、なお、該浮動小数点レジスタは指数ビットを蓄積するように構成された指数セクションおよび端数ビットを蓄積するように構成された端数セクションを含み、そして該過剰ビットは端数ビットを含み、そして、
該複数のビットの該サブセットのみを使用して該浮動小数点演算を実行すること
を含む方法。
【請求項２】
該複数のビットの該サブセットを決定することは、該サブセットから１つまたはそれ以上の過剰ビットを排除することを含む、請求項１記載の方法。
【請求項３】
該過剰ビットを低漏洩状態に押し込むことをさらに含む、請求項２記載の方法。
【請求項４】
該浮動小数点演算を実行することは、
該選択された下位精度によって特徴づけられた入力番号を発生するために、該レジスタから該サブセット内に含まれた該ビットのみを読み取ること、および該過剰ビットのいずれをも読み取らないこと、そして
複数の出力ビットを有する出力番号を発生するために、該入力番号上で該浮動小数点演算を実行すること
を含む、請求項２記載の方法。
【請求項５】
該出力番号から該選択された下位精度を超過する該出力ビットのいずれかを切り詰めることをさらに含み、それにより該選択された下位精度によって特徴づけられた切り詰められた出力番号を発生する、請求項４記載の方法。
【請求項６】
該出力番号を該選択された下位精度にまるめることをさらに含む、請求項４記載の方法。
【請求項７】
該サブセット内の該ビットを読み取ることは該サブセット内の該ビットラインのすべてをプリチャージすること、および該過剰ビットのすべてをディスチャージされた状態のままにすることを含む、請求項４記載の方法。
【請求項８】
該浮動小数点演算を実行することは
該レジスタから該複数のビットのすべてを読み取ること、
読み取られた該ビットから、該過剰ビットのすべてを切り詰め、それにより該選択された下位精度によって特徴づけられた切り詰められた入力番号を発生すること、および
複数の出力ビットを有する出力番号を発生するために該切り詰められた入力番号上で該浮動小数点演算を実行すること
を含む、請求項２記載の方法。
【請求項９】
該出力番号から該選択された下位精度を超過する該出力ビットのいずれかを切り詰めることをさらに含む、請求項８記載の方法。
【請求項１０】
該出力番号を該選択された下位精度にまるめることをさらに含む、請求項８記載の方法。
【請求項１１】
該浮動小数点演算を実行することはすべての過剰ビットをゼロに押し込むことを含む、請求項２記載の方法。
【請求項１２】
該レジスタは複数のレジスタエレメントを具備し、各レジスタエレメントは該複数のビットのそれぞれの１つに対応し、そして該浮動小数点演算を実行することは該過剰ビットの１つに対応する該レジスタエレメントのいずれかをターンオフすることを含む、請求項２記載の方法。
【請求項１３】
該浮動小数点演算を実行することは該過剰ビットのいずれかから該サブセット内のいずれかの１つへのキャリーアウトをブロックすることを含む、請求項２記載の方法。
【請求項１４】
該浮動小数点フォーマットは、
１つのサインビット、８指数ビット、および２３端数ビットを含むシングルフォーマット、
１つのサインビット、１１指数ビット、および５２端数ビットを含むダブルフォーマット、および
１つのサインビット、１５指数ビット、および６４仮数ビットを含む拡張フォーマット、
の少なくとも１つを含む請求項１記載の方法。
【請求項１５】
該浮動小数点演算は、浮動小数点加算、浮動小数点減算、浮動小数点乗算、浮動小数点割算、浮動小数点平方根抽出、浮動小数点三角関数計算、浮動小数点指数関数計算、および浮動小数点対数関数計算の少なくとも１つを含む、請求項１記載の方法：。
【請求項１６】
浮動小数点プロセッサであって、
浮動小数点フォーマット内の複数のビットを蓄積するように構成されたレジスタ、
浮動小数点演算のための下位精度を選択するように構成された、および該選択された下位精度に従って該複数のビットのサブセットを決定するようにさらに構成されたコントローラ、および
該複数のビットの該サブセットのみを使用して該浮動小数点演算を実行するように構成された浮動小数点演算子
を具備する浮動小数点プロセッサ。
【請求項１７】
該コントローラはユーザ入力に応じて該下位精度を選択するようにさらに構成された、請求項１６記載の浮動小数点プロセッサ。
【請求項１８】
該コントローラは該サブセットから１つまたはそれ以上の過剰ビットを排除することによって該ビットの該サブセットを決定するようにさらに構成される、請求項１６記載の浮動小数点プロセッサ。
【請求項１９】
該浮動小数点レジスタは指数ビットを蓄積するように構成された指数セクションおよび端数ビットを蓄積するように構成された端数セクションを具備し、および
該過剰ビットは端数ビットを具備する、
請求項１８記載の浮動小数点プロセッサ。
【請求項２０】
該コントローラは該過剰ビットを低漏洩状態に押し込むようにさらに構成される、請求項１８記載の浮動小数点プロセッサ。
【請求項２１】
該浮動小数点演算子は、
浮動小数点加算および減算を実行するように構成された浮動小数点加算器、
浮動小数点乗算を実行するように構成された浮動小数点乗算器、
浮動小数点割算を実行するように構成された浮動小数点除算器、
浮動小数点平方根抽出を実行するように構成された浮動小数点平方根抽出器、
浮動小数点指数関数を計算するように構成された浮動小数点指数演算子、
浮動小数点対数関数を計算するように構成された浮動小数点対数演算子、および
浮動小数点三角関数を計算するように構成された浮動小数点三角関数演算子下記の少なくとも１つを具備する、
請求項１６記載の浮動小数点プロセッサ。
【請求項２２】
該浮動小数点演算子は該選択された下位精度によって特徴づけられた１つまたはそれ以上の浮動小数点番号を入力として受け入れるように、該レジスタから該サブセット内の該ビットのみを読み取るように、および該過剰ビットのいずれをも読み取らないようにさらに構成され、および
該浮動小数点演算子は複数の出力ビットを有する出力番号を発生するように１つまたはそれ以上の入力浮動小数点番号上で該浮動小数点演算を実行するようにさらに構成される、
請求項１８記載の浮動小数点プロセッサ。
【請求項２３】
該浮動小数点演算子は該出力番号から該選択された下位精度を超過する該出力ビットのいずれかを切り詰めるようにさらに具備され、それにより該選択された下位精度によって特徴づけられた切り詰められた出力番号を発生する、
請求項２２記載の浮動小数点プロセッサ。
【請求項２４】
該浮動小数点演算子は該出力番号を該選択された下位精度にまるめるようにさらに構成される、請求項２２記載の浮動小数点プロセッサ。
【請求項２５】
該浮動小数点演算子は該サブセット内の該ビットのすべてをプリチャージするように、および該過剰ビットのすべてをディスチャージされた状態のままにするようにさらに構成される、請求項２２記載の浮動小数点プロセッサ。
【請求項２６】
該浮動小数点演算子は該レジスタから該レジスタ内に蓄積された該複数のビットのすべてを読み取るようにさらに構成され、
該浮動小数点演算子は読み取られた該ビットから、該過剰ビットのすべてを切り詰めるようにさらに構成され、それにより該選択された下位精度によって特徴づけられた切り詰められた入力番号を発生し、および
該浮動小数点演算子は複数の出力ビットを有する出力番号を発生するために該切り詰めるられた入力番号上で該浮動小数点演算を実行するようにさらに構成される、請求項１８記載の浮動小数点プロセッサ。
【請求項２７】
該浮動小数点演算子は該出力番号から該選択された下位精度を超過する該出力ビットのいずれかを切り詰めるようにさらに構成される、請求項２６記載の浮動小数点プロセッサ。
【請求項２８】
該浮動小数点演算子は該出力番号を該選択された下位精度にまるめるようにさらに構成される、請求項２６記載の浮動小数点プロセッサ。
【請求項２９】
該コントローラはすべての過剰ビットをゼロに押し込むようにさらに構成される、請求項１８記載の浮動小数点プロセッサ。
【請求項３０】
該レジスタは複数のレジスタエレメントを具備し、各レジスタエレメントは該複数のビットのそれぞれの１つに対応し、そして該コントローラは該過剰ビットの１つに対応する該レジスタエレメントのいずれかをターンオフするようにさらに構成される、請求項１８記載の浮動小数点プロセッサ。
【請求項３１】
該コントローラはキャリングオーバから該サブセット内のビットの１つへの該過剰ビットのいずれかをブロックオフするように構成される、請求項１８記載の浮動小数点プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
［背景］
浮動小数点プロセッサはある数学的な計算、例えば、乗算、割算、三角関数、および指数関数、を高速で行う専門化された計算ユニットである。よって、強力な計算システムはしばしば、主プロセッサの部分としてかまたは共同プロセッサとして、浮動小数点プロセッサを組み込む。１数字の浮動小数点表示は典型的に符号部、指数、および仮数を含む。浮動小数点数の数値を見つけ出すために、仮数は指数の冪に累乗された底(base)（通常コンピュータでは２）によって掛け合わされる。符号は結果値にあてはめられる。
【０００２】
浮動小数点プロセッサの精度は仮数を表すために使用されたビット数によって定義される。仮数内のビットが多いほど、精度がより大きい。浮動小数点プロセッサの精度は通常特定のアプリケーション次第である。例えば、ＡＮＳＩ／ＩＥＥＥ−７５４標準（ほとんどすべてのコンピュータによってフォローされる）は１ビット符号、８ビット指数、および２４ビット仮数（mantissa）を有する３２ビットシングルフォーマットを指定する。仮数の２３端数ビット（fraction bit）のみが３２ビット符号化において蓄積され、偶数ビットは、２進ポイントの左に直接含まれる。ＩＥＥＥ−７５４はまた１ビット符号、１１ビット指数、および５３ビット仮数を有する６４ビットダブルフォーマットをも指定する。シングル符号化に類似して、仮数の５２端数ビットのみが６４ビット符号化において蓄積され、偶数ビットは、２進ポイントの左に直接含まれる。より高い精度はより高い確度という結果になるが、しかし増大した電力消費という結果になって電算機的にはより強烈である。
【０００３】
浮動小数点プロセッサは典型的にシングルフォーマット、またはシングルとダブルフォーマットとの両者のいずれかによって提供された精度に限られるので、浮動小数点算術演算の性能は電算機的な非能率を引き起こすことができる。いくつかのアプリケーションはこれらのタイプの精度を必要とするかもしれない一方で、他のアプリケーションは必要としないかもしれない。例えば、いくつかの図形アプリケーションは１６ビット仮数を必要とするだけかもしれない。これらの図形アプリケーションについては、１６ビットの精度を越えた任意の確度は不必要な電力消費という結果になりがちである。これは、無線電話機、パーソナルディジタルアシスタント（ＰＤＡ）、ラップトップ、ゲームコンソール、ページャ、およびカメラのような、電力が貴重である電池動作の装置において特に重要である。もしも１アプリケーションがある低減精度を常に必要とすることが分かれば浮動小数点プロセッサが設計されて、この低減精度を組み入れることができる。しかしながら、最も汎用のプロセッサに関して、代表的な場面はあるアプリケーション、例えば、低減精度が受け入れられる、３Ｄ図形を発生することであり、そして他のアプリケーション、例えば、より大きい精度が必要とされる、グローバルポジショニングシステム（ＧＰＳ）機能を実施することである。よって、浮動小数点フォーマットの低減精度、または下位精度（subprecision）が選択可能である浮動小数点プロセッサについてこの分野において必要性がある。
【発明の開示】
【０００４】
［概要］
浮動小数点プロセッサの１つの実施形態では、浮動小数点プロセッサは１つまたはそれ以上の浮動小数点フォーマット内の複数のビットを蓄積するように構成された浮動小数点レジスタ、コントローラ、および少なくとも１つの浮動小数点演算子を含む。コントローラは浮動小数点演算用の指定された精度の下位精度を選択するように構成される。コントローラは、選択された下位精度に従って、複数のビットのサブセットを決定するようにさらに構成される。浮動小数点演算子は複数のビットのサブセットのみを使用して浮動小数点演算を実行するように構成される。
【０００５】
浮動小数点演算を実行することに関する方法の１つの実施形態では、方法は浮動小数点演算用の下位精度を選択することを含む。この方法は選択された下位精度に従って、浮動小数点レジスタ内に蓄積された複数のビットのサブセットを決定することを含む。この方法は複数のビットのサブセットのみを使用して浮動小数点演算を実行することを含む。
【０００６】
浮動小数点プロセッサの、および浮動小数点演算を実行することに関する方法の他の実施形態は、その中で浮動小数点プロセッサのおよび浮動小数点演算を実行することに関する方法のいろいろな実施形態が示され、そして図面の方法によって記述される、以下の詳細説明からこの分野の技術者には容易に明白になるであろうことは理解されねばならない。達成されるであろうように、浮動小数点プロセッサのおよび浮動小数点演算を実行することに関する方法の他のおよび異なる実施形態が可能であり、そしてこれらの実施形態を記述するために使用された詳細は多くの点で修正可能である。よって、図面および詳細説明は現存している実例として、そして限定的ではないとして評価されるべきである。
【０００７】
［詳細な記載］
添付された図面に関して下に述べられた詳細説明は本発明のいろいろな実施形態を記述することを意図しているが、しかし本発明がその中で実行できる実施形態のみを示そうとは思わない。詳細説明は、本発明の徹底的な理解を可能とするために、特別の詳細を含む。しかしながら、本発明がこれらの特別の詳細無しに実施されうることはこの分野の技術者によって理解されねばならない。いくつかの事例では、本発明の概念をより明瞭に図示するために、周知の構造およびコンポーネントはブロック図形式で示される。
【０００８】
浮動小数点プロセッサの少なくとも１つの実施形態では、１つまたはそれ以上の浮動小数点演算のための精度は指定されたフォーマットのそれから減少されることができる。数学的な演算を実行するために浮動小数点プロセッサに供給された命令はプログラマブル制御フィールドを含むことができる。制御フィールドは浮動小数点フォーマットの下位精度を選択するために使用されることができる。まさに特別の演算のために要する精度の総計に、浮動小数点フォーマットの下位精度を選択することによって、有意の電力保存のほかにより大きい効率が達成されることができる。
【０００９】
図１は選択可能な下位精度を有する浮動小数点プロセッサ（ＦＰＰ）１００の１例を示す機能ブロック図である。浮動小数点プロセッサ１００は浮動小数点レジスタファイル（ＦＰＲ）１１０；浮動小数点コントローラ（ＣＴＬ）１３０；および浮動小数点数学演算子（ＦＰＯ）１４０を含む。浮動小数点プロセッサ１００は主プロセッサの部分、共同プロセッサ、あるいはバスまたは他のチャネルにより主プロセッサに接続された別個のエンティティとして実施されることができる。
【００１０】
浮動小数点レジスタ１１０は任意の適当な蓄積媒体であってもよい。図１に示された実施形態では、浮動小数点レジスタファイル１１０はいくつかのアドレス可能なレジスタロケーション１１５−１（ＲＥＧ１）、１１５−２（ＲＥＧ２）、…１１５−Ｎ（ＲＥＧＮ）を含み、おのおの浮動小数点演算のためのオペランドを蓄積するように構成される。オペランドはメインメモリからのデータおよび／または以前の浮動小数点演算の結果を含むことができる。浮動小数点プロセッサに供給された命令はメインメモリへのおよびからのオペランドを移動するために使用されることができる。
【００１１】
図２は、図１とともに記述されたと同様に、選択可能な下位精度を有する浮動小数点プロセッサ１００内で使用される浮動小数点レジスタファイル１１０のためのデータ構造の１例を図式的に示す。図２に図示された実施形態では、浮動小数点レジスタファイル１１０は、便宜上図２では各レジスタロケーションが参照数字２００で参照されている１６個のアドレス可能なレジスタを含む。各レジスタロケーション２００はＩＥＥＥ−７５４  ３２ビットシングルフォーマットにおける、３２ビットの浮動小数点２進数を蓄積するように構成される。特に、各レジスタロケーション２００は１ビット符号２０２、８ビット指数２０４、および２３ビット端数２０６を含む。しかしながら、浮動小数点プロセッサ１００の他の実施形態がＩＥＥＥ３２ビットシングルフォーマット（しかしＩＥＥＥ６４ビットダブルフォーマットに限定されないことを含む）と異なるようにフォーマットされる浮動小数点レジスタファイル２１０を含んでもよいこと、および／または異なる番号のレジスタロケーションを含むことは理解されねばならない。
【００１２】
図１に戻り参照して、浮動小数点コントローラ１３０は浮動小数点演算の下位精度を選択するように使用されることができる。制御レジスタ１３７は１つまたはそれ以上の命令の制御フィールド内に送信された下位精度選択ビットを負荷されることができる。後ほどより詳細に記述されるべき方法では、下位精度選択ビットはオペランドの精度を低下させ、そして浮動小数点プロセッサ１００内の演算を指示するために浮動小数点コントローラ１３０によって使用されることができる。
【００１３】
浮動小数点演算子１４０は浮動小数点演算を行うように構成された１つまたはそれ以上のコンポーネントを含んでもよい。これらのコンポーネントは、浮動小数点加算および減算命令を実行するように構成された浮動小数点加算器（ＡＤＤ）１４２、および浮動小数点乗算命令を実行するように構成された浮動小数点乗算器（ＭＵＬ）１４４を含んでもよいが、しかしそれに限定されない。図１内に見られるように、浮動小数点演算子１４０内の計算ユニットＡＤＤ１４２およびＭＵＬ１４４の各々は相互に、そして各計算ユニットおよび浮動小数点レジスタファイル１１０の間と同様に、多少演算子が計算ユニット間を転送されるのを認めるように浮動小数点レジスタファイル１１０に連結される。浮動小数点プロセッサ１００の少なくとも１つの実施形態では、計算ユニット（ＡＤＤ１４２およびＭＵＬ１４４）の任意の１つの出力は任意の他の計算ユニットの入力であってもよい。浮動小数点レジスタファイル１１０は、浮動小数点演算子１４０からの出力である結果と同様に、中間結果を蓄積するために使用されることができる。
【００１４】
加算器１４２は、浮動小数点フォーマットで標準の算術演算を実行するように構成された、従来の浮動小数点加算器であってもよい。乗算器１４４は、浮動小数点乗算を実行するように構成された、従来の浮動小数点乗算器であってもよい。乗算器１４４は、実例によって、ブースまたは修正ブースアルゴリズムを用いて実施でき、そして部分積を発生する部分積発生論理、および部分積を合計する多数のけた上げ保留加算器を含んでもよい。
【００１５】
簡単のため加算器１４２および乗算器１４４のみが図１には示されているが、浮動小数点演算子１４０はまた、この分野で知られている、そして他のタイプの浮動小数点数学演算を実行するように構成される（図示されない）他の計算ユニットを含んでもよい。これらの計算ユニットは下記を含んでもよいが、しかしこれに限定されない：浮動小数点割算命令を実行するように構成された浮動小数点除算器；浮動小数点平方根抽出命令を実行するように構成された浮動小数点平方根抽出器；浮動小数点指数命令を実行するように構成された浮動小数点指数演算子；対数関数を計算するための命令を実行するように構成された浮動小数点対数演算子；および三角関数を計算するための命令を実行するように構成された浮動小数点三角法演算子。
【００１６】
浮動小数点プロセッサ１００の種々の実施形態は上に記録された計算ユニットの１つのみ、またはいくつか、あるいはすべてを含んでもよい。浮動小数点演算子もまた、実例によって、比較、および変換のような、より多くの基本演算を行うための（図示されない）他のユニットを含んでもよい。そのようなユニットはこの分野では周知であり、そして任意の適当な商業的に使用可能なユニットが使用されてもよい。例えば、加算器１４２および乗算器１４４は各々、入力演算子を一直線にするアライナー、結果を標準フォーマットにシフトするノーマライザー、および結果を指定されたラウンディングモードに基づいてまるめる（rounding）ラウンダーのような１つまたはそれ以上の周知の従来のサブユニットを含んでもよい。ビットインバータ、マルチプレクサ、カウンタ、および結合論理回路のような周知の回路エレメントもまた加算器１４２および乗算器１４４内に含まれる。
【００１７】
図１に図示されたように、浮動小数点演算子１４０は、要求された浮動小数点演算の各命令について、関連がある計算ユニット、即ち、加算器１４２または乗算器１４４が、１つまたはそれ以上のレジスタロケーションＲＥＧ１，…，ＲＥＧＮ内に蓄積された１つまたはそれ以上のオペランドを浮動小数点レジスタファイル１１０から受信することができるように、浮動小数点レジスタファイル１１０に接続される。レジスタファイル１１０からオペランドを選択して受信し、そして受信されたオペランドを計算ユニットによって認識された内部データフォーマットに変換する従来の浮動小数点フォーマットコンバータ（図示せず）は、浮動小数点レジスタファイル１００におよび各計算ユニット（ＡＤＤ１４２またはＭＵＬ１４４）に連結されることができる。
【００１８】
浮動小数点レジスタファイル１１０からオペランドを受信して、浮動小数点演算子１４０内の１つまたはそれ以上の計算ユニットは、浮動小数点コントローラ１３０によって選択された下位精度で、受信オペランド上の要求された浮動小数点演算の命令を実行できる。出力は、図１に示されたように、蓄積用の浮動小数点レジスタ１１０に送り返されることができる。
【００１９】
浮動小数点プロセッサ１００の少なくとも１つの実施形態では、ソフトウェア選択可能モードは浮動小数点演算の精度を減少させるために使用されることができる。上で説明されたように、浮動小数点プロセッサ１００に供給された命令は下位精度選択ビットを送信するためにプログラマブル制御フィールドを含んでもよい。下位精度選択ビットは、浮動小数点演算の間各オペランド用の仮数のビット長を順番に制御する、制御レジスタ１３７に書き込まれる。あるいは、下位精度選択ビットは、図１に示されたモニタスクリーン／キーボード／マウスコンビネーション１５０を限定されずに含む、任意の適切なユーザインターフェイスから直接に書き込まれることができる。浮動小数点プロセッサ１００のもう１つの実施形態では、下位精度選択ビットは主プロセッサ、またはそれの運用システムから、制御レジスタ１３７に直接に書き込まれることができる。浮動小数点コントローラ１３０内に示される、制御レジスタ１３７は、孤立したエンティティ、もう１つに統合されたエンティティ、または中で分配された複数のエンティティとしてほかの場所に属してもよい。
【００２０】
下位精度選択ビットは浮動小数点演算の精度を減少させるために使用されることができる。これは種々様々な方法で達成されることができる。少なくとも１つの実施形態では、コントローラ１３０は浮動小数点演算子１４０に下位精度選択ビットによって指定された精度を満たすために必要な端数の最上位ビット（ＭＳＢ）のみをレジスタファイル１１０から読み出させることができる。精度が高いほど、より多くの端数ビットが必要である。実例によって、もしもレジスタファイル内の各ロケーションが２３ビット端数を含み、そして浮動小数点演算子のために必要とされる下位精度が１０ビットであれば、端数の９ＭＳＢのみが必要とされる；隠れまたは整数ビットは第１０番目になる。もしも１つまたはそれ以上の命令についての下位精度が１６ビットに増加されれば、その時仮数の１５ＭＳＢが必要とされるであろう。後者の場合には、端数の８最下位ビット（ＬＳＢ）が単純に無視されてもよい。あるいは、コントローラ１３０は過剰ビット（excess bit）２２４に対応する蓄積レジスタエレメントをターンオフしてもよい。
【００２１】
追加の電力保存は、浮動小数点レジスタファイル１１０が動的読出し論理を用いて実施される時に実現されることができる。静的読出し論理と違って、動的読出し論理はビットラインをプリチャージすること、そしてその後選択されたメモリロケーション内のデータに基づいてそれらをディスチャージすることによってより速い読出し時間を可能にする。このように、動的読出し論理と共に、過剰仮数ビット（excess mantissa bit）に対応する読出し論理はプリチャージされる必要が無いので、電力は保存されることができる。浮動小数点プロセッサ１００のある実施形態では、浮動小数点演算子１４０は各オペランドについて全端数を読み出す。コントローラ１３０はその後、浮動小数点演算を実行する前に浮動小数点演算子１４０に過剰仮数ビットを切り詰め（truncate）させることができる。浮動小数点プロセッサ１００の他の実施形態では、コントローラ１３０は各演算子に関する仮数を要求された精度にまるめるために浮動小数点演算子１４０のフロントエンドにおける特別な処理（図示せず）を促すことができる。
【００２２】
もう１つの可能性のあるアプローチはコントローラ１３０に対して浮動小数点演算子１４０について各オペランドに関する過剰仮数ビットを低漏洩状態（low-leakage state）に押し込むことを促すことである。一般に多くの電子コンポーネント、そして特に半導体装置は、漏洩電流を経験する。漏洩電流は、例えば、金属酸化物半導体（ＭＯＳ）トランジスタのゲート酸化物領域を横切って流れている電流のような、寄生電流である。トランジスタのサイズは小さくなり続け、そして１チップに統合されたトランジスタの数は増加するので、漏洩電流はより大きい関心事になる。複数のトランジスタから成る、論理ゲートの特定の構造次第で、１つの状態では他よりも多くの漏洩電流を有する傾向があるであろう。浮動小数点演算子１４０の特殊の論理ゲート配列は知られているので、浮動小数点演算子１４０は過剰仮数ビットを低漏洩状態、即ち、最小漏洩電流という結果になる状態、に押し込むために使用されることができる。この構造について後でより詳細に説明されるであろうように、浮動小数点演算子１４０は低漏洩状態に押し込められた過剰仮数ビットが浮動小数点演算の結果に影響を及ぼすことをさせないように構成される。
【００２３】
図３Ａは、上述されたように、選択可能な下位精度を有する浮動小数点プロセッサを使用して実行される、浮動小数点加算を示す概念図である。簡単のため、加算器３００内の２つの浮動小数点数３０２および３０４の加算が図示される。また、簡単のため、２つの浮動小数点数３０２および３０４は、いかなる移動も必要としないように、既に整列されていた。浮動小数点数３０２および３０４は、選択されたビット、即ち、加算演算のための仮数のＭＳＢ、および過剰ビットの数、即ち、加算演算では使用されないであろう仮数のＬＳＢで示される。選択されたビットは・記号を使用して示され、そして浮動小数点数３０２については参照数字３１２で、および浮動小数点数３０４については参照数字３１４で示される。加算において使用されない過剰ビットは×記号を使用して図示され、そして浮動小数点数３０２については参照数字３１３で、および浮動小数点数３０４については参照数字３１５で示される。
【００２４】
過剰ビットがゼロ（０）に押し込まれる事態では、浮動小数点数加算演算はその結果に影響を及ぼすこと無しに行われることができる。しかしながら、加算器について過剰ビットが低漏洩状態に押し込まれるところでは、過剰ビットがその結果に影響を及ぼすのを防ぐために、あるステップが取られねばならない。実例によって、もしも低漏洩状態が１つ（１）ならば、過剰ビットの加算は選択されたビットにキャリーアウトを生成できる。少なくとも１つの実施形態では、浮動小数点数演算子は過剰ビットの加算の結果としてのいかなるキャリーアウトもブロックするか、あるいは選択されたビットを加算する時に、そのようなキャリーアウトを無視するように構成されてもよい。あるいは、過剰ビットの加算がキャリーアウトという結果にならないことを確かめるために十分な数の最上位過剰ビットがゼロ（０）に設定されてもよい。
【００２５】
図１に戻り参照して、浮動小数点加算演算は最大精度を有する結果を生成できる。コントローラ１３０は、結果をレジスタファイル１１０内に書き戻す前に、浮動小数点演算子１４０に結果の精度を適当なレベルに減少させるために使用されることができる。これは制御レジスタ１３７内の下位精度選択ビットにより必要とされる精度にこの結果をまるめることによって達成されることができる。あるいは、浮動小数点加算演算の結果として生ずる過剰仮数ビットが切り詰められてもよい。もしも浮動小数点演算子１４０へのオペランド入力内の過剰仮数ビットがゼロ（０）に設定されたならば、その時浮動小数点加算演算もまた過剰仮数ビット内にゼロ付きの結果を生成するであろう。しかしながら、もしもオペランド内の過剰端数ビットが切り詰められなかったかあるいは低漏洩状態に設定されたならば、浮動小数点加算演算の結果として生ずる過剰端数ビットはオールゼロ（０）ではありえない。この場合には、コントローラ１３０は、結果をレジスタファイル１１０内に書き戻す前に、すべての過剰端数ビットをゼロ（０）に設定するために浮動小数点演算子１４０にある処理（図示せず）を行わせる。浮動小数点演算子の少なくとも１つの実施形態では、結果は低漏洩状態に設定されている過剰端数ビットを有するレジスタファイルに書き戻されることができる。また、少なくとも１つの実施形態では、過剰端数ビットは、レジスタファイルを更新すること、それによってレジスタファイル内の電力を保存することを妨害されるかもしれない。
【００２６】
図３Ｂは、上述されたように、選択可能な下位精度を有する浮動小数点プロセッサ１００を使用して行われる、乗算器（ＭＵＬ）４００内の浮動小数点乗算を示す概念図である。周知のように、２進数乗算は基本的に一連の桁送り値の加算である。もしもユーザによって選択された下位精度がＮ仮数ビットを供給するならば、（各々Ｎ仮数ビットを有する）２つの浮動数の乗算の結果として生ずる乗算器の生の出力値は２Ｎ出力仮数ビットまでを持つことができる。乗算器の結果が２Ｎ仮数ビットの場合は、Ｎ過剰ビットは結果がレジスタファイルに書き戻される前に除去されることができる。コントローラはこの機能をいろいろの方法で行うことができる。実例によって、コントローラは浮動小数点演算子にその結果を所望の精度に切り詰めさせることができる。あるいは、コントローラは浮動小数点演算子にその結果を所望のＮビット精度にまるめさせることができる。いずれにしても、Ｎ−１端数ビットは過剰端数ビット位置にゼロを有するかまたは有さないレジスタファイルに書き込まれることができる。浮動小数点演算子の少なくとも１つの実施形態では、その結果は低漏洩状態に設定されている過剰端数ビットと共にレジスタファイルに書き戻されることができる。
【００２７】
この中に開示された実施形態に関して記述されたいろいろの実例となる論理ユニット、ブロック、モジュール、回路、エレメント、および／またはコンポーネントは、汎用プロセッサの部分である浮動小数点プロセッサ、ディジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理コンポーネント、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいはそれによってこの中に記述された機能を実行するように設計された任意の組合わせにおいて実施または実行されることができる。汎用プロセッサはマイクロプロセッサであってもよいが、しかし代替例では、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた計算コンポーネントの組合わせ、例えば、ＤＳＰとマイクロプロセッサとの組合わせ、複数のマイクロプロセッサ、ＤＳＰコアとともに１つまたはそれ以上のマイクロプロセッサ、あるいは任意の他のそのような構成として実施されてもよい。
【００２８】
この中に開示された実施形態に関して記述された方法またはアルゴリズムはハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、あるいはこの２つの組合わせで、直接に実施されることができる。ソフトウェアモジュールはＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、着脱可能型ディスク、ＣＤ−ＲＯＭ、またはこの分野で既知の任意の他の形式の蓄積媒体であってもよい。蓄積媒体は、プロセッサがこの蓄積媒体から情報を読み取り、そしてこれに情報を書き込むことができるようにプロセッサに連結されてもよい。代替案では、蓄積媒体はプロセッサに統合されてもよい。
【００２９】
開示された実施形態の前の説明はこの分野の任意の技術者が本発明を製作または使用することを可能とするように提供される。これらの実施形態へのいろいろな変更はこの分野の技術者にはたやすく明白であるだろうし、そしてこの中に定義された包括的な原理はこの発明の精神または範囲から逸脱すること無しに他の実施形態に適用されてもよい。したがって、本発明はこの中に示された実施形態に制限されるつもりはないが、しかしクレームと一致する全範囲が許容されるべきであり、ここにおいて単数での要素の引用は明確にそう表現しない限り“１つのおよび唯一の”を意味することを意図せず、むしろ“１つまたはそれ以上の”を意味する。この分野の通常の技術者に知られているかあるいは後で知られることになるこの開示の全体を通して記述されたいろいろな実施形態の要素との構造的なおよび機能的な等価物はすべて引用によってこの中に明確に組み込まれ、そしてクレームによって包含されることを意図する。さらに、この中に開示されなかった何物も、そのような開示がクレームに明白に記載されるかどうかにかかわらず公共に捧げられる意図はない。要素が慣用句“ための方法”を使用して明白に記載されるか、あるいは方法のクレームの場合には、要素が慣用句“ためのステップ”を使用して記載されなければ、どのクレーム要素も３５Ｕ・Ｓ・Ｃ§１１２、第６節の規定の下で解釈されるべきではない。
【図面の簡単な説明】
【００３０】
【図１】選択可能な下位精度を有する浮動小数点プロセッサの１例を示す機能ブロック図。
【図２】選択可能な下位精度を有する浮動小数点プロセッサ内で使用される浮動小数点レジスタファイルの１例を図式的に示す図。
【図３Ａ】選択可能な下位精度を有する浮動小数点プロセッサを使用して実行される浮動小数点加算の１例を示す概念図。
【図３Ｂ】選択可能な下位精度を有する浮動小数点プロセッサを使用して実行される浮動小数点乗算の１例を示す概念図。
【図１】
2009512017.tif 000003
【図２】
2009512017.tif 000004
【図３Ａ】
2009512017.tif 000005
【図３Ｂ】
2009512017.tif 000006
【国際調査報告】
2009512017.tif 000007
2009512017.tif 000008
2009512017.tif 000009