(57)【要約】【課題】  処理のリアルタイム性と消費電力の低減とを両立的に実現する。【解決手段】  クロック制御部１０２は、クロック生成部１０１が生成するクロックを制御してクロック周波数を定める。演算処理部１０３は、クロック制御部１０２を通じて供給されるクロックにしたがって、記憶部１０４から取得したソフトウェアを実行する。排他処理区間検出部１１０は、排他的な処理を行う区間である排他処理区間の開始と終了とを検出する。クロック判定部１１１は、排他処理区間検出部１１０が排他処理区間の開始を検出した場合にはクロック周波数を上げるようにクロック制御部１０２に命令し、排他処理区間検出部１１０が排他処理区間の終了を検出した場合にはクロック周波数を下げるようにクロック制御部１０２に命令する。【選択図】      図１
2004310756.tif 000002
【特許請求の範囲】
【請求項１】
クロックを生成するクロック生成部と、
前記クロック生成部が生成するクロックを制御してクロック周波数を定めるクロック制御部と、
ソフトウェアを記憶する記憶部と、
前記クロック制御部を通じて供給されるクロックにしたがって、前記記憶部から取得した前記ソフトウェアを実行する演算処理部と、
前記演算処理部が予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出部と、
前記特定処理区間検出部が取得した結果に基づいて、クロック周波数を制御する命令を前記クロック制御部に伝えるクロック制御判定部とを備え、
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合にはクロック周波数を上げるように前記クロック制御部に命令し、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合にはクロック周波数を下げるように前記クロック制御部に命令する情報処理装置。
【請求項２】
前記特定処理区間が、排他的に処理を行う区間である請求項１記載の情報処理装置。
【請求項３】
前記特定処理区間が、排他的に処理を行う複数の区間のうちの予め定められた特定の区間である請求項１記載の情報処理装置。
【請求項４】
前記クロック制御部からクロック周波数の情報を得て、前記演算処理部と前記記憶部とに供給する電圧を制御する電源制御部を更に備え、
前記電源制御部は、前記クロック周波数を上げることに対応して電圧を上昇させ、前記クロック周波数を下げることに対応して電圧を低下させる請求項１乃至３の何れかに記載の情報処理装置。
【請求項５】
前記クロック制御部は、前記電源制御部が電圧を上昇させている間に、電圧の上昇に伴って、前記演算処理部が動作可能な範囲でクロック周波数を段階的に上げてゆく請求項４記載の情報処理装置。
【請求項６】
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記特定処理区間が終了するまでの時間である特定処理期間を以前の前記特定の処理に要した時間に基づいて予測し、予測された前記特定処理期間がしきい値を超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しない請求項４記載の情報処理装置。
【請求項７】
前記クロック制御判定部は、前記電源制御部が電圧を上昇させるのに要する時間である電圧上昇時間に依存し且つ前記電圧上昇時間以上である時間を前記しきい値とする請求項６記載の情報処理装置。
【請求項８】
前記クロック制御判定部は、前記電圧上昇時間と前記電源制御部が電圧を下降させるのに要する時間である電圧下降時間との和に依存し且つ前記和以上である時間を前記しきい値とする請求項７記載の情報処理装置。
【請求項９】
前記クロック制御判定部は、前記クロック制御部がクロック周波数を上昇させるのに要する時間である周波数上昇時間に依存し且つ前記周波数上昇時間以上である時間を前記しきい値とする請求項６記載の情報処理装置。
【請求項１０】
前記クロック制御判定部は、前記周波数上昇時間と前記クロック制御部がクロック周波数を下降させるのに要する時間である周波数下降時間との和に依存し且つ前記和以上である時間を前記しきい値とする請求項９記載の情報処理装置。
【請求項１１】
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間と前記クロック周波数を高くしたときに前記特定処理区間が終了するまでの時間である高速特定処理期間とを以前の前記特定の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記電圧制御部が電圧を上昇及び下降させるのに要する期間である電圧変更期間との和に依存し前記和以上の値であるしきい値を、予測された前記低速特定処理期間が超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記低速特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しない請求項４記載の情報処理装置。
【請求項１２】
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間と前記クロック周波数を高くしたときに前記特定処理区間が終了するまでの時間である高速特定処理期間とを以前の前記特定の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記クロック制御部がクロック周波数を上昇及び下降させるのに要する期間である周波数変更期間との和に依存し前記和以上の値であるしきい値を、予測された前記低速特定処理期間が超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記低速特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しない請求項４記載の情報処理装置。
【請求項１３】
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、定められた範囲内で前記クロック周波数を高くしたときに当該特定処理区間が終了するまでの時間である高速特定処理期間と、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間とを、以前の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記電圧制御部が電圧を上昇及び下降させるのに要する期間である電圧変更期間との和に依存し前記和以上の値であるしきい値に比べて、予測された前記低速特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで上げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を上げる命令を通知しない請求項４記載の情報処理装置。
【請求項１４】
前記クロック制御判定部は、前記有効周波数として複数の周波数が前記定められた範囲内にあるときには、前記複数の周波数のうちの最も高い周波数まで前記クロック周波数を上げる命令を前記クロック制御部に通知する請求項１３記載の情報処理装置。
【請求項１５】
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、定められた範囲内で前記クロック周波数を高くしたときに当該特定処理区間が終了するまでの時間である高速特定処理期間と、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間とを、以前の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記クロック制御部がクロック周波数を上昇及び下降させるのに要する期間である周波数変更期間との和に依存し前記和以上の値であるしきい値に比べて、予測された前記低速特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで上げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を上げる命令を通知しない請求項４記載の情報処理装置。
【請求項１６】
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、前記クロック周波数を低くしたときに次に当該特定処理区間の開始を検出するまでの時間である低速非特定処理期間を以前の処理に要した時間に基づいて予測して、予測された前記低速非特定処理期間がしきい値を超えるときに、前記クロック制御部にクロック周波数を下げる命令を通知し、予測された前記低速非特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を下げる命令を通知しない請求項４記載の情報処理装置。
【請求項１７】
前記クロック制御判定部は、前記電源制御部が電圧を下降させるのに要する時間である電圧下降時間に依存し且つ前記電圧下降時間以上である時間を前記しきい値とする請求項１６記載の情報処理装置。
【請求項１８】
前記クロック制御判定部は、前記電圧下降時間と前記電源制御部が電圧を上昇させるのに要する時間である電圧上昇時間との和に依存し且つ前記和以上である時間を前記しきい値とする請求項１７記載の情報処理装置。
【請求項１９】
前記クロック制御判定部は、前記クロック制御部がクロック周波数を下降させるのに要する時間である周波数下降時間に依存し且つ前記周波数下降時間以上である時間を前記しきい値とする請求項１６記載の情報処理装置。
【請求項２０】
前記クロック制御判定部は、前記周波数下降時間と前記クロック制御部がクロック周波数を上昇させるのに要する時間である周波数上昇時間との和に依存し且つ前記和以上である時間を前記しきい値とする請求項１９記載の情報処理装置。
【請求項２１】
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、定められた範囲内で前記クロック周波数を低くしたときに次の前記特定処理区間が開始するまでの時間である低速非特定処理期間を以前の前記特定の処理以外の処理に要した時間に基づいて予測し、前記電圧制御部が電圧を下降及び上昇させるのに要する期間である電圧変更期間に依存し前記電圧変更期間以上の値であるしきい値に比べて、予測された前記低速非特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで下げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を下げる命令を通知しない請求項４記載の情報処理装置。
【請求項２２】
前記クロック制御判定部は、前記有効周波数として複数の周波数が前記定められた範囲内にあるときには、前記複数の周波数のうちの最も低い周波数まで前記クロック周波数を下げる命令を前記クロック制御部に通知する請求項２１記載の情報処理装置。
【請求項２３】
前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、定められた範囲内で前記クロック周波数を低くしたときに次の前記特定処理区間が開始するまでの時間である低速非特定処理期間を以前の前記特定の処理以外の処理に要した時間に基づいて予測し、前記クロック制御部がクロック周波数を下降及び上昇させるのに要する期間である周波数変更期間に依存し前記周波数変更期間以上の値であるしきい値に比べて、予測された前記低速非特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで下げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を下げる命令を通知しない請求項４記載の情報処理装置。
【請求項２４】
請求項１乃至２３の何れかに記載の情報処理装置を備える電気機器。
【請求項２５】
情報処理装置のクロック制御方法であって、
予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出工程と、
前記特定処理区間検出工程が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出工程が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御工程とを備えること特徴とする情報処理装置のクロック制御方法。
【請求項２６】
情報処理装置に、
予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出機能と、
前記特定処理区間検出機能が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出機能が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御機能とを実現させるためのクロック制御プログラム。
【請求項２７】
情報処理装置に、
予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出機能と、
前記特定処理区間検出機能が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出機能が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御機能とを実現させるためのプログラムを記録した前記情報処理装置に読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、電気機器、情報処理装置のクロック制御方法、クロック制御プログラム及びその記録媒体の省電力制御に関し、特に、クロック周波数を制御することによる消費電力を低減する技術に関するものである。
【背景技術】
【０００２】
現在の家電機器、例えば携帯電話、携帯ＡＶ機器、デジタルカメラなどにおいて、消費電力を低く抑えたいという要求が大きい。近年の家電機器にはＣＰＵ（中央演算処理装置）をはじめ多くの処理装置が多数組み込まれている。また、これらの処理装置上で、多数のソフトウェアが同時に動作したり、ディスプレイなどの電力を大きく消費する表示装置が備えられているため、消費電力が増大する傾向にあり、消費電力を抑える技術が必要となってきた。
【０００３】
情報処理装置が消費する電力を小さくする技術として、情報処理装置に供給するクロックの周波数であるクロック周波数を、情報処理装置の状態に応じて制御する技術が知られている。そのような従来技術として、通常は遅いクロック周波数で動作し、ＣＰＵに対する外部割り込み期間とその後の一定期間のみ特別に、ＣＰＵに供給するクロック周波数を上げる技術が開示されている（例えば、特許文献１参照）。この技術は、割り込みフラグを立てている装置上のハードウェアを参照することにより、クロック周波数の制御を行っている。
【０００４】
また、前提として各タスクが必要とする最低限の性能が設定されていて、各タスクを起動する際にその性能に応じてクロック周波数を制御するように設定回路に設定する技術が開示されている（例えば、特許文献２参照）。
【０００５】
更に、マルチタスクオペレーティングシステムの下で、クロック周波数を下げるタスクを常に最下位の優先度で用意する技術が開示されている（例えば、特許文献３参照）。この技術は、他の全てのタスクの処理が終了した際、すなわち、システムが待機状態に入った場合に、クロック周波数を下げることにより消費電力を抑えている。
【特許文献１】特開平５−１０８１９１号公報
【特許文献２】特開平８−７６８７４号公報
【特許文献３】特開平４−２７８６１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、家電機器の消費電力を抑えると同時に、機器を正常に動作させる必要があり、家電機器が備える処理装置には、リアルタイム性が要求されるものが多い。リアルタイム性とは、処理の要求から所定の時間内にその内容の処理が行われることを保証するものである。排他的な処理を行う区間、例えば、ある処理を行っている時に他の処理が行われるのを禁止した区間では、他の処理の要求が受け付けられないため、リアルタイム性を損なう危険性がある。したがって、排他的な処理を行う区間は、可能な限り短時間で処理しなければならない。
【０００７】
前記特許文献１に開示された従来技術は、外部割込み期間のクロック周波数を上げる処理を行っており、外部割り込み期間では消費電力が常に高い状態となり、リアルタイムな省電力制御ができないという課題を有していた。また、前記特許文献２に開示された従来技術は、各タスクが必要とする性能に応じたクロック周波数の制御を行っており、前もって、あらかじめ各タスクが必要とする性能を決定し、設定しておく必要があるという課題を有していた。更に、前記特許文献３に開示された従来技術は、他の全てのタスクの処理が終了した際にクロック周波数を下げる処理を行っているため、他の全てのタスクが終了するまで消費電力は高いままとなり、リアルタイムな省電力制御ができないという課題を有していた。
【０００８】
本発明は、上記課題を解決するためになされたものであり、処理のリアルタイム性を確保しつつ消費電力を低減することを可能にする情報処理装置、当該情報処理装置を備える電気機器、情報処理装置のクロック制御方法、クロック制御プログラム及び当該プログラムの記録媒体を提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記課題を解決し上記目的を達成するために、請求項１記載の発明は、情報処理装置であって、クロックを生成するクロック生成部と、前記クロック生成部が生成するクロックを制御してクロック周波数を定めるクロック制御部と、ソフトウェアを記憶する記憶部と、前記クロック制御部を通じて供給されるクロックにしたがって、前記記憶部から取得した前記ソフトウェアを実行する演算処理部と、前記演算処理部が予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出部と、前記特定処理区間検出部が取得した結果に基づいて、クロック周波数を制御する命令を前記クロック制御部に伝えるクロック制御判定部とを備え、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合にはクロック周波数を上げるように前記クロック制御部に命令し、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合にはクロック周波数を下げるように前記クロック制御部に命令するものである。
【００１０】
請求項１記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合にはクロック判定部がクロック周波数を上げるようにクロック制御部に命令し、特定処理区間検出部が特定処理区間の終了を検出した場合にはクロック判定部がクロック周波数を下げるようにクロック制御部に命令する。そして、クロック制御部が制御するクロックにしたがって演算処理部が記憶部に記憶されるソフトウェアを実行する。従って、リアルタイム性が要求される処理を特定の処理とすることにより、処理のリアルタイム性を確保しつつ消費電力を低減することができる。
【００１１】
請求項２記載の発明は、請求項１記載の情報処理装置であって、前記特定処理区間が、排他的に処理を行う区間であるものである。
【００１２】
請求項２記載の発明によれば、特定処理区間が、通常においてリアルタイム性が要求される排他的に処理を行う区間であるので、処理のリアルタイム性を確保しつつ消費電力を低減することができる。
【００１３】
請求項３記載の発明は、請求項１記載の情報処理装置であって、前記特定処理区間が、排他的に処理を行う複数の区間のうちの予め定められた特定の区間であるものである。
【００１４】
請求項３記載の発明によれば、特定処理区間が、排他的に処理を行う複数の区間のうちの予め定められた特定の区間であるので、排他的に処理を行う複数の区間のうち、必ずしもリアルタイム性を要求されない区間についてまで、消費電力を高めて処理時間を早める無駄を解消することができる。それにより、処理のリアルタイム性を確保しつつ消費電力の節減効果を更に高めることができる。
【００１５】
請求項４記載の発明は、請求項１乃至３の何れかに記載の情報処理装置であって、前記クロック制御部からクロック周波数の情報を得て、前記演算処理部と前記記憶部とに供給する電圧を制御する電源制御部を更に備え、前記電源制御部は、前記クロック周波数を上げることに対応して電圧を上昇させ、前記クロック周波数を下げることに対応して電圧を低下させるものである。
【００１６】
請求項４記載の発明によれば、電源制御部がクロック制御部がクロック周波数を上げることに対応して演算処理部と記憶部とに供給する電圧を上昇させ、クロック周波数を下げることに対応して前記電圧を低下させるので、処理のリアルタイム性を確保しつつ消費電力を更に効果的に低減することができる。
【００１７】
請求項５記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御部は、前記電源制御部が電圧を上昇させている間に、電圧の上昇に伴って、前記演算処理部が動作可能な範囲でクロック周波数を段階的に上げてゆくものである。
【００１８】
請求項５記載の発明によれば、クロック制御部が、電源制御部が電圧を上昇させている間に、電圧の上昇に伴って演算処理部が動作可能な範囲でクロック周波数を段階的に上げてゆくので、演算処理部は電圧の上昇の過程においても処理を実行することができ、それにより処理のリアルタイム性がより効果的に確保される。
【００１９】
請求項６記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記特定処理区間が終了するまでの時間である特定処理期間を以前の前記特定の処理に要した時間に基づいて予測し、予測された前記特定処理期間がしきい値を超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
【００２０】
請求項６記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、特定処理期間を以前の特定の処理に要した時間に基づいて予測し、予測された特定処理期間がしきい値を超えるときにクロック制御部にクロック周波数を上げる命令を通知し、予測された特定処理期間がしきい値未満であるときにクロック周波数を上げる命令を通知しない。このため、クロック周波数を高めても特定の処理をより短時間で終了してリアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合にまで、クロック周波数を上昇させることを回避することができる。
【００２１】
請求項７記載の発明は、請求項６記載の情報処理装置であって、前記クロック制御判定部は、前記電源制御部が電圧を上昇させるのに要する時間である電圧上昇時間に依存し且つ前記電圧上昇時間以上である時間を前記しきい値とするものである。
【００２２】
請求項７記載の発明によれば、クロック制御判定部が、電圧上昇時間に依存し且つ電圧上昇時間以上である時間をしきい値とするので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、より適切に行うことができる。
【００２３】
請求項８記載の発明は、請求項７記載の情報処理装置であって、前記クロック制御判定部は、前記電圧上昇時間と前記電源制御部が電圧を下降させるのに要する時間である電圧下降時間との和に依存し且つ前記和以上である時間を前記しきい値とするものである。
【００２４】
請求項８記載の発明によれば、クロック制御判定部が、電圧上昇時間と電圧下降時間との和に依存し且つこの和以上である時間をしきい値とするので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、より一層適切に行うことができる。
【００２５】
請求項９記載の発明は、請求項６記載の情報処理装置であって、前記クロック制御判定部は、前記クロック制御部がクロック周波数を上昇させるのに要する時間である周波数上昇時間に依存し且つ前記周波数上昇時間以上である時間を前記しきい値とするものである。
【００２６】
請求項９記載の発明によれば、クロック制御部が、周波数上昇時間に依存し且つ周波数上昇時間以上である時間をしきい値とするので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、より適切に行うことができる。
【００２７】
請求項１０記載の発明は、請求項９記載の情報処理装置であって、前記クロック制御判定部は、前記周波数上昇時間と前記クロック制御部がクロック周波数を下降させるのに要する時間である周波数下降時間との和に依存し且つ前記和以上である時間を前記しきい値とするものである。
【００２８】
請求項１０記載の発明によれば、クロック制御判定部が、周波数上昇時間と周波数下降時間との和に依存し且つこの和以上である時間をしきい値とするので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、より一層適切に行うことができる。
【００２９】
請求項１１記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間と前記クロック周波数を高くしたときに前記特定処理区間が終了するまでの時間である高速特定処理期間とを以前の前記特定の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記電圧制御部が電圧を上昇及び下降させるのに要する期間である電圧変更期間との和に依存し前記和以上の値であるしきい値を、予測された前記低速特定処理期間が超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記低速特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
【００３０】
請求項１１記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、高速特定処理期間と低速特定処理時間とを以前の特定の処理に要した時間に基づいて予測し、電圧変更時間と予測された高速特定処理期間との和に依存し且つこの和以上の値であるしきい値を、予測された低速特定処理期間が超えるときに、クロック制御部にクロック周波数を上げる命令を通知し、予測された低速特定処理期間がしきい値未満であるときにクロック周波数を上げる命令を通知しないので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、更に一層適切に行うことができる。
【００３１】
請求項１２記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間と前記クロック周波数を高くしたときに前記特定処理区間が終了するまでの時間である高速特定処理期間とを以前の前記特定の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記クロック制御部がクロック周波数を上昇及び下降させるのに要する期間である周波数変更期間との和に依存し前記和以上の値であるしきい値を、予測された前記低速特定処理期間が超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記低速特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
【００３２】
請求項１２記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、高速特定処理期間と低速特定処理時間とを以前の特定の処理に要した時間に基づいて予測し、周波数変更時間と予測された高速特定処理期間との和に依存し且つこの和以上の値であるしきい値を、予測された低速特定処理期間が超えるときに、クロック制御部にクロック周波数を上げる命令を通知し、予測された低速特定処理期間がしきい値未満であるときにクロック周波数を上げる命令を通知しないので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、更に一層適切に行うことができる。
【００３３】
請求項１３記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、定められた範囲内で前記クロック周波数を高くしたときに当該特定処理区間が終了するまでの時間である高速特定処理期間と、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間とを、以前の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記電圧制御部が電圧を上昇及び下降させるのに要する期間である電圧変更期間との和に依存し前記和以上の値であるしきい値に比べて、予測された前記低速特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで上げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
【００３４】
請求項１３記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、予測した高速特定処理期間と電圧変更期間との和に依存しこの和以上の値であるしきい値に比べて、予測した低速特定処理期間が大きくなる有効周波数が定められた範囲内にあるときには、クロック制御部にクロック周波数を有効周波数まで上げる命令を通知し、有効周波数が定められた範囲内にないときには、クロック制御部にクロック周波数を上げる命令を通知しない。このため、定められた範囲及び低いままの周波数の中から、特定の処理をより短時間で実行する上で好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、より適切に実現する。
【００３５】
請求項１４記載の発明は、請求項１３記載の情報処理装置であって、前記クロック制御判定部は、前記有効周波数として複数の周波数が前記定められた範囲内にあるときには、前記複数の周波数のうちの最も高い周波数まで前記クロック周波数を上げる命令を前記クロック制御部に通知するものである。
【００３６】
請求項１４記載の発明によれば、有効周波数として複数の周波数が定められた範囲内にあるときには、クロック制御判定部が、複数の周波数のうちの最も高い周波数までクロック周波数を上げる命令をクロック制御部に通知する。即ち、特定の処理を最も短時間で実行し得るクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、更に一層適切に実現する。
【００３７】
請求項１５記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、定められた範囲内で前記クロック周波数を高くしたときに当該特定処理区間が終了するまでの時間である高速特定処理期間と、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間とを、以前の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記クロック制御部がクロック周波数を上昇及び下降させるのに要する期間である周波数変更期間との和に依存し前記和以上の値であるしきい値に比べて、予測された前記低速特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで上げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
【００３８】
請求項１５記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、予測した高速特定処理期間と周波数変更期間との和に依存しこの和以上の値であるしきい値に比べて、予測した低速特定処理期間が大きくなる有効周波数が定められた範囲内にあるときには、クロック制御部にクロック周波数を有効周波数まで上げる命令を通知し、有効周波数が定められた範囲内にないときには、クロック制御部にクロック周波数を上げる命令を通知しない。このため、定められた範囲及び低いままの周波数の中から、特定の処理をより短時間で実行する上で好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、より適切に実現する。
【００３９】
請求項１６記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、前記クロック周波数を低くしたときに次に当該特定処理区間の開始を検出するまでの時間である低速非特定処理期間を以前の処理に要した時間に基づいて予測して、予測された前記低速非特定処理期間がしきい値を超えるときに、前記クロック制御部にクロック周波数を下げる命令を通知し、予測された前記低速非特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を下げる命令を通知しないものである。
【００４０】
請求項１６記載の発明によれば、特定処理区間検出部が特定処理区間の終了を検出した場合に、クロック制御判定部が、低速非特定処理期間を以前の処理に要した時間に基づいて予測して、予測された低速非特定処理期間がしきい値を超えるときにクロック制御部にクロック周波数を下げる命令を通知し、予測された低速非特定処理期間がしきい値未満であるときにクロック制御部にクロック周波数を下げる命令を通知しない。このため、クロック周波数を低くして消費電力を節減する効果が薄い場合にまで、クロック周波数を下降させることを回避することができる。
【００４１】
請求項１７記載の発明は、請求項１６記載の情報処理装置であって、前記クロック制御判定部は、前記電源制御部が電圧を下降させるのに要する時間である電圧下降時間に依存し且つ前記電圧下降時間以上である時間を前記しきい値とするものである。
【００４２】
請求項１７記載の発明によれば、クロック制御判定部が、電圧下降時間に依存し且つ電圧下降時間以上である時間をしきい値とするので、消費電力を節減する効果が薄い場合のクロック周波数の下降の回避を、より適切に行うことができる。
【００４３】
請求項１８記載の発明は、請求項１７記載の情報処理装置であって、前記クロック制御判定部は、前記電圧下降時間と前記電源制御部が電圧を上昇させるのに要する時間である電圧上昇時間との和に依存し且つ前記和以上である時間を前記しきい値とするものである。
【００４４】
請求項１８記載の発明によれば、クロック制御判定部が、電圧下降時間と電圧上昇時間との和に依存し且つこの和以上である時間をしきい値とするので、消費電力を節減する効果が薄い場合のクロック周波数の下降の回避を、より一層適切に行うことができる。
【００４５】
請求項１９記載の発明は、請求項１６記載の情報処理装置であって、前記クロック制御判定部は、前記クロック制御部がクロック周波数を下降させるのに要する時間である周波数下降時間に依存し且つ前記周波数下降時間以上である時間を前記しきい値とするものである。
【００４６】
請求項１９記載の発明によれば、クロック制御判定部が、周波数下降時間に依存し且つ周波数下降時間以上である時間を前記しきい値とするので、消費電力を節減する効果が薄い場合のクロック周波数の下降の回避を、より適切に行うことができる。
【００４７】
請求項２０記載の発明は、請求項１９記載の情報処理装置であって、前記クロック制御判定部は、前記周波数下降時間と前記クロック制御部がクロック周波数を上昇させるのに要する時間である周波数上昇時間との和に依存し且つ前記和以上である時間を前記しきい値とするものである。
【００４８】
請求項２０記載の発明によれば、クロック制御判定部が、周波数下降時間と周波数上昇時間との和に依存し且つこの和以上である時間をしきい値とするので、消費電力を節減する効果が薄い場合のクロック周波数の下降の回避を、より一層適切に行うことができる。
【００４９】
請求項２１記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、定められた範囲内で前記クロック周波数を低くしたときに次の前記特定処理区間が開始するまでの時間である低速非特定処理期間を以前の前記特定の処理以外の処理に要した時間に基づいて予測し、前記電圧制御部が電圧を下降及び上昇させるのに要する期間である電圧変更期間に依存し前記電圧変更期間以上の値であるしきい値に比べて、予測された前記低速非特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで下げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を下げる命令を通知しないものである。
【００５０】
請求項２１記載の発明によれば、特定処理区間検出部が特定処理区間の終了を検出した場合に、クロック制御判定部が、電圧変更期間に依存し電圧変更期間以上の値であるしきい値に比べて、予測した低速非特定処理期間が大きくなる有効周波数が定められた範囲内にあるときには、クロック制御部にクロック周波数を有効周波数まで下げる命令を通知し、有効周波数が定められた範囲内にないときには、クロック制御部にクロック周波数を下げる命令を通知しない。このため、定められた範囲及び高いままの周波数の中から、消費電力を節減する上で好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、より適切に実現する。
【００５１】
請求項２２記載の発明は、請求項２１記載の情報処理装置であって、前記クロック制御判定部は、前記有効周波数として複数の周波数が前記定められた範囲内にあるときには、前記複数の周波数のうちの最も低い周波数まで前記クロック周波数を下げる命令を前記クロック制御部に通知するものである。
【００５２】
請求項２２記載の発明によれば、有効周波数として複数の周波数が定められた範囲内にあるときには、クロック制御判定部が、複数の周波数のうちの最も低い周波数までクロック周波数を下げる命令をクロック制御部に通知する。即ち、消費電力を節減する上で最も好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、更に一層適切に実現する。
【００５３】
請求項２３記載の発明は、請求項４記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、定められた範囲内で前記クロック周波数を低くしたときに次の前記特定処理区間が開始するまでの時間である低速非特定処理期間を以前の前記特定の処理以外の処理に要した時間に基づいて予測し、前記クロック制御部がクロック周波数を下降及び上昇させるのに要する期間である周波数変更期間に依存し前記周波数変更期間以上の値であるしきい値に比べて、予測された前記低速非特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで下げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を下げる命令を通知しないものである。
【００５４】
請求項２３記載の発明によれば、特定処理区間検出部が特定処理区間の終了を検出した場合に、クロック制御判定部が、周波数変更期間に依存し周波数変更期間以上の値であるしきい値に比べて、予測した低速非特定処理期間が大きくなる有効周波数が定められた範囲内にあるときには、クロック制御部にクロック周波数を有効周波数まで下げる命令を通知し、有効周波数が定められた範囲内にないときには、クロック制御部にクロック周波数を下げる命令を通知しない。このため、定められた範囲及び高いままの周波数の中から、消費電力を節減する上で好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、より適切に実現する。
【００５５】
請求項２４記載の発明は、電気機器であって、請求項１乃至２３の何れかに記載の情報処理装置を備えるものである。
【００５６】
請求項２４記載の発明によれば、電気機器が本発明の情報処理装置を備えるので、情報処理装置による処理のリアルタイム性と消費電力の節減とが両立的に実現する。
【００５７】
請求項２５記載の発明は、情報処理装置のクロック制御方法であって、予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出工程と、前記特定処理区間検出工程が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出工程が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御工程とを備えること特徴とするものである。
【００５８】
請求項２５記載の発明によれば、特定処理区間検出工程が特定処理区間の開始を検出した場合には、クロック制御工程が情報処理装置のクロック周波数を上げ、特定処理区間検出工程が特定処理区間の終了を検出した場合には、クロック制御工程がクロック周波数を下げる。このため、処理のリアルタイム性と消費電力の節減とが両立的に実現する。
【００５９】
請求項２６記載の発明は、クロック制御プログラムであって、情報処理装置に、予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出機能と、前記特定処理区間検出機能が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出機能が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御機能とを実現させるためのものである。
【００６０】
請求項２６記載の発明によれば、クロック制御プログラムが、情報処理装置に本発明の情報処理装置の各機能を実現させるので、処理のリアルタイム性と消費電力の節減とが両立的に実現する。
【００６１】
請求項２７記載の発明は、情報処理装置に読み取り可能な記録媒体であって、前記情報処理装置に、予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出機能と、前記特定処理区間検出機能が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出機能が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御機能とを実現させるためのプログラムを記録したものである。
【００６２】
請求項２７記載の発明によれば、記録媒体に本発明のクロック制御プログラムが記録されているので、この記録媒体が情報処理装置に読み取られることにより、処理のリアルタイム性と消費電力の節減とが両立的に実現する。
【発明の効果】
【００６３】
以上のように本発明の情報処理装置、電気機器、情報処理装置のクロック制御方法、クロック制御プログラム及びその記録媒体によれば、処理のリアルタイム性と消費電力の節減とが両立的に実現する。
【発明を実施するための最良の形態】
【００６４】
以下、本発明の実施の形態において、図面を用いて説明する。
【００６５】
（実施の形態１）
図１は、本発明の実施の形態１における情報処理装置の構成を示したブロック図である。図１において、クロック生成部１０１は、一定周波数でクロックを生成する発振回路である。クロック生成部１０１で生成されるクロックは、情報処理装置内の演算処理部や記憶部に供給するクロックの源となる。
【００６６】
クロック制御部１０２は、クロック生成部１０１で生成されたクロックを分周機能や分周回路によって分周して、クロック生成部１０１が生成したクロックの周波数を制御する。例えば、クロック生成部１０１で生成されたクロックの周波数ｘを１／ｍ（ｍは自然数）に分周して、ｘ／ｍ（ｍは自然数）の周波数のクロックを出力する。
【００６７】
また、クロック制御部１０２を実現する方法として分周するだけではなく、クロック生成部１０１で生成されたクロックを増大させる方式で実現してもよい。
【００６８】
クロック制御部１０２から出力されたクロックは、情報処理装置内の演算処理部１０３や記憶部１０４に供給するクロックとなる。
【００６９】
なお、図１では同一のクロックを演算処理部１０３や記憶部１０４に供給しているが、演算処理部１０３や記憶部１０４に別々のクロックを供給する構成、すなわち非同期のクロックを供給する構成でもよい。また、演算処理部１０３を構成するＣＰＵ１０５やＤＳＰ１０６毎に、別々のクロックを供給してもよい。そのような構成を実現するためには、クロック生成部１０１とクロック制御部１０２を複数備えてクロックそのものを別々に発生させたり、クロック生成部１０１を一つ備えてクロック制御部１０２が複数の分周回路を操作して、異なる周波数のクロックを複数発生させる構成を取る。
【００７０】
演算処理部１０３は、クロック制御部１０２から供給されるクロックにしたがってプログラムの実行や演算処理を行うプロセッサである。このプロセッサには、例えば図１に示すＣＰＵ１０５やＤＳＰ１０６がある。ＣＰＵ１０５は中央演算装置であり、ＤＳＰ１０６は特定の演算処理を高速化したデジタル信号処理装置である。演算処理部１０３は、マルチプロセッサで実現してもよい。
【００７１】
記憶部１０４は、情報処理装置で動作させるソフトウェア（すなわちプログラム）及び情報処理装置の動作に必要なデータを記憶している。記憶部１０４は、例えばＲＡＭ１０７やＲＯＭ１０８から成る。記憶部１０４は、二次記憶装置によって実現してもよいし、取り外し可能な記憶媒体を用いてもよい。磁気記憶媒体としてフロッピー（登録商標）ディスクやハードディスクを備えてもよいし、光記憶媒体としてＣＤやＭＤやＤＶＤを備えてもよい。記憶部１０４は、プロセッサが備える内部ＲＡＭ、レジスタ、キャッシュでもよい。
【００７２】
バス１０９は、演算処理部１０３を構成する各構成要素（ＣＰＵ１０５やＤＳＰ１０６）と記憶部１０４を構成する各構成要素（ＲＡＭ１０７やＲＯＭ１０８）の間を接続しており、バス１０９を介して、ソフトウェアやデータのやり取りを行う。
【００７３】
上記のソフトウェア及びデータは、ＲＯＭ１０８、フレキシブルディスク、ＣＤ−ＲＯＭ等の記録媒体３１を通じて供給することも、電話回線、ネットワーク等の伝送媒体３３を通じて供給することも可能である。図１には、記録媒体３１としてＣＤ−ＲＯＭが描かれており、伝送媒体３３として電話回線が描かれている。ＣＤ−ＲＯＭに記録されたソフトウェア及びデータは、情報処理装置の外部装置としてのＣＤ−ＲＯＭ読取装置３２をバス１０９へ接続することにより、読み出すことができ、更にＲＡＭ１７或いは不図示のハードディスクに格納することができる。記録媒体３１としてＲＯＭ１０８の形態でソフトウェア及びデータが供給される場合には、当該ＲＯＭ１０８を情報処理装置に搭載することにより、情報処理装置はソフトウェア及びデータに従った処理を実行可能となる。伝送媒体３３を通じて供給されるソフトウェア及びデータは、バス１０９を通じて受信され、ＲＡＭ１０７或いは不図示のハードディスクに格納される。伝送媒体３３は、有線の伝送媒体に限らず無線の伝送媒体であっても良い。
【００７４】
排他処理区間検出部１１０は、排他的に処理を行う区間の開始と終了を検出する。詳細については、後に図２を用いて説明する。
【００７５】
クロック制御判定部１１１は、排他処理区間検出部１１０から排他的な処理区間の開始あるいは終了の通知を受け取り、受け取った通知に従い、クロック周波数を制御する命令をクロック制御部１０２に通知する。詳細については、排他処理区間検出部１１０と同様に、後述する。
【００７６】
記憶部１０４に記憶されているソフトウェアは、バス１０９を通じて演算処理部１０３にロードされて実行される。例えば、情報処理装置がソフトウェアを実行する時には、ＲＡＭ１０７に記憶していたソフトウェアをＣＰＵ１０５にロードした後、ＣＰＵ１０５によって実行される。その際、例えば記憶部１０４のＲＡＭ１０７からソフトウェアの実行に必要なデータを随時読み出し、バス１０９を通じて演算処理部１０３のＣＰＵ１０５に送る。
【００７７】
なお、ソフトウェアがＣＰＵ１０５ではなくＤＳＰ１０６や他のプロセッサにロードされて実行される場合や、あるいはソフトウェアがＲＡＭ１０７ではなくＲＯＭ１０８やその他の記憶媒体に記憶されている場合も、本発明の情報処理装置を同様に実施することができる。
【００７８】
ソフトウェアは、ＣＰＵ１０５を占有して実行するために、あるいは特定の資源を用いた処理を実行するために、他の要求を受け付けずに排他的に処理を行う区間を有する。排他的に処理を行う区間は、自らの処理を優先的に行うために他の処理を受け付けない区間である。排他的に処理を行う区間として、例えばデバイスやソフトウェアが要求する割り込み処理を禁止する割り込み禁止区間や、ＣＰＵの実行権を他の実行単位に譲らないプリエンプト禁止区間や、ロック機構を用いて他の実行単位や他のＣＰＵから同一資源にアクセスされるのを禁止する区間などが存在する。
【００７９】
ここで実行単位とは、独自の実行状態を保持する単位である。一例を挙げるとプロセスやタスクあるいはスレッドと呼ばれるものがある。基本ソフトウェアの処理部分（カーネル空間の処理部分）そのものも一つの実行単位と捉えられる。また、基本ソフトウェアの処理部分の中において、割り込みに応じて各割り込み要求用の処理が実行されることがあるが、それらの処理を別々の実行単位と捉えてもよい。マルチプロセッサを備える情報処理装置では、各プロセッサで動作する処理がそれぞれ別の実行単位を持つ。
【００８０】
上記の排他的に処理を行う区間内で別の処理要求が起きても、要求された処理は排他的な処理区間が終了するまで受け付けられず、実行が大幅に遅延する可能性がある。一方、要求した処理が実行されるまでの時間に一定の制約があるもの、すなわちリアルタイム性を要求する処理が排他的な処理区間で要求されると、リアルタイム性を大きく損ねる危険性がある。したがって、排他的に処理を行う区間は、リアルタイム性を保証するために可能な限り短時間で処理を行わなければならない。
【００８１】
本発明の一実施形態による情報処理装置では、クロック制御部１０２でクロックを制御することによって、二つのモードを持つ。一つは排他的に処理を行う区間で処理を高速に終える高速処理モードであり、もう一つは排他的に処理を行わない通常の処理区間で電力消費を抑えて処理を行う低電力消費モードである。高速処理モードでは、クロック周波数を上げることで高速に処理し、低電力消費モードでは、クロック周波数を下げて低速に処理し消費電力を低下させる。  
【００８２】
図２に、排他的に処理を行う区間におけるクロックのパルス波の変化を示し、クロック周波数を制御している様子を表す。
【００８３】
排他処理区間検出部１１０は、排他的に処理を行う区間の検出を行う。図２の１２１は、排他的な処理ではない通常の処理区間から排他的に処理を行う区間に入った時に、排他処理区間検出部１１０が、排他的な処理の開始を検出することを示す。また、図２の１２２は、排他的に処理を行う区間から通常の処理区間に戻った時に、排他処理区間検出部１１０が、排他的な処理の終了を検出することを示す。排他的な処理区間の開始と終了は明示的に示されており、排他処理区間検出部１１０が自動で検出を行うことが可能である。
【００８４】
クロック制御判定部１１１は、排他処理区間検出部１１０から排他的な処理区間の開始あるいは終了の通知を受ける。クロック制御判定部１１１は、排他的な処理区間の開始の通知を受けた場合、クロック制御部１０２にクロック周波数を上げる命令を通知し、排他的な処理区間の終了の通知を受けた場合、クロック制御部１０２にクロック周波数を下げる命令を通知する。これにより、図２に示したように、排他的な処理区間は、高速処理モードで処理を行い、通常の処理区間は、低電力消費モードで処理を行うことになる。
【００８５】
排他処理区間検出部１１０とクロック制御判定部１１１を、例えばソフトウェアによって実現することができる。排他的な処理区間の開始あるいは終了タイミングが、ソフトウェアで明示的に示されている場合、クロック制御判定部１１１に通知する部分を開始処理や終了処理の中に埋め込むことにより、排他処理区間検出部１１０を実現できる。また、排他的な処理区間の開始の場合、その埋め込む処理にクロック制御部１０２へクロック周波数を上げる命令を入れること、あるいは終了の場合、その埋め込む処理にクロック制御部１０２へクロック周波数を下げる命令を入れることにより、クロック制御判定部１１１を実現できる。
【００８６】
また、排他処理区間検出部１１０とクロック制御判定部１１１をソフトウェアによって実現する別の方式として、クロック制御を行うインターフェースを用意しておき、ソフトウェアの中で排他的な処理区間を開始あるいは終了する前後に、そのインターフェースを挿入する方式も取ることができる。つまり、ソフトウェア開発者が、排他的な処理区間の開始に応じてクロック周波数を上げたり、あるいは終了に応じてクロック周波数を下げる処理を挿入することで、排他処理区間検出部１１０とクロック制御判定部１１１とを実現することができる。
【００８７】
図３に、排他処理区間検出部１１０が排他的に処理を行う区間を検出して、クロック制御判定部１１１がクロック制御部１０２にクロックを制御する命令を出力する流れを示す。
【００８８】
最初に、排他処理区間検出部１１０は、排他的な処理区間の開始を検出したかどうかを判定する（Ｓ１４１）。排他的な処理区間の開始を検出しなかった場合（Ｓ１４１がＮｏ）、元に戻ってＳ１４１の判定処理を繰り返す。一方、排他的な処理区間の開始を検出した場合（Ｓ１４１がＹｅｓ）、排他処理区間検出部１１０が、排他的な処理区間の開始をクロック制御判定部１１１に通知する（Ｓ１４２）。
【００８９】
通知を受けて、クロック制御判定部１１１は、クロック制御部１０２に対してクロックの周波数を上げるように命令を通知する（Ｓ１４３）。これにより、情報処理装置は、高速処理モードに切り替わる。
【００９０】
その後、演算処理部１０３が、排他的な処理を実行し（Ｓ１４４）、排他処理区間検出部１１０が排他的な処理区間の終了を検出したかどうかを判定する（Ｓ１４５）。排他的な処理区間の終了を検出しなかった場合（Ｓ１４５がＮｏ）、Ｓ１４４の処理に戻って排他的な処理を継続して実行する。一方、排他的な処理区間の終了を検出した場合（Ｓ１４５がＹｅｓ）、排他処理区間検出部１１０が、排他的な処理区間の終了をクロック制御判定部１１１に通知する（Ｓ１４６）。
【００９１】
通知を受けて、クロック制御判定部１１１はクロック制御部１０２に対してクロックの周波数を下げるように命令を出す（Ｓ１４７）。これにより、情報処理装置は、低電力消費モードに切り替わる。
【００９２】
以上により、本発明の情報処理装置は、排他的な処理区間での処理を、高速処理モードで処理することが可能となる。
【００９３】
図４に、排他処理区間検出部１１０が排他的に処理を行う区間を検出して、クロック制御判定部１１１がクロック制御部１０２にクロックを制御する命令を出力する流れの別の方式を示す。
【００９４】
最初に、演算処理部１０３は、ある特定の処理を開始する（Ｓ１６１）。次に、排他処理区間検出部１１０は、処理を行っている現在の区間が、排他的に処理を行う区間であるかどうかを判定する（Ｓ１６２）。排他的な処理区間でない（通常の処理区間）の場合（Ｓ１６２がＮｏ）、Ｓ１６３に遷移する。一方、排他的な処理区間の場合（Ｓ１６２がＹｅｓ）、Ｓ１６８に遷移する。
【００９５】
排他処理区間検出部１１０は、処理中の処理から、排他的な処理区間の開始を検出したかどうかを判定する（Ｓ１６３）。排他的な処理区間の開始を検出した場合（Ｓ１６３がＹｅｓ）、演算処理部１０３が、排他的な処理区間を開始する（Ｓ１６４）。そうでない場合（Ｓ１６３がＮｏ）、演算処理部１０３は、処理中の処理内容にしたがって処理を行う（Ｓ１６７）。
【００９６】
Ｓ１６４で排他的な処理区間を開始した後に、排他処理区間検出部１１０が、排他的な処理区間の開始をクロック制御判定部１１１に通知する（Ｓ１６５）。この通知を受けて、クロック制御判定部１１１は、クロック制御部１０２に対してクロックの周波数を上げるように命令を通知する（Ｓ１６６）。これにより、情報処理装置は、高速処理モードに切り替わる。
【００９７】
クロック制御部１０２は、クロック制御判定部１１１からの命令を受けてクロック周波数を上げる。例えば、あらかじめ高速処理モードのクロック周波数を５０ＭＨｚと決めていれば、クロック制御部１０２は５０ＭＨｚまでクロック周波数を上げる。他にも、例えばクロック制御部１０２は分周比を１として、クロック生成部１０１で生成されるクロックを分周せずに演算処理部１０３や記憶部１０４に供給する方式がある。あるいは、演算処理部１０３や記憶部１０４の各装置の許容するクロック周波数の上限値が設定されていて、クロック制御部１０２は設定されている各装置の上限値を満たす範囲内で、最大のクロック周波数で出力するようにクロックを制御してもよい。
【００９８】
一方、排他処理区間検出部１１０は、排他的な処理区間の終了を検出したかどうかを判定し（Ｓ１６８）、その結果、排他的に処理を行う区間から出る処理である場合（Ｓ１６８がＹｅｓ）、排他的に処理を行う区間を終了する（Ｓ１６９）。そうでない場合（Ｓ１６８がＮｏ）、演算処理部１０３が、処理中の処理内容にしたがって処理を行う（Ｓ１６７）。
【００９９】
Ｓ１６９で排他的な処理区間を終了した後に、排他処理区間検出部１１０が、排他的な処理区間の終了をクロック制御判定部１１１に通知する（Ｓ１７０）。この通知を受けて、クロック制御判定部１１１は、クロック制御部１０２に対してクロックの周波数を下げるように命令を出す（Ｓ１７１）。これにより、情報処理装置は、低電力消費モードに切り替わる。
【０１００】
クロック制御部１０２は、クロック制御判定部１１１からの命令を受けて、クロック周波数を下げる。例えば、あらかじめ低電力消費モードのクロック周波数を５ＭＨｚと決めていれば、クロック制御部１０２は５ＭＨｚまでクロック周波数を下げる。あるいは、演算処理部１０３や記憶部１０４の各装置の許容するクロック周波数の下限値が設定されていて、クロック制御部１０２は設定されている各装置の下限値を満たす範囲内で、最小のクロック周波数で出力するようにクロックを制御してもよい。
【０１０１】
クロック制御部１０２がクロック制御判定部１１１からの命令を受けて、クロック周波数を下げる別の方式として、低電力消費モード時のクロック周波数は、情報処理装置の負荷状態、または発熱によって上昇する温度状態、または電力を供給する電池の残りの容量などを考慮して決定してもよい。
【０１０２】
さらに別の方式として、排他的に処理を行う区間に入ってＳ１６６でクロック周波数を上げる前に、それまで動作していたクロック周波数を記憶しておいて、排他的に処理を行う区間から出た時にその周波数に戻すことでもよい。
【０１０３】
上述の通り、情報処理装置の許容する範囲内で最大のクロック周波数で動作させることによって、排他的な処理を行う区間の処理時間を短くしてリアルタイム性を高めることができる。排他的に処理を行わない通常の処理区間では、クロック周波数を情報処理装置の許容する範囲内で最小まで下げて、消費電力を抑えることができる。したがって、消費電力を最大限に抑えてリアルタイム性を高めることができる。
【０１０４】
（実施の形態２）
さらに、本発明の実施の形態２における情報処理装置では、クロック周波数を下げるのに伴い、電源から供給する電圧を下げることで消費電力を抑えることを可能にする。情報処理装置に供給する電圧は、クロック周波数によって最低必要となる水準がハードウェアによって決まる。一般的にクロック周波数を下げると、最低必要となる電圧もそれに応じて低下するため、クロック周波数が高かった時の電圧から電圧を低下させることができる。また、消費電力は電圧の二乗に比例して変化するため、電圧の影響を大きく受ける。
【０１０５】
クロック周波数を下げるのに伴い、電源から供給する電圧を下げることで消費電力を抑える情報処理装置を図５に示す。図５は、図１の情報処理装置に、ＡＣ電源２１０と、電池２１１と、電源制御部２１２が追加されている。クロック生成部２０１、クロック制御部２０２、演算処理部２０３、記憶部２０４、ＣＰＵ２０５、ＤＳＰ２０６、ＲＡＭ２０７、ＲＯＭ２０８、バス２０９、排他処理区間検出部２１３、クロック制御判定部２１４は実施の形態１と同様の機能を有する。
【０１０６】
ＡＣ電源２１０及び電池２１１は、情報処理装置の電源供給部である。ＡＣ電源２１０から電圧を供給してもよく、電池２１１から電圧を供給してもよい。
【０１０７】
電源制御部２１２は、ＡＣ電源２１０及び電池２１１の中から電源供給部を選択すると同時に、情報処理装置に供給する電圧を制御する。
【０１０８】
実施の形態２は、実施の形態１と同様に図４に示すフローチャートの流れに従うが、図４のＳ１６６とＳ１７１にさらに新しいステップが追加されたものとなる。
【０１０９】
実施の形態２において、図４のＳ１７１は図６に示す手順となる。図６を用いて、実施の形態２でクロック周波数を下げる命令を通知した場合の処理を説明する。クロック制御判定部２１４が、クロック周波数を下げる命令をクロック制御部２０２に通知する（Ｓ２２１）。この通知を受けて、クロック制御部２０２が、クロック周波数を下げた時に、クロック制御部２０２は、電源制御部２１２にクロック周波数を下げたことを通知する（Ｓ２２２）。電源制御部２１２は、クロック周波数が下がると、それに応じてＣＰＵ２０５やＤＳＰ２０６などの演算処理部２０３や、ＲＡＭ２０７やＲＯＭ２０８などの記憶部２０４に供給する電圧を下げる（Ｓ２２３）。
【０１１０】
電圧は、クロック制御部２０２、演算処理部２０３、記憶部２０４などの情報処理装置内の構成要素が動作することができる範囲まで下げることができる。例えば、全ての構成要素が動作できることを保証するために、各構成要素が示す最低の電圧のうち、最大の値まで下げることができる。例えば、具体的に説明すると、構成要素Ａが動作可能な最低電圧が５Ｖ、構成要素Ｂが動作可能な最低電圧が７Ｖ、構成要素Ｃが動作可能な最低電圧が１５Ｖとした場合、この３つの構成要素が動作可能である最大の値である１５Ｖまで、電圧を下げることが可能となる。
【０１１１】
また、実施の形態２において、図４の手順Ｓ１６６は図７に示す手順となる。図７を用いて、実施の形態２でクロック周波数を上げる命令を通知した場合の処理を説明する。クロック制御判定部２１４が、クロック周波数を上げる命令をクロック制御部２０２に通知する（Ｓ２２１）。この通知を受けて、クロック制御部２０２が、クロック周波数を上げた時に、クロック制御部２０２は、電源制御部２１２にクロック周波数を上げたことを通知する（Ｓ２３２）。電源制御部２１２は、クロック周波数が上がると、それに応じてＣＰＵ２０５やＤＳＰ２０６などの演算処理部２０３や、ＲＡＭ２０７やＲＯＭ２０８などの記憶部２０４に供給する電圧を上げる（Ｓ２３３）。
【０１１２】
電圧は、クロック制御部２０２、演算処理部２０３、記憶部２０４などの情報処理装置内の装置が動作することができる範囲まで上げることができる。例えば、全ての装置が動作できることを保証するために、各装置が示す最高の電圧のうち、最小の値まで上げることができる。
【０１１３】
以上の通り、クロック周波数を下げることで消費電力を抑えるだけではなく、電源制御部２１２によって電圧を変化させることによって、さらに消費電力を抑えることが可能になる。
【０１１４】
しかし図８に示す通り、電圧を上昇させるためには電圧を上昇させて安定化させるための時間を要する。電圧を２５１から２５２の水準に上昇させてクロック周波数を上げる場合は、電圧が上昇して安定化した時に、電源制御部２１２はクロック制御部２０２に通知して、クロック制御部２０２はクロック周波数を上げる。通常、電圧を上昇させて安定化する直前に、目標とする２５２の水準の電圧を上回る状態が続く。この場合、図８の２５２の電圧の水準を下回らないことが保証されていれば、２５２の電圧の水準に到達した時点２５３で電源制御部２１２がクロック制御部２０２にクロック周波数を上げるように通知してもよい。
【０１１５】
電圧が上昇している間も動作する情報処理装置において、電圧の水準が２５２に達するまでの間にクロック周波数を変化させない場合、排他的に処理を行う区間の先頭ではリアルタイム性が損なわれてしまう。そこで、電圧を図８の２５１から２５２の水準に上昇させている間に、クロック制御部２０２は、段階的にクロック周波数を上げることができる。この場合、クロック制御部２０２は、電圧の値とその電圧のもとで供給可能なクロック周波数との対応情報を保持して、電圧制御部２１２から供給される電圧の値の変化に応じてクロック周波数を設定する。
【０１１６】
また、電圧の上昇中に段階的にクロック周波数を上げる方式として、記憶部２０４が電圧の値とその電圧のもとで供給可能なクロック周波数との対応情報を保持する方式でもよい。この場合、演算処理部２０３が記憶部２０４からロードした対応情報をもとに、電源制御部２１２から供給される現在の電圧で供給可能なクロック周波数を得る。次に、演算処理部２０３はクロック制御部２０２にそのクロック周波数まで上げることを命令する。
【０１１７】
電圧の値とクロック周波数の対応情報とは、例えば演算処理部２０３のＣＰＵ２０５やＤＳＰ２０６、あるいは記憶部２０４のＲＡＭ２０７やＲＯＭ２０８などの各構成要素が特定のクロック周波数で動作するために最低必要とする電圧の水準の情報である。例えば、いくつかの段階に分けたクロック周波数に対して必要な電圧の水準を記述した対応表や、あるいは構成要素ごとにクロック周波数を入力として必要な電圧の水準を出力する関数が対応情報となる。
【０１１８】
一つのクロック制御部２０２が、情報処理装置内の一つの構成要素にクロックを供給している場合、前記のクロック周波数と電圧の対応表や関数にしたがってクロック周波数を上げていけばよい。一つのクロック制御部２０２から同一のクロック周波数でクロックを複数の構成要素に供給している場合、構成要素の中で最も高い電圧を要求する構成要素に合わせてその電圧をしきい値として、そのしきい値を超えた時にクロック周波数を上げるようにすればよい。
【０１１９】
クロック制御部２０２は、電源制御部２１２から常に電圧の水準を検知していて、電圧とクロック周波数の対応情報に照らし合わせて、その電圧の水準に応じたクロック周波数に制御する。そうすることで、排他的に処理を行う区間に入って電圧を上昇させている間も、その時の電圧に対応してクロック周波数を上昇させることが可能となり、リアルタイム性を強化することができる。
【０１２０】
また、電圧を低下させるためには電圧を低下させて安定化させるための時間を要する。電圧を２５２から２５１の水準に低下させてクロック周波数を下げる場合は、電圧を低下させる前の時点２５４で、電源制御部２１２がクロック制御部２０２にクロック周波数を下げるように通知する。通常、電圧を低下させて安定化する直前に、目標とする２５１の水準の電圧を下回る状態が続く。２５１の水準に到達するまでの最小の電圧が保証されている場合、クロック制御部２０２は、電圧が不安定な状態の時も含めて、最小の電圧でも供給可能なクロック周波数に制御する。電圧が安定化した後に電源制御部２１２がクロック制御部２０２に通知して、その電圧に対応したクロック周波数に制御し直してもよい。
【０１２１】
さらに図８の２５６に示すように、電圧が上昇し終えるまでに排他的に処理を行う区間が終了して電圧をすぐに再度下げなければいけない場合、電源制御部２１２が電圧を変更する処理やクロック制御部２０２が電圧の変更に伴ってクロック周波数を変更する処理が無駄になる。そこで、すぐに排他的な処理が終了する場合に、クロック制御判定部２１４はクロックを上げる命令をクロック制御部２０２に通知しない方法が取れる。ただし、排他的に処理を行う区間でリアルタイム性を保つために、すぐに排他的な処理が終了する場合でも、クロック制御判定部２１４がクロックを上げる命令をクロック制御部２０２に通知してもよい。
【０１２２】
すぐに排他的な処理が終了するかどうかをクロック制御判定部２１４が判定するために、例えば図９に示すように、該当する排他的な処理区間の実行時間の情報を記憶部２０４に保存している。クロック制御判定部２１４は、記憶部２０４からこの情報を取得して利用する。ある排他的な処理を開始する地点があると、その地点に対応する地点として必ずその排他的な処理区間を終了する地点が存在する。その開始地点から終了地点までの区間が、排他的に処理を行う区間である。
【０１２３】
図９の左欄３０１には、排他的に処理を行う区間を複数挙げている。排他的な処理区間である割り込み禁止区間やプリエンプト禁止区間は、演算処理部２０３が行う処理中の複数個所で設定されている。したがって、それぞれの排他的な処理区間の実行時間の情報を保持するために、処理区間がどの個所の排他的な処理区間であるのか特定する必要がある。
【０１２４】
排他的な処理区間を特定する方式の一つとして、ソフトウェアによる方式がある。これは、プログラムの中に、どの排他的な処理区間の開始及び終了であるのかを通知する仕組みを入れ込む方式である。例えば、排他処理区間検出部２１３によって検出する排他的な処理区間をあらかじめ抽出して、それぞれの処理区間を特定する数値などの識別記号との一覧を用意しておく。ソフトウェアが、排他的な処理区間を実行する時に、その一覧の中で対応する識別記号を記憶部２０４に、例えば「区間開始＃１」などと通知する。それにより、どの排他的な処理区間であるのかを明示的に示すことができる。
【０１２５】
より詳細には、例えば予めプログラムを作成する時に、各処理区間を一意に区別する識別名を付して作成し、プログラム実行中に排他的な処理区間を開始（又は終了）する直前（又は直後）にその区間の識別名を通知するコードを、プログラムの中に入れ込んでおくという方法を採ることができる。このとき、記憶部２０４には、図９の左欄３０１の内容、すなわち全ての（あるいは一部の）指定された排他的な処理区間の識別名を記憶させておく。一部の指定された排他的な処理区間の識別名のみを記憶させるのは、後述するように、排他的な処理区間のうち、一部のものについてのみ、クロック制御の対象とするためである。
【０１２６】
別の例として、既に作成されたプログラムに対して、前処理としてあらかじめ静的にプログラムを解析した上で、排他的な処理区間の開始及び終了を抽出し、抽出したものに排他的な処理区間の識別名を付して、図９の左欄３０１の内容として記憶部２０４に記憶させておくという方法をも採ることができる。この場合、プログラム実行時に排他的な処理区間の開始及び終了を通知するためのコードを、この前処理の過程で、プログラムの中に挿入しておく。
【０１２７】
ここで前処理とは、プログラムの実行前に行う処理を意味する。前処理は、例えば情報処理装置に電源が投入された後に演算処理部２０３が動作を開始した直後に、特定のプログラムを実行することにより行うことができる。或いは、ＣＰＵ２０５とは別のＣＰＵを演算処理部２０３に組み込んでおき、この別のＣＰＵが特定のプログラムを実行することにより前処理を行っても良い。前処理は、既に作成されたプログラムが記憶部２０４へ搭載される前に、人手で又はツールを用いて当該プログラムを解析することにより実行することもできる。また、「静的」とは、プログラム実行中という意味の「動的」に対立する概念である。従って、「静的に解析する」とは、プログラムが実行されている中で、それと同時に解析するのではなく、実行されていないときのプログラム、いわば休止中のプログラム或いは使用前のプログラムを解析することを意味する。
【０１２８】
なお、プログラムの解析は静的に行っても、記憶部２０４へ図９の左欄３０１の内容を記憶させる処理は、動的に行うことも可能である。それには例えば、プログラムが実行される中で排他的な処理区間が実行されるときに、当該区間の識別名を記憶部２０４へ記憶させるためのコードを、静的にプログラムの解析を行う過程で、プログラムの中に挿入しておくとよい。
【０１２９】
また、排他的な処理区間を特定する別の方式として、排他的な処理を行う際の演算処理部２０３の内部情報に基づいて一意に特定する方式でもよい。演算処理部２０３の内部情報とは、内部で処理を行うために使用されるレジスタの値などである。演算処理部２０３は、排他的な処理区間を実行する時に、その処理区間を特定できる演算処理部２０３の内部情報を記憶部２０４に通知する。
【０１３０】
より詳細には、この方式は、プログラムによって排他的な処理区間を通知するのではなく、ハードウェアやＣＰＵ２０５の状態に基づいて、排他的な処理区間を識別するものである。ＣＰＵ２０５の内部情報として、例えば複数のレジスタの内容を利用することができる。特定のレジスタの値を取得することにより、何れの排他的な処理区間であるかを特定することが可能である。例えば、レジスタのうちのプログラムカウンタの値はプログラムの実行番地を指すので、これを排他的な処理区間の識別に用いることができる。この場合には、予めプログラムカウンタの値を通知するコードをプログラムの中に入れ込んでおくと良い。
【０１３１】
別の例として、レジスタのうちのスタックポインタの値を元に、スタックされている情報、すなわち記憶部２０４のメモリ領域のうち、スタックに割り当てられている領域に記憶されている情報を探し当てることができる。この情報から、関数の呼出し関係を把握することができる。把握された関数の呼出し関係から、排他的な処理区間を動的に検出することが可能となる。ここで、「関数」とは、Ｃ言語でいう関数を一例とするもので、サブルーチン或いはこれに類似するもの、すなわち、主たる処理単位で引用可能な処理単位を意味する。
【０１３２】
以上に述べた様々な方式により、図９に示す排他的な処理区間の実行時間の情報を記憶部２０４が管理することができる。なお、図９の左欄３０１だけでなく、後述する図１２の左欄４０１に対しても、同様の方法を取ることが可能である。
【０１３３】
図９の３０２、３０３、３０４の情報は、３０１に示すそれぞれの排他的な処理区間をこれまでに実行して得られた時間情報を記憶したものである。詳しく述べると、３０２には前回実行した時に要した時間を示している。また３０３には、それぞれの排他的な処理区間を実行した時に要した時間の合計と、実行した全回数を示している。３０４には、３０３より得られた実行時間の合計と実行回数を基に計算して、それぞれの排他的な処理区間の平均の実行時間を示している。
【０１３４】
排他的に処理を行うある区間が開始された時に、その処理区間の実行時間の情報に基づいて処理する流れを図１０のフローチャートで示す。まず排他的に処理を行う区間が開始されると（Ｓ３５１）、演算処理部２０３は、この排他的な処理区間の実効時間を把握するために、時間の計測を開始する（Ｓ３５２）。次に、排他処理区間検出部２１３は、現在実行している排他的な処理区間の実行時間が十分に長いかどうかを判定する（Ｓ３５３）。この判定を行うために実行時間のしきい値を設定して、現在実行している排他的な処理区間の予測実行時間と比較して判定すればよい。
【０１３５】
しきい値は、電圧が上昇するのに要する時間を考慮して設定する。また、予測実行時間は、図９に示す排他的な処理区間の実行時間の情報に基づいて予測する。３０４に示す排他的な処理の平均の実行時間を用いてもよく、３０２に示す前回の実行時間を用いてもよい。例えば、しきい値が１０マイクロ秒（１０μｓｅｃ）であり、予測実行時間に３０４の平均の実行時間を用いる場合、図９に示すように排他的な処理として識別番号１の割り込み禁止の区間が開始されると、しきい値より予測実行時間である平均の実行時間９８．９９μｓｅｃの方が長いので、この区間の実行時間は十分長いと判定する。逆に、識別番号２の割り込み禁止区間が開始されると、しきい値より平均の実行時間０．７２μｓｅｃが短いので、この区間の実行時間が十分長いと判定しない。
【０１３６】
排他処理区間検出部２１３が、実行中の排他的な処理区間が十分長いと判定すると（Ｓ３５３がＹｅｓ）、演算処理部２０３は、クロック周波数を上げるようにクロック制御部２０２に命令し（Ｓ３５４）、後続の処理を継続して行う（Ｓ３５５）。一方、実行中の処理区間が十分長いと判定しなければ（Ｓ３５３がＮｏ）、クロック周波数を上げずに後続の処理を継続して行う（Ｓ３５５）。
【０１３７】
排他処理区間検出部２１３が、実行中の排他的な処理区間を終了する地点を検出すると（Ｓ３５６）、演算処理部２０３は、Ｓ３５３の処理において、以前の実行時間が十分長いと判定して、この処理区間でクロック周波数を上げたかどうかを判定する（Ｓ３５７）。クロック周波数を上げていない場合（Ｓ３５７がＮｏ）、この処理区間の実行時間が、クロック周波数が上がっていない分大きくなる。そのため、本来上げるはずであったクロック周波数との比を取って、クロック周波数を上げて実行した場合の実行時間に補正する（Ｓ３５８）。例えば、４０ＭＨｚのクロック周波数に上げることを設定していたが、４ＭＨｚの低いクロック周波数のままこの処理区間を実行した場合、クロック周波数の比は１０となり、実行時間は１／１０（１０分の１）倍に補正する。その後、演算処理部２０３は、この処理区間の時間の計測を終了して実行に要した時間の情報を保存する（Ｓ３５９）。例えば、図９に示すように３０２の前回の実行時間や３０３や３０４の平均の実行時間の情報を更新すればよい。
【０１３８】
なお、しきい値と対比すべき予測実行時間として、クロック周波数を低く保ったままで実行したと仮定したときの予測実行時間を選ぶのが望ましいが、他のクロック周波数に対応する予測実行時間を採用しても支障ない。また、しきい値として、電圧制御部２１２が電圧を上昇させるのに要する時間、すなわち電圧上昇時間そのものを設定することができる。更に、しきい値として電圧上昇時間にあるマージンを付加した時間を設定しても良い。更に、しきい値として、電圧上昇時間と、電圧制御部２１２が電圧を下降させるのに要する時間、すなわち電圧下降時間との和を設定することができる。更に、しきい値として、前記の和にあるマージンを付加した時間を設定しても良い。
【０１３９】
更には、しきい値と対比すべき予測実行時間として、クロック周波数を低く保ったままで実行したと仮定したときの予測実行時間を選んだ場合には、しきい値として、前記の和にクロック周波数を高くしたときの予測実行時間を加算した加算期間を設定しても良い。更には、しきい値として、この加算期間にあるマージンを付加した時間を設定しても良い。それぞれに応じた確度をもって、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合に、クロック周波数の上昇を回避することができる。なお、マージンを付加するには、例えば、正の定数を加算する、或いは１を超える定数を乗算するとよい。
【０１４０】
電圧上昇時間及び電圧下降時間をしきい値に反映させるのは、電圧制御部２１２が指示を受けてから、電圧の変更を達成するまで時間を要する場合があることを考慮したものである。上に述べた図１０の手順は、電圧を変更するのに要する期間では、プログラムの実行は停止していることを前提としている。すなわち、図８においてクロック周波数を高めたときの予測実行時間は、電圧が高い値２５２で一定となっている期間に相当する。
【０１４１】
また、しきい値に反映させるべき電圧上昇時間の代わりに、クロック制御部２０２がクロック周波数を上昇させるのに要する時間である周波数上昇時間を用いることができる。同様に、しきい値に反映させるべき電圧下降時間の代わりに、クロック制御部２０２がクロック周波数を下降させるのに要する時間である周波数下降時間を用いることができる。周波数上昇時間及び周波数下降時間をしきい値に反映させるのは、クロック制御部２０２が指示を受けてから、クロック周波数の変更を達成するまでに時間を要する場合があることを考慮したものである。上に述べた図１０の手順は、クロック周波数を変更するのに要する期間では、プログラムの実行は停止していることを前提としている。
【０１４２】
図１１は、クロック周波数の変更に時間を要する場合のクロック周波数の変化の様子を示すグラフである。図１１において、クロック周波数は低い値５０１から高い値５０２へ上昇するのに、ある時間を要している。同様に、クロック周波数は高い値５０２から低い値５０１へ下降するのに、ある時間を要している。図１１においてクロック周波数を高めたときの予測実行時間は、クロック周波数が高い値５０２で一定となっている期間、すなわち時刻５０３〜時刻５０４の期間に相当する。
【０１４３】
図１０を用いて排他的に処理を行う区間の処理の流れを示したが、電圧とそれに応じたクロック周波数の組み合わせを複数取り得る場合、Ｓ３５３とＳ３５４の手順で排他的な処理区間を最短にするような電圧とクロック周波数を選択することができる。
【０１４４】
Ｓ３５３とＳ３５４において最適な電圧とクロック周波数を選択する方法を述べる。まず、図８に示す２５１の水準から２５２の水準に電圧が上昇して安定するまでの時間は、現在の電圧の水準と変更後の電圧の水準の２値、及び電圧の上昇速度、すなわち電圧対時間の曲線の傾きによって定まる。また、排他的な処理区間の予測実行時間は、あるクロック周波数に基づいた予測実行時間と変更後のクロック周波数の２値によって定まる。変更後のクロック周波数は、変更後の電圧の水準に応じた最大のクロック周波数であるので、変更後の電圧の水準によって定まる。したがって結果的に、電圧の上昇時間よりも排他的な処理区間の予測実行時間が長いという条件下で、排他的な処理区間の予測実行時間を最短にするような電圧の水準を選択すればよい。その電圧の水準に応じた最大のクロック周波数が最適なクロック周波数である。
【０１４５】
より詳細に説明すると、上記の処理手順は、電圧の上昇中及び下降中にはプログラムを実行することができないことを前提としている。すなわち上記の処理手順は、図８又は図１１において電圧が平坦である期間に限りプログラムが実行されることを前提としている。上記の処理手順は、この前提の上で、電圧とクロック周波数とを単純に、「高速処理モード」と「低電力消費モード」とに対応した２つの値の間で変えるのではなく、電圧の上昇速度及び下降速度、言い換えれば電圧の上昇時間及び下降時間と、上昇させたクロック周波数で排他的な処理区間の処理を行うのに要する時間との間の関係を考慮して、最適な電圧と対応するクロック周波数とに上昇させるものである。
【０１４６】
以下に具体例を挙げる。通常の動作モードである「低電力消費モード」では、２０ＭＨｚの速度で演算処理部２０３が動作している時に、ある排他的な処理区間の処理時間が６０秒であると予測されたものとする。この場合に、クロック周波数を６０ＭＨｚに上昇させると、単純な計算によれば、排他的な処理区間の処理時間は２０秒となることが期待される。しかしながら、クロック周波数を１０ＭＨｚ分上昇させるために、電圧を上昇させる時間として５秒を要すると仮定すると、クロック周波数を２０ＭＨｚから６０ＭＨｚまで上昇させ、更にその後下降させるのに合計４０秒の時間を必要とする。すなわち、排他的な処理区間の処理時間である２０秒を含めると、電圧が元の低い値に戻るまでに、２０＋４０＝６０秒の時間が必要となる。
【０１４７】
これに対して、クロック周波数を６０ＭＨｚではなく、４０ＭＨｚにまで上昇させる場合には、２０ＭＨｚから４０ＭＨｚまで上昇させ、更にその後下降させるのには、合計２０秒の時間で足りる。クロック周波数が４０ＭＨｚであれば、クロック周波数が２０ＭＨｚである場合に比べて処理速度は２倍になるので、排他的な処理区間の処理時間は３０秒となる。すなわち、排他的な処理区間の処理時間である３０秒を含めて、３０＋２０＝５０秒の時間で電圧が元の低い値に戻る。
【０１４８】
このように、予め定められた範囲で、上昇させるべき最適なクロック周波数を選択することができる。すなわち、電圧が元の低い値に戻るまでの時間、或いはこれにあるマージンを加えた時間よりも、クロック周波数を低いままに保ったままで排他的な処理区間の処理を行った場合に予測される時間が長くなるクロック周波数である有効周波数が予め定められた範囲にあれば、クロック周波数を有効周波数まで上昇させ、有効周波数が予め定められた範囲にない場合には、クロック周波数を上昇させなければよい。予め定められた範囲は、クロック周波数の範囲を段階的に定めるものであってもよく、連続した範囲であってもよい。一つのクロック周波数について、排他的な処理区間の処理時間についての予測値が得られれば、他の任意のクロック周波数について、排他的な処理区間の処理時間、及び電圧の上昇及び下降に要する時間は、単純な計算で得ることができる。
【０１４９】
このように、排他的な処理区間を最短にするような電圧とクロック周波数を選択した場合、Ｓ３５７とＳ３５８の手順の中で、選択したクロック周波数に応じて計測した実行時間を補正する必要がある。Ｓ３５９で保存される時間情報は、ある特定のクロック周波数に基づいて計測された時間情報である。例えば、排他的な処理区間の実行時間を情報処理装置が許容する最大のクロック周波数に基づいて計測されている場合、実際に実行した時のクロック周波数との比を取って補正を行う。基準となる最大のクロック周波数が４０ＭＨｚであり、排他的な処理区間において選択したクロック周波数が固定で２０ＭＨｚあるいは平均的に２０ＭＨｚであれば、計測した実行時間を２０／４０＝０．５倍に補正して、Ｓ３５９で時間情報として保存する。すなわち、２０ＭＨｚのクロック周波数の下で実行時間が１０秒であったならば、０．５倍に補正した５秒が時間情報として保存される。なお、排他的な処理区間の実行時間を記録するための基準となるクロック周波数は、任意の値に定めることができる。
【０１５０】
一方、図８の２５７に示すように、電圧が低下し終えるまでに再度排他的に処理を行う区間が開始して電圧をすぐに再度上げなければいけない場合、排他的に処理を行う区間で即座に電圧が目標の水準２５２まで到達しないので、クロック周波数をすぐに上げることができずにリアルタイム性を損なう。また、電源制御部２１２が電圧を変更する処理や、電圧の変更に伴ってクロック制御部２０２がクロック周波数を変更する処理が無駄になる。そこで、排他的に処理を行う区間が終了してすぐに再度排他的に処理を行う区間が開始する場合に、クロック制御判定部２１４は、クロックを下げる命令をクロック制御部２０２に通知せず、電圧を２５２の水準に保ちクロック周波数を高いまま維持する方法が取れる。
【０１５１】
すぐに再度排他的な処理が開始するかどうかをクロック制御判定部２１４が判定するために、例えば図１２に示すように、排他的な処理の終了から次の排他的な処理の開始までの処理区間の実行時間の情報を記憶部２０４に保存している。クロック制御判定部２１４は、記憶部２０４からこの情報を取得して利用する。図９に示す情報と大きく異なる点は、ある排他的な処理を終了する地点とその次に実行される排他的な処理を開始する地点とは１対１に対応しない点である。ある排他的な処理を終了すると、割り込みなどの処理によって様々に実行経路が変化することが考えられ、次の排他的な処理の開始地点との組み合わせを全て考える必要がある。図１２の４０１には、それぞれの割り込み禁止区間やプリエンプト禁止区間の終了地点に対して、可能性として考えられる次の排他的な処理を開始する地点との組み合わせが記される。
【０１５２】
排他的な処理区間の開始と終了は、演算処理部２０３が行う処理中の複数個所で設定されている。したがって、それぞれの組み合わせに応じて実行時間の情報を保持するために、どの個所の排他的な処理区間の開始及び終了であるのか特定する必要がある。それらを特定する方式は、前述した排他的な処理区間を特定する方式と同様の方式により実現することができる。
【０１５３】
例えば、排他処理区間検出部２１３によって検出する排他的な処理区間の開始と終了をあらかじめ抽出して、それぞれの地点を特定する数値などの識別記号との一覧を用意しておく。ソフトウェアの中で排他的な処理区間を開始あるいは終了する時に、その一覧の中で対応する識別記号を記憶部２０４に通知する。それにより、どの排他的な処理区間の開始あるいは終了であるのかを明示的に示すことができる。
【０１５４】
また、排他的な処理区間の開始と終了を特定する別の方式として、排他的な処理を行う際の演算処理部２０３の内部情報に基づいて一意に特定する方式でもよい。演算処理部２０３の内部情報とは、内部で処理を行うために使用されるレジスタの値などである。演算処理部２０３は、排他的な処理区間を開始及び終了する時に、その地点を特定できる演算処理部２０３の内部情報を記憶部２０４に通知する。
【０１５５】
これらの方式により、図１２に示す排他的な処理区間の実行時間の情報を記憶部２０４が管理することができる。
【０１５６】
図１２の４０２、４０３、４０４の情報は、４０１に示すそれぞれの終了地点から開始地点までの処理区間をこれまでに実行して得られた時間情報を記憶したものであり、４０２には前回実行した時に要した時間を示している。また４０３には、それぞれの終了地点から開始地点までの処理区間を実行した時に要した時間の合計と、実行した全回数を示している。４０４には、４０３より得られた実行時間の合計と実行回数を基に計算して、それぞれの終了地点から開始地点までの処理区間の平均の実行時間を示している。
【０１５７】
排他的に処理を行うある区間が終了された時に、次に排他的な処理区間が開始されるまでの実行時間の情報に基づいて処理する流れを図１３のフローチャートで示す。まず、排他的に処理を行う区間が終了されると（Ｓ４５１）、演算処理部２０３は、排他的な処理区間が開始されるまでの実行時間を把握するために時間の計測を開始する（Ｓ４５２）。次に、演算処理手段２０３は、現在実行している処理区間の実行時間が十分に長いかどうかを判定する（Ｓ４５３）。この判定を行うために、実行時間が十分に長いかどうかを判定するための実行時間のしきい値を設定して、現在実行している排他的な処理区間の予測実行時間と比較して判定すればよい。
【０１５８】
しきい値は、電圧が下降するのに要する時間を考慮して設定する。また、予測実行時間は図１２に示す排他的な処理の終了地点から開始地点までの区間の実行時間の情報に基づいて予測する。４０４に示す平均の実行時間を用いてもよく、４０２に示す前回の実行時間を用いてもよい。例えば、しきい値が１０μｓｅｃであり、予測実行時間に４０４の平均の実行時間のうち最短のものを用いる場合、図１２に示すように識別番号１の割り込み禁止の区間が終了されると、予測実行時間は次に識別番号２の割り込み禁止が開始される場合が最短であり、しきい値より予測実行時間である平均の実行時間の４４６．０４μｓｅｃの方が長いので、この区間の実行時間は十分長いと判定する。逆に、識別番号１のプリエンプト禁止区間が終了されると、予測実行時間は次に識別番号１の割り込み禁止区間が開始される場合であり、しきい値より平均の実行時間４．８６μｓｅｃが短いので、この区間の実行時間が十分長いと判定しない。
【０１５９】
実行中の処理区間が十分長いと判定すると（Ｓ４５３がＹｅｓ）、演算処理部２０３は、クロック周波数を下げるようにクロック制御部２０２に命令し（Ｓ４５４）、後続の処理を継続して行う（Ｓ４５５）。一方、実行中の処理区間が十分長いと判定しなければ（Ｓ４５３がＮｏ）、クロック周波数を下げずに後続の処理を継続して行う（Ｓ４５５）。
【０１６０】
排他処理区間検出部２１３が、実行中の排他的な処理区間を開始する地点を検出すると（Ｓ４５６）、Ｓ４５３の処理において、以前の実行時間が十分長いと判定して、この処理区間でクロック周波数を下げたかどうかを判定する（Ｓ４５７）。クロック周波数を下げていない場合（Ｓ４５７がＮｏ）、この処理区間の実行時間が、クロック周波数が下がっていない分大きくなる。そのため、本来下げるはずであったクロック周波数との比を取って、クロック周波数を上げて実行した場合の実行時間に補正する（Ｓ４５９）。例えば、４ＭＨｚのクロック周波数に下げることを設定していたが、４０ＭＨｚの高いクロック周波数のままこの処理区間を実行した場合、クロック周波数の比は１／１０（１０分の１）となり、実行時間は１０倍に補正する。その後、この処理区間の時間の計測を終了して実行に要した時間の情報を保存する（Ｓ４５９）。例えば、図１２に示すように４０２の前回の実行時間や４０３や４０４の平均の実行時間の情報を更新すればよい。
【０１６１】
なお、しきい値と対比すべき予測実行時間として、クロック周波数を下げて実行したと仮定したときの予測実行時間を選ぶのが望ましい。また、しきい値として、電圧制御部２１２が電圧を下降させるのに要する時間、すなわち電圧下降時間そのものを設定することができる。或いは、しきい値として電圧下降時間にあるマージンを付加した時間を設定しても良い。また、しきい値として、電圧下降時間と、電圧制御部２１２が電圧を上昇させるのに要する時間、すなわち電圧上昇時間との和を設定することができる。更に、しきい値として、前記の和にあるマージンを付加した時間を設定しても良い。それぞれに応じた確度をもって、消費電力を節減する効果が薄い場合にまで、クロック周波数を下降させることを回避することができる。
【０１６２】
また、しきい値に反映させるべき電圧上昇時間の代わりに、クロック制御部２０２がクロック周波数を上昇させるのに要する時間である周波数上昇時間を用いることができる。同様に、しきい値に反映させるべき電圧下降時間の代わりに、クロック制御部２０２がクロック周波数を下降させるのに要する時間である周波数下降時間を用いることができる。
【０１６３】
図１４は、クロック周波数の変更に時間を要する場合のクロック周波数の変化の様子を示すグラフである。図１４において、クロック周波数は高い値５１１から低い値５１２へ下降するのに、ある時間を要している。同様に、クロック周波数は低い値５１２から高い値５１１へ上昇するのに、ある時間を要している。電圧の変更に時間を要する場合の電圧の変化の様子は、図１４と同様に描かれる。
【０１６４】
電圧上昇時間及び電圧下降時間をしきい値に反映させるのは、電圧制御部２１２が指示を受けてから、電圧の変更を達成するまで時間を要する場合があることを考慮したものである。また、周波数上昇時間及び周波数下降時間をしきい値に反映させるのは、クロック制御部２０２が指示を受けてから、クロック周波数の変更を達成するまでに時間を要する場合があることを考慮したものである。上に述べた図１３の手順は、電圧を変更するのに要する時間或いはクロック周波数を変更するのに要する時間では、プログラムの実行は停止していることを前提としている。図１４においてクロック周波数を低くしたときの予測実行時間は、クロック周波数が低い値５１２で一定となっている期間、すなわち時刻５１３〜時刻５１４の期間に相当する。
【０１６５】
図１３を用いて、排他的に処理を行う区間が終了された時に、次に排他的な処理区間が開始されるまでの処理の流れを示したが、電圧とそれに応じたクロック周波数の組み合わせを複数取り得る場合、Ｓ４５３とＳ４５４の手順で排他的な処理の終了から次の開始までの区間を最長にするような電圧とクロック周波数を選択することができる。
【０１６６】
Ｓ４５３とＳ４５４において最適な電圧とクロック周波数を選択する方法を述べる。まず、図８に示す２５２の水準から２５１の水準に電圧が下降して安定するまでの時間は、現在の電圧の水準と変更後の電圧の水準の２値、及び電圧の下降速度、すなわち電圧対時間の曲線の傾きによって定まる。また、排他的な処理の終了から次の開始までの区間の予測実行時間は、あるクロック周波数に基づいた予測実行時間と変更後のクロック周波数の２値によって定まる。変更後のクロック周波数は、変更後の電圧の水準に応じた最大のクロック周波数であるので、変更後の電圧の水準によって定まる。したがって結果的に、電圧の下降時間よりも排他的な処理の終了から次の開始までの区間の予測実行時間が長いという条件下で、予測実行時間を最長にするような電圧の水準を選択すればよい。その電圧の水準に応じた最大のクロック周波数が最適なクロック周波数である。
【０１６７】
より詳細に説明すると、上記の処理手順は、電圧の上昇中及び下降中にはプログラムを実行することができないことを前提としている。すなわち上記の処理手順は、図１４において電圧が平坦である期間に限りプログラムが実行されることを前提としている。上記の処理手順は、この前提の上で、電圧とクロック周波数とを単純に、「高速処理モード」と「低電力消費モード」とに対応した２つの値の間で変えるのではなく、電圧の下降速度及び上昇速度、言い換えれば電圧の下降時間及び上昇時間と、下降させたクロック周波数で排他的でない処理区間の処理を行うのに要する時間との間の関係を考慮して、最適な電圧と対応するクロック周波数とに下降させるものである。
【０１６８】
以下に具体例を挙げる。演算処理部２０３が６０ＭＨｚの速度で実行していた「高速処理モード」が終了したときに、次の排他的な処理区間の開始までの処理時間、すなわち非排他的な処理区間の処理時間が１０秒であると予測されたものとする。この場合に、クロック周波数を２０ＭＨｚに下降させると、単純な計算によれば、非排他的な処理区間の処理時間は３０秒となると予測される。しかしながら、クロック周波数を１０ＭＨｚ分下降させるために、電圧を下降させる時間として５秒を要すると仮定すると、クロック周波数を６０ＭＨｚから２０ＭＨｚまで下降させ、更にその後上昇させるのに合計４０秒の時間を必要とする。すなわち、周波数を低くして非排他的な処理区間の処理を行ったときの処理時間である３０秒は、クロック周波数の下降及び上昇に要する時間である４０秒に比べて短い。この場合には、クロック周波数を下げることによる消費電力の節減効果は希薄であり、クロック周波数を下げなければよい。
【０１６９】
これに対して、クロック周波数を２０ＭＨｚではなく、４０ＭＨｚにまで下降させる場合には、６０ＭＨｚから５０ＭＨｚまで下降させ、更にその後上昇させるのには、合計１０秒の時間で足りる。クロック周波数が５０ＭＨｚであれば、非排他的な処理区間の処理時間は１２秒となる。すなわち、周波数を５０ＭＨｚまで低くして非排他的な処理区間の処理を行ったときの処理時間である１２秒は、クロック周波数の下降及び上昇に要する時間である１０秒に比べて短い。この場合には、クロック周波数を下げることによる消費電力の節減効果は高いと言え、クロック周波数を例えば５０ＭＨｚまで下げると良い。
【０１７０】
このように、予め定められた範囲で、下降させるべき最適なクロック周波数を選択することができる。すなわち、電圧が元の高い値に戻るまでの時間、或いはこれにあるマージンを加えた時間よりも、クロック周波数を低くして非排他的な処理区間の処理を行った場合に予測される時間が長くなるクロック周波数である有効周波数が、予め定められた範囲にあれば、クロック周波数を有効周波数まで下げ、有効周波数が予め定められた範囲になければクロック周波数を下降させなければよい。予め定められた範囲は、クロック周波数の範囲を段階的に定めるものであってもよく、連続した範囲であってもよい。一つのクロック周波数について、非排他的な処理区間の処理時間についての予測値が得られれば、他の任意のクロック周波数について、非排他的な処理区間の処理時間、及び電圧の上昇及び下降に要する時間は、単純な計算で得ることができる。
【０１７１】
このように、排他的な処理の終了から次の開始までの区間を最長にするような電圧とクロック周波数を選択した場合、Ｓ４５７とＳ４５８の手順の中で、選択したクロック周波数に応じて計測した実行時間を補正する必要がある。Ｓ４５９で保存される時間情報は、ある特定のクロック周波数に基づいて計測された時間情報である。例えば、排他的な処理の終了から次の開始までの実行時間を、情報処理装置が許容する最小のクロック周波数に基づいて計測されている場合、実際に実行した時のクロック周波数との比を取って補正を行う。基準となる最小のクロック周波数が４ＭＨｚであり、排他的な処理区間において選択したクロック周波数が固定で２０ＭＨｚあるいは平均的に２０ＭＨｚであれば、計測した実行時間を２０／４＝５倍に補正して、Ｓ４５９で時間情報として保存する。すなわち、２０ＭＨｚのクロック周波数の下で実行時間が１０秒であったならば、５倍に補正した５０秒が時間情報として保存される。なお、排他的な処理区間の実行時間を記録するための基準となるクロック周波数は、任意の値に定めることができる。
【０１７２】
（その他の実施形態）
以上の実施の形態では、排他的な処理区間とそれ以外の処理区間との間でクロック周波数を変える例を示した。しかしながら、排他的な処理区間に限らず、一般に特定の処理区間について、上記の排他的な処理区間と同様の処理を行うように情報処理装置を構成しても良い。作成するプログラム或いは既に作成されたプログラムの中に、排他的な処理区間と同様に何らかの特定の処理を行う区間を特定し、識別名を通知するコードを埋め込むことは可能である。それにより、排他的処理区間検出部１１０又は２１３と同様の動作をする特定処理区間検出部によって、プログラムの実行中に特定の処理区間の開始及び終了を検出することができる。
【０１７３】
また、排他的処理区間検出部１１０又は２１３が、プログラム中の多数の排他的な処理区間のうち、予め定められた特定の排他的な処理区間のみを検出するように情報処理装置を構成してもよい。例えば、プリエンプト禁止区間が実行されていても、その区間を含む処理の条件の如何によっては、通常において他のプロセスが存在しない場合があり、プリエンプト禁止の必要がない場合があるからである。作成するプログラム或いは既に作成されたプログラムの中に、様々な排他的な処理区間のうちの単数又は複数の特定の区間のみを特定し、識別名を通知するコードを埋め込むことは可能である。それにより、排他的処理区間検出部１１０又は２１３は、プログラムの実行中に、排他的な処理区間のうちの特定のものについてのみ、開始及び終了を検出することが可能となる。また、ハードウェアの状態に基づく方法においても、例えば、スタックのトレースに基づいて関数の呼出関係が特定のものを登録し（又は外し）たり、あるレジスタが特定状態であればそのときの処理を登録し（又は外し）たりすることが可能である。
【産業上の利用可能性】
【０１７４】
本発明の情報処理装置、電気機器、情報処理装置のクロック制御方法、クロック制御プログラム及びその記録媒体は、処理のリアルタイム性と消費電力の節減とを両立的に実現するので、産業上有用である。
【図面の簡単な説明】
【０１７５】
【図１】本発明の実施の形態１における情報処理装置の構成を示すブロック図である。
【図２】処理区間とクロック周波数の関係を示す図である。
【図３】クロック制御の処理の流れを示すフローチャートである。
【図４】クロック制御の処理の流れを示すフローチャートである。
【図５】本発明の実施の形態２における情報処理装置の構成を示すブロック図である。
【図６】クロック周波数低下時の電圧制御の流れを示すフローチャートである。
【図７】クロック周波数上昇時の電圧制御の流れを示すフローチャートである。
【図８】電圧と時間との関係を示すグラフである。
【図９】排他的に処理を行う区間とその処理区間の過去の実行時間情報を示す図である。
【図１０】排他的に処理を行う区間が開始された時に実行時間の情報に基づいて処理する流れを示すフローチャートである。
【図１１】クロック周波数と時間との関係を示すグラフである。
【図１２】排他的に処理を行う区間の終了から次の排他的な処理の開始までの処理区間の過去の実行時間情報を示す図
【図１３】排他的に処理を行う区間が終了された時に実行時間の情報に基づいて処理する流れを示すフローチャート
【図１４】クロック周波数と時間との関係を示すグラフである。
【符号の説明】
【０１７６】
１０１、２０１  クロック生成部          １０２、２０２  クロック制御部
１０３、２０３  演算処理部              １０４、２０４  記憶部
１０５、２０５  ＣＰＵ                  １０６、２０６  ＤＳＰ
１０７、２０７  ＲＡＭ                  １０８、２０８  ＲＯＭ
１０９、２０９  バス                    
１１０、２１３  排他処理区間検出部（特定処理区間検出部）
１１１、２１４  クロック制御判定部      ２１０  ＡＣ電源
２１１  電池                            ２１２  電源制御部
【図１】
2004310756.tif 000003
【図２】
2004310756.tif 000004
【図３】
2004310756.tif 000005
【図４】
2004310756.tif 000006
【図５】
2004310756.tif 000007
【図６】
2004310756.tif 000008
【図７】
2004310756.tif 000009
【図８】
2004310756.tif 000010
【図９】
2004310756.tif 000011
【図１０】
2004310756.tif 000012
【図１１】
2004310756.tif 000013
【図１２】
2004310756.tif 000014
【図１３】
2004310756.tif 000015
【図１４】
2004310756.tif 000016