(57)【特許請求の範囲】
【請求項１】
動作状態と複数の待機状態レベルの待機状態とを取ることができる半導体装置であって、
複数のタスクを実行可能なCPUと、
前記CPUが受信すると、前記待機状態から前記動作状態に遷移する割り込み信号を発する割り込み制御回路と、
前記CPUの制御の下、複数のハードウエア回路の各々の動作を制御して前記複数のハードウエア回路の消費電力を制御する電力制御回路と、
を備え、
前記CPUは、
前記待機状態に遷移する直前に実行していた１以上のタスクについて設定された許可できる待機状態レベルから選択された最も浅いレベルである第１の待機状態レベルに対応する第１の復帰時間と、前記実行していた１以上のタスクについて設定された許可できる復帰時間から選択された最短の第１の許可できる復帰時間との比較を行い、
前記第１の復帰時間が前記第１の許可できる復帰時間以下と判定された場合、前記待機状態の待機状態レベルを前記第１の待機状態レベルとし、前記第１の復帰時間が前記第１の許可できる復帰時間よりも長いと判定された場合、前記待機状態の待機状態レベルを、前記第１の復帰時間よりも短い復帰時間を有する第２の待機状態レベルになるように変更して、前記電力制御回路を制御する、
半導体装置。
【請求項２】
前記第１の待機状態レベルは、前記複数のタスクの各々について規定された前記待機状態時に必要なハードウエア回路についての情報に基づいて、決定される請求項１に記載の半導体装置。
【請求項３】
前記複数のタスクの各々について規定された前記待機状態時に必要なハードウエア回路についての情報を格納した第１の記憶部を有し、
前記CPUは、前記第１の記憶部に記憶された前記待機状態時に必要なハードウエア回路についての情報に基づいて、前記実行していたタスクについての前記第１の待機状態レベルを決定する請求項２に記載の半導体装置。
【請求項４】
前記複数のタスクの各々についての、前記許可できる復帰時間の情報及び前記許可できる待機状態レベルの情報を含む第１のテーブルを格納した第２の記憶部をさらに備え、
前記CPUは、
前記許可できる待機状態レベルの情報と前記許可できる復帰時間の情報を第１のテーブルから取得し、前記許可できる待機状態レベルのうち最も浅いレベルである第１の待機状態レベルに対応する復帰時間を前記第１の復帰時間とし、前記許可できる復帰時間の中で最短の許可できる復帰時間を前記第１の許可できる復帰時間として、前記比較を行う請求項１から３のいずれか１つに記載の半導体装置。
【請求項５】
前記第２の記憶部は、前記複数のタスクの少なくとも１つについて、前記許可できる待機状態レベルと前記許可できる復帰時間との情報を、複数記憶し、
前記CPUは、前記複数の前記許可できる待機状態レベルと前記許可できる復帰時間との情報のうち、指定された１つの前記許可できる待機状態と前記許可できる復帰時間を取得する請求項４に記載の半導体装置。
【請求項６】
前記複数の待機状態レベルの各々についての復帰時間を記憶した第３の記憶部を有し、
前記第１の復帰時間は、前記第１の待機状態レベルに基づいて、前記第３の記憶部を参照して、決定される請求項１から５のいずれか１つに記載の半導体装置。
【請求項７】
複数のタスクを実行可能なCPUと、前記CPUの制御の下、複数のハードウエア回路の各々の動作を制御して前記複数のハードウエア回路の消費電力を制御する電力制御回路と、を有し、動作状態と複数の待機状態レベルの待機状態とを取ることができる半導体装置の消費電力を制御する電力制御方法であって、
前記CPUが、
前記待機状態に遷移する直前に実行していた１以上のタスクについて設定された許可できる待機状態レベルから選択された最も浅いレベルである第１の待機状態レベルに対応する第１の復帰時間と、前記実行していた１以上のタスクについて設定された許可できる復帰時間から選択された最短の第１の許可できる復帰時間との比較を行い、
前記第１の復帰時間が前記第１の許可できる復帰時間以下と判定された場合、前記待機状態の待機状態レベルを前記第１の待機状態レベルとし、前記第１の復帰時間が前記第１の許可できる復帰時間よりも長いと判定された場合、前記待機状態の待機状態レベルを、前記第１の復帰時間よりも短い復帰時間を有する第２の待機状態レベルになるように変更して、前記電力制御回路を制御する、
電力制御方法。
【請求項８】
複数のタスクを実行可能なCPUと、前記CPUの制御の下、複数のハードウエア回路の各々の動作を制御して前記複数のハードウエア回路の消費電力を制御する電力制御回路と、を有し、動作状態と複数の待機状態レベルの待機状態とを取ることができる半導体装置の消費電力を制御する電力制御方法を実行するプログラムであって、
前記待機状態に遷移する直前に実行していた１以上のタスクについて設定された許可できる待機状態レベルから選択された最も浅いレベルである第１の待機状態レベルに対応する第１の復帰時間と、前記実行していた１以上のタスクについて設定された許可できる復帰時間から選択された最短の第１の許可できる復帰時間との比較を行う機能と、
前記第１の復帰時間が前記第１の許可できる復帰時間以下と判定された場合、前記待機状態の待機状態レベルを前記第１の待機状態レベルとし、前記第１の復帰時間が前記第１の許可できる復帰時間よりも長いと判定された場合、前記待機状態の待機状態レベルを、前記第１の復帰時間よりも短い復帰時間を有する第２の待機状態レベルになるように変更して、前記電力制御回路を制御する機能と、
を前記CPUに実現させるためのプログラム。
【請求項９】
前記第１の待機状態レベルは、前記複数のタスクの各々について規定された前記待機状態時に必要なハードウエア回路についての情報に基づいて、決定される請求項８に記載のプログラム。
【請求項１０】
前記半導体装置は、
前記複数のタスクの各々について規定された前記待機状態時に必要なハードウエア回路についての情報を格納した第１の記憶部をさらに備え、
前記比較を行う機能では、前記第１の記憶部に記憶された前記待機状態時に必要なハードウエア回路についての情報に基づいて、前記実行していたタスクについての前記第１の待機状態レベルを決定する請求項９に記載のプログラム。
【請求項１１】
前記半導体装置は、
前記複数のタスクの各々についての、前記許可できる復帰時間の情報及び前記許可できる待機状態レベルの情報を含む第１のテーブルを格納した第２の記憶部をさらに備え、
前記比較を行う機能では、
前記許可できる待機状態レベルの情報と前記許可できる復帰時間の情報を第１のテーブルから取得し、前記許可できる待機状態レベルのうち最も浅いレベルである第１の待機状態レベルに対応する復帰時間を前記第１の復帰時間とし、前記許可できる復帰時間の中で最短の許可できる復帰時間を前記第１の許可できる復帰時間として、前記比較を行う請求項８から１０のいずれか１つに記載のプログラム。
【請求項１２】
前記第２の記憶部は、前記複数のタスクの少なくとも１つについて、前記許可できる待機状態レベルと前記許可できる復帰時間との情報を、複数記憶し、
前記比較を行う機能では、前記複数の前記許可できる待機状態レベルと前記許可できる復帰時間との情報のうち、指定された１つの前記許可できる待機状態と前記許可できる復帰時間を取得する請求項１１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体装置、電力制御方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、情報処理装置に搭載される半導体装置において、省電力のために電力管理方法が採用されている。電力管理では、１又は２以上のハードウエア回路（以下、ハードウエアという）を含む半導体装置の動作状態を待機状態へ遷移させることにより、電力消費を低減させる電力制御が行われる。
【０００３】
一般に、半導体装置の動作状態は、中央処理装置（以下、CPUという）においてソフトウエアプログラム（以下、プログラムという）が実行されている状態をいい、待機状態は、CPU等のハードウエアの動作が停止し、割り込み信号を待つ状態をいう。CPUにおいてプログラムの実行中に、例えば割り込み信号の入力待ちになると、半導体装置は待機状態に遷移する。そして、割り込み信号が発生すると、動作を停止していたハードウエアが起床され、半導体装置は、待機状態から動作状態へ遷移する。  
待機状態にあるときに割り込み信号が発生して、半導体装置が待機状態から動作状態への遷移に要する時間が、復帰時間である。
【０００４】
近年は、複数の待機状態を有し、待機状態の種類に応じて、停止させるハードウエアの数を異ならせて、より省電力を実現する電力管理手法も提案されている。そのような電力管理方法の場合、待機状態の中には、停止するハードウエアの数が少ない待機状態すなわち浅い待機状態もあれば、停止するハードウエアの数が多い待機状態すなわち深い待機状態もある。一般に、上述した復帰時間は、浅い待機状態から動作状態への復帰時間よりも深い待機状態から動作状態への復帰時間の方が長い。
【０００５】
また、CPUにおいて実行されるプログラム中には複数の処理（以下、タスクという）があり、複数のタスクは、互いに処理内容が異なる。そのため、複数のタスクは、遷移可能な待機状態の深度及び許容できる復帰時間の長さにおいて、互いに異なっている。復帰時間が許容できないほど長い場合、そのタスクは、割り込み信号に対応した処理を実行できない。
【０００６】
省電力のためには、可能な限り消費電力の低いすなわち深い待機状態に遷移した方が好ましいが、上述したように、深い待機状態ほど、待機状態から動作状態への復帰時間が長くなるという関係がある。
【０００７】
そのため、複数のタスクが実行される場合、システムの破綻を生じないように、すなわち、再開されたタスクの実行時にハードウエアが確実に動作できるように、遷移する待機状態は、復帰時間の短い、安全な深度の待機状態に設定される。
【０００８】
しかし、プログラムの動き等によって、実行中のタスクが増えたり減少したりする場合、実行中のタスクによっては、遷移する待機状態の復帰時間が長くてもよい場合がある。そのような場合であっても、遷移する待機状態は、設定された復帰時間の短い待機状態となる。そのため、実行中のタスクによっては、システムの破綻が生じないにも拘わらず、遷移する待機状態は、より深い待機状態にされないという問題がある。
【０００９】
また、割り込み信号の種類と待機状態の深度を関連付けることも考えられるが、待機状態時に停止しているハードウエアが異なると復帰時間が長くなったりする場合があるため、割り込み信号の種類に応じて復帰時間を定めると、システムの破綻が生じる虞がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１３−９２８３９号公報
【特許文献２】特開２０１４−２０６９９６号公報
【特許文献３】特許第４６６５６９７号公報
【特許文献４】特許第４１３６２２８号公報
【特許文献５】米国特許第８６３１２５７号明細書
【特許文献６】米国特許第８５０４８５５号明細書
【特許文献７】米国特許第８１８１０４７号明細書
【特許文献８】米国特許第８１１２６５１号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
そこで、実施形態は、実行中のタスクに応じて、可能な限り深い待機状態になるように電力制御を行う半導体装置、電力制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
実施形態の半導体装置は、動作状態と複数の待機状態レベルの待機状態とを取ることができる半導体装置であって、複数のタスクを実行可能なCPUと、前記CPUが受信すると、前記待機状態から前記動作状態に遷移する割り込み信号を発する割り込み制御回路と、前記CPUの制御の下、複数のハードウエア回路の各々の動作を制御して前記複数のハードウエア回路の消費電力を制御する電力制御回路と、を備え、前記CPUは、前記待機状態に遷移する直前に実行していた１以上のタスクについて設定された許可できる待機状態レベルから選択された最も浅いレベルである第１の待機状態レベルに対応する第１の復帰時間と、前記実行していた１以上のタスクについて設定された許可できる復帰時間から選択された最短の第１の許可できる復帰時間との比較を行い、前記第１の復帰時間が前記第１の許可できる復帰時間以下と判定された場合、前記待機状態の待機状態レベルを前記第１の待機状態レベルとし、前記第１の復帰時間が前記第１の許可できる復帰時間よりも長いと判定された場合、前記待機状態の待機状態レベルを、前記第１の復帰時間よりも短い復帰時間を有する第２の待機状態レベルになるように変更して、前記電力制御回路を制御する。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係わる半導体装置１のブロック図である。
【図２】実施形態に係わる待機状態遷移情報テーブルの例を示す図である。
【図３】実施形態に係わる、待機状態毎の、停止するハードウエアの情報を記憶する待機状態別停止ハードウエアテーブルの例を示す図である
【図４】実施形態に係わるタスク遷移情報テーブルの例を示す図である。
【図５】実施形態に係わる、タスク毎の、待機状態時に必要なハードウエアの情報を記憶するタスク別必要ハードウエアテーブルの例を示す図である。
【図６】実施形態に係わる、半導体装置１のCPU１１において複数のタスクが実行中に、割り込み信号の入力待ちとなって、ハードウエアが待機状態に遷移するときの電力制御プログラムPMPの処理のフローチャートである。
【図７】実施形態の変形例１に係わる、待機状態遷移情報テーブルTBL1と待機状態別停止ハードウエアテーブルTBL11を一つにした待機状態遷移情報テーブルTBL12の例を示す図である。
【図８】実施形態の変形例２に係わる、タスク遷移情報テーブルTBL2とタスク別必要ハードウエアテーブルTBL21を一つにしたタスク遷移情報テーブルTBL22の例を示す図である。
【図９】実施形態の変形例３に関わるタスク遷移情報テーブルTBL23の例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して実施形態を説明する。
（構成）
図１は、本実施形態に係わる半導体装置のブロック図である。
【００１５】
半導体装置１は、CPU１１、ROM１２、RAM１３、割り込み制御回路１４と、センサ１５、アンテナ１６及びハードウエア（H/W）制御回路１７を有している。CPU１１、ROM１２、RAM１３、割り込み制御回路１４と、センサ１５、アンテナ１６及びハードウエア制御回路１７は、バス１８を介して互いに接続されている。
【００１６】
半導体装置１は、例えば、スマートフォン、パーソナルコンピュータ、各種モバイル機器などの情報処理装置に搭載され、所望の機能の実現に応じたプログラムを実行する。
【００１７】
CPU１１は、ROM１２に記憶されている複数のタスクを読み出して、RAM１３へ展開して実行することにより、所定の機能のための処理を実行する。すなわち、CPU１１は、複数のタスクを実行可能である。タスクは、例えば、センサの出力に応じた処理、通信処理等である。CPU１１は、バス１８を介して、CPU１１以外の他のハードウエア回路（以下、単にハードウエアともいう）とのデータの送受信を行う。よって、情報処理装置に搭載された半導体装置１が動作状態にあるとき、実現される機能に応じて、CPU１１において実行されるタスクは変化する。
【００１８】
ROM１２には、上述した複数のタスクだけでなく、後述する電力制御プログラム及び後述する各種情報を格納したテーブルの情報も記憶されている。  
割り込み制御回路１４は、外部等からの割り込み信号を受信する回路である。
【００１９】
センサ１５は、加速度を検知するためのセンサ及びそのための回路であり、複数のセンサを有していてもよい。  
アンテナ１６は、無線通信用のアンテナであり、例えばWiFi通信のためのアンテナ及びそのための回路である。
【００２０】
CPU１１は、センサ１５の検知データを取得したり、アンテナ１３との間でデータの送受信を行うことができる。  
電力制御回路としてのハードウエア制御回路１７は、半導体装置１内のハードウエア制御回路１７以外のハードウエアの起動及び停止をさせるための制御を行う回路である。ハードウエア制御回路１７は、CPU１１からのコマンド信号に基づいてハードウエアの起動及び停止を行う。
【００２１】
具体的には、CPU１１は、バス１８を介して電力制御コマンド信号をハードウエア制御回路１７へ送信する。ハードウエア制御回路１７は、バス１８を介して、受信した電力制御コマンド信号に応じた電力制御信号を、電力制御を行うハードウエアへ供給する。各ハードウエアは、受信した電力制御信号に応じて、起動及び停止する。
【００２２】
図１の場合、電力制御の対象となるハードウエアは、半導体装置１内の、割り込み制御回路１４以外のハードウエアである。ここでは、CPU１１、ROM１２、RAM１３、センサ１５、及びアンテナ１６が、電力制御の対象となるハードウエアである。
【００２３】
ハードウエアの起動及び停止は、各ハードウエアへの電源の供給と停止を制御するパワーゲーティング、各ハードウエアへのクロック信号の供給と停止を制御するクロックゲーティング、等により行われる。パワーゲーティング等のための電力制御信号が、ハードウエア制御回路１７から各ハードウエアへ供給される。すなわち、ハードウエア制御回路１７は、複数のハードウエア回路の各々の動作を、パワーゲーティング、クロックゲーティングなどにより制御して複数のハードウエア回路の消費電力を制御する電力制御回路を構成する。
【００２４】
図１に示す半導体装置１は、スマートフォンなどの情報処理装置に搭載されて、ユーザにより指定された機能に対応する各種タスクを実行するが、タスクの実行中に割り込み信号の入力待ちになると、半導体装置１は、電力管理機能により、省電力のための待機状態に遷移し、待機状態に遷移後、割り込み制御回路１４からの割り込み信号を受信すると、待機状態から動作状態に遷移する。待機状態には、複数の待機状態レベルがあり、半導体装置１は、動作状態と複数の待機状態レベルの待機状態とを取ることができる装置である。
【００２５】
半導体装置１の電力管理は、CPU１１がROM１２に格納された電力制御プログラムを読み出して実行することにより行われる。  
はじめに、その電力制御プログラムPMPが実行されるときに用いられる各種テーブルについて説明する。CPU１１は、待機状態遷移情報テーブルTBL1とタスク遷移情報テーブルTBL2をROM１２から読み出してRAM１３に展開する。
【００２６】
なお、本実施の形態では、待機状態遷移情報テーブルTBL1とタスク遷移情報テーブルTBL2は、ROM１２に格納されているが、半導体装置１の外部装置に格納しておき、通信により、CPU１１が、待機状態遷移情報テーブルTBL1とタスク遷移情報テーブルTBL2の情報を取得するようにしてもよい。
【００２７】
図２は、待機状態遷移情報テーブルの例を示す図である。  
待機状態遷移情報テーブルTBL1は、待機状態と復帰時間の情報を格納する。なお、待機状態遷移情報テーブルTBL1における、待機状態毎の、停止するハードウエアに応じた復帰時間の情報は、待機状態毎の停止するハードウエアの情報（後述する待機状態別停止ハードウエアテーブルTBL11）を参照して、CPU１１により決定される。すなわち、待機状態レベルに対応する復帰時間は、各待機状態レベルにおける、停止するハードウエア回路の情報に基づいて決定される。
【００２８】
待機状態A,B,C,Dの中では、待機状態Aの深度が待機状態B,C,Dの深度よりも浅く、待機状態Dの深度が待機状態A,B,Cの深度よりも深い。アルファベットは、待機状態の深度のレベルすなわち待機状態レベルを示し、待機状態遷移情報テーブルTBL1の上から下に向かって（アルファベット順に）待機状態の深度は深くなっている。
上述したように待機状態遷移情報テーブルTBL1における復帰時間は、待機状態別停止ハードウエアテーブルTBL11に基づいて決定される。
【００２９】
図３は、待機状態毎の、停止するハードウエアの情報を記憶する待機状態別停止ハードウエアテーブルの例を示す図である。  
図３に示す待機状態別停止ハードウエアテーブルTBL11は、ROM１２に格納される。CPU１１は、待機状態別停止ハードウエアテーブルTBL11をROM１２から読み出してRAM１３に展開する。待機状態別停止ハードウエアテーブルTBL11には、待機状態毎に、停止するハードウエアの情報が格納されている。
【００３０】
停止するハードウエアには、CPU１１が含まれ、さらにCPU11以外のROM１２，RAM１３，センサ１５、アンテナ１６等のハードウエアも含まれる。図３におけるハードウエア（H/W）１，２，３，４，・・・は、CPU11以外のROM１２等のハードウエアである。図３では、停止するハードウエアを○で示し、停止しないハードウエアを×で示している。
【００３１】
停止するハードウエアとして、CPU１１とその他のハードウエアが、待機状態別停止ハードウエアテーブルTBL11に設定される。図３の場合、待機状態Aでは、CPU１１は停止するが、ハードウエア１、２，３は、停止しないことを示しており、待機状態Bでは、CPU１１とハードウエア１は停止するが、ハードウエア２，３は、停止しないことを示しており、待機状態Cでは、CPU１１とハードウエア１、２は停止するが、ハードウエア３は、停止しないことを示しており、待機状態Dでは、CPU１１とハードウエア１、２、３は停止することを示している。
【００３２】
待機状態毎の復帰時間は、停止される１又は２以上のハードウエアの仕様等に応じて、予め定まる。すなわち、停止された１又は２以上のハードウエアが起床されて、起床された１又は２以上のハードウエアが正常動作状態になるまでの時間に基づいて決定される。
【００３３】
よって、CPU１１は、ROM１２に記録された図３に示す待機状態別停止ハードウエアテーブルTBL11を参照して、待機状態毎の、復帰時間を決定あるいは算出する。すなわち、半導体装置１は、複数の待機状態レベルの各々についての、停止するハードウエア回路の情報を記憶した待機状態別停止ハードウエアテーブルTBL11を有し、待機状態に遷移する直前に実行していたタスクの待機状態レベルに対応する復帰時間は、その待機状態レベルに基づいて、待機状態別停止ハードウエアテーブルTBL11を参照して、決定される。
【００３４】
なお、CPU１１は、ROM１２に図３に示す待機状態別停止ハードウエアテーブルTBL11を格納しなくても、待機状態に応じた決定された復帰時間が予め設定された、図２に示すような待機状態遷移情報テーブルTBL1だけをROM１２に格納するようにしてもよい。
【００３５】
さらになお、待機状態別停止ハードウエアテーブルTBL11を、外部のサーバ等から通信により、CPU１１が取得するようにしてもよい。  
図４は、タスク遷移情報テーブルの例を示す図である。
【００３６】
タスク遷移情報テーブルTBL2は、電力制御プログラムPMPの制御対象となるタスクの遷移情報を格納する。  
タスク遷移情報テーブルTBL2には、CPU１１において実行可能な全ての又は一部のタスクの遷移情報が格納される。タスク遷移情報テーブルTBL2には、電力制御プログラムPMPの制御対象となる１又は２以上のタスクの遷移情報が格納される。
【００３７】
タスク遷移情報テーブルTBL2は、タスク、許可できる待機状態と、許可できる復帰時間の情報を格納する。なお、タスク遷移情報テーブルTBL2における、タスク毎の、許可できる待機状態の情報は、タスク毎の待機状態時に必要なハードウエアの情報（後述するタスク別必要ハードウエアテーブルTBL21）を参照して、CPU１１により決定される。
【００３８】
タスク毎に、待機状態時に必要なハードウエアは、予め決まっている。例えば、あるタスクは、待機状態時には、アンテナ１６だけは動作していなければならないとすれば、アンテナ１６は、そのタスクの待機状態時に動作していなければならないハードウエア、すなわち待機状態時に必要なハードウエアである。
【００３９】
従って、CPU１１は、タスク毎の待機状態時に必要なハードウエアの情報に基づいて、許可できる待機状態を決定することができる。すなわち、半導体装置１は、複数のタスクの各々についての、許可できる復帰時間の情報を格納した記憶部としてのタスク遷移情報テーブルTBL2を有し、待機状態に遷移する直前に実行していたタスクの待機状態レベルは、複数のタスクの各々について規定された待機状態時に必要なハードウエア回路についての情報に基づいて、決定される。
【００４０】
また、許可できる復帰時間も、タスク毎に、当該タスクの処理内容に応じて予め決まっている。例えば、あるタスクは、割り込み信号を受信してから所定の時間以内に、所定の処理を実行しなければならないとすれば、許可できるすなわち許容できる復帰時間は、必然的に決定される。
【００４１】
図４の場合、タスク１は、許可できる待機状態は待機状態Cであり、許可できる復帰時間が５msecであることを示しており、タスク２は、許可できる待機状態は待機状態Cであり、許可できる復帰時間が３msecであることを示しており、タスク３は、許可できる待機状態は待機状態Dであり、許可できる復帰時間が７msecであることを示しており、タスク４は、許可できる待機状態は待機状態Cであり、許可できる復帰時間が１０msecであることを示している。
【００４２】
例えば、タスク２に関しては、所定の仕様から、許可できる復帰時間は３msecであることが設定される。すなわち、タスク２の処理についての仕様から、半導体装置１が待機状態から復帰状態に戻るのに３msec以内でなければならないので、タスク２についての許可できる復帰時間は、３msecと設定される。
【００４３】
このようにして、各タスクについて、許可できる待機状態すなわち待機状態の深度と、許可できる復帰時間とが、タスク遷移情報テーブルTBL2に格納あるいは決定されて設定される。
【００４４】
上述したように、CPU１１は、タスク遷移情報テーブルTBL2におけるタスク毎の許可できる待機状態を、待機状態時に必要なハードウエアの情報を参照して決定する。待機状態時に必要なハードウエアの情報は、タスク別必要ハードウエアテーブルに格納されている。
【００４５】
図５は、タスク毎の、待機状態時に動作していることが必要なハードウエアの情報を記憶するタスク別必要ハードウエアテーブルの例を示す図である。  
図５に示すタスク別必要ハードウエアテーブルTBL21は、ROM１２に格納される。CPU１１は、タスク別必要ハードウエアテーブルTBL21をROM１２から読み出してRAM１３に展開する。
【００４６】
図５に示すタスク別必要ハードウエアテーブルTBL21は、タスクと、待機状態時に動作していることが必要なハードウエアとの情報を格納する。そして、タスク別必要ハードウエアテーブルTBL21には、タスク毎に、待機状態時に動作していることが必要なハードウエアの情報が格納されている。図５では、待機状態時に動作していることが必要なハードウエアを○で示し、待機状態時に動作していることが必要でないハードウエアを×で示している。
【００４７】
図５の場合、タスク１と２は、待機状態時に動作していることが必要なハードウエアはハードウエア３であり、タスク３は、待機状態時に動作していることが必要なハードウエアはCPU１１とハードウエア１、２及び３ではないことを示しており、タスク４は、待機状態時に動作していることが必要なハードウエアはハードウエア３であることを示している。
【００４８】
CPU１１は、図５に示すタスク別必要ハードウエアテーブルTBL21に基づいて、各タスクについて、待機状態時に動作していることが必要なハードウエアが停止しない待機状態を、図３に示す待機状態別停止ハードウエアテーブルTBL11を参照して、決定する。CPU１１は、各タスクについて決定した待機状態を、図４における、各タスクについての、許可できる待機状態として、タスク遷移情報テーブルTBL2に設定する。このとき、図４中の許可できる待機状態は、各タスクにおいて、図３中の待機状態のうち図５のタスク別必要ハードウエアテーブルTBL21の要件を満たすものが複数ある場合、復帰時間が最長のものとなるように待機状態遷移情報テーブルTBL1を参照して、設定される。
従って、CPU１１は、ROM１２に記録された図５に示すタスク別必要ハードウエアテーブルTBL21を参照して、許可できる待機状態を決定あるいは算出する。
【００４９】
以上のように、ここでは、半導体装置１は、複数のタスクの各々について規定された、待機状態時に動作していることが必要なハードウエア回路についての情報を格納した記憶部であるタスク別必要ハードウエアテーブルTBL21を有し、後述するように、タスク別必要ハードウエアテーブルTBL21に記憶された、待機状態時に動作していることが必要なハードウエア回路についての情報に基づいて、実行していたタスクの待機状態レベルが決定される。
【００５０】
なお、CPU１１は、ROM１２に図５に示すタスク別必要ハードウエアテーブルTBL21を格納しないで、タスク毎の許可できる待機状態が予め設定された、図４に示すようなタスク遷移情報テーブルTBL2だけをROM１２に格納するようにしてもよい。
【００５１】
さらになお、タスク別必要ハードウエアテーブルTBL21を、外部のサーバ等から通信により、CPU１１が取得するようにしてもよい。このようにすれば、タスクの処理内容の変更に容易に対応可能となる。
（作用）
上述した半導体装置１が、電力制御プログラムPMPにより、動作状態から待機状態に遷移するときの動作について説明する。
【００５２】
図６は、半導体装置１のCPU１１において複数のタスクが実行中に、割り込み信号の入力待ちとなって、ハードウエアが待機状態に遷移するときの電力制御プログラムPMPの処理のフローチャートである。
【００５３】
CPU１１は、半導体装置１のハードウエアが動作状態から待機状態に遷移するときに図６の電力制御プログラムPMPを実行する。電力制御プログラムPMPは、ROM１２から読み出されて実行される。
【００５４】
はじめに、CPU１１は、それまで実行していたタスクについてのタスク情報を、タスク遷移情報テーブルTBL2から取得する（S1）。  
CPU１１は各種タスクを実行可能であり、実行中のタスクの種類及び数は、リアルタイムで変化している。待機状態になる直前まで、例えば、タスク１、２、３、４が実行中であったときは、CPU１１は、タスク遷移情報テーブルTBL2からタスク１、２、３、４についてのタスク遷移情報を、取得する。
【００５５】
すなわち、タスク遷移情報テーブルTBL2は、複数のタスクの各々についての、許可できる待機状態の情報を含む。そして、S1の処理は、待機状態に遷移する直前に実行していた１以上のタスクについての許可できる待機状態の待機状態レベルと、実行していたタスクについて設定された許可できる復帰時間の情報を、タスク遷移情報テーブルTBL2から取得するタスク情報取得部を構成する。
【００５６】
CPU１１は、取得したタスク情報から、許可できる最も浅い深度の待機状態の情報と、最短の許可できる復帰時間の情報を取得する（S2）。  
例えば、図４の場合、タスク１〜４の中で、許可できる最も浅い深度の待機状態の情報として待機状態Cの情報が選択されて取得され、さらに、最も短い許可できる復帰時間である３msecの情報が選択されて取得される。
【００５７】
次に、CPU１１は、待機状態遷移情報テーブルTBL1を参照して、S2で選択されて取得された待機状態についての、起床に掛かる復帰時間の情報を取得する（S3）。  
例えば、図４の場合、S2で選択されて取得された、許可できる待機状態がCであるとき、待機状態遷移情報テーブルTBL1における待機状態Cについての復帰時間である８msecの情報が取得される。
【００５８】
すなわち、半導体装置１は、複数の待機状態レベルの各々についての復帰時間を記憶した待機状態遷移情報テーブルTBL1を有する。待機状態に遷移する直前に実行していたタスクの許可できる待機状態の待機状態レベルに対応する復帰時間は、その待機状態レベルに基づいて、待機状態遷移情報テーブルTBL1を参照して、決定される。
【００５９】
次に、CPU１１は、S3で取得された、ハードウエアの起床に掛かる復帰時間が、S2で取得された、許可できる復帰時間未満かを判定する（S4）。  
例えば、図２と図４の場合、S3で取得された復帰時間が８msecで、S2で取得された、許可できる復帰時間は３msecであるので、S3で取得された復帰時間は、S2で取得された、許可できる復帰時間未満ではないので（S4:NO）、処理は、S5へ移行する。
【００６０】
すなわち、S4でNOの場合は、実行していた複数のタスク中において最短の許可できる復帰時間について設定されている待機状態（上記の場合は待機状態C）では、その最短の許可できる復帰時間（３msec）内で、半導体装置１が待機状態から動作状態に遷移しても、復帰して実行を再開したタスクが正常に動作をしない虞がある。
【００６１】
S4でNOの場合は、CPU１１は、遷移する待機状態を、より復帰時間が短いものすなわちより浅い待機状態に変更する（S5）。  
例えば、図４の場合、待機状態Cの次に深度の浅い待機状態Bが、遷移する待機状態として仮に選択される。
【００６２】
S5の後、処理は、S3に戻り、CPU１１は、S5で変更されて選択された待機状態の情報から、待機状態遷移情報テーブルTBL1を参照して、待機状態から動作状態へ復帰するために掛かる復帰時間の情報を取得する（S3）。S5で選択された待機状態はBであるので、図２より、待機状態Bについての復帰時間である２msecの情報が取得される。
【００６３】
次に、CPU１１は、S3で取得された復帰時間が、S2で取得された、許可できる復帰時間未満かを判定する（S4）。上記の例の場合、S3で取得された復帰時間が２msecで、S2で取得された、許可できる復帰時間が３msecであるので、復帰時間は許可できる復帰時間未満となる（S4:YES）。
【００６４】
CPU１１は、半導体装置１内の１又は２以上のハードウエアを、S2あるいはS5で選択された待機状態へ遷移する（S6）。  
S2で選択された待機状態は、各タスクの許可できる待機状態の中で最短の復帰時間の待機状態であり、S5で変更されて選択される待機状態は、より復帰時間が短い待機状態である。
【００６５】
S6では、CPU１１は、S2あるいはS5で選択された待機状態にするための電力制御コマンドをハードウエア制御回路１７へ送信する。  
よって、CPU１１は、待機状態に遷移する直前に実行していた１以上のタスクについて設定された許可できる待機状態レベルから選択された最も浅いレベルである待機状態レベルに対応する復帰時間（上記の例では８msec）と、実行していた１以上のタスクについて設定された許可できる復帰時間から選択された最短の許可できる復帰時間（上記の例では３msec）との比較を行う。S4では、実行していたタスクについての許可できる復帰時間の中で最短の復帰時間を用いて、その比較を行う。
【００６６】
そして、CPU１１は、S4において、実行していたタスクの許可できる待機状態の待機状態レベルに対応する復帰時間（上記の例では８msec）が、実行していたタスクについて設定された許可できる復帰時間（上記の例では３msec）よりも長いと判定された場合、待機状態の待機状態レベルを、実行していたタスクの許可できる待機状態の待機状態レベルに対応する復帰時間よりも短い復帰時間（上記の例では２msec）を有する待機状態レベルになるように変更して、ハードウエア制御回路１７を制御する。
【００６７】
その結果、半導体装置１内のハードウエアは、S2あるいはS5で選択された待機状態に遷移する（S6）。  
半導体装置１が待機状態になった後、割り込み信号が発生すると、割り込み制御回路１４によりその割り込みが検出されて、半導体装置１は動作状態に遷移する。
【００６８】
以上のように、上述した実施の形態によれば、実行中のタスクに応じて、可能な限り深い待機状態になるように電力制御を行う半導体装置及び電力制御方法を提供することができる。
【００６９】
なお、複数の動作モードを有する半導体装置においては、動作モード毎に、上述した電力制御が実行されるようにしてもよい。  
半導体装置１には、複数の動作モードを有して、指定された複数の動作モードで実行可能な半導体装置があり、そのような半導体装置では、各動作モードにおいて、実行されるタスクが異なる。
【００７０】
そのような半導体装置の場合、動作モード毎に上述した電力制御が実行されるようにすれば、動作モード毎に、実行されるタスクが異なっても、各動作モードにおいて、実行中のタスクに応じて、可能な限り深い待機状態になるように電力制御を行うことができる。
【００７１】
次に変形例について説明する。
（変形例１）
上述した実施の形態では、図２に示す待機状態遷移情報テーブルTBL1と図３に示す待機状態別停止ハードウエアテーブルTBL11とは別個のテーブルであるが、待機状態遷移情報テーブルTBL1と待機状態別停止ハードウエアテーブルTBL11を一つにしてもよい。
【００７２】
図７は、待機状態遷移情報テーブルTBL1と待機状態別停止ハードウエアテーブルTBL11を一つにした待機状態遷移情報テーブルTBL12の例を示す図である。待機状態遷移情報テーブルTBL12はROM１２に登録される。
【００７３】
図７のような待機状態遷移情報テーブルTBL12においても、待機状態毎の復帰時間は、停止するハードウエアの情報から決定するようにしてもよい。
（変形例２）
上述した実施の形態及び変形例１では、図４に示すタスク遷移情報テーブルTBL2と図５に示すタスク別必要ハードウエアテーブルTBL21とは別個のテーブルであるが、タスク遷移情報テーブルTBL2とタスク別必要ハードウエアテーブルTBL21を一つにしてもよい。
【００７４】
図８は、タスク遷移情報テーブルTBL2とタスク別必要ハードウエアテーブルTBL21を一つにしたタスク遷移情報テーブルTBL22の例を示す図である。タスク遷移情報テーブルTBL22はROM１２に登録される。
【００７５】
図８のようなタスク遷移情報テーブルTBL22においても、タスク毎の許可できる待機状態は、図５に示す待機状態時に動作していることが必要なハードウエアの情報と、図３に示す待機状態別停止ハードウエアテーブルTBL11又は図７に示す待機状態遷移情報テーブルTBL12と、から復帰時間が最長となる待機状態レベルを有する待機状態となるように決定するようにしてもよい。  
（変形例３）
上述した実施の形態及び変形例１及び２のタスク遷移情報テーブルでは、タスク毎に、１つの許可できる待機状態と、１つの許可できる復帰時間が設定されるが、タスクの実行状態に応じて、複数の許可できる待機状態と、複数の許可できる復帰時間が設定されるようにしてもよい。例えば通信処理において、開始時は高速な通信に対応できるように短い復帰時間、浅い待機状態しか許可できないが、後に通信間隔が長くなり、長い復帰時間、深い待機状態が許可できるようになる。
【００７６】
図９は、本変形例３に関わるタスク遷移情報テーブルTBL23の例を示す図である。図９の場合、タスク２については、許可できる待機状態としてCとDの２つが設定され、許可できる復帰時間は、３msecと１０msecの２つが設定されている。
さらに、設定された２つのいずれが使用されるかは、タスク遷移情報テーブルTBL23に設けられたフラグの状態によって、決定される。
【００７７】
図９の場合、フラグは「１」と「０」のいずれかを取り得、そのフラグの値に応じて、そのタスクについての許可できる待機状態と許可できる復帰時間が指定される。例えば、フラグが「０」のときは、タスク２については、許可できる待機状態はCに、許可できる復帰時間は３msecに設定され、フラグが「１」のときは、タスク２については、許可できる待機状態はDに、許可できる復帰時間は１０msecに設定される。
【００７８】
なお、図９では、複数のタスクの中の１つのタスクについてフラグが設定されているが、１以上のタスクに対して、許可できる待機状態と許可できる復帰時間をそれぞれ２つ設定してもよい。  
さらになお、ここでは、フラグは、２つの状態を取り得るが、３つ以上の状態を取り得る情報でもよく、その場合は、フラグにより、３つ以上の許可できる待機状態と３つ以上の許可できる復帰時間の情報から、１つの許可できる待機状態と１つの許可できる復帰時間が指定可能となる。
【００７９】
すなわち、タスク遷移情報テーブルTBL23は、複数のタスクの少なくとも１つについて、許可できる待機状態と許可できる復帰時間との情報を、複数記憶し、S1の処理において、複数の許可できる待機状態と許可できる復帰時間の情報から、フラグによって指定された許可できる待機状態と許可できる復帰時間が取得される。  
このようにすれば、タスクの実行状態に応じて、許可できる待機状態と、許可できる復帰時間を変更することができる。
【００８０】
以上のように、上述した実施の形態及び各変形例によれば、実行中のタスクに応じて、可能な限り深い待機状態になるように電力制御を行う半導体装置及び電力制御方法を提供することができる。
【００８１】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶媒体の非一時的なコンピュータ読み出し可能な媒体に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通させ、または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードして半導体装置に記憶させたり、あるいは記録媒体から半導体装置に記憶させることで、容易に本実施の形態の半導体装置及び電力制御方法を実現することができる。
【００８２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８３】
１  半導体装置、１１  CPU、１２  ROM、１３  アンテナ、１４  割り込み制御回路、１５  センサ、１６  アンテナ、１７  ハードウエア制御回路、１８  バス。
【図１】
0006276212.tif 000002
【図２】
0006276212.tif 000003
【図３】
0006276212.tif 000004
【図４】
0006276212.tif 000005
【図５】
0006276212.tif 000006
【図６】
0006276212.tif 000007
【図７】
0006276212.tif 000008
【図８】
0006276212.tif 000009
【図９】
0006276212.tif 000010