(57)【要約】  電気回路内の熱を管理する方法（およびシステム）は、処理されるべき命令に付加された温度命令を使用して、当該命令に関連した熱負荷を判定することを含む。【選択図】図３
2008519330.tif 000002
【特許請求の範囲】
【請求項１】
電気回路内の熱を管理する方法であって、
処理されるべき命令に付加された温度命令を使用して、前記命令に関連した熱負荷を判定するステップを含む、方法。
【請求項２】
前記電気回路は、マイクロプロセッサを備え、
前記マイクロプロセッサの熱生成をリアルタイムでかつ複数の場所で測定して、局所平均温度および実際の過渡的な温度を検出するステップをさらに備える、請求項１に記載の方法。
【請求項３】
前記電気回路は、マイクロプロセッサを備え、
現在の命令の熱負荷と、前記プロセッサのメモリ内にまだある将来の命令によって生成される将来の熱負荷とを測定するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記マイクロプロセッサに温度テーブルを提供するステップをさらに含み、
前記温度テーブル内の値は、前記マイクロプロセッサの命令実行部を表す、請求項３に記載の方法。
【請求項５】
所定の短時間に使用される実行部に関連した命令を、前記命令が前記熱負荷を判定する際に無視されるものと判定するステップをさらに含む、請求項４に記載の方法。
【請求項６】
命令によって生成された熱負荷の値に前記命令の発生を表す値を命令速度で乗算して積を得、前記積を以前生成された熱の現行の合計に加算するステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記電気回路は、温度実行部と、温度カウンタと、温度テーブルとを含み、前記方法は、
前記温度命令を前記温度カウンタの以前の状態に命令速度で加算して合計を得ることによって、前記温度実行部の電力消費を削減するステップと、請求項１に記載の方法。
【請求項８】
前記電気回路は、マイクロプロセッサを備え、
前記マイクロプロセッサの実行部毎に実行される命令の数を計数して総計を得るステップと、
前記総計に温度テーブル内の係数を選択的に乗算して温度メータを得るステップと
さらに含む、請求項１に記載の方法。
【請求項９】
前記電気回路は、複数の実行部を有するマイクロプロセッサを備え、
前記温度命令において、前記マイクロプロセッサの実行部毎にビットが提供される、請求項１に記載の方法。
【請求項１０】
前記温度命令が２Ｎ個（Ｎは整数）のエントリを含むルックアップ・テーブル（ＬＵＴ）に対して指標を提供するように、前記温度命令を２値符号化するステップをさらに含む、請求項１に記載の方法。
【請求項１１】
既存の命令セットを、前記既存の命令セットに追加のビットを加えることによって修正するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記電気回路は、マイクロプロセッサを備え、
前記各追加のビットは、前記追加のビットを前記マイクロプロセッサ上の対応空間に変換する前記ＬＵＴをポイントする、請求項１１に記載の方法。
【請求項１３】
Ｎビットの温度命令が、２Ｎ個のエントリのＬＵＴを指し示すためのアドレスを提供し、前記マイクロプロセッサの２Ｎ個の領域を把握する、請求項１に記載の方法。
【請求項１４】
前記ＬＵＴの各エントリは、単一領域および複数領域のうちの１つを参照する、請求項１３に記載の方法。
【請求項１５】
プロセッサ内の熱を管理する方法であって、
プロセッサによって処理されるべき既存の命令に付加された温度命令を検査するステップと、
前記プロセッサの熱生成をリアルタイムでかつ複数の場所で測定して、局所平均温度および実際の過渡的な温度を検出するステップとを含む、方法。
【請求項１６】
現在の命令の熱負荷と、前記プロセッサのメモリ内にまだある将来の命令によって生成される将来の熱負荷とを測定するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
命令を実行する実行部を備えるマイクロプロセッサであって、前記命令は、それに付加された温度命令を含み、そこから前記命令に関連した熱負荷が測定可能である、マイクロプロセッサ。
【請求項１８】
修正可能な温度テーブルと、複数の温度メータとを有する、命令速度で動作する温度実行部をさらに備える、請求項１７に記載のマイクロプロセッサ。
【請求項１９】
前記温度実行部は、複数の速度で選択的に動作するように制御される、請求項１８に記載のマイクロプロセッサ。
【請求項２０】
前記温度実行部は、前記温度命令の長さを最小化するように符号化される、請求項１８に記載のマイクロプロセッサ。
【請求項２１】
前記温度実行部は、前記マイクロプロセッサの複数の領域をマッピングする温度ルックアップテーブル（ＬＵＴ）を含む、請求項１８に記載のマイクロプロセッサ。
【請求項２２】
前記温度実行部は、前記命令に付加された前記温度命令を復号して、現在の命令ストリームによって生成されている熱の現行の合計を保持する、請求項１８に記載のマイクロプロセッサ。
【請求項２３】
前記温度命令の各ビットは、どの実行部が特定の命令によって呼び出されるかを示す、請求項１８に記載のマイクロプロセッサ。
【請求項２４】
所定の実行部に関連した命令は、前記熱負荷を判定する際に選択的に無視される、請求項１８に記載のマイクロプロセッサ。
【請求項２５】
前記温度実行部は、乗算器と、加算器とを備え、
各命令サイクルで、前記温度実行部において、前記乗算器は、Ｎビットの前記温度に温度テーブルのＮ個のエントリを乗算して積を生じさせ、前記加算器は、前記積を各実行部の前記温度メータの現行の合計に加算し、
実行部毎に１つのメータが提供される、請求項１８に記載のマイクロプロセッサ。
【請求項２６】
温度テーブルの各エントリは、対応する実行部が動作する場合に前記対応する実行部によって生成された熱量を示す、請求項２５に記載のマイクロプロセッサ。
【請求項２７】
電気回路内の熱を管理するためのシステムであって、
処理されるべき命令であって、それに付加された温度命令を含む前記命令を受信するための実行部と、
前記温度命令に基づいて、前記命令に関連した熱負荷を判定するための手段と
を備える、システム。
【請求項２８】
マイクロプロセッサ内で処理されるべき命令であって、
前記マイクロプロセッサによる実行のための既存の命令と、
前記既存の命令によって呼び出されるべき少なくとも１つの実行部によって生成された熱量を示す、前記既存の命令に付加された温度命令と
を備える、命令。
【請求項２９】
前記既存の命令によって呼び出される前記少なくとも１つの実行部の実行部毎に、ビットが前記温度命令内に提供される、請求項２８に記載の命令。
【請求項３０】
マイクロプロセッサ内で処理されるべき命令であって、
前記マイクロプロセッサによる実行のための既存の命令と、
前記既存の命令によって呼び出されるべき少なくとも１つの実行部によって生成された熱量を示すエントリを保持するルックアップ・テーブルを索引付けするためのアドレスを示す、前記既存の命令に付加された温度命令と
を備える、命令。
【請求項３１】
マイクロプロセッサ内で温度エネルギーを管理する方法であって、
マイクロプロセッサ内で処理されるべき命令ストリームを判断するステップと、
前記命令ストリームに基づいて、前記命令ストリームを処理することによって生成されるであろう熱量を判定するステップと
を含む、方法。
【請求項３２】
電気回路内の熱を管理する方法を行うための、デジタル処理装置によって実行可能な機械読み出し可能な命令のプログラムを具体的に実施する信号搬送媒体であって、
処理されるべき命令に付加された温度命令を使用して、前記命令に関連した熱負荷を判定することを含む、信号搬送媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、マイクロプロセッサおよびそのための方法に関し、より特定的には、高性能マイクロプロセッサのための温度オペコードを伴う命令セットおよびそのための方法に関する。
【背景技術】
【０００２】
現在の世代であるＩＢＭ  Ｐｏｗｅｒ４（登録商標）などの６４ビットの高性能マイクロプロセッサでは、１億７４００万個のトランジスタが７層の銅冶金で相互結合している。これは、０．１８μｍの相補金属酸化物半導体（ＣＭＯＳ）シリコン‐オン‐インシュレータ（ＳＯＩ）で作成されており、約１．３ＧＨｚで動作し、最悪の場合には１４０Ｗを消費する。
【０００３】
他のマイクロプロセッサと同様に、金型のすべての部分が同一の熱量を生成するわけではない。より高速でより頻繁に使用される回路（例えば、浮動点部（ＦＰＵ）など）は、残りのチップよりも高い温度で動作するので、チップ上での「ホット・スポット」を形成する。チップの信頼性は温度の指数関数であるので、チップのどの部分も定格最大境界温度を超えないことを保証することが重要である。よって、チップの多くの場所における温度を正確に測定する必要がある。
【０００４】
マイクロプロセッサの温度を測定する１つの方法は、温度センサとして複数のダイオードを使用するものである。これらのダイオードは、チップの外部にあっても内部にあってもよい。
【０００５】
外部温度ダイオードは、アナログ回路に最適な半導体処理で作成され、内部ダイオードよりも高い分解能を有する傾向がある。現在の最新技術では、摂氏±１度の測定分解能である。内部ダイオードは、デジタル回路に歩み寄らなければならず、仕様は非常に劣る。
【０００６】
例えば、モトローラ社のＰｏｗｅｒＰＣ（登録商標）は、摂氏±４度の分解能を有する温度検知ダイオードである（例えば、Ｈｅｃｔｏｒ  Ｓａｎｃｈｅｚ他著、「Ｔｈｅｒｍａｌ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  ＰｏｗｅｒＰＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒｓ」、ＩＥＥＥ１０６３‐６３９０／９７，１９９７参照）。
【０００７】
ダイオードにわたる順方向電圧降下Ｖｄは温度に対して直線的に比例し、以下の式によって与えられる。
Ｖｄ＝（Ｎ＊ｋ＊Ｔ／ｑ）＊Ｉｎ（Ｉｆ／Ｉｓ）
式中、Ｎ＝非線形係数、ｋ＝ボルツマン定数、Ｔ＝絶対温度、ｑ＝電子の電荷、Ｉｆ＝順方向電流、Ｉｓ＝飽和電流である。ＮおよびＩｓは、処理および装置に依存する。その結果、各ダイオードは、典型的には、使用前に較正されなければならない。
【０００８】
較正を回避するにはいくつかの方法がある。その１つは、米国特許第５８２９８７９号に示すように、あるダイオードを他の（複数の）ダイオードよりもはるかに大きくして（例えば、３２倍）、２つのＶｄの比を見ることである。
【０００９】
他の方法は、順方向電流Ｉｆを変化させて、２つの電圧の比も見て非線形係数を決定する。これらの方法はともに、はるかに大きな領域（第１の場合）または複数の電流源（第２の場合）という、大幅に不利な点がある。
【００１０】
温度検知ダイオードは、約２ｍＶ／摂氏度を放出し、適切な動作のためには、安定した（複数の）電流源と、低ノイズ増幅器と、おそらく高分解能のアナログ‐デジタル変換（ＡＤＣ）とが必要である。これらのアナログ構成要素をノイズの多い高速のデジタル回路に一体化して、数多くの異なる場所で温度を正確に測定するのは困難である。
【００１１】
他の実際上の問題としては、空間的な制約のため、「ホット・スポット」上／点に直接ダイオード・センサを置くことできないということである。実際、ダイオード・センサは、対象となる装置から数百個のトランジスタ分離れた（例えば、ミリメータ程度）場所に配置されてもよい。よって、対象となる装置の温度を測定する代わりに、ダイオード・センサは、周囲の装置を誤って検知する場合がある。よって、最良のセンサであっても、真のホット・スポット温度を判定するには、何らかの形の空間上の外挿がまだ必要である。
【００１２】
さらに、ダイオード・センサのノイズを最小にするために、低域通過フィルタ（ＬＰＦ）を使用してもよい。しかしながら、そのようなＬＰＦは、帯域幅を減少させて、センサの応答時間を増やすので、測定に遅れ時間が生じる結果となる。よって、温度が上昇する場合には、そのような上昇は必ずしもすぐには検知されない。
【００１３】
【特許文献１】米国特許第５８２９８７９号
【発明の開示】
【発明が解決しようとする課題】
【００１４】
従来の方法および構成の以上および他の例示的な問題、欠点、および不利な点にかんがみ、本発明の例示的な特徴は、必ずしも温度ダイオード・センサを使用せずに、マイクロプロセッサ内の温度を検知するための方法および構成を提供するものである。
【課題を解決するための手段】
【００１５】
本発明の他の例示的な特徴は、マイクロプロセッサ内で処理されるべき命令ストリームを判断して、それによって生成されるだろう熱量を判定して、その後何らかの措置を講じる方法および構成を提供する。
【００１６】
本発明の第１の側面において、電気回路内の熱を管理する方法は、処理されるべき命令に付加された温度命令を使用して、当該命令に関連した熱負荷を判定するステップを含む。
【００１７】
本発明の第２の側面において、プロセッサ内の熱を管理する方法は、プロセッサによって処理されるべき既存の命令に付加された温度命令を検査するステップと、プロセッサの熱生成をリアルタイムでかつ複数の場所で測定して、局所平均温度および実際の過渡的な温度を検出するステップとを含む。
【００１８】
本発明の第３の側面において、マイクロプロセッサは、命令を実行する実行部を含み、当該命令は、それに付加された温度命令を含み、そこから当該命令に関連した熱負荷が測定可能である。
【００１９】
本発明の第４の側面において、電気回路内の熱を管理するためのシステムは、処理されるべき命令であって、それに付加された温度命令を含む当該命令を受信するための実行部と、当該温度命令に基づいて、当該命令に関連した熱負荷を判定するための手段とを含む。
【００２０】
本発明の第５の側面において、マイクロプロセッサ内で処理されるべき命令は、マイクロプロセッサによる実行のための既存の命令と、既存の命令によって呼び出されるべき少なくとも１つの実行部によって生成された熱量を示す、既存の命令に付加された温度命令とを含む。
【００２１】
本発明の第６の側面において、マイクロプロセッサ内で処理されるべき命令は、マイクロプロセッサによる実行のための既存の命令と、当該既存の命令によって呼び出されるべき少なくとも１つの実行部によって生成された熱量を示すエントリを保持するルックアップ・テーブルを索引付けするためのアドレスを示す、当該既存の命令に付加された温度命令とを含む。
【００２２】
本発明の第７の側面において、マイクロプロセッサ内で温度エネルギーを管理する方法は、マイクロプロセッサ内で処理されるべき命令ストリームを判断するステップと、当該命令ストリームに基づいて、当該命令ストリームを処理することによって生成されるであろう熱量を判定するステップとを含む。
【００２３】
本発明の第８の側面において、電気回路内の熱を管理する方法を行うための、デジタル処理装置によって実行可能な機械読み出し可能な命令のプログラムを具体的に実施する信号搬送媒体である。本方法は、処理されるべき命令に付加された温度命令を使用して、当該命令に関連した熱負荷を判定することを含む。
【００２４】
本発明の固有かつ非自明な側面により、何らかの温度センサの使用を必要とすることなく、温度を監視（追跡）する方法（および構成）が提供される。
【００２５】
すなわち、一実施形態例において、新たな温度オペコードが既存の命令セットに付加されて、各命令によってどのくらいの熱が生成されているかを示す。生成されている熱の現行総量を保持することによって、各実行部またはチップの任意の領域における温度をマッピングすることができる。
【００２６】
加えて、新規の方法は、装置リソグラフィで調整し、センサの設置および遅いセンサ応答時間という問題を回避する。よって、チップおよびその領域は、温度による被害からより保護される。
【００２７】
よって、本発明は、傍らに追加の情報を有する現在の命令を事前に見ておき、命令の処理によってどのくらいの熱が生成されるかがわかる。
【００２８】
他の方法とは異なり、本発明は、実際の電力生成入力（例えば、電力測定）は要しないが、その代わりに、実行されるべき命令毎に推定温度情報（熱）を埋め込むことができる。よって、実際の電流および抵抗などを測定せずに、本発明は、命令処理に基づいて、各位置で放散するであろう熱量（ジュール）を得ることができる。
【００２９】
よって、本発明は、今日のマイクロプロセッサにとって大いに有用性があり、将来的にも、大型の大規模なマイクロプロセッサ（今日あるものよりも数倍も大きいもの）が、大規模プロセッサ全体に渡る瞬時の温度測定／予測マップを提供する細密なアルゴリズムを実行する場合に有用性がある。本発明は、そのような熱を管理して、そのような熱が「ホット・スポット」に蓄積することを回避する手段を提供する。
【００３０】
以上および他の例示的な目的、側面、および利点は、図面を参照して、以下の本発明の実施形態例の詳細な説明からいっそうよく理解されるだろう。
【発明を実施するための最良の形態】
【００３１】
ここで、図面、より特定的には図１〜図１３を参照して、本発明に係る方法および構成の実施形態例を示す。
【００３２】
実施形態例
図１は、従来の電流生成高性能マイクロプロセッサ１００のアーキテクチャを示し、より特定的には、理論上のスーパースカラ故障状態実行デザインであるＩＢＭ社のＰｏｗｅｒ４（登録商標）マイクロプロセッサ・コアを非常に簡略化したブロック図を示す。
【００３３】
命令は、６４ＫＢのＩキャッシュ１１０にロードされ、命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）１２０によって示される場所で開始する。複数（例えば、最大８個）の命令がサイクル毎にフェッチされて、命令キュー１３０と、復号器１４０とに入り、そこでは、命令はグループ化されて、適切な発行キュー１５０Ａ（分岐／条件レジスタ発行キュー）、１５０Ｂ（固定点／ロード発行キュー）、１５０Ｃ（浮動点発行キュー）、および対応する実行部（ＥＵ）１６０Ａ（分岐実行部）、１６０Ｂ（条件レジスタ実行部）、１６０Ｃ（固定点実行部）、１６０Ｄ（ロード／記憶実行部）、および１６０Ｅ（浮動点実行部）へ送られる。
【００３４】
Ｐｏｗｅｒ４（登録商標）は、２つの固定点／ロード・キューと、２つの浮動点実行部とを有するが、読者が理解しやすいように、各１つだけを示している。周知なように、固定点実行部は、２つの整数値を互いに加算（または減算）のに対し、浮動点実行部は、非整数値を処理する。ロード／記憶は、ロードおよび記憶という２つの種類に区別できる。
【００３５】
よって、ロード／記憶は、メモリから、より特定的には、Ｄキャッシュ（例えば、データ・キャッシュなど）からまたは隣接の記憶キューから命令を取得する。記憶キューの方が近ければ、Ｄキャッシュに対して、隣接の記憶キューから命令を取得かかるエネルギーは少ない。
【００３６】
マルチレベル分岐予測器１７０は、命令を予測して、ＩＦＲ１２０に「最良に推測した」次のアドレスをロードする。Ｐｏｗｅｒ４（登録商標）は、（複数の）温度センサ１９５用の内部ダイオードをチップ上のどこかに使用して熱管理を行う。
【００３７】
コードをロードするには、命令フェッチ・アドレス・レジスタ１２０からのアドレスを使用する。当該アドレスは、２つの方法のうちの１つで生成される。方法の１つは、分岐予測器１７０を介するものである。分岐予測器１７０は、Ｉキャッシュ１１０からの入力命令を見て、例えば、ループが実行されることになっている（または実行されている）ことと、命令の次のセットが必要であることを知ったりする。よって、分岐予測器１７０は、次の命令アドレスを送る。
【００３８】
他の方法は、グループ完了テーブル１８０を介するものである。グループ完了テーブル１８０では、命令が順不同で実行される場合がある。グループ完了テーブル１８０は、どの命令が実行されたかを把握している。
【００３９】
第３の方法は、ジャンプを介するものである。以上３つのうちの任意の１つによって、ロードされるべき命令の次のブロックのアドレスを修正できる。
【００４０】
よって、図１は、マイクロプロセッサの高レベルの概略／図を示す。簡潔にするため、マイクロプロセッサの動作／機能のすべてが図１に記載されているわけではないが、マイクロプロセッサ内で命令がどのように実行および処理されるか、および新たな分岐がどのように生成されるかを絞り込んでいる点について注意されたい。
【００４１】
Ｐｏｗｅｒ４（登録商標）アーキテクチャのより詳細な動作は、Ｔｅｎｄｌｅｒ他、「Ｐｏｗｅｒ４  Ｓｙｓｔｅｍ  Ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ」、ＩＢＭ  Ｊｏｕｒｎａｌ  ｏｆ  Ｒｅｓｅａｒｃｈ  ＆  Ｄｅｖｅｌｏｐｍｅｎｔ，Ｖｏｌｕｍｅ  ４６，Ｎｕｍｂｅｒ  １，２００２年１月に見受けられる。
【００４２】
本発明は、図１の例示的なアーキテクチャとともに使用することができるが、図１のアーキテクチャのみとともに使用されるわけではないことに注意すべきである。
【００４３】
図２は、図１のマイクロアーキテクチャに温度実行部２１０を追加したものを示す。命令キュー１３０の情報と、復号、グループ形成１４０の情報とが、温度実行部２１０へ送られる。温度実行部２１０は、命令の温度オペコード部分を復号して、現在の命令ストリームによって生成されている熱の現行総量を把握する。よって、温度実行部２１０は、どの命令がどういう順番で実行中かを知る。
【００４４】
温度実行部２１０は、命令復号器と固定的なステップで動作し、グループ形成出力の再び利用して、順不同命令実行を処理する。温度実行部２１０の内部作用の詳細は、後述する。この構成において、温度命令は、Ｉキャッシュ１１０内の通常の命令とともに記憶され、温度実行部２１０は、実行命令を分析するのみである。
【００４５】
図３は、命令が実行される前にどの（複数の）部が加熱されるかを事前に判断することができる構成を示す。そのようにするためには、命令が実行される前に当該命令を見なければならない。よって、図３では、（Ｉキャッシュ１１０に提供されているのに加えて）命令フェッチ・アドレスを受信するＴキャッシュ（温度キャッシュ）３０４と、先取り温度実行部３１０とが備えられている。
【００４６】
よって、図３の構成において、命令は、Ｉキャッシュ１１０にロードされ、対応する温度オペコードが温度キャッシュ３０４にロードされる。Ｔキャッシュ３０５は、温度オペコードとしてロードされるような追加のロジックを有し、先取り温度実行部３１０によって処理される。これは、Ｉキャッシュ１１０における現在の命令が実行されるならば将来の熱負荷がどうなるかを予測するための機構を提供する。当然ながら、この情報は、新たなアドレスが命令フェッチ・アドレス・レジスタ１２０にロードされるときはいつでも更新され、分岐実行部１６０Ａ、グループ完了テーブル１８０または分岐予測器１７０のいずれかによって行われる。この考え方は、熱負荷をさらに将来予測するために、Ｌ２／Ｌ３キャッシュへと拡大可能であろう。
【００４７】
図４に示すように、温度命令４０５は、各既存のマイクロプロセッサ命令４１０に付加される。この特定の例において、温度命令は、６ビットを含んでもよい（簡略化のため、重複する固定点およびロード／記憶部を無視する）。
【００４８】
各ビットは、特定の命令によってどの実行部が呼び出されるかを示す。ＢＲ４２０，ＣＲ４３０，ＦＸ４４０，ＬＤ４５０，ＬＱ４６０，およびＦＰ４７０は、分岐、条件レジスタ、固定点、Ｄキャッシュに対するロード／記憶、記憶キューに対するロード／記憶、および浮動点部をそれぞれ指す。記憶キューまたはＤキャッシュに対するアクセスを示すために別個のビットが使用されるのは、アクセスの各種類によって異なるレベルのエネルギー消費が生じるからである。特定の命令が欠落している場合には（例えば、キュー命令からのロードがない場合、分岐命令がない場合など）、この「欠落している」命令を表す対応ビットがないことになることに注意されたい。
【００４９】
より多くの実行部を有する他のマイクロアーキテクチャに対しては、追加のビットが必要だろう。同一の機能を行う複数の実行部の場合（例えば、２つの浮動点部、２つの分岐部など）、２ビットが使用されてもよい（例えば、ＦＸ１，ＦＸ２；ＢＲ１，ＢＲ２など）。加えて、現在の構成においては各実行部毎に１ビットが示されているが、ある動作／命令／ジョブを示していないようなことも多いので、特定の部やそこから生じる熱を把握する必要はない（またはほとんどない）という観点で、それら（ビット）を最適化することができる。
【００５０】
よって、本発明の重要な側面は、追加の（複数の）ビットで増加することによって既存の命令セットを修正することである。
【００５１】
図５は、本発明に係る温度実行部の例示的な一実施を示し、特定的には、各命令サイクルで、温度オペコード２１１０のＮ個ビットを温度テーブル２１０５のＮ個のエントリで乗算して、各実行部（ＥＵ）の温度メーター（ｎ−１）２１１５の現行総計に追加される。典型的には、実行部毎に１つのメーターがある。この動作は、家庭用に使用される電気メーターになぞらえることができる。
【００５２】
温度テーブル２１０５の各エントリは、動作するときに対応実行部によって生成される熱量を示す。オペコードの「０」は、一致するＥＵは動作していないことを意味し、よって熱は付加されないことになる。
【００５３】
逆の値は、オペコードの「１」である。この構成において、ベクトル乗算器および加算器は、Ｇｈｚ程度の命令速度で動作し、各ＥＵで生成された熱を蓄積する。熱伝播ははるかに遅いので、温度メーター２１１５は、はるかに遅い速度でサンプリングされることができる。
【００５４】
温度メーター（ｎ）２１２０は、数十から数百マイクロ秒の速度で読み出しおよびリセットされることが想定されている。温度サンプリング・レートは、命令速度、装置のサイズ／形状／材質、およびチップの熱伝導率などの数多くの変数に依存する。
【００５５】
温度テーブル２１０５は、電源投入時に適切な値がロードされ、チップの状態に基づいて動作中に更新されることが可能である。これらの値を判定するには数多くの方法がある
【００５６】
現在のマイクロプロセッサ設計において、方法のうちの１つは、設計をレジスタ転送レベル（ＲＴＬ）に分割して、容量、正味の長さ、領域、および切り替え動作に基づいて電力消費を推定することである。Ｐｏｗｅｒ  Ｔｈｅａｔｅｒ（例えば、「Ｐｏｗｅｒ４（登録商標）Ｓｙｓｔｅｍ  Ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ」、Ｔｅｎｄｌｅｒ他、ＩＢＭ  Ｊｏｕｒｎａｌ  ｏｆ  Ｒｅｓｅａｒｃｈ  ＆  Ｄｅｖｅｌｏｐｍｅｎｔ，Ｖｏｌｕｍｅ  ４６、Ｎｕｍｂｅｒ  １、２００２年１月を参照）、またはＩＢＭ通常電力分析方法（Ｃｏｍｍｏｎ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  Ｍｅｔｈｏｄ）（ＣＰＡＭ）（例えば、「ＣＰＡＭ：  Ａ  Ｃｏｍｍｏｎ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  Ｍｅｔｈｏｄｏｌｏｇｙ  ｆｏｒ  Ｈｉｇｈ‐Ｐｅｒｆｏｒｍａｎｃｅ  ＶＬＳＩ  Ｄｅｓｉｇｎ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ９ｔｈ  Ｔｏｐｉｃａｌ  Ｍｅｅｔｉｎｇ  ｏｎ  ｔｈｅ  Ｅｌｅｃｔｒｉｃａｌ  Ｐｅｒｆｏｒｍａｎｃｅ  ｏｆ  Ｅｌｅｃｔｒｏｎｉｃ  Ｐａｃｋａｇｉｎｇ，２０００年、３０３頁〜３０６頁、Ｓｃｏｔｔ  Ｎｅｅｌｙ，Ｈｏｗａｒｄ  Ｃｈｅｎ，Ｓｔｅｖｅｎ  Ｗａｌｋｅｒ，Ｔｈｏｍａｓ  Ｂｕｃｅｌｏｔを参照）などの商用のシミュレーション・ソフトウェアを買い支店として使用することもできよう。１９９６年９月のＦｒａｎｔｚ他への米国特許第５５５７５５７号「Ｐｒｏｃｅｓｓｏｒ  Ｐｏｗｅｒ  Ｐｒｏｆｉｌｅｒ」は、プログラムを実行する場合にプロセッサのエネルギー消費を判定するための方法を提案している。
【００５７】
１９９９年８月のＫａｇｅｓｈｉｍａ他への米国特許第５９４１９９１号「Ｍｅｔｈｏｄ  ｏｆ  Ｅｓｔｉｍａｔｉｎｇ  Ｐｏｗｅｒ  Ｃｏｎｓｕｍｐｔｉｏｎ  ｏｆ  ｅａｃｈ  ｉｎｓｔｒｕｃｔｉｏｎ  ｐｒｏｃｅｓｓｅｄ  ｂｙ  ａ  ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ」は、命令のキャッシュ・ヒット／ミスを考慮している。２００２年１月のＢｏｗｅｎ他への米国特許第６３３８０２５Ｂ１号「Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ  ａｎｄ  ｍｅｔｈｏｄ  ｔｏ  ｅｓｔｉｍａｔｅ  ｐｏｗｅｒ  ｉｎ  ｍｉｘｅｄ  ｄｙｎａｍｉｃ／ｓｔａｔｉｃ  ＣＭＯＳ  ｄｅｓｉｇｎｓ」は、ダイナミックＣＭＯＳ回路の電力シミュレーションを扱っている。
【００５８】
上述のツールおよび方法を使用して、各ＥＵによって消費される電力の良好な推定を得ることができる。
【００５９】
次のステップは、物理回路レイアウトのモデルを使用して、電力消費数を「熱量（ｈｅａｔ  ｑｕａｎｔａ）」とも称される命令毎の熱上昇に変換することであろう。例えば、浮動点乗算命令によって浮動点部が摂氏５マイクロ度上昇する場合、この命令は５熱量を有し、５が温度テーブル２１０５にロードされることになる。この変換処理は、好ましくは、３次元空間における各装置の熱抵抗および容量を考慮するべきである。
【００６０】
よって、現在のマイクロプロセッサ設計には、命令毎にいくつのトランジスタを切り替えているか、およびトランジスタが駆動している装置はどれかを知ることができ、それによって、どのくらいの熱が生成されて、熱が生成されているところはどこかを知ることができるようにする数多くのシミュレーション・ツールがある。
【００６１】
図５の他の重要な特徴は、すべての部（回路）は、命令速度（例えば、現在約２Ｇｈｚ）で動作中であるということに注意されたい。よって、熱を把握することよって、Ｇｈｚ速度のリアルタイム乗算以来、当該処理自体によって多くの熱が生成される。
【００６２】
図６は、図５に示す構成の例を示す。分岐、条件レジスタ、固定点、キャッシュ・ロード／記憶、キュー・ロード／記憶、および浮動点部は、２，１，５，３，１，および１０熱量をそれぞれ生成する。よって、条件レジスタ（ＣＲ）はあまり機能しておらず（例えば、あまり熱を生成していない）のに対し、浮動点は比較的大量の熱を生成している。
【００６３】
固定点（ＦＸ）およびキャッシュ・ロード／記憶（ＬＤ）のみを使用する特定の命令については、本命令についての温度オペコードは、「００１１００」となろう。よって、５および３量が温度メーターの現行総量に付加されることになり、「ｎ」は現在の状態として規定され（例えば、温度メーター２１２０）、「ｎ−１」（例えば、温度メーター２１１５）は以前の状態である。その結果、５０および７５量のＦＸおよびＬＤを現在それぞれ有している。温度メーターの残りは変化しないままである。
【００６４】
上述の応用例において、生成されている熱数値（温度メーター）は時間の経過とともに累積することに注意されたい。しかしながら、温度メーターは、設計者の要求および制約によって何か異なるものとなるか、異なる型のものとなる場合がある。
【００６５】
すなわち、所定の期間に放出されている累積熱に対応する温度メーターの代わりに、他の応用例においてこの情報を使用する実際のモデルを使用して、累積モードで動作する温度メータを必要とない場合もありうる。温度テーブル２１０５と温度命令２１１０との出力（積）を温度予測器の入力として単に使用すれば充分な場合もあろう。温度予測器は、典型的には、温度抵抗を有する抵抗器などの組み込み式の放散要素を有しており、そのような要素は、システム冷却アーキテクチャ全体に基づいて、放散された熱量が最終的にどのくらい速く放散されるかを選択することが可能である。
【００６６】
よって、あるプロセッサは、液体冷却を使用し、他のプロセッサは別の熱放散機構（受動的、ヒート・シンクなど）を使用する状況が考えられる。実際、他のプロセッサも液体冷却を使用しても、冷却装置をプロセッサに結合する温度ペーストが機械の許容誤差のためにわずかに外れて（異なって）いる場合には、放散速度は異なることになる。よって、放散パラメータを完全な実施の一部として反転するには、他の動作が役に立つかもしれない。
【００６７】
よって、本件の場合には、温度メーターが上昇しているか固定したままでいるかのいずれかとなり、よって、読み出しおよびリセット動作が温度予測器によって行われる。実際、温度メーターの利点の１つは、（複数の）数値が命令サイクル毎に追加される場合であっても、実際の温度モデル実施については、温度放散情報のレベルの細かい情報は必要ない。代わりに、例えば１０００件実行毎の合計が単にわかればよいこともある。よって、累積情報を使用してもよいが、必ずしも時間０からでなくてもよい。
【００６８】
図７に移って、温度ＥＵの消費電力は、図６に示すのと演算の順序を逆にすることによって、大幅に削減することができる。すなわち、図７に示すように、図６の乗算演算および加算演算の順序を逆にする。
【００６９】
図７において、温度命令２１１０は、ある命令速度で温度カウンタ２１３０の以前の状態に付加され、温度テーブル２１１５との乗算は、より遅い温度サンプリング速度で行われる。加算器は、１を加えるだけなので、今ははるかに単純になっている。この動作のために、以前のような完全な加算器の代わりに、単純な増分カウンタ（例えば、１ビット・カウンタ）を使用することもできる。
【００７０】
同一の温度命令（「００１１００」）、温度テーブル（ｎ）２１０５および対応する温度カウンタ２１３０（ｎ−１）および２１３０ａの値については、図８に示すように、温度メーター（ｎ）２１２０は同一の読み取り値を与える（例えば、図６と同一のもの）。
【００７１】
よって、図７において、比較的早い命令速度（図７の概略図の上部に示すＧＨｚ程度）は、比較的遅い速度（例えば、図７の下部の動作に示す速度であって、温度応答時間としても知られている）と区別される。
【００７２】
したがって、図６におけるように各命令によって生成される熱を乗算する代わりに、図７では、各部毎に実行された命令数をカウントして、より遅い速度で必要な場合に温度テーブル２１１５内にあるものだけを乗算すると、温度メーター２１２０は、図６と同様になろう。再び同じ結果が図６と同様に達成されるが、はるかに単純な回路で達成される。この実施形態は、温度情報が必要である前に有意の命令サイクル数を合計する必要がある場合に有用である。よって、乗算演算は、サイクル毎に必ずしも必要でない。代わりに、合計はサイクル毎に継続するが、乗算は、温度情報が必要な場合に選択的に行うことができる。
【００７３】
温度命令２１１０は、コストを最小限にするためにできるだけ短くすべきである。温度命令を短くしておく方法の１つは、頻繁に使用されるＥＵのみを監視するというものである。
【００７４】
例えば、分岐部は、命令毎に使用されるものではないと思われる。よって、監視する必要がなくてもよい。あるマイクロアーキテクチャについては、固定点部が最も頻繁に使用される。そのような場合には、このＥＵと、当該固定点ユニットの熱負荷を付与するいくつかの重要な隣接ＥＵのみを監視するべきである。
【００７５】
上記のように、実行部毎に１ビットであってもよい。しかしながら、これはビット数の効率的な使用ではないかもしれない。なぜならば、ビットが各命令に付加され（１増分して、その後乗算される）、これは非常に大きな増分となりうるからである。よって、空間効率が高くなるように温度命令を符号化する方法を見つけるのが有用だろう。
【００７６】
よって、他の方法は、温度命令を２値符号化することである。図９は、２Ｎ個の領域を管理するＮビットの温度オペコードを示す。温度オペコードは、２Ｎ個のエントリを含むルックアップ・テーブル（ＬＵＴ）２１９０に対して指標またはアドレスを提供する。加算および乗算演算は、図７におけるのと同一である。温度メーター２１２０は、領域０から（２Ｎ−１）における累積熱を示す。
【００７７】
よって、図９において、上述したような実行部を表す各ビットの代わりに、各ビットは、ＬＵＴ２１９０を経由して、図１０に示すような構成１０００に示すように、チップ（例えば、マイクロプロセッサ１０１０）上の対応空間に変換されるようになる。
【００７８】
例えば、４ビット温度命令は、必要なアドレスを提供して１６個のエントリのＬＵＴ２１９０を索引付けして、図１０の構成１０００に示すように、チップ（例えば、マイクロプロセッサ１０１０）の１６個の領域を常時監視する。ＬＵＴ２１９０の各エントリは、単一の領域または複数の領域を参照することができる。この例において、温度命令（アドレス）「００００」は、Ｒ２，Ｒ３，Ｒ６，およびＲ７を監視するＬＵＴ２１９０のエントリ０をポイントする。温度命令（アドレス）「０００１」は、Ｒ５，Ｒ９，およびＲ１３をポイントしていることになる。さらに、温度命令（アドレス）「１１１１」は、Ｒ１０，およびＲ１５という診断領域をポイントしてもよい。このようなマッピング例によって、１６個の領域までがたった４ビットでカバーできる。
【００７９】
よって、実行毎に１ビットの代わりに、アドレスを命令内に載せてＬＵＴ２１９０を索引付けすることによって、温度指標２１９５を図８における以前のようにする。
【００８０】
図１１は、Ｒ２，Ｒ３，Ｒ６，およびＲ７の領域に影響を与えるアドレス「００００」の例を示す。図１１は、現行のカウントに追加されると、温度カウンタが、「１」指標とともに各領域毎に１増分することを示す。温度メーターの値は、温度カウンタと温度テーブルとの積である。
【００８１】
４ビットは、熱を生成しているかどうかに関わらず、使用されている４つの実行部に対応することになる本実施形態とは対照的に、図１０の（および図１１に示すような）構成（および４ビットの使用）は、テーブル（ＬＵＴ）２１９０をポイントするアドレス生成器としての同一の４ビットを使用して、当該４ビットから１６セットの情報を提供するので、温度情報を広くするための機能を拡張する。必要となるのは、テーブルへ向かう追加のステップである。テーブルは、どの領域が関わっていてどれが関わっていないかについての情報を提供する（例えば、図１０の「０」および「１」）。
【００８２】
温度ＥＵの出力は、新規または既存の動的な温度管理またはスポット冷却手法と組み合わせて、マイクロプロセッサの最大境界温度を規制することができる（例えば、上述のＳ．Ｍ．Ｓｒｉ  Ｓｒｉ‐Ｊａｙａｎｔｈａ他への米国特許出願第１０／８９２２１１号である、「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＲＥＡＬ‐ＴＩＭＥ  ＥＳＴＩＭＡＴＩＯＮ  ＡＮＤ  ＰＲＥＤＩＣＴＩＯＮ  ＯＦ  ＴＨＥ  ＴＨＥＲＭＡＬ  ＳＴＡＴＥ  ＯＦ  Ａ  ＭＩＣＲＯＰＲＯＣＥＳＳＯＲ  ＵＮＩＴ」、および「Ｄｙｎａｍｉｃ  Ｔｈｅｒｍａｌ  Ｍａｎａｇｅｍｅｎｔ  ｆｏｒ  Ｈｉｇｈ‐Ｐｅｒｆｏｒｍａｎｃｅ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ」、Ｄａｖｉｄ  ＢｒｏｏｋｓおよびＭａｒｇａｒｅｔ  Ｍａｒｔｏｎｏｓｉ、ＩＥＥＥ２００１，０‐７６９５‐１０１９‐１／０１を参照）。
【００８３】
図１２は、本発明とともに使用される情報処理／コンピュータ・システムの典型的なハードウェア構成を示し、好ましくは、少なくとも１つのプロセッサまたは中央処理ユニット（ＣＰＵ）１２１１を有する。
【００８４】
ＣＰＵ１２１１は、システム・バス１２１１を介して、ランダム・アクセス・メモリ（ＲＡＭ）１２１４、読み出し専用メモリ（ＲＯＭ）１２１６、（ディスク・ユニット１２２１およびテープ・ドライブ１２４０などの周辺機器をバス１２１２に接続するための）入出力（Ｉ／Ｏ）アダプタ１２１８、（キーボード１２２４、マウス１２２６、スピーカ５２８、マイクロフォン１２３２、または他のユーザ・インターフェース装置あるいはこれらすべてをバス１２１２に接続するための）ユーザ・インターフェース・アダプタ１２２２、情報処理システムをデータ処理ネットワーク、インターネット、イントラネット、パーソナル・エリア・ネットワーク（ＰＡＮ）などに接続するための通信アダプタ１２３４、およびバス１２１２を表示装置１２３８またはプリンタあるいはその両方に接続するためのディスプレイ・アダプタ１２３６に相互接続される。
【００８５】
上述のハードウェア／ソフトウェア環境に加えて、本発明の他の側面は、上述の方法を行うためのコンピュータによって実施される方法を含む。一例として、この方法は、上述の特定の環境において実施されてもよい。
【００８６】
そのような方法は、例えば、デジタル・データ処理装置として実現されたコンピュータを、機械読み取り可能な命令のシーケンスを実行するように動作させることによって実施されてもよい。これらの命令は、様々な種類の信号搬送媒体に常駐していてもよい。
【００８７】
この信号搬送媒体は、例えば、ＣＰＵ１２１１内に含まれるＲＡＭを、例えば高速アクセス記憶装置を表すものとして含んでもよい。代わりに、命令は、磁気データ記憶装置またはＣＤ‐ＲＯＭディスケット１３００（図１３）などの他の信号搬送媒体に、直接的またはＣＰＵ１２１１によって間接的にアクセス可能に含まれてもよい。
【００８８】
ディスケット１３００、コンピュータ／ＣＰＵ１２１１、または他の場所に含まれていようとそうでなかろうと、命令は、ＤＡＳＤ記憶装置（例えば、従来の「ハード・ドライブ」またはＲＡＩＤアレイ）、磁気テープ、電子読み出し専用メモリ（例えば、ＲＯＭ，ＥＰＲＯＭ，またはＥＥＰＲＯＭ）、光記憶装置（例えば、ＣＤ‐ＲＯＭ，ＷＯＲＭ，ＤＶＤ，デジタル光学テープなど）、紙「鑽孔（ｐｕｎｃｈ）」カード、またはデジタルおよびアナログおよび通信リンクおよび無線などの伝送媒体を含む他の適切な信号搬送媒体など、様々な機械読み取り可能なデータ記憶媒体に記憶されてもよい。本発明の例示的な一実施形態において、機械読み取り可能な命令は、「Ｃ」などの言語からコンパイルされたソフトウェア・オブジェクト・コードを備えてもよい。
【００８９】
加えて、本発明のさらに他の側面において、本説明を全体として捉えると、本発明は、数多くのビジネスまたはサービス活動の基礎として機能を果たすことができることが、当業者によって容易に理解されるはずである。可能性のあるすべてのサービス関連活動が、本発明の範疇であることが意図されている。
【００９０】
本発明の固有かつ非自明な側面により、何らかの温度センサを必ずしも使用することなく温度を監視（追跡）する方法（および構成）が提供される。代わりに、一実施形態例において、新たな温度オペコードが既存の命令セットに付加されて、各命令によってどのくらいの熱が生成されているかを示してもよい。生成されている熱の現行総量を保持することによって、各実行部またはチップの任意の領域の温度をマッピングしてもよい。
【００９１】
加えて、新規の方法は、装置リソグラフィで調整し、センサの設置および遅いセンサ応答時間という問題を回避する。よって、チップおよびその領域は、温度による被害からより保護される。さらに、各命令を事前に見ることができ、現在の命令の傍らに追加の情報を有することができ、命令の処理によってどのくらいの熱が生成されるかを判定することができる。
【００９２】
本発明は、実際の電力生成入力（例えば、電力測定）を必要としないが、その代わりに、実行されるべき命令毎に推定される温度情報（熱）を埋め込むことができる。よって、実際の電流または抵抗器などを測定することなく、本発明は、各位置で放散する命令処理に基づいて、熱量（ジュール）を取得することができる。
【００９３】
よって、本発明は非常に有用性があり、温度を管理でき、チップの「ホット・スポット」に熱が蓄積することを回避することができる。
【００９４】
本発明をいくつかの実施形態例の点から説明してきたが、本発明は添付の請求項の精神および範囲内において修正を行うことができることを、当業者は認識するだろう。
【００９５】
例えば、本発明を図１のアーキテクチャ例に使用および組み込んで説明してきたが、本発明は、そのようなアーキテクチャに使用または組み込まれることに限定されるものではない。実際、本願を全体として捉える当業者にとって自明であるような数多くの他の異なるアーキテクチャを使用することもできよう。
【００９６】
さらに、出願人の意図は、手続き中に後日補正を行ったとしてもすべての請求項の要素の均等物を含むものである点に注意されたい。
【図面の簡単な説明】
【００９７】
【図１】従来の高性能マイクロプロセッサ・アーキテクチャ１００を示す。
【図２】温度実行部２１０を伴うマイクロプロセッサ・アーキテクチャ２００を示す。
【図３】先取り温度実行部３１０を伴うマイクロプロセッサ・アーキテクチャ３００を示す。
【図４】温度命令４００を示す。
【図５】温度実行部２１０の詳細を示す。
【図６】温度実行部の例６００を示す。
【図７】マルチ速度の温度実行部７００を示す。
【図８】マルチ速度の温度実行部の例８００を示す。
【図９】符号化された温度実行部９００を示す。
【図１０】符号化された温度実行部のルックアップ・テーブル１０００を示す。
【図１１】符号化された温度実行部の例１１００を示す。
【図１２】本発明を組み込むためのハードウェア／情報処理システム１２００の例を示す。
【図１３】本発明に係る方法のプログラムのステップを記憶するための信号搬送媒体１３００（例えば、記憶媒体）を示す。
【図１】
2008519330.tif 000003
【図２】
2008519330.tif 000004
【図３】
2008519330.tif 000005
【図４】
2008519330.tif 000006
【図５】
2008519330.tif 000007
【図６】
2008519330.tif 000008
【図７】
2008519330.tif 000009
【図８】
2008519330.tif 000010
【図９】
2008519330.tif 000011
【図１０】
2008519330.tif 000012
【図１１】
2008519330.tif 000013
【図１２】
2008519330.tif 000014
【図１３】
2008519330.tif 000015
【国際調査報告】
2008519330.tif 000016
2008519330.tif 000017
2008519330.tif 000018