(57)【要約】【課題】演算処理の中断を抑制しつつ温度上昇を防止することができる半導体装置及び半導体装置の制御方法を提供すること。【解決手段】第２のＣＰＵコア部Ｃ２は、第１のＣＰＵコア部Ｃ１よりも発熱が小さい。温度センサ２は、第１のＣＰＵコア部Ｃ１の温度を測定する。温度検出部３は、温度センサ２で測定した温度が第１の温度閾値Ｔｔｈ１よりも大きくなった場合に割り込み指令を出力する。バス７は、第１のＣＰＵコア部Ｃ１と第２のＣＰＵコア部Ｃ２との間のデータの受け渡しを行う。制御部４は、割り込み指令を受け取ったら第１のＣＰＵコア部Ｃ１でのプログラムの実行を中断させ、プログラムの実行の再開に必要なデータを第１のＣＰＵコア部Ｃ１から第２のＣＰＵコア部Ｃ２に移行させ、第２のＣＰＵコア部Ｃ２にプログラムの実行を再開させる。電源制御部５は、その後、第１のＣＰＵコア部Ｃ１への電源供給を遮断する。【選択図】図１Ａ
2015035073.tif 000002
【特許請求の範囲】
【請求項１】
バイナリプログラムを実行する第１の処理部と、
前記第１の処理部と同一の前記バイナリプログラムを実行可能な第２の処理部と、
前記第１の処理部の温度を測定する温度センサと、
前記温度センサで測定した温度が第１の値よりも高くなった場合に第１の割り込み指令を出力する温度検出部と、
前記第１の処理部と前記第２の処理部との間のデータの受け渡しを行うバスと、
前記第１の割り込み指令を受け、前記第１の処理部での実行を中断し、前記バイナリプログラムの実行の再開に必要な第１のデータを前記第１の処理部から前記第２の処理部に移行し、前記第２の処理部に前記バイナリプログラムの実行を再開させる制御部と、
前記第１のデータを前記第２の処理部に移行した後に、前記第１の処理部への電源供給を遮断する電源制御部と、を備える、
半導体装置。
【請求項２】
前記制御部は、前記第１の割り込み指令を受け取ったら第１の停止指令を出力し、
前記第１の処理部は、
前記第１の停止指令を受け取った後に前記バイナリプログラムの実行を中断し、
前記第１のデータを、前記バスを介して前記第２の処理部に出力し、
前記第１のデータの出力が完了したら、第１の出力完了通知を前記第２の処理部に出力し、
前記第２の処理部は、前記第１の出力完了通知を受け取ったら、前記電源制御部に第１の電源遮断指令を出力し、
前記電源制御部は、前記第１の電源遮断指令を受け取ったら、前記第１の処理部への電源供給を遮断する、
請求項１に記載の半導体装置。
【請求項３】
前記第１の処理部は、
前記第１の停止指令を受け取ったら、前記電源制御部に前記第２の処理部への電源供給を照会し、前記第２の処理部への電源供給が遮断されている場合には、前記電源制御部に第１の電源供給指令を出力し、
前記電源制御部は、前記第１の電源供給指令を受け取ったら、前記第２の処理部への電源供給を開始し、
前記第２の処理部は、電源供給の開始後に起動が完了したならば、第１の起動完了通知を前記第１の処理部に出力し、
前記第１の処理部は、前記第１の起動完了通知を受け取った後に、前記第１のデータの  出力を開始する、
請求項２に記載の半導体装置。
【請求項４】
前記第１の処理部は、前記バイナリプログラムの実行を中断する前に、前記第１の処理部の動作周波数を低下させる、
請求項１に記載の半導体装置。
【請求項５】
前記温度検出部は、前記第１の割り込み指令の出力後、前記温度センサで測定した温度が前記第１の値よりも小さい第２の値よりも低くなった場合に第２の割り込み指令を出力し、
前記制御部は、前記第２の割り込み指令を受け取ったら第２の停止指令を出力する、
請求項２に記載の半導体装置。
【請求項６】
前記第２の処理部は、
前記第２の停止指令を受け取った後に、前記バイナリプログラムの実行を中断し、
前記電源制御部に第２の電源供給指令を出力し、
前記電源制御部は、前記第２の電源供給指令を受け取ったら、前記第１の処理部への電源供給を開始し、
前記第１の処理部は、
電源供給の開始後に起動が完了したならば、第２の起動完了通知を前記第２の処理部に出力し、
前記第２の処理部は、
前記第２の起動完了通知を受け取った後に、前記バイナリプログラムの実行の再開に必要な第２のデータを、前記バスを介して前記第１の処理部に出力し、
前記第２のデータの出力が完了したら、第２の出力完了通知を前記第１の処理部に出力し、
前記第１の処理部は、前記第２の出力完了通知を受け取ったら、前記電源制御部に第２の電源遮断指令を出力し、
前記電源制御部は、前記第２の電源遮断指令を受け取ったら、前記第２の処理部への電源供給を遮断する、
請求項５に記載の半導体装置。
【請求項７】
前記第２の処理部は、前記バイナリプログラムの実行を中断する前に、前記第２の処理部の動作周波数を低下させる、
請求項６に記載の半導体装置。
【請求項８】
前記第１の処理部は、１又は複数の第１のＣＰＵコアを備え、
前記第２の処理部は、１又は複数の第２のＣＰＵコアを備える、
請求項１に記載の半導体装置。
【請求項９】
１又は複数の前記温度センサが、前記第１のＣＰＵコアに近接して配置される、
請求項８に記載の半導体装置。
【請求項１０】
１又は複数の前記温度センサが、前記第１のＣＰＵコアの内部に配置される、
請求項８に記載の半導体装置。
【請求項１１】
前記１又は複数の前記温度センサは、前記第１のＣＰＵコアの内部に分散して配置される、
請求項１０に記載の半導体装置。
【請求項１２】
バイナリプログラムを実行する第１の処理部の温度が第１の値よりも大きくなった場合に、第１の割り込み指令を出力させ、
前記第１の割り込み指令の出力後、前記第１の処理部での前記バイナリプログラムの実行を中断させ、
前記バイナリプログラムの実行の再開に必要な第１のデータを、前記第１の処理部よりも発熱が小さい第２の処理部に移行させ、
前記第２の処理部に前記バイナリプログラムの実行を再開させ、
前記第１のデータを前記第２の処理部に移行した後に、前記第１の処理部への電源供給を遮断する、
半導体装置の制御方法。
【請求項１３】
前記バイナリプログラムの実行を中断する前に、前記第１の処理部の動作周波数を低下させる、
請求項１２に記載の半導体装置の制御方法。
【請求項１４】
前記第１の割り込み指令の出力後、前記第１の処理部の温度が前記第１の値よりも小さい第２の値よりも低くなった場合に第２の割り込み指令を出力する、
請求項１２に記載の半導体装置の制御方法。
【請求項１５】
前記第２の割り込み信号の出力後、
前記第２の処理部での前記バイナリプログラムの実行を中断させ、
前記第１の処理部への電源供給を再開し、
前記バイナリプログラムの実行の再開に必要な第２のデータを、前記第２の処理部から前記第１の処理部に移行させ、
前記第１の処理部に前記バイナリプログラムの実行を再開させ、
前記第２のデータを前記第１の処理部に移行した後に、前記第２の処理部への電源供給を遮断する、
請求項１４に記載の半導体装置の制御方法。
【請求項１６】
前記バイナリプログラムの実行を中断する前に、前記第２の処理部の動作周波数を低下させる、
請求項１５に記載の半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及び半導体装置の制御方法に関し、例えばモバイル機器に用いられる半導体装置及び半導体装置の制御方法に関する。
【背景技術】
【０００２】
半導体装置では、ＣＰＵ（Central Processing Unit）により演算処理が行われるが、高速なＣＰＵでは演算処理に伴う発熱が大きい。そのため、高負荷の演算処理が継続するとＣＰＵの温度が上昇し、故障や熱暴走の原因となる恐れがある。
【０００３】
このような現象を防止するため、例えば発熱が大きいグラフィックコントローラ（ＧＰＵ）と発熱が小さいグラフィックコントローラ（ＧＰＵ）とを有し、温度変化に応じてＣＰＵを切り替える構成が提案されている（特許文献１）。この構成では、処理能力が大きく発熱が大きい外付けグラフィックコントローラの温度を監視する。そして、外付けグラフィックコントローラの温度が所定値よりも高い場合には、表示制御処理を発熱が小さい内蔵グラフィックコントローラに行わせる。そして、外付けグラフィックコントローラの動作周波数やデューティサイクルを下げることで、発熱を抑制する。これにより、外付けグラフィックコントローラの熱暴走を防止する。
【０００４】
また、リーク電流を監視することにより温度を間接的に監視する構成が提案されている（特許文献２）。半導体装置では、ＣＰＵのリーク電流は、ＣＰＵの処理能力及び温度が高いほど増大する。従って、リーク電流を監視することで、間接的にＣＰＵの温度を監視することができる。そこで、本構成では、ピーク性能が高いＣＰＵのリーク電流値が所定値を超えた場合に、ピーク性能が低いＣＰＵに演算処理を行わせる。
【０００５】
さらに、ＣＰＵを含む処理部が搭載されている画像処理装置内の温度に応じて、処理部の制御形態を切り替える構成が提案されている（特許文献３）。この構成では、画像処理装置内の温度が所定値よりも大きい場合に、処理を発熱の大きい第１ＣＰＵから発熱の小さい第２ＣＰＵに切り替える。これにより、処理部の温度上昇を抑制する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１４１５５号公報
【特許文献２】特開２００４−２８０３７８号公報
【特許文献３】特開２０１１−１３１４７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところが、発明者らは、上述の構成には以下に示す問題点が有ることを見出した。上述した特許文献２の構成では、温度上昇に応じて、発熱の大きいＣＰＵから発熱の小さいＣＰＵへ演算処理が切り替えられる。ところが、単にＣＰＵを切り替えるのみでは、処理中のプログラムの処理が完了するまで切り替えを待たなければならない事態が生じる。この場合、プログラムの処理が完了するまでに、温度が過度に上昇する恐れがある。また、特許文献１の構成では、処理中のプログラムを強制的に終了する場合には、ＣＰＵの切り替え後に、終了させたプログラム処理を最初から再実行しなければならない。そのため、演算処理が遅延し、ＣＰＵが搭載される機器の動作を制約してしまう。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、半導体装置は、バイナリプログラムを実行する第１の処理部と、前記第１の処理部と同一の前記バイナリプログラムを実行可能な第２の処理部と、前記第１の処理部の温度を測定する温度センサと、前記温度センサで測定した温度が第１の値よりも高くなった場合に第１の割り込み指令を出力する温度検出部と、前記第１の処理部と前記第２の処理部との間のデータの受け渡しを行うバスと、前記第１の割り込み指令を受け、前記第１の処理部での実行を中断し、前記バイナリプログラムの実行の再開に必要な第１のデータを前記第１の処理部から前記第２の処理部に移行し、前記第２の処理部に前記バイナリプログラムの実行を再開させる制御部と、前記第１のデータを前記第２の処理部に移行した後に、前記第１の処理部への電源供給を遮断する電源制御部と、を備えるものである。
【発明の効果】
【００１０】
演算処理の中断を抑制しつつ温度上昇を防止することができる半導体装置及び半導体装置の制御方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１Ａ】実施の形態１にかかる半導体装置１００の構成を模式的に示すブロック図である。
【図１Ｂ】実施の形態１にかかる半導体装置１００の構成をより詳しく示すブロック図である。
【図２】実施の形態１にかかる半導体装置１００の動作を示すフローチャートである。
【図３】第１のＣＰＵコア部Ｃ１の温度と半導体装置１００の処理能力との関係を示すグラフである。
【図４】第１のＣＰＵコア部Ｃ１での演算処理の中断手順を示すフローチャートである。
【図５】第１のＣＰＵコア部Ｃ１から第２のＣＰＵコア部Ｃ２へのデータ移行手順を示すフローチャートである。
【図６】第１のＣＰＵコア部Ｃ１の電源をオフにする手順を示すフローチャートである。
【図７】演算処理の実行を第２のＣＰＵコア部Ｃ２から第１のＣＰＵコア部Ｃ１に切り替える手順を示すフローチャートである。
【図８】実施の形態２にかかる半導体装置２００の動作を示すフローチャートである。
【図９】実施の形態３にかかる半導体装置３００の構成を模式的に示すブロック図である。
【図１０】バンドギャップ回路を用いて構成した温度センサ２の構成例を示す回路図である。
【図１１】実施の形態４にかかる半導体装置４００の構成を模式的に示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して実施の形態について説明する。各図面においては、同一要素には同一の符号が付されており、必要に応じて重複説明は省略される。
【００１３】
実施の形態１
まず、実施の形態１にかかる半導体装置１００について説明する。図１Ａは、実施の形態１にかかる半導体装置１００の構成を模式的に示すブロック図である。図１Ｂは、実施の形態１にかかる半導体装置１００の構成をより詳しく示すブロック図である。図１Ｂに示すように、半導体装置１００は、同一の半導体チップ１０１上に形成される第１のＣＰＵコア部Ｃ１、第２のＣＰＵコア部Ｃ２、ＣＰＵ用バス１、温度センサ２、温度検出部３、制御部４、電源制御部５、クロック制御部６、バス７、実行制御部８及び主記憶部９を有する。また、図１Ａに示すように、ＣＰＵ用バス１は、バス７に含まれて１つのバスとして構成することも可能である。なお、第１のＣＰＵコア部Ｃ１は、第１の処理部とも称する。第２のＣＰＵコア部Ｃ２は、第２の処理部とも称する。
【００１４】
第１のＣＰＵコア部Ｃ１は、第２のＣＰＵコア部Ｃ２と比べて、演算処理能力が高い。そのため、第１のＣＰＵコア部Ｃ１は、第２のＣＰＵコア部Ｃ２と比べて、発熱が大きく、かつ、高速動作のため、リーク電流が大きいトランジスタで構成されることが主である。なお、第１のＣＰＵコア部Ｃ１及び第２のＣＰＵコア部Ｃ２は互換性を有し、例えば同一のプログラミング言語、同一アルゴリズム、同一の形式のデータセットに基づく同一のバイナリコード（バイナリプログラム）で動作することができる。
【００１５】
第１のＣＰＵコア部Ｃ１は、１又は複数の第１のＣＰＵコア１０及び記憶部１１を有する。図１では、第１のＣＰＵコア部Ｃ１が１つの第１のＣＰＵコア１０を有する例を示している。第１のＣＰＵコア１０は、高速な演算処理を行うことが可能なＣＰＵコアである。第１のＣＰＵコア１０は、オン／オフ動作が高速なトランジスタで構成される。通例、高速なＭＯＳトランジスタはしきい値電圧（Ｖｔｈ）が低く、またゲート酸化膜は薄いため、リーク電流が比較的大きい。記憶部１１は、主記憶部９の情報を一時的に記憶するための高速な共有キャッシュメモリである。第１のＣＰＵコア部Ｃ１には電源スイッチＳＷＣ１が設けられ、電源制御部５からの電源制御信号ＳＩＧ１によりオン／オフの制御が行われる。
【００１６】
第２のＣＰＵコア部Ｃ２は、１又は複数の第２のＣＰＵコア２０及び記憶部２１を有する。図１では、第２のＣＰＵコア部Ｃ２が１つの第２のＣＰＵコア２０を有する例を示している。第２のＣＰＵコア２０は、第１のＣＰＵコア１０と比べて、低消費電力となるように構成されたＣＰＵコアである。つまり、第２のＣＰＵコア２０は、第１のＣＰＵコア１０と比べてオン／オフ動作が低速なトランジスタで構成される。通例、低速なＭＯＳトランジスタはしきい値電圧（Ｖｔｈ）が高く、またゲート酸化膜圧は厚いためリーク電流が小さい。また、第２のＣＰＵコア２０は、第１のＣＰＵコア１０と比べて、演算処理高速化のための複雑な機能を持たず回路面積が小さい。記憶部２１は、主記憶部９の情報を一時的に記憶するための高速な共有キャッシュメモリである。第２のＣＰＵコア部Ｃ２には電源スイッチＳＷＣ２が設けられ、電源制御部５からの電源制御信号ＳＩＧ２によりオン／オフの制御が行われる。
【００１７】
上述のように、第１のＣＰＵコア部Ｃ１は、第２のＣＰＵコア部Ｃ２と比べて、演算処理能力が高い。そのため、第１のＣＰＵコア１０は、第２のＣＰＵコア２０と比べて、例えば最大動作周波数が高い。第１のＣＰＵコア１０は、第２のＣＰＵコア２０と比べて、例えばしきい値電圧（Ｖｔｈ）が低くまた、ゲート酸化膜厚が薄い高速動作が可能なＭＯＳトランジスタで構成される。第１のＣＰＵコア１０は、第２のＣＰＵコア２０と比べて、例えばパイプライン段数が深い。第１のＣＰＵコア１０は、第２のＣＰＵコア２０と比べて、例えば面積が大きい。例えば、第１のＣＰＵコア１０はアウトオブオーダー実行（Out of Order）を行うために複雑な構成であるのに対し、第２のＣＰＵコア２０はインオーダー実行（In Order）を行うために比較的単純な構成である。第１のＣＰＵコア１０は、第２のＣＰＵコア２０と比べて、例えば電源電圧が高い。
【００１８】
第１のＣＰＵコア部Ｃ１と第２のＣＰＵコア部Ｃ２とは、ＣＰＵ用バス１を介して、互いに情報の受け渡しを行うことが可能である。すなわち、第１のＣＰＵコア部Ｃ１と第２のＣＰＵコア部Ｃ２とは、それぞれの設定情報、ＣＰＵコアで処理されているデータ、及び記憶部に記憶されたデータの受け渡しを行うことが可能である。
【００１９】
温度センサ２、温度検出部３、制御部４、電源制御部５及びクロック制御部６は、バス７を介して情報の受け渡しを行うことが可能である。また、ＣＰＵ用バス１とバス７とは、互いに情報の受け渡しを行うことが可能である。
【００２０】
温度センサ２は、半導体チップ１０１の各所に設けられるが、特に第１のＣＰＵコア部Ｃ１の内部又は周辺に設けられ、第１のＣＰＵコア部Ｃ１の温度Ｔｃの測定に用いられる。温度検出部３は、温度センサ２を用いて、第１のＣＰＵコア部Ｃ１の温度Ｔｃを測定する。そして、温度検出部３は、第１のＣＰＵコア部Ｃ１の温度Ｔｃが温度閾値Ｔｔｈ１（第１の値とも称する）以上であれば、割り込み指令ＳＩ１（第１の割り込み指令とも称する）を出力する。制御部４は、バス７を介して温度検出部３からの割り込み指令ＳＩ１を受け取ったら、バス７及びＣＰＵ用バス１を介して、第１のＣＰＵコア部Ｃ１に停止指令ＳＳを出力する。電源制御部５は、第１のＣＰＵコア部Ｃ１及び第２のＣＰＵコア部Ｃ２へ、それぞれ電源制御信号ＳＩＧ１及び電源制御信号ＳＩＧ２を用いて電源供給を制御する。クロック制御部６は、第１のＣＰＵコア部Ｃ１、第２のＣＰＵコア部Ｃ２及び半導体装置１００に含まれる他の機能ブロックへ供給されるクロック信号を制御する。
【００２１】
続いて、半導体装置１００の動作について説明する。図２は、実施の形態１にかかる半導体装置１００の動作を示すフローチャートである。図３は、第１のＣＰＵコア部Ｃ１の温度と半導体装置１００の処理能力との関係を示すグラフである。半導体装置１００は、通常状態ではでは第１のＣＰＵコア部Ｃ１でプログラム処理を行う。ここでいう通常状態とは、第１のＣＰＵコア部Ｃ１が過熱状態ではない状態（Ｔｃ≦Ｔｔｈ１）を指す。この状態で、第１のＣＰＵコア部Ｃ１でプログラム処理が実行されている場合（図２のステップＳ１１）には、温度検出部３は、第１のＣＰＵコア部Ｃ１の温度Ｔｃを監視する。
【００２２】
そして、第１のＣＰＵコア部Ｃ１の温度Ｔｃが予め定められた温度閾値Ｔｔｈ１以上となったら、温度検出部３は割り込み指令ＳＩ１を制御部４へ出力する（図２のステップＳ１２）。
【００２３】
割り込み指令ＳＩ１が出力されたならば、制御部４からの指示により、プログラム処理の第１のＣＰＵコア部から第２のＣＰＵコア部への切替が行われる。まず、第１のＣＰＵコア部Ｃ１でのプログラム処理が中断される（図２のステップＳ１３）。図４は、第１のＣＰＵコア部Ｃ１でのプログラム処理の中断手順を示すフローチャートである。制御部４は、割り込み指令ＳＩ１を温度検出部３から受け取り、実行制御部８に第１のＣＰＵコア部Ｃ１の停止指令ＳＳ１（第１の停止指令とも称する）を出力する（図４のステップＳ３１）。
【００２４】
制御部４は、停止指令ＳＳ１を出力し、第１のＣＰＵコア部Ｃ１の停止処理を開始する。（図４のステップＳ３２）。停止処理の実行により、以下の処理が行われる。
【００２５】
まず、クロック制御部６は停止指令ＳＳ１を受け、供給するクロック信号の周波数を低下させることにより第１のＣＰＵコア部Ｃ１に含まれる第１のＣＰＵコア１０の動作周波数を低下させる（図４のステップＳ３３）。これにより、第１のＣＰＵコア部Ｃ１での発熱が抑制される。その後、実行制御部８は、第１のＣＰＵコア１０の内部状態を保持し、実行中のプログラム処理を中断する（図４のステップＳ３４）。
【００２６】
図２に戻り、半導体装置１００の動作について引き続き説明する。第１のＣＰＵコア１０でのプログラム処理の中断後、実行制御部８は第１のＣＰＵコア部Ｃ１から第２のＣＰＵコア部Ｃ２へＣＰＵ用バス１を介してデータを移行する（図２のステップＳ１４）。
【００２７】
図５は、第１のＣＰＵコア部Ｃ１から第２のＣＰＵコア部Ｃ２へのデータ移行手順を示すフローチャートである。実行制御部８は、電源制御部５から第２のＣＰＵコア部Ｃ２に電源が供給されているかを、電源制御部５に照会する（図５のステップＳ４１）。
【００２８】
第２のＣＰＵコア部Ｃ２に電源が供給されていない場合には、実行制御部８は電源制御部５へ、第２のＣＰＵコア部Ｃ２への電源供給開始を指令する電源供給指令ＳＶ１（第１の電源供給指令とも称する）を出力する（図５のステップＳ４２）。電源制御部５から第２のＣＰＵコア部Ｃ２に電源が供給されている場合にはステップＳ４５へ進む。
【００２９】
電源制御部５は、電源供給指令ＳＶ１を受け取り、第２のＣＰＵコア部Ｃ２へ電源を供給する（図５のステップＳ４３）。これにより、第２のＣＰＵコア部Ｃ２が起動される。
【００３０】
第２のＣＰＵコア部Ｃ２は、起動し初期化が完了したならば、起動完了を実行制御部８に通知（第１の起動完了通知とも称する）する（図５のステップＳ４４）。
【００３１】
第２のＣＰＵコア部Ｃ２が起動している状態で、実行制御部８は、第１のＣＰＵコア部Ｃ１の設定情報を示すデータ、第１のＣＰＵコア１０で処理されているデータ等の内部状態及び記憶部１１に記憶されているデータを、ＣＰＵ用バス１を介して、第２のＣＰＵコア部Ｃ２に移行させる（図５のステップＳ４５）。ここでいうデータの移行とは、第１のＣＰＵコア部Ｃ１で中断されたプログラム処理を第２のＣＰＵコア部Ｃ２で再開するために必要なデータを移行することを指す。
【００３２】
実行制御部８は、移行対象データの出力が完了したならば、データ出力完了を第２のＣＰＵコア部Ｃ２に通知（第１の出力完了通知とも称する）する（図５のステップＳ４６）。これにより、第２のＣＰＵコア部Ｃ２は、データ移行が完了したことを認識できる。
【００３３】
図２に戻り、半導体装置１００の動作について引き続き説明する。第１のＣＰＵコア部Ｃ１の動作は停止しているが、リーク電流は流れているため発熱は完全には停止していない。データ移行（図２のステップＳ１４）完了後、第１のＣＰＵコア部Ｃ１の電源をオフにする（図２のステップＳ１５）。図６は、第１のＣＰＵコア部Ｃ１の電源をオフにする手順を示すフローチャートである。第２のＣＰＵコア部Ｃ２は、第１のＣＰＵコア部Ｃ１への電源供給の遮断を指令する電源遮断指令ＳＶＣ１（第１の電源遮断指令とも称する）を電源制御部５へ出力する（図６のステップＳ５１）。電源制御部５は、電源遮断指令ＳＶＣ１を受け取り、第１のＣＰＵコア部Ｃ１に設けられた電源スイッチＳＷＣ１をオフとすることで電源供給を遮断する（図６のステップＳ５２）。これにより、第１のＣＰＵコア部Ｃ１の電源がオフとなる。その結果、第１のＣＰＵコア部Ｃ１に流れていたリーク電流が遮断され、第１のＣＰＵコア部Ｃ１での発熱が停止する。
【００３４】
図２に戻り、半導体装置１００の動作について引き続き説明する。第１のＣＰＵコア部Ｃ１の電源をオフにした（図２のステップＳ１５）後、第２のＣＰＵコア部Ｃ２は、移行されたデータに基づき、プログラム処理を再開する（図２のステップＳ１６、図３のタイミングＴ１、Ｔ３）。
【００３５】
以上より、第１のＣＰＵコア部Ｃ１への電源供給が遮断され、第１のＣＰＵコア部Ｃ１に流れるリーク電流も遮断される。その結果、第１のＣＰＵコア部Ｃ１への発熱が停止し、第１のＣＰＵコア部Ｃ１の温度が下がり始める。
【００３６】
温度検出部３は、引き続き第１のＣＰＵコア部Ｃ１の温度Ｔｃを監視している（図２のステップＳ１７）ので、第１のＣＰＵコア部Ｃ１の温度Ｔｃが、予め定められた温度閾値Ｔｔｈ２（Ｔｔｈ２＜Ｔｔｈ１、第２の値とも称する）以下となったら、割り込み指令ＳＩ２（第２の割り込み指令とも称する）を出力する。
【００３７】
割り込み指令ＳＩ２が出力されたならば、プログラム処理の実行を第２のＣＰＵコア部Ｃ２はから第１のＣＰＵコア部Ｃ１に切り替える（図２のステップＳ１８）。図７は、プログラム処理の実行を第２のＣＰＵコア部Ｃ２から第１のＣＰＵコア部Ｃ１に切り替える手順を示すフローチャートである。
【００３８】
制御部４は、割り込み指令ＳＩ２を受け取り、実行制御部８に第２のＣＰＵコア部Ｃ２の停止指令ＳＳ２（第２の停止指令とも称する）を出力する（図７のステップＳ８０１）。
【００３９】
制御部４は、停止指令ＳＳ２を出力し、第２のＣＰＵコア部Ｃ２の停止処理を開始する（図７のステップＳ８０２）。停止処理の実行により、以下の処理が行われる。
【００４０】
まず、クロック制御部６は停止指令ＳＳ２を受け、供給するクロック信号の周波数を低下させることにより、第２のＣＰＵコア部Ｃ２に含まれる第２のＣＰＵコア２０の動作周波数を低下させる（図７のステップＳ８０３）。その後、第２のＣＰＵコア２０は、実行中のプログラム処理を中断する（図７のステップＳ８０４）。
【００４１】
実行制御部８は、第１のＣＰＵコア部Ｃ１への電源供給開始を指令する電源供給指令ＳＶ２（第２の電源供給指令とも称する）を出力する（図７のステップＳ８０５）。電源制御部５は、電源供給指令ＳＶ２を受け取り、第１のＣＰＵコア部Ｃ１へ電源を供給する（図７のステップＳ８０６）。これにより、第１のＣＰＵコア部Ｃ１が起動される。第１のＣＰＵコア部Ｃ１は、起動し初期化が完了したならば、起動完了を実行制御部８に通知（第２の起動完了通知とも称する）する（図７のステップＳ８０７）。
【００４２】
実行制御部８は、第２のＣＰＵコア部Ｃ２の設定情報、第２のＣＰＵコア２０で処理されているデータ等の内部状態及び記憶部２１に記憶されているデータを、ＣＰＵ用バス１を介して、第１のＣＰＵコア部Ｃ１に移行させる（図７のステップＳ８０８）。ここでいうデータの移行とは、第２のＣＰＵコア部Ｃ２で中断されたプログラム処理を第１のＣＰＵコア部Ｃ１で再開するために必要なデータを移行することを指す。
【００４３】
実行制御部８は、移行対象データの出力が完了したならば、データ出力完了を第１のＣＰＵコア部Ｃ１に通知（第２の出力完了通知とも称する）する（図７のステップＳ８０９）。これにより、第２のＣＰＵコア部Ｃ２は、データ移行が完了したことを認識できる。その後、第１のＣＰＵコア部Ｃ１は、第２のＣＰＵコア部Ｃ２への電源供給の遮断を指令する電源遮断指令ＳＶＣ２（第２の電源遮断指令とも称する）を電源制御部５へ出力する（図７のステップＳ８１０）。これにより、第２のＣＰＵコア部Ｃ２への電源供給が遮断され（図７のステップＳ８１１）、第２のＣＰＵコア部Ｃ２が停止する。
【００４４】
その後、第１のＣＰＵコア部Ｃ１は、移行されたデータに基づき、プログラム処理を再開する（図７のステップＳ８１２、図３のタイミングＴ２、Ｔ４）。これにより、高速のプログラム処理が再開される。
【００４５】
以上、本構成によれば、第１のＣＰＵコア部Ｃ１の温度Ｔｃが温度閾値Ｔｔｈ１よりも高くなったら第１のＣＰＵコア部Ｃ１のプログラム処理を停止し、第１のＣＰＵコア部Ｃ１の温度を下げることができる。その後、第１のＣＰＵコア部Ｃ１の温度Ｔｃが温度閾値Ｔｔｈ２（Ｔｔｈ２＜Ｔｔｈ１）よりも低くなったら第１のＣＰＵコア部Ｃ１のプログラム処理を再開することができる。これにより、プログラム処理の途中で第１のＣＰＵコア部Ｃ１が過熱状態となっても、第１のＣＰＵコア部Ｃ１の熱暴走を確実に防止することが出来る。
【００４６】
また、第１のＣＰＵコア部Ｃ１でのプログラム処理を停止中は、第２のＣＰＵコア部Ｃ２が中断されたプログラム処理を、第１のＣＰＵコア部Ｃ１で中途まで行われたプログラム処理を再開し、引き続きプログラム処理を実行する。そのため、第１のＣＰＵコア部Ｃ１に比べれば処理能力は低下するものの、一定のペースでプログラム処理を継続することができる。第1のＣＰＵコア部Ｃ１と第２のＣＰＵコア部Ｃ２の切り替え時には、専用に設けられたＣＰＵ用バスを介してデータの受け渡しが行われるため、オペレーティングシステムやアプリケーションプログラム等を変更する必要はない。よって、ＣＰＵ部でのプログラム処理を一度中止し、ＣＰＵの切り替え後に初めから実行し直す場合と比べて、演算処理能力の低下を防止することが可能である。
【００４７】
実施の形態２
実施の形態２にかかる半導体装置１００の動作について説明する。図８は、実施の形態２にかかる半導体装置２００の動作を示すフローチャートである。ステップＳ２１〜Ｓ２３は、それぞれ図２のステップＳ１１〜Ｓ１３と同様であるので、説明を省略する。
【００４８】
第１のＣＰＵコア１０でのプログラム処理の中断後、実行制御部８は、ＣＰＵ用バス１を介して、第１のＣＰＵコア部Ｃ１の設定情報を示すデータと、第１のＣＰＵコア１０で処理されているデータ等の内部状態とを、第１のＣＰＵコア部Ｃ１から第２のＣＰＵコア部Ｃ２へ移行する（図８のステップＳ２４）。
【００４９】
第２のＣＰＵコア部Ｃ２は、移行されたデータに基づき、プログラム処理を再開する（図８のステップＳ２５）。
【００５０】
この時点では、第１のＣＰＵコア部Ｃ１の記憶部１１に保持されたデータにアクセスが必要な場合には、第２のＣＰＵコア２０は、第１のＣＰＵコア部Ｃ１の記憶部１１に、ＣＰＵ用バス１を介して継続してアクセス可能である。新たなメインメモリへのアクセスが生じた場合、メインメモリのデータは第２のＣＰＵコア部Ｃ２の記憶部２１へキャッシュされる。こうして第１のＣＰＵコア部Ｃ１の記憶部１１へのアクセスが不必要となった時点で、第１のＣＰＵコア部Ｃ１の電源はオフされる（図８のステップＳ２６）。
【００５１】
以降のステップＳ２７及びＳ２８は、それぞれ図２のステップＳ１７及びＳ１８と同様であるので、説明を省略する。
【００５２】
本実施の形態では、第１のＣＰＵコア部Ｃ１の記憶部１１から第２のＣＰＵコア部の記憶部２１へのデータのコピーの終了を待ってプログラムの実行を再開する必要はない。よって、プログラム処理が中断される時間が短くなり、実施の形態１に比べても、更に演算処理能力の低下を防止することが可能である。
【００５３】
実施の形態３
次に、実施の形態３にかかる半導体装置３００について説明する。図９は、実施の形態３にかかる半導体装置３００の構成を模式的に示すブロック図である。図９では、第１のＣＰＵコア部Ｃ１が４つの第１のＣＰＵコア１０を有する場合を図示している。なお、図面の簡略化のため、図９では、第１のＣＰＵコア部Ｃ１、第１のＣＰＵコア１０、温度センサ２及び温度検出部３のみを表示している。図９では、第１のＣＰＵコア部Ｃ１、第１のＣＰＵコア１０、温度センサ２及び温度検出部３は、同一の半導体チップ３０１上に形成される。
【００５４】
図１０は、バンドギャップ回路を用いて構成した温度センサ２の構成例を示す回路図である。この例では、バンドギャップ回路２３は、抵抗Ｒ０〜Ｒ３、トランジスタＱ１及びＱ２、オペアンプＡＭＰにより構成される。電源電圧Ｖｃｃを出力する電源（以後、電源Ｖｃｃとも称する）とグランドとの間には、抵抗Ｒ２、トランジスタＱ１、抵抗Ｒ０及び抵抗Ｒ１が、この順で直列に接続される。抵抗Ｒ２、トランジスタＱ１、抵抗Ｒ０及び抵抗Ｒ１で構成される経路には、電流Ｉ１が流れる。電源Ｖｃｃと、抵抗Ｒ０と抵抗Ｒ１との間のノードと、の間には、抵抗Ｒ３及びトランジスタＱ２が、この順で直列に接続される。抵抗Ｒ３及びトランジスタＱ２で構成される経路には、電流Ｉ２が流れる。
【００５５】
抵抗Ｒ０と抵抗Ｒ１との間のノード（電圧Ｖ１）は、外部のＡ／Ｄコンバータ２４と接続される。オペアンプＡＭＰの非反転入力端子は抵抗Ｒ２とトランジスタＱ１との間のノードと接続され、反転入力端子は抵抗Ｒ３とトランジスタＱ２との間のノードと接続される。オペアンプＡＭＰの出力端子は、トランジスタＱ１及びＱ２のべースと接続され、バンドギャップリファレンス電圧ＶＢＧＲを出力する。Ａ／Ｄコンバータ２４は、電圧Ｖ１をアナログ／デジタル（Ａ／Ｄ）変換した出力信号ＯＵＴを出力する。
【００５６】
本実施の形態では、バンドギャップ回路２３が生成する絶対温度に比例する電圧Ｖ１をＡ／Ｄコンバータ２４でデジタル値へ変換することにより、第１のＣＰＵコア部Ｃ１の温度を検出して、半導体装置３００の制御を行うことが可能となる。
【００５７】
４つの第１のＣＰＵコア１０毎に４つの温度センサ２を設けた場合、どれか１つの温度センサの温度Ｔｔｈ１１を超えたときに、第１のＣＰＵコア部と第２のＣＰＵコア部とを切り替える制御を行われる。また、４つの温度センサの温度の平均値が温度Ｖｔｈ１１より低い温度Ｖｔｈ１２を超えたとき、第１のＣＰＵコア部と第２のＣＰＵコア部とを切り替えるなど、４つの温度センサそれぞれの温度に基づく制御と組み合わせることも可能である。
【００５８】
半導体装置３００は、温度センサ２が第１のＣＰＵコア部Ｃ１に近接して配置される。これにより、第１のＣＰＵコア部Ｃ１の形状や配置を変更することなく、温度センサ２を配置することができる。また、温度センサ２は、第１のＣＰＵコア部Ｃ１の温度を高精度に、かつ温度変化に対する遅延が少ない状態で検出し、第１のＣＰＵコア部Ｃ１の熱暴走を防ぐことが可能である。
【００５９】
実施の形態４
次に、実施の形態４にかかる半導体装置４００について説明する。図１１は、実施の形態４にかかる半導体装置４００の構成を模式的に示すブロック図である。図１１では、第１のＣＰＵコア部Ｃ１が４つの第１のＣＰＵコア１０を有する場合を図示している。なお、図面の簡略化のため、図１１では、第１のＣＰＵコア部Ｃ１、第１のＣＰＵコア１０、温度センサ２及び温度検出部３のみを表示している。図１１では、第１のＣＰＵコア部Ｃ１、第１のＣＰＵコア１０、温度センサ２及び温度検出部３は、同一の半導体チップ４０１上に形成される。
【００６０】
半導体装置４００は、それぞれの第１のＣＰＵコア部Ｃ１内に、４つの温度センサ２が分散して配置される。温度センサ２は第１のＣＰＵコア部に含まれる温度の上昇の大きい機能ブロックに配置されることが好ましい。これにより、第１のＣＰＵコア部Ｃ１内の機能ブロック毎に温度上昇の大さが異なり、温度分布が有る場合でも、温度が最も高い部位の温度を検出することができる。よって、半導体装置４００では、半導体装置３００と比べて、第１のＣＰＵコア部Ｃ１の温度をより高精度に、かつ温度変化に対する遅延がより少ない状態で検出することが可能である。
【００６１】
その他の実施の形態
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、実施の形態２及び３における温度センサ２の数は例示に過ぎず、任意の個数とすることができる。
【００６２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００６３】
１  ＣＰＵ用バス
２  温度センサ
３  温度検出部
４  制御部
５  電源制御部
６  クロック制御部
７  バス
８  実行制御部
９  主記憶部
１０  第１のＣＰＵコア
１１、２１  記憶部
２０  第２のＣＰＵコア
２３  バンドギャップ回路
２４  Ａ／Ｄコンバータ
１００、２００、３００、４００  半導体装置
１０１、３０１、４０１  半導体チップ
ＡＭＰ  オペアンプ
Ｃ１  第１のＣＰＵコア部
Ｃ２  第２のＣＰＵコア部
Ｒ０〜Ｒ３  抵抗
Ｑ１、Ｑ２  トランジスタ
ＳＩＧ１、ＳＩＧ２  電源制御信号
ＳＷＣ１、ＳＷＣ２  電源スイッチ
【図１Ａ】
2015035073.tif 000003
【図１Ｂ】
2015035073.tif 000004
【図２】
2015035073.tif 000005
【図３】
2015035073.tif 000006
【図４】
2015035073.tif 000007
【図５】
2015035073.tif 000008
【図６】
2015035073.tif 000009
【図７】
2015035073.tif 000010
【図８】
2015035073.tif 000011
【図９】
2015035073.tif 000012
【図１０】
2015035073.tif 000013
【図１１】
2015035073.tif 000014