(57)【要約】      （修正有）【課題】特定のアプリケーションの実行性能を保ちつつ、ＣＰＵの発熱量を低下させる。【解決手段】半導体装置１０は、ＣＰＵ１１、温度判定部２１、制御対象決定部２２、発熱制御部２３、アプリケーション割り付け部２６を有する。温度判定部２１は、温度情報を取得し、取得した温度情報が示す温度がしきい値以上か否かを判定する。発熱制御部２３は、温度がしきい値以上であると判定された場合、ＣＰＵに対する発熱制御を行い、発熱量を制御する。グループデータ２８は、ＣＰＵにおいて高優先のアプリケーションの実行が割り当てられる第１グループのＣＰＵコアを指定する高優先グループ情報と、ＣＰＵにおいて低優先のアプリケーションの実行が割り当てられる低優先グループのＣＰＵコアを指定する低優先グループ情報を含む。制御対象決定部２２は、グループデータに基づいて、低優先グループのＣＰＵコアの中から、発熱制御の対象のＣＰＵコアを決定する。【選択図】図２
2020106918.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションの実行が可能な複数のＣＰＵ（Central Processing Unit）コアを含むＣＰＵと、
温度情報を取得し、取得した温度情報が示す温度が予め設定されたしきい値以上であるか否かを判定する温度判定部と、
前記温度情報が示す温度が前記しきい値以上であると判定された場合、前記ＣＰＵに対して発熱制御を行い、前記ＣＰＵにおける発熱量を制御する発熱制御部と、
前記ＣＰＵにおいて第１優先度のアプリケーションの実行が割り当てられる第１グループのＣＰＵコアを指定する第１グループ情報と、前記ＣＰＵにおいて前記第１優先度より優先度が低い第２優先度のアプリケーションの実行が割り当てられる第２グループのＣＰＵコアを指定する第２グループ情報とを含むグループデータに基づいて、前記第２グループのＣＰＵコアの中から、前記発熱制御の対象のＣＰＵコアを決定する制御対象決定部とを備える半導体装置。
【請求項２】
前記しきい値は、第１のしきい値と、該第１のしきい値よりも値が大きい第２のしきい値とを含み、
前記発熱制御部は、前記温度情報が示す温度が前記第１のしきい値以上でかつ前記第２のしきい値よりも低い場合、第１の発熱制御を行う請求項１に記載の半導体装置。
【請求項３】
前記発熱制御部は、前記温度情報が示す温度が前記第２のしきい値以上の場合、前記第１の発熱制御よりも発熱量の削減量が大きい第２の発熱制御を行う請求項２に記載の半導体装置。
【請求項４】
前記発熱制御部は、前記複数のＣＰＵコアのそれぞれに供給されるクロック信号の周波数を制御するクロック制御部、及び前記複数のＣＰＵコアのそれぞれへの電源供給を制御する電源制御部の少なくとも一方を含む請求項１に記載の半導体装置。
【請求項５】
前記発熱制御部は、前記複数のＣＰＵコアのそれぞれに供給されるクロック信号の周波数を制御するクロック制御部、及び前記複数のＣＰＵコアのそれぞれへの電源供給を制御する電源制御部を含み、前記第１の発熱制御では、前記クロック制御部が前記第２グループのＣＰＵコアの少なくとも１つの供給されるクロック信号の周波数を、前記発熱制御が実施される前に比べて低下させ、前記第２の発熱制御では、前記電源制御部が前記第２グループのＣＰＵコアの少なくとも１つに供給される電源を遮断する請求項３に記載の半導体装置。
【請求項６】
前記グループデータに基づいて、前記第１優先度のアプリケーションの実行を第１グループのＣＰＵコアの何れかに割り当て、前記第２優先度のアプリケーションの実行を第２グループのＣＰＵコアの何れかに割り当てるアプリケーション割り付け部を更に有する請求項１に記載の半導体装置。
【請求項７】
前記グループデータと、前記ＣＰＵで実行されている第１優先度のアプリケーションの数とに基づいて、前記第２グループのＣＰＵコアの数を制御するグループ範囲制御部を更に有する請求項１に記載の半導体装置。
【請求項８】
前記グループ範囲制御部は、前記第１グループのＣＰＵコアの数と、前記ＣＰＵで実行されている第１優先度のアプリケーションの数とを比較し、該比較の結果に基づいて、前記第２グループのＣＰＵコアの数を制御する請求項７に記載の半導体装置。
【請求項９】
前記グループ範囲制御部は、前記第１グループのＣＰＵコアの数が、前記ＣＰＵで実行されている第１優先度のアプリケーションの数より多い場合、前記第２グループのＣＰＵコアの数を、前記第１グループのＣＰＵコアの数が前記ＣＰＵで実行されている第１優先度のアプリケーションの数以下の場合に比べて増加させる請求項８に記載の半導体装置。
【請求項１０】
前記グループ範囲制御部は、前記第１グループ情報で指定される第１グループのＣＰＵコアの少なくとも一部を、前記第２グループ情報で指定される第２グループのＣＰＵコアの一部と重複させることで、前記第２グループのＣＰＵコアの数を増加させる請求項９に記載の半導体装置。
【請求項１１】
前記温度情報が示す温度が予め設定された温度より低い場合、前記第１グループ情報で指定される第１グループのＣＰＵコアと、前記第２グループ情報で指定される第２グループのＣＰＵコアとの少なくとも一部は重複しており、前記グループ範囲制御部は、前記温度情報が示す温度が所定の温度以上の場合に、前記第２グループのＣＰＵコアの数を制御する請求項７に記載の半導体装置。
【請求項１２】
アプリケーションの実行が可能な複数のＣＰＵ（Central Processing Unit）コアを含むＣＰＵを含む制御対象装置の温度情報を取得し、取得した温度情報が示す温度が予め設定されたしきい値以上であるか否かを判定する温度判定部と、
前記温度情報が示す温度が前記しきい値以上であると判定された場合、前記ＣＰＵに対して発熱制御を行い、前記ＣＰＵにおける発熱量を制御する発熱制御部と、
前記ＣＰＵにおいて第１優先度のアプリケーションの実行が割り当てられる第１グループのＣＰＵコアを指定する第１グループ情報と、前記ＣＰＵにおいて前記第１優先度より優先度が低い第２優先度のアプリケーションの実行が割り当てられる第２グループのＣＰＵコアを指定する第２グループ情報とを含むグループデータに基づいて、前記第２グループのＣＰＵコアの中から、前記発熱制御の対象のＣＰＵコアを決定する制御対象決定部とを備える温度制御装置。
【請求項１３】
アプリケーションの実行が可能な複数のＣＰＵ（Central Processing Unit）コアを含むＣＰＵを含む制御対象装置の温度情報を取得し、
前記取得した温度情報が示す温度が予め設定されたしきい値以上であるか否かを判定し、
前記温度情報が示す温度が前記しきい値以上であると判定された場合、前記ＣＰＵにおいて第１優先度のアプリケーションの実行が割り当てられる第１グループのＣＰＵコアを指定する第１グループ情報と、前記ＣＰＵにおいて前記第１優先度より優先度が低い第２優先度のアプリケーションの実行が割り当てられる第２グループのＣＰＵコアを指定する第２グループ情報とを含むグループデータに基づいて、前記第２グループのＣＰＵコアの中から、発熱制御の対象とするＣＰＵコアを決定し、
前記温度情報が示す温度が前記しきい値以上であると判定された場合、前記ＣＰＵに対して発熱制御を行うことで、前記ＣＰＵにおける発熱量を制御する温度制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置、温度制御装置、及び方法に関し、例えばアプリケーションを実行するプロセッサを含む半導体装置、並びにそのような半導体装置における温度制御装置及び方法に関する。
【背景技術】
【０００２】
関連技術として、非特許文献１は、制御対象の発熱制御に用いられるＩＰＡ（Intelligent Power Allocation）を開示する。ＩＰＡは、ＡＲＭ社が開発した発熱制御フレームワークである。ＩＰＡは、任意に設定した温度センサから温度情報を取得し、ＩＰＡの制御対象である複数のモジュールに対して利用可能な消費電力を求め、クロックを調整して発熱制御を行う。
【０００３】
より詳細には、ＩＰＡは、温度センサから取得した温度情報に基づいて、温度があらかじめ設定されたターゲット温度で飽和するように、ＰＩＤ（Proportional-Integral-Differential）制御で利用可能な消費電力を算出し、制御対象のモジュールに対して利用可能な消費電力を任意の固定係数に基づいて分配する（非特許文献１の２．２．４章を参照）。ＩＰＡは、分配された消費電力を、利用可能な周波数があらかじめ登録された対応表と比較することで周波数を決定する。ＩＰＡでは、周波数を下げることでダイナミック電力を削減することができ、発熱制御を行うことができる。
【０００４】
別の関連技術として、特許文献１は、コンピュータシステムの発熱を効率良く制御する発熱制御装置を開示する。特許文献１に記載の発熱制御装置は、コンピュータシステムのハードウェアにおける、発熱状態の制御対象となる対象部位の発熱状態を取得する。発熱制御装置は、取得した発熱状態に応じて、その発熱状態を変化させるように、動作中のアプリケーションの動作内容を変更する。ここで、「アプリケーションの動作内容を変更する」とは、アプリケーションを直接操作して、アプリケーションが必要とするハードウェアの処理能力が変化するようにその動作内容を変更することを意味する。
【０００５】
発熱制御装置は、例えば通常モードで動作中のアプリケーションの動作モードを、通常モードが必要とする処理速度より低い処理速度を要求する低速にモードに変更する。または、発熱制御装置は、アプリケーションの主となる機能部分を通常モードのままにし、他の機能の処理モードを低速モードに変更する。特許文献１には、アプリケーションが実現する機能ごとに優先度を付与し、動作中のアプリケーションに対して、優先度が低い機能ほど、その機能を実現する部分の動作を抑制することも記載されている。さらに、特許文献１には、アプリケーションの動作内容の変更と、プロセッサの動作周波数の調整などのハードウェアの動作調整とを併用して、対象部位の発熱状態を制御することも記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１０９０８５号公報
【非特許文献】
【０００７】
【非特許文献１】Xin Wang, "Intelligent Power Allocation Maximize performance in the thermal envelope", March 2017, http://infocenter.arm.com/help/topic/com.arm.doc.dto0052a/DTO0052A_intelligent_power_allocation_white_paper.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００８】
非特許文献１に記載のＩＰＡでは、発熱状況に応じて、あらかじめ設定された固定係数に従って、対象モジュールの発熱制御（性能低下）が実施される。この方法は、発熱は抑制できる一方で、対象モジュール上で実行されている機能の全てで性能が低下する。例えば、対象モジュール上で実行されている機能が、対象モジュールが搭載される車両の運転者の安全に関する機能や、ユーザーエクスペリエンスに関する機能であっても、性能が低下する。これら機能の性能が低下すると、運転者の安全やユーザーエクスペリエンスが損なわれる。
【０００９】
具体例として、車載システムにおいてＤＭＳ（Driver Monitoring System）機能とメータークラスター機能とが同時に動作していた場合を考える。ここで、メータークラスター機能とは、運転に必要な各種メータを集合させたユニットであるメータクラスを動作させる機能を指す。非特許文献１に記載のＩＰＡでは、運転中に発熱制御が実施されると、重要度が低いＤＭＳのみならず、メータークラスター機能まで性能が低下することとなり、運転に支障をきたす可能性がある。
【００１０】
一方、特許文献１に記載の発熱制御装置では、優先度に応じて、低優先の機能の動作を抑制することができる。しかしながら、特許文献１では、例えばメインプロセッサの温度がしきい値を超えた場合、メインプロセッサ上で動作するアプリケーションの動作内容の変更と、メインプロセッサの動作周波数の調整とが行われる。この場合、仮に、メインプロセッサ上で動作するアプリケーションの動作内容の変更において、高優先の機能の動作内容が変更されなかったとしても、メインプロセッサの動作周波数が低下した場合には、高優先の機能の性能低下は避けられない。
【００１１】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
一実施の形態によれば、半導体装置は、複数のＣＰＵ（Central Processing Unit）コアを含むＣＰＵに対して発熱制御を行う発熱制御部と、発熱制御の対象を決定する制御対象決定部とを有する。制御対象決定部は、低優先のアプリケーションの実行が割り当てられるＣＰＵコアの中から、発熱制御の対象を決定する。
【発明の効果】
【００１３】
前記一実施の形態によれば、発熱制御装置は、特定のアプリケーションの実行性能を保ちつつ、ＣＰＵの発熱量を低下させることができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１に係る半導体装置のハードウェア構成を示すブロック図。
【図２】半導体装置の発熱制御に関わる部分を示す機能ブロック図。
【図３】（ａ）は、高優先グループ情報の一例を示し、（ｂ）は低優先グループ情報の一例を示す図。
【図４】（ａ）及び（ｂ）は、それぞれ各優先度のアプリケーションと実行が割り当てられるＣＰＵコアとの関係を示す模式図。
【図５】発熱制御の動作手順を示すフローチャート。
【図６】動作例を示す模式図。
【図７】実施形態２に係る半導体装置を示すブロック図。
【図８】グループ範囲の制御に関わる動作手順を示すフローチャート。
【図９】（ａ）及び（ｂ）はそれぞれ高優先グループ情報及び低優先グループ情報を示す図、（ｃ）は、各グループにおけるアプリケーションと実行が割り当てられるＣＰＵコアとの関係を示す模式図。
【図１０】（ａ）〜（ｃ）は、それぞれ、アプリケーションとその実行が割り当てられるＣＰＵコアとの関係を示す模式図。
【発明を実施するための形態】
【００１５】
以下、図面を参照しつつ、上記課題を解決するための手段を適用した実施形態を詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、又はその他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、何れかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１６】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスク）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、及び半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１７】
以下の実施の形態においては便宜上その必要があるときは、複数のセクション又は実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、応用例、詳細説明、又は補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１８】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、又は位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１９】
［実施形態１］
図１は、実施形態１に係る半導体装置のハードウェア構成を示す。半導体装置（半導体集積回路装置）１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、周辺回路１４、及びバス１６を有する。半導体装置１０は、例えばマルチコアプロセッサを含むマイクロコンピュータユニット（ＭＣＵ：Micro Computer Unit）として構成されている。半導体装置１０は、例えば、自動車などの車両に搭載される。半導体装置１０は、車両において、例えばＤＳＭ（Driver Status Monitor）、メータークラスターなどに用いられる。半導体装置１０は、発熱制御を実施するシステムとして構成されていればよく、半導体装置１０の用途は、特定の用途には限定されない。
【００２０】
ＣＰＵ１１は、半導体装置１０において処理実行部を構成し、タスクの一例として各種アプリケーションプログラムを実行する。ＣＰＵ１１は、複数のＣＰＵコアを含む。ＣＰＵ１１は、動作条件が可変に構成されている。ＣＰＵ１１は、例えば、動作するＣＰＵコアの数が可変に構成される。また、ＣＰＵ１１は、各ＣＰＵコアの動作周波数が可変に構成される。ＣＰＵ１１において、動作するＣＰＵコアの数、及び各ＣＰＵコアの動作周波数の少なくとも一方を制御することで、ＣＰＵ１１における発熱を制御できる。
【００２１】
ＲＯＭ１２は、例えばフラッシュメモリなどの不揮発性メモリである。ＲＯＭ１２は、ＣＰＵ１１によって実行されるプログラムなどを格納する。ＣＰＵ１１は、ＲＯＭ１２から読み出したアプリケーションプログラム（以下、アプリケーションとも呼ぶ。また、アプリケーションをタスクと言い換えることもできる。）を実行して各種処理を実行する。ＲＯＭに格納されるプログラムは、ＣＰＵ１１の発熱制御を実施するためのプログラムを含む。ＲＡＭ１３は、各種データを格納する揮発性のメモリである。
【００２２】
周辺回路１４は、半導体装置１０に内蔵される各種周辺回路を含む。周辺回路１４は、例えば温度を測定するための温度センサ（ＴＨＳ：thermal sensor）１５を含む。温度センサ１５は、例えば温度に依存して出力電圧を変化させる抵抗素子を含む。あるいは、温度センサ１５は、温度に依存した周期で発振するリングオシレータなどの発振器を含む。温度センサ１５には、種々のタイプの温度センサを用いることができ、温度センサ１５のタイプは特に限定されない。半導体装置１０において、ＲＡＭ１３及び周辺回路１４などは、バス１６を介してＣＰＵ１１に接続される。
【００２３】
半導体装置１０は、外部に配置された外部周辺回路及び他デバイスとの間で信号の入出力を行う図示しない入出力ポートを有していてもよい。上記では、温度センサ１５が、半導体装置１０の内部の周辺回路１４に含まれる例を示したが、温度センサ１５は、半導体装置１０に内蔵されるものには限定されない。温度センサ１５を外部周辺回路に配置し、温度センサ１５が出力する信号を、入出力ポートを通じて半導体装置１０に入力することとしてもよい。
【００２４】
ここで、近年、半導体装置において、大容量化、高性能化、低コスト化、及びユーザーエクスペリエンスの充実などの市場ニーズに応えるため、半導体プロセスは急速に加速している。また、半導体装置は、高性能かつ大電力のハードウェアモジュールを複数備えた大規模ＳｏＣ（System-on-a-chip）化しており、発熱対策への重要性は増している。しかしながら、発熱制御が必要になったとしても、例えば車載分野において、発熱制御を行うことで、運転者の安全に関わる機能が制限され、或いは、ユーザーエクスペリエンスが大幅に損なわれることは好ましくない。本実施形態は、そのような機能の性能は維持しつつ、細やかな発熱制御を行うことを可能とする仕組みを提供する。
【００２５】
図２は、半導体装置１０の発熱制御に関わる部分の機能ブロックを示す。半導体装置１０は、温度判定部２１、制御対象決定部２２、発熱制御部２３、及びアプリケーション割り付け部（Ａｐｐ割り付け部）２６の機能を有する。また、半導体装置１０は、ハードウェア構成として、図１に示される構成要素に加えて、クロックパルス生成器（ＣＰＧ：clock pulse generator）１７と、システムコントローラ（ＳＹＳＣ：system controller）１８とを有する。以下では、主に、ＣＰＵ１１が、ＣＰＵコア１１ａ〜１１ｄ（ＣＰＵ０〜３）の４つのＣＰＵコアを有する例について説明する。
【００２６】
半導体装置１０において、温度判定部２１、制御対象決定部２２、発熱制御部２３、及びＡｐｐ割り付け部２６の各機能は、例えばソフトウェアで実現される。別の言い方をすれば、温度判定部２１、制御対象決定部２２、発熱制御部２３、及びＡｐｐ割り付け部２６の各機能は、例えばＣＰＵ１１がＲＯＭ１２（図１を参照）から読み出したプログラムに従って動作することで実現される。例えば、制御対象決定部２２の機能は、ＯＳ（operating system）上で動作可能なドライバなどに組み込むことで実現され得る。半導体装置１０において、温度判定部２１、制御対象決定部２２、及び発熱制御部２３の部分は、制御対象であるＣＰＵ１１の温度を制御する温度制御装置を構成する。
【００２７】
温度判定部２１は、温度センサ１５に接続されており、温度センサ１５を用いて測定された温度を監視する。温度判定部２１は、温度センサ１５を用いて測定された温度に基づいて、ＣＰＵ１１に対する発熱制御を実施する状態か否かを判定する。温度判定部２１は、例えば温度センサ１５を用いて測定された温度を予め設定されたしきい値と比較し、温度がしきい値以上の場合、発熱制御を実施する状態であると判定する。
【００２８】
発熱制御部２３は、温度判定部２１において温度がしきい値以上であると判定された場合、ＣＰＵ１１に対して発熱制御を行い、ＣＰＵ１１における発熱量を制御する。発熱制御部２３は、発熱制御では、ＣＰＵ１１の動作条件を変更することで、ＣＰＵ１１における発熱量を制御する。
【００２９】
発熱制御部２３は、電源制御部２４とクロック制御部２５とを含む。電源制御部２４は、システムコントローラ１８を通じて、ＣＰＵ１１に含まれる複数のＣＰＵコア１１ａ〜１１ｄそれぞれに供給される電源を制御する。電源制御部２４は、４つのＣＰＵコア１１ａ〜１１ｄのうち、動作させるＣＰＵコアに対して電源供給を行い、動作させないＣＰＵコアの電源は遮断させる。
【００３０】
クロック制御部２５は、クロックパルス生成器１７を通じて、ＣＰＵコア１１ａ〜１１ｄのそれぞれに供給されるクロック信号の周波数を制御することで、ＣＰＵコア１１ａ〜１１ｄの動作周波数を制御する。クロック制御部２５は、４つのＣＰＵコア１１ａ〜１１ｄのうち、電源制御部２４が電源を供給するＣＰＵコアに対して、決定された動作周波数のクロック信号を供給する。電源制御部２４が電源供給を行うＣＰＵコアの数、及びクロック制御部２５がＣＰＵコアに対して供給するクロック信号の周波数を制御することで、ＣＰＵ１１における発熱状態が制御される。
【００３１】
温度判定部２１において発熱制御を実施する状態か否かを判定するためのしきい値は、複数段階のしきい値を含んでいてもよい。例えば、しきい値は、第１段階のしきい値と、それよりも温度が高い第２段階のしきい値とを含む。温度判定部２１は、測定された温度が、第１段階のしきい値よりも低い場合は、発熱制御が必要ない低温状態と判定する。温度判定部２１は、測定された温度が第１段階のしきい値以上で、かつ第２段階のしきい値よりも低い場合は、第１段階の発熱制御を実施する状態である中温状態と判定する。温度判定部２１は、測定された温度が第２段階のしきい値以上の場合は、第２段階の発熱制御を実施する状態である高温状態と判定する。なお、しきい値の段数は特に２段には限定されず、しきい値は、３以上の段階のしきい値を含んでいてもよい。
【００３２】
発熱制御部２３は、温度判定部２１が低温状態と判定した場合、ＣＰＵ１１の発熱制御を実施しない。発熱制御部２３は、温度判定部２１が中温状態と判定した場合、第１段階の発熱制御を実施する。発熱制御部２３は、第１段階の発熱制御では、例えばクロック制御部２５を用い、特定のＣＰＵコアの動作周波数を低下させることで、ＣＰＵ１１の発熱量を低減させる。発熱制御部２３は、温度判定部が高温状態と判定した場合、第２段階の発熱制御を実施する。第２段階の発熱制御は、第１段階の発熱制御にくらべて発熱量の削減量が大きい。発熱制御部２３は、第２段階の発熱制御では、例えば、第１段階の発熱制御に加えて、電源制御部２４を更に用いて、特定のＣＰＵコアへの電源供給を遮断することで、ＣＰＵ１１の発熱量を更に低減させる。なお、発熱制御部２３が行う発熱制御は、クロック制御及び電源制御には特に限定されない。発熱制御部２３は、例えばＣＰＵコアに供給される電圧の大きさを制御することでＣＰＵコアにおける消費電力を制御し、ＣＰＵ１１における発熱量を制御してもよい。
【００３３】
ここで、ＣＰＵ１１において実行されるアプリケーションは、機能の重要度などに応じて優先度が設定される。優先度は、例えばユースケースに応じて設定される。例えば、ＤＳＭなど、車両の運転において一時的に機能が停止したとしても大きな問題が生じないアプリケーションの優先度は低優先に設定される。一方、メータークラスター機能など、機能が停止すると車両の運転に支障がある機能のアプリケーションの優先度は高優先に設定される。
【００３４】
グループデータは、各優先度のアプリケーションと、その実行が割り当てられるＣＰＵコアとの対応関係を保持する。本実施形態において、グループデータ２８は、高優先グループ情報と低優先グループ情報とを含む。高優先グループ情報は、ＣＰＵ１１において高優先のアプリケーションの実行が割り当てられる高優先グループのＣＰＵコアを指定する情報を含む。低優先グループ情報は、ＣＰＵ１１において低優先のアプリケーションの実行が割り当てられる低優先グループのＣＰＵコアを指定する情報を含む。
【００３５】
制御対象決定部２２は、温度判定部２１が中温状態又は高温状態と判定した場合、グループデータ２８を用いて、発熱制御部２３が制御対象とするＣＰＵコアを決定する。制御対象決定部２２は、グループデータ２８において低優先グループのＣＰＵコアとして指定されているＣＰＵコアの少なくとも１つを、発熱制御の対象のＣＰＵコアとして決定する。発熱制御部２３は、制御対象として決定されたＣＰＵコアの動作周波数、又はＣＰＵコアへの電源供給の少なくとも一方を制御することで、ＣＰＵ１１における発熱量を低減させる。
【００３６】
Ａｐｐ割り付け部２６は、アプリケーションの実行時に、グループデータ２８に基づいて、アプリケーションの実行を割り当てるＣＰＵコアを決定する。Ａｐｐ割り付け部２６は、高優先のアプリケーションの実行を高優先グループのＣＰＵコアの何れかに割り当てる。一方、Ａｐｐ割り付け部２６は、低優先のアプリケーションの実行を、低優先グループのＣＰＵコアの何れかに割り当てる。このようにすることで、ＣＰＵ１１において、高優先及び低優先のアプリケーションを、それぞれのグループに対応するＣＰＵコアで実行させることができる。Ａｐｐ割り付け部２６の機能は、例えば半導体装置１０上で動作するＬｉｎｕｘ（登録商標）などのＯＳに搭載されている。
【００３７】
［グループデータ］
図３（ａ）は、グループデータ２８に含まれる高優先グループ情報の一例を示し、（ｂ）は、グループデータ２８に含まれる低優先グループ情報の一例を示す。図３（ａ）の例では、グループ種別「高優先」に対して、アプリケーションＡ、Ｂ、及びＣの３つのアプリケーションが対応付けて記憶されている。また、グループ種別「高優先」に対して、アプリケーションの実行が割り当てられるＣＰＵコアとして、ＣＰＵコア１１ａ（ＣＰＵ０）、及びＣＰＵコア１１ｂ（ＣＰＵ１）が記憶されている。
【００３８】
一方、図３（ｂ）の例では、グループ種別「低優先」に対して、アプリケーションＤ、Ｅ、及びＦの３つのアプリケーションが対応付けて記憶されている。また、グループ種別「低優先」に対して、アプリケーションの実行が割り当てられるＣＰＵコアとして、ＣＰＵコア１１ｃ（ＣＰＵ２）、及びＣＰＵコア１１ｄ（ＣＰＵ３）が記憶されている。
【００３９】
図４（ａ）は、高優先のアプリケーションとその実行が割り当てられるＣＰＵコアとの関係を示し、（ｂ）は、低優先のアプリケーションとその実行が割り当てられるＣＰＵコアとの関係を示す。グループデータ２８が、図３（ａ）に示される情報を高優先グループ情報として保持する場合、Ａｐｐ割り付け部２６は、アプリケーションＡ、Ｂ、又はＣが実行されるとき、その実行を、ＣＰＵコア１１ａ又は１１ｂに割り当てる（図４（ａ）を参照）。Ａｐｐ割り付け部２６は、ＣＰＵコア１１ｃ又は１１ｄには、アプリケーションＡ、Ｂ、又はＣの実行を割り当てない。
【００４０】
また、グループデータ２８が、図３（ｂ）に示される情報を低優先グループ情報として保持する場合、Ａｐｐ割り付け部２６は、アプリケーションＤ、Ｅ、又はＦが実行されるとき、その実行を、ＣＰＵコア１１ｃ又は１１ｄに割り当てる（図４（ｂ）を参照）。Ａｐｐ割り付け部２６は、ＣＰＵコア１１ａ又は１１ｂには、アプリケーションＤ、Ｅ、又はＦの実行を割り当てない。このように、グループデータ２８が、図３（ａ）に示される情報と図３（ｂ）に示される情報とを含む場合、高優先のアプリケーションと、低優先のアプリケーションとを、異なるＣＰＵコア群で実行させることができる。
【００４１】
［動作手順］
図５は、動作手順を示す。ユーザは、事前に、ＣＰＵコアとアプリケーションとを関連付けた高優先グループ情報及び低優先グループ情報をグループデータ２８として作成する。ユーザは、例えば半導体装置１０が搭載される車両の運転者の安全に関係する機能や、ユーザーエクスペリエンスに関する機能などの機能の重要度に基づいて、半導体装置１０上で実行されるアプリケーションを、高優先アプリケーションと低優先アプリケーションとに分割する。ユーザは、Ｓｅｃｕｒｅ  ＩＰ（Intellectual Property）やＦｕｎｃｔｉｏｎ  Ｓａｆｅｔｙに関するＩＰなど、ＩＰコアの重要性に基づいて、アプリケーションを、高優先アプリケーションと低優先アプリケーションとに分割してもよい。高優先アプリケーションと低優先アプリケーションとを判断する手法は、特に上記したものには限定されない。ユーザは、グループデータ２８において、それぞれ高優先アプリケーション及び低優先アプリケーションの実行が割り当てられるＣＰＵコアを指定する。
【００４２】
温度判定部２１は、温度センサ１５から温度情報を取得し、半導体装置１０の温度を監視する（ステップＡ１）。温度判定部２１は、温度が第１段階のしきい値（しきい値１）以上であるか否かを判定する（ステップＡ２）。しきい値１は例えばＴｊ＝９０℃に設定されており、温度判定部２１は、ステップＡ２では、温度センサ１５から取得した温度情報が９０℃以上であるか否かを判定する。
【００４３】
温度判定部２１は、温度がしきい値１以上の場合、温度が第２段階のしきい値（しきい値２）以上であるか否かを判定する（ステップＡ３）。しきい値２は例えばＴｊ＝１１０℃に設定されており、温度判定部２１は、ステップＡ３では、温度センサ１５から取得した温度情報が１１０℃以上であるか否かを判定する。温度判定部２１は、ステップＡ３で、温度がしきい値２よりも低いと判断した場合、半導体装置１０の温度は「中温」であると判定する。一方、温度判定部２１は、ステップＡ３で温度がしきい値２以上であると判定した場合、半導体装置１０の温度が「高温」であると判定する。
【００４４】
制御対象決定部２２は、温度判定部２１が「中温」又は「高温」と判定すると、グループデータ２８を参照し、低優先グループのＣＰＵコア、つまりグループ種別「低優先」（図３（ｂ）を参照）に対応付けられたＣＰＵコアの全部又は一部を、発熱制御の対象として決定する。発熱制御部２３は、温度判定部２１が「中温」と判断した場合、低優先グループのＣＰＵコアに対して第１段階の発熱制御（発熱制御１）を実施する（ステップＡ４）。例えば、低優先グループのＣＰＵコアがＣＰＵコア１１ｃ及び１１ｄである場合、発熱制御部２３は、ＣＰＵコア１１ｃ及び１１ｄに対して発熱制御１を実施する。発熱制御部２３は、例えば、発熱制御１では、クロック制御部２５を用い、低優先グループのＣＰＵコアに供給されるクロック周波数を低下させる。発熱制御１の実施後、処理はステップＡ１に戻り、温度監視が継続される。
【００４５】
発熱制御部２３は、ステップＡ３で温度判定部２１が「高温」と判定した場合、低優先グループのＣＰＵコアに対して第２段階の発熱制御（発熱制御２）を実施する（ステップＡ５）。発熱制御部２３は、例えば、発熱制御２では、電源制御部２４を用い、低優先グループのＣＰＵコアに供給される電源を制御する。発熱制御２の実施後、処理はステップＡ１に戻り、温度監視が継続される。
【００４６】
温度判定部２１は、ステップＡ２で温度がしきい値１より低いと判定した、半導体装置１０の温度が「低温（適温）」であると判定する。温度判定部２１が「低温」と判断した場合、発熱制御部２３は、発熱制御を実施しているか否かを判断する（ステップＡ６）。発熱制御部２３は、ステップＡ４の発熱制御１又はステップＡ５の発熱制御２を実施している場合、発熱制御を解除する（ステップＡ７）。発熱制御の解除後、処理はステップＡ１に戻り、温度監視が継続される。ステップＡ６で発熱制御が実施中ではないと判断された場合も、処理はステップＡ１に戻り、温度監視が継続される。
【００４７】
［動作例］
以下、動作例を説明する。図６は、動作例を示す。以下では、４つのＣＰＵコア１１ａ〜１１ｄは、それぞれ、５００ＭＨｚ、７５０ＭＨｚ、１．０ＧＨｚ、１．５ＧＨｚ、１．６ＧＨｚ、及び１．７ＧＨｚから選択された動作周波数で動作可能であるとする。また、各ＣＰＵコアの動作周波数は、デフォルトでは１．５ＧＨｚであるとする。さらに、グループデータ２８では、グループ種別「高優先」であるグループＡのグループ情報において、アプリケーションＡ、Ｂ、及びＣと、ＣＰＵコア１１ａ及び１１ｂとが対応付けて記憶されているものとする。また、グループ種別「低優先」であるグループＢのグループ情報において、アプリケーションＤ、Ｅ、及びＦと、ＣＰＵコア１１ｃ及び１１ｄとが対応付けて記憶されているものとする。
【００４８】
温度判定部２１は、ステップＡ２（図５を参照）において温度がしきい値１よりも低いと判定した場合、半導体装置１０は「低温」であると判定する。「低温」の状態では、発熱制御は実施されず、グループＡのアプリケーションの実行が割り当てられるＣＰＵコア１１ａ及び１１ｂは、１．５ＧＨｚで動作する。グループＢのアプリケーションの実行が割り当てられるＣＰＵコア１１ｃ及び１１ｄも、同様に１．５ＧＨｚで動作する。この場合、アプリケーションＡ〜Ｆのそれぞれは、ＣＰＵ１１において通常の処理能力で実行される。
【００４９】
温度判定部２１は、ステップＡ２で温度がしきい値１以上であると判定し、かつステップＡ３で温度がしきい値２より低いと判定した場合、半導体装置１０は「中温」であると判定する。発熱制御部２３は、ステップＡ４において発熱制御１を実施し、低優先のグループＢのＣＰＵコア１１ｃ及び１１ｄの動作周波数を、１．５ＧＨｚから７５０ＭＨｚに低下させる。この場合、アプリケーションＤ〜Ｆは、低速に制御されたＣＰＵコア１１ｃ及び１１ｄで実行される。しかしながら、アプリケーションＤ〜Ｆは、例えば運転者の安全やユーザーエクスペリエンスに関係しない低優先のアプリケーションであるため、動作速度が遅くなっても、大きな問題は発生しない。一方、グループＡのＣＰＵコア１１ａ及び１１ｂは動作周波数１．５ＧＨｚで動作し、高優先のアプリケーションＡ〜Ｃは、通常の処理能力で実行される。４つのＣＰＵコア１１ａ〜１１ｄのうち、グループＢのＣＰＵコア１１ｃ及び１１ｄが低速で動作することで、ＣＰＵ１１の発熱量を低減でき、温度が低下することが期待できる。
【００５０】
温度判定部２１は、ステップＡ３で温度がしきい値２以上であると判定した場合、半導体装置１０は「高温」である判定する。この場合、発熱制御部２３は、ステップＡ５において発熱制御２を実施し、低優先グループのＣＰＵコア１１ｃ及び１１ｄのうち、ＣＰＵコア１１ｄの電源を遮断する。このとき、ＣＰＵコア１１ｃは、低下した動作周波数７５０ＭＨｚで動作する。この場合、アプリケーションＤ〜Ｆは、ＣＰＵコア１１ｃのみで実行される。グループＢのＣＰＵコア１１ｃ及び１１ｄのうちの１つをシャットダウンすることで、高温状態で実施される発熱制御２において、中温状態で実施される発熱制御１に比べて、ＣＰＵ１１における発熱量をより低減することができる。高温状態においても、グループＡのＣＰＵコア１１ａ及び１１ｂは動作周波数１．５ＧＨｚで動作し、高優先のアプリケーションＡ〜Ｃは、通常の処理能力で実行される。
【００５１】
温度判定部２１が「低温」と判断した場合で、かつ発熱制御１又は発熱制御２が実施中の場合、発熱制御部２３は、ステップＡ７で、発熱制御を解除する。例えば、「中温」かた「低温」に変化した場合、発熱制御部２３は、ステップＡ７において、低優先のＣＰＵコア１１ｃ及び１１ｄの動作周波数を７５０ＭＨｚから１．５ＧＨｚに変更する。「高温」から「低温」に変換した場合、発熱制御部２３は、ステップＡ７において、ＣＰＵコア１１ｄへの電源供給を再開すると共に、ＣＰＵコア１１ｃ及び１１ｄの動作周波数を７５０ＭＨｚから１．５ＧＨｚに変更する。このようにすることで、アプリケーションＡ〜Ｆのそれぞれは、ＣＰＵ１１において通常の処理能力で実行される。
【００５２】
［まとめ］
本実施形態では、グループデータ２８は、高優先のアプリケーションの実行が割り当てられるＣＰＵコアを指定する情報を含む高優先グループ情報と、低優先のアプリケーションの実行が割り当てられるＣＰＵコアを指定する情報を含む低優先グループ情報とを含む。制御対象決定部２２は、グループデータ２８を参照し、低優先グループのＣＰＵコアを発熱制御の対象として決定する。発熱制御部２３は、温度判定部２１において温度がしきい値以上であると判定された場合、低優先グループのＣＰＵコアに対して発熱制御を行う。低優先グループのＣＰＵコアに対して発熱制御が実施されると、低優先グループのＣＰＵコアに実行が割り当てられる低優先のアプリケーションは機能が低下し、或いは機能が停止する。一方で、高優先グループのＣＰＵコアに対しては発熱制御が実施されないため、高優先グループのＣＰＵコアに実行が割り当てられる高優先のアプリケーションは、発熱制御の影響を受けない。従って、本実施形態では、高優先のアプリケーションの実行性能を保ちつつ、ＣＰＵの発熱量を低下させることができる。
【００５３】
例えば、グループデータ２８において、メータークラスター機能などの運転者の安全やユーザーエクスペリエンスに関係する機能のアプリケーションは高優先に設定される。また、グループデータ２８において、ＤＳＭ機能などの運転者の安全やユーザーエクスペリエンスに直接関係しない機能のアプリケーションの優先度は低優先に設定される。半導体装置１０の温度が上昇した場合、低優先のアプリケーションの実行が割り当てられるＣＰＵコアに対して発熱制御が実施されることで、ＤＳＭ機能の性能は低下し、或いは停止する。しかしながら、ＤＳＭ機能が停止したとしても、車両の運転には支障がないため、大きな問題は生じない。一方、本実施形態では、高優先のアプリケーションの実行が割り当てられるＣＰＵコアに対しては発熱制御が実施されないため、メータークラスター機能の性能は低下しない。このように、本実施形態では、メータークラスター機能などの重要な機能の性能低下を防ぎつつ、ＣＰＵ１１における発熱量を低下できる。
【００５４】
また、本実施形態では、温度判定部２１において複数段階のしきい値を設け、発熱制御部２３において複数段階の発熱制御を行う。温度が高くなるにつれて、発熱量の低下幅が大きい発熱制御を実施することで、半導体装置１０の温度を効果的に低下させることができる。
【００５５】
［実施形態２］
次いで、実施形態２を説明する。図７は、実施形態２に係る半導体装置を示す。本実施形態に係る半導体装置１０ａは、図２に示される実施形態１に係る半導体装置１０の構成要素に加えて、グループ範囲制御部２９を有する。グループ範囲制御部２９は、グループデータ２８と、ＣＰＵ１１で実行されている高優先のアプリケーションの数とに基づいて低優先グループのＣＰＵコアの数を制御する。別の言い方をすると、グループ範囲制御部２９は、グループデータ２８と、ＣＰＵ１１で実行されている高優先のアプリケーションの数とに基づいて、ＣＰＵ１１において発熱制御の対象となるＣＰＵコアを拡大し、又は縮小する。他の点は、実施形態１と同様でよい。
【００５６】
ここで、実施形態１では、例えば高優先のアプリケーションの実行がＣＰＵコア１１ａ及び１１ｂ（図２を参照）に割り当てられ、低優先のアプリケーションの実行がＣＰＵコア１１ｃ及び１１ｄに割り当てられた場合、低優先のアプリケーションの実行がＣＰＵコア１１ａ及び１１ｂに割り当てられることはなかった。従って、例えば、ＣＰＵコア１１ａ及び１１ｂで実行している高優先アプリケーションの数が１つで、ＣＰＵコアが１つアイドル状態であったとしても、そのアイドル状態のＣＰＵコアを低優先のアプリケーションの実行に使用することはできなかった。本実施形態は、そのような状況を改善するための手段を提供する。
【００５７】
ＣＰＵ使用情報３０は、各ＣＰＵコアに実行が割り当てられているアプリケーションの数を示す情報を保持する。各ＣＰＵコアに実行が割り当てられているアプリケーションの数とは、一般的なＯＳの機能で検出できる。グループ範囲制御部２９は、ＣＰＵ使用情報３０を参照して、ＣＰＵ１１で実行されている高優先のアプリケーションの数を取得する。グループ範囲制御部２９は、高優先グループのＣＰＵコアの数と、ＣＰＵ１１において実行されている高優先のアプリケーションの数とを比較し、比較の結果に基づいて、低優先グループのＣＰＵコアの数を制御する。
【００５８】
本実施形態において、例えば、デフォルト状態では、グループデータ２８において、高優先グループ情報で指定される高優先グループのＣＰＵコアと、低優先グループ情報で指定される低優先グループのＣＰＵコアとの少なくとも一部は重複している。グループ範囲制御部２９は、温度センサ１５から温度情報を取得する。グループ範囲制御部２９は、取得した温度情報が所定の温度以上の場合、低優先グループのＣＰＵコアの数の制御を行う。「所定の温度」は、温度判定部２１が判定に用いるしきい値１、又はしきい値２と等しくてもよい。その場合、発熱制御１又は発熱制御２の実施時に、低優先グループのＣＰＵコアの数が制御される。
【００５９】
グループ範囲制御部２９は、例えば、温度が所定の温度より低い状態から所定温度以上の状態に変化すると、ＣＰＵ１１に含まれるＣＰＵコアを、例えば所定の比率で高優先グループのＣＰＵコアと、低優先グループのＣＰＵコアとに排他的に分割する。グループ範囲制御部２９は、高優先グループのＣＰＵコアの数が、ＣＰＵ１１において実行されている高優先アプリケーションの数よりも多い場合、低優先グループのＣＰＵコアの数を増加させる。このとき、グループ範囲制御部２９は、グループデータ２８において、高優先グループ情報で指定される高優先グループのＣＰＵコアの少なくとも一部を、低優先グループ情報で指定される低優先グループのＣＰＵコアの一部と重複させることで、低優先グループのＣＰＵコアの数を増加させる。グループ範囲制御部２９は、低優先グループのＣＰＵコアを増加した後、高優先グループのＣＰＵコアの数が、実行されている高優先アプリケーションの数以下になると、低優先グループのＣＰＵコアの数を減少させる。
【００６０】
［動作手順］
以下、動作手順を説明する。なお、本実施形態における発熱制御に関わる動作手順は、図５に示される手順と同様でよい。図８は、グループ範囲の制御に関わる動作手順を示す。グループ範囲制御部２９は、温度センサ１５から温度情報を取得し、半導体装置１０の温度を監視する（ステップＢ１）。グループ範囲制御部２９は、温度が所定の温度以上であるか否かを判断する（ステップＢ２）。グループ範囲制御部２９は、ステップＢ２では、例えば温度がＴｊ＝９０℃以上であるか否かを判断する。あるいは、グループ範囲制御部２９は、温度がＴｊ＝１１０℃以上であるか否かを判断する。ステップＢ２の所定の温度が、ステップＡ２又はＡ３（図５を参照）の温度しきい値と同じ場合、グループ範囲制御部２９は、温度判定部２１から、温度判定の結果を受け取ってもよい。
【００６１】
グループ範囲制御部２９は、ステップＢ３で温度が所定の温度以上であると判断すると、ＣＰＵ使用情報３０を参照して、ＣＰＵ使用情報を取得する（ステップＢ３）。グループ範囲制御部２９は、ステップＢ３では、例えばＣＰＵ使用情報３０を参照して、ＣＰＵ１１において実行されている高優先アプリケーションの数を特定する。グループ範囲制御部２９は、ＣＰＵ１１において実行されている高優先アプリケーションの数と、高優先グループのＣＰＵコアの数とを比較し、高優先グループのＣＰＵコアの数が、高優先アプリケーションの数以下であるか否かを判断する（ステップＢ４）。高優先グループのＣＰＵコアの数が高優先アプリケーションの数以下の場合、高優先グループの各ＣＰＵコアには、少なくとも１つのアプリケーションの実行が割り当てられている。この場合、高優先グループのＣＰＵコアには、アプリケーションの実行が割り当てられていないＣＰＵコアは存在しない。一方、高優先グループのＣＰＵコアの数が高優先アプリケーションの数より多い場合、高優先グループのＣＰＵコアは、アプリケーションの実行が割り当てられていないＣＰＵコアが少なくとも１つ含む。
【００６２】
グループ範囲制御部２９は、ステップＢ４で高優先グループのＣＰＵコアの数が高優先アプリケーションの数以下ではないと判断した場合、グループデータ２８を修正し、低優先グループの範囲を拡大する（ステップＢ５）。グループ範囲制御部２９は、ステップＢ５では、高優先グループのＣＰＵコアの数と実行されている高優先アプリケーションの数との差に応じて、低優先グループの範囲を拡大してもよい。グループ範囲制御部２９は、ステップＢ５では、例えば、高優先グループのＣＰＵコアのうち、アプリケーションの実行が割り当てていないＣＰＵコアを、低優先グループ情報で指定するＣＰＵコアに追加することで、低優先グループの範囲を拡大する。このようにすることで、高優先グループに含まれる、高優先アプリケーションの実行が割り当てられていないＣＰＵコアに、低優先アプリケーションの実行を割り当てることができる。
【００６３】
グループ範囲制御部２９は、ステップＢ４で高優先グループのＣＰＵコアの数が高優先アプリケーションの数以下であると判断した場合、グループデータ２８を修正し、低優先グループの範囲を縮小する（ステップＢ６）。グループ範囲制御部２９は、ステップＢ６では、高優先グループのＣＰＵコアの数と実行されている高優先アプリケーションの数との差に応じて、低優先グループの範囲を拡大してもよい。グループ範囲制御部２９は、ステップＢ６では、例えば、ステップＢ５で低優先グループ情報に追加されたＣＰＵコアを低優先グループ情報から削除することで、低優先グループの範囲を縮小する。このようにすることで、高優先グループにおいて、高優先アプリケーションの実行が割り当てられるＣＰＵコアを確保することができる。
【００６４】
なお、ステップＢ５又はＢ６で、グループデータ２８が修正された場合、Ａｐｐ割り付け部２６は、修正後のグループデータ２８に従って、アプリケーション割り付けの変更を行う。例えば、ステップＢ５で低優先グループの範囲が拡大された場合、Ａｐｐ割り付け部２６は、低優先グループにおいて、１つのＣＰＵコアで２つのアプリケーションが実行されていた場合、２つのアプリケーションのうちの一方を、拡大されたＣＰＵコアで実行させる。反対に、ステップＢ６で低優先グループが縮小された場合、Ａｐｐ割り付け部２６は、縮小されるＣＰＵコアで実行されていたアプリケーションを、低優先グループにおいて利用可能なＣＰＵコアがある場合には、そのＣＰＵコアで実行させる。このような機能は、Ｌｉｎｕｘなどの一般的なＯＳが有する機能である。
【００６５】
［動作例］
以下、動作例を説明する。図９（ａ）は、グループデータ２８に含まれる高優先グループ情報を示し、（ｂ）はグループデータ２８に含まれる低優先グループ情報を示し、（ｃ）は、各グループにおけるアプリケーションとその実行が割り当てられるＣＰＵコアとの関係を示す。図９（ａ）の例では、グループ種別「高優先」に対して、アプリケーションＡ、Ｂ、及びＣの３つのアプリケーションが対応付けて記憶されており、それらアプリケーションの実行が割り当てられるＣＰＵコアとして、ＣＰＵコア１１ａ〜１１ｄ（ＣＰＵ０〜ＣＰＵ３）が記憶されている。
【００６６】
また、図９（ｂ）の例では、グループ種別「低優先」に対して、アプリケーションＤ、Ｅ、及びＦの３つのアプリケーションが対応付けて記憶されており、それらアプリケーションの実行が割り当てられるＣＰＵコアとして、ＣＰＵコア１１ａ〜１１ｄ（ＣＰＵ０〜ＣＰＵ３）が記憶されている。グループデータ２８は、例えばデフォルト状態において、つまり図８のステップＢ１で温度が所定温度に到達したと判断される前の状態において、図９（ａ）及び（ｂ）に示される高優先グループ情報及び低優先グループ情報を保持する。
【００６７】
上記の場合、図９（ｃ）に示されるように、グループＡ（高優先グループ）に属するアプリケーションＡ、Ｂ、及びＣの実行は、４つのＣＰＵコア１１ａ〜１１ｄ（ＣＰＵ０〜ＣＰＵ３）の何れかに割り当てられる。また、グループＢ（低優先グループ）に属するアプリケーションＤ、Ｅ、及びＦとの実行も、４つのＣＰＵコア１１ａ〜１１ｄ（ＣＰＵ０〜ＣＰＵ３）の何れかに割り当てられる。このように、デフォルト状態では、ＣＰＵ１１において、アプリケーションの実行が割り当てられるＣＰＵコアは高優先グループと低優先グループとで重複しており、各アプリケーションは、任意のＣＰＵコアで実行され得る。
【００６８】
図１０（ａ）〜（ｃ）は、それぞれ、各グループにおけるアプリケーションとその実行が割り当てられるＣＰＵコアとの関係を示す。例えば、ステップＢ２（図８を参照）において、半導体装置１０の温度が所定の温度よりも低い温度から所定の温度以上になったと判断されたとき、図１０（ａ）に示されるように、ＣＰＵ１１において、アプリケーションＡ、及びＤ〜Ｆが実施されていたとする。グループ範囲制御部２９は、温度が所定の温度より低い温度から所定の温度以上に変化した場合、暫定的に、４つのＣＰＵコア１１ａ〜１１ｄを２つのグループに分割し、ステップＢ４において、高優先グループのＣＰＵコアの数と実行されている高優先のアプリケーションの数とを比較してもよい。例えば、ＣＰＵコア１１ａ及び１１ｂが高優先のアプリケーションの実行に割り当てられ、ＣＰＵコア１１ｃ及び１１ｄが低優先のアプリケーションの実行に割り当てられたとする。その場合、高優先グループであるグループＡでは、割当て可能なＣＰＵコアの数は２で、実行中のアプリケーションの数は１となる。一方、低優先グループであるグループＢでは、割当て可能なＣＰＵコアの数は２で、実行中のアプリケーションの数は３となる。
【００６９】
上記の場合、ステップＢ４において、高優先グループのＣＰＵコアの数は実行中の高優先のアプリケーションの数以下ではないと判断され、グループ範囲制御部２９は、ステップＢ５において、低優先グループの範囲を拡大する。グループ範囲制御部２９は、例えば、図３（ｂ）に示される低優先グループ情報の「割当てＣＰＵ」に、高優先グループにおいてアプリケーションの実行が割り当てられていなかったＣＰＵコア１１ｂ（ＣＰＵ１）を追加する。この場合、図１０（ｂ）に示されるように、低優先グループのＣＰＵコアの数は３に拡大される。Ａｐｐ割り付け部２６は、低優先グループ情報が変更されると、例えば、ＣＰＵコア１１ｃ又は１１ｄに割り当てられていたアプリケーションＤの実行を、ＣＰＵコア１１ｂに割り当てる。このようにすることで、高優先グループにおいてアイドル状態であったＣＰＵコア１１ｂに、低優先のアプリケーションの実行を割り当てることができ、ＣＰＵコアを有効利用できる。
【００７０】
また、本実施形態において、発熱制御は低優先グループのＣＰＵコアに対して実施されるため、図１０（ａ）に示される状態では、高優先グループの２つのＣＰＵコアのうちの一方が使用されていなくても、そのＣＰＵコアを発熱制御の対象にすることができない。これに対し、図１０（ｂ）に示されるように低優先グループの範囲を拡大すると、高優先グループに属するものの、アプリケーションの実行が割り当てられていないＣＰＵコア１１ｂを発熱制御の対象とすることができる。例えば、発熱制御部２３の電源制御部２４が、ＣＰＵコア１１ｂの電源を遮断することで、ＣＰＵ１１における発熱量を低下させることができる。
【００７１】
仮に、図１０（ａ）において、高優先のアプリケーションが１つも実行されていなかった場合、高優先グループであるグループＡでは、割当て可能なＣＰＵコアの数は２で、実行中のアプリケーションの数は０となる。一方、低優先グループであるグループＢでは、割当て可能なＣＰＵコアの数は２で、実行中のアプリケーションの数は３となる。その場合、グループ範囲制御部２９は、ステップＢ５において、低優先グループのＣＰＵコアを２つ拡大してもよい。グループ範囲制御部２９は、例えば、図３（ｂ）に示される低優先グループ情報の「割当てＣＰＵ」に、ＣＰＵコア１１ａ及び１１ｂ（ＣＰＵ０及び１）を追加する。この場合、図１０（ｃ）に示されるように、低優先グループのＣＰＵコアの数は４つに増加し、Ａｐｐ割り付け部２６は、４つのＣＰＵコア１１ａ〜１１ｄに、任意に低優先のアプリケーションの実行を割り当てることができる。
【００７２】
なお、本実施形態において、発熱制御部２３は、低優先グループのＣＰＵコアに対して発熱制御を実施するため、高優先グループと低優先グループとで重複するＣＰＵコアが発熱制御の対象となった場合に、そのＣＰＵコアにおいて高優先のアプリケーションが実行されている可能性がある。そのような場合、Ａｐｐ割り付け部２６は、発熱制御の対象となったＣＰＵコアで実行されていた高優先のアプリケーションを、高優先グループの他のＣＰＵコアコアで実行させればよい。発熱制御部２３は、高優先グループと低優先グループとで重複するＣＰＵコアがある場合には、低優先グループのＣＰＵコアのうち、高優先のアプリケーションが実行されていないＣＰＵコアに対して優先的に発熱制御を実施してもよい。
【００７３】
［まとめ］
本実施形態では、グループ範囲制御部２９は、高優先グループのＣＰＵコアの数が、実行されている高優先のアプリケーションの数より多い場合、低優先グループで利用可能なＣＰＵコアを拡大する。このようにすることで、高優先グループにおいてアプリケーションの実行が割り当てられていないＣＰＵコアを、低優先のアプリケーションの実行に利用することができる。また、本実施形態では、高優先グループにおいて使用されていないＣＰＵコアが低優先グループにも属することで、そのＣＰＵコアを、発熱制御の対象にすることができる。高優先グループにおけるアイドル状態のＣＰＵコアに対して発熱制御を実施することで、発熱量の削減幅を増やすことができる。他の効果は、実施形態１と同様である。
【００７４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００７５】
１０：半導体装置
１１ａ〜１１ｄ：ＣＰＵコア
１２：ＲＯＭ
１３：ＲＡＭ
１４：周辺回路
１５：温度センサ
１６：バス
１７：クロックパルス生成器
１８：システムコントローラ
２１：温度判定部
２２：制御対象決定部
２３：発熱制御部
２４：電源制御部
２５：クロック制御部
２６：アプリケーション割り付け部
２８：グループデータ
２９：グループ範囲制御部
３０：ＣＰＵ使用情報
【図１】
2020106918.tif 000003
【図２】
2020106918.tif 000004
【図３】
2020106918.tif 000005
【図４】
2020106918.tif 000006
【図５】
2020106918.tif 000007
【図６】
2020106918.tif 000008
【図７】
2020106918.tif 000009
【図８】
2020106918.tif 000010
【図９】
2020106918.tif 000011
【図１０】
2020106918.tif 000012