(57)【要約】【課題】  プロセッサのチップ温度の急激な上昇により動作不良が生じることがある。【解決手段】  命令デコーダ１４は、命令毎に命令の実行に関わる演算ブロックと発熱係数を特定し、発熱係数プロファイル２０に格納する。命令スケジューラ１６は、命令をデータ依存関係にもとづきスケジューリングする。発熱度数加算器３２は、スケジュールされた命令の進行に合わせて、演算ブロック発熱度数レジスタ２２に保持されている該当する演算ブロックの発熱度数に発熱係数を累積加算する。発熱度数減算器３４は、演算ブロック発熱度数レジスタ２２の各演算ブロックの発熱度数を時間経過による放熱量にもとづいて減算する。ホットスポット検出器３６は、演算ブロック発熱度数レジスタ２２の発熱度数が所定の閾値を超えた演算ブロックをホットスポットとして検出し、命令スケジューラ１６は、ホットスポットと判定された演算ブロックが実行に関わる命令の実行を遅らせる。【選択図】        図２
2005285117.tif 000002
【特許請求の範囲】
【請求項１】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持部と、
命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを所定の命令単位で特定する発熱特定部と、
実行すべき命令の進行に合わせて前記所定の命令単位で、前記発熱特定部により特定されたブロックの前記発熱度数を前記発熱係数をもとに累積加算する発熱度数加算部とを含むことを特徴とするプロセッサ。
【請求項２】
前記発熱特定部は、実行すべき命令を解読するデコーダであることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
各ブロックの前記発熱度数を時間経過による放熱量にもとづいて減算する発熱度数減算部をさらに含むことを特徴とする請求項１または２に記載のプロセッサ。
【請求項４】
前記発熱度数減算部は、各ブロックの前記発熱度数が大きいほど前記発熱度数の減算量を大きく設定することを特徴とする請求項３に記載のプロセッサ。
【請求項５】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持部と、
所定の命令単位で見積もられた発熱量をもとに、命令の進行に合わせて前記所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算する発熱度数加算部と、
各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするスケジューラとを含むことを特徴とするプロセッサ。
【請求項６】
前記スケジューラは、前記発熱度数が所定の閾値を超えたブロックが実行に関わる命令の実行を遅らせることを特徴とする請求項５に記載のプロセッサ。
【請求項７】
各プロセッサの前記発熱度数を時間経過による放熱量にもとづいて減算する発熱度数減算部をさらに含むことを特徴とする請求項５または６に記載のプロセッサ。
【請求項８】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持レジスタと、
実行すべき命令と前記命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを対応づけて格納する発熱係数プロファイルと、
実行すべき命令を解析して、前記命令の実行に関わる前記ブロックと前記発熱係数とを所定の命令単位で特定し、前記発熱係数プロファイルに格納するデコーダと、
前記発熱係数プロファイルにもとづいて、前記命令の進行に合わせて前記所定の命令単位で前記ブロックの前記発熱度数を累積加算する発熱度数加算器と、
各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするスケジューラとを含むことを特徴とするプロセッサ。
【請求項９】
複数のサブプロセッサとメインプロセッサとを含むマルチプロセッサシステムであって、
前記メインプロセッサは、
前記サブプロセッサ内の複数のブロックの発熱度数を保持する発熱度数保持部と、
命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを所定の命令単位で特定する発熱特定部と、
実行すべき命令の進行に合わせて前記所定の命令単位で、前記発熱特定部により特定されたブロックの前記発熱度数を前記発熱係数をもとに累積加算する発熱度数加算部と、
各ブロックの前記発熱度数にもとづいて、実行すべき命令を前記複数のサブプロセッサ間で振り分けるスケジューラとを含むことを特徴とするマルチプロセッサシステム。
【請求項１０】
実行すべき命令を解読するデコーダに、前記命令の実行に関わるプロセッサ内のブロックの発熱を解析する機能をもたせたことを特徴とするプロセッサ。
【請求項１１】
命令コードの進行に合わせて所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算してレジスタに保持することにより、命令コードの進行による発熱をブロック単位で検出することを特徴とする温度制御方法。
【請求項１２】
所定の命令単位で見積もられた発熱量をもとに、命令の進行に合わせて前記所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算してレジスタに保持し、前記レジスタに保持された各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングすることを特徴とする温度制御方法。
【請求項１３】
マルチプロセッサシステムにおける各プロセッサ内のブロックの発熱量を所定の命令単位で見積もり、命令の進行によるブロックの温度変化を予測し、予測された温度変化をもとに命令を前記プロセッサ間で振り分けることを特徴とする温度制御方法。
【請求項１４】
命令コードの進行に合わせて所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算してレジスタに保持するステップと、
前記レジスタに保持された各ブロックの前記発熱度数にもとづいて命令コードの進行による発熱をブロック単位で検出するステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１５】
所定の命令単位で見積もられた発熱量をもとに、命令の進行に合わせて前記所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算してレジスタに保持するステップと、
前記レジスタに保持された各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１６】
マルチプロセッサシステムにおける各プロセッサ内のブロックの発熱量を所定の命令単位で見積もるステップと、
命令の進行によるブロックの温度変化を予測し、予測された温度変化をもとに命令を前記プロセッサ間で振り分けるステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１７】
命令コードの進行に合わせて所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算してレジスタに保持するステップと、
前記レジスタに保持された各ブロックの前記発熱度数にもとづいて命令コードの進行による発熱をブロック単位で検出するステップとをコンピュータに実行させるプログラムを格納したことを特徴とする記録媒体。
【請求項１８】
所定の命令単位で見積もられた発熱量をもとに、命令の進行に合わせて前記所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算してレジスタに保持するステップと、
前記レジスタに保持された各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするステップとをコンピュータに実行させるプログラムを格納したことを特徴とする記録媒体。
【請求項１９】
マルチプロセッサシステムにおける各プロセッサ内のブロックの発熱量を所定の命令単位で見積もるステップと、
命令の進行によるブロックの温度変化を予測し、予測された温度変化をもとに命令を前記プロセッサ間で振り分けるステップとをコンピュータに実行させるプログラムを格納したことを特徴とする記録媒体。
【請求項２０】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持部と、
命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを所定の命令単位で特定する発熱特定部と、
実行すべき命令の進行に合わせて前記所定の命令単位で、前記発熱特定部により特定されたブロックの前記発熱度数を前記発熱係数をもとに累積加算する発熱度数加算部とを含むことを特徴とするプロセッサシステム。
【請求項２１】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持部と、
所定の命令単位で見積もられた発熱量をもとに、命令の進行に合わせて前記所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算する発熱度数加算部と、
各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするスケジューラとを含むことを特徴とするプロセッサシステム。
【請求項２２】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持レジスタと、
実行すべき命令と前記命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを対応づけて格納する発熱係数プロファイルと、
実行すべき命令を解析して、前記命令の実行に関わる前記ブロックと前記発熱係数とを所定の命令単位で特定し、前記発熱係数プロファイルに格納するデコーダと、
前記発熱係数プロファイルにもとづいて、前記命令の進行に合わせて前記所定の命令単位で前記ブロックの前記発熱度数を累積加算する発熱度数加算器と、
各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするスケジューラとを含むことを特徴とするプロセッサシステム。
【請求項２３】
実行すべき命令を解読するデコーダに、前記命令の実行に関わるプロセッサ内のブロックの発熱を解析する機能をもたせたことを特徴とするプロセッサシステム。
【請求項２４】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持部と、
命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを所定の命令単位で特定する発熱特定部と、
実行すべき命令の進行に合わせて前記所定の命令単位で、前記発熱特定部により特定されたブロックの前記発熱度数を前記発熱係数をもとに累積加算する発熱度数加算部とを含むことを特徴とする情報処理装置。
【請求項２５】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持部と、
所定の命令単位で見積もられた発熱量をもとに、命令の進行に合わせて前記所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算する発熱度数加算部と、
各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするスケジューラとを含むことを特徴とする情報処理装置。
【請求項２６】
発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持レジスタと、
実行すべき命令と前記命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを対応づけて格納する発熱係数プロファイルと、
実行すべき命令を解析して、前記命令の実行に関わる前記ブロックと前記発熱係数とを所定の命令単位で特定し、前記発熱係数プロファイルに格納するデコーダと、
前記発熱係数プロファイルにもとづいて、前記命令の進行に合わせて前記所定の命令単位で前記ブロックの前記発熱度数を累積加算する発熱度数加算器と、
各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするスケジューラとを含むことを特徴とする情報処理装置。
【請求項２７】
実行すべき命令を解読するデコーダに、前記命令の実行に関わるプロセッサ内のブロックの発熱を解析する機能をもたせたことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はプロセッサ技術に関し、特に発熱量を制御することのできるプロセッサ、マルチプロセッサシステム、プロセッサシステム、情報処理装置、および温度制御方法に関する。
【背景技術】
【０００２】
ＬＳＩ設計において製造プロセスの微細化と素子の高集積化が一段と進み、チップの性能限界として発熱量を考慮することが設計上非常に重要になってきている。チップが高温になると、動作不良を起こしたり、長期信頼性が低下するため、様々な発熱対策がとられている。たとえば、チップの上部に放熱フィンを設けて、チップから発生する熱を逃がす方法がとられる。
【０００３】
また、チップ上の消費電力分布は一様ではないため、チップの一部が異常に高温になるいわゆる「ホット・スポット」の問題を避けることができない。そこで、チップの消費電力分布にもとづいて、プロセッサのタスクをスケジューリングすることも検討されている（たとえば、特許文献１参照）。
【特許文献１】米国特許出願公開第２００２／００６５０４９号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
チップの一部が発熱すると、時間経過とともに熱伝導により発熱箇所の周囲に高温領域が広がり、やがてはチップ全体の温度が上昇する。従来の発熱対策は、チップ全体の温度分布を巨視的に観測し、数秒〜１分程度の時間をかけて放熱するものであり、時間応答性はよくない。最近の高集積化したＬＳＩの中には、１チップでも数十ワット程度の電力を消費するものも設計されており、数十マイクロ秒のオーダーで放熱処理をしなければ、急峻な温度上昇によって動作不良が起こりうる。局所的に発熱しているが、チップ全体としては安全な温度にあるという場合に、チップの動作周波数を下げると、プロセッサ全体の処理性能を犠牲にすることになり、効率的ではない。こうした状況の下、本出願人は、チップの一部が発熱した場合、熱伝導により高温領域が広がる前に、ピンポイントで発熱箇所を検出し、それ以上の温度上昇を抑える微視的なレベルでの発熱対策の必要性を認識するに至った。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、チップ発熱量を時間的にも空間的にも微細なレベルで制御することのできるプロセッサ、マルチプロセッサシステム、プロセッサシステム、情報処理装置、および温度制御方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様はプロセッサに関する。このプロセッサは、発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持部と、命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを所定の命令単位で特定する発熱特定部と、実行すべき命令の進行に合わせて前記所定の命令単位で、前記発熱特定部により特定されたブロックの前記発熱度数を前記発熱係数をもとに累積加算する発熱度数加算部とを含む。
【０００７】
「ブロック」は、プロセッサの領域を区分けした最小単位であり、スポット的に熱のピークが発生する領域の大きさに合わせて区分けされる。たとえば、ブロックは、プロセッサを構成するトランジスタなどの素子単体であってもよく、ある程度の数の素子の集合であってもよい。複数のプロセッサを含むマルチプロセッサシステムの場合、ブロックは、個々のプロセッサ内で区分けされたブロックであってもよく、個々のプロセッサ全体を１つのブロックとしてもよい。
【０００８】
「命令単位」は、命令コードの１ステップであってもよく、命令ステップがいくつか集まって構成されるサブルーチンもしくはタスクであってもよい。
【０００９】
「ブロック」の大きさおよび「命令単位」の粒度については、発熱制御の要求精度やプロセッサの設計条件などにより設計の自由度がある。
【００１０】
本発明の別の態様もプロセッサに関する。このプロセッサは、発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持部と、所定の命令単位で見積もられた発熱量をもとに、命令の進行に合わせて前記所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算する発熱度数加算部と、各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするスケジューラとを含む。
【００１１】
本発明のさらに別の態様もプロセッサに関する。このプロセッサは、発熱制御対象となる複数のブロックの発熱度数を保持する発熱度数保持レジスタと、実行すべき命令と前記命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを対応づけて格納する発熱係数プロファイルと、実行すべき命令を解析して、前記命令の実行に関わる前記ブロックと前記発熱係数とを所定の命令単位で特定し、前記発熱係数プロファイルに格納するデコーダと、前記発熱係数プロファイルにもとづいて、前記命令の進行に合わせて前記所定の命令単位で前記ブロックの前記発熱度数を累積加算する発熱度数加算器と、各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングするスケジューラとを含む。
【００１２】
本発明のさらに別の態様はマルチプロセッサシステムに関する。このマルチプロセッサシステムは、複数のサブプロセッサとメインプロセッサとを含む。前記メインプロセッサは、前記サブプロセッサ内の複数のブロックの発熱度数を保持する発熱度数保持部と、命令の実行に関わるブロックとそのブロックの発熱量に係る発熱係数とを所定の命令単位で特定する発熱特定部と、実行すべき命令の進行に合わせて前記所定の命令単位で、前記発熱特定部により特定されたブロックの前記発熱度数を前記発熱係数をもとに累積加算する発熱度数加算部と、各ブロックの前記発熱度数にもとづいて、実行すべき命令を前記複数のサブプロセッサ間で振り分けるスケジューラとを含む。
【００１３】
本発明のさらに別の態様もプロセッサに関する。このプロセッサは、実行すべき命令を解読するデコーダに、前記命令の実行に関わるプロセッサ内のブロックの発熱を解析する機能をもたせる。
【００１４】
本発明のさらに別の態様は温度制御方法に関する。この方法は、命令コードの進行に合わせて所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算してレジスタに保持することにより、命令コードの進行による発熱をブロック単位で検出する。
【００１５】
本発明のさらに別の態様も温度制御方法に関する。この方法は、所定の命令単位で見積もられた発熱量をもとに、命令の進行に合わせて前記所定の命令単位で前記命令の実行に関わるブロックの発熱度数を累積加算してレジスタに保持し、前記レジスタに保持された各ブロックの前記発熱度数にもとづいて実行すべき命令をスケジューリングする。
【００１６】
本発明のさらに別の態様も温度制御方法に関する。この方法は、マルチプロセッサシステムにおける各プロセッサ内のブロックの発熱量を所定の命令単位で見積もり、命令の進行によるブロックの温度変化を予測し、予測された温度変化をもとに命令を前記プロセッサ間で振り分ける。
【００１７】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１８】
本発明によれば、プロセッサの処理性能を下げることなく、プロセッサの発熱量を抑えて動作不良を防ぐことができる。
【発明を実施するための最良の形態】
【００１９】
実施の形態１
図１は、実施の形態１に係るプロセッサシステムの構成図である。このプロセッサシステムは、ＣＰＵコア１００と、メインメモリ１１０とを含み、これらはアドレスバス２８およびデータバス３０に接続されている。ＣＰＵコア１００は、メインメモリ１１０に対してアドレスを指定してデータの読み出しと書き込みを行う。ＣＰＵコア１００は、命令キャッシュ１２と、命令デコーダ１４と、命令スケジューラ１６と、実行ユニット１８と、発熱係数プロファイル２０と、演算ブロック発熱度数レジスタ２２とを含む。メインメモリ１１０には、命令２４と演算結果２６が記憶される。
【００２０】
ＣＰＵコア１００がメインメモリ１１０から読み出す命令２４は、いったん命令キャッシュ１２にキャッシュされる。命令デコーダ１４は、命令キャッシュ１２にキャッシュされた命令２４を順次解読し、命令スケジューラ１６に与える。命令スケジューラ１６は、命令デコーダ１４により解読された命令２４間のデータ依存関係により、命令２４の実行順序の並べ替えや実行タイミングの調整を行い、命令２４をスケジューリングして、実行ユニット１８に渡す。実行ユニット１８はスケジュールされた命令２４を実行し、演算結果２６をメインメモリ１１０に書き出す。
【００２１】
プロセッサシステムのチップの領域全体を発熱制御対象となる小さな領域に区分けし、その小領域をブロックもしくは演算ブロックとよぶ。演算ブロックは、チップを構成するトランジスタ単体もしくはある程度の数のトランジスタの集合である。演算ブロックは、スポット的に発熱のピークが現れる領域の大きさに合わせて区切られるが、演算ブロックの大きさは、発熱制御の目標精度やプロセッサの要求仕様によって自由に決めてよい。また、また、演算ブロックは同一サイズで規則的に区切られてもよいが、各種演算ユニットの境界に合わせて不規則に区切られてもよい。
【００２２】
発熱係数プロファイル２０は、命令ステップ毎にその命令ステップの実行に関わるプロセッサシステムの演算ブロックとその演算ブロックの発熱量に関する発熱係数を対応づけた格納したプロファイルである。演算ブロック発熱度数レジスタ２２は、各演算ブロックの発熱度数を累積して保持するためのレジスタである。
【００２３】
図２は、ＣＰＵコア１００における発熱制御に係る機能構成を詳細に説明する図である。命令デコーダ１４は、発熱解析機能をもち、プロセッサシステムのハードウエア情報をもとに、各命令ステップの実行に関わる演算ブロックを特定し、その演算ブロックの動作による発熱量を予測し、発熱係数を決定する。命令デコーダ１４は、命令ステップ毎に特定した演算ブロックの位置情報と発熱係数を命令ステップに対応づけて発熱係数プロファイル２０に格納する。
【００２４】
図３は、発熱係数プロファイル２０の例を説明する図である。命令ステップ４０、演算ブロック位置４２、および発熱係数４４が対応づけられて格納されている。命令ステップ４０は、命令デコーダ１４によりデコードされたステップ毎の命令であり、ＭＯＶ（転送）、ＡＤＤ（加算）、ＬＤ（ロード）、ＳＴ（ストア）などのコマンドに引数が与えられている。たとえば、命令ステップ「ＭＯＶ  ＡＸ  ＢＸ」は、ＣＰＵコア１００の演算レジスタＢＸの内容を演算レジスタＡＸに代入する命令であり、命令ステップ「ＬＤ  ＡＸ  ２Ｄ」は、メインメモリ１１０のアドレス２ＤのデータをＣＰＵコア１００の演算レジスタＡＸにロードする命令である。
【００２５】
演算ブロック位置４２は、プロセッサシステムのパッケージ上のダイ（die）を矩形領域に区分けした場合のマトリックスのインデックスで与えられる。発熱係数４４は、演算ブロック位置４２で示された領域にある演算ブロックがその命令を実行したときの発熱量の予測値から定められる数値である。
【００２６】
プロセッサシステムのＬＳＩの配置配線が完了した後の論理シミュレーションにおいて、プログラムコードをシミュレートしたときの結果を利用すれば、細かい時間ステップでプロセッサのトランジスタのオンオフ状態の変化をトレースすることができる。この結果を利用すれば、命令ステップ毎にどの演算ブロックがアクティブになるかを完全に解析することができる。
【００２７】
演算ブロックの発熱量については、回路設計時にＣＡＤツールなどを利用して演算ブロックの静的な温度特性を考慮して予測することができる。演算ブロックの静的な温度特性は、主として物理的な特性や素子の位置関係にもとづいて定量化される。たとえば、ＣＭＯＳは値が反転するときにＰチャネルとＮチャネルの両トランジスタが一瞬同時にオンし、貫通電流が流れる。これがＣＭＯＳの消費電力の大半を占め、消費電力はＣＭＯＳの動作周波数に比例して増加する。このような消費電力を見積もることで演算ブロックの発熱量を予測することができる。発熱係数は発熱量の予測値を量子化した値である。回路設計時のシミュレーション結果や発熱予測量などの情報は、ハードウエア情報として命令デコーダ１４から参照できるように構成される。
【００２８】
図３に示す例では、命令ステップ「ＭＯＶ  ＡＸ  ＢＸ」の実行には、（２，３）および（２，４）の位置の演算ブロックが関わり、発熱係数は２であり、命令ステップ「ＬＤ  ＡＸ  ２Ｄ」の実行には、（２，２）の位置の演算ブロックが関わり、発熱係数は１である。
【００２９】
再び図２を参照し、命令スケジューラ１６は、命令デコーダ１４によりデコードされた命令２４をデータ依存関係にもとづきスケジューリングし、次に実行すべき命令ステップを選択する。命令スケジューラ１６は、発熱係数プロファイル２０を参照して、その選択された命令ステップの実行に関わる演算ブロックの位置と発熱係数を特定し、発熱度数加算器３２に与える。発熱度数加算器３２は、特定された演算ブロック位置の現在の発熱度数を演算ブロック発熱度数レジスタ２２から読み取り、命令スケジューラ１６から与えられた発熱係数を加算して演算ブロック発熱度数レジスタ２２に書き込む。
【００３０】
発熱度数減算器３４は、演算ブロック発熱度数レジスタ２２から各演算ブロックの発熱度数を読み取り、所定の放熱定数にもとづく減算処理を行い、演算ブロック発熱度数レジスタ２２に書き込む。発熱度数減算器３４は、所定のクロックで動作して、演算ブロック発熱度数レジスタ２２の各演算ブロックの発熱度数を減算する。これにより、時間経過による放熱量が演算ブロック発熱度数レジスタ２２の発熱度数に反映される。
【００３１】
発熱度数減算器３４は、発熱度数がゼロになるまで減算するが、各演算ブロックの発熱度数が大きいほど発熱度数の減算量を大きく設定する。各演算ブロックの発熱度数から予測される温度と外界温度との差が大きいほど、放熱による温度低下が速いと考えられるからである。外界温度は測定値、推定値もしくはあらかじめ設定した値のいずれを用いてもよい。
【００３２】
図４は、演算ブロック発熱度数レジスタ２２に格納された発熱度数の例を示す。演算ブロック発熱度数レジスタ２２に格納された各演算ブロックの発熱度数は、発熱度数加算器３２により命令コードの進行に合わせて累積加算され、発熱度数減算器３４により時間経過とともに減算される。
【００３３】
発熱度数加算器３２および発熱度数減算器３４は、演算ブロックの温度特性の動的な面も考慮して、演算ブロックの発熱度数を調整してもよい。演算ブロックの動的な温度特性は、主としてタスクの実行履歴や負荷状況に依存するが、場合によっては、隣接するブロックに同時にタスクが割り振られると、離れたブロックにタスクが分散する場合よりも熱が発生しやすいなどの物理的な性質からの影響も受ける。発熱度数加算器３２は、演算ブロックへのタスクの割り当て状況や、隣接する演算ブロックの発熱による相互作用などを加味して発熱度数の加算を行ってもよい。発熱度数減算器３４は、演算ブロックの周囲の放熱の進み具合を考慮して発熱度数の減算を行ってもよい。
【００３４】
再び図２を参照し、ホットスポット検出器３６は、演算ブロック発熱度数レジスタ２２の発熱度数が所定の閾値を超えた演算ブロックをホットスポットとして検出し、その演算ブロックの位置を命令スケジューラ１６に与える。この所定の閾値は、演算ブロックが動作不良になる限界温度よりも低い温度に対応する発熱度数で与えられる。したがって、ホットスポット検出器３６は、現実にホットスポットとなった演算ブロックを検出するだけではなく、将来ホットスポットとなる可能性の高い演算ブロックもホットスポットとして検出する。
【００３５】
命令スケジューラ１６は、ホットスポットと判定された演算ブロックが実行に関わる命令ステップの前にウエイト命令を挿入して実行タイミングをずらしたり、ホットスポットと判定された演算ブロックが関与しない命令の実行を優先的に実行するなどの再スケジューリングを行う。このように、命令スケジューラ１６は、各演算ブロックの定量化された静的／動的温度特性を評価パラメータとして利用したスケジューリングを行う。
【００３６】
上記の構成では、命令デコーダ１４がハードウエア情報をもとに命令ステップ毎に演算ブロックを特定し、発熱係数を決定したが、発熱係数は命令のオペランドの一部として命令コードの生成段階で埋め込まれていてもよい。たとえば、プログラマやコンパイラが命令毎に発熱係数を指定してもよい。
【００３７】
図５は、ＣＰＵコア１００の命令デコーダ１４と命令スケジューラ１６による発熱制御手順を示すフローチャートである。
【００３８】
命令キャッシュ１２に次にデコードすべき命令がキャッシュされている場合（Ｓ１０のＹ）、命令デコーダ１４は、キャッシュされた命令をデコードする（Ｓ１２）。命令デコーダ１４は、デコードされた命令に関わる演算ブロックを特定し、その演算ブロックの発熱係数を求め、発熱係数プロファイル２０を作成する（Ｓ１４）。
【００３９】
命令スケジューラ１６は、命令デコーダ１４によりデコードされた命令をデータ依存関係にもとづいてスケジューリングする（Ｓ１６）。発熱度数加算器３２は、スケジュールされた命令コードの進行に合わせて、演算ブロック発熱度数レジスタ２２に保持されている該当する演算ブロックの発熱度数に発熱係数を累積加算する（Ｓ１８）。ここで、発熱度数加算器３２は、隣接する演算ブロックとの相互作用を考慮し、隣接する演算ブロックの発熱度数が大きい場合に、当該演算ブロックの発熱度数の加算量を大きくしてもよい。
【００４０】
ホットスポット検出器３６は、演算ブロック発熱度数レジスタ２２の各演算ブロックの発熱度数を評価して温度を予測し、ホットスポットとなる演算ブロックがあるかどうか調べる（Ｓ２０）。ホットスポットになる可能性の高い演算ブロックが存在する場合（Ｓ２０のＹ）、命令スケジューラ１６は、ホットスポットとなる演算ブロックが実行に関わる命令の実行を遅らせるように、命令の実行順序や実行タイミングを調整し、命令を再スケジューリングする（Ｓ２２）。
【００４１】
発熱度数減算器３４は、時間経過による放熱量の予測値にもとづいて、演算ブロック発熱度数レジスタ２２の各演算ブロックの発熱度数を減算する（Ｓ２４）。以降、Ｓ１０に戻り、次にデコードすべき命令がなくなる（Ｓ１０のＮ）まで、一連の処理が繰り返される。
【００４２】
本実施の形態のプロセッサシステムによれば、命令コードの進行に伴って命令ステップ毎に演算ブロック単位で発熱量を予測するため、プロセッサシステムのパッケージ全体の温度分布を時間的にも空間的にも非常に細かいレベルで正確に把握することができる。これにより、プロセッサシステムの特定の演算ブロックに処理が集中し、急峻な温度上昇が予測される場合でも、その演算ブロックが関わる命令の実行をリアルタイムでスケジューリングし、発熱のピークを回避することができる。プロセッサ全体の処理性能を犠牲にすることなく、発熱による局所的な動作不良を防ぐことができる。
【００４３】
実施の形態２
図６は、実施の形態２に係るプロセッサシステムの構成図である。本実施の形態のプロセッサシステムは、実施の形態１のＣＰＵコア１００に相当するメインプロセッサ２００以外に、２つのサブプロセッサ２３０ａ、２３０ｂがバス結合したマルチプロセッサシステムである。メインプロセッサ２００は、バスを介してＤＲＡＭ２２０にアクセスしてデータを読み取り、キャッシュ２１０にデータをキャッシュする。メインプロセッサ２００は適宜２つのサブプロセッサ２３０ａ、２３０ｂにタスクを振り分けてプログラムを実行する。
【００４４】
メインプロセッサ２００には、実施の形態１で説明したＣＰＵコア１００の各機能構成、すなわち、命令キャッシュ１２、命令デコーダ１４、命令スケジューラ１６、実行ユニット１８、発熱係数プロファイル２０、演算ブロック発熱度数レジスタ２２、発熱度数加算器３２、発熱度数減算器３４、およびホットスポット検出器３６が含まれる。以下、これらの構成について、実施の形態１とは異なる動作を説明する。
【００４５】
本実施の形態のプロセッサシステムでは、メインプロセッサ２００、サブプロセッサ２３０ａ、２３０ｂの各モジュールを含むプロセッサシステムのパッケージ全体の発熱量が制御対象となる。実施の形態１で述べた演算ブロックは、メインプロセッサ２００、サブプロセッサ２３０ａ、２３０ｂの各モジュール内で区分けされたブロックであり、演算ブロック毎の発熱度数の加算および減算については実施の形態１と同様に行われる。
【００４６】
命令スケジューラ１６は、実施の形態１で述べた命令の実行順序の変更、実行タイミングの調整以外に、サブプロセッサ２３０ａ、２３０ｂに命令を振り分けることで命令のスケジューリングを行う。命令スケジューラ１６によるサブプロセッサ２３０ａ、２３０ｂ間の命令の振り分けは命令ステップ単位の他、サブルーチンなどある程度まとまったタスクの単位で行われてもよい。命令スケジューラ１６は、サブプロセッサ２３０ａ、２３０ｂの負荷状況に応じた命令の振り分けにより、負荷分散を図るとともに、サブプロセッサ２３０ａ、２３０ｂの演算ブロックの発熱状況に応じた命令の振り分けにより、発熱量を制御する。たとえば、一方のサブプロセッサ２３０ａにホットスポットとなる可能性の高い演算ブロックが検出された場合、命令を他方のサブプロセッサ２３０ｂに割り当てる。
【００４７】
本実施の形態のプロセッサシステムによれば、各サブプロセッサ２３０ａ、２３０ｂの演算ブロックの発熱状況に応じて、サブプロセッサ２３０ａ、２３０ｂ間でタスクを割り振ることで、プロセッサシステム全体の温度分布を平準化し、プロセッサシステム内にホットスポットが生じるのを防ぐことができる。
【００４８】
以上、本発明を実施の形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４９】
そのような変形例を説明する。実施の形態では、発熱対策として、ホットスポットとなる可能性のある演算ブロックに負荷が集中しないように、命令のスケジューリングを行う方法を説明したが、これ以外の発熱対策として、たとえば、ホットスポットとなる可能性のある演算ブロックを局所的に冷却ノズルを用いて冷却する方法をとってもよい。また、命令のスケジューリングをしても演算ブロックの発熱を抑えられない場合は、プロセッサ全体の動作周波数を落としたり、電源電圧を下げるなどの緊急処置をとるように構成してもよい。
【００５０】
実施の形態では、回路設計時のシミュレータなどによりあらかじめ発熱量を見積もり、プロセッサ内に発熱係数の情報をハードウエア情報としてもたせたが、プロセッサの温度を測定するセンサを設けて、局所的に演算ブロックの温度を実測した上で、実施の形態で述べたスケジューリングによる発熱制御を実施するように構成してもよい。
【００５１】
実施の形態では、命令ステップ毎に発熱量を予測し、発熱度数をカウントしたが、サブルーチンなどある程度まとまったタスク単位で発熱量を予測して、発熱度数をカウントするように構成してもよく、スケジューリングの単位も命令ステップ単位だけでなくタスク単位で行うように構成してもよい。プロセッサの各演算ブロックが比較的安全な温度範囲にあるときは、タスク単位でカウントされた発熱度数を参照してタスクスケジューリングを行い、温度が上昇してクリティカルな状況になったときは、各演算ブロックの発熱度数を命令ステップ単位でカウントして、命令単位の細かいスケジューリングを行うように切り替える切り替え制御部を設けてもよい。
【００５２】
実施の形態では、発熱制御をプロセッサシステムのハードウエアで行う構成であったが、命令コードの解析と温度予測にもとづいた命令のスケジューリングとをプロセッサシステムの外部でソフトウエア処理などで行い、スケジューリングされた命令をプロセッサに供給する構成の命令コード生成装置をプロセッサシステムとは別に設けてもよい。
【００５３】
アプリケーション毎に発熱特性のプロファイルを作成し、チップ上の温度センサにより実測された温度分布と照合することで発熱係数などのプロファイル情報を修正する照合部を設けてもよい。これにより発熱制御の精度をさらに向上させることができる。
【００５４】
実施の形態のプロセッサをメモリなどの他の素子とともに基板に搭載したプロセッサシステムを構成してもよい。また、そのようなプロセッサシステムを搭載した情報処理装置を構成してもよい。そのような情報処理装置としてパーソナルコンピュータ、各種携帯機器などがある。
【図面の簡単な説明】
【００５５】
【図１】実施の形態１に係るプロセッサシステムの構成図である。
【図２】図１のプロセッサシステムにおける発熱制御に係る機能構成の詳細説明図である。
【図３】図１の発熱係数プロファイルの説明図である。
【図４】図１の演算ブロック発熱度数レジスタに格納された発熱度数を説明する図である。
【図５】図１のプロセッサシステムにおける発熱制御手順を示すフローチャートである。
【図６】実施の形態２に係るプロセッサシステムの構成図である。
【符号の説明】
【００５６】
１２  命令キャッシュ、  １４  命令デコーダ、  １６  命令スケジューラ、  １８  実行ユニット、  ２０  発熱係数プロファイル、  ２２  演算ブロック発熱度数レジスタ、  ３２  発熱度数加算器、  ３４  発熱度数減算器、  ３６  ホットスポット検出器、  １００  ＣＰＵコア、  １１０  メインメモリ、  ２００  メインプロセッサ、  ２１０  キャッシュ、  ２２０  ＤＲＡＭ、  ２３０ａ、２３０ｂ  サブプロセッサ。
【図１】
2005285117.tif 000003
【図２】
2005285117.tif 000004
【図３】
2005285117.tif 000005
【図４】
2005285117.tif 000006
【図５】
2005285117.tif 000007
【図６】
2005285117.tif 000008