(57)【要約】【課題】ウェイクアップ状態とスリープ状態とで適切且つ効率的に状態を移行させることを可能とし、消費電力を有効に低減させることができる処理装置、処理方法及びコンピュータプログラムを提供する。【解決手段】ウェイクアップ状態時に実行される対応するアプリケーションタスクＡ及びＢに対し、対応する又は同一の処理を行なうアプリケーションタスクＡ´及びＢ´がスリープ状態時に実行されるようにしてある。ウェイクアップ状態時に起動されるアプリケーションタスクＡ及びＢのタスク優先度は状態管理タスクの優先度よりも高く、スリープ状態時に起動されるアプリケーションタスクＡ´及びＢ´のタスク優先度は状態管理タスクの優先度より低い。ウェイクアップ状態時は、状態管理タスクの優先度が最も低く、スリープ状態時は状態管理タスクの優先度が高くなる。【選択図】図６
2010097427.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理を実行する実行手段と、自身の動作を休止する休止状態へ移行させる手段とを備え、前記実行手段は、前記複数の処理夫々に予め設定された優先度に従って各処理を実行するようにしてある処理装置において、
前記実行手段は、
休止状態及び非休止状態の切り替えを行なう切替処理と、
該切替処理よりも優先度が高い第１処理と、
該第１処理と対応する処理であって前記切替処理よりも優先度が低い第２処理と
を実行するようにしてあり、
自身が休止状態であるか否かを判断する手段を備え、
休止状態であると判断した場合に第２処理を実行し、非休止状態であると判断した場合に第１処理を実行するようにしてあること
を特徴とする処理装置。
【請求項２】
第１処理及び第２処理は、同一の処理であること
を特徴とする請求項１に記載の処理装置。
【請求項３】
前記実行手段は更に、第１処理及び第２処理のいずれかを選択して起動する前記第１処理よりも優先度が高い起動処理を実行するようにしてあること
を特徴とする請求項１又は２に記載の処理装置。
【請求項４】
複数の処理を夫々に予め設定された優先度に従って実行するようにしてあり、自身の動作を休止する休止状態へ移行させることが可能に構成してある処理装置における処理方法において、
前記処理装置は、
前記処理として、
自身の休止状態及び非休止状態の切り替えを行なう切替処理と、
該切替処理よりも優先度が高い第１処理と、
該第１処理と対応する処理であって前記切替処理よりも優先度が低い第２処理と
を夫々優先度に従って実行するようにしてあり、
自身が休止状態であるか否かを判断し、
休止状態であると判断した場合に第２処理を実行し、
非休止状態であると判断した場合に第１処理を実行する
ことを特徴とする処理方法。
【請求項５】
コンピュータに、複数の処理を夫々に予め設定された優先度に従って実行させ、自身の動作を休止する休止状態へ移行させるコンピュータプログラムにおいて、
コンピュータに、
前記処理として、
自身の休止状態及び非休止状態の切り替えを行なう切替処理と、
該切替処理よりも優先度が高い第１処理と、
該第１処理と対応する処理であって前記切替処理よりも優先度が低い第２処理と
自身の休止状態及び非休止状態の切り替えを行なう切替処理と
を優先度に従って実行させるステップと、
自身が休止状態であるか否かを判断するステップと
を含み、
休止状態であると判断した場合に第２処理を実行させ、
非休止状態であると判断した場合に第１処理を実行させること
を特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ装置の省電力化技術に関し、特に、コンピュータ装置のスリープ状態とウェイクアップ状態との間の切り替えを適切且つ効率的に行ない、消費電力を有効に低減させることができる処理装置、処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
昨今では、機器の省電力化が進められている。そのため、クロック周波数の変更、又は電源電圧の低下が可能に設定されており、特に処理を行なわない間はクロック周波数を低下又は電源電圧を低下させるなどのスリープ状態への移行が可能なコンピュータ装置が普及している。
【０００３】
コンピュータ装置をスリープ状態へ移行させる、又はスリープ状態から、クロック周波数若しくは電源電圧が高められて所定の処理を行なうウェイクアップ状態へ移行させるための制御には種々の方法が行なわれている。
【０００４】
例えば、一又は複数の処理が関連付けられて一つのタスクとして実行され、複数のタスクが同時的に実行されるように構成されているコンピュータ装置で、複数のタスク全体を管理するシステムタスク又はアイドル中の処理を行なうアイドルタスクによって動作状態の移行が管理される場合がある。
【０００５】
システムタスクは、全タスクを管理するために優先度が最も高く設定されている。システムタスクによって状態の移行を管理する場合、ウェイクアップ状態へ移行させる際には、例えば割り込みなどのウェイクアップ要因でシステムタスク自身が起動し、起動したシステムタスクが全アプリケーションプログラムに対応するアプリケーションタスクを実行させる。またこの場合、スリープ状態へ移行させる際には、例えばシステムタスクは周期的に起動し、各アプリケーションプログラムタスクの実行状態を判定していずれのタスクも実行されていないと判断できる場合にスリープ状態へ移行させるなどのように構成される。
【０００６】
アイドルタスクは、常時的に起動している一方で優先度が最も低く設定されており、各アプリケーションタスクが実行されていない間に処理を実行する。アイドルタスクによって状態の移行を管理する場合、ウェイクアップ状態へ移行させる際には、例えばアイドルタスクはウェイクアップ要因を検知し、各アプリケーションタスクを起動させる。このとき、必要に応じて、即ちウェイクアップ要因の内容に応じてアプリケーションタスクを起動させる構成も考えられる。またスリープ状態へ移行させる際には、アイドルタスクは、全アプリケーションタスクがスリープ状態への移行が可能な状態となったことを検知した場合にスリープ状態へ移行させる。
【０００７】
図９は、アイドルタスクによって状態の移行を管理する場合の各タスクのタイムチャートである。図９は、横軸に時間の経過を示し、縦軸には各タスクにおける処理の実行開始／停止を、優先度が高い順に上から示している。図９に示す例では、アプリケーションタスクＸ、アプリケーションタスクＹ及びアイドルタスクが実行されるが、アプリケーションタスクＸが最も優先度が高い。図８に示すように、ｔ１の時点でアプリケーションタスクＹのウェイクアップ要因が発生し、アイドルタスクによって検知されると、アイドルタスクによってアプリケーションタスクＹの起動要求処理がなされ、アプリケーションタスクＹにおける処理が実行される。次にｔ２の時点でアプリケーションタスクＸのウェイクアップ要因が発生したとしても、アイドルタスクは処理を実行中のアプリケーションタスクＹよりも優先度が低いために、アプリケーションタスクＹによる処理が終了してタスクが停止するまでアプリケーションタスクＸの起動要求処理を実行することができず、待機させられる。そして、ｔ３の時点でアプリケーションタスクＹによる処理が終了して初めてアイドルタスクはアプリケーションタスクＸの起動要求処理を実行することができ、ｔ４の時点でアプリケーションタスクＸが起動される。
【０００８】
図９に示すようにアイドルタスクによって状態の移行が管理される場合、アイドルタスクがアプリケーションタスクＸのウェイクアップ要因を検知したときに対応するアプリケーションタスクＸを起動させようにも、他のアプリケーションタスクＹが実行されているときにはアイドルタスクの優先度が最も低く設定されているためにアプリケーションタスクＸの起動処理が待機させられる。そのため、ウェイクアップ要因の発生時点ｔ２と対応するアプリケーションタスクＸの起動の時点ｔ４との間の時間差が大きくなる。
【０００９】
そこで、ウェイクアップ状態からスリープ状態へ、又はスリープ状態からウェイクアップ状態への状態の移行の際に、無駄な動作を可及的に減少させ、消費電力を更に低減させることができる技術が特許文献１及び２に開示されている。詳細には、複数のアプリケーションタスクが夫々スリープ状態への移行可否を通知するようにしてあり、スリープ状態とウェイクアップ状態との間の移行を管理するタスクである状態管理タスク（システムタスク）が、各アプリケーションタスクから通知を受けて各アプリケーションタスクの実行状態を判定して状態の移行を管理する。そしてこの場合、状態管理タスクは各アプリケーションタスクの実行状態を判定するために、タスクの優先度が各アプリケーションタスクの優先度よりも高く設定されている。
【特許文献１】特開２００８−１０７９１４号公報
【特許文献２】特開２００８−１０２８３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１及び２に開示されている技術により、各アプリケーションタスクよりも優先度が高い状態管理タスク（システムタスク）が、各アプリケーションタスクからの通知を受けて効率的にスリープ状態へ移行させること、及び、ウェイクアップ要因に応じて選択的にアプリケーションタスクを起動させてウェイクアップ状態へ移行させることができる。状態管理タスクの優先度が各アプリケーションタスクの優先度よりも高く設定されているために、他のアプリケーションタスクが処理を実行中であっても、ウェイクアップ要因を検知した後、迅速にアプリケーション起動させることができる。
【００１１】
しかしながら、優先度が各アプリケーションタスクの優先度よりも高く設定された状態管理タスクが状態の移行を管理するようにしてあるために、逆に、状態の移行処理と実際の各アプリケーションタスクにおける実行状態との間で不整合が生じる場合がある。図１０は、優先度が高い状態管理タスクが状態の移行を管理する場合の各タスクのタイムチャートである。図１０は、図９同様に横軸に時間の経過を示し、縦軸には各タスクにおける処理の実行開始／停止を、優先度が高い順に上から示している。図１０に示す例では、アプリケーションタスクＺ、アプリケーションタスクＷ及び状態管理タスクが実行されるが、状態管理タスクが最も優先度が高い。状態管理タスクは定期的に起動して各アプリケーションタスクＺ、Ｗのスリープ状態へ移行可否を判断する。図１０に示すように、ｔ２１の時点でアプリケーションタスクＷがスリープ状態へ移行可となり、ｔ２２の時点でアプリケーションタスクＺがスリープ状態へ移行可となったが、ｔ２３の時点でアプリケーションタスクＷにて処理が続行されるためにスリープ状態へ移行不可とする処理を開始した場合を考える。この場合、アプリケーションタスクＺのスリープ状態へ移行不可とする処理が完了する前のｔ２４の時点で、状態管理タスクが起動する周期が到来したときには、状態管理タスクの優先度がアプリケーションタスクＷの優先度よりも高いためにアプリケーションタスクＷによる処理は後回しにされ、移行不可とする処理を完了することができないまま、いずれもスリープ状態へ移行可であると判断した状態管理タスクによって装置がスリープ状態へ移行される。
【００１２】
このように、アプリケーションタスクＺ、Ｗがスリープ状態への移行可を通知し、状態管理タスクがスリープ状態への移行処理を行なうに際し、一のアプリケーションタスクＷがスリープ状態へ移行不可とする処理を実行しようとしても、優先度の高い状態管理タスクが移行処理を続行し、前記一のアプリケーションタスクＷの処理は後にされる。これにより、各アプリケーションタスクＷではスリープ状態への移行不可であるにも拘わらず、装置としてスリープ状態へ移行しようとするなどの不整合が起こり得る。
【００１３】
本発明は斯かる事情に鑑みてなされたものであり、ウェイクアップ状態からスリープ状態へ、又はスリープ状態からウェイクアップ状態へのいずれの際にも、適切且つ効率的に状態を移行させることを可能とし、消費電力を有効に低減させることができる処理装置、処理方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
第１発明に係る処理装置は、複数の処理を実行する実行手段と、自身の動作を休止する休止状態へ移行させる手段とを備え、前記実行手段は、前記複数の処理夫々に予め設定された優先度に従って各処理を実行するようにしてある処理装置において、前記実行手段は、休止状態及び非休止状態の切り替えを行なう切替処理と、該切替処理よりも優先度が高い第１処理と、該第１処理と対応する処理であって前記切替処理よりも優先度が低い第２処理とを実行するようにしてあり、自身が休止状態であるか否かを判断する手段を備え、休止状態であると判断した場合に第２処理を実行し、非休止状態であると判断した場合に第１処理を実行するようにしてあることを特徴とする。
【００１５】
第２発明に係る処理装置は、第１処理及び第２処理は、同一の処理であることを特徴とする。
【００１６】
第３発明に係る処理装置は、前記実行手段は更に、第１処理及び第２処理のいずれかを選択して起動する前記第１処理よりも優先度が高い起動処理を実行するようにしてあることを特徴とする。
【００１７】
第４発明に係る処理方法は、複数の処理を夫々に予め設定された優先度に従って実行するようにしてあり、自身の動作を休止する休止状態へ移行させることが可能に構成してある処理装置における処理方法において、前記処理装置は、前記処理として、自身の休止状態及び非休止状態の切り替えを行なう切替処理と、該切替処理よりも優先度が高い第１処理と、該第１処理と対応する処理であって前記切替処理よりも優先度が低い第２処理とを夫々優先度に従って実行するようにしてあり、自身が休止状態であるか否かを判断し、休止状態であると判断した場合に第２処理を実行し、非休止状態であると判断した場合に第１処理を実行することを特徴とする。
【００１８】
第５発明に係るコンピュータプログラムは、コンピュータに、複数の処理を夫々に予め設定された優先度に従って実行させ、自身の動作を休止する休止状態へ移行させるコンピュータプログラムにおいて、コンピュータに、前記処理として、自身の休止状態及び非休止状態の切り替えを行なう切替処理と、該切替処理よりも優先度が高い第１処理と、該第１処理と対応する処理であって前記切替処理よりも優先度が低い第２処理と自身の休止状態及び非休止状態の切り替えを行なう切替処理とを優先度に従って実行させるステップと、自身が休止状態であるか否かを判断するステップとを含み、休止状態であると判断した場合に第２処理を実行させ、非休止状態であると判断した場合に第１処理を実行させることを特徴とする。
【００１９】
第１発明、第４発明及び第５発明では、装置自身の動作が休止される休止状態と非休止状態との切替処理に対し、任意の第１処理の優先度が高く、第１処理に対応する第２処理の優先度が低く設定される。休止状態では切替処理よりも優先度が低い第２処理が実行されるので、切替処理が他の処理よりも優先される。一方、非休止状態では、切替処理よりも優先度が高い第１処理が選択されるので、切替処理は他の処理よりも後回しとなる。これにより、休止状態から非休止状態への切り替え要因が発生したときに、非休止状態への切り替えが他の処理よりも優先されるので迅速に行なわれる。また、非休止状態から休止状態への切り替えの際には、休止状態への切り替えが他の処理も後回しとなるので、非休止状態へ戻る処理が行われる場合に妨げとならない。
【００２０】
なお、第１処理、第２処理などの各処理は、処理を一又は複数含むタスクであってもよい。この場合、一又は複数の処理を一つのタスクとし、タスク単位で予め優先度が設定され、各タスクが優先度に従って実行される。この場合も、第１のタスク、切替処理を含むタスク、第２のタスクの順に優先度が高く設定されており、休止状態では切替処理を含むタスクよりも優先度が高い第２のタスクが実行され、非休止状態では切替処理を含むタスクよりも優先度が低い第１のタスクが実行される。これにより、非休止状態への切り替えが他の処理よりも優先されるので迅速に行なわれ、非休止状態から休止状態への切り替えが他の処理も後回しとなるので、非休止状態へ戻る処理が行われる場合に妨げとならない。
【００２１】
第２発明では、第１発明にて休止状態時に実行される第２処理、非休止状態時に実行される第１処理は同一の処理である。同一の処理であって、優先度が切替処理よりも高い処理と低い処理とを実行可能とすることにより、休止状態時及び非休止状態時のいずれでも適切、且つ迅速な状態の切り替えが行なわれる。
【００２２】
第３発明では、第１発明または第２発明において、第１処理又は第２処理のいずれかを選択して起動する起動処理が、他の処理よりも優先度が高い。これにより、休止状態から非休止状態への切り替え処理が迅速に行なわれた場合に、他に優先して第１処理の実行が迅速に開始される。また同様に、非休止状態から休止状態への切り替え処理が他の処理を妨げずに適切に行われた場合も、第２処理の実行が迅速に開始され、効率的となる。
【発明の効果】
【００２３】
本発明による場合、休止状態（スリープ状態）では休止状態から非休止状態（ウェイクアップ状態）への切り替えが優先されて迅速に行われると共に、非休止状態では、非休止状態から休止状態への切り替えが他の処理の妨げになることが回避されるので、状態の移行を適切に、且つ効率化とすることを可能とし、消費電力を有効に低減させることができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
【００２５】
なお、以下に示す実施の形態では、本発明に係る処理装置をマイクロコンピュータ（以下、マイコンという）に適用した場合を例に説明する。更に詳細には、以下の実施の形態では車両に搭載されて種々の制御を行なうＥＣＵ（Electronic Control Unit）のマイコンにおける処理に適用した例を示す。
【００２６】
（実施の形態１）
図１は、実施の形態１におけるマイコンの構成を示すブロック図である。マイコン１は、ＣＰＵ１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、及びＩ／Ｏ（Input／Output）部１３を含んで構成される。
【００２７】
ＣＰＵ１０は、ＲＯＭ１２に記憶されている各プログラムを読み出して実行することにより、マイコン１を特定の処理を行なうハードウェアとして動作させる。具体的には、ＣＰＵ１０は、ＲＯＭ１２に記憶されている制御プログラム１Ｐ及びアプリケーションプログラム１２１を読み出して実行することにより、ＲＡＭ１１と協働してＩ／Ｏ部１３を介して接続される外部機器の制御を行なう。例えば、実施の形態１におけるマイコン１が搭載されるＥＣＵがボディ系のＥＣＵである場合、ヘッドライト、又はルームライト等が接続されており、マイコン１の制御によってライトのオン／オフが切り替えられる。
【００２８】
ＲＡＭ１１は、ＳＲＡＭ（Static Random Access Memory）又はＤＲＡＭ（Dynamic Random Access Memory）等のデータの書き換えが可能で且つ高速にアクセスすることが可能なメモリを利用する。ＲＡＭ１１には、ＣＰＵ１０にて実行される各種プログラムが読み出されて記憶されると共に、ＣＰＵ１０による演算処理の過程で発生するデータが一時的に記憶される。
【００２９】
ＲＯＭ１２は、フラッシュメモリ、マスクＲＯＭ、ＥＰＲＯＭ（Erasable Programmable ROM）、又はＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等の読み出し時にデータが失われないメモリを利用する。ＲＯＭ１２には、ＣＰＵ１０が読み出して実行する制御プログラム１Ｐが記憶されている。また、ＲＯＭ１２にはＥＣＵの制御機能を実現する種々のアプリケーションプログラム１２１，１２１，…が記憶されている。また、ＲＯＭ１２にはＣＰＵ１０が参照するタスクテーブル１２２が記憶されている。タスクテーブル１２２の詳細については後述にて説明する。
【００３０】
Ｉ／Ｏ部１３は、外部からの信号入力を受け付けると共に、外部への信号出力を実現する複数の端子を含むインタフェースである。Ａ／Ｄ変換、Ｄ／Ａ変換機能を有している構成としてもよい。例えば、Ｉ／Ｏ部１３には、マイコン１の制御に用いられるデータを取得する測定器、センサ等が接続される。ＣＰＵ１０は、Ｉ／Ｏ部１３により取得されるデータを用いて制御が可能である。また、Ｉ／Ｏ部１３にはネットワークコントローラが接続され、ＣＰＵ１０はネットワークを介して送受信されるデータを取得することが可能であってもよい。Ｉ／Ｏ部１３にはマイコン１による制御対象である各種負荷、又はアクチュエータが接続されており、マイコン１はＩ／Ｏ部１３により制御信号を制御対象へ出力する。
【００３１】
また、マイコン１は図示しないクロックからのクロック信号に同期して処理を行なうように構成されているが、特段処理を実行しなくてもよい場合にはクロックの周波数を低減することが可能に構成されている。又は、図示しない電源回路にて供給電圧を下げることが可能に構成されていてもよい。マイコン１は、クロックの周波数の低減又は供給電圧の低下させる処理を行なうことによって、消費電力が通常時よりも少ないスリープ状態へ移行することが可能に構成されている。例えば、実施の形態１におけるマイコン１が搭載されるＥＣＵがボディ系のＥＣＵである場合、イグニッションスイッチがオフであって車両が停止している間も、イグニッションスイッチがオフにされた直後はルームランプを点灯させる処理、ドアが開けられた際にルームランプを点灯させる処理などが必要となるから、ＥＣＵのマイコンは完全に電力が供給されない状態にあるわけではなくスリープ状態にある。
【００３２】
上述のように構成されるマイコン１にて、制御プログラム１Ｐに基づき実行されるソフトウェア的処理について説明する。図２は、実施の形態１におけるマイコン１によって実行されるソフトウェア構成を模式的に示す説明図である。図２中の各矩形は、ＣＰＵ１０が制御プログラム１Ｐを読み出すことによって実行される処理単位（タスク）を示す。
【００３３】
マイコン１のＣＰＵ１０は、ＲＯＭ１２から制御プログラム１Ｐを読み出して実行することにより、システムタスク１０１、状態管理タスク１０２を実行させ、更に、ＲＯＭ１２からアプリケーションプログラム１２１，１２１，…を読み出して実行することにより、各アプリケーションタスクＡ２０，Ｂ３０，…を実行させる。アプリケーションタスクＡ２０，Ｂ３０は夫々、詳細な処理、機能毎に分割されるアプリケーションモジュールＡ−１〜Ａ−Ｎ（２０１，…，２０ｎ），アプリケーションモジュールＢ−１〜Ｂ−Ｎ（３０１，…，３０ｎ）を実行するように設計されている。
【００３４】
実施の形態１におけるマイコン１が制御プログラム１Ｐを読み出して実行することにより、各アプリケーションタスクＡ２０，Ｂ３０，…と夫々同一のアプリケーションモジュールＡ−１〜Ａ−Ｎ（２０１，…，２０ｎ），アプリケーションモジュールＢ−１〜Ｂ−Ｎ（３０１，…，３０ｎ）を実行するアプリケーションタスクＡ´２１，Ｂ´３１が実行可能である。アプリケーションタスクＡ２０とアプリケーションタスクＡ´２１とは、後述するように設定される優先度が異なるだけで、同一の処理を実行するタスクである。なお、アプリケーションタスクＡ２０とアプリケーションタスクＡ´２１とは、完全に同一の処理を実行するように構成されていなくともよい。後述するように、アプリケーションタスクＡ´２１はスリープ状態時に起動されるので、一部の処理が省略されているなど、スリープ状態時用に一部異なって構成されていてもよい。同様に、アプリケーションタスクＢ３０とアプリケーションタスクＢ´３１とは同一、又は対応する処理を実行するタスクである。
【００３５】
システムタスク１０１は、各アプリケーションタスクＡ２０，Ｂ３０，…，Ａ´２１，Ｂ´３１，…を選択して起動し、マイコン１全体の処理を制御する。詳細にはシステムタスク１０１は、マイコン１がスリープ状態であるか否か、即ちスリープ状態であるか非スリープ状態（ウェイクアップ状態）であるかを判断し、非スリープ状態である場合には図２中実線にて示すようにアプリケーションタスクＡ２０，Ｂ３０，…を選択して起動し、スリープ状態である場合には図２中破線にて示すようにアプリケーションタスクＡ´２１，Ｂ´３１，…を選択して起動する。
【００３６】
状態管理タスク１０２は、各アプリケーションタスクＡ２０，Ｂ３０，…，Ａ´２１，Ｂ´３１，…の実行状態を判定する処理、及び各実行状態に基づくマイコン１全体におけるスリープ状態とウェイクアップ状態との間での移行切り替えを行なう。
【００３７】
なお、システムタスク１０１、状態管理タスク１０２、各アプリケーションタスクＡ２０，Ｂ３０，…，Ａ´２１，Ｂ´３１，…などの各タスクには、ＲＯＭ１２に記憶されているタスクテーブル１２２にて優先度が予め設定されている。図３は、実施の形態１におけるＲＯＭ１２に記憶されるタスクテーブル１２２の内容例を示す説明図である。図３の説明図に示す内容例では、各タスクを識別するための名称に対し、タスク優先度が対応付けられている。図３の内容例では、タスク優先度は数字が大きいほど優先度が高いことを示している。
【００３８】
図３に示すように、同一の処理を行なうように設計されているアプリケーションタスクＡ２０，Ｂ３０，…とアプリケーションタスクＡ´２１，Ｂ´３１，…とでは、非スリープ状態時に起動されるアプリケーションタスクＡ２０，Ｂ３０，…の優先度がより高く設定されている。更に、各タスクの実行状態を判定してマイコン１全体におけるスリープ状態とウェイクアップ状態との間での移行切り替えを行なう状態管理タスク１０２の優先度は、非スリープ状態時に起動されるアプリケーションタスクＡ２０，Ｂ３０，…の優先度よりも低く、スリープ状態時に起動されるアプリケーションタスクＡ´２１，Ｂ´３１，…の優先度よりも高くなるように設定されている。
【００３９】
また、図３に示す内容例では、システムタスク１０１の優先度は最も高く設定されており、他のタスクに優先してアプリケーションタスクＡ２０，Ｂ３０，…，Ａ´２１，Ｂ´３１，…の起動処理が行なわれるようにしてある。
【００４０】
ＣＰＵ１０は、各タスクにおける処理を優先度に従って実行する。つまり、優先度がより高いタスクは、他のタスクにおける処理中であっても割り込みをかけて処理を実行するようにしてある。図３に示すように優先度が設定され、スリープ状態であるか否かによって実行されるアプリケーションタスクＡ２０，Ｂ３１，…，Ａ´２１，Ｂ´３１，…が選択されることにより、非スリープ状態時には各アプリケーションタスクＡ２０，Ｂ３０，…よりも状態管理タスク１０２の優先度が最も低くなり、スリープ状態時には各アプリケーションタスクＡ´２１，Ｂ´３１，…よりも状態管理タスク１０２の優先度が高くなる。
【００４１】
システムタスク１０１は、Ｉ／Ｏ部１３を介して取得される情報、具体的には測定器、センサ、又は外部スイッチの情報に応じて各アプリケーションタスクＡ２０，Ｂ３０，…，Ａ´２１，Ｂ´３１，…を起動させる。いずれのアプリケーションタスクＡ２０，Ｂ３０，…，Ａ´２１，Ｂ´３１，…を起動するかは、ＣＰＵ１０がシステムタスク１０１として動作することにより、Ｉ／Ｏ部１３を介して取得される情報に対応して選択する。特に、マイコン１の状態をスリープ状態からウェイクアップ状態へ移行させる要因となるウェイクアップ要因が検知された場合には、状態管理タスク１０２は状態を移行させると共にシステムタスク１０１に通知して対応するアプリケーションタスクＡ２０，Ｂ３０，…，Ａ´２１，Ｂ´３１，…のいずれかを起動させる。ウェイクアップ要因は、ＲＯＭ１２にテーブルとして記憶されており、ＣＰＵ１０によって参照可能であってもよいし、制御プログラム１Ｐに組み込まれていてもよい。
【００４２】
図４は、実施の形態１におけるウェイクアップ要因の内容例を示す説明図である。図４に示すように、要因１、要因２、…に対し、起動させるアプリケーションタスクＡ２０（Ａ´２１），Ｂ３０（Ｂ´３１），…が対応付けられている。ウェイクアップ要因が発生した場合には、状態管理タスク１０２によって検知され、システムタスク１０１に通知されるとする。
【００４３】
図４に示す内容例の場合、システムタスク１０１は、要因１が発生したとき、例えばスリープ状態へ移行後１００ミリ秒が経過したときには、アプリケーションタスクＡ２０（Ａ´２１）は起動させずに、アプリケーションタスクＢ３０（Ｂ´３１）を起動させる。特に、スリープ状態である場合にはシステムタスク１０１は、アプリケーションタスクＢ´３１を起動させる。なお、スリープ状態時に要因１が発生して状態管理タスク１０２がこれを検知したとしても、状態管理タスク１０２によりウェイクアップ状態へは移行されない。要因１が発生した場合には、アプリケーションタスクＡ２０（Ａ´２１）は起動されず、以後にアプリケーションタスクＡ２０（Ａ´２１）を起動させるウェイクアップ要因が発生した場合に迅速にこれを検知してするため、状態管理タスク１０２の優先度が高く保たれている必要がある。一方、システムタスク１０１は、要因２が発生したとき、例えばイグニッションスイッチがオンとなったときには、全てのアプリケーションタスクＡ２０，Ｂ３０，…を起動させる。要因２が発生したときには状態管理タスク１０２は、全てのアプリケーションタスクＡ２０，Ｂ３０，…を起動させる要因であるので、ウェイクアップ状態へ移行させる。
【００４４】
このように構成されるマイコン１のＣＰＵ１０がシステムタスク１０１及び状態管理タスク１０２として、状態の切り替え処理及び各タスクの起動処理を行なう手順についてフローチャートを参照して説明する。
【００４５】
図５は、実施の形態１におけるマイコン１のＣＰＵ１０による状態の切り替え処理及び各タスクの起動処理の手順の一例を示すフローチャートである。ＣＰＵ１０は、ＲＯＭ１２に記憶されている制御プログラム１ＰをＲＡＭ１１に読み出して実行することにより、以下に示す処理を実行する。なお、以下に示す処理手順は、マイコン１が搭載されるＥＣＵにバッテリーなどの電源供給装置から電力が供給され、マイコン１自体がリセットされた時点で開始される。そして、マイコン１が再度リセットされるか、又は電源供給装置からの電力の供給が完全に停止されるまで続行される。リセット時は、全アプリケーションタスクＡ２０，Ｂ３０，…が起動されてウェイクアップ状態となる。
【００４６】
ＣＰＵ１０はウェイクアップ状態時に、状態管理タスク１０２としての動作により、ウェイクアップ状態で実行されている全アプリケーションタスクＡ２０，Ｂ３０，…がスリープ移行可であることを通知したか否かを判断する（ステップＳ１）。ＣＰＵ１０は、全アプリケーションタスクＡ２０，Ｂ３０，…がスリープ移行可であることを通知してはいないと判断した場合（Ｓ１：ＮＯ）、処理をステップＳ１へ戻し、ウェイクアップ状態における処理を続行させる。
【００４７】
ＣＰＵ１０は、全アプリケーションタスクＡ２０，Ｂ３０，…がスリープ移行可であることを通知したと判断した場合（Ｓ１：ＹＥＳ）、マイコン１の動作状態をスリープ状態へ移行させる（ステップＳ２）。具体的には、ＣＰＵ１０は、図示しないクロックへクロック周波数を下げるように変更指示を与えるか、又は図示しない電源回路へ電圧値を低減させるべく指示を与えるなどの処理を行なう。
【００４８】
ＣＰＵ１０はスリープ状態へ移行後、状態管理タスク１０２としての動作によりウェイクアップ要因を検知したか否かを判断する（ステップＳ３）。ＣＰＵ１０は、ウェイクアップ要因を検知していないと判断した場合（Ｓ３：ＮＯ）、処理をステップＳ３へ戻してウェイクアップ要因を検知したと判断するまで待機する。ＣＰＵ１０はステップＳ３にてウェイクアップ要因を検知していないと判断した場合（Ｓ３：ＮＯ）、例えば１０ミリ秒などの一定期間待機してから、状態管理タスク１０２として自身を起動させてステップＳ３へ処理を戻すようにしてもよい。システムタスク１０１としても定期的に、ステップＳ３のウェイクアップ要因が発生しているか否かの判断処理を行なうようにしてもよい。
【００４９】
ＣＰＵ１０は、状態管理タスク１０２としての動作によりステップＳ３にてウェイクアップ要因を検知したと判断した場合（Ｓ３：ＹＥＳ）、検知したウェイクアップ要因に応じてウェイクアップ状態へ移行するか否かを判断する（ステップＳ４）。ＣＰＵ１０は、例えばステップＳ３にて検知したと判断したウェイクアップ要因が図４に示す要因１である場合には、ウェイクアップ状態へ移行しないと判断し、図４に示す要因２である場合には、ウェイクアップ状態へ移行すると判断する。
【００５０】
ＣＰＵ１０は、ステップＳ３にてウェイクアップ要因を検知したが、そのウェイクアップ要因によってステップＳ４にてウェイクアップ状態へ移行しないと判断した場合（Ｓ４：ＮＯ）、スリープ状態のままとし、システムタスク１０１の動作により、スリープ状態時において対応するアプリケーションタスクＡ´２１，Ｂ´３１，…の内のいずれかを選択して起動し（ステップＳ５）、処理をステップＳ３へ戻す。このとき依然としてマイコン１の動作状態はスリープ状態である。
【００５１】
ＣＰＵ１０は、ステップＳ３にてウェイクアップ要因を検知し、そのウェイクアップ要因によってステップＳ４にてウェイクアップ状態へ移行すると判断した場合（Ｓ４：ＹＥＳ）、ウェイクアップ状態へ移行する（ステップＳ６）。具体的には、ＣＰＵ１０は、図示しないクロックへクロック周波数を上げるように変更指示を与えるか、又は図示しない電源回路へ電圧値を上昇させるべく指示を与えるなどの処理を行なう。そしてＣＰＵ１０は、システムタスク１０１の動作により、ウェイクアップ状態時において対応するアプリケーションタスクＡ２０，Ｂ３０，…の内のいずれかを選択して起動し（ステップＳ７）、ウェイクアップ状態へ移行したので処理をステップＳ１へ戻して処理を継続する。
【００５２】
図５のフローチャートに示した処理は上述したように、マイコン１が再度リセットされるか、又は電源供給装置からの電力の供給が完全に停止されるまで続行される。
【００５３】
図５のフローチャートに示した処理を行なうことにより、スリープ状態時は状態管理タスク１０２の優先度が他のアプリケーションタスクＡ´２１，Ｂ´３１，…よりも高くなり、ウェイクアップ要因を検知した場合のシステムタスク１０１によるアプリケーションタスクの起動処理は迅速に行なわれる。一方、ウェイクアップ状態時は、状態管理タスク１０２の優先度は他のアプリケーションタスクＡ２０，Ｂ３０，…よりも低くなり、各アプリケーションタスクＡ２０，Ｂ３０，…がいずれも完全にスリープ移行可の状態とならない限り、スリープ状態への移行処理は行なわれない。
【００５４】
次に、図５のフローチャートに示したようにＣＰＵ１０が、状態管理タスク１０２及びシステムタスク１０１としての動作により、状態の移行の切り替えを行ない、状態に応じて優先度が異なるタスクを選択して起動する処理を具体例を挙げて説明する。図６は、実施の形態１におけるマイコン１のＣＰＵ１０によって実行される各タスクの処理を示すタイムチャートである。横軸に時間の経過を示し、縦軸には各タスクにおける処理の実行開始／停止を、優先度が高い順に上から示している。なお説明図の下部には時間の経過に応じて移行されるマイコン１の動作状態を示す。
【００５５】
図６に示す例では、ウェイクアップ状態時にアプリケーションタスクＡ２０，Ｂ３０が実行されており、いずれのタスクからもスリープ状態へ移行可を示す「SleepOK」が通知されている。状態管理タスク１０２は定期的に各アプリケーションにおける実行状態を判断し、ｔ１の時点の周期で、アプリケーションタスクＡ２０，Ｂ３０のいずれからも「SleepOK」の通知がされていることを検知し、動作状態をスリープ状態へ移行させる。
【００５６】
その後、スリープ状態中の時点ｔ２で要因１であるウェイクアップ要因が発生した場合、状態管理タスク１０２は当該ウェイクアップ要因を検知する。状態管理タスク１０２からは、システムタスク１０１へ要因１に対応するアプリケーションタスクの起動要求が通知される。システムタスク１０１は要因１に対応するアプリケーションタスクであって、スリープ状態時に選択すべきものとしてアプリケーションタスクＢ´３１を選択して起動させ、処理を実行させる（図４参照）。なお、要因１ではウェイクアップ状態へ移行しないと判断されるから、スリープ状態のまま維持される。
【００５７】
アプリケーションタスクＢ´３１における処理の実行中の時点ｔ３に、要因２であるウェイクアップ要因が発生した場合、状態管理タスク１０２は当該ウェイクアップ要因を検知する。このとき、スリープ状態であるから状態管理タスク１０２の優先度が、アプリケーションタスクＢ´３１の優先度よりも高い（図３参照）。したがって、アプリケーションタスクＢ´３１における処理の実行中であっても、処理が中断されてウェイクアップ要因の発生に対し、状態管理タスク１０２によって迅速に検知がなされる。状態管理タスク１０２は、ウェイクアップ要因として要因２を検知したから、ウェイクアップ状態へ移行させると共に、システムタスク１０１へ要因２に対応するアプリケーションタスクの起動要求が通知される。システムタスク１０１は、要因２に対応するアプリケーションタスクであって、ウェイクアップ状態時に選択すべきものとしてアプリケーションタスクＡ２０及びアプリケーションタスクＢ３０を選択して起動させ、処理を実行させる（図４参照）。なおこのとき、アプリケーションタスクＢ３０における処理は、アプリケーションタスクＢ´３１にて処理を実行中であるために回避される。そしてアプリケーションタスクＢ´３１と要因２によるアプリケーションタスクＡ２０とでは、アプリケーションタスクＡ２０の優先度が高いので、優先してアプリケーションタスクＡ２０における処理が実行される。アプリケーションタスクＡ２０における処理が終了した時点ｔ４にて、アプリケーションタスクＢ´３１の処理が以後、継続して実行される。
【００５８】
このように、実施の形態１におけるマイコン１では、状態管理タスク１０２の優先度が、スリープ状態時に実行される各アプリケーションタスクＡ´２１，Ｂ´３１，…の優先度よりも高く設定されているために、ウェイクアップ要因が発生したときに、他のアプリケーションタスクＡ´２１，Ｂ´３１，…が処理を実行中であっても、迅速に対応するアプリケーションタスクを起動させることができる。一方、ウェイクアップ時は、状態管理タスク１０２の優先度が、ウェイクアップ状態時に実行される各アプリケーションタスクＡ２０，Ｂ３０，…の優先度よりも低く設定されているために、全アプリケーションタスクＡ２０，Ｂ３０，…にてスリープ状態への移行が可となって移行処理が開始されたとしても、もしスリープ状態への移行が不可となる処理が状態管理タスク１０２によって行われようとするときには移行処理は中断される。このようにして、迅速に状態移行を行なうことができると共に、不整合が生じないようにする適切且つ効率的な状態移行をさせることを可能となる。したがって、消費電力を低減させるスリープ状態へ有効に移行でき、消費電力を有効に低減させることができる。
【００５９】
なお、実施の形態１では、マイコン１はアプリケーションタスクＡ２０，Ｂ３０，…と、アプリケーションタスクＡ´２１，Ｂ´３１，…とを夫々実行することが可能に構成した。つまり、同一の処理を実行させるタスクの優先度を、スリープ状態時と非スリープ時で状態管理タスク１０２に対し上下させるために、静的に用意されてある別々のタスクを実行する構成とした。ＯＳ（Operating System）が動作する構成とし、ＯＳにより動的に優先度を変えるしくみも考えられるが、ＯＳを介在させずに、予め異なる優先度が静的に設定された各アプリケーションタスクＡ２０，Ｂ３０，…，Ａ´２１，Ｂ´３１，…を実行する構成とすることにより、ソフトウェア構造を単純化し、処理を軽量化することができる利点を有する。
【００６０】
（実施の形態２）
実施の形態１のマイコン１では、ウェイクアップ状態時に実行されるアプリケーションタスクＡ２０，Ｂ３０，…のいずれにも対応して、スリープ状態時にはアプリケーションタスクＡ´２１，Ｂ´３１，…が実行される構成であった。しかしながら、スリープ状態時に全てのアプリケーションタスクＡ２０，Ｂ３０，…に対応する処理が実行されることは必ずしも必要ではない。実施の形態２では、一部のアプリケーションタスクＢ３０のみに対して、スリープ状態用のアプリケーションタスクＢ´３１が起動可能に構成される。
【００６１】
実施の形態２におけるマイコン１の構成は、ソフトウェア構成の一部及びＲＯＭ１２に記憶されるタスクテーブル１２２の内容が一部異なる以外は同様である。したがって、実施の形態１と共通する構成には同一の符号を付し、詳細な説明を省略する。
【００６２】
図７は、実施の形態２におけるソフトウェア構成を模式的に示す説明図である。図７中の各矩形は、ＣＰＵ１０が制御プログラム１Ｐを読み出すことによって実行される処理単位（タスク）を示す。実施の形態２においても、マイコン１のＣＰＵ１０ににより、システムタスク１０１、状態管理タスク１０２が実行され、更にアプリケーションタスクＡ２０，Ｂ３０，…が実行される。アプリケーションタスクＡ２０，Ｂ３０は夫々、詳細な処理、機能毎に分割されるアプリケーションモジュールＡ−１〜Ａ−Ｎ（２０１，…，２０ｎ），アプリケーションモジュールＢ−１〜Ｂ−Ｎ（３０１，…，３０ｎ）を実行するように設計されている。
【００６３】
実施の形態２では、ＣＰＵ１０はアプリケーションタスクＢ３０と夫々同一のアプリケーションモジュールＢ−１〜Ｂ−Ｎ（３０１，…，３０ｎ）を実行するアプリケーションタスクＢ´３１のみが実行可能である。アプリケーションタスクＢ３０とアプリケーションタスクＢ´３１とは同一、又は対応する処理を実行するタスクである。アプリケーションタスクＡ２０に対応するアプリケーションタスクＡ´２１は存在しない。スリープ状態時にアプリケーションタスクＡ２０に対応する処理が実行されることがないように構成されているからである。
【００６４】
実施の形態２におけるシステムタスク１０１は、ウェイクアップ状態時には必要に応じてアプリケーションタスクＡ２０，Ｂ３０，…を選択して起動し、マイコン１全体の処理を制御する。そして、システムタスク１０１は、スリープ状態時には、図７中の破線にて示すようにアプリケーションタスクＢ´３１を選択して起動する場合がある。
【００６５】
図８は、実施の形態２におけるタスクテーブル１２２の内容例を示す説明図である。図８の説明図に示す内容例では、各タスクを識別するための名称に対し、タスク優先度が対応付けられている。タスク優先度は数字が大きいほど優先度が高いことを示している。
【００６６】
図８に示すように、非スリープ状態時に起動されるアプリケーションＢ３０と同一の処理を行なうように設計されているアプリケーションタスクＢ´３１の優先度が最も低く設定されており、次に状態管理タスク１０２の優先度が低い。次いで、非スリープ状態時に起動されるアプリケーションタスクＡ２０，Ｂ３０の優先度が、状態管理タスク１０２の優先度よりも高く設定されており、アプリケーションタスクＡ２０の優先度がより高い。そして、システムタスク１０１の優先度が最も高く設定されており、他のタスクに優先してアプリケーションタスクＡ２０，Ｂ３０，…，Ｂ´３１，…の起動処理が行なわれるようにしてある。
【００６７】
このように、実施の形態２におけるマイコン１でも、状態管理タスク１０２の優先度が、スリープ状態時に起動される可能性のあるアプリケーションタスクＢ´３１の優先度よりも高く設定されているために、ウェイクアップ要因が発生したときに、アプリケーションタスクＢ´３１，…が処理を実行中であっても、迅速に対応する他のアプリケーションタスクを起動させることができる。一方、ウェイクアップ時は、状態管理タスク１０２の優先度が、ウェイクアップ状態時に実行される各アプリケーションタスクＡ２０，Ｂ３０，…の優先度よりも低く設定されているために、全アプリケーションタスクＡ２０，Ｂ３０，…にてスリープ状態への移行が可となって移行処理が開始されたとしても、もしスリープ状態への移行が不可となる処理が状態管理タスク１０２によって行われようとするときには移行処理は中断される。このようにして、迅速に状態移行を行なうことができると共に、不整合が生じないようにする適切且つ効率的な状態移行をさせることが可能となる。したがって、消費電力を低減させるスリープ状態へ有効に移行でき、消費電力を有効に低減させることができる。
【００６８】
また、実施の形態２では、アプリケーションタスクＡ２０に対応する処理は、スリープ状態時には起動されないように構成されているため、アプリケーションタスクＡ´２１はタスクテーブル１２２に含まれていない。ウェイクアップ要因によっては、全アプリケーションタスクＡ２０，Ｂ３０，…が起動されず、スリープ状態のまま一部のアプリケーションタスクの処理が行なわれるのみである場合がある。このような場合、実施の形態２のように予めソフトウェア構成、及び優先度の設定が、スリープ状態時に一部のアプリケーションタスクが起動するようになされることで、より構成が単純化され、処理を効率的とすることが可能となる。
【００６９】
なお、上述のように開示された実施の形態１及び２はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００７０】
【図１】実施の形態１におけるマイコンの構成を示すブロック図である。
【図２】実施の形態１におけるマイコンによって実行されるソフトウェア構成を模式的に示す説明図である。
【図３】実施の形態１におけるＲＯＭに記憶されるタスクテーブルの内容例を示す説明図である。
【図４】実施の形態１におけるウェイクアップ要因の内容例を示す説明図である。
【図５】実施の形態１におけるマイコンのＣＰＵによる状態の切り替え処理及び各タスクの起動処理の手順の一例を示すフローチャートである。
【図６】実施の形態１におけるマイコンのＣＰＵによって実行される各タスクの処理を示すタイムチャートである。
【図７】実施の形態２におけるソフトウェア構成を模式的に示す説明図である。
【図８】実施の形態２におけるタスクテーブルの内容例を示す説明図である。
【図９】アイドルタスクによって状態の移行を管理する場合の各タスクのタイムチャートである。
【図１０】優先度が高い状態管理タスクが状態の移行を管理する場合の各タスクのタイムチャートである。
【符号の説明】
【００７１】
１  マイコン
１０  ＣＰＵ
１２  ＲＯＭ
１Ｐ  制御プログラム（コンピュータプログラム）
１０１  システムタスク（起動処理）
１０２  状態管理タスク（切替処理）
２０，３０，…  アプリケーションタスクＡ，Ｂ，…（第１処理）
２１，３１，…  アプリケーションタスクＡ´，Ｂ´，…（第２処理）
【図１】
2010097427.tif 000003
【図２】
2010097427.tif 000004
【図３】
2010097427.tif 000005
【図４】
2010097427.tif 000006
【図５】
2010097427.tif 000007
【図６】
2010097427.tif 000008
【図７】
2010097427.tif 000009
【図８】
2010097427.tif 000010
【図９】
2010097427.tif 000011
【図１０】
2010097427.tif 000012