(57)【特許請求の範囲】
【請求項１】
第１の動作モード中に作業用記憶手段に作成されたデータを、第２の動作モード中に保持する退避データ記憶手段を有する情報処理装置であって、
第２の動作モードの動作クロックと、第２の動作モードの動作クロックの周波数よりも高い周波数を有する第１の動作モードの動作クロックとを生成するクロック生成手段と、
第２の動作モードから復帰する際、前記クロック生成手段が第１の動作モードの動作クロックに上昇させる前に、当該情報処理装置の状態を示す情報処理装置ステータスデータを前記退避データ記憶手段から前記作業用記憶手段に復帰させる第１のデータ復帰手段と、
前記クロック生成手段が第１の動作モードの動作クロックに上昇させた後、第１の動作モード中に作成されたデータを前記退避データ記憶手段から前記作業用記憶手段に復帰させる第２のデータ復帰手段と、を有する情報処理装置。
【請求項２】
前記第１のデータ復帰手段は、前記クロック生成手段が第１の動作モードの動作クロックに上昇させる前に、予め定められた早期復帰データを前記退避データ記憶手段から前記作業用記憶手段に復帰させる、ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置ステータスデータは、当該情報処理装置の状態が第２の動作モードからの復帰であるかリセットからの起動であるかの情報を有する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記早期復帰データは、第１の動作モードの動作クロックを指示するデータである、ことを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記情報処理装置ステータスデータに、当該情報処理装置の状態が第２の動作モードからの復帰であるという情報が含まれている場合にのみ、
前記第１のデータ復帰手段は予め定められた早期復帰データを前記退避データ記憶手段から前記作業用記憶手段に復帰させ、前記第２のデータ復帰手段は第１の動作モード中に作成されたデータを前記退避データ記憶手段から前記作業用記憶手段に復帰させる、
ことを特徴とする請求項３記載の情報処理装置。
【請求項６】
前記退避データ記憶手段は、当該情報処理装置が有するプロセッサとのみ接続されている、ことを特徴とする請求項１〜５いずれか１項記載の情報処理装置。
【請求項７】
前記退避データ記憶手段が不揮発メモリの場合、第２の動作モードにおいて前記退避データ記憶手段への電源が遮断される、ことを特徴とする請求項６記載の情報処理装置。
【請求項８】
プログラムを実行する第１の動作モード中に作業用記憶手段に作成されたデータを、第２の動作モード中に保持する退避データ記憶手段を有する情報処理装置のデータ復帰方法であって、
クロック生成手段が第２の動作モードの動作クロックを生成するステップと、
前記クロック生成手段が第１の動作モードの動作クロックに上昇させる前に、第１のデータ復帰手段が、当該情報処理装置の状態を示す情報処理装置ステータスデータを前記退避データ記憶手段から前記作業用記憶手段に復帰させるステップと、
クロック生成手段が、第２の動作モードの動作クロックの周波数より高い周波数を有する第１の動作モードの動作クロックを生成するステップと、
前記クロック生成手段が第１の動作モードの動作クロックに上昇させた後、第２のデータ復帰手段が、第１の動作モード中に作成されたデータを前記退避データ記憶手段から前記作業用記憶手段に復帰させるステップと、を有するデータ復帰方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行する実行モードと実行モードよりも消費電力を低減する省電力モードを有する情報処理装置に関する。
【背景技術】
【０００２】
多くのマイコンは、一定条件下で一部の回路の動作を停止したり動作クロックを低減するスリープモードを備える。スリープモードでは、ウェイクアップ処理などに必要な回路を残して他の回路への動作クロックや電源供給が遮断されることで、消費電力が低減される。
【０００３】
しかしながら、半導体の製造プロセスの微細化が進むと、電源供給されていない回路に電流が流れるリーク電流が消費電力の低減を阻害するようになってきた。
【０００４】
図１は、マイコンのリーク電流を説明する図の一例である。スリープモードに入る前の通常動作モードでは、レジスタ、ＣＰＵ、ＲＡＭ、ＣＡＮコントローラ、Ａ／Ｄコンバータ、及び、タイマに動作クロックと電源が供給される（斜線の回路）。マイコンがスリープモードに入ると、レジスタ、ＣＰＵ、及び、ＲＡＭを残して他の回路への動作クロックと電源の供給が停止される。この場合、レジスタ、ＣＰＵ、及び、ＲＡＭの間でのみ電流が流れるはずだが、製造プロセスによっては動作が停止している回路に電流が漏れ出す場合がある。
【０００５】
このような電流のリークは、レジスタやＲＡＭがＣＰＵ以外の回路と接続されており、マイコン内の他の回路同士を接続する電線がレジスタやＲＡＭと密接しているため、レジスタやＲＡＭへ電源が供給されるとその電流が電線に漏れるために生じると考えられる。
【０００６】
そこで、スリープ時のリーク電流を低減する技術が考えられている（例えば、特許文献１参照。）。特許文献１には、第１，第２ブロックを異なる製造プロセスにより製造し、スリープ時、第２ブロックは、第２ブロックよりもリーク電流量を低減可能な製造プロセスで作成された第１ブロックに保持が必要なデータを転送するマイコンが開示されている。第１ブロックはリーク電流が発生しにくいので、スリープ時のリーク電流を低減できる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２２６６３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に開示されているように、マイコンの回路を異なる製造プロセスで製造することは、１つのマイコンが異なる製造プロセスで製造されることを意味する。このため、製造プロセスの微細化によるコスト低減効果を小さくしてしまうという問題がある。
【０００９】
本発明は、上記課題に鑑み、製造プロセスの影響を抑制してスリープ時の消費電力を低減できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、第１の動作モード中に作業用記憶手段に作成されたデータを、第２の動作モード中に保持する退避データ記憶手段を有する情報処理装置であって、第２の動作モードの動作クロックと、第２の動作モードの動作クロックの周波数よりも高い周波数を有する第１の動作モードの動作クロックとを生成するクロック生成手段と、第２の動作モードから復帰する際、前記クロック生成手段が第１の動作モードの動作クロックに上昇させる前に、当該情報処理装置の状態を示す情報処理装置ステータスデータを前記退避データ記憶手段から前記作業用記憶手段に復帰させる第１のデータ復帰手段と、前記クロック生成手段が第１の動作モードの動作クロックに上昇させた後、第１の動作モード中に作成されたデータを前記退避データ記憶手段から前記作業用記憶手段に復帰させる第２のデータ復帰手段と、を有することを特徴とする。
【発明の効果】
【００１１】
製造プロセスの影響を抑制してスリープ時の消費電力を低減できる情報処理装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】マイコンのリーク電流を説明する図の一例である。
【図２】マイコンの特徴部を概略的に説明する図の一例である。
【図３】バックアップＲＡＭの電源供給状態を示す図の一例である。
【図４】マイコンの機能ブロック図の一例である。
【図５】マイコンの動作モードの遷移を説明するフローチャート図の一例である。
【図６】ウェイクアップ手順を模式的に説明する図の一例である。
【図７】ウェイクアップ手順を説明するフローチャート図の一例である。
【図８】「ウェイクアップ判断」「データ復帰処理Ａ」の実行手順を説明するフローチャート図の一例である。
【図９】「ウェイクアップ判断」「データ復帰処理Ｂ」の実行手順を説明するフローチャート図の一例である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
【実施例１】
【００１４】
図２は、本実施例のマイコンの特徴部を概略的に説明する図の一例である。図はスリープ状態のマイコン１００を示し、斜線部のブロック（図ではＣＰＵ）に電源とクロックが供給されている。
【００１５】
本実施例のマイコン１００は新たにスリープ中にレジスタ１１やＲＡＭ１３のデータを保持しておくバックアップＲＡＭ１７を有している。バックアップＲＡＭ１７は、ＣＰＵ１２とのみ接続されている。換言すると、ＣＰＵ１２と１対１で接続されており、ＣＰＵ１２のみがバックアップＲＡＭ１７にアクセスすることができる。
【００１６】
スリープ前にレジスタ１１とＲＡＭ１３のデータはバックアップＲＡＭ１７に退避されているので、スリープ中、電源と動作クロックをレジスタ１１、ＲＡＭ１３、及び、バックアップＲＡＭ１７（バックアップＲＡＭが不揮発メモリの場合）へ供給する必要はない。このため、従来と比べてスリープ中の消費電力を大きく低減できる。
【００１７】
また、バックアップＲＡＭ１７は他の回路と同様の製造プロセス（例えば、９０nm以下）で作成されている。マイコン１００の全体を同じ製造プロセスで製造できるのでコストを低減しやすい。また、バックアップＲＡＭ１７はＣＰＵ以外の回路と接続されていないので、製造プロセスが微細でもスリープ中のリーク電流を大きく低減できる。すなわち、バックアップＲＡＭ１７が揮発性メモリの場合、スリープ中、ＣＰＵ１２とバックアップＲＡＭ１７に電源とクロックが供給される。しかし、バックアップＲＡＭ１７はＣＰＵ１２としか接続されていないので、バックアップＲＡＭ１７から他の回路に電流がリークすることがほとんど生じない。したがって、バックアップＲＡＭ１７が揮発性メモリでもスリープ中の消費電力を低減できる。
【００１８】
〔構成例〕
図２のマイコン１００について説明する。マイコン１００は、レジスタ１１、ＣＰＵ１２、ＲＡＭ１３、ＣＡＮコントローラ１４、Ａ／Ｄコンバータ１５、タイマ１６、及び、バックアップＲＡＭ１７を有する。また、スリープモードと関係する発振器１８、メインクロック発生回路１９、ＰＬＬ回路２０、及び、電源回路２１を図示した。この他、プログラムを記憶したＲＯＭ、キャッシュメモリ、ＤＭＡＣ、割り込みコントローラ、ＩＰ（マイコンによって異なるが、例えばＤＳＰ、画像処理回路）等は省略した。
【００１９】
ＣＰＵ１２は、レジスタ１１、ＲＡＭ１３、ＣＡＮコントローラ１４、Ａ／Ｄコンバータ１５、及び、タイマ１６とメインバスや周辺バスを介して接続されている。また、レジスタ１１とＲＡＭ１３も、ＣＡＮコントローラ１４、Ａ／Ｄコンバータ１５、及び、タイマ１６からアクセスされるため、これらの回路と接続されている。これに対し、バックアップＲＡＭ１７はＣＰＵ１２とのみ接続されている。
【００２０】
なお、ＣＰＵ１２は不図示のＲＯＭに記憶されたプログラムを実行して、目的とする演算結果が得られるように他の回路を制御する。レジスタ１１には、ＣＰＵ１２が演算に使用する値が格納された汎用レジスタ、次に実行する命令のアドレスを記憶するプログラムカウンタ、マイコン１００の状態を示すマイコンステータスレジスタ、割り込み制御レジスタ、その他、各種のレジスタが含まれる。ＲＡＭ１３は、プログラムの実行途中のデータやルックアップ用データ等が記憶される作業メモリである。マイコン１００によってはプログラムをＲＡＭ１３にコピーしてから実行される場合がある。ＣＡＮコントローラ１４は、ＣＡＮバスを介して接続された他のマイコン（例えば、ＥＣＵ：Electronic  Control  Unit）と通信するための通信装置である。ＣＡＮコントローラ１４はＣＰＵ１２からの指示によりＣＡＮフレームを生成しＣＡＮバス上に送信する。また、ＣＡＮバス上を流れるＣＡＮフレームを監視しＣＡＮ  ＩＤに応じて受信すると共にＣＰＵ１２に通知する。Ａ／Ｄコンバータ１５は、センサ等が検出したアナログ値をデジタルデータに変換してＲＡＭ１３に記憶させＣＰＵ１２に通知する。タイマ１６は、ＣＰＵ１２が設定した時間の経過をＣＰＵ１２に通知する。タイマ１６には例えばＷＤＴがある。なお、これらの周辺回路はＣＰＵ１２との通信にレジスタ１１やＲＡＭ１３を使用するようになっている。
【００２１】
バックアップＲＡＭ１７は不揮発メモリとして説明するが、揮発性メモリでもよい。不揮発メモリであれば、例えば、フラッシュメモリ、磁気抵抗RAM(MRAM)、強誘電体メモリ(FeRAM)、PCM（相変化メモリ）、ReRAM（抵抗変化型メモリ）などを記憶素子に採用できる。揮発性メモリであれば、SRAM、SDRAM、DRAMなどを記憶素子に採用できる。バックアップＲＡＭ１７はＣＰＵ１２と対であるが、複数のコアを備えたマルチコアプロセッサの場合、マルチコアプロセッサに１つのバックアップＲＡＭ１７を配置してもよいし、コア毎に１つのバックアップＲＡＭ１７を配置してもよい。コア毎にバックアップＲＡＭ１７を設ければ、コア単位のスリープが可能になり、マルチコアプロセッサに１つのバックアップＲＡＭ１７を設ければコスト低減が容易になる。
【００２２】
本実施例のマイコン１００は、主に車両のＥＣＵに搭載されることを想定している。車載されるＥＣＵには、その主要な機能により、エンジンＥＣＵ、ブレーキＥＣＵ、ボディＥＣＵ、ナビゲーションＥＣＵ（ＡＶ・情報処理ＥＣＵ）、ゲートウェイＥＣＵ等がある。本実施例のマイコン１００はＥＣＵの機能の違いに影響されず搭載されることが可能である。
【００２３】
マイコン１００の消費電力は、およそ動作クロックに比例しかつ電圧の二乗に比例すると言われている。したがって、スリープ時には動作クロックと電圧を低減することが有効であるが、いずれか一方のみを低減してもよい。
【００２４】
動作クロックは、発振器１８、メインクロック発生回路１９及びＰＬＬ回路２０により生成される。発振器１８は例えば基準クロックを生成する水晶振動子であり、メインクロック発生回路１９は基準クロックを指示された周波数に低倍する回路、ＰＬＬ回路２０は指示された分周比によりメインクロックをＰＬＬクロックまで増大させる回路である。ＣＰＵ１２は、起動時及びウェイクアップ時に所定のレジスタ１１に周波数の指示値を設定することで、メインクロックとＰＬＬクロックを制御する。なお、メインクロックとＰＬＬクロックが固定のマイコン１００もあり、この場合、ＣＰＵ１２が周波数を制御しなくてもよい。
【００２５】
電源回路２１は、バッテリ電圧を降圧して、いくつかの回路グループ毎に数種類の電源電圧を生成しＣＰＵ等の回路に供給する。電源回路２１は、少なくともグループ毎に電源をＯＮ／ＯＦＦすることができる。
【００２６】
ＣＰＵ１２は、スリープモードに移行する場合、スリープモード用の動作クロックの指示値をメインクロック発生回路１９とＰＬＬ回路２０に設定すると共に、電源回路２１にＣＰＵ以外の電源をＯＦＦにするよう要求する。こうすることで、スリープモード時、クロック周波数は通常動作モード（スリープモード以外の動作モードを通常動作モードという）よりも低減され、電源が供給される回路もＣＰＵ１２のみに制限できる。スリープモード時の動作クロックは基準クロック程度とする。なお、メインクロックやＰＬＬクロックの指示値を変えることで、スリープモード及び通常動作モードの動作クロックを可変にすることができる。
【００２７】
図３（ａ）は、バックアップＲＡＭ１７が不揮発メモリの場合の電源供給状態の一例を示す。斜線部が、電源が供給されている回路を示す。左側は通常動作モードの電源供給状態を示すが、図３（ａ）では全ての回路に電源が供給されている。また、右側はスリープモードの電源供給状態を示すが、ＣＰＵ１２を除き電源が供給されてない。このように、ＣＰＵ以外の回路の電源をＯＦＦにすることでスリープ中の消費電力を低減できる。
【００２８】
図３（ｂ）は、バックアップＲＡＭ１７が揮発性メモリの場合の電源供給状態を示す。同様に左側は通常動作モードの電源供給状態を示す。また、右側はスリープモードの電源供給状態を示すが、ＣＰＵ１２とバックアップＲＡＭ１７に電源が供給されている。バックアップＲＡＭ１７に電源が供給されても、レジスタ１１とＲＡＭ１３に電源が供給されるようは消費電力を低減できる。仮に消費電力の低減効果が小さくても、ＣＰＵ１２とのみ接続されたバックアップＲＡＭ１７はスリープ中のリーク電流が小さいので、従来よりもスリープ中の消費電力を低減できる。
【００２９】
〔スリープモードへの移行〕
図４は、マイコン１００の機能ブロック図の一例を示す。マイコン１００はＥＣＵに必要な制御や処理のために固有の処理を行うタスクＡ３１（以下、単にタスクＡという）、タスクＢ３２（以下、単にタスクＢという）、マイコン１００の状態を判定する状態判定部３３、電源回路２１を制御する電源回路制御部３４、スリープ処理を行うスリープモード実行部３５、及び、ウェイクアップ処理を行うウェイクアップ実行部４１を有している。各機能ブロックは、ＣＰＵ１２がハードウェアと協働しながらプログラムを実行することで実現される。
【００３０】
ＯＳや基本ソフトなどのタスク管理機能はタスクの優先順位にしたがって、ＣＰＵ１２に割り当てるタスクを切り替える。タスク管理機能は、例えば、１つのタスクが終わる毎又は定期的にタスクのスケジューリングを行い、例えば、タスクＡ，タスクＢ及び状態判定部３３がそれぞれ所定の頻度で実行されるようにタスクを実行する。
【００３１】
状態判定部３３は、タスクＡ、タスクＢの実行状態を確認しスリープモードに移行するか否かを判定する。例えば、タスクＡ、タスクＢが最後に実行された時間を記録しておき、所定時間が経過したことによりスリープモードに移行すると判定してもよいし、タスクＡ及びタスクＢがそれぞれ生成したスリープモード移行要求の有無を判定してもよい。また、さらに他のマイコン１００からスリープへの移行許可を取得したか否かを判定してもよい。
【００３２】
状態判定部３３がスリープモードに移行すると判定すると、スリープモード実行部３５がスリープモードへの移行処理を行う。スリープモード実行部３５は、データ退避部３６、及び、動作クロック設定部３７を有する。データ退避部３６は、レジスタ１１とＲＡＭ１３のデータをバックアップＲＡＭ１７に退避する。また、退避が終了すると、スリープモード実行部３５は、動作クロック設定部３７にスリープモード用の動作クロックを設定させ、また、電源回路制御部３４に電源制御を要求する。これにより、マイコン１００はスリープモードに移行する。
【００３３】
ウェイクアップ実行部４１は、マイコン１００をウェイクアップさせるイベントが生じると実行が開始される。このようなイベントには様々なものがありまたマイコン１００によって異なるが、例えば、所定の部品のスイッチオン、ＣＡＮ通信の開始、一定時間の経過、等が挙げられる。また、ウェイクアップ実行部４１はマイコン１００が、ＩＧ−ＯＮ（ハイブリッド車や電気自動車ではメインシステムのスイッチがＯＮとなることをいう）等によりリセットされた場合も実行が開始される。
【００３４】
イベントの発生は、スリープモード中の例えばタスク管理機能が定期的に特定のレジスタ１１を参照することで検出する。イベントの発生を検出したタスク管理機能はウェイクアップ実行部４１をＣＰＵ１２に割り当てる。マイコンがリセットされた場合、マイコン１００はスリープモードからの復帰でなく通常起動するので、リセット割込みによりＣＰＵ１２は所定のアドレスの命令を実行することでウェイクアップ実行部４１の実行を開始する。
【００３５】
ウェイクアップ実行部４１は、第１データ復帰部４１、ウェイクアップ要因判定部４３、ウェイクアップブートフック部４４、及び、第２データ復帰部４６を有する。第１データ復帰部４１は後述するデータ復帰処理Ａを行い、第２データ復帰部４６は後述するデータ復帰処理Ｂを行う。ウェイクアップ要因判定部４３は、ウェイクアップの要因がスリープモードから復帰したためのウェイクアップか、そうでないかを判定する。この判定を行うのは、本実施例のマイコン１００はスリープモードからの復帰が、リセットからの復帰として扱われるため、ソフト的にスリープモードからの復帰か、リセットによる起動かを区別する必要があるためである。スリープモードからの復帰か、リセットからの起動かによって初期処理が変わってくる。例えば、スリープモードからの復帰でない場合、バックアップＲＡＭ１７からのデータ復帰も不要になる。
【００３６】
ウェイクアップブートフック部４４は、ウェイクアップ時のフック処理（プログラムの特定の箇所で呼び出される処理）を行う。本実施例では代表的な処理として動作クロック設定部４５が動作クロックを上昇させるものとする。
【００３７】
図５は、マイコン１００の動作モードの遷移を説明するフローチャート図の一例である。図５の手順はマイコン１００が起動するとスタートする。
【００３８】
起動後、まず、ウェイクアップ実行部４１がウェイクアップブート処理を行う（Ｓ１０）。ウェイクアップブート処理については実施例２にて説明する。ウェイクアップブート処理には、リセットからの起動処理とスリープモードからの復帰処理が含まれている。
【００３９】
ウェイクアップ実行部４１は、ウェイクアップブート処理を完了するとプログラムを実行する（Ｓ２０）。このプログラムは、例えばmain関数の開始を意味し（Ｃ言語の場合）、以降、main関数が繰り返し実行される。上記のタスクＡ、Ｂ、状態判定部３３はmain関数から実行される関数やルーチンなどである。
【００４０】
状態判定部３３は、例えば定期的にスリープ条件が成立したか否かを判定する（Ｓ３０）。スリープ条件が成立しない場合（Ｓ３０のＮｏ）、ＣＰＵ１２は継続的にプログラムを実行する。
【００４１】
スリープ条件が成立した場合（Ｓ３０のＹｅｓ）、スリープモード実行部３５はスリープモードへの移行処理を行う（Ｓ４０）。まず、スリープモード実行部３５はマイコンステータスレジスタにスリープモードへ移行したことを記録する。具体的には、マイコンステータスレジスタのスリープ検出リセットフラグを”１”に設定する。したがって、ウェイクアップ時にはＣＰＵ１２がバックアップＲＡＭ１７からマイコンステータスレジスタを読み出すことで、スリープモードからの復帰か、リセットからの起動かを判定できる。なお、フラグの“１”“０”がフラグのＯＮ／ＯＦＦのどちらを示すかは設計事項である。
【００４２】
また、マイコンステータスレジスタには、この他、リセット原因を示すフラグが含まれている。リセット原因には、ＩＧ−ＯＮ、異常の発生やＷＤＴによる外部リセット、バッテリ低電圧、内部低電圧などがある。
【００４３】
データ退避部３６は、ＲＡＭ１３のデータを予め決まったセクション毎にバックアップＲＡＭ１７に退避する。セクションとは、ＲＡＭ１３やバックアップＲＡＭ１７の領域（アドレス範囲）やブロックであり、重複しないセクション名を指定することで、バックアップＲＡＭ１７とＲＡＭ１３の領域を指定できる。また、データ退避部３６は、レジスタ名を指定して全てのレジスタ１１のデータをバックアップＲＡＭ１７に退避する。バックアップＲＡＭ１７のどのセクションに、ＲＡＭ１３及びレジスタ１１のデータが記憶されているかは、第１データ復帰部４１と第２データ復帰部４６にとって明らかになっている。退避されるレジスタ１１の１つにはマイコンステータスレジスタも含まれる。
【００４４】
なお、ＲＡＭ１３については全領域のデータをバックアップＲＡＭ１７に退避しなくてもよい。復帰後にプログラムが必要とするデータは、タスクＡ、Ｂなどのプログラムが作成したデータや制御を最適化するためのパラメータなどである。このような演算により得られたデータのみを退避することで、退避時間も復帰時間も短縮できる。この場合、データ退避部３６は予め指定されたセクション名や変数名のみをＲＡＭ１３から退避するなどして、退避するデータを選択する。
【００４５】
データの退避後、動作クロック設定部３７は動作クロックを低減し、電源回路制御部３４がＣＰＵ１２以外の回路への電源をＯＦＦにする。これにより、マイコン１００はスリープモードに移行する。
【００４６】
スリープモードに移行すると、ＣＰＵ１２はウェイクアップのイベントが検出されるまで待機する（Ｓ５０）。そして、ウェイクアップのイベントが検出されると（Ｓ５０のＹｅｓ）、ステップＳ１０のウェイクアップブート処理が実行される。
【００４７】
以上説明したように、本実施例のマイコン１００は、ＣＰＵ１２とのみ接続されたバックアップＲＡＭ１７にデータを退避するので、レジスタ１１とＲＡＭ１３の電源をＯＦＦにでき、また、リーク電流を低減できるのでスリープモード中の消費電力を低減できる。
【実施例２】
【００４８】
実施例１では、バックアップＲＡＭ１７をマイコン１００に設けた。しかし、このようなマイコン１００では、ウェイクアップ時にバックアップＲＡＭ１７からレジスタ１１やＲＡＭ１３へのデータの復帰処理が必要になるため、ウェイクアップを開始してからタスクＡ，Ｂなどの実行が開始されるまでの時間が長くなるおそれがある。そこで、本実施例では、バックアップＲＡＭ１７を備えたマイコン１００のウェイクアップ時間を短縮するウェイクアップ方法について説明する。
【００４９】
図６は、本実施例のウェイクアップ手順を模式的に説明する図の一例である。図６では時間の経過順に、マイコン起動、レジスタ初期化、「データ復帰処理Ａ（ウェイクアップ判断）」、ウェイクアップブートフック、メインクロック発振設定、メインクロック発振安定待ち、ＰＬＬクロック発振設定、ＰＬＬクロック発振安定待ち、「データ復帰処理Ｂ」となっている。このうち、「データ復帰処理Ａ（ウェイクアップ判断）」と「データ復帰処理Ｂ」がバックアップＲＡＭ１７を搭載したことによる処理である。
【００５０】
図示するように、ウェイクアップ時は動作クロックの発振や安定に時間がかかる。マイコン１００によって大きく異なるが、図では、ＣＲクロック発振期間（５００〜７５０ｋＨｚ程度）、メインクロック発振期間（１Ｍ〜４ＭＨｚ程度）、ＰＬＬクロック発振期間（８Ｍ〜１２８ＭＨｚ）のように徐々に動作クロックが上昇する。なお、３段階に動作クロックが上昇するとは限らず、上昇時の動作クロックのステップ数はマイコン１００に依存する。また、ＣＲクロックはスリープモード中の動作クロックである。
【００５１】
したがって、動作クロックの低いうちに処理を開始すれば、バックアップＲＡＭ１７を搭載したことによる復帰時間の増大を、動作クロックの発振・安定時間である程度吸収することができる。「データ復帰処理Ａ（ウェイクアップ判断）」及び「データ復帰処理Ｂ」をどのタイミングで実行するかは適宜設計できる。本実施例では、動作クロックが最も低いスリープ中のＣＲクロックのまま「データ復帰処理Ａ（ウェイクアップ判断）」を行い、最も高いＰＬＬクロックに安定したら「データ復帰処理Ｂ」を実行するものとする。「データ復帰処理Ａ」では必要最小限のデータのみを復帰させ、大部分のデータを「データ復帰処理Ｂ」で復帰させるのでウェイクアップ時間の遅延を最小限にすることができる。
【００５２】
なお、動作クロックがＣＲクロックのまま「データ復帰処理Ｂ」を開始してもよい。また、メインクロックに安定した段階で「データ復帰処理Ａ」を開始し、ＰＬＬクロックに安定したら「データ復帰処理Ｂ」を開始してもよいし、メインクロックに安定した段階で「データ復帰処理Ａ」「データ復帰処理Ｂ」を開始してもよい。
【００５３】
・データ復帰処理Ａ
必須処理：マイコンステータスレジスタをバックアップＲＡＭ１７から読み出す
マイコンステータスレジスタのスリープ検出リセットフラグによりスリープモードからの復帰か否かを判定するためである。また、データ復旧処理Ａにはこのスリープモードからの復帰か否かのウェイクアップ判断が含まれる。
オプション処理１：メインクロック発振設定、ＰＬＬクロック発振設定に必要なデータ（動作クロックの指示値）をバックアップＲＡＭ１７から読み出す
この処理がオプションなのは、マイコン１００によってはメインクロック発振設定、ＰＬＬクロックの設定値が固定であるため、バックアップＲＡＭ１７から読み出す必要がないためである。
オプション処理２：その他、早期に必要なデータをバックアップＲＡＭ１７から読み出す
早期に必要なデータはマイコン１００やマイコン１００が実行するプログラムによって異なるので、開発者が第一データ復帰部４１に予め設定している。
【００５４】
・データ復帰処理Ｂ
必須処理：スリープ前にバックアップＲＡＭ１７に保持されたＲＡＭ１３・レジスタ１１のデータをＲＡＭ１３、レジスタ１１に書き込む
なお、マイコン１００によっては、ＲＡＭ１３やレジスタ１１に復帰が必要なデータ（上記の演算により得られたデータなど）を書き込まない仕様のものも存在する。そのようなマイコン１００にとっては、データ復帰処理Ｂの必須処理が不要になる。データ復帰処理Ｂが不要な場合、プログラムのリンク時にデータ復帰処理Ｂを行う第２のデータ復帰部をリンクしなければよい。
【００５５】
〔動作手順〕
図７〜９は、ウェイクアップ手順を説明するフローチャート図の一例である。図７の手順は、マイコン１００をウェイクアップさせるイベントが検出されるか、又は、マイコン１００のリセット（起動）によりスタートする。図７の処理は図５のステップＳ１０の処理に相当する。
【００５６】
なお、ウェイクアップにより電源回路制御部３４が、電源回路２１から全ての回路に電源を供給している。動作クロックは、スリープモードからの復帰であればＣＲクロックに安定しており、リセットからの起動であればＣＲクロックが安定してからウェイクアップ処理が実行される。
【００５７】
まず、ウェイクアップ実行部４１は、プロセッサを割込み禁止に設定する（Ｓ１０１）。割込み禁止にすることで、ウェイクアップ中に割込みが入り別の処理が実行されることを防止できる。なお、割込み禁止に設定するには割込み禁止レジスタに所定値を設定する。
【００５８】
次に、ウェイクアップ実行部４１はウェイクアップ時の専用レジスタを初期化する（Ｓ１０２）。専用レジスタは、ポインタやアドレスのインデックスを格納するレジスタである。
【００５９】
そして、動作クロックを上昇させる前に、「データ復帰処理Ａ＆ウェイクアップ判断」が実行される（Ｓ２００）。この処理については図８にて説明する。
【００６０】
次に、ウェイクアップブートフック部４４はウェイクアップ時のフック処理を行う（Ｓ１０３）。上記のように、このフック処理では、動作クロックの上昇処理が行われる。
【００６１】
まず、動作クロック設定部４５は、データ復帰処理Ａで取得したメインクロックの指示値をメインクロック発生回路１９に設定する（Ｓ１０４）。これにより動作クロックはメインクロックまで上昇する。
【００６２】
動作クロック設定部４５は、動作クロックがメインクロックで安定するまで、予め定められた時間、待機する（Ｓ１０５）。
【００６３】
次に、動作クロック設定部４５は、データ復帰処理Ａで取得したＰＬＬクロックの指示値をＰＬＬ回路２０に設定する（Ｓ１０６）。これにより動作クロックはＰＬＬクロックまで上昇する。
【００６４】
動作クロック設定部４５は、動作クロックがＰＬＬクロックで安定するまで、予め定められた時間、待機する（Ｓ１０７）。
【００６５】
次に、第２データ復帰部４６は、データ復帰処理ＢのためにＲＡＭ１３などを初期化する。まず、第２データ復帰部４６はＲＡＭ１３におけるスタック領域を初期化する（Ｓ１０８）。ＲＡＭ１３の全部でなく必ず使用する領域のみを初期化することで復帰処理の時間を短縮できる。
【００６６】
次に、第２データ復帰部４６は汎用レジスタを初期化する（Ｓ１０９）。
【００６７】
そして、第２データ復帰部４６は「データ復帰処理Ｂ」を実行する（Ｓ３００）。この処理については図９にて説明する。
【００６８】
データ復帰処理Ｂが完了すると、ＣＰＵ１２はメインスクＡ、Ｂなどのプログラムを実行する（Ｓ１１０）。すなわち、図５のステップＳ２０に処理が以降する。
【００６９】
図８は、「データ復帰処理Ａ＆ウェイクアップ判断」の実行手順を説明するフローチャート図の一例である。
【００７０】
第１データ復帰部４１は、ＣＰＵ１２からマイコンステータスレジスタのデータを読み出す（Ｓ２０１）。この処理は上記のデータ復帰処理Ａの必須処理に相当する。以降、ウェイクアップ要因判定部４３がウェイクアップ要因を判定する。
【００７１】
ウェイクアップ要因判定部４３は、マイコンステータスレジスタのデータと所定のＭＡＳＫ値を論理演算してパワーオン検出リセットフラグを取り出す。そして、ウェイクアップ要因判定部４３はパワーオン検出リセットフラグがＯＮか否かを判定する（Ｓ２０２）。
【００７２】
パワーオン検出リセットフラグがＯＮであることはウェイクアップ処理がスリープモードからの復帰でなくＩＧ−ＯＮによるリセットを要因とすることになる。よって、パワーオン検出リセットフラグがＯＮの場合（Ｓ２０２のＹｅｓ）、処理はステップＳ２１０に進む。
【００７３】
パワーオン検出リセットフラグがＯＮでない場合（Ｓ２０２のＮｏ）、ウェイクアップ要因判定部４３は、外部リセット検出フラグがＯＮか否かを判定する（Ｓ２０３）。すなわち、マイコンステータスレジスタのデータと所定のＭＡＳＫ値を論理演算して外部リセット検出フラグを取り出す。
【００７４】
外部リセット検出トフラグがＯＮであることはウェイクアップ処理がスリープモードからの復帰でなく外部からのリセットを要因とすることになる。よって、外部リセット検出フラグがＯＮの場合（Ｓ２０３のＹｅｓ）、処理はステップＳ２１０に進む。
【００７５】
外部リセット検出フラグがＯＮでない場合（Ｓ２０３のＮｏ）、ウェイクアップ要因判定部４３は、外部低電圧リセット検出フラグがＯＮか否かを判定する（Ｓ２０４）。すなわち、マイコンステータスレジスタのデータと所定のＭＡＳＫ値を論理演算して外部低電圧リセット検出フラグを取り出す。
【００７６】
外部低電圧リセット検出トフラグがＯＮであることはウェイクアップ処理がスリープモードからの復帰でなくバッテリ電圧が閾値以下であることをリセット要因とすることになる。よって、外部低電圧リセット検出フラグがＯＮの場合（Ｓ２０４のＹｅｓ）、処理はステップＳ２１０に進む。
【００７７】
外部低電圧リセット検出リセットフラグがＯＮでない場合（Ｓ２０４のＮｏ）、ウェイクアップ要因判定部４３は、内部低電圧リセット検出フラグがＯＮか否かを判定する（Ｓ２０５）。すなわち、マイコンステータスレジスタのデータと所定のＭＡＳＫ値を論理演算して内部低電圧リセット検出フラグを取り出す。
【００７８】
内部低電圧リセット検出トフラグがＯＮであることはウェイクアップ処理がスリープモードからの復帰でなく電源回路２１の電圧が閾値以下であることをリセット要因とすることになる。よって、内部低電圧リセット検出フラグがＯＮの場合（Ｓ２０５のＹｅｓ）、処理はステップＳ２１０に進む。
【００７９】
内部低電圧リセット検出リセットフラグがＯＮでない場合（Ｓ２０５のＮｏ）、ウェイクアップ要因判定部４３は、スリープからの復帰か否かを同様に判定する（Ｓ２０６）。すなわち、マイコンステータスレジスタのデータと所定のＭＡＳＫ値を論理演算してスリープ検出フラグを取り出す。
【００８０】
スリープ検出フラグがＯＮでない場合には（Ｓ２０６のＮｏ）、同様に、処理はステップＳ２１０に進む。
【００８１】
スリープ検出フラグがＯＮの場合（Ｓ２０６のＹｅｓ）、ウェイクアップ要因はスリープモードからの復帰と判定される。よって、第１データ復帰部４１は、データ復帰処理Ａのオプション処理を実行する。本実施例のマイコン１００のオプション処理は、動作クロックの設定に必要なメインクロックとＰＬＬクロックの指示値をバックアップＲＡＭ１７から読み出すことである。
【００８２】
第１データ復帰部４１は、バックアップＲＡＭ１７からメインクロックやＰＬＬクロックの指示値を読み出す（Ｓ２０７）。この後、処理は図７のＳ１０３に戻る。
【００８３】
処理がステップＳ２１０に遷移した場合、データ復帰を行わず、リセットからの起動処理が行われる。リセットからの起動処理後は、タスクＡ、Ｂなどのプログラムが実行される。
【００８４】
図９は、「データ復帰処理Ｂ」の実行手順（Ｓ３００）を説明するフローチャート図の一例である。図7にてステップＳ３００を含めステップＳ１０３〜Ｓ１１０が実行されるのは、ステップＳ２００でスリープモードからの復帰と判定された場合である。このため、第２データ復帰部４６は、バックアップＲＡＭ１７からＲＡＭ１３とレジスタ１１のデータを復帰すればよい。
【００８５】
第２データ復帰部４６はバックアップＲＡＭ１７から読み出したデータをＲＡＭ１３とレジスタ１１にそれぞれ書き込む（Ｓ３０１）。この処理がデータ復帰処理Ｂの必須処理に相当する。
【００８６】
また、第２データ復帰部４６はその他、必要なデータがあれば復帰したり、周辺回路にデータを設定したりする（Ｓ３０２）。この後、処理は図７のＳ１１０に戻る。
【００８７】
以上説明したように本実施例のマイコンは、動作クロックの遅い間は最小限のデータを復帰させ、動作クロックが速くなってから大部分のデータを復帰させる。このため、スリープ中のデータを保持するバックアップＲＡＭ１７を備えたマイコン１００のウェイクアップ時間を短縮できる。
【符号の説明】
【００８８】
１１      レジスタ
１２      ＣＰＵ
１３      ＲＡＭ
１７      バックアップＲＡＭ
１８      発振器
３５      スリープモード実行部
４１      ウェイクアップ実行部
１００    マイコン
【図１】
0005660010.tif 000002
【図２】
0005660010.tif 000003
【図３】
0005660010.tif 000004
【図４】
0005660010.tif 000005
【図５】
0005660010.tif 000006
【図６】
0005660010.tif 000007
【図７】
0005660010.tif 000008
【図８】
0005660010.tif 000009
【図９】
0005660010.tif 000010