(57)【特許請求の範囲】
【請求項１】
動作クロックに従って、複数のアプリケーション・プログラムの各々に基づく制御処理を実行するマイクロコンピュータにおいて、
高速・低速のいずれかの前記動作クロックを生成可能であり、且つ、前記動作クロックを停止することができる動作クロック生成手段と、
前記複数のアプリケーション・プログラム、及び、前記複数のアプリケーション・プログラムそれぞれの制御状態を管理し前記動作クロックを切り換えるための状態管理用プログラムが記憶されている記憶手段と、
前記状態管理用プログラムに基づき、各アプリケーション・プログラムの制御状態を監視して、前記動作クロックを高速・低速・停止の何れにするかを判断し、前記動作クロック生成手段に対して、高速・低速の設定、及び、動作クロックの生成・停止の制御を行うＣＰＵと、
を備え、
前記ＣＰＵは、
マイクロコンピュータの起動後は、前記動作クロックを高速に設定し、
高速の前記動作クロックに従ってマイクロコンピュータが高速動作しているときに、各アプリケーション・プログラムに基づく全ての制御処理が終了したと判断すると、マイクロコンピュータがスリープ状態から動作状態に復帰した際に低速動作するように前記動作クロックを低速に設定し、その後、マイクロコンピュータを前記スリープ状態に移行させるために前記動作クロックを停止させ、
予め設定されたウェイクアップ時間が経過するか、或いは、外部からウェイクアップ要求が入力されることによりマイクロコンピュータが前記スリープ状態から前記動作状態に復帰して低速動作しているとき、前記複数のアプリケーション・プログラムの何れかによる制御処理に移行すると判断した場合は、前記動作クロックを高速に設定する制御を行っており、
前記複数のアプリケーション・プログラムの何れかに基づく制御処理を実行している間は前記動作クロックを高速から低速に切り換えることはできないことを特徴としたマイクロコンピュータ。
【請求項２】
前記マイクロコンピュータは、起動直後に初期化処理を実行するように構成され、
前記動作クロック生成手段は、さらに、前記高速よりも遅い基準速度の動作クロックを生成可能であり、
前記ＣＰＵは、起動直後に初期化処理を実行する間は、前記動作クロックを前記基準速度に設定し、その後、前記動作クロックを高速に設定する制御を行っており、
前記基準速度の動作クロックは、前記初期化処理を実行している間でのみ使用されることを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項３】
前記マイクロコンピュータは、自動車に搭載されて、自動車各部を制御することを特徴とする請求項１又は請求項２に記載のマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータの処理負荷に応じてマイクロコンピュータの動作クロックを切り換える動作クロック設定装置に関する。
【０００２】
【従来の技術】
従来より、マイクロコンピュータの消費電力を低減したり、発熱を抑えるために、マイクロコンピュータの動作クロックを、マイクロコンピュータの処理負荷に応じて切り換える動作クロック設定装置が知られている。
【０００３】
【発明が解決しようとする課題】
ところが、従来の動作クロック設定装置は、例えば、特開平６−１２４１５０号公報に記載のように、マイクロコンピュータの処理負荷が大きい場合には動作クロックを高速に設定し、処理負荷が小さい場合には動作クロックを低速に設定するように構成されていたことから、マイクロコンピュータの動作クロックを高速から低速に切り換えた際に、マイクロコンピュータの処理動作に遅れが生じ、マイクロコンピュータによる制御を安定して実行できなくなるという問題があった。
【０００４】
つまり、マイクロコンピュータは、一般に、各種装置の制御に用いられるが、こうした制御のためのソフトウェアは、マイクロコンピュータの動作クロック（所謂システムクロック）に同期して時間を計時する計時用タイマにより、制御周期やタイミングを判断し、制御のための演算処理を行うように構成されている。
【０００５】
一方、システムクロックを高速から低速或いは低速から高速へと切り換えた場合、システムクロックの周波数は、その切換タイミングで即座に切り変わるわけではなく、ある時間幅の遅れ（ラグタイム）が生じる。そして、システムクロックを高速から低速に切り換えたときのラグタイムは、システムクロックを低速から高速に切り換えた場合に比べて著しく大きくなる。
【０００６】
また、システムクロックの低速から高速への切り換えは、通常、マイクロコンピュータが制御用ソフトウェアに従い各種制御を停止している状態から制御を開始するときに行われることから、システムクロックの切り換えに遅れが生じても制御の開始が遅れるだけであり、制御に支承を来すことはないが、システムクロックの高速から低速への切り換えは、マイクロコンピュータが制御用ソフトウェアに従い各種制御を実行しているときに行われる可能性がある。
【０００７】
そして、このように、マイクロコンピュータが制御用のソフトウェアに従い動作しているときに、システムクロックが高速から低速に切り換えられると、上記ラグタイムによって制御周期やタイミングに大きなずれを生じ、制御によっては、リアルタイム性を確保できなくなって、正常な制御を実行できなくなるのである。
【０００８】
本発明は、こうした問題に鑑みなされたものであり、マイクロコンピュータの動作クロックをマイクロコンピュータの処理負荷に応じて切り換える装置において、動作クロックを、マイクロコンピュータが実行する制御処理に影響を与えることなく最適に切り換えることができるようにすることを目的とする。
【０００９】
【課題を解決するための手段】
かかる目的を達成するためになされた請求項１に記載のマイクロコンピュータは、動作クロックに従って、複数のアプリケーション・プログラムの各々に基づく制御処理を実行するものであり、高速・低速のいずれかの動作クロックを生成可能であり、且つ、この動作クロックを停止することができる動作クロック生成手段と、複数のアプリケーション・プログラム、及び、これら複数のアプリケーション・プログラムそれぞれの制御状態を管理し動作クロックを切り換えるための状態管理用プログラムが記憶されている記憶手段と、状態管理用プログラムに基づき、各アプリケーション・プログラムの制御状態を監視して、動作クロックを高速・低速・停止の何れにするかを判断し、動作クロック生成手段に対して、高速・低速の設定、及び、動作クロックの生成・停止の制御を行うＣＰＵと、を備えている。
そして、ＣＰＵは、マイクロコンピュータの起動後は、動作クロックを高速に設定し、高速の動作クロックに従ってマイクロコンピュータが高速動作しているときに、各アプリケーション・プログラムに基づく全ての制御処理が終了したと判断すると、マイクロコンピュータがスリープ状態から動作状態に復帰した際に低速動作するように動作クロックを低速に設定し、その後、マイクロコンピュータをスリープ状態に移行させるために動作クロックを停止させる。
【００１０】
また、ＣＰＵは、予め設定されたウェイクアップ時間が経過するか、或いは、外部からウェイクアップ要求が入力されることによりマイクロコンピュータがスリープ状態から動作状態に復帰して低速動作しているとき、複数のアプリケーション・プログラムの何れかによる制御処理に移行すると判断した場合は、動作クロックを高速に設定する。
【００１１】
そして、本発明のマイクロコンピュータにおいて、マイクロコンピュータの高速動作からの動作クロックの切換は、動作クロックを停止するスリープ状態への移行に制限されており、複数のアプリケーション・プログラムの何れかに基づく制御処理を実行している間は動作クロックを高速から低速に切り換えることはできない。
この結果、本発明のマイクロコンピュータによれば、マイクロコンピュータの起動後、或いは、スリープ状態からの復帰後に動作クロックが高速に設定された際には、その後、マイクロコンピュータにて実行すべき一連の処理が全て終了するまでの間、動作クロックが変化することはない。
【００１２】
よって、本発明によれば、マイクロコンピュータが、制御用のソフトウェアである複数のアプリケーション・プログラムに基づく制御処理を実行しているときに、動作クロックの切り換えに伴い制御周期やタイミングにずれを生じて、安定した制御を実行できなくなるのを防止できる。
また、マイクロコンピュータがスリープ状態に移行するときには、マイクロコンピュータがスリープ状態から動作状態に復帰した際に低速動作するように、ＣＰＵが動作クロックを低速に設定し、その後、動作クロックを停止させるので、マイクロコンピュータのスリープ状態からの復帰時（ウェイクアップ時）には、マイクロコンピュータは低速動作する。そして、その後、ＣＰＵが、複数のアプリケーション・プログラムの何れかによる制御処理に移行すると判断したときにだけ、動作クロックを高速に切り換えるようにしているので、不要な電力消費を抑制し、また、マイクロコンピュータの発熱も抑制できる。
なお、請求項２に記載の発明は、請求項１に記載のマイクロコンピュータを、起動直後に初期化処理を実行するように構成し、動作クロック生成手段を、さらに、高速よりも遅い基準速度の動作クロックを生成可能に構成している。そして、ＣＰＵは、起動直後に初期化処理を実行する間は、動作クロックを基準速度に設定し、その後、動作クロックを高速に設定する制御を行い、基準速度の動作クロックは、初期化処理を実行している間でのみ使用されることを特徴としている。また、請求項３に記載の発明は、請求項１又は請求項２に記載のマイクロコンピュータを、自動車に搭載されて、自動車各部を制御するように構成したことを特徴としている。
【００１３】
【発明の実施の形態】
以下に本発明の実施例を図面と共に説明する。
図１は、本発明が適用されたマイクロコンピュータ（以下単にマイコンという）１０の構成を表すブロック図である。
【００１４】
本実施例のマイコン１０は、例えば、自動車に搭載されて、自動車各部を制御するために用いられるものであり、図１に示すように、予め設定された制御用のソフトウェアに従い各種制御処理を実行するＣＰＵ２，車両制御用のソフトウェアやＣＰＵ２が各種制御処理を実行するのに必要な各種データが予め記憶されたＲＯＭ４、ＣＰＵ２が各種制御処理を実行する際に用いるデータを一時的に格納するためのＲＡＭ６，制御対象となる自動車各部の状態や乗員からの指令を表す検出信号を入力すると共にＣＰＵ２での演算結果に応じた制御信号を各種アクチュエータ出力する入出力部８、を中心に構成されており、これら各部は、互いにバスラインにて接続されている。
【００１５】
また、マイクロコンピュータ１０には、自己の動作クロック（以下、システムクロックという）を生成する動作クロック生成回路として、外部の発振器２０から入力される一定周波数Ｆ０の基準クロックをＮ分周する分周器１２と、この分周器１２にて分周されたクロックの周波数（＝Ｆ０／Ｎ）をＭ倍に逓倍する逓倍器１４とが備えられ、逓倍器１４から出力される一定周波数Ｆ１（＝Ｆ０×Ｍ／Ｎ）の信号をシステムクロックとしてマイクロコンピュータ０の内部回路（ＣＰＵ２等）に供給するようにされている。
【００１６】
そして、システムクロックの周波数Ｆ１を決定する分周器１２の分周値Ｎ及び逓倍器１４の逓倍値Ｍは、ＣＰＵ２が後述の動作クロック設定用のプログラムを実行することにより切り換えられ、これによって、システムクロックの周波数Ｆ１が、例えば、Ｆ１＝８ＭＨｚの基準速度から、Ｆ１＝１６ＭＨｚの高速、或いは、Ｆ１＝４ＭＨｚの低速へと切り換えられる。また、分周器１２又は逓倍器１４は、ＣＰＵ２側からその動作を停止させることにより、システムクロックを周波数Ｆ１＝０の停止状態へと切り換えることができるようにされている。
【００１７】
次に、ＲＯＭ４に記憶された車両制御用のソフトウェアは、図２（ａ）に示すように、複数のアプリケーション（図に示すアプリＡ，アプリＢ，アプリＣ，アプリＤ，アプリＥ）から構成されている。また、ＲＯＭ４には、ＣＰＵ２がこれら各アプリケーションを実行することにより生じる各アプリケーション毎の制御状態を管理する状態管理部としての機能を実現する状態管理用プログラムも記憶されている。
【００１８】
この状態管理部は、ＣＰＵ２が状態管理用プログラムを定期的に実行することにより実現されるものであり、図２（ｂ）に示すように、車両制御用の各アプリケーションを順に呼び出し、各アプリケーションから各種要求を取り込むことにより、各アプリケーションによる制御状態を検出すると共に、各アプリケーションに他のアプリケーションの現在の制御状態（現状態）を通知する。また、各アプリケーションは、状態管理部から呼び出しがあると、制御を開始するとか、制御を停止するというような制御状態を表す要求を出力し、更に、制御のための処理負荷が大きくなるのでシステムクロックを上げよというスピードアップ要求や、例えば、現在外部からの検出信号の入力待ちであるのでシステムクロックを停止させてスリープ状態に移行するのは禁止せよというようなスリープ禁止要求も出力する。
【００１９】
この結果、各アプリケーション側では、マイコン１０による全体の制御状態を把握して、自己の制御状態を切り換えることができ、状態管理部側では、各アプリケーションによる制御状態に基づき、現在マイコン１０を高速動作させるべき状態か、低速動作させるべき状態か、或いはスリープ状態できる状態かを判断できる。そして、状態管理部では、こうした判断結果に従いシステムクロックを基準速度から高速、停止、低速の何れかに切り換える。
【００２０】
つまり、状態管理部は、単に各アプリケーションによる制御状態を管理するだけでなく、システムクロックを制御状態に応じて切り換える。
そして、本実施例では、こうした状態管理部としての機能を実現する状態管理用プログラムは、システムクロックを、図３，図４に示す如く切り換えるように構成されている。以下、図３，図４を用いて状態管理部の動作を説明する。
【００２１】
尚、図３はシステムクロックの変化を表す説明図であり、（ａ）は、システムクロックの遷移を表す状態遷移図、（ｂ）はシステムクロックの時間的変化の一例を表すタイムチャートである。また、図４は、状態管理部としての機能を実現するためにＣＰＵ２が状態管理用プログラムに従い実行する処理を表すフローチャートである。
【００２２】
まず、マイコン１０に電源が投入された直後（パワーオンリセット時）やＣＰＵ２が再起動（リセット）された直後（ＣＰＵリセット時）には、分周器１２の分周値や逓倍器１４の逓倍値Ｍは初期値に設定されることから、システムクロックは周波数Ｆ１＝８ＭＨｚの基準速度になり、ＣＰＵ２は、システムクロックが基準速度の状態で、マイコン１０内の各部（ＲＡＭ６や入出力部８、或いは図示しないレジスタ等）を初期化する初期化処理を実行するが、図４に示すように、ＣＰＵ２は、この初期化処理を実行しているとき（詳しくは初期化処理が終了する直前）に、Ｓ１１０（Ｓはステップを表す）にて、システムクロックが周波数Ｆ１＝１６ＭＨｚの高速となるように、分周器１２の分周値及び逓倍器１４の逓倍値Ｍを設定する。
【００２３】
この結果、図３に示すように、ＣＰＵ２が初期化処理を完了して、上記各アプリケーションを実行する通常の制御処理に移行する際には、システムクロックは高速に切り換えられ、ＣＰＵ２は高速動作で、上記各アプリケーションに基づく制御処理を開始することになる。
【００２４】
そして、ＣＰＵ２が上記各アプリケーションに基づく制御処理を実行しているときには、図４に示すように、Ｓ１２０にて定期的に制御状態を監視し、Ｓ１３０にて、上記各アプリケーションに基づく全ての制御処理が一旦終了して制御待ち状態（つまりアイドル状態）になったか否かを判定する。
【００２５】
そして、Ｓ１３０にて、全ての制御処理が終了したと判定されるまでは、上記Ｓ１２０及びＳ１３０の処理を繰り返し実行し、Ｓ１３０にて、全ての制御処理が終了したと判定されると（換言すればＣＰＵ２による制御処理がアイドル状態になると）、Ｓ１４０にて、システムクロックが周波数Ｆ１＝４ＭＨｚの低速となるように、分周器１２の分周値及び逓倍器１４の逓倍値Ｍを設定し、続くＳ１５０にて、システムクロックを停止させることで、マイコン１０をスリープ状態に切り換える。
【００２６】
こうして、マイコン１０がスリープ状態に入ると、予め設定されたウェイクアップ時間が経過するか、或いは、外部からウェイクアップ要求が入力されるまで、スリープ状態が継続し、予め設定されたウェイクアップ時間が経過するか、或いは、外部からウェイクアップ要求が入力されると、マイコン１０は、図示しないウェイクアップ回路によって自動的に復帰（ウェイクアップ）する。
【００２７】
そして、このときの分周器１２の分周値Ｎ及び逓倍器１４の逓倍値Ｍは、システムクロックが低速になるように設定されていることから、マイコン１０のウェイクアップ時には、システムクロックは周波数Ｆ１＝４ＭＨｚの低速になり、マイコン１０は低速で動作することになる。
【００２８】
次に、このようにマイコン１０が動作を開始すると、上記各アプリケーションに基づく制御処理が起動されることから、マイコン１０のウェイクアップ後には、Ｓ１６０にて、各アプリケーションに基づく制御処理からスピードアップ要求又はスリープ禁止要求がなされ、システムクロックを高速にする必要があるか否かを判定する。
【００２９】
そして、Ｓ１６０にて、システムクロックを高速にする必要があると判断されると、Ｓ１７０にて、システムクロックが周波数Ｆ１＝１６ＭＨｚの高速となるように、分周器１２の分周値及び逓倍器１４の逓倍値Ｍを設定した後、上述のＳ１２０に移行し、逆に、Ｓ１６０にて、システムクロックを高速にする必要はないと判断されると、Ｓ１５０に移行して、マイコン１０を再度スリープ状態に移行させる。
【００３０】
この結果、マイコン１０が一旦スリープ状態に入り、ウェイクアップしたときには、図３に示すように、マイコン１０は低速で動作し、各アプリケーションによる制御処理が起動されるが、このとき、各制御処理が処理負荷の大きい通常制御に移行しなければ、再びスリープ状態に戻り、何れかの制御処理が処理負荷の大きい通常制御に移行するときにだけ、システムクロックが高速に切り換えられて、マイコン１０が高速動作することになる。
【００３１】
以上説明したように、本実施例のマイコン１０においては、パワーオンリセット或いはＣＰＵリセットによる起動後には、システムクロックが高速に設定されて、車両制御のための制御処理が高速で実行されるが、その後、各制御処理が一旦終了してアイドル状態になると、システムクロックが停止されて、マイコン１０はスリープ状態となる。
【００３２】
また、スリープ状態からの復帰時（ウェイクアップ時）には、システムクロックが低速に設定された状態で各制御処理が実行され、そのとき各制御処理からクロックアップの要求がなければ、再び、システムクロックが停止されて、スリープ状態に入り、クロックアップの要求があったときにだけ、システムクロックが高速に切り換えられる。
【００３３】
よって、本実施例によれば、マイコン１０が起動された直後には、各制御処理を高速に実行して、車両制御を速やかに開始することができると共に、スリープ状態からの復帰時（ウェイクアップ時）には、低速動作するので、不要な電力消費を抑制し、また、マイクロコンピュータの発熱も抑制できる。
【００３４】
そして、特に、本実施例では、図３（ａ）から明らかなように、マイクロコンピュータが低速動作するのは、スリープ状態からの復帰時だけであり、システムクロックを高速から低速に切り換えることはないので、システムクロックの切り換えに伴い、各制御処理での制御周期やタイミングにずれを生じて、安定した車両制御を実行できなくなるのを防止することができる。
【００３６】
以上、本発明の一実施例について説明したが、本発明は上記実施例に限定されるものではなく、種々の態様を採ることができる。
例えば、上記実施例では、マイコン１０は車両制御のためのものであるとして説明したが、本発明は、車両制御に限らず、各種装置を制御するマイクロコンピュータであれば、上記実施例と同様に適用して、同様の効果を得ることができる。
【００３７】
また、上記実施例では、ＣＰＵ２が実行する制御用のソフトウェアは複数のアプリケーションからなり、システムクロックを高速・低速・停止に切り換えは、これら各アプリケーションによる制御状態を管理する状態管理部としての状態管理用プログラムをＣＰＵ２が実行することにより実現されるものとして説明したが、制御用のソフトウェアは一つであってもよく、また、システムクロックの切り換えについても、その制御用ソフトウェアをＣＰＵ２が実行することにより実現されるようにしてもよい。
【００３８】
また、上記実施例では、システムクロックを生成する動作クロック生成回路はマイコン１０に内蔵されており、しかも、その回路は、分周器１２と逓倍器１４とから構成されているものとして説明したが、動作クロック生成回路は、マイコン１０とは別体で構成されていてもよく、また、分周器１２又は逓倍器１４だけで動作クロック生成回路を構成してもよい。
【図面の簡単な説明】
【図１】  実施例のマイクロコンピュータの概略構成を表すブロック図である。
【図２】  実施例のマイクロコンピュータにおいて実行されるソフトウェアの構造及び状態管理部の動作を説明する説明図である。
【図３】  ＣＰＵが状態管理部としてのプログラムを実行することにより変化するシステムクロックの状態を表す説明図である。
【図４】  ＣＰＵが実行する状態管理部としての処理を表すフローチャートである。
【符号の説明】
２…ＣＰＵ、４…ＲＯＭ、６…ＲＡＭ、８…入出力部、１０…マイクロコンピュータ（マイコン）、１２…分周器、１４…逓倍器、２０…発振器。
【図１】
0003758477.tif 000002
【図２】
0003758477.tif 000003
【図３】
0003758477.tif 000004
【図４】
0003758477.tif 000005