(57)【要約】  所定の精度を有する浮動小数点プロセッサにより浮動小数点演算を実行する方法および装置を開示する。１つ以上の浮動小数点数に関して、浮動小数点演算に対する副精度が選択される。副精度の選択は、１つ以上の浮動小数点数のそれぞれに対して、１つ以上の過剰ビットをもたらす。さもなければ１つ以上の過剰ビットを記憶または処理するために使用される、浮動小数点プロセッサ中の１つ以上のコンポーネントから、電力を取り除くことができ、浮動小数点演算は、１つ以上のコンポーネントから電力を取り除いた状態で実行される。【選択図】      図２
2009528638.tif 000002
【特許請求の範囲】
【請求項１】
最大精度を有する浮動小数点プロセッサにより、浮動小数点演算を実行する方法において、
１つ以上の浮動小数点数に関する前記浮動小数点演算に対して、前記最大精度よりも小さい副精度を選択し、前記副精度の選択は、前記１つ以上の浮動小数点数のそれぞれに対して、１つ以上の過剰ビットをもたらすことと、
さもなければ前記１つ以上の過剰ビットを記憶または処理するために使用される、前記浮動小数点プロセッサ中の１つ以上のコンポーネントから電力を取り除くことと、
前記１つ以上のコンポーネントから電力を取り除いた状態で、前記浮動小数点演算を実行することとを含む方法。
【請求項２】
複数の記憶素子を有する浮動小数点レジスタを使用することをさらに含み、前記１つ以上の過剰ビットは、前記記憶素子のうちの1つ以上の中に記憶されており、
前記電力が取り除かれる１つ以上のコンポーネントは、前記１つ以上の過剰ビットに対する前記記憶素子を含む請求項１記載の方法。
【請求項３】
前記浮動小数点演算を実行するためのロジックを有する浮動小数点演算器を使用することをさらに含み、
前記電力が取り除かれる１つ以上のコンポーネントは、さもなければ前記１つ以上の過剰ビットを処理するために使用される、前記ロジックの一部を含む請求項２記載の方法。
【請求項４】
前記浮動小数点演算を実行するロジックを有する浮動小数点演算器を使用することをさらに含み、
前記電力が取り除かれる１つ以上のコンポーネントは、さもなければ前記１つ以上の過剰ビットを処理するために使用される、前記ロジックの一部を含む請求項１記載の方法。
【請求項５】
前記浮動小数点演算は、加算を含む請求項４記載の方法。
【請求項６】
前記ロジックの一部からの桁上がりを強制的にゼロにすることをさらに含む請求項５記載の方法。
【請求項７】
前記浮動小数点演算は、乗算を含む請求項４記載の方法。
【請求項８】
最大精度を有する浮動小数点プロセッサにおいて、
１つ以上の浮動小数点数に関する浮動小数点演算に対して、前記最大精度よりも小さい副精度を選択するように構成された浮動小数点制御装置と、
前記浮動小数点演算を実行するように構成された浮動小数点演算器とを具備し、
前記副精度の選択は、前記１つ以上の浮動小数点数のそれぞれに対して、１つ以上の過剰ビットをもたらし、
前記浮動小数点制御装置は、さもなければ前記１つ以上の過剰ビットを記憶または処理するために使用される、前記浮動小数点プロセッサ中の１つ以上のコンポーネントから電力を取り除くようにさらに構成されている浮動小数点プロセッサ。
【請求項９】
複数の記憶素子を有する浮動小数点レジスタをさらに具備し、前記１つ以上の過剰ビットは、前記記憶素子のうちの1つ以上の中に記憶されており、
前記電力を取り除くことができる１つ以上のコンポーネントは、前記１つ以上の過剰ビットに対する前記記憶素子を含む請求項８記載の浮動小数点プロセッサ。
【請求項１０】
前記浮動小数点演算器は、前記浮動小数点演算を実行するためのロジックを備え、
前記電力を取り除くことができる１つ以上のコンポーネントは、さもなければ前記１つ以上の過剰ビットを処理するために使用される、前記ロジックの一部を含む請求項９記載の浮動小数点プロセッサ。
【請求項１１】
前記浮動小数点演算器は、前記浮動小数点演算を実行するためのロジックを備え、
前記電力を取り除くことができる１つ以上のコンポーネントは、さもなければ前記１つ以上の過剰ビットを処理するために使用される、前記ロジックの一部を含む請求項８記載の浮動小数点プロセッサ。
【請求項１２】
前記浮動小数点演算器は、浮動小数点加算器を含む請求項１１記載の浮動小数点プロセッサ。
【請求項１３】
前記電力が取り除かれるとき、前記浮動小数点演算器は、前記ロジックの一部からの桁上がりを強制的にゼロにするようにさらに構成されている請求項１２記載の浮動小数点プロセッサ。
【請求項１４】
前記浮動小数点演算器は、浮動小数点乗算器を含む請求項１１記載の浮動小数点プロセッサ。
【請求項１５】
最大精度を有する浮動小数点プロセッサにおいて、
複数の浮動小数点数を記憶するように構成された複数の記憶素子を有する浮動小数点レジスタと、
前記浮動小数点レジスタ中に記憶された前記浮動小数点数のうちの１つ以上に関して、浮動小数点演算を実行するように構成された浮動小数点演算器と、
前記浮動小数点数のうちの１つ以上に関する浮動小数点演算に対して、前記最大精度よりも小さい副精度を選択するように構成された浮動小数点制御装置とを具備し、
前記副精度の選択は、前記浮動小数点数のうちの１つ以上のそれぞれに対して、１つ以上の過剰ビットをもたらし、
前記１つ以上の過剰ビットは、前記浮動小数点レジスタの前記記憶素子のうちの１つ以上の中に記憶されており、
前記浮動小数点制御装置は、前記１つ以上の過剰ビットに対する前記記憶素子から電力を取り除くようにさらに構成されている浮動小数点プロセッサ。
【請求項１６】
前記浮動小数点演算器は、前記浮動小数点演算を実行するように構成されたロジックを備え、
前記浮動小数点制御装置は、さもなければ前記１つ以上の過剰ビットを処理するために使用される、前記ロジックの一部から電力を取り除くようにさらに構成されている請求項１５記載の浮動小数点プロセッサ。
【請求項１７】
前記浮動小数点演算器は、浮動小数点加算器を含む請求項１６記載の浮動小数点プロセッサ。
【請求項１８】
前記電力が取り除かれるとき、前記浮動小数点演算器は、前記ロジックの一部からの桁上がりを強制的にゼロにするようにさらに構成されている請求項１７記載の浮動小数点プロセッサ。
【請求項１９】
前記浮動小数点演算器は、浮動小数点乗算器を含む請求項１６記載の浮動小数点プロセッサ。
【請求項２０】
最大精度を有する浮動小数点プロセッサにおいて、
複数の浮動小数点数を記憶するように構成された浮動小数点レジスタと、
前記浮動小数点レジスタ中に記憶された前記浮動小数点数のうちの１つ以上に関して、浮動小数点演算を実行するように構成されたロジックを有する浮動小数点演算器と、
前記浮動小数点数のうちの１つ以上に関する浮動小数点演算に対して、前記最大精度よりも小さい副精度を選択するように構成された浮動小数点制御装置とを具備し、
前記副精度の選択は、前記浮動小数点数のうちの１つ以上のそれぞれに対して、１つ以上の過剰ビットをもたらし、
前記浮動小数点制御装置は、さもなければ前記１つ以上の過剰ビットを処理するために使用される、前記回路の一部から電力を取り除くようにさらに構成されている浮動小数点プロセッサ。
【請求項２１】
前記浮動小数点レジスタは、前記浮動小数点数を記憶するように構成された複数の記憶素子を備え、前記１つ以上の過剰ビットは、前記記憶素子のうちの1つ以上の中に記憶されており、
前記浮動小数点制御装置は、前記１つ以上の過剰ビットに対する前記記憶素子から電力を取り除くようにさらに構成されている請求項２０記載の浮動小数点プロセッサ。
【請求項２２】
前記浮動小数点演算器は、浮動小数点加算器を含む請求項２０記載の浮動小数点プロセッサ。
【請求項２３】
前記電力が取り除かれるとき、前記浮動小数点演算器は、前記ロジックの一部からの桁上がりを強制的にゼロにするようにさらに構成されている請求項２２記載の浮動小数点プロセッサ。
【請求項２４】
前記浮動小数点演算器は、浮動小数点乗算器を含み、前記浮動小数点乗算器内の、部分積を構成する素子の一部から、電力が取り除かれる請求項２０記載の浮動小数点プロセッサ。
【発明の詳細な説明】
【背景】
【０００１】
浮動小数点プロセッサは、例えば、乗算や、除算や、三角関数や、指数関数のような、ある数学的演算を高速で実行する、専門の計算ユニットである。それゆえに、強力な計算システムは、メインプロセッサの一部分として、またはコプロセッサとして、浮動小数点プロセッサを組み込んでいることが多い。ある数の浮動小数点の表現は、一般に、符号部と、指数と、仮数とを含んでいる。浮動小数点数の値を見つけるために、基数（一般にコンピュータにおいては２）の指数乗を仮数に掛ける。符号は、結果として生じる値に適用される。
【０００２】
浮動小数点プロセッサの精度は、仮数を表現するために使用されるビット数により規定される。仮数におけるビットが増えるほど、精度はより高くなる。浮動小数点プロセッサの精度は一般的に、特定のアプリケーションに左右される。例えば、（一般に最近のコンピュータにより採用される）ＡＮＳＩ／ＩＥＥＥ−７５４規格は、１ビットの符号と、８ビットの指数と、２３ビットの仮数とを有する、３２ビットの単フォーマットを指定する。仮数の２３の小数部ビットだけが、３２ビットのエンコーディングで記憶され、２進小数点のすぐ左側に、整数ビットが示される。ＩＥＥＥ−７５４はまた、１ビットの符号と、１１ビットの指数と、５３ビットの仮数とを有する、６４ビットの倍フォーマットを指定する。単一エンコーディングに類似して、仮数の５２の小数部ビットだけが、６４ビットのエンコーディングで記憶され、２進小数点のすぐ左側に整数ビットが示される。より高い精度は、より高い正確さをもたらすが、一般に、電力消費の増加をもたらす。
【０００３】
浮動小数点プロセッサは、一般に、単フォーマット、または、単フォーマットおよび倍フォーマットの両方、のいずれかにより提供された精度に制限されるため、浮動小数点算術演算の実行は、計算の非能率を必然的に伴うことがある。いくつかのアプリケーションは、これらのタイプの精度を必要とするかもしれないが、他のアプリケーションは、必要としないかもしれない。例えば、いくつかのグラフィックアプリケーションは、１６ビットの仮数を必要とするだけであるかもしれない。これらのグラフィックアプリケーションに対して、１６ビットの精度を超える何らかの正確さは、不必要な電力消費をもたらす傾向がある。少し挙げてみただけでも、ワイヤレス電話機や、パーソナルデジタルアシスタント（ＰＤＡ）や、ラップトップや、ゲームコンソールや、ページャーや、カメラなどがある、電力の発生に限りがあるバッテリー駆動のデバイスにおいて、これは、特に問題である。アプリケーションが常に、ある低減された精度を必要とすることが知られている場合、その低減された精度に対して、浮動小数点プロセッサを設計および構築できる。しかしながら、汎用目的のプロセッサに対して、例えば、３Ｄグラフィックを発生させるような、あるアプリケーションに対しては、低減された精度が受け入れられるかもしれないが、例えば、全地球測位システム（ＧＰＳ）機能を実現するような、他のアプリケーションに対しては、より高い精度が必要とされるかもしれないということが、共通の状況である。したがって、浮動小数点フォーマットの、低減された精度すなわち副精度が選択可能である浮動小数点プロセッサに対する技術的必要性がある。電力管理技術を用いて、浮動小数点プロセッサが、選択された精度をサポートするために必要以上の電力を確実に消費しないようにすることもできる。
【概要】
【０００４】
精度フォーマットを有する浮動小数点プロセッサにより、浮動小数点演算を実行する方法の観点を開示する。方法は、１つ以上の浮動小数点数に関して、浮動小数点演算に対する副精度を選択することを含み、副精度の選択は、１つ以上の浮動小数点数のそれぞれに対して、１つ以上の過剰ビットをもたらす。方法は、さもなければ１つ以上の過剰ビットを記憶または処理するために使用される、浮動小数点プロセッサ中の１つ以上のコンポーネントから電力を取り除くことと、１つ以上のコンポーネントから電力を取り除いた状態で、浮動小数点演算を実行することとをさらに含む。
【０００５】
精度フォーマットを有する浮動小数点プロセッサの１つの観点を開示する。浮動小数点プロセッサは、１つ以上の浮動小数点数に関して、浮動小数点演算に対する副精度を選択するように構成された浮動小数点制御装置を含み、副精度の選択は、１つ以上の浮動小数点数のそれぞれに対して、１つ以上の過剰ビットをもたらし、浮動小数点制御装置は、さもなければ１つ以上の過剰ビットを記憶または処理するために使用される、浮動小数点プロセッサ中の１つ以上のコンポーネントから電力を取り除くようにさらに構成されている。浮動小数点プロセッサは、浮動小数点演算を実行するように構成された浮動小数点演算器をさらに含む。
【０００６】
精度フォーマットを有する浮動小数点プロセッサの別の観点を開示する。浮動小数点プロセッサは、複数の浮動小数点数を記憶するように構成された複数の記憶素子を有する浮動小数点レジスタと、浮動小数点レジスタ中に記憶された浮動小数点数のうちの１つ以上に関して浮動小数点演算を実行するように構成された浮動小数点演算器とを含む。浮動小数点プロセッサは、浮動小数点数のうちの１つ以上に関して、浮動小数点演算に対する副精度を選択するように構成された浮動小数点制御装置をさらに含み、副精度の選択は、浮動小数点数のうちの１つ以上のそれぞれに対して、１つ以上の過剰ビットをもたらし、１つ以上の過剰ビットは、浮動小数点レジスタの記憶素子のうちの１つ以上の中に記憶されており、浮動小数点制御装置は、１つ以上の過剰ビットに対する記憶素子から電力を取り除くようにさらに構成されている。
【０００７】
精度フォーマットを有する浮動小数点プロセッサのさらなる観点を開示する。浮動小数点プロセッサは、複数の浮動小数点数を記憶するように構成された浮動小数点レジスタと、浮動小数点レジスタ中に記憶された浮動小数点数のうちの１つ以上に関して、浮動小数点演算を実行するように構成されたロジックを有する浮動小数点演算器とを含む。浮動小数点プロセッサは、浮動小数点数のうちの１つ以上に関して、浮動小数点演算に対する副精度を選択するように構成された浮動小数点制御装置をさらに含み、副精度の選択は、浮動小数点数のうちの１つ以上のそれぞれに対して、１つ以上の過剰ビットをもたらし、浮動小数点制御装置は、さもなければ１つ以上の過剰ビットを処理するために使用される、ロジックの一部から電力を取り除くようにさらに構成されている。
【０００８】
浮動小数点プロセッサの、および浮動小数点演算を実行する方法の、他の実施形態は、浮動小数点プロセッサの、および浮動小数点演算を実行する方法の、さまざまな実施形態を実例として示し、記述している以下の詳細な説明から、当業者に容易に明らかになることを理解すべきである。理解されるように、浮動小数点プロセッサの、および浮動小数点演算を実行する方法の、他のおよび異なる実施形態が可能であり、これらの実施形態を記述するために使用される記述は、多くの点において修正できる。したがって、図面および詳細な説明は、本質的に例示であると考えるべきであり、限定的であると考えるべきでない。
【詳細な説明】
【０００９】
添付図面に関連して以下で示される詳細な説明は、本開示のさまざまな実施形態を記述するように向けられているが、本開示を実施する実施形態だけを表すように向けられていない。詳細な説明は、本開示の完全な理解を可能にするために、特定の詳細を含んでいる。しかしながら、これらの特定の詳細なしで本開示を実施できることが、当業者により理解されるだろう。いくつかの例において、本開示の概念をより明瞭に図示するために、よく知られている構造およびコンポーネントが、ブロック図の形態で示されている。
【００１０】
浮動小数点プロセッサの少なくとも１つの実施形態において、１つ以上の浮動小数点演算に対する精度は、指定のフォーマットの精度から低減されてもよい。さらに、電力管理技術を用いて、浮動小数点プロセッサが、選択された副精度をサポートするために必要以上の電力を確実に消費しないようにすることもできる。数学的演算を実行するために浮動小数点プロセッサに提供される命令は、プログラム可能な制御フィールドを含んでいる。制御フィールドは、浮動小数点フォーマットの副精度を選択し、電力消費を管理するために使用される。特定の演算に対して必要とされる浮動小数点フォーマットの副精度を選択することにより、結果として、選択された副精度をサポートするための浮動小数点プロセッサの電力消費を低減させ、より高い効率だけでなく、かなりの電力節減を達成することができる。
【００１１】
図１は、選択可能な副精度を有する浮動小数点プロセッサ（ＦＰＰ）の例を図示する機能ブロック図である。浮動小数点プロセッサ１００は、浮動小数点レジスタファイル（ＦＰＲ）１１０と、浮動小数点制御装置（ＣＴＬ）１３０と、浮動小数点数学的演算器（ＦＰＯ）１４０とを含んでいる。浮動小数点プロセッサ１００は、メインプロセッサの一部分や、コプロセッサや、あるいは、バスまたは他のチャネルを通してメインプロセッサに接続された別個のエンティティとして実現してもよい。
【００１２】
浮動小数点レジスタファイル１１０は、何らかの適切な記憶媒体である。図１中で示した実施形態において、浮動小数点レジスタファイル１１０は、いくつかのアドレス可能レジスタ位置１１５−１（ＲＥＧ１）、１１５−２（ＲＥＧ２）、．．．１１５−Ｎ（ＲＥＧ Ｎ）を含み、それぞれは、浮動小数点演算に対するオペランドを記憶するように構成されている。オペランドは、例えば、メモリからのデータおよび／または以前の浮動小数点演算の結果を含んでいてもよい。浮動小数点プロセッサに提供される命令を使用して、メインメモリに、およびメインメモリから、オペランドを移動できる。
【００１３】
図２は、図１に関して記述した、選択可能な副精度を有する浮動小数点プロセッサ１００中で使用される、浮動小数点レジスタファイル１１０に対するデータ構造の例を概略的に図示する。図２中で図示した実施形態において、浮動小数点レジスタファイル１１０は、１６個のアドレス可能レジスタ位置を含み、それぞれのレジスタ位置は、便宜上、図２中の参照数字２００により参照されている。各レジスタ位置２００は、ＩＥＥＥ−７５４の３２ビット単フォーマットで、３２ビットのバイナリの浮動小数点数を記憶するように構成されている。特に、各レジスタ位置２００は、１ビットの符号２０２と、８ビットの指数２０４と、２４ビットの小数部２０６とを含む。しかしながら、浮動小数点プロセッサ１００の他の実施形態は、ＩＥＥＥ３２ビット単フォーマットとは異なってフォーマットされている（限定されないが、ＩＥＥＥ６４ビット倍フォーマットを含む）浮動小数点レジスタ１１０を含んでいてもよく、および／または異なる数のレジスタ位置を含んでいてもよいことを当然理解すべきである。
【００１４】
図１を再度参照すると、浮動小数点制御装置１３０は、制御信号１３３を使用して、浮動小数点演算の副精度を選択するために使用される。制御レジスタ（ＣＲＧ）１３７には、例えば、１つ以上の命令の制御フィールド中で送信される副精度選択ビットがロードされてもよい。後に、より詳細に記述する方法において、浮動小数点制御装置１３０により副精度選択ビットを使用して、オペランドの精度を低減させてもよい。副精度選択ビットを使用して、浮動小数点プロセッサ１００の一部の電源を切ってもよい。一例として、副精度選択ビットを使用して、選択された副精度に対して必要とされないビットに対する浮動小数点レジスタ素子から電力を取り除いてもよい。選択された副精度が低減されるとき、副精度選択ビットを使用して、使用されない浮動小数点演算器ＦＰＯ１４０中のロジックから電力を取り除いてもよい。一連のスイッチを使用して、浮動小数点演算器１４０中の浮動小数点レジスタ素子およびロジックから電力を取り除いてもよく、それらに対して電力を加えてもよい。浮動小数点レジスタ１１０および浮動小数点演算器１４０に対して内部または外部にあってもよいスイッチは、電界効果トランジスタまたは他の何らかのタイプのスイッチであってもよい。
【００１５】
浮動小数点演算器１４０は、浮動小数点演算を実行するように構成された１つ以上のコンポーネントを含んでいてもよい。これらのコンポーネントは、浮動小数点の加算および減算命令を実行するように構成された浮動小数点加算器（ＡＤＤ）１４２や、浮動小数点乗算命令を実行するように構成された浮動小数点乗算器（ＭＵＬ）１４４のような計算ユニットを含んでいてもよいが、それらに限定されない。図１中で見られるように、浮動小数点演算器１４０中の計算ユニットＡＤＤ１４２およびＭＵＬ１４４のそれぞれは、互いに結合されており、そして、計算ユニットの間だけでなく、各計算ユニットと浮動小数点レジスタファイル１１０との間でも、オペランドが転送されることを可能にする方法で、浮動小数点レジスタファイル１１０に結合されている。浮動小数点演算器は、図示したような個々の接続１３４、１３５、１３６、１３７、１３８、および１３９を通して浮動小数点レジスタに結合されていてもよく、バスまたは他の何らかの適切な結合を介して結合されていてもよい。浮動小数点プロセッサ１００の少なくとも１つの実施形態において、計算ユニット（ＡＤＤ１４２およびＭＵＬ１４４）のうちのいずれか１つの出力は、他の何らかの計算ユニットの入力であってもよい。浮動小数点レジスタファイル１１０は、中間結果だけでなく、浮動小数点演算器１４０からの出力である結果を記憶するために使用してもよい。
【００１６】
加算器１４２は、浮動小数点フォーマットで標準算術演算を実行するように構成された、通常の浮動小数点加算器であってもよい。乗算器１４４は、浮動小数点乗算を実行するように構成された、通常の浮動小数点乗算器であってもよい。乗算器１４４は、一例として、ブースアルゴリズムまたは修正されたブースアルゴリズムにより実現してもよく、部分積を発生させる部分積発生ロジックと、部分積を累計する多数のキャリー保存加算器とを含んでいてもよい。
【００１７】
簡単にするために、加算器１４２と乗算器１４４だけを図１中で示しているが、技術的に既知であり、他のタイプの浮動小数点数学的演算を実行するように構成されている、（示していない）他の計算ユニットを、浮動小数点演算器１４０が含んでいてもよい。これらの計算ユニットは、浮動小数点の除算命令を実行するように構成された浮動小数点除算器や、浮動小数点の平方根を開く命令を実行するように構成された浮動小数点平方根開器や、浮動小数点の指数命令を実行するように構成された浮動小数点指数演算器や、対数関数を計算する命令を実行するように構成された浮動小数点対数演算器や、三角関数を計算する命令を実行するように構成された浮動小数点三角演算器を含んでいてもよいが、これらに限定されない。
【００１８】
浮動小数点プロセッサ１００の異なる実施形態は、上でリスト表示した計算ユニットのうちの、１つだけを、またはいくつかを、またはすべてを含んでいてもよい。例えば、加算器１４２および乗算器１４４は、それぞれ、入力オペランドを整列させるアライナーや、結果を標準フォーマットにシフトするノーマライザや、指定の丸めモードに基づいて、結果を丸めるラウンダのような、１つ以上のよく知られている通常のサブユニットを含んでいてもよい。ビットインバータや、マルチプレクサや、カウンタや、組み合わせロジック回路のような、よく知られている回路素子が、さらに、加算器１４２および乗算器１４４中に含まれている。
【００１９】
図１中で図示したように、浮動小数点演算器１４０は、浮動小数点レジスタファイル１１０に結合されており、それにより、要求された浮動小数点演算の各命令に対して、関連した計算ユニット、すなわち、加算器１４２または乗算器１４４は、レジスタ位置ＲＥＧ１、．．．、ＲＥＧ Ｎのうちの１つ以上の中に記憶された１つ以上のオペランドを、浮動小数点レジスタファイル１１０から受け取ることができる。
【００２０】
浮動小数点レジスタファイル１１０からオペランドを受け取り次第、浮動小数点演算器１４０中の１つ以上の計算ユニットは、浮動小数点制御装置１３０により選択された副精度で、受け取られたオペランドに関して、要求された浮動小数点演算の命令を実行してもよい。図１中で示したように、出力は、記憶のために浮動小数点レジスタ１１０に返送されてもよい。
【００２１】
浮動小数点プロセッサ１００の１つの実施形態において、ソフトウェアの選択可能なモードを使用して、プログラム制御の下で、浮動小数点演算の精度を低減させてもよく、または、上で説明したように、浮動小数点プロセッサ１００に提供される命令は、副精度選択ビットを含んでいる、プログラム可能な制御フィールドを含んでいてもよい。副精度選択ビットは、制御レジスタ１３７に書き込まれ、副精度選択ビットは次に、浮動小数点演算の間に、各オペランドに対する仮数のビット長を制御する。代わりに、副精度選択ビットは、例えば、図１中で示した、モニタスクリーン／キーボードまたはマウス１５０を含むが、これらに限定されない何らかの適切なユーザインターフェースから、直接に制御レジスタ１３７に書き込まれてもよい。浮動小数点プロセッサ１００の別の実施形態において、副精度選択ビットは、メインプロセッサ、またはそのオペレーティングシステムから、直接に制御レジスタ１３７に書き込まれてもよい。浮動小数点制御装置１３０中で示されている制御レジスタ１３７は、別のエンティティに組み込まれた、または、複数のエンティティにわたって分散された、独立型のエンティティとして、どこかの場所に存在していてもよい。
【００２２】
副精度選択ビットを使用して、浮動小数点演算の精度を低減させてもよい。これは、さまざまな方法で達成できる。１つの実施形態において、副精度選択ビットにより指定された精度を満たすことが要求されない小数部の過剰ビットに対する浮動小数点レジスタ素子から、浮動小数点制御装置１３０により、電力が取り除かれてもよい。一例として、浮動小数点レジスタファイル中のそれぞれの位置が、２３ビットの小数部を含み、そして、浮動小数点演算に対して必要とされる副精度が１０ビットである場合、小数部のうちの９個の上位ビットだけが必要とされ、隠れた、または整数ビットが、１０番目になる。残りの１４個の小数部ビットに対する浮動小数点レジスタ素子から、電力を取り除くことができる。１つ以上の命令に対する副精度が、１６ビットに増加される場合、仮数の１５個のＭＳＢが必要とされる。後者のケースにおいて、小数部の８個の下位ビット（ＬＳＢ）に対する浮動小数点レジスタ素子から、電力を取り除くことができる。
【００２３】
さらに、過剰の仮数ビットに対応する、浮動小数点演算器１４０中のロジックは、電力を必要としない。したがって、選択された副精度の結果として、使用されずにとどまっている、浮動小数点演算器１４０中のロジックに対する電力を取り除くことにより、電力節減を達成できる。
【００２４】
図３Ａは、浮動小数点演算器中のロジックに対して電力が選択的に加えられている状態での、浮動小数点の加算の例を図示する概念図である。特に、図３Ａは、２つの入力浮動小数点数３０２と３０４による浮動小数点の加算を概念的に図示する。浮動小数点数３０２と３０４は、それぞれ、選択された副精度により特徴付けられ、ともに加算される。簡単にするために、２つの数３０２と３０４は、すでに整列しており、それにより、シフトする必要がないと仮定する。フル精度モードにおける浮動小数点の加算は、図３Ａ中で参照される、参照数字３１０1、３１０2、．．．、３１０i、．．．、３１０nによる連続のステージを通して実行される。標準の規則にしたがうと、浮動小数点レジスタは、最も右側のＬＳＢから最も左側のＭＳＢまでの範囲にわたる、各数を構成するビットを順番に記憶する。図３Ａにわたって、右から左に移動する、それぞれの連続するステージのうちの１つは、前のステージに含まれるビットと比較して、増加した有効桁数を有するビットを含む。
【００２５】
図３Ａ中で図示した例において、選択された副精度は、ライン３０５により表されている。ライン３０５の右側に対する各ステージを実現するために使用されるロジックから、電力を取り除くことができる。最後に電源を切られたステージ３１０iからの桁上がりＣは、強制的にゼロにされる。電力は、ライン３０５の左側に対する各ステージを実現するために使用されるロジックに対してのみ供給される。図３Ａにおいて、浮動小数点演算器のアクティブなステージに対して提供される、電力供給されたビットは、参照数字３２２を使用して、Ｘとして示されており、一方、電力が取り除かれたステージに対して提供される、電力供給されないビットは、参照数字３２４を使用して、円として示されている。
【００２６】
図３Ｂは、浮動小数点演算器中のロジックに対して電力が選択的に加えられている状態での、浮動小数点の乗算の例を図示する概念図である。浮動小数点の乗算は、図１中で示した、参照数字１４４による浮動小数点乗算器ＭＵＬにおいて実行される。乗算器において、相当な量のロジックは、電源を切ることができ、かなりの電力の節減を提供する。図３Ｂ中で図示したバイナリ乗算は、基本的に、シフトされた浮動小数点数の一連の加算である。図示した実施形態において、バイナリ乗算は、桁送りおよび加算技術を使用して、ｋビットの被乗数４０２とｋビットの乗数４０４との間で実行される。桁送りおよび加算技術は、ブースアルゴリズムの、または修正されたブースアルゴリズムの乗算器に取って代えてもよい。
【００２７】
浮動小数点の加算のケースと同様に、浮動小数点乗算は、４１０−１、．．．、４１０−ｍとして図３Ｂ中で図示される、一連のステージにおいて実行される。簡単にするために、ブースアルゴリズムが使用されると仮定すると、１つの部分積が、乗数４０４中のすべてのビットに対して発生され、部分積４２０−ｉが、対応するステージ４１０−ｉの間に発生される。乗数の値が０である場合は、その対応する部分積は０だけで構成され、ビットの値が１である場合は、その対応する部分積は、被乗数のコピーである。演算が次のステージに移行した後、各部分積４２０−ｉは、それが関係付けられる乗数ビットの関数として、左にシフトされる。各部分積は、このように、シフトされた数としてとらえることができる。乗数中のビット０に関係付けられた部分積は、左にシフトされたゼロのビットであり、ビット１に関係付けられた部分積は、左にシフトされた１のビットである。部分積すなわちシフトされた浮動小数点数４２０−ｉは、ともに加算されて、乗算に対する出力値４３０を発生させる。
【００２８】
図３Ｂ中で図示した実施形態において、制御装置１３０による所望の低減精度の選択が、ライン４０５により示されている。図３Ａに関して記述した、浮動小数点の加算のケースと同様に、ライン４０５の右側に対するステージを実現するために使用されるロジックから、電力を取り除くことができる。選択された副精度をサポートするために実際に必要とされるステージ、すなわち、ライン４０５の左側に対するステージに対して、電力が加えられるだけである。図３Ｂにおいて、電源投入されたロジックに提供されるビットは、Ｘとして示されており、一方、電源を切られたステージに提供されるビットは、円として示されている。
【００２９】
図３Ｂから分かるように、１番目の部分積４２０−１に対して、参照数字４０２を使用して示した、Ｎ個のビットに対するロジックは、電力供給されない。２番目の部分積に対して、Ｎ−１個のビットに対するロジックは、電力供給されない、などである。ｍ番目の部分積すなわちシフトされた浮動小数点数４２０−ｍに対して、参照数字４１４を使用して示した（Ｎ−ｍ＋１）個のビットに対するロジックは、電力供給されない。残りのステージの精度に悪影響を及ぼさないように、ビット数Ｎが選ばれる。
【００３０】
上述した浮動小数点乗算から結果として生じる出力値は、互いに乗算されている２つの入力値４０２と４０４との幅（すなわち、ビット数）の合計に等しい幅を有する。出力値４３０は、選択された副精度に切り捨てられてもよく、すなわち、選択された精度よりも低い出力値４３０のビットのいくつかを切り捨てて、選択された精度により特徴付けられた、切り捨てられた出力の数を発生させてもよい。代わりに、出力値４３０を選択された精度に四捨五入してもよい。いずれのケースにおいても、選択された精度よりも下位の出力ビットは、電力供給されなくてもよい。
【００３１】
汎用目的のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）または他のプログラム可能ロジックコンポーネント、ディスクリートゲートまたはトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいはここで記述した機能を実行するために設計された、これらの任意の組み合わせ、の一部分である浮動小数点プロセッサ中で、ここで開示した実施形態に関して記述した、さまざまな実例となるロジックユニット、ブロック、モジュール、回路、素子、および／またはコンポーネントを実現または実行してもよい。汎用目的のプロセッサはマイクロプロセッサでもよいが、代わりに、プロセッサは任意の従来のプロセッサ、制御装置、マイクロ制御装置、または状態遷移機械であってもよい。プロセッサは、例えば、ＤＳＰとマイクロプロセッサとの組み合わせや、複数のマイクロプロセッサや、ＤＳＰコアに関連した１つ以上のマイクロプロセッサや、または他の任意のこのような構成のような、計算コンポーネントの組み合わせとして実現してもよい。
【００３２】
ここで開示した実施形態に関して記述した方法またはアルゴリズムのステップを、ハードウェア中で直接、プロセッサにより実行されるソフトウェアモジュール中で、またはその２つの組み合わせ中で具体化してもよい。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバルディスク、ＣＤ−ＲＯＭ，または技術的に知られている他の任意の形態の記憶媒体中に存在してもよい。プロセッサが記憶媒体から情報を読み取ることができ、記憶媒体に情報を書き込むことができるように、記憶媒体はプロセッサに結合されている。代わりに、記憶媒体はプロセッサと一体化されていてもよい。
【００３３】
いかなる当業者であっても本開示を作成または使用できるように、開示した実施形態の記述をこれまでに提供している。これらの実施形態に対してさまざまな修正が当業者に容易に明らかとなり、本開示の精神または範囲から逸脱することなく、ここで規定した一般的な原理を他の実施形態に適用してもよい。したがって、本開示は、ここで示した実施形態に限定されるように意図されていないが、特許請求の範囲に矛盾しない全範囲に一致すべきであり、ここで単一の要素に対する参照は、特にそう述べられていない限り、“１つおよびただ１つ”を意味するように意図されておらず、むしろ“１つまたはそれ以上”を意味するように意図されている。当業者に知られている、または後に知られるようになる、本開示全体を通して記述したさまざまな実施形態の要素に対するすべての構造的および機能的な均等物は、明白に、参照によりここに組み込まれ、特許請求の範囲により包含されるように意図されている。さらに、ここで開示したものは、そのような開示が特許請求の範囲中で明示的に記載されているかどうかにかかわらず、公開専用のものであるように意図されていない。要素がフレーズ“手段”を使用して明白に記載されていない限り、または方法の請求項のケースにおいて、要素がフレーズ“ステップ”を使用して記載されていない限り、請求項の要素は、合衆国法典第３５部１１２条第６項のもとで解釈すべきでない。
【図面の簡単な説明】
【００３４】
【図１】図１は、選択可能な副精度を有する浮動小数点プロセッサの例を図示する機能ブロック図である。
【図２】図２は、選択可能な副精度を有する浮動小数点プロセッサ中で使用される、浮動小数点レジスタの例のグラフィカルな説明図である。
【図３Ａ】図３Ａは、選択可能な副精度を有する浮動小数点プロセッサを使用して実行される、浮動小数点加算の例を図示する概念図である。
【図３Ｂ】図３Ｂは、選択可能な副精度を有する浮動小数点プロセッサを使用して実行される、浮動小数点乗算の例を図示する概念図である。
【図１】
2009528638.tif 000003
【図２】
2009528638.tif 000004
【図３Ａ】
2009528638.tif 000005
【図３Ｂ】
2009528638.tif 000006
【国際調査報告】
2009528638.tif 000007
2009528638.tif 000008