(57)【要約】【課題】入力データ値に応じたＦＭＡユニットにおける電力消費の低減を提供する。【解決手段】実施例において、ＦＭＡ回路は、複数の入力データ値を受け取って、これら入力データ値に対してＦＭＡ命令を実行するよう構成される。ＦＭＡ回路は、乗算器ユニット及び乗算器ユニットの出力へ結合された加算器ユニットと、入力データ値を受け取り、入力データ値の１又はそれ以上の値に基づきスイッチング動作を減じてＦＭＡ回路の１又はそれ以上の構成要素の電力消費を低減する制御ロジックとを含む。他の実施形態は、記載及び請求される。【選択図】図２
2014093085.tif 000002
【特許請求の範囲】
【請求項１】
命令を実行する複数の実行ユニット及び制御ロジックを含むコアを有し、
前記複数の実行ユニットは、複数の入力データ値を受け取って該入力データ値に対してＦＭＡ命令を実行するＦＭＡ回路を含み、
前記ＦＭＡ回路は、乗算器ユニットと、該乗算器ユニットの出力へ結合される加算器ユニットとを含み、
前記制御ロジックは、前記複数の入力データ値を受け取り、該複数の入力データ値の少なくとも１つの値に基づき前記ＦＭＡ回路の１又はそれ以上の構成要素をゲーティングする、
プロセッサ。
【請求項２】
前記ＦＭＡ回路は、
前記複数の入力データ値を受け取り、該複数の入力データ値の少なくとも１つに基づき例外を呼び出すべきかどうかを決定する例外ロジック
を更に有する、請求項１に記載のプロセッサ。
【請求項３】
前記複数の入力データ値の中の乗数及び前記複数の入力データ値の中の被乗数の１つが零であることに応答して、前記制御ロジックは、前記例外ロジックに前記複数の入力データ値の中の加数を出力させ、前記加算器ユニット及び前記乗算器ユニットは、トグリングしないようにされる、
請求項２に記載のプロセッサ。
【請求項４】
前記例外ロジックは、例外値に対応する前記複数の入力データ値の選択された１つを出力し、前記乗算器ユニット及び前記加算器ユニットは、トグリングしないようにされる、
請求項２に記載のプロセッサ。
【請求項５】
前記制御ロジックは、前記複数の入力データ値の加数が零である場合に、前記加算器ユニットをゲートオフさせる、
請求項１に記載のプロセッサ。
【請求項６】
前記制御ロジックは、前記複数の入力データ値の中の乗数又は前記複数の入力データ値の中の被乗数が２Ｎであり、Ｎが整数である場合に、前記乗算器ユニットをゲートオフさせる、
請求項１に記載のプロセッサ。
【請求項７】
前記ＦＭＡ回路は、
前記乗数及び前記被乗数の１つを入力として選択し、該１つをシフト値を得るためにＮだけシフトするシフタ
を更に有する、請求項６に記載のプロセッサ。
【請求項８】
前記加算器ユニットは、前記複数の入力データ値の中の加数と前記シフト値とを合計して和を求める、
請求項７に記載のプロセッサ。
【請求項９】
前記制御ロジックは、前記ＦＭＡ回路において実行される命令タイプを受け取り、該命令タイプに基づき前記ＦＭＡ回路の少なくとも１つの構成要素をゲーティングする、
請求項１に記載のプロセッサ。
【請求項１０】
前記ＦＭＡ回路は、
前記乗算器ユニットからの積を受け取るよう結合される複数の第１セレクタと、
前記複数の第１セレクタの第１の１つの出力へ結合されるシフタと、
前記複数の第１セレクタの第２の１つへ結合される第１記憶要素と、
前記複数の第１セレクタの第３の１つへ結合される第２記憶要素と、
前記シフタの出力へ結合される第３記憶要素と
を更に有し、
前記積は、前記第１記憶要素へ前記複数の第１セレクタの前記第１の１つによって出力され、前記第２記憶要素及び前記第３記憶要素は、乗算命令の実行中にクロックゲーティングされる、
請求項１に記載のプロセッサ。
【請求項１１】
前記ＦＭＡ回路は、
前記複数の入力データ値の中の乗数を受け取る第１記憶要素及び第４記憶要素と、前記複数の入力データ値の中の被乗数を受け取る第２記憶要素と、前記複数の入力データ値の中の加数を受け取る第３記憶要素とを含む第１の記憶要素の組
を有し、
前記第１記憶要素及び前記第２記憶要素は、前記被乗数が１に等しい場合に、クロックゲーティングされる、
請求項１に記載のプロセッサ。
【請求項１２】
前記制御ロジックは、前記被乗数が１に等しい場合に前記乗算器ユニットの順次クロックがトグリングしないようにし、前記複数の入力データ値の乗数を、前記複数の入力データ値の中の加数との加算のために、前記第４記憶要素から前記加算器ユニットへ転送させる、
請求項１１に記載のプロセッサ。
【請求項１３】
乗算器回路及び加算器回路を含むプロセッサのＡＬＵにおいて実行される動作に関連する複数の入力データ値を受け取るステップと、
前記複数の入力データ値の少なくとも１つが第１のタイプであるかどうかを、前記プロセッサの制御ロジックにおいて決定するステップと、
前記複数の入力データ値の少なくとも１つが前記第１のタイプであるとの決定に応答して、前記乗算器回路及び前記加算器回路の少なくとも１つを無効にし、前記ＡＬＵにおいて前記動作を実行して結果を生成するステップと
を有する方法。
【請求項１４】
前記乗算器回路及び前記加算器回路の少なくとも１つを無効することは、
前記乗算器及び前記加算器回路の当該少なくとも１つの入力へ結合される記憶要素をクロックゲーティングするステップ
を有する、請求項１３に記載の方法。
【請求項１５】
乗数入力データ値及び被乗数入力データ値の少なくとも１つが第１の値に等しい場合に、前記乗算器回路及び前記加算器回路を無効にし、前記ＡＬＵの出力へ加数入力データ値を供給して前記結果を生成する、
請求項１３に記載の方法。
【請求項１６】
被乗数入力データ値及び乗数入力データ値の一方が第２の値に等しい場合に、前記乗算器回路を無効にし、前記被乗数入力データ値及び前記乗数入力データ値の他方の値を、前記乗数入力データ値及び前記被乗数入力データ値の前記一方に基づく選択されたビット数だけシフトし、該シフトされた値を加数入力データ値と足し合わせて前記結果を生成する、
請求項１３に記載の方法。
【請求項１７】
被乗数入力データ値及び乗数入力データ値の一方が第３の値に等しい場合に、前記乗算器回路を無効にし、前記被乗数入力データ値及び前記乗数入力データ値の他方を加数入力データ値と足し合わせて前記結果を生成する、
請求項１３に記載の方法。
【請求項１８】
前記複数の入力データ値の少なくとも１つが例外ケースである場合に、前記乗算器回路及び前記加算器回路を無効にし、前記ＡＬＵの例外データパスにおいて前記結果を生成する、
請求項１３に記載の方法。
【請求項１９】
複数のコアを含むマルチコアプロセッサ、及び該マルチコアプロセッサへ結合されるＤＲＡＭを有し、
前記コアの少なくとも１つは、メインデータパス及び例外データパスを有するＦＭＡ回路と、該ＦＭＡ回路へ結合され、第１のタイプの入力データ値の入力に応答して前記メインデータパスの少なくとも一部を無効にする制御ロジックとを含み、
前記ＦＭＡ回路は、前記第１のタイプの前記入力データ値を含む複数の入力データ値に関連する命令の結果を生成し、
前記メインデータパスは、前記複数の入力データ値の夫々１つを受ける記憶要素の第１の段と、第１の入力データ値及び第２の入力データ値を乗算する乗算器回路と、少なくとも１つの記憶要素が前記乗算器回路の出力へ結合される記憶要素の第２の段と、第３の入力データ値を選択されたデータ値と加算する加算器回路とを含む、
システム。
【請求項２０】
前記制御ロジックは、更に、前記命令のタイプに応答して少なくとも前記メインデータパスを無効にする、
請求項１９に記載のシステム。
【請求項２１】
前記制御ロジックは、前記第１の入力データ値及び前記第２の入力データ値の少なくとも１つが零に等しい場合に、前記記憶要素の第１の段の中の第１及び第２の記憶要素を無効にする、
請求項１９に記載のシステム。
【請求項２２】
前記制御ロジックは、前記第１の入力データ値及び前記第２の入力データ値の少なくとも１つが零に等しい場合に、前記第３の入力データ値を前記例外データパスから出力させる、
請求項１９に記載のシステム。
【請求項２３】
前記記憶要素の第１の段は、前記第１の入力データ値を受ける第１記憶要素及び第４記憶要素と、前記第２の入力データ値を受ける第２記憶要素と、前記第３入力データ値を受ける第３記憶要素とを有し、
前記第１記憶要素及び前記第２記憶要素は、前記第２の入力データ値が１に等しい場合に、クロックゲーティングされる、
請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データ値に応じたＦＭＡユニットにおける電力消費の低減に関する。
【背景技術】
【０００２】
プロセッサにおける１つの共通した実行ユニットは、ＦＭＡ（Fused  Multiply-Add）ユニットである。一般に、ＦＭＡユニットは、最初にオペランドの２つを乗算し、次いでその積に第３のオペランドを累算するという、３つの入来するオペランドに対する演算を実行することができる。より具体的に、ＦＭＡ算術論理演算ユニット（ＡＬＵ；Arithmetic  Logic  Unit）は、Ａ×Ｂ＋Ｃを計算するよう設計される。なお、Ａ、Ｂ及びＣは任意の値である。通常、Ａは乗数入力と呼ばれ、Ｂは被乗数入力と呼ばれ、Ｃは加数入力と呼ばれる。最新のＦＭＡ  ＡＬＵ設計はパワーを増し、ＦＭＡ  ＡＬＵへ与えられるデータ入力にかかわらず同じ電力レベルで動作する。これは、特に、ＦＭＡの乗算ユニットの消費電力が大きいので、余分の電力消費を引き起こしうる。
【０００３】
幾つかのプロセッサは、選択回路による第３のオペランド又はオペランド及び結果のルーティングの適切な選択により加算、減算及び乗算のようなより簡単な数学演算を実行するためにそのようなユニットを用いる。然るに、多くのプロセッサにおいて、ＦＭＡユニットは、実行ユニットのバックボーンを形成し、プロセッサの周波数、電力及び面積の決定における重要な回路となり得る。
【０００４】
ＦＭＡユニットの平均電力を低減する従前の解決法は、通常、ＦＭＡ  ＡＬＵに負わされたより簡単な演算のための電力を、それらの演算をＦＭＡＡ  ＬＵから独立した別個の浮動小数点ＡＬＵに置くことによって、低減することに焦点を当てる。これは、ＦＭＡ  ＡＬＵが、それらのより簡単な演算についてパワーを落とすことを可能にし、そのような場合において電力消費を低減する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従前の解決法は、面積及び漏れ電力に関して費用がかかり、従って、理想的な解決法ではない。加えて、この解決法は、ＦＭＡ命令実行のために電力を節約することができない。
【課題を解決するための手段】
【０００６】
本発明の実施形態によれば、命令を実行する複数の実行ユニット及び制御ロジックを含むコアを有し、前記複数の実行ユニットは、複数の入力データ値を受け取って該入力データ値に対してＦＭＡ命令を実行するＦＭＡ回路を含み、前記ＦＭＡ回路は、乗算器ユニットと、該乗算器ユニットの出力へ結合される加算器ユニットとを含み、前記制御ロジックは、前記複数の入力データ値を受け取り、該複数の入力データ値の少なくとも１つの値に基づき前記ＦＭＡ回路の１又はそれ以上の構成要素をゲーティングする、プロセッサが提供される。
【０００７】
本発明の実施形態によれば、乗算器回路及び加算器回路を含むプロセッサのＡＬＵにおいて実行される動作に関連する複数の入力データ値を受け取るステップと、前記複数の入力データ値の少なくとも１つが第１のタイプであるかどうかを、前記プロセッサの制御ロジックにおいて決定するステップと、前記複数の入力データ値の少なくとも１つが前記第１のタイプであるとの決定に応答して、前記乗算器回路及び前記加算器回路の少なくとも１つを無効にし、前記ＡＬＵにおいて前記動作を実行して結果を生成するステップとを有する方法が提供される。
【０００８】
本発明の実施形態によれば、複数のコアを含むマルチコアプロセッサ、及び該マルチコアプロセッサへ結合されるＤＲＡＭを有し、前記コアの少なくとも１つは、メインデータパス及び例外データパスを有するＦＭＡ回路と、該ＦＭＡ回路へ結合され、第１のタイプの入力データ値の入力に応答して前記メインデータパスの少なくとも一部を無効にする制御ロジックとを含み、前記ＦＭＡ回路は、前記第１のタイプの前記入力データ値を含む複数の入力データ値に関連する命令の結果を生成し、前記メインデータパスは、前記複数の入力データ値の夫々１つを受ける記憶要素の第１の段と、第１の入力データ値及び第２の入力データ値を乗算する乗算器回路と、少なくとも１つの記憶要素が前記乗算器回路の出力へ結合される記憶要素の第２の段と、第３の入力データ値を選択されたデータ値と加算する加算器回路とを含む、システムが提供される。
【発明の効果】
【０００９】
本発明の実施形態によれば、入力データ値に応じたＦＭＡユニットにおける電力消費の低減が可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に従う一般的なＦＭＡユニットのブロック図である。
【図２】本発明の実施形態に従うＦＭＡ回路の概略図である。
【図２Ａ】本発明の他の実施形態に従うＦＭＡ回路の概略図である。
【図３】本発明の他の実施形態に従うＦＭＡ回路の概略図である。
【図４】本発明の他の実施形態に従うＦＭＡ回路の概略図である。
【図５】本発明の実施形態に従う更なる他のＦＭＡ回路の概略図である。
【図６】本発明の実施形態に従う方法のフロー図である。
【図７】本発明の一実施形態に従うプロセッサコアのブロック図である。
【図８】本発明の実施形態に従うマルチドメインプロセッサのブロック図である。
【図９】本発明の実施形態に従うシステムのブロック図である。
【発明を実施するための形態】
【００１１】
様々な実施形態において、ＦＭＡ回路の電力消費は、入力データ値の１若しくはそれ以上の解析及び／又は回路において実行される命令に基づき制御され低減され得る。例えば、多くのデータ入力について、答えは、自明に知られるか、又は、より電力効率の良い方法で計算され得る。一例として、乗数又は被乗数入力の一方又は両方が零である場合は、ＦＭＡ計算の結果は自明に加数に等しい。よって、電力を節約するために、ＦＭＡユニットの少なくとも部分はクロックゲーティングを介してパワーを落とされ、加数は出力へ直接バイパスされる。
【００１２】
更に、より複雑な最適化が可能である。被乗数が２の直接の累乗である場合を考える（例えば、１．０×２１＝２）。この場合に、積を計算する乗算ユニットは、クロックゲーティングを用いてゲートオフ可能であり、シフト演算が積を計算するために使用されてよく、回路の乗算器ユニットで消費される大量の電力を節約する。そのようなものとして、データ入力自体に基づく最適化は、クロックゲーティングを制御し、経路をバイパスして効率的な演算を実現するために使用されてよい。
【００１３】
更に、多くの演算が、可能な限りデータパスの多くを再利用するために、ＦＭＡ  ＡＬＵ内のメインＦＭＡデータパスの上にオーバーレイされる。それらの演算は、乗算、加算及び減算のような簡単な算術演算、ＡＮＤ／ＯＲ／シフト／循環のような論理演算、ＭＩＮ関数、ＭＡＸ関数、整数演算、比較演算、並びに浮動小数点−整数変換、整数−浮動小数点変換、倍−単精度変換及び単−倍精度変換のような変換演算を含むことができる。実施形態は、ＦＭＡユニット内で更なる平均電力を節約するよう、それらの演算のために入力データにより駆動されるクロックゲーティングを実行してよい。
【００１４】
よって、実施形態は、それらの特別のデータ入力及び／又は命令タイプが検出される場合に平均電力を下げるよう、関連する制御及び乗算ロジックを介して制御される精細なクロックゲーティングを実施してよい。このようにして、ＦＭＡ演算、すなわちＡＢ＋Ｃの演算を含む演算は、より効率的に実行され得る。一般に、ＦＭＡユニットは、乗算器及び加算器を有し、更に単一のラウンダー（rounder）を有する。このＦＭＡユニットは、ベクトルサイズ値のようなより広い幅のオペランドを受け入れるよう、比較的広いデータ幅であることができる。例えば、一実施形態において、このＦＭＡユニットは６４ビットオペラントを受けて、それらに対してＦＭＡ演算を実行することができる。
【００１５】
本発明の適用範囲はこれに関して制限されず、多くの実施において、ＦＭＡユニットは浮動小数点乗累算演算を実行し、所与のフォーマットの、例えば、浮動小数点（ＦＰ）計算のためのＩＥＥＥ（Institute  of  Electrical  and  Electronics  Engineers）標準７５４−２００８（２００８年発行）のような所与のＩＥＥＥ標準のオペランドに適合してよい。更に、所与の実施は、単及び倍精度浮動小数点フォーマットであってよいオペランドを含む様々なタイプの入来データを扱うために使用されてよい。
【００１６】
一実施形態において、ＦＭＡ命令シンタックスは、３つのソースオペランドを用いて定義されてよい。ここで、第１のソースオペランドは、データ要素の算術演算の結果に基づき更新される。そのようなものとして、第１のソースオペランドはまた、目標オペランドであってもよい。例えば、演算コードｘ１、ｘ２、ｘ３の命令フォーマットが存在してよく、この演算コードは、所与の算術演算を実行するための複数のユーザレベルＦＭＡ又は他の命令の１つに対応し、ｘ１乃至ｘ３は、演算において処理されるオペランドに対応する。
【００１７】
ＦＭＡ命令において実行される算術ＦＭＡ演算は、複数の形、例えば：
ｒ＝（ｘ×ｙ）＋ｚ；
ｒ＝（ｘ×ｙ）−ｚ；
ｒ＝−（ｘ×ｙ）＋ｚ；又は
ｒ＝−（ｘ×ｙ）−ｚ
のうちの１つを取ることができる。
【００１８】
実施形態において、パックＦＭＡ命令は、２５６ビットベクトルを有する８つの単精度ＦＭＡ演算又は４つの倍精度ＦＭＡ演算を実行することができる。スカラーＦＭＡ命令は、ベクトルレジスタを用いて実施される場合に、下位データ要素に対して１つの算術演算のみを実行する。目的オペランドの下位１２８ビットにおける残りのデータ要素の内容は保持され、一方、目的オペランドの上位１２８ビットは零を充填される。
【００１９】
実施形態において、ｒ＝（ｘ×ｙ）＋ｚの形をとる算術ＦＭＡ演算は、２つのＩＥＥＥ７５４−２００８単（倍）精度値をとり、それらを乗算して中間値を形成する。この中間値は、第３の（単）倍精度値に加えられ、単（倍）精度結果を得るよう丸められる。異なる丸めモード及び精度が異なる実施形態において実施されてよい。
【００２０】
一実施形態において、ベクトル命令は、様々なパックデータタイプ表現で実行され得る。それらのデータタイプは、１２８ビット幅のオペランドについてパックバイト（packed  byte）、パックワード（packed  word）、並びにパックダブルワード（packed  doubleword（dword））及びパッククワドワード（packed  quadword）を含んでよい。例として、パックバイトフォーマットは、１２８ビット長さであり、１６個のパックバイトデータ要素を含むことができる。バイトは、ここでは、８ビットのデータとして定義される。バイトデータ要素ごとの情報は、バイト０についてはビット７乃至ビット０に、バイト１についてはビット１５乃至ビット８に、バイト２についてビット２３乃至ビット１６に、そして最後にバイト１５についてはビット１２７乃至ビット１２０に格納される。なお、実施形態はスカラー（個別、すなわち、非パック）表現に等しく当てはまると理解されたい。
【００２１】
一般に、データ要素は、同じ長さの他のデータ要素とともに単一のレジスタ又はメモリ位置に記憶される個々のデータ片である。幾つかのパックデータシーケンスにおいて、レジスタに記憶されるデータ要素の数は、個々のデータ要素のビットにおける長さによって分割される１２８ビットであってよい。データタイプは１２８ビット長さであってよいが、本発明の実施形態はまた、６４ビット幅の又は他のサイズのオペランドを有して動作することができる。
【００２２】
パックデータフォーマットは更に、他のレジスタ長さへ、例えば、９６ビット、１６０ビット、１９２ビット、２２４ビット、２５６ビット又はそれ以上へ拡大されてよいことは明らかである。加えて、様々な符号付き及び符号なしのパックデータタイプ表現が、本発明の実施形態に従ってマルチメディアレジスタにおいて扱われ得る。そして、様々なタイプのスカラーデータフォーマットも、本発明の実施形態に従ってレジスタファイルのレジスタにおいて扱われてよい。
【００２３】
ここで図１を参照すると、本発明の実施形態に従う一般的なＦＭＡユニットのブロック図が示されている。図１に示されるように、ＦＭＡユニット１０は、乗算器ユニット１５、加算器ユニット２０、及びラウンダーユニット３０を有する。図１に示される実施形態では、ＦＭＡユニット１０は、乗算器ユニット１５で複数のソースオペランドを受けるよう構成され得る。図示される実施形態では、２つのソースオペランド、例えば、６４ビット幅の夫々が受け取られ得るが、本発明の適用範囲はこれに関して制限されない。例えば、他の実施形態では、ソースオペランドは３２ビット又は１２８ビットであってよい。
【００２４】
然るに、乗算器ユニット１５は、例えば、ソースオペランドのための入力が倍精度値の５３ビット仮数であるとすると、１０６ビットの幅を有する積を生成することができる。加算器ユニット２０は、この入来する積を受け入れるために１０８ビットの幅を有するよう構成される。加えて、加算器ユニット２０は更に、追加のソースオペランドを受けるよう構成される。この追加のオペランドは、幾つかの実施形態において、やはり６４ビットであってよい。よって、加算器ユニット２０は、１０６バイトである和を生成する。この和はラウンダーユニット３へ供給され、ラウンダーユニット３は、例えば５３ビットの、丸められた出力を生成する。当然、データパスは他の実施形態では異なるサイズを有してよいと理解されたい。
【００２５】
このハードウェアにおいてＦＭＡ演算を実行するために、係数Ａ及び変数Ｂに対応する２つのソースオペランドが乗算器ユニット１５へ供給され得る。次いで、それらの値の積は、加算器ユニット２０において第３のソースオペランド（Ｃ）と加算され、このようにして、ラウンダーユニット３で丸められ得る和を求めることができる。よって、結果は、ＡＢ＋Ｃの値に対応することができる。そのようなＦＭＡを実行することに加えて、このハードウェアは更に、乗算器ユニット１５で乗算を実行し、更に加算器ユニット２０で他の演算を実行するよう構成される。
【００２６】
異なるタイプの命令が然るべくＦＭＡユニット１０で実行され得る。本発明の適用範囲はこれに関して制限されないが、一実施形態において、かかる命令は、倍精度ＦＭＡ命令、単精度ＦＭＡ命令、並びに他の倍精度及び単精度命令を含むことができる。
【００２７】
ここで図２を参照すると、本発明の実施形態に従うＦＭＡ回路の概略図が示されている。図２に示されるように、ＦＭＡ回路１００は、入力データを受け取り、所望の結果を得るよう演算を実行する様々な構成要素を有する。様々な実施形態に従って、入力データ値及び／又は命令タイプの１又はそれ以上に基づき、回路の制御は、特定の演算のために必要とされない場合に、回路の１又はそれ以上の構成要素をクロックゲーティングすることにより電力消費を低減するように起こることができる。本発明の実施形態を用いて利用可能な具体的な電力節約技術の議論の前に、ＦＭＡ回路１００の全体的な処理パイプラインの簡単な議論が与えられる。
【００２８】
見て分かるように、３つの入来する入力データ値の夫々は、記憶要素の対応する組の１つへ与えられる。より具体的に、図２の実施形態では、複数のフロップ１０５０〜１０５２が存在する。ここで記載される実施形態は、記憶要素としてＤ型フリップフロップのようなフリップフロップを用いるが、本発明の適用範囲はこれに関して制限されず、他の実施形態では、ラッチのような異なるタイプの記憶要素が使用されてよいことを理解されたい。見て分かるように、加数入力データ値はフロップ１０５２へ供給され、被乗数入力データ値はフロップ１０５１へ供給され、乗数入力データ値はフロップ１０５０へ供給される。
【００２９】
次いで、それらの値の夫々は、ＦＭＡ回路の更なる回路へ結合される。見て分かるように、加数は整列回路１１５へ、更に例外ロジック１１９へ供給される。乗数値及び被乗数値は、乗算器回路１１０へ、更に例外ロジック１１９へ供給される。実施形態において、整列回路１１５は、加数と乗数及び被乗数の積との間の指数差を決定するよう動作してよい。乗算器回路１１０は、乗数値及び被乗数値を乗算して積を生成するよう動作する。実施形態において、基数８の乗算器が存在してよいが、如何なるタイプの乗算器も使用されてよい（例えば、他の基数又は他の設計）。乗算器回路１１０からの積はフロップ１２０１へ供給され、一方、整列された加数はフロップ１２０２へ供給される。次いで、それらの値は加算器回路１２５で加算されてよい。結果として得られる和は、フロップ１３０１を介して正規化回路１３５へ送られる。正規化回路１３５は、和に対して正規化演算を実行してよい。この正規化された値は、フロップ１４０１を介してラウンダー回路１４５へ結合してよい。ラウンダー回路１４５は、例えば、制御レジスタにおいて特定される所与の丸めモードに従って、又は実行される命令において特定される丸めモードに応答して、丸めを実行してよい。そのようなものとして、丸められた値はセレクタ１５０へ供給される。セレクタ１５０において、値は、例外がセレクタ１５０への例外入力を介して示されないとすると、結果として出力され得る。
【００３０】
このメインデータパスに加えて、例外データパスが存在する。上述されたように、例外ロジック１１９は入力データ値を受け取る。これらの入力データ値及び他の情報（例えば、様々な設定情報、等）に基づき、例外ロジック１１９は、例えば、例外的な入力又は他の例外条件により、例外を生成してよい。そのような例外インジケーションは、次いで、セレクタ１５０へ供給される前に、一連のフロップ１２００、１３００及び１４００を通ってよい。
【００３１】
このように図２から分かるように、２つのメインデータパスが存在し、１つはメインＦＭＡ計算のためのデータパスであり、もう１つは、例えばＩＥＥＥ−７５４−２００８浮動小数点標準によって定義されるような、例外事由のためのデータパスである。幾つかの実施形態において、このバイパス経路は、データに基づくクロックゲーティングスキームを実施する費用を削減するために使用され得る。上記の議論は、このように、ＦＭＡ回路の入力からその出力までのデータパスの基本的な動作について記載する。
【００３２】
２つの経路に加えて、ＦＭＡ回路１００は、入来するデータ値を受け取る制御ロジック１６０を有する。ロジック１６０は更に、所与の命令に応答してＦＭＡ回路１００で実行される演算のタイプのインジケーションを受け取ってよい。この情報に基づき、制御ロジック１６０は、例えば、命令タイプ又はデータの状態により、メインデータパス（及び／又は例外データパス）の１又はそれ以上の構成要素が所与の命令の正確な演算のために必要とされないと決定してよい。そのようなものとして、制御ロジック１６０は、制御信号を１又はそれ以上の構成要素へ供給してそれらをオフしてよい。本発明の適用範囲はこれに関して制限されないが、実施形態において、制御ロジック１６０は、データパスの全体を通して１又はそれ以上のフロップへのクロック信号をゲーティングして、それらのフロップを非作動としてよい。このようにして、電力消費は、それらのフロップが作動していないので、低減される。加えて、作動中のフロップなしでは、その出力でのデータのトグリングは存在せず、そのようなものとして、このフロップから下流の回路も切り替わらず、更に電力消費を低減する。図２の実施形態ではこのようなハイレベルで示されているが、本発明の適用範囲はこれに関して制限されないと理解されたい。例えば、更なる構造が、データパスの異なる点への入力のための適切な値のスイッチング、バイパス、乗算及び他の選択を扱うためにＦＭＡ回路において存在してよいことを理解されたい。また、ＦＭＡ回路１００に関して、回路のデータパスは、入力が最終の結果を得るようデータパスの全体を通して処理されるために複数のプロセッサクロックサイクルが起こるように、多段階又はサイクルデータパスである点に留意されたい。図２に示される具体的な実施形態では、４段階又はサイクル回路が示されている。なお、本発明の適用範囲はこれに関して制限されない。
【００３３】
乗数又は被乗数の一方又は両方が零に等しい場合に、乗数及び被乗数の積は零となり、最終の結果は、ＦＭＡ回路全体をゲーティングし且つ加数を出力へ直接送ることによって、求められ得る。乗数及び被乗数入力データ値の一方又は両方が零に等しい例において、実質的にメインデータパスの全てがゲートオフされ、加数は出力へ直接送られる。制御ロジック１６０が、乗数及び被乗数データ値の一方又は両方が零であることを検出する場合に、これは、それらの値もフロップ１０５０〜１０５２へ供給される第一サイクルにおいて決定され得、続くクロックゲーティングが起こってよい。具体的に、命令の第２クロックサイクルの間、フロップ１０５０及び１０５１はゲーティングされ、一方、フロップ１０５２は、加数が整列回路１１５を通ることを可能にするようクロック制御され、整列回路１１５は切り替わる。フロップ１０５０及び１０５１はクロックゲーティングされるので、乗算器回路１１０は切り替わらない点に留意されたい。続くクロックサイクルで、フロップ１２０１及び１２０２はクロックゲーティングされ、更なるクロックサイクルで、フロップ１３０１及び１４０１もクロックゲーティングされ、それにより、加算器回路１２５、正規化回路お１３５及びラウンダー回路１４５は切り替わらず、更に追加の電力節約を提供する。最終の結果を実現するよう、加数はセレクタ１５０へ直接供給され得る。加数値のこのような供給は、フロップ１０５２から直接的にセレクタ１５０へ至るバイパス経路を介することができる（図示せず。）。あるいは、値は、依然としてクロック制御される例外ロジック１１９並びにフロップ１２００、１３００及び１４００を含む例外データパスを通され得る。よって、実施形態において、加数は、この例外データパスを通ってセレクタ１５０へ送られ得る。
【００３４】
入力データ値に基づく電力制御の他の例は、例外的な入力が存在する場合である。そのような入力（例えば、ｓＮａＮ（signaling  not  a  number）、ｑＮａＮ（quiet  not  a  number）、無限大、及び零）が存在する場合に、ＩＥＥＥ７５４標準例外処理規則は、生成されるべき出力を規定する。そのような規則は、通常、定数（例えば、＋∞×＋∞）又は入力値の１つの変形された値のいずれかが返されることを定める。例えば、ｓＮａＮ入力は僅かに変形され、最終の生成物として返される。そのような例外事由において、最終の結果は、入力値の解析によって決定され得る。再び図２を参照すると、フロップ１２０１及び１２０２並びにメインデータパスの全ての下流のフロップは、電力消費を低減するよう、そのような例外的な入力の場合にはクロックゲーティングされ得る。この電力消費は、それらのフロップのクロックゲーティング並びに加算器回路１２５、正規化回路１３５及びラウンダー回路１４５を含むメインデータパス回路における入力トグリングの欠如の両方により実現される。結果は、依然としてクロック制御されている例外データパスを介して求められ得る。ＦＭＡ入力が例外事由に当たらない場合は、ゲーティングは反対の事例において同様に行われ、バイパス経路は少量の電力を節約するためにゲートオフされ得る。
【００３５】
加数が零に等しい場合に、加数入力は無効にされてよく、加算器回路１２５はバイパスされ、最終の結果は積にのみ等しくなる。図２に示されるような回路はこの制御を実行することができるが、幾つかの実施形態において、異なるＦＭＡ配置が存在してよい。ここで図２Ａを参照すると、本発明の更なる他の実施形態に従うＦＭＡ回路の概略図が示されている。図２Ａに示されるように、ＦＭＡ回路１００’は、ＦＭＡ回路１００の構成と同様に構成されてよい。しかし、加算器回路１２５及びフロップ１２０１の下流に結合されるセレクタ１２８の存在に留意すべきである。加数が零である場合に、フロップ１０５２はクロックゲーティングされてよく、よって、整列回路１１５が切り替わらないことを可能にする。加えて、フロップ１２０２は、同様にクロックゲーティングされてよい。代わりに、乗算器回路１１０からの積は、メインデータパスの残りのみを通るこの積の通過が結果として出力されることを可能にするよう、フロップ１２０１からセレクタ１２８へ直接結合してよい。他の点において、ＦＭＡ回路１００’は、図２の回路１００の構成と同様に構成されてよい。
【００３６】
更なる他の事例は、乗数又は被乗数が厳密に２の累乗であり（１．０×２Ｎ。ここで、Ｎは整数であり、２の累乗と呼ばれる。）、従って、積を計算する乗算器がゲートオフされ得る場合であり、シフト演算はそのような場合に積を計算するために使用され得る。
【００３７】
ここで図３を参照すると、本発明の他の実施形態に従うＦＭＡ回路の概略図が示されている。図３から分かるように、ＦＭＡ回路１００”は、図２のＦＭＡ回路と略同じように構成されてよい。しかし、図３の実施形態では、更なる論理回路、選択メカニズム及びシフトメカニズムが、電力消費の削減を可能にするよう更なるデータ値の場合を扱うことを可能にするために提供される。具体的に、図３の回路によれば、乗数及び被乗数の少なくとも一方が２の累乗である場合が、電力削減態様において扱われ得る。
【００３８】
図１にあるように上記の回路に加えて、ＦＭＡ回路１００”は、被乗数及び乗数を受け取り、制御ロジック１６０による制御に応答してそれらの値の選択された１つがシフタ１１４へ供給されることを可能にするよう夫々構成された一対のセレクタ１１２０及び１１２１を更に有する。セレクタ１１２１は、シフタ１１４への適切な入力を選択するよう動作する。然るに、シフタ１１４は、乗数又は被乗数Ｎビットの選択された１つを（入力に応じて左又は右へ）シフトするよう動作する。ここで、Ｎは、乗数及び被乗数の他方の２の直接の累乗である。このように、このシフトされた値はセレクタ１１８へ渡り、セレクタ１１８は更に乗算器回路１１０の出力を受け取る。然るに、乗算器回路１１０が、２の直接の累乗である乗数／被乗数であるこの場合についてクロックゲーティングされる場合に、シフタ１１４の出力は、このようにしてセレクタ１１８を介してフロップ１２０１へ至る。
【００３９】
依然として図３を参照して、更に、ＡＮＤゲート１０８０及び１０８１の存在に留意されたい。それらのＡＮＤゲートは、乗数入力値及び被乗数入力値の対応する１つを入力として受け取ってよい。加えて、それらのＡＮＤゲートは更に、フロップ１０５０及び１０５１へのクロック信号を受け取る。よって、それらの値が特別の場合に当てはまらず、よって乗算器回路１１０において演算されるべき場合に、ＡＮＤゲートは切り替わって、値を乗算器回路１１０へ送る。代わりに、特別の場合が存在する状況において、例えば、入力データ値の１つが２の直接の累乗である場合に、それらのフロップはクロックゲーティングされて、ＡＮＤゲートは切り替わらない。他の点においては、ＦＭＡ回路１００”の通常の動作が起こる。他の点においては、ＦＭＡ回路１００”は、図２のＦＭＡ回路１００と略同じに構成されてよい。
【００４０】
これら上記の例は、データ入力により駆動される精細クロックゲーティングが如何にしてオーバーヘッド費用及び複雑性の低減とともにＦＭＡ  ＡＬＵ内の平均電力を低減することができるのかを表す。実施形態はまた、算術演算（例えば、不動乗数点加算及び減算）のような非ＦＭＡ演算、ＡＮＤ／ＯＲ／シフト／循環のような論理演算、整数演算、比較演算、及び変換演算をＦＭＡ回路において実行する電力消費を低減してよい。このために、ＦＭＡ  ＡＬＵは、命令タイプに基づきＡＬＵの部分をクロックゲートオフすることによって、ＦＭＡ以外の演算について低電力で動作することができる。通常、命令タイプは、ＡＬＵにおける命令の実際の実行より前によく知られており、従って、命令タイプによるクロックゲーティングの制御は、クロックゲーティングに対する如何なるタイミング経路も回避する。
【００４１】
一実施形態において、最大の電力削減を得るために、ＡＬＵ内のフロップ段は、可能な限り多くのサブグループに分けられてよい。１つの可能な分割は図４に表されており、例えば、４サイクルＦＭＡ  ＡＬＵである。分割は、３つのソース（乗数、被乗数及び加数）の夫々について入力フロップをグループに分けることを含む。内部フロップ段は、機能によってグループに分けられ得る。例えば、浮動小数点指数ロジックに関するフロップは、それらのフロップが浮動小数点演算についてのみ有効にされる必要があるように、別個のグループに分けられてよい。グループが細かければ細かいほど、演算の電力に対する制御はより大きくなり得る。
【００４２】
フロップ段がグループに分けられると、次いで夫々のグループは、夫々の命令タイプについて必要とされるように有効又は無効にされる。高精細なフロップグループは、ＡＬＵのかなりの部分がＡＬＵの上にオーバーレイされているより簡単な演算のために切り替わらないようにすることを可能にする。そのようなものとして、実施形態はそれらのより簡単な演算のための電力消費を低減して、プログラムを実行するために費やされる全体的なエネルギを低減する。
【００４３】
図４に示されるように、ＦＭＡ回路２００は概して、上記のＦＭＡ回路と同様の構成を有する。しかし、更なる構成要素が、他の演算がデータパス内で実行されることを可能にするよう存在する。図４の回路において、入力データ値は、フロップ２０５０〜２０５２の組を通って供給される。見て分かるように、被乗数及び乗数は、乗算器回路２１０へ供給される。また、全ての３つの入力は指数ロジック２１２及び例外ロジック２１９へ供給される点に留意されたい。加えて、全ての入力は、入力データ値及び／又はＦＭＡ回路内で実行される命令のタイプに基づき、本発明の実施形態に従う電力制御を実行する制御ロジック２９５へ供給されてよい。浮動小数点比較命令のような比較命令について、フロップ２０５０へ入力される被乗数は、乗算器回路２１０内のトグルレートを低減するようクロックゲーティングされ得る。また更に、フロップ２７０１及び２７０２からの出力は、同様にクロックゲーティングされ得、よって、ラウンダー回路２８０において入力トグリングを引き起こさない。そのようなものとして、比較の最終結果は、セレクタ２６５０を介して及びフロップ２７００を通じて得られる。
【００４４】
より一層多くのクロックゲーティングは、整数乗算命令のような乗算命令について起こり得る。この場合に、フロップ２０５２を介して入力される加数は、フロップ２２００、２２０１及び２２０４並びにフロップ２４０１〜２４０３とともに、クロックゲーティングされ得る。これは、加算器回路２５０、先行零予測器（ＬＺＡ；leading  zero  anticipator）２６０、シフタ２６８及び指数ロジック２６６内のトグリングを有効にしない。フロップ２７０１及び２７０２のクロックゲーティングに加えて、ラウンダー回路２８０におけるトグリングも回避される。例外ロジックからの経路は、結果を出力へ渡すよう設けられてよい点に留意されたい。
【００４５】
浮動小数点加算及び減算のような演算は、Ａ×１．０＋Ｂ又はＡ×１．０−ＢとしてＦＭＡ回路へ入力される。同様の入力は、比較演算及び変換演算について起こる。通常、それらの演算の大部分は、乗算を実行する必要がなく、入力の１つに関する定数を送ることによって実施される（例えば、加算のためにＡ×１．０＋Ｂ）。
【００４６】
上述されたように、実施形態は、Ａ×１．０のような場合に乗算器ユニットへのフロップ入力をクロックゲートオフすることによって、及び乗算器ユニットのためのあらゆる内在的及び出力フロップをクロックゲートオフすることによって、それらの場合に電力を低減してよい。これは、入力データ値に依存して、乗算器アレイが大電力を要する構成であり、通常、ＦＭＡ  ＡＬＵにおける少なくとも５０％の面積及び動的電力の大部分の主たる原因となることから、命令によって消費される動的電力を低減することができる。
【００４７】
データパスは、前段から値を受け取るフロップ２２００〜２２０４の組を更に有する。フロップ２２０２及び２２０３は出力を加算器回路２２５へ供給し、一方、フロップ２２０１は指数ロジック２２６の更なる段への入力を供給する。次いで、フロップ２２００の出力はセレクタ２３００へ供給され、一方、フロップ２２０４の出力はセレクタ２３０１及び２３０２へ供給される。それらのセレクタ２３０１及び２３０２は両方とも、加算器回路２２５の和出力を更に受け取る。また、和出力は、セレクタ２３００へも供給される。セレクタ２３０１の出力は、シフタ２３５へ供給される。このシフトされた出力は、フロップ２４００〜２４０３の組のフロップ２４０２へ供給される。フロップ２４０２及び２４０３の出力は、正規化の間に使用される他の加算器回路２５０及び先行零予測器２６０へ供給される。次いで、フロップ２４００の出力は、セレクタ２６５０へ供給され、フロップ２４０１の出力は、指数ロジック２６６の更なる段へ供給される。
【００４８】
加算器回路２５０の和出力は、他のシフタ２６８へ及びセレクタ２６５０へ供給され、一方、先行零予測器２６０の出力は、指数ロジック２６６及びシフタ２６８を制御するよう結合される。シフタ２６８の出力はフロップ２７０２を介してラウンダー回路２８０へ結合する。指数ロジック２６６の出力はフロップ２７０１を介して結合され、その出力はラウンダー回路２８０を制御するために使用される。最後のセレクタ２９０は、ラウンダー回路２８０の丸め出力と、セレクタ２６５０及びフロップ２７００を介する例外パスの出力とを受け取るよう結合される。図４の実施形態ではこのようなハイレベルで記載されているが、更なる回路が他の実施形態ではＦＭＡデータパス内に存在してよいことを理解されたい。
【００４９】
ここで図５を参照すると、本発明の実施形態に従う更なる他のＦＭＡ回路の概略図が示されている。この実施形態では、入力データ値は、フロップ３０５０〜３０５２の組を介して供給される。加えて、乗数入力値は更に、更なるフロップ３０５３を介して結合される点に留意されたい。乗数及び被乗数入力データ値は、乗算器回路３１０へ結合する。次いで、乗算器回路３１０は積を出力し、この積はフロップ３３５を介してセレクタ３４５へ供給される。このＦＭＡ回路のクロックゲーティング及び他の制御は、制御ロジック３７５を介してよい。
【００５０】
被乗数が所定値、例えば１．０である場合に、フロップ３０５０及び３０５１の両方並びに乗算器回路３１０（及び積フロップ３３５）はクロック制御される必要がない。代わりに、フロップ３０５３を通じて供給され且つセレクタ３２５を介する乗数入力データ値は、例外バイパスフロップ３３０を通ってセレクタ３４５へ送られてよい。セレクタ３４５は、この直接の乗数入力データ値を加算器回路３５０へ送るよう制御され得る。加算器回路３５０は、加数フロップ３４０を介して加算器回路３５０へ供給される加数を乗数に加えるよう動作する。図５の実施形態ではこのようなハイレベルで図示されるが、本発明の適用範囲はこれに関して制限されないと理解されたい。
【００５１】
ここで図６を参照すると、本発明の実施形態に従う方法のフロー図が示されている。一実施形態において、方法４００は、上述されたようなＦＭＡ  ＡＬＵの制御ロジックによって実行され得る。概して、この制御ロジックは、実行される命令のタイプのインジケーションとともに、ＦＭＡ回路の入力データ値を受けるよう構成される。このインジケーションは、命令自体の入力を介してよく、あるいは、それは、例えば、命令タイプ（例えば、ＦＭＡ命令や、加算、乗算、比較等のより簡単な演算）を示すプロセッサのフロントエンドデコーダから受け取られるインジケーションであってよい。
【００５２】
図６から分かるように、方法４００は、制御ロジック及びデータパスの両方においてそれらの入力データ値を受けることによって、ブロック４１０から始まる。上述されたように、幾つかの実施形態では、入力データ値に加えて、制御ロジックは更に、命令タイプインジケーションを受け取ることができる。
【００５３】
次に、ダイヤモンド４２０で、入力データ値の少なくとも１つが特別の場合の値として特定されるかどうかが決定され得る。そのような特別の場合の値の多くは上述された通りであり、例えば、０、１、若しくは２の累乗を有する乗数若しくは被乗数、零の加数、又は例外的な入力である。そのような入力データ値が存在する場合は、制御はブロック４３０へ移り、データパスの１又はそれ以上の構成要素がクロックゲーティングされ得る。また更に、特定のバイパス、シフト、選択動作も実行され得る。そのような動作は、他の入力データ値の１又はそれ以上がそのデータパスにおいて、又はデータパスのサイクルにおける実行の過程において演算される前に、起こることができる。見て分かるように、制御はブロック４４０へ移り、命令が実行され、結果を出力するよう完了され得る。代わりにダイヤモンド４２０で特別の場合が存在しないと決定される場合は、制御は直接にブロック４４０へ移る。同様の方法は、特定の命令タイプに応答して、例えば、入力データ値のいずれも特別の場合でない場合でさえ、クロックゲーティング及び他の演算を実行するよう制御ロジックによって実行され得る点に留意されたい。図６の実施形態ではこのようなハイレベルで図示されるが、本発明の適用範囲はこれに関して制限されないと理解されたい。
【００５４】
実施形態は多種多様なシステムにおいて実施され得る。例えば、実施形態は、マルチコアプロセッサのようなプロセッサにおいて実現され得る。ここで図７を参照すると、本発明の実施形態に従うプロセッサコアのブロック図が示されている。図７に示されるように、プロセッサコア５００は、多段パイプライン型アウトオブオーダープロセッサであってよい。プロセッサコア５００は、本発明の実施形態に従うＦＭＡユニットとともに使用される様々な特徴を表すよう、図７において比較的な簡単な態様で示されている。
【００５５】
図７に示されるように、コア５００はフロントエンドユニット５１０を有する。フロントエンドユニット５１０は、実行される命令をフェッチし、それらをプロセッサにおける後の使用のために用意するために使用されてよい。例えば、フロントエンドユニット５１０は、フェッチユニット５０１、命令キャッシュ５０３、及び命令デコーダ５０５を有してよい。幾つかの実施において、フロントエンドユニット５１０は、マイクロコード記憶部及びマイクロオペレーション記憶部とともに、トレースキャッシュを更に有してよい。フェッチユニット５０１は、例えばメモリ又は命令キャッシュ５０３から、マクロ命令をフェッチし、それらを例えばプロセッサによる実行のためにマイクロオペレーションのようなプリミティブへとデコードするようそれらのマクロ命令を命令デコーダ５０５へ供給してよい。
【００５６】
フロンエンドユニット５１０と実行ユニット５２０との間には、マイクロ命令を受け取ってそれらを実行のために用意するために使用されてよいアウトオブオーダー（ＯＯＯ；out-of-order）エンジン５１５が結合される。より具体的に、ＯＯＯエンジン５１５は、マイクロ命令フローを並べ替えて、実行のために必要とされる様々なリソースを割り当て、更には、論理レジスタのリネーミングをレジスタファイル５３０及び拡張レジスタ５３５のような様々なレジスタファイル内の記憶位置に与えるように、様々なバッファを有してよい。レジスタファイル５３０は、整数及び浮動小数点演算のための別個のレジスタファイルを有してよく、拡張レジスタファイル５３５は、例えばレジスタごとに２５６又は５１２ビットといったベクトルサイズ単位のための記憶を提供してよい。
【００５７】
様々なリソースが、例えば、幾つかある特別のハードウェアの中でもとりわけ、様々な整数、浮動小数点、及びＳＩＭＤ（single  instruction  multiple  data）論理ユニットを含め、実行ユニット５２０において存在してよい。例えば、そのような実行ユニットは、１又はそれ以上のＡＬＵ５２２を有してよい。加えて、ＦＭＡユニット５２４が、ユニットに対してスケジューリングされたＦＭＡ又は他の命令の最終結果を生成するよう存在してよい。様々な実施形態において、ユニットは、上述されたようにユニットの部分をクロックゲーティングするよう制御ロジックを有してよい。
【００５８】
演算が実行ユニット内でデータに対して行われる場合に、結果は退去ロジック、すなわち、リオーダーバッファ（ＲＯＢ）５４０へ供給されてよい。より具体的に、ＲＯＢ５４０は、実行される命令に関連する情報を受け取るよう様々なアレイ及びロジックを有してよい。次いで、この情報は、命令が有効に退去され、プロセッサのアーキテクチャ状態にコミットしているデータを生むことができるかどうか、あるいは、１又はそれ以上の実行が命令の適切な退去を防いで起きたかどうかを決定するよう、ＲＯＢ５４０によって試験される。当然、ＲＯＢ５４０は、退去に関連する他の演算を扱ってよい。
【００５９】
図７に示されるように、ＲＯＢ５４０は、キャッシュ５５０へ結合される。キャッシュ５５０は、一実施形態において低レベルキャッシュ（例えば、Ｌ１キャッシュ）であってよく、トランザクション・ルックアサイド・バッファ（ＴＬＢ）５５５を更に有してよい。なお、本発明の適用範囲はこれに関して制限されない。また、実行ユニット５２０は、直接にキャッシュ５５０へ結合され得る。キャッシュ５５０から、データ通信は、より高レベルのキャッシュ、システムメモリ等により起こってよい。図７のプロセッサの実施は、所謂ｘ８６ＩＳＡアーキテクチャのようなアウトオブオーダーマシンに関するが、本発明の適用範囲はこれに関して制限されない点に留意されたい。すなわち、他の実施形態がインオーダープロセッサ、ＡＲＭに基づくプロセッサのようなＲＩＳＣ（reduced  instruction  set  computing）プロセッサ、又はエミュレーションエンジン及び関連するロジック回路を介して異なるＩＳＡの命令及び演算をエミュレートすることができる他のタイプのＩＳＡのプロセッサにおいて実施されてよい。
【００６０】
ここで図８を参照すると、本発明の実施形態に従うマルチドメインプロセッサのブロック図が示されている。図８の実施形態で示されるように、プロセッサ６００は複数の領域を有する。具体的に、コア領域６１０は、複数のコア６１００〜６１０ｎを有することができ、グラフィクス領域６２０は、１又はそれ以上のグラフィクスエンジンを有することができ、システムエージェント領域６５０は更に存在してよい。様々な実施形態において、システムエージェント領域６５０は、固定の周波数で実行してよく、且つ、領域６１０及び６２０が動的に低電力状態に出入りするよう制御され得るように、電力制御イベント及び電力管理を扱うよう常にオンされたままであってよい。３つの領域によってしか示されないが、本発明の適用範囲はこれに関して制限されず、更なる領域が他の実施形態では存在してよいことを理解されたい。例えば、複数のコア領域は、夫々が少なくとも１つのコアを有して存在してよい。
【００６１】
概して、夫々のコア６１０は、本発明の実施形態に従う１又はそれ以上のＦＭＡユニットのような様々な実行ユニット、及び更なるプロセッシング要素に加えて、低レベルキャッシュを更に有してよい。次いで、様々なコアは互いに及び、ラストレベルキャッシュ（ＬＬＣ）６４００〜６４０ｎの複数のユニットから形成される共有キャッシュメモリへ結合されてよい。様々な実施形態において、ＬＬＣ６５０は、コア及びグラフィクスエンジン並びに様々なメディアプロセッシング回路の間で共有されてよい。見て分かるように、リング型インターコネクト６３０はこのようにコアどうしを結合し、コア、グラフィクスエンジン６２０及びシステムエージェント回路６５０の間の相互接続を提供する。
【００６２】
図８の実施形態では、システムエージェント領域６５０は、ディスプレイコントローラ６５２を有してよい。ディスプレイコントローラ６５２は、関連するディスプレイへその制御及びインターフェースを提供してよい。更に分かるように、システムエージェント領域６５０は、電力制御ユニット６５５を有してよい。電力制御ユニット６５５は、プロセッサが置かれているシステムのための電力管理を実行することができる。
【００６３】
図８から更に分かるように、プロセッサ６００は、動的ランダムアクセスメモリ（ＤＲＡＭ）のようなシステムメモリへのインターフェースを提供することができる集積メモリコントローラ（ＩＭＣ）６７０を更に有することができる。複数のインターフェース６８００〜６８０ｎは、プロセッサと他の回路との間の相互接続を可能にするよう存在してよい。例えば、一実施形態において、少なくとも１つの直接メディアインターフェース（ＤＭＩ）が、１又はそれ以上のＰＣＩ（Peripheral  Component  Interconnect）エクスプレス（ＰＣＩｅ）インターフェースと同様に設けられてよい。また更に、更なるプロセッサ又は回路のような他のエージェントの間の通信を提供するよう、インテル（登録商標）のクイックパスインターコネクト（ＱＰＩ）に従う１又はそれ以上のインターフェースが設けられてもよい。図８の実施形態においてこのようにハイレベルで示されるが、本発明の適用範囲はこれに関して制限されないと理解されたい。
【００６４】
実施形態は、多種多様なシステムタイプにおいて実施されてよい。ここで図９を参照すると、本発明の実施形態に従うシステムのブロック図が示されている。図９に示されるように、マルチプロセッサシステム７００はポイント・ツー・ポイント相互接続システムであり、ポイント・ツー・ポイントインターコネクト７５０を介して結合されている第１のプロセッサ７７０及び第２のプロセッサ７８０を有する。図９に示されるように、プロセッサ７７０及び７８０の夫々は、第１及び第２のプロセッサコア（プロセッサコア７７４ａ及び７７４ｂ並びにプロセッサコア７８４ａ及び７８４ｂ）を含むマルチコアプロセッサであるが、潜在的に多くの更なるコアがプロセッサにおいて存在してよい。コアの夫々は、ここで記載されるように、１又はそれ以上の入力データ値及び／又は命令タイプに基づきＦＭＡの１又はそれ以上のデータパスの様々な部分のクロックゲーティングを実行するようクロックゲートロジックを有するＦＭＡユニットを有することができる。
【００６５】
依然として図９を参照して、第１のプロセッサ７７０は、メモリコントローラハブ（ＭＣＨ）７７２並びにポイント・ツー・ポイント（Ｐ−Ｐ）インターフェース７７６及び７７８を更に有する。同様に、第２のプロセッサ７８０は、ＭＣＨ７８２並びにＰ−Ｐインターフェース７８６及び７８８を有する。図９に示されるように、ＭＣＨ７７２及び７８２はプロセッサを各々のメモリ、すなわち、メモリ７３２及びメモリ７３４へ結合する。これらのメモリは、各々のプロセッサへ局所的に付属したシステムメモリ（例えば、ＤＲＡＭ）の部分であってよい。第１のプロセッサ７７０及び第２のプロセッサ７８０は、夫々、Ｐ−Ｐインターコネクト７５２及び７５４を介してチップセット７９０へ結合されてよい。図９に示されるように、チップセット７９０は、Ｐ−Ｐインターフェース７９４及び７９８を有する。
【００６６】
更に、チップセット７９０は、チップセット７９０をＰ−Ｐインターフェース７３９によって高性能グラフィクスエンジン７３８と結合するようインターフェース７９２を有する。次いで、チップセット７９０は、インターフェース７９６を介して第１のバス７１６へ結合されてよい。図９に示されるように、様々な入力／出力（Ｉ／Ｏ）デバイス７１４が、第１のバス７１６を第２のバス７２０へ結合するバスブリッジ７１８とともに、第１のバス７１６へ結合されてよい。様々なデバイスが、例えば、キーボード／マウス７２２、通信デバイス７２６及びデータ記憶ユニット７２８（例えば、一実施形態においてコード７３０を有することができるディスクドライブ又は他の大容量記憶デバイス）を含め、第２のバス７２０へ結合されてよい。更に、オーディオＩ／Ｏ７２４が第２のバス７２０へ結合されてよい。実施形態は、スマートセルラー電話、タブレットコンピュータ、ネットブック等のようなモバイルデバイスを含む他のタイプのシステムに組み込まれ得る。
【００６７】
実施形態は、コードにおいて実施されてよく、命令を実行するようシステムをプログラムするために使用され得る命令を記憶した持続性記憶媒体に記憶されてよい。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ソリッドステートドライブ（ＳＳＤ）、コンパクトディスク読出専用メモリ（ＣＤ−ＲＯＭ）、書換可能コンパクトディスク（ＣＤ−ＲＷ）、及び光学磁気ディスクを含むあらゆるタイプのディスク、読出専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）（例えば、動的ランダムアクセスメモリ（ＤＲＡＭ）、静的ランダムアクセスメモリ（ＳＤＲＡＭ））、消去可能なプログラム可能読出専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、及び電気的に消去可能なプログラム可能読出専用メモリ（ＥＥＰＲＯＭ）のような半導体メモリ、磁気又は光学カード、あるいは、電気命令を記憶するのに適したあらゆる他のタイプのメディアを有してよいが、これらに限られない。
【００６８】
本発明は、有限な数の実施形態に関して記載されてきたが、当業者には、それらからの多数の改良及び変形が認識されるであろう。添付の特許請求の範囲は、本発明の真の精神及び適用範囲内にある全てのそのような改良及び変形を網羅することが意図される。
【符号の説明】
【００６９】
１０，５２４  ＦＭＡユニット
１５  乗算器ユニット
２０  加算器ユニット
１００，１００’，１００”，２００  ＦＭＡ回路
１０５０〜１０５２，１２００〜１２０２，１３００〜１３０１，１４００〜１４０１，２０５０〜２０５２，２２００〜２２０４，２４００〜２４０３，２７００〜２７０２，３０５０〜３０５３，３３０，３３５，３４０  フロップ
１１０，２１０，３１０  乗算器回路
１１２０，１１２１，１１８，１２８，１５０，２３００〜２３０２，２６５０，２９０，３４５  セレクタ
１１４，２６８  シフタ
１１９，２１９  例外ロジック
１２５，２２５，２５０，３５０  加算器回路
１６０，２９５，３７５  制御ロジック
４００  方法
５００  プロセッサコア
５２０  実行ユニット
５２２  ＡＬＵ
６００，７７０，７８０  プロセッサ
６１００〜６１０ｎ  コア
７００  マルチプロセッサシステム
７７４ａ，７７４ｂ，７８４ａ，７８４ｂ  プロセッサコア
【図１】
2014093085.tif 000003
【図２】
2014093085.tif 000004
【図２Ａ】
2014093085.tif 000005
【図３】
2014093085.tif 000006
【図４】
2014093085.tif 000007
【図５】
2014093085.tif 000008
【図６】
2014093085.tif 000009
【図７】
2014093085.tif 000010
【図８】
2014093085.tif 000011
【図９】
2014093085.tif 000012