(57)【要約】【課題】外部状況に応じて必要とされる処理能力で処理を実行し、消費電力を状況に応じて有効に低減させることができる処理装置、クロック周波数決定方法、及びコンピュータプログラムを提供する。【解決手段】マイコンのＣＰＵはクロック回路と接続されており、クロック回路から出力されるクロック信号に同期して処理を実行する。ただし、クロック回路から出力されるクロック信号の周波数は変更することが可能である。この場合ＣＰＵは、マイコンを含む装置が接続されるネットワークの状況、又は経過時間等の外部状況を検知する。そして、ＣＰＵは、予め各外部状況内容に応じて記憶してある必要処理能力に基づき、クロック周波数を決定する。【選択図】図４
2010039543.tif 000002
【特許請求の範囲】
【請求項１】
周波数を変更することが可能なクロック信号に同期して処理を実行する処理装置において、
一又は複数の外部状況と、各外部状況下での処理の実行に要する必要処理能力との対応を記憶する処理能力記憶手段と、
外部状況を検知する検知手段と、
該検知手段が検知した外部状況に対応して、前記処理能力記憶手段により記憶してある必要処理能力に基づき、実行する処理に必要な能力を算出する算出手段と、
該算出手段が算出した能力に応じてクロック周波数を決定する手段と
を備えることを特徴とする処理装置。
【請求項２】
一又は複数のアプリケーションプログラムを実行する実行手段を備え、
前記処理能力記憶手段により、各外部状況下での前記アプリケーションプログラムの実行に要する必要処理能力を、アプリケーションプログラム毎に記憶するようにしてあり、
前記算出手段は、前記検知手段が検知した外部状況に対応し、実行するアプリケーションプログラムに対応して記憶してある必要処理能力を抽出する抽出手段を備え、
該抽出手段が抽出した必要処理能力に基づき、必要な能力を算出するようにしてあること
を特徴とする請求項１に記載の処理装置。
【請求項３】
前記実行手段が複数のアプリケーションプログラムを同時的に実行する場合、
前記算出手段は、前記抽出手段が前記複数のアプリケーションプログラム夫々に対応して抽出した必要処理能力に基づき、総合必要処理能力を算出する手段を備え、前記総合必要処理能力を必要な能力として算出するようにしてあること
を特徴とする請求項２に記載の処理装置。
【請求項４】
総合必要処理能力の合計と、クロック周波数との対応を記憶しておく手段を備え、
算出した総合必要処理能力に基づくクロック周波数を取得することにより、クロック周波数を決定するようにしてあること
を特徴とする請求項３に記載の処理装置。
【請求項５】
周波数を変更することが可能なクロック信号に同期して処理を実行する処理装置のクロック周波数を決定する方法において、
一又は複数の外部状況と、各外部状況下での処理装置による処理の実行に要する必要処理能力との対応を予め記憶しておき、
外部状況を検知し、
検知した外部状況に対応して予め記憶してある必要処理能力に基づき、前記処理装置で実行する処理に必要な能力を算出し、
算出した能力に応じてクロック周波数を決定する
ことを特徴とするクロック周波数決定方法。
【請求項６】
周波数を変更することが可能なクロック信号に同期して処理を行なうコンピュータに、クロック周波数の変更の制御を行なわせるコンピュータプログラムにおいて、
コンピュータに、
外部状況を検知させ、
予め記憶されてある外部状況と各外部状況下での処理の実行に要する必要処理能力との対応から、検知した外部状況に対応する必要処理能力を取得させ、
取得した必要処理能力に基づき、実行する処理に必要な能力を算出させ、
算出した能力に応じてクロック周波数を決定させる
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック信号に同期して動作する処理装置の外部状況、又はアプリケーションプログラムに応じてクロック周波数を決定し、状況に応じた処理能力で処理を実行し、消費電力を有効に低減させることができる処理装置、クロック周波数決定方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
昨今では、機器の省電力化が進められている。そのために、クロック周波数を変更することが可能に設定されており、スリープ時にはクロック周波数を低下させて処理を行なうなどの制御が可能なコンピュータ装置が普及している。
【０００３】
例えば、特許文献１には、実行される割り込み又はアプリケーションプログラムの内容に基づいてＣＰＵ（Central Processing Unit）及び他のシステムバスに可変のクロック周波数のクロック信号を供給する周波数シンセサイザを有する装置が開示されている。特許文献１に開示されている技術では、実行されるべき所定のアプリケーションプログラム又はＣＰＵの利用度に基づいてクロック周波数を変更することができる。また、特許文献１に開示されている技術では、実行するアプリケーションプログラム毎に最適なクロック周波数を対応付けて予め定めて記憶しておき、実行するアプリケーションプログラムに対応して記憶してあるクロック周波数に変更することが可能である。
【特許文献１】特表２００２−５３３８０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述のように、クロック周波数が変更可能であって更に、実行するアプリケーションプログラムに応じてクロック周波数を最適に決めることはできる。しかしながら、クロック周波数は、ＣＰＵ又はＭＰＵ（Micro Processing Unit）の性能に応じて決定される処理装置毎の固有の値である。アプリケーションプログラム毎に周波数を予め記憶しておく構成では各処理装置について最適なクロック周波数を夫々予め算出しておく必要があり、汎用的ではない。また、複数のアプリケーションプログラムを同時的に実行する場合に、最適なクロック周波数を決定することができない。
【０００５】
また、複数の処理装置及び周辺機器で連携して処理を行なう場合など、外部状況及び各処理装置の機能に応じて各処理装置夫々に必要とされる処理能力の高低が変化するときがある。この場合、処理装置自身にて実行中のアプリケーションプログラムの数、種類等の装置自身の状況に応じたクロック周波数の変更制御では不足である。同一のアプリケーションプログラムを実行する場合でも、外部状況によっては必要となる処理能力が異なる場合がある。各処理装置は外部状況及びアプリケーションプログラムの種類等に応じて復号的に必要となる処理能力を求め、クロック周波数を適切に変更することにより、高い処理能力が望まれない処理装置で過剰に電力が消費されることを回避することが望まれる。
【０００６】
本発明は斯かる事情に鑑みてなされたものであり、クロック信号に同期して処理を行なう処理装置が外部状況に応じて必要とされる処理能力で処理を実行し、消費電力を状況に応じて有効に低減させることができる処理装置、クロック周波数決定方法、及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１発明に係る処理装置は、周波数を変更することが可能なクロック信号に同期して処理を実行する処理装置において、一又は複数の外部状況と、各外部状況下での処理の実行に要する必要処理能力との対応を記憶する処理能力記憶手段と、外部状況を検知する検知手段と、該検知手段が検知した外部状況に対応して、前記処理能力記憶手段により記憶してある必要処理能力に基づき、実行する処理に必要な能力を算出する算出手段と、該算出手段が算出した能力に応じてクロック周波数を決定する手段とを備えることを特徴とする。
【０００８】
第２発明に係る処理装置は、一又は複数のアプリケーションプログラムを実行する実行手段を備え、前記処理能力記憶手段により、各外部状況下での前記アプリケーションプログラムの実行に要する必要処理能力を、アプリケーションプログラム毎に記憶するようにしてあり、前記算出手段は、前記検知手段が検知した外部状況に対応し、実行するアプリケーションプログラムに対応して記憶してある必要処理能力を抽出する抽出手段を備え、該抽出手段が抽出した必要処理能力に基づき、必要な能力を算出するようにしてあることを特徴とする。
【０００９】
第３発明に係る処理装置は、前記実行手段が複数のアプリケーションプログラムを同時的に実行する場合、前記算出手段は、前記抽出手段が前記複数のアプリケーションプログラム夫々に対応して抽出した必要処理能力に基づき、総合必要処理能力を算出する手段を備え、前記総合必要処理能力を必要な能力として算出するようにしてあることを特徴とする。
【００１０】
第４発明に係る処理装置は、総合必要処理能力の合計と、クロック周波数との対応を記憶しておく手段を備え、算出した総合必要処理能力に基づくクロック周波数を取得することにより、クロック周波数を決定するようにしてあることを特徴とする。
【００１１】
第５発明に係るクロック周波数決定方法は、周波数を変更することが可能なクロック信号に同期して処理を実行する処理装置のクロック周波数を決定する方法において、一又は複数の外部状況と、各外部状況下での処理装置による処理の実行に要する必要処理能力との対応を予め記憶しておき、外部状況を検知し、検知した外部状況に対応して予め記憶してある必要処理能力に基づき、前記処理装置で実行する処理に必要な能力を算出し、算出した能力に応じてクロック周波数を決定することを特徴とする。
【００１２】
第６発明に係るコンピュータプログラムは、周波数を変更することが可能なクロック信号に同期して処理を行なうコンピュータに、クロック周波数の変更の制御を行なわせるコンピュータプログラムにおいて、コンピュータに、外部状況を検知させ、予め記憶されてある外部状況と各外部状況下での処理の実行に要する必要処理能力との対応から、検知した外部状況に対応する必要処理能力を取得させ、取得した必要処理能力に基づき、実行する処理に必要な能力を算出させ、算出した能力に応じてクロック周波数を決定させることを特徴とする。
【００１３】
第１発明、第５発明及び第６発明では、処理装置（コンピュータ）に接続される外部装置の状況、周辺環境の状況、経過時間等の外部状況が予め定義され、各状況下における処理の実行に要する必要処理能力が予め記憶される。処理装置（コンピュータ）は内蔵する測定器若しくは外付けのセンサから得られるデータ、又は外部装置から通信媒体を介して受信するデータ等に基づき、現在の状況が定義されている外部状況の内のいずれかに当てはまるかを検知する。そして処理装置（コンピュータ）は、検知した外部状況に対応する必要処理能力に基づき、総合的に必要な処理能力を算出し、算出した能力に応じてクロック周波数を決定する。これにより、処理装置（コンピュータ）自身の内部状況のみならず、外部状況に応じてクロック周波数を変更することが可能となる。
【００１４】
第２発明では、処理装置は一又は複数のアプリケーションプログラムを実行することが可能であり、予め記憶してある外部状況によって異なるアプリケーションプログラム毎の実行に要する処理能力に基づき、検知される外部状況と実行するアプリケーションプログラムとに基づいて必要処理能力を抽出し、総合的に処理に必要な能力を算出する。これにより、より精度よく必要な処理能力を求め、同一の外部状況下でも実行するアプリケーションプログラムに応じてクロック周波数を変更することが可能であり、また、同一のアプリケーションプログラムを実行している場合であっても異なる外部状況に応じて柔軟にクロック周波数を変更することが可能である。
【００１５】
第３発明では、複数のアプリケーションプログラムを同時的に実行する場合には各アプリケーションプログラムを実行する場合に検知された外部状況下で夫々必要とする処理能力を合計した合計必要処理能力に基づき、クロック周波数が決定される。これにより、外部状況の差異、更に実行中の複数のアプリケーションプログラムの組み合わせに応じて適切な処理能力となるようにクロック周波数を変更することが可能となる。
【００１６】
第４発明では、必要処理能力の合計とクロック周波数との対応を予め処理装置毎に記憶しておくことにより、クロック周波数を決定する処理を軽くすることが可能となる。
【発明の効果】
【００１７】
本発明による場合、処理装置は自身の内部状況のみならず、外部状況によって夫々異なる必要処理能力に適したクロック周波数に変更することが可能となる。一の機能を発揮するために同一の処理を実行している場合であっても、例えば処理開始時と処理終了時とでは処理開始時の方が要求される処理能力が高いなど、異なる状況に応じて適切な処理能力となるようにクロック周波数を調整することができる。したがって必要がないにも拘らず、クロック周波数が過剰に高くなることをより精度よく回避することができ、消費電力を有効に低減させることができる。
【００１８】
例えば処理開始時には必要とする処理能力が高いが、それ以外では必要とする処理能力は低い処理を行なう場合に、処理開始時以外においてはクロック周波数を低くするようにすることが可能となる。このように、より詳細に必要とされる処理能力に応じてクロック周波数を調整することにより、効率的にハードウェア資源を利用して消費電力を低減させることができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
【００２０】
なお、以下に示す実施の形態では、本発明に係る処理装置を、特定の処理を実行するように設計されたマイクロコンピュータ（以下、マイコンという）に適用した場合を例に説明する。更に詳細には、以下の実施の形態では車両に搭載されて種々の制御を行なうＥＣＵ（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）等の読み出し時にデータが失われないメモリを利用する。ＲＯＭ１３には、ＣＰＵ１０が読み出して実行する制御プログラム１Ｐが記憶されている。また、ＲＯＭ１３にはＥＣＵの制御機能を実現するアプリケーションプログラム１３１が記憶されている。また、ＲＯＭ１３にはＣＰＵ１０が参照する対応テーブル１３２及びクロック周波数テーブル１３３が記憶されている。対応テーブル１３２の詳細については後述にて説明する。
【００２６】
Ｉ／Ｏ部１４は、外部からの信号入力を受け付けると共に、外部への信号出力を実現する複数の端子を含むインタフェースである。Ａ／Ｄ変換、Ｄ／Ａ変換機能を有している構成としてもよい。例えば、Ｉ／Ｏ部１４には、マイコン１の制御に用いられるデータを取得する測定器、センサ等が接続される。ＣＰＵ１０は、Ｉ／Ｏ部１４により取得されるデータを用いて制御が可能である。また、Ｉ／Ｏ部１４にはネットワークコントローラが接続され、ＣＰＵ１０はネットワークを介して送受信されるデータを取得することが可能である。Ｉ／Ｏ部１４にはマイコン１による制御対象である各種負荷、又はアクチュエータが接続されており、マイコン１はＩ／Ｏ部１４により制御信号を制御対象へ出力する。
【００２７】
図２は、実施の形態１におけるＲＯＭ１３に記憶される対応テーブル１３２及びクロック周波数テーブル１３３の内容例を示す説明図である。図２（ａ）は対応テーブル１３２の内容例を示し、図２（ｂ）はクロック周波数テーブル１３３の内容例を示す。
【００２８】
図２（ａ）に示すように、対応テーブル１３２には各状況下においてＣＰＵ１０に必要とされる処理能力が相対的数値で示されて記憶される。なお図２（ａ）に示す内容例は、マイコン１が動作するＥＣＵが、複数のＥＣＵを接続するネットワークにおける多重通信を制御する機能を有するＥＣＵである場合の例である。図２（ａ）に示す内容例は、マイコン１が動作するＥＣＵが、ネットワークを介した通信を開始するためにネットワークを起動、即ちＥＣＵのネットワークコントローラを起動し各種設定の初期化を始める場合は、ＣＰＵ１０は「２０」で表わされる処理能力が必要とされる。また、マイコン１が動作するＥＣＵが搭載された車両のエンジンが始動中は、ＣＰＵ１０は「１０」で表わされる処理能力が必要となる。更に、バッテリ劣化警告中は、ＣＰＵ１０は「１０」で表わされる処理能力が必要となる。また、前記ネットワークにおける多重通信が停止中には特に処理は必要とされないので「１」で表わされる処理能力が必要とされる。
【００２９】
そして図２（ｂ）に示すように、クロック周波数テーブル１３３には必要処理能力に応じたクロック周波数の相対的な高低が記憶されている。クロック周波数の高低は、ＣＰＵ１０に応じた具体的な数値で記憶してもよい。図２（ｂ）に示す内容例では、ＣＰＵ１０に必要とされる処理能力が「１〜１０」の場合はクロック周波数は低周波数でよく、「１１〜２０」の場合はクロック周波数は中程度とすべきことが示されている。そしてＣＰＵ１０に必要とされる処理能力が「２１」以上である場合はクロック周波数は高周波数とすべきことが示されている。
【００３０】
上述の対応テーブル１３２及びクロック周波数テーブル１３３の例を参照した場合、ＣＰＵ１０はネットワーク起動直後には高周波数のクロック信号に基づき動作し、エンジン始動中は中周波数のクロック信号に基づき動作し、多重通信停止中は低周波数のクロック信号に基づき動作するように設定されている。
【００３１】
このように構成されるマイコン１のＣＰＵ１０が、外部状況に応じてクロック周波数を決定し、必要な場合に変更する処理についてフローチャートを参照して説明する。
【００３２】
図３は、実施の形態１におけるマイコン１のＣＰＵ１０がクロック周波数を決定して変更する処理手順の一例を示すフローチャートである。ＣＰＵ１０は、ＲＯＭ１３に記憶されている制御プログラム１ＰをＲＡＭ１２に読み出して実行することにより、以下に示す処理を実行する。
【００３３】
ＣＰＵ１０は、外部状況の変化を検知したか否かを判断する（ステップＳ１１）。ＣＰＵ１０は、自身が内蔵する図示しないタイマ等により起動してからの経過時間、Ｉ／Ｏ部１４に接続されるセンサ、測定器等から得られるデータ、又はＩ／Ｏ部１４に接続されるネットワークコントローラを介して外部装置から得られるデータに基づき外部状況を検知する。ＣＰＵ１０は、検知した外部状況を示すデータをＲＡＭ１２に一時的に記憶しておき、次に検知した外部状況を示すデータの内容と比較し、外部状況が変化したか否かを判断するようにしてもよい。
【００３４】
ＣＰＵ１０は、外部状況の変化を検知していないと判断した場合（Ｓ１１：ＮＯ）、処理をステップＳ１１へ戻して外部状況の変化を検知したと判断するまで待機する。ＣＰＵ１０は、外部状況の変化を検知したと判断した場合（Ｓ１１：ＹＥＳ）、ＲＯＭ１３から対応テーブル１３２を参照し（ステップＳ１２）、対応テーブル１３２から検知した外部状況に対応する必要処理能力を取得する（ステップＳ１３）。
【００３５】
ＣＰＵ１０は次に、ＲＯＭ１３からクロック周波数テーブル１３３を参照し（ステップＳ１４）、クロック周波数テーブル１３３から、ステップＳ１３で取得した必要処理能力に対応するクロック周波数を読み出して決定する（ステップＳ１５）。そしてＣＰＵ１０は、ステップＳ１５で決定したクロック周波数を指示する制御信号をクロック部１１へ入力することにより、クロック周波数を変更し（ステップＳ１６）、処理を終了する。
【００３６】
なお、外部状況の変化を検知したものの、ステップＳ１５で決定したクロック周波数がそれまでのクロック回路１１により出力されているクロック周波数と変わらない場合にはステップＳ１６の処理は省略してよい。
【００３７】
次に、図３のフローチャートに示したようにＣＰＵ１０がＲＯＭ１３のテーブルを参照して実行する処理により、クロック周波数が決定され、変更される結果を具体例を挙げて説明する。図４は、実施の形態１におけるマイコン１のＣＰＵ１０によって決定されるクロック周波数を示す説明図である。横軸に時間の経過を示し、縦軸は周波数の高低を示す。なお説明図の上部には時間の経過に応じて変化している外部状況を示す。
【００３８】
図４に示す例では、マイコン１は時点ｔ０ではスリープ状態である。その後時点ｔ１で、マイコン１は割り込みによりスリープ状態から起動すると共にネットワークの起動を開始する。ＣＰＵ１０は、割り込みの検知及びネットワークコントローラの起動を検知することによりネットワークの起動を検知した場合、ＲＯＭ１３の対応テーブル１３２及びクロック周波数テーブル１３３を参照してクロック周波数を高周波数に変更する。
【００３９】
そしてマイコン１は時点ｔ２で、ネットワーク起動の処理を終了する。ＣＰＵ１０は、ネットワークコントローラからの信号、又は内蔵タイマによる経過時間の測定等によってこれを検知する。ＣＰＵ１０は、対応テーブル１３２及びクロック周波数テーブル１３３を参照してクロック周波数を中周波数に変更する。
【００４０】
次に、時点ｔ３で多重通信が停止された場合、ＣＰＵ１０は、ネットワークコントローラの停止を検知することにより、又はＣＰＵ１０自身の処理によって停止することを示す信号を出力するなどにより、多重通信が停止されたことを検知する。この場合ＣＰＵ１０は、対応テーブル１３２及びクロック周波数テーブル１３３を参照してクロック周波数を低周波数に変更する。
【００４１】
その後時点ｔ４で多重通信が再度開始された場合、ＣＰＵ１０は、ネットワークコントローラからの信号を検知する等により多重通信の再開を検知する。この場合、ＣＰＵ１０は、対応テーブル１３２及びクロック周波数テーブル１３３を参照してクロック周波数を中周波数に変更する。
【００４２】
図４に示したように、ＣＰＵ１０が実行する処理の内容によらず、他の外部装置の状況、ネットワークの状況、経過時間等の外部状況に応じてクロック周波数を適宜決定し変更することができる。これにより、異なる状況に応じてマイコン１の能力を適切な処理能力とすることができる。したがって、高い処理能力が求められていないにも拘らず、過剰に高周波数のクロック信号で動作して無駄に電力を消費することを精度よく回避することができ、有効に消費電力を低減させることができる。
【００４３】
（実施の形態２）
実施の形態２では、実施の形態１に示した外部状況に応じた周波数の決定に加え、マイコン１が実行するアプリケーションプログラムの数及び種類に応じてクロック周波数を決定する例を示す。実施の形態２では、マイコン１が複数のアプリケーションプログラムを実行可能な構成とする。実施の形態２におけるマイコン１は、外部状況及び実行中のアプリケーションプログラムに応じて周波数を決定する。
【００４４】
図５は、実施の形態２におけるマイコンの構成を示すブロック図である。マイコン２は、ＣＰＵ２０、クロック部２１、ＲＡＭ２２、ＲＯＭ２３、及びＩ／Ｏ部２４を含んで構成される。なお、各構成部の詳細は、ＣＰＵ２０により実現される具体的な処理の内容、及びＲＯＭ２３に記憶されているテーブル、及び、ＲＯＭ２３に記憶されているプログラムにより実現される機能以外は実施の形態１と同様である。
【００４５】
ＣＰＵ２０は、実施の形態１におけるマイコン１のＣＰＵ１０と同様にＲＯＭ２３に記憶されている各プログラムを読み出して実行する。そして、ＣＰＵ２０はＲＡＭ２２と協働してＩ／Ｏ部２４を介して接続される外部機器の制御を行なう。ＣＰＵ２０による演算処理は、クロック部２１から出力されるクロック信号の周波数に同期して行なわれる。
【００４６】
クロック部２１は、実施の形態１におけるマイコン１のクロック部１１と同様に発振回路、分周回路、及び逓倍回路を含む。クロック部２１はＣＰＵ２０からの制御信号に応じ、出力するクロック信号の周波数を決定してＣＰＵ２０へ供給する。
【００４７】
ＲＡＭ２２は、実施の形態１におけるマイコン１のＲＡＭ１２と同様に、ＣＰＵ２０にて実行される各種プログラムが読み出されて記憶されると共に、ＣＰＵ２０による演算処理の過程で発生するデータが一時的に記憶される。
【００４８】
ＲＯＭ２３は、実施の形態１におけるマイコン１のＲＯＭ１３と同様である。ただし実施の形態２におけるマイコン２のＣＰＵ２０は複数のアプリケーションプログラムを実行する。したがってＲＯＭ２３には、制御プログラム２Ｐ、各種制御機能を実現する複数のアプリケーションプログラム２３１，２３１，…が記憶されている。そして、ＲＯＭ２３には、ＣＰＵ２０が参照する対応テーブル２３２及びクロック周波数テーブル２３３が記憶されている。
【００４９】
Ｉ／Ｏ部２４も、実施の形態１におけるマイコン１のＩ／Ｏ部１４と同様である。ＣＰＵ２０はＩ／Ｏ部２４を介して測定器、センサ等の外部機器、又はネットワークと接続されてデータを取得することが可能であり、Ｉ／Ｏ部２４を介して各種負荷又はアクチュエータ等の制御対象へ制御信号を出力することが可能である。
【００５０】
図６は、実施の形態２におけるＣＰＵ２０にて実行されるプログラムの階層構造を説明するための説明図である。ＣＰＵ２０は、ＲＯＭ２３に記憶されている制御プログラム２Ｐ、及びアプリケーションプログラム２３１を夫々ＲＡＭ２２に読み出して実行する。ＣＰＵ２０にて実行される各プログラムは、ＣＰＵ２０にて実行される制御プログラム２Ｐにて実現される抽象化層及びプラットフォーム層、アプリケーションプログラム２３１，２３１，…により実現されるアプリケーション層の３つの階層に分類することが可能である。
【００５１】
ここで抽象化層とは、ＣＰＵ２０自身及びＲＯＭ２３、ＲＡＭ２２等のハードウェア資源の構成を抽象化（仮想化）し、共通の動作環境を与えるためのプログラムである。抽象化層は制御プログラム２Ｐの一部により実現される。抽象化層に対応するプログラムは、特にＣＰＵ２０の性能等のハードウェア構成に依存する。したがって、他のＣＰＵに対しては異なる抽象化層のプログラムを用いる。
【００５２】
プラットフォーム層は、上位層のアプリケーション層にて実行される複数のアプリケーションプログラム２３１，２３１，…で共通する処理を実現するプログラムである。プラットフォーム層は制御プログラム２Ｐの一部により実現される。複数のアプリケーションプログラム２３１，２３１，…で共通する処理とは、ＲＡＭ２２又はＲＯＭ２３との間におけるデータの読み書き、外部に接続されるネットワークコントローラの制御等の機能をいう。プラットフォーム層に対応するプログラムはハードウェア構成に依存しない。したがって異なるＣＰＵに対しても同じプラットフォーム層に対応するプログラムを用いることができる。プラットフォーム層のプログラムを独立してプラットフォームプログラムとしてＲＯＭ２３に記憶しておき、ＣＰＵ２０が読み出して実行する構成としてもよい。
更に、後述するクロック周波数の決定は、プラットフォーム層に対応する制御プログラム２Ｐの一部をＣＰＵ２０が読み出して実行することによって実現される。
【００５３】
アプリケーション層は、各ＥＣＵの特定の機能を実現するプログラムである。例えば、ＣＰＵ２０がアプリケーションプログラム２３１の内の一を読み出して実行することにより、車両のルームランプ等の点灯／消灯を制御するイルミ制御のアプリケーション１を実現する。また、ＣＰＵ２０が同時的に他のアプリケーションプログラム２３１を読み出して実行することにより、各ＥＣＵの電源管理を制御するアプリケーション２を実現する。そして、他のアプリケーションプログラム２３１は、各ＥＣＵ間のネットワークを介した多重通信を制御するアプリケーション３を実現する。他に、車両のドアの施錠／解錠等の制御、又はカーナビゲーション装置若しくはオーディオ装置等の動作制御を実現するアプリケーションプログラムがあってもよい。
【００５４】
なお、抽象化層及びプラットフォーム層と、アプリケーション層とを分離する構成とすることにより、複数のアプリケーションプログラム２３１，２３１，…を実現することができる。ハードウェア構成に依存しない複数のアプリケーションプログラム２３１，２３１，…を記憶しておき、いずれのアプリケーションプログラム２３１を読み出して実行するかを決定させることによって、ハードウェア構成が異なるいずれのＥＣＵでも他のＥＣＵが実現していた機能を代替して実現することができる。そして、以下に説明するクロック周波数の決定、ＲＡＭ２２からのデータの読み出しなどを共通するプラットフォーム層によって実現することにより、全てのプログラムを変更せずとも各ＥＣＵの機能を変更することができる。したがって、各ＥＣＵの物理的配置を変更することなしに、ＥＣＵ夫々の機能を変更する再配置が可能となる。
【００５５】
以下に、ＣＰＵ２０がプラットフォーム層に対応するプログラムを実行することによりクロック周波数を決定し、必要な場合にクロック周波数を変更する処理について説明する。
【００５６】
まず、ＣＰＵ２０がクロック周波数を決定する際に参照するテーブルについて説明する。図７は、実施の形態２におけるＲＯＭ２３に記憶される対応テーブル２３２、及びクロック周波数テーブル２３３の内容例を示す説明図である。図７（ａ）は対応テーブル２３２の内容例を示し、図７（ｂ）はクロック周波数テーブル２３３の内容例を示す。
【００５７】
図７（ａ）に示すように、対応テーブル２３２には、アプリケーションプログラムの実行中における各状況下で必要とされる処理能力が相対的数値で示されて記憶される。具体的には、ＣＰＵ２０が、車両のルームランプ等の点灯／消灯を制御するイルミ制御のアプリケーション２３１、電源管理を制御する電源管理制御のアプリケーションプログラム２３１、及びネットワークを介した多重通信を制御する多重通信制御のアプリケーションプログラム２３１を実行している間において、各状況下で必要とされる処理能力を示している。
【００５８】
対応テーブル２３２には例えば、ネットワーク通信が起動された場合、その後ＣＰＵ２０がイルミ制御のアプリケーションプログラム２３１を実行するため、及びＣＰＵ２０が電源管理制御のアプリケーションプログラム２３１を実行するためには夫々、ＣＰＵ２０には「１０」で表わされる処理能力が必要とされることが示される。またこの場合に、ＣＰＵ２０が多重通信制御のアプリケーションプログラム２３１を実行するためには、ＣＰＵ２０は「２０」で表わされる処理能力が必要とされる。
【００５９】
また、マイコン２が動作するＥＣＵが搭載された車両のエンジンの始動中に、ＣＰＵ２０がイルミ制御のアプリケーションプログラム２３１を実行するためには、ＣＰＵ２０には「１０」で表わされる処理能力が必要となる。一方、ＣＰＵ２０が電源管理制御のアプリケーションプログラム２３１を実行するためには、ＣＰＵ２０には「２０」で表わされる処理能力が必要となる。なお、ＣＰＵ２０が多重通信制御のアプリケーションプログラム２３１を実行するためには「１０」で表わされる処理能力が必要となる。
【００６０】
車両のバッテリ劣化が警告されている間は特にルームランプなどの点灯は回避されるべきなので、ＣＰＵ２０がイルミ制御のアプリケーションプログラム２３１を実行しても処理が必要とされない。したがってこの場合、ＣＰＵ２０には「１」で表わされる処理能力が必要となる。また、バッテリ劣化警告中にＣＰＵ２０が電源管理制御のアプリケーションプログラム２３１及び多重通信制御のアプリケーションプログラム２３１を実行するためには夫々、ＣＰＵ２０には「１０」で表わされる処理能力が必要とされる。
【００６１】
そして、多重通信が停止されている間は、ＣＰＵ２０がイルミ制御のアプリケーションプログラム２３１、及び電源管理制御のアプリケーションプログラム２３１を実行するためには夫々、ＣＰＵ２０には「１０」で表わされる処理能力が必要とされる。一方、多重通信が停止されている間は、ＣＰＵ２０が多重通信制御のアプリケーションプログラム２３１の実行することにより行なう処理は必要とされないので、ＣＰＵ２０には「１」で表わされる処理が必要とされるに過ぎない。
【００６２】
このように、同一のアプリケーションプログラム２３１を実行するにしても状況に応じてＣＰＵ２０に求められる処理能力は異なる。図７（ａ）に示すように、実行するアプリケーションプログラム２３１，２３１，…及び各外部状況に対応する必要処理能力を予め記憶しておくことにより、適宜状況に応じた必要処理能力を取得することができる。
【００６３】
ＲＯＭ２３には図７（ｂ）に示すように、クロック周波数テーブル２３３が記憶されている。クロック周波数テーブル２３３は実施の形態１におけるクロック周波数テーブル１３３と同様である。ただし、実行中の複数のアプリケーションプログラム２３１，２３１，…夫々の各状況下での必要処理能力を総合して求められる合計必要処理能力に応じたクロック周波数が対応付けられて記憶される。つまり、ＣＰＵ２０がイルミ制御のアプリケーションプログラム２３１及び電源管理制御のアプリケーションプログラム２３１を実行している場合、夫々のアプリケーションプログラム２３１に対応して各状況下で必要とされる処理能力の合計とクロック周波数の高低とが対応付けられている。したがって、合計必要処理能力が例えば「３０（＝１０＋２０）」である場合には、クロック周波数は高周波数とすべきである。
【００６４】
このように構成されるマイコン２のＣＰＵ２０が、実行中のアプリケーションプログラム２３１，２３１，…及び外部状況に応じてクロック周波数を決定し、必要な場合には変更する処理についてフローチャートを参照して説明する。
【００６５】
図８は、実施の形態２におけるマイコン２のＣＰＵ２０がクロック周波数を決定して変更する処理手順の一例を示すフローチャートである。ＣＰＵ２０は、ＲＯＭ２３に記憶されている制御プログラム２ＰをＲＡＭ２２に読み出してプラットフォーム層の機能を実現することにより、以下の処理を実行する。
【００６６】
ＣＰＵ２０は、外部状況の変化を検知したか、又は、実行中のアプリケーションプログラム２３１が変化したか否かを判断する（ステップＳ２１）。ＣＰＵ２０は、自身が内蔵する図示しないタイマ等により起動してからの経過時間、Ｉ／Ｏ部２４に接続されるセンサ、測定器等から得られるデータ、又はＩ／Ｏ部２４に接続されるネットワークコントローラを介して外部装置から得られるデータに基づき外部状況を検知する。そしてＣＰＵ２０は、制御プログラム２Ｐを読み出して実行することにより、プラットフォーム層のプログラムによって実行中のアプリケーションプログラム２３１，２３１，…を認識することが可能である。
【００６７】
ＣＰＵ２０は、外部状況の変化も検知せず、且つ実行中のアプリケーションプログラム２３１，２３１，…も変化していないと判断した場合（Ｓ２１：ＮＯ）、処理をステップＳ２１へ戻す。ＣＰＵ２０は、外部状況の変化を検知したか、又は、実行中のアプリケーションプログラム２３１，２３１，…が変化したと判断した場合（Ｓ２１：ＹＥＳ）、ＲＯＭ２３から対応テーブル２３２を参照し（ステップＳ２２）、対応テーブル２３２から、現在の外部状況に対応し、実行中のアプリケーションプログラム２３１，２３１，…夫々に対応する必要処理能力を抽出する（ステップＳ２３）。
【００６８】
ＣＰＵ２０は、ステップＳ２３で抽出した必要処理能力を合算し（ステップＳ２４）、ＲＯＭ２３からクロック周波数テーブル２３３を参照する（ステップＳ２５）。ＣＰＵ２０は、合算した合計の必要処理能力に対応するクロック周波数をクロック周波数テーブル２３３から読み出して決定する（ステップＳ２６）。そしてＣＰＵ２０は、ステップＳ２６で決定したクロック周波数を指示する制御信号をクロック部２１へ入力することにより、クロック周波数を変更し（ステップＳ２７）、処理を終了する。
【００６９】
なお、外部状況の変化を検知したか、又は、実行中のアプリケーションプログラム２３１，２３１，…が変化したと判断したものの、ステップＳ２６で決定したクロック周波数がそれまでのクロック回路２１により出力されているクロック周波数と変わらない場合にはステップＳ２７の処理は省略してよい。
【００７０】
次に、図８のフローチャートに示したようにＣＰＵ２０がＲＯＭ２３のテーブルを参照して実行する処理により、クロック周波数が決定され、変更される結果を具体例を挙げて説明する。図９は、実施の形態２におけるマイコン２のＣＰＵ２０によって決定されるクロック周波数を示す説明図である。横軸に時間の経過を示し、縦軸は周波数の高低を示す。なお説明図の上部には時間の経過に応じて変化している外部状況と、各時点における合計の必要処理能力とを示している。
【００７１】
図９に示す例では、マイコン２は時点ｔ０ではスリープ状態である。このとき、クロック回路２１から出力されるクロック信号の周波数は低周波数である。又は、スリープ状態でクロック回路２１は停止していてもよい。
【００７２】
その後時点ｔ１で、マイコン２を含むＥＣＵが搭載される車両のイグニッションスイッチ（ＩＧスイッチ）がスタートとなり、マイコン２はスリープ状態から起動する。これにより時点ｔ１後所定時間はエンジン始動中となる。このときＣＰＵ２０はイルミ制御、電源管理制御、及び多重通信制御のアプリケーションプログラム２３１，２３１，…夫々の実行を開始する。ＣＰＵ２０は、Ｉ／Ｏ部２４に接続されるネットワークコントローラを介してＩＧスイッチがスタートとなったことを示す情報を受信することにより、エンジン始動中であることを検知する。この場合ＣＰＵ２０は、ＲＯＭ２３の対応テーブル２３２を参照し、エンジン始動中におけるイルミ制御、電源管理制御、及び多重通信制御のアプリケーションプログラム２３１，２３１，…の実行に夫々必要な処理能力、「１０」、「２０」、及び「１０」を抽出する。そしてＣＰＵ２０は、抽出した必要処理能力「１０」、「２０」、及び「１０」を合算した合計必要処理能力「４０」に対応するクロック周波数をＲＯＭ２３のクロック周波数テーブル２３３を参照し決定する。この場合、ＣＰＵ２０はクロック周波数を高周波数へ変更する。
【００７３】
そして、時点ｔ２ではネットワークの起動が開始される。ＣＰＵ２０は、ネットワークコントローラの起動を検知することによりネットワークの起動を検知する。この場合ＣＰＵ２０は、ＲＯＭ２３の対応テーブル２３２を参照し、エンジン始動中、且つネットワーク起動中におけるイルミ制御、電源管理制御、及び多重通信制御のアプリケーションプログラム２３１，２３１，…の実行に夫々必要な処理能力、「１０」、「２０」、及び「２０」を抽出する。そしてＣＰＵ２０は、抽出した必要処理能力を合算した合計必要処理能力「５０」に対応するクロック周波数をＲＯＭ２３のクロック周波数テーブル２３３を参照し決定する。この場合、ＣＰＵ２０はクロック周波数を高周波数のまま維持する。
【００７４】
その後、時点ｔ３でネットワーク起動が終了した場合、エンジン始動中の状況へ戻る。ＣＰＵ２０はこれを検知し、対応テーブル２３２及びクロック周波数テーブル２３３を参照し、合計必要処理能力「４０」（＝「１０」＋「２０」＋「１０」）に対応するクロック周波数を決定する。この場合、ＣＰＵ２０はクロック周波数を高周波数のまま維持する。
【００７５】
次に時点ｔ４でエンジン始動中の処理が終了し、状況が「その他」の状況となった場合、ＣＰＵ２０はこれを検知する。ＣＰＵ２０は、対応テーブル２３２及びクロック周波数テーブル２３３を参照し、その他の状況における各アプリケーションプログラム２３１，２３１，…の合計必要処理能力「３０」（＝「１０」＋「１０」＋「１０」）に対応するクロック周波数を決定する。ＣＰＵ２０はクロック周波数を高周波数のまま維持する。
【００７６】
その後、時点ｔ５でバッテリの劣化警告がされた場合、ＣＰＵ２０は、バッテリからの警告信号をＩ／Ｏ部２４を介して受信するなどによりこれを検知する。この場合、ＣＰＵ２０は、ＲＯＭ２３の対応テーブル２３２を参照し、バッテリ劣化警告中におけるイルミ制御、電源管理制御、及び多重通信制御のアプリケーションプログラム２３１，２３１，…の実行に夫々必要な処理能力、「１」、「１０」、及び「１０」を抽出する。そしてＣＰＵ２０は、抽出した必要処理能力を合算した合計必要処理能力「２１」に対応するクロック周波数をＲＯＭ２３のクロック周波数テーブル２３３を参照し決定する。この場合、ＣＰＵ２０はクロック周波数を高周波数のまま維持する。
【００７７】
時点ｔ６で更に多重通信が停止された場合、ＣＰＵ２０は、ネットワークコントローラの停止を検知することにより、又はＣＰＵ２０自身の電源管理制御により停止することを示す信号を出力するなどにより、多重通信が停止されたことを検知する。この場合ＣＰＵ２０は、ＣＰＵ２０は、ＲＯＭ２３の対応テーブル２３２を参照し、バッテリ劣化警告中且つ多重通信停止中におけるイルミ制御、電源管理制御、及び多重通信制御のアプリケーションプログラム２３１，２３１，…の実行に夫々必要な処理能力、「１」、「１０」、及び「１」を抽出する。ＣＰＵ２０は、抽出した必要処理能力を合算した合計必要処理能力「１２」に対応するクロック周波数をＲＯＭ２３のクロック周波数テーブル２３３を参照し決定する。この場合、ＣＰＵ２０はクロック周波数を中周波数に変更する。
【００７８】
時点ｔ７ではバッテリ劣化警告が終了した場合、ＣＰＵ２０は、バッテリからの警告信号をＩ／Ｏ部２４を介して受信しなくなったことなどによりこれを検知し、現在の状況は多重通信停止中のみであることを検知する。ＣＰＵ２０は、ＲＯＭ２３の対応テーブル２３２を参照し、多重通信停止中におけるイルミ制御、電源管理制御、及び多重通信制御のアプリケーションプログラム２３１，２３１，…の実行に夫々必要な処理能力、「１０」、「１０」、及び「１」を抽出する。そしてＣＰＵ２０は、抽出した必要処理能力を合算した合計必要処理能力「２１」に対応するクロック周波数をＲＯＭ２３のクロック周波数テーブル２３３を参照し決定する。この場合、ＣＰＵ２０はクロック周波数を高周波数に変更する。
【００７９】
その後時点ｔ８で、ＣＰＵ２０が多重通信制御のアプリケーションプログラム２３１の実行を停止したとする。この場合、ＣＰＵ２０は、自身のプラットフォーム層のプログラムにより実行中のアプリケーションプログラム２３１，２３１がイルミ制御及び電源管理制御であることを認識する。そして状況としては「その他」であることを検知する。ＣＰＵ２０はＲＯＭ２３の対応テーブル２３２を参照し、「その他」の状況下におけるイルミ制御、及び電源管理制御のアプリケーションプログラム２３１，２３１の実行に夫々必要な処理能力、「１０」、及び「１０」を抽出する。そしてＣＰＵ２０は、抽出した必要処理能力を合算した合計必要処理能力「２０」に対応するクロック周波数をＲＯＭ２３のクロック周波数テーブル２３３を参照し決定する。この場合、ＣＰＵ２０はクロック周波数を中周波数に変更する。
【００８０】
図９に示したように、ＣＰＵ２０が実行する複数のアプリケーションプログラム２３１，２３１，…毎に、夫々を各外部状況下で実行するために必要とする処理能力に応じてクロック周波数を適宜決定し変更することができる。これにより、実行するアプリケーションプログラム２３１，２３１，…が同一でも、異なる状況に応じてマイコン２の能力を適切な処理能力とすることができる。したがって、同一のアプリケーションプログラム２３１を実行しているとしても、状況によっては高い処理能力が求められていないにも拘らず、過剰に高周波数のクロック信号で動作して無駄に電力を消費することを詳細な状況に応じて精度よく回避することができ、有効に消費電力を低減させることができる。
【００８１】
なお、上述のように開示された本実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００８２】
【図１】実施の形態１におけるマイコンの構成を示すブロック図である。
【図２】実施の形態１におけるＲＯＭに記憶される対応テーブル及びクロック周波数テーブルの内容例を示す説明図である。
【図３】実施の形態１におけるマイコンのＣＰＵがクロック周波数を決定して変更する処理手順の一例を示すフローチャートである。
【図４】実施の形態１におけるマイコンのＣＰＵによって決定されるクロック周波数を示す説明図である。
【図５】実施の形態２におけるマイコンの構成を示すブロック図である。
【図６】実施の形態２におけるＣＰＵにて実行されるプログラムの階層構造を説明するための説明図である。
【図７】実施の形態２におけるＲＯＭに記憶される対応テーブル、及びクロック周波数テーブルの内容例を示す説明図である。
【図８】実施の形態２におけるマイコンのＣＰＵがクロック周波数を決定して変更する処理手順の一例を示すフローチャートである。
【図９】実施の形態２におけるマイコンのＣＰＵによって決定されるクロック周波数を示す説明図である。
【符号の説明】
【００８３】
１，２  マイコン
１０，２０  ＣＰＵ
１１，２１  クロック回路
１３，２３  ＲＯＭ（記憶手段）
【図１】
2010039543.tif 000003
【図２】
2010039543.tif 000004
【図３】
2010039543.tif 000005
【図４】
2010039543.tif 000006
【図５】
2010039543.tif 000007
【図６】
2010039543.tif 000008
【図７】
2010039543.tif 000009
【図８】
2010039543.tif 000010
【図９】
2010039543.tif 000011