しかしながら、家電機器の消費電力を抑えると同時に、機器を正常に動作させる必要があり、家電機器が備える処理装置には、リアルタイム性が要求されるものが多い。リアルタイム性とは、処理の要求から所定の時間内にその内容の処理が行われることを保証するものである。排他的な処理を行う区間、例えば、ある処理を行っている時に他の処理が行われるのを禁止した区間では、他の処理の要求が受け付けられないため、リアルタイム性を損なう危険性がある。したがって、排他的な処理を行う区間は、可能な限り短時間で処理しなければならない。
前記特許文献1に開示された従来技術は、外部割込み期間のクロック周波数を上げる処理を行っており、外部割り込み期間では消費電力が常に高い状態となり、リアルタイムな省電力制御ができないという課題を有していた。また、前記特許文献2に開示された従来技術は、各タスクが必要とする性能に応じたクロック周波数の制御を行っており、前もって、あらかじめ各タスクが必要とする性能を決定し、設定しておく必要があるという課題を有していた。更に、前記特許文献3に開示された従来技術は、他の全てのタスクの処理が終了した際にクロック周波数を下げる処理を行っているため、他の全てのタスクが終了するまで消費電力は高いままとなり、リアルタイムな省電力制御ができないという課題を有していた。
本発明は、上記課題を解決するためになされたものであり、処理のリアルタイム性を確保しつつ消費電力を低減することを可能にする情報処理装置、当該情報処理装置を備える電気機器、情報処理装置のクロック制御方法、クロック制御プログラム及び当該プログラムの記録媒体を提供することを目的としている。
上記課題を解決し上記目的を達成するために、請求項1記載の発明は、情報処理装置であって、クロックを生成するクロック生成部と、前記クロック生成部が生成するクロックを制御してクロック周波数を定めるクロック制御部と、ソフトウェアを記憶する記憶部と、前記クロック制御部を通じて供給されるクロックにしたがって、前記記憶部から取得した前記ソフトウェアを実行する演算処理部と、前記演算処理部が予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出部と、前記特定処理区間検出部が取得した結果に基づいて、クロック周波数を制御する命令を前記クロック制御部に伝えるクロック制御判定部とを備え、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合にはクロック周波数を上げるように前記クロック制御部に命令し、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合にはクロック周波数を下げるように前記クロック制御部に命令するものである。
請求項1記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合にはクロック判定部がクロック周波数を上げるようにクロック制御部に命令し、特定処理区間検出部が特定処理区間の終了を検出した場合にはクロック判定部がクロック周波数を下げるようにクロック制御部に命令する。そして、クロック制御部が制御するクロックにしたがって演算処理部が記憶部に記憶されるソフトウェアを実行する。従って、リアルタイム性が要求される処理を特定の処理とすることにより、処理のリアルタイム性を確保しつつ消費電力を低減することができる。
請求項2記載の発明は、請求項1記載の情報処理装置であって、前記特定処理区間が、排他的に処理を行う区間であるものである。
請求項2記載の発明によれば、特定処理区間が、通常においてリアルタイム性が要求される排他的に処理を行う区間であるので、処理のリアルタイム性を確保しつつ消費電力を低減することができる。
請求項3記載の発明は、請求項1記載の情報処理装置であって、前記特定処理区間が、排他的に処理を行う複数の区間のうちの予め定められた特定の区間であるものである。
請求項3記載の発明によれば、特定処理区間が、排他的に処理を行う複数の区間のうちの予め定められた特定の区間であるので、排他的に処理を行う複数の区間のうち、必ずしもリアルタイム性を要求されない区間についてまで、消費電力を高めて処理時間を早める無駄を解消することができる。それにより、処理のリアルタイム性を確保しつつ消費電力の節減効果を更に高めることができる。
請求項4記載の発明は、請求項1乃至3の何れかに記載の情報処理装置であって、前記クロック制御部からクロック周波数の情報を得て、前記演算処理部と前記記憶部とに供給する電圧を制御する電源制御部を更に備え、前記電源制御部は、前記クロック周波数を上げることに対応して電圧を上昇させ、前記クロック周波数を下げることに対応して電圧を低下させるものである。
請求項4記載の発明によれば、電源制御部がクロック制御部がクロック周波数を上げることに対応して演算処理部と記憶部とに供給する電圧を上昇させ、クロック周波数を下げることに対応して前記電圧を低下させるので、処理のリアルタイム性を確保しつつ消費電力を更に効果的に低減することができる。
請求項5記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御部は、前記電源制御部が電圧を上昇させている間に、電圧の上昇に伴って、前記演算処理部が動作可能な範囲でクロック周波数を段階的に上げてゆくものである。
請求項5記載の発明によれば、クロック制御部が、電源制御部が電圧を上昇させている間に、電圧の上昇に伴って演算処理部が動作可能な範囲でクロック周波数を段階的に上げてゆくので、演算処理部は電圧の上昇の過程においても処理を実行することができ、それにより処理のリアルタイム性がより効果的に確保される。
請求項6記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記特定処理区間が終了するまでの時間である特定処理期間を以前の前記特定の処理に要した時間に基づいて予測し、予測された前記特定処理期間がしきい値を超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
請求項6記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、特定処理期間を以前の特定の処理に要した時間に基づいて予測し、予測された特定処理期間がしきい値を超えるときにクロック制御部にクロック周波数を上げる命令を通知し、予測された特定処理期間がしきい値未満であるときにクロック周波数を上げる命令を通知しない。このため、クロック周波数を高めても特定の処理をより短時間で終了してリアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合にまで、クロック周波数を上昇させることを回避することができる。
請求項7記載の発明は、請求項6記載の情報処理装置であって、前記クロック制御判定部は、前記電源制御部が電圧を上昇させるのに要する時間である電圧上昇時間に依存し且つ前記電圧上昇時間以上である時間を前記しきい値とするものである。
請求項7記載の発明によれば、クロック制御判定部が、電圧上昇時間に依存し且つ電圧上昇時間以上である時間をしきい値とするので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、より適切に行うことができる。
請求項8記載の発明は、請求項7記載の情報処理装置であって、前記クロック制御判定部は、前記電圧上昇時間と前記電源制御部が電圧を下降させるのに要する時間である電圧下降時間との和に依存し且つ前記和以上である時間を前記しきい値とするものである。
請求項8記載の発明によれば、クロック制御判定部が、電圧上昇時間と電圧下降時間との和に依存し且つこの和以上である時間をしきい値とするので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、より一層適切に行うことができる。
請求項9記載の発明は、請求項6記載の情報処理装置であって、前記クロック制御判定部は、前記クロック制御部がクロック周波数を上昇させるのに要する時間である周波数上昇時間に依存し且つ前記周波数上昇時間以上である時間を前記しきい値とするものである。
請求項9記載の発明によれば、クロック制御部が、周波数上昇時間に依存し且つ周波数上昇時間以上である時間をしきい値とするので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、より適切に行うことができる。
請求項10記載の発明は、請求項9記載の情報処理装置であって、前記クロック制御判定部は、前記周波数上昇時間と前記クロック制御部がクロック周波数を下降させるのに要する時間である周波数下降時間との和に依存し且つ前記和以上である時間を前記しきい値とするものである。
請求項10記載の発明によれば、クロック制御判定部が、周波数上昇時間と周波数下降時間との和に依存し且つこの和以上である時間をしきい値とするので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、より一層適切に行うことができる。
請求項11記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間と前記クロック周波数を高くしたときに前記特定処理区間が終了するまでの時間である高速特定処理期間とを以前の前記特定の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記電圧制御部が電圧を上昇及び下降させるのに要する期間である電圧変更期間との和に依存し前記和以上の値であるしきい値を、予測された前記低速特定処理期間が超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記低速特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
請求項11記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、高速特定処理期間と低速特定処理時間とを以前の特定の処理に要した時間に基づいて予測し、電圧変更時間と予測された高速特定処理期間との和に依存し且つこの和以上の値であるしきい値を、予測された低速特定処理期間が超えるときに、クロック制御部にクロック周波数を上げる命令を通知し、予測された低速特定処理期間がしきい値未満であるときにクロック周波数を上げる命令を通知しないので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、更に一層適切に行うことができる。
請求項12記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間と前記クロック周波数を高くしたときに前記特定処理区間が終了するまでの時間である高速特定処理期間とを以前の前記特定の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記クロック制御部がクロック周波数を上昇及び下降させるのに要する期間である周波数変更期間との和に依存し前記和以上の値であるしきい値を、予測された前記低速特定処理期間が超えるときに、前記クロック制御部にクロック周波数を上げる命令を通知し、予測された前記低速特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
請求項12記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、高速特定処理期間と低速特定処理時間とを以前の特定の処理に要した時間に基づいて予測し、周波数変更時間と予測された高速特定処理期間との和に依存し且つこの和以上の値であるしきい値を、予測された低速特定処理期間が超えるときに、クロック制御部にクロック周波数を上げる命令を通知し、予測された低速特定処理期間がしきい値未満であるときにクロック周波数を上げる命令を通知しないので、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合のクロック周波数の上昇の回避を、更に一層適切に行うことができる。
請求項13記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、定められた範囲内で前記クロック周波数を高くしたときに当該特定処理区間が終了するまでの時間である高速特定処理期間と、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間とを、以前の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記電圧制御部が電圧を上昇及び下降させるのに要する期間である電圧変更期間との和に依存し前記和以上の値であるしきい値に比べて、予測された前記低速特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで上げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
請求項13記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、予測した高速特定処理期間と電圧変更期間との和に依存しこの和以上の値であるしきい値に比べて、予測した低速特定処理期間が大きくなる有効周波数が定められた範囲内にあるときには、クロック制御部にクロック周波数を有効周波数まで上げる命令を通知し、有効周波数が定められた範囲内にないときには、クロック制御部にクロック周波数を上げる命令を通知しない。このため、定められた範囲及び低いままの周波数の中から、特定の処理をより短時間で実行する上で好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、より適切に実現する。
請求項14記載の発明は、請求項13記載の情報処理装置であって、前記クロック制御判定部は、前記有効周波数として複数の周波数が前記定められた範囲内にあるときには、前記複数の周波数のうちの最も高い周波数まで前記クロック周波数を上げる命令を前記クロック制御部に通知するものである。
請求項14記載の発明によれば、有効周波数として複数の周波数が定められた範囲内にあるときには、クロック制御判定部が、複数の周波数のうちの最も高い周波数までクロック周波数を上げる命令をクロック制御部に通知する。即ち、特定の処理を最も短時間で実行し得るクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、更に一層適切に実現する。
請求項15記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の開始を検出した場合に、定められた範囲内で前記クロック周波数を高くしたときに当該特定処理区間が終了するまでの時間である高速特定処理期間と、前記クロック周波数を低く保ったままで前記特定処理区間が終了するまでの時間である低速特定処理期間とを、以前の処理に要した時間に基づいて予測し、予測された前記高速特定処理期間と前記クロック制御部がクロック周波数を上昇及び下降させるのに要する期間である周波数変更期間との和に依存し前記和以上の値であるしきい値に比べて、予測された前記低速特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで上げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を上げる命令を通知しないものである。
請求項15記載の発明によれば、特定処理区間検出部が特定処理区間の開始を検出した場合に、クロック制御判定部が、予測した高速特定処理期間と周波数変更期間との和に依存しこの和以上の値であるしきい値に比べて、予測した低速特定処理期間が大きくなる有効周波数が定められた範囲内にあるときには、クロック制御部にクロック周波数を有効周波数まで上げる命令を通知し、有効周波数が定められた範囲内にないときには、クロック制御部にクロック周波数を上げる命令を通知しない。このため、定められた範囲及び低いままの周波数の中から、特定の処理をより短時間で実行する上で好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、より適切に実現する。
請求項16記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、前記クロック周波数を低くしたときに次に当該特定処理区間の開始を検出するまでの時間である低速非特定処理期間を以前の処理に要した時間に基づいて予測して、予測された前記低速非特定処理期間がしきい値を超えるときに、前記クロック制御部にクロック周波数を下げる命令を通知し、予測された前記低速非特定処理期間が前記しきい値未満であるときに、前記クロック制御部にクロック周波数を下げる命令を通知しないものである。
請求項16記載の発明によれば、特定処理区間検出部が特定処理区間の終了を検出した場合に、クロック制御判定部が、低速非特定処理期間を以前の処理に要した時間に基づいて予測して、予測された低速非特定処理期間がしきい値を超えるときにクロック制御部にクロック周波数を下げる命令を通知し、予測された低速非特定処理期間がしきい値未満であるときにクロック制御部にクロック周波数を下げる命令を通知しない。このため、クロック周波数を低くして消費電力を節減する効果が薄い場合にまで、クロック周波数を下降させることを回避することができる。
請求項17記載の発明は、請求項16記載の情報処理装置であって、前記クロック制御判定部は、前記電源制御部が電圧を下降させるのに要する時間である電圧下降時間に依存し且つ前記電圧下降時間以上である時間を前記しきい値とするものである。
請求項17記載の発明によれば、クロック制御判定部が、電圧下降時間に依存し且つ電圧下降時間以上である時間をしきい値とするので、消費電力を節減する効果が薄い場合のクロック周波数の下降の回避を、より適切に行うことができる。
請求項18記載の発明は、請求項17記載の情報処理装置であって、前記クロック制御判定部は、前記電圧下降時間と前記電源制御部が電圧を上昇させるのに要する時間である電圧上昇時間との和に依存し且つ前記和以上である時間を前記しきい値とするものである。
請求項18記載の発明によれば、クロック制御判定部が、電圧下降時間と電圧上昇時間との和に依存し且つこの和以上である時間をしきい値とするので、消費電力を節減する効果が薄い場合のクロック周波数の下降の回避を、より一層適切に行うことができる。
請求項19記載の発明は、請求項16記載の情報処理装置であって、前記クロック制御判定部は、前記クロック制御部がクロック周波数を下降させるのに要する時間である周波数下降時間に依存し且つ前記周波数下降時間以上である時間を前記しきい値とするものである。
請求項19記載の発明によれば、クロック制御判定部が、周波数下降時間に依存し且つ周波数下降時間以上である時間を前記しきい値とするので、消費電力を節減する効果が薄い場合のクロック周波数の下降の回避を、より適切に行うことができる。
請求項20記載の発明は、請求項19記載の情報処理装置であって、前記クロック制御判定部は、前記周波数下降時間と前記クロック制御部がクロック周波数を上昇させるのに要する時間である周波数上昇時間との和に依存し且つ前記和以上である時間を前記しきい値とするものである。
請求項20記載の発明によれば、クロック制御判定部が、周波数下降時間と周波数上昇時間との和に依存し且つこの和以上である時間をしきい値とするので、消費電力を節減する効果が薄い場合のクロック周波数の下降の回避を、より一層適切に行うことができる。
請求項21記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、定められた範囲内で前記クロック周波数を低くしたときに次の前記特定処理区間が開始するまでの時間である低速非特定処理期間を以前の前記特定の処理以外の処理に要した時間に基づいて予測し、前記電圧制御部が電圧を下降及び上昇させるのに要する期間である電圧変更期間に依存し前記電圧変更期間以上の値であるしきい値に比べて、予測された前記低速非特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで下げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を下げる命令を通知しないものである。
請求項21記載の発明によれば、特定処理区間検出部が特定処理区間の終了を検出した場合に、クロック制御判定部が、電圧変更期間に依存し電圧変更期間以上の値であるしきい値に比べて、予測した低速非特定処理期間が大きくなる有効周波数が定められた範囲内にあるときには、クロック制御部にクロック周波数を有効周波数まで下げる命令を通知し、有効周波数が定められた範囲内にないときには、クロック制御部にクロック周波数を下げる命令を通知しない。このため、定められた範囲及び高いままの周波数の中から、消費電力を節減する上で好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、より適切に実現する。
請求項22記載の発明は、請求項21記載の情報処理装置であって、前記クロック制御判定部は、前記有効周波数として複数の周波数が前記定められた範囲内にあるときには、前記複数の周波数のうちの最も低い周波数まで前記クロック周波数を下げる命令を前記クロック制御部に通知するものである。
請求項22記載の発明によれば、有効周波数として複数の周波数が定められた範囲内にあるときには、クロック制御判定部が、複数の周波数のうちの最も低い周波数までクロック周波数を下げる命令をクロック制御部に通知する。即ち、消費電力を節減する上で最も好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、更に一層適切に実現する。
請求項23記載の発明は、請求項4記載の情報処理装置であって、前記クロック制御判定部は、前記特定処理区間検出部が前記特定処理区間の終了を検出した場合に、定められた範囲内で前記クロック周波数を低くしたときに次の前記特定処理区間が開始するまでの時間である低速非特定処理期間を以前の前記特定の処理以外の処理に要した時間に基づいて予測し、前記クロック制御部がクロック周波数を下降及び上昇させるのに要する期間である周波数変更期間に依存し前記周波数変更期間以上の値であるしきい値に比べて、予測された前記低速非特定処理期間が大きくなる周波数である有効周波数が前記定められた範囲内にあるときには、前記クロック制御部にクロック周波数を前記有効周波数まで下げる命令を通知し、前記有効周波数が前記定められた範囲内にないときには、前記クロック制御部にクロック周波数を下げる命令を通知しないものである。
請求項23記載の発明によれば、特定処理区間検出部が特定処理区間の終了を検出した場合に、クロック制御判定部が、周波数変更期間に依存し周波数変更期間以上の値であるしきい値に比べて、予測した低速非特定処理期間が大きくなる有効周波数が定められた範囲内にあるときには、クロック制御部にクロック周波数を有効周波数まで下げる命令を通知し、有効周波数が定められた範囲内にないときには、クロック制御部にクロック周波数を下げる命令を通知しない。このため、定められた範囲及び高いままの周波数の中から、消費電力を節減する上で好ましいクロック周波数が選択される。従って、処理のリアルタイム性と消費電力の節減との両立が、より適切に実現する。
請求項24記載の発明は、電気機器であって、請求項1乃至23の何れかに記載の情報処理装置を備えるものである。
請求項24記載の発明によれば、電気機器が本発明の情報処理装置を備えるので、情報処理装置による処理のリアルタイム性と消費電力の節減とが両立的に実現する。
請求項25記載の発明は、情報処理装置のクロック制御方法であって、予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出工程と、前記特定処理区間検出工程が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出工程が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御工程とを備えること特徴とするものである。
請求項25記載の発明によれば、特定処理区間検出工程が特定処理区間の開始を検出した場合には、クロック制御工程が情報処理装置のクロック周波数を上げ、特定処理区間検出工程が特定処理区間の終了を検出した場合には、クロック制御工程がクロック周波数を下げる。このため、処理のリアルタイム性と消費電力の節減とが両立的に実現する。
請求項26記載の発明は、クロック制御プログラムであって、情報処理装置に、予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出機能と、前記特定処理区間検出機能が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出機能が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御機能とを実現させるためのものである。
請求項26記載の発明によれば、クロック制御プログラムが、情報処理装置に本発明の情報処理装置の各機能を実現させるので、処理のリアルタイム性と消費電力の節減とが両立的に実現する。
請求項27記載の発明は、情報処理装置に読み取り可能な記録媒体であって、前記情報処理装置に、予め定められた特定の処理を行う区間である特定処理区間の開始と終了とを検出する特定処理区間検出機能と、前記特定処理区間検出機能が前記特定処理区間の開始を検出した場合には前記情報処理装置のクロック周波数を上げ、前記特定処理区間検出機能が前記特定処理区間の終了を検出した場合には前記クロック周波数を下げるクロック制御機能とを実現させるためのプログラムを記録したものである。
請求項27記載の発明によれば、記録媒体に本発明のクロック制御プログラムが記録されているので、この記録媒体が情報処理装置に読み取られることにより、処理のリアルタイム性と消費電力の節減とが両立的に実現する。
以上のように本発明の情報処理装置、電気機器、情報処理装置のクロック制御方法、クロック制御プログラム及びその記録媒体によれば、処理のリアルタイム性と消費電力の節減とが両立的に実現する。
以下、本発明の実施の形態において、図面を用いて説明する。
(実施の形態1)
図1は、本発明の実施の形態1における情報処理装置の構成を示したブロック図である。図1において、クロック生成部101は、一定周波数でクロックを生成する発振回路である。クロック生成部101で生成されるクロックは、情報処理装置内の演算処理部や記憶部に供給するクロックの源となる。
クロック制御部102は、クロック生成部101で生成されたクロックを分周機能や分周回路によって分周して、クロック生成部101が生成したクロックの周波数を制御する。例えば、クロック生成部101で生成されたクロックの周波数xを1/m(mは自然数)に分周して、x/m(mは自然数)の周波数のクロックを出力する。
また、クロック制御部102を実現する方法として分周するだけではなく、クロック生成部101で生成されたクロックを増大させる方式で実現してもよい。
クロック制御部102から出力されたクロックは、情報処理装置内の演算処理部103や記憶部104に供給するクロックとなる。
なお、図1では同一のクロックを演算処理部103や記憶部104に供給しているが、演算処理部103や記憶部104に別々のクロックを供給する構成、すなわち非同期のクロックを供給する構成でもよい。また、演算処理部103を構成するCPU105やDSP106毎に、別々のクロックを供給してもよい。そのような構成を実現するためには、クロック生成部101とクロック制御部102を複数備えてクロックそのものを別々に発生させたり、クロック生成部101を一つ備えてクロック制御部102が複数の分周回路を操作して、異なる周波数のクロックを複数発生させる構成を取る。
演算処理部103は、クロック制御部102から供給されるクロックにしたがってプログラムの実行や演算処理を行うプロセッサである。このプロセッサには、例えば図1に示すCPU105やDSP106がある。CPU105は中央演算装置であり、DSP106は特定の演算処理を高速化したデジタル信号処理装置である。演算処理部103は、マルチプロセッサで実現してもよい。
記憶部104は、情報処理装置で動作させるソフトウェア(すなわちプログラム)及び情報処理装置の動作に必要なデータを記憶している。記憶部104は、例えばRAM107やROM108から成る。記憶部104は、二次記憶装置によって実現してもよいし、取り外し可能な記憶媒体を用いてもよい。磁気記憶媒体としてフロッピー(登録商標)ディスクやハードディスクを備えてもよいし、光記憶媒体としてCDやMDやDVDを備えてもよい。記憶部104は、プロセッサが備える内部RAM、レジスタ、キャッシュでもよい。
バス109は、演算処理部103を構成する各構成要素(CPU105やDSP106)と記憶部104を構成する各構成要素(RAM107やROM108)の間を接続しており、バス109を介して、ソフトウェアやデータのやり取りを行う。
上記のソフトウェア及びデータは、ROM108、フレキシブルディスク、CD−ROM等の記録媒体31を通じて供給することも、電話回線、ネットワーク等の伝送媒体33を通じて供給することも可能である。図1には、記録媒体31としてCD−ROMが描かれており、伝送媒体33として電話回線が描かれている。CD−ROMに記録されたソフトウェア及びデータは、情報処理装置の外部装置としてのCD−ROM読取装置32をバス109へ接続することにより、読み出すことができ、更にRAM17或いは不図示のハードディスクに格納することができる。記録媒体31としてROM108の形態でソフトウェア及びデータが供給される場合には、当該ROM108を情報処理装置に搭載することにより、情報処理装置はソフトウェア及びデータに従った処理を実行可能となる。伝送媒体33を通じて供給されるソフトウェア及びデータは、バス109を通じて受信され、RAM107或いは不図示のハードディスクに格納される。伝送媒体33は、有線の伝送媒体に限らず無線の伝送媒体であっても良い。
排他処理区間検出部110は、排他的に処理を行う区間の開始と終了を検出する。詳細については、後に図2を用いて説明する。
クロック制御判定部111は、排他処理区間検出部110から排他的な処理区間の開始あるいは終了の通知を受け取り、受け取った通知に従い、クロック周波数を制御する命令をクロック制御部102に通知する。詳細については、排他処理区間検出部110と同様に、後述する。
記憶部104に記憶されているソフトウェアは、バス109を通じて演算処理部103にロードされて実行される。例えば、情報処理装置がソフトウェアを実行する時には、RAM107に記憶していたソフトウェアをCPU105にロードした後、CPU105によって実行される。その際、例えば記憶部104のRAM107からソフトウェアの実行に必要なデータを随時読み出し、バス109を通じて演算処理部103のCPU105に送る。
なお、ソフトウェアがCPU105ではなくDSP106や他のプロセッサにロードされて実行される場合や、あるいはソフトウェアがRAM107ではなくROM108やその他の記憶媒体に記憶されている場合も、本発明の情報処理装置を同様に実施することができる。
ソフトウェアは、CPU105を占有して実行するために、あるいは特定の資源を用いた処理を実行するために、他の要求を受け付けずに排他的に処理を行う区間を有する。排他的に処理を行う区間は、自らの処理を優先的に行うために他の処理を受け付けない区間である。排他的に処理を行う区間として、例えばデバイスやソフトウェアが要求する割り込み処理を禁止する割り込み禁止区間や、CPUの実行権を他の実行単位に譲らないプリエンプト禁止区間や、ロック機構を用いて他の実行単位や他のCPUから同一資源にアクセスされるのを禁止する区間などが存在する。
ここで実行単位とは、独自の実行状態を保持する単位である。一例を挙げるとプロセスやタスクあるいはスレッドと呼ばれるものがある。基本ソフトウェアの処理部分(カーネル空間の処理部分)そのものも一つの実行単位と捉えられる。また、基本ソフトウェアの処理部分の中において、割り込みに応じて各割り込み要求用の処理が実行されることがあるが、それらの処理を別々の実行単位と捉えてもよい。マルチプロセッサを備える情報処理装置では、各プロセッサで動作する処理がそれぞれ別の実行単位を持つ。
上記の排他的に処理を行う区間内で別の処理要求が起きても、要求された処理は排他的な処理区間が終了するまで受け付けられず、実行が大幅に遅延する可能性がある。一方、要求した処理が実行されるまでの時間に一定の制約があるもの、すなわちリアルタイム性を要求する処理が排他的な処理区間で要求されると、リアルタイム性を大きく損ねる危険性がある。したがって、排他的に処理を行う区間は、リアルタイム性を保証するために可能な限り短時間で処理を行わなければならない。
本発明の一実施形態による情報処理装置では、クロック制御部102でクロックを制御することによって、二つのモードを持つ。一つは排他的に処理を行う区間で処理を高速に終える高速処理モードであり、もう一つは排他的に処理を行わない通常の処理区間で電力消費を抑えて処理を行う低電力消費モードである。高速処理モードでは、クロック周波数を上げることで高速に処理し、低電力消費モードでは、クロック周波数を下げて低速に処理し消費電力を低下させる。
図2に、排他的に処理を行う区間におけるクロックのパルス波の変化を示し、クロック周波数を制御している様子を表す。
排他処理区間検出部110は、排他的に処理を行う区間の検出を行う。図2の121は、排他的な処理ではない通常の処理区間から排他的に処理を行う区間に入った時に、排他処理区間検出部110が、排他的な処理の開始を検出することを示す。また、図2の122は、排他的に処理を行う区間から通常の処理区間に戻った時に、排他処理区間検出部110が、排他的な処理の終了を検出することを示す。排他的な処理区間の開始と終了は明示的に示されており、排他処理区間検出部110が自動で検出を行うことが可能である。
クロック制御判定部111は、排他処理区間検出部110から排他的な処理区間の開始あるいは終了の通知を受ける。クロック制御判定部111は、排他的な処理区間の開始の通知を受けた場合、クロック制御部102にクロック周波数を上げる命令を通知し、排他的な処理区間の終了の通知を受けた場合、クロック制御部102にクロック周波数を下げる命令を通知する。これにより、図2に示したように、排他的な処理区間は、高速処理モードで処理を行い、通常の処理区間は、低電力消費モードで処理を行うことになる。
排他処理区間検出部110とクロック制御判定部111を、例えばソフトウェアによって実現することができる。排他的な処理区間の開始あるいは終了タイミングが、ソフトウェアで明示的に示されている場合、クロック制御判定部111に通知する部分を開始処理や終了処理の中に埋め込むことにより、排他処理区間検出部110を実現できる。また、排他的な処理区間の開始の場合、その埋め込む処理にクロック制御部102へクロック周波数を上げる命令を入れること、あるいは終了の場合、その埋め込む処理にクロック制御部102へクロック周波数を下げる命令を入れることにより、クロック制御判定部111を実現できる。
また、排他処理区間検出部110とクロック制御判定部111をソフトウェアによって実現する別の方式として、クロック制御を行うインターフェースを用意しておき、ソフトウェアの中で排他的な処理区間を開始あるいは終了する前後に、そのインターフェースを挿入する方式も取ることができる。つまり、ソフトウェア開発者が、排他的な処理区間の開始に応じてクロック周波数を上げたり、あるいは終了に応じてクロック周波数を下げる処理を挿入することで、排他処理区間検出部110とクロック制御判定部111とを実現することができる。
図3に、排他処理区間検出部110が排他的に処理を行う区間を検出して、クロック制御判定部111がクロック制御部102にクロックを制御する命令を出力する流れを示す。
最初に、排他処理区間検出部110は、排他的な処理区間の開始を検出したかどうかを判定する(S141)。排他的な処理区間の開始を検出しなかった場合(S141がNo)、元に戻ってS141の判定処理を繰り返す。一方、排他的な処理区間の開始を検出した場合(S141がYes)、排他処理区間検出部110が、排他的な処理区間の開始をクロック制御判定部111に通知する(S142)。
通知を受けて、クロック制御判定部111は、クロック制御部102に対してクロックの周波数を上げるように命令を通知する(S143)。これにより、情報処理装置は、高速処理モードに切り替わる。
その後、演算処理部103が、排他的な処理を実行し(S144)、排他処理区間検出部110が排他的な処理区間の終了を検出したかどうかを判定する(S145)。排他的な処理区間の終了を検出しなかった場合(S145がNo)、S144の処理に戻って排他的な処理を継続して実行する。一方、排他的な処理区間の終了を検出した場合(S145がYes)、排他処理区間検出部110が、排他的な処理区間の終了をクロック制御判定部111に通知する(S146)。
通知を受けて、クロック制御判定部111はクロック制御部102に対してクロックの周波数を下げるように命令を出す(S147)。これにより、情報処理装置は、低電力消費モードに切り替わる。
以上により、本発明の情報処理装置は、排他的な処理区間での処理を、高速処理モードで処理することが可能となる。
図4に、排他処理区間検出部110が排他的に処理を行う区間を検出して、クロック制御判定部111がクロック制御部102にクロックを制御する命令を出力する流れの別の方式を示す。
最初に、演算処理部103は、ある特定の処理を開始する(S161)。次に、排他処理区間検出部110は、処理を行っている現在の区間が、排他的に処理を行う区間であるかどうかを判定する(S162)。排他的な処理区間でない(通常の処理区間)の場合(S162がNo)、S163に遷移する。一方、排他的な処理区間の場合(S162がYes)、S168に遷移する。
排他処理区間検出部110は、処理中の処理から、排他的な処理区間の開始を検出したかどうかを判定する(S163)。排他的な処理区間の開始を検出した場合(S163がYes)、演算処理部103が、排他的な処理区間を開始する(S164)。そうでない場合(S163がNo)、演算処理部103は、処理中の処理内容にしたがって処理を行う(S167)。
S164で排他的な処理区間を開始した後に、排他処理区間検出部110が、排他的な処理区間の開始をクロック制御判定部111に通知する(S165)。この通知を受けて、クロック制御判定部111は、クロック制御部102に対してクロックの周波数を上げるように命令を通知する(S166)。これにより、情報処理装置は、高速処理モードに切り替わる。
クロック制御部102は、クロック制御判定部111からの命令を受けてクロック周波数を上げる。例えば、あらかじめ高速処理モードのクロック周波数を50MHzと決めていれば、クロック制御部102は50MHzまでクロック周波数を上げる。他にも、例えばクロック制御部102は分周比を1として、クロック生成部101で生成されるクロックを分周せずに演算処理部103や記憶部104に供給する方式がある。あるいは、演算処理部103や記憶部104の各装置の許容するクロック周波数の上限値が設定されていて、クロック制御部102は設定されている各装置の上限値を満たす範囲内で、最大のクロック周波数で出力するようにクロックを制御してもよい。
一方、排他処理区間検出部110は、排他的な処理区間の終了を検出したかどうかを判定し(S168)、その結果、排他的に処理を行う区間から出る処理である場合(S168がYes)、排他的に処理を行う区間を終了する(S169)。そうでない場合(S168がNo)、演算処理部103が、処理中の処理内容にしたがって処理を行う(S167)。
S169で排他的な処理区間を終了した後に、排他処理区間検出部110が、排他的な処理区間の終了をクロック制御判定部111に通知する(S170)。この通知を受けて、クロック制御判定部111は、クロック制御部102に対してクロックの周波数を下げるように命令を出す(S171)。これにより、情報処理装置は、低電力消費モードに切り替わる。
クロック制御部102は、クロック制御判定部111からの命令を受けて、クロック周波数を下げる。例えば、あらかじめ低電力消費モードのクロック周波数を5MHzと決めていれば、クロック制御部102は5MHzまでクロック周波数を下げる。あるいは、演算処理部103や記憶部104の各装置の許容するクロック周波数の下限値が設定されていて、クロック制御部102は設定されている各装置の下限値を満たす範囲内で、最小のクロック周波数で出力するようにクロックを制御してもよい。
クロック制御部102がクロック制御判定部111からの命令を受けて、クロック周波数を下げる別の方式として、低電力消費モード時のクロック周波数は、情報処理装置の負荷状態、または発熱によって上昇する温度状態、または電力を供給する電池の残りの容量などを考慮して決定してもよい。
さらに別の方式として、排他的に処理を行う区間に入ってS166でクロック周波数を上げる前に、それまで動作していたクロック周波数を記憶しておいて、排他的に処理を行う区間から出た時にその周波数に戻すことでもよい。
上述の通り、情報処理装置の許容する範囲内で最大のクロック周波数で動作させることによって、排他的な処理を行う区間の処理時間を短くしてリアルタイム性を高めることができる。排他的に処理を行わない通常の処理区間では、クロック周波数を情報処理装置の許容する範囲内で最小まで下げて、消費電力を抑えることができる。したがって、消費電力を最大限に抑えてリアルタイム性を高めることができる。
(実施の形態2)
さらに、本発明の実施の形態2における情報処理装置では、クロック周波数を下げるのに伴い、電源から供給する電圧を下げることで消費電力を抑えることを可能にする。情報処理装置に供給する電圧は、クロック周波数によって最低必要となる水準がハードウェアによって決まる。一般的にクロック周波数を下げると、最低必要となる電圧もそれに応じて低下するため、クロック周波数が高かった時の電圧から電圧を低下させることができる。また、消費電力は電圧の二乗に比例して変化するため、電圧の影響を大きく受ける。
クロック周波数を下げるのに伴い、電源から供給する電圧を下げることで消費電力を抑える情報処理装置を図5に示す。図5は、図1の情報処理装置に、AC電源210と、電池211と、電源制御部212が追加されている。クロック生成部201、クロック制御部202、演算処理部203、記憶部204、CPU205、DSP206、RAM207、ROM208、バス209、排他処理区間検出部213、クロック制御判定部214は実施の形態1と同様の機能を有する。
AC電源210及び電池211は、情報処理装置の電源供給部である。AC電源210から電圧を供給してもよく、電池211から電圧を供給してもよい。
電源制御部212は、AC電源210及び電池211の中から電源供給部を選択すると同時に、情報処理装置に供給する電圧を制御する。
実施の形態2は、実施の形態1と同様に図4に示すフローチャートの流れに従うが、図4のS166とS171にさらに新しいステップが追加されたものとなる。
実施の形態2において、図4のS171は図6に示す手順となる。図6を用いて、実施の形態2でクロック周波数を下げる命令を通知した場合の処理を説明する。クロック制御判定部214が、クロック周波数を下げる命令をクロック制御部202に通知する(S221)。この通知を受けて、クロック制御部202が、クロック周波数を下げた時に、クロック制御部202は、電源制御部212にクロック周波数を下げたことを通知する(S222)。電源制御部212は、クロック周波数が下がると、それに応じてCPU205やDSP206などの演算処理部203や、RAM207やROM208などの記憶部204に供給する電圧を下げる(S223)。
電圧は、クロック制御部202、演算処理部203、記憶部204などの情報処理装置内の構成要素が動作することができる範囲まで下げることができる。例えば、全ての構成要素が動作できることを保証するために、各構成要素が示す最低の電圧のうち、最大の値まで下げることができる。例えば、具体的に説明すると、構成要素Aが動作可能な最低電圧が5V、構成要素Bが動作可能な最低電圧が7V、構成要素Cが動作可能な最低電圧が15Vとした場合、この3つの構成要素が動作可能である最大の値である15Vまで、電圧を下げることが可能となる。
また、実施の形態2において、図4の手順S166は図7に示す手順となる。図7を用いて、実施の形態2でクロック周波数を上げる命令を通知した場合の処理を説明する。クロック制御判定部214が、クロック周波数を上げる命令をクロック制御部202に通知する(S221)。この通知を受けて、クロック制御部202が、クロック周波数を上げた時に、クロック制御部202は、電源制御部212にクロック周波数を上げたことを通知する(S232)。電源制御部212は、クロック周波数が上がると、それに応じてCPU205やDSP206などの演算処理部203や、RAM207やROM208などの記憶部204に供給する電圧を上げる(S233)。
電圧は、クロック制御部202、演算処理部203、記憶部204などの情報処理装置内の装置が動作することができる範囲まで上げることができる。例えば、全ての装置が動作できることを保証するために、各装置が示す最高の電圧のうち、最小の値まで上げることができる。
以上の通り、クロック周波数を下げることで消費電力を抑えるだけではなく、電源制御部212によって電圧を変化させることによって、さらに消費電力を抑えることが可能になる。
しかし図8に示す通り、電圧を上昇させるためには電圧を上昇させて安定化させるための時間を要する。電圧を251から252の水準に上昇させてクロック周波数を上げる場合は、電圧が上昇して安定化した時に、電源制御部212はクロック制御部202に通知して、クロック制御部202はクロック周波数を上げる。通常、電圧を上昇させて安定化する直前に、目標とする252の水準の電圧を上回る状態が続く。この場合、図8の252の電圧の水準を下回らないことが保証されていれば、252の電圧の水準に到達した時点253で電源制御部212がクロック制御部202にクロック周波数を上げるように通知してもよい。
電圧が上昇している間も動作する情報処理装置において、電圧の水準が252に達するまでの間にクロック周波数を変化させない場合、排他的に処理を行う区間の先頭ではリアルタイム性が損なわれてしまう。そこで、電圧を図8の251から252の水準に上昇させている間に、クロック制御部202は、段階的にクロック周波数を上げることができる。この場合、クロック制御部202は、電圧の値とその電圧のもとで供給可能なクロック周波数との対応情報を保持して、電圧制御部212から供給される電圧の値の変化に応じてクロック周波数を設定する。
また、電圧の上昇中に段階的にクロック周波数を上げる方式として、記憶部204が電圧の値とその電圧のもとで供給可能なクロック周波数との対応情報を保持する方式でもよい。この場合、演算処理部203が記憶部204からロードした対応情報をもとに、電源制御部212から供給される現在の電圧で供給可能なクロック周波数を得る。次に、演算処理部203はクロック制御部202にそのクロック周波数まで上げることを命令する。
電圧の値とクロック周波数の対応情報とは、例えば演算処理部203のCPU205やDSP206、あるいは記憶部204のRAM207やROM208などの各構成要素が特定のクロック周波数で動作するために最低必要とする電圧の水準の情報である。例えば、いくつかの段階に分けたクロック周波数に対して必要な電圧の水準を記述した対応表や、あるいは構成要素ごとにクロック周波数を入力として必要な電圧の水準を出力する関数が対応情報となる。
一つのクロック制御部202が、情報処理装置内の一つの構成要素にクロックを供給している場合、前記のクロック周波数と電圧の対応表や関数にしたがってクロック周波数を上げていけばよい。一つのクロック制御部202から同一のクロック周波数でクロックを複数の構成要素に供給している場合、構成要素の中で最も高い電圧を要求する構成要素に合わせてその電圧をしきい値として、そのしきい値を超えた時にクロック周波数を上げるようにすればよい。
クロック制御部202は、電源制御部212から常に電圧の水準を検知していて、電圧とクロック周波数の対応情報に照らし合わせて、その電圧の水準に応じたクロック周波数に制御する。そうすることで、排他的に処理を行う区間に入って電圧を上昇させている間も、その時の電圧に対応してクロック周波数を上昇させることが可能となり、リアルタイム性を強化することができる。
また、電圧を低下させるためには電圧を低下させて安定化させるための時間を要する。電圧を252から251の水準に低下させてクロック周波数を下げる場合は、電圧を低下させる前の時点254で、電源制御部212がクロック制御部202にクロック周波数を下げるように通知する。通常、電圧を低下させて安定化する直前に、目標とする251の水準の電圧を下回る状態が続く。251の水準に到達するまでの最小の電圧が保証されている場合、クロック制御部202は、電圧が不安定な状態の時も含めて、最小の電圧でも供給可能なクロック周波数に制御する。電圧が安定化した後に電源制御部212がクロック制御部202に通知して、その電圧に対応したクロック周波数に制御し直してもよい。
さらに図8の256に示すように、電圧が上昇し終えるまでに排他的に処理を行う区間が終了して電圧をすぐに再度下げなければいけない場合、電源制御部212が電圧を変更する処理やクロック制御部202が電圧の変更に伴ってクロック周波数を変更する処理が無駄になる。そこで、すぐに排他的な処理が終了する場合に、クロック制御判定部214はクロックを上げる命令をクロック制御部202に通知しない方法が取れる。ただし、排他的に処理を行う区間でリアルタイム性を保つために、すぐに排他的な処理が終了する場合でも、クロック制御判定部214がクロックを上げる命令をクロック制御部202に通知してもよい。
すぐに排他的な処理が終了するかどうかをクロック制御判定部214が判定するために、例えば図9に示すように、該当する排他的な処理区間の実行時間の情報を記憶部204に保存している。クロック制御判定部214は、記憶部204からこの情報を取得して利用する。ある排他的な処理を開始する地点があると、その地点に対応する地点として必ずその排他的な処理区間を終了する地点が存在する。その開始地点から終了地点までの区間が、排他的に処理を行う区間である。
図9の左欄301には、排他的に処理を行う区間を複数挙げている。排他的な処理区間である割り込み禁止区間やプリエンプト禁止区間は、演算処理部203が行う処理中の複数個所で設定されている。したがって、それぞれの排他的な処理区間の実行時間の情報を保持するために、処理区間がどの個所の排他的な処理区間であるのか特定する必要がある。
排他的な処理区間を特定する方式の一つとして、ソフトウェアによる方式がある。これは、プログラムの中に、どの排他的な処理区間の開始及び終了であるのかを通知する仕組みを入れ込む方式である。例えば、排他処理区間検出部213によって検出する排他的な処理区間をあらかじめ抽出して、それぞれの処理区間を特定する数値などの識別記号との一覧を用意しておく。ソフトウェアが、排他的な処理区間を実行する時に、その一覧の中で対応する識別記号を記憶部204に、例えば「区間開始#1」などと通知する。それにより、どの排他的な処理区間であるのかを明示的に示すことができる。
より詳細には、例えば予めプログラムを作成する時に、各処理区間を一意に区別する識別名を付して作成し、プログラム実行中に排他的な処理区間を開始(又は終了)する直前(又は直後)にその区間の識別名を通知するコードを、プログラムの中に入れ込んでおくという方法を採ることができる。このとき、記憶部204には、図9の左欄301の内容、すなわち全ての(あるいは一部の)指定された排他的な処理区間の識別名を記憶させておく。一部の指定された排他的な処理区間の識別名のみを記憶させるのは、後述するように、排他的な処理区間のうち、一部のものについてのみ、クロック制御の対象とするためである。
別の例として、既に作成されたプログラムに対して、前処理としてあらかじめ静的にプログラムを解析した上で、排他的な処理区間の開始及び終了を抽出し、抽出したものに排他的な処理区間の識別名を付して、図9の左欄301の内容として記憶部204に記憶させておくという方法をも採ることができる。この場合、プログラム実行時に排他的な処理区間の開始及び終了を通知するためのコードを、この前処理の過程で、プログラムの中に挿入しておく。
ここで前処理とは、プログラムの実行前に行う処理を意味する。前処理は、例えば情報処理装置に電源が投入された後に演算処理部203が動作を開始した直後に、特定のプログラムを実行することにより行うことができる。或いは、CPU205とは別のCPUを演算処理部203に組み込んでおき、この別のCPUが特定のプログラムを実行することにより前処理を行っても良い。前処理は、既に作成されたプログラムが記憶部204へ搭載される前に、人手で又はツールを用いて当該プログラムを解析することにより実行することもできる。また、「静的」とは、プログラム実行中という意味の「動的」に対立する概念である。従って、「静的に解析する」とは、プログラムが実行されている中で、それと同時に解析するのではなく、実行されていないときのプログラム、いわば休止中のプログラム或いは使用前のプログラムを解析することを意味する。
なお、プログラムの解析は静的に行っても、記憶部204へ図9の左欄301の内容を記憶させる処理は、動的に行うことも可能である。それには例えば、プログラムが実行される中で排他的な処理区間が実行されるときに、当該区間の識別名を記憶部204へ記憶させるためのコードを、静的にプログラムの解析を行う過程で、プログラムの中に挿入しておくとよい。
また、排他的な処理区間を特定する別の方式として、排他的な処理を行う際の演算処理部203の内部情報に基づいて一意に特定する方式でもよい。演算処理部203の内部情報とは、内部で処理を行うために使用されるレジスタの値などである。演算処理部203は、排他的な処理区間を実行する時に、その処理区間を特定できる演算処理部203の内部情報を記憶部204に通知する。
より詳細には、この方式は、プログラムによって排他的な処理区間を通知するのではなく、ハードウェアやCPU205の状態に基づいて、排他的な処理区間を識別するものである。CPU205の内部情報として、例えば複数のレジスタの内容を利用することができる。特定のレジスタの値を取得することにより、何れの排他的な処理区間であるかを特定することが可能である。例えば、レジスタのうちのプログラムカウンタの値はプログラムの実行番地を指すので、これを排他的な処理区間の識別に用いることができる。この場合には、予めプログラムカウンタの値を通知するコードをプログラムの中に入れ込んでおくと良い。
別の例として、レジスタのうちのスタックポインタの値を元に、スタックされている情報、すなわち記憶部204のメモリ領域のうち、スタックに割り当てられている領域に記憶されている情報を探し当てることができる。この情報から、関数の呼出し関係を把握することができる。把握された関数の呼出し関係から、排他的な処理区間を動的に検出することが可能となる。ここで、「関数」とは、C言語でいう関数を一例とするもので、サブルーチン或いはこれに類似するもの、すなわち、主たる処理単位で引用可能な処理単位を意味する。
以上に述べた様々な方式により、図9に示す排他的な処理区間の実行時間の情報を記憶部204が管理することができる。なお、図9の左欄301だけでなく、後述する図12の左欄401に対しても、同様の方法を取ることが可能である。
図9の302、303、304の情報は、301に示すそれぞれの排他的な処理区間をこれまでに実行して得られた時間情報を記憶したものである。詳しく述べると、302には前回実行した時に要した時間を示している。また303には、それぞれの排他的な処理区間を実行した時に要した時間の合計と、実行した全回数を示している。304には、303より得られた実行時間の合計と実行回数を基に計算して、それぞれの排他的な処理区間の平均の実行時間を示している。
排他的に処理を行うある区間が開始された時に、その処理区間の実行時間の情報に基づいて処理する流れを図10のフローチャートで示す。まず排他的に処理を行う区間が開始されると(S351)、演算処理部203は、この排他的な処理区間の実効時間を把握するために、時間の計測を開始する(S352)。次に、排他処理区間検出部213は、現在実行している排他的な処理区間の実行時間が十分に長いかどうかを判定する(S353)。この判定を行うために実行時間のしきい値を設定して、現在実行している排他的な処理区間の予測実行時間と比較して判定すればよい。
しきい値は、電圧が上昇するのに要する時間を考慮して設定する。また、予測実行時間は、図9に示す排他的な処理区間の実行時間の情報に基づいて予測する。304に示す排他的な処理の平均の実行時間を用いてもよく、302に示す前回の実行時間を用いてもよい。例えば、しきい値が10マイクロ秒(10μsec)であり、予測実行時間に304の平均の実行時間を用いる場合、図9に示すように排他的な処理として識別番号1の割り込み禁止の区間が開始されると、しきい値より予測実行時間である平均の実行時間98.99μsecの方が長いので、この区間の実行時間は十分長いと判定する。逆に、識別番号2の割り込み禁止区間が開始されると、しきい値より平均の実行時間0.72μsecが短いので、この区間の実行時間が十分長いと判定しない。
排他処理区間検出部213が、実行中の排他的な処理区間が十分長いと判定すると(S353がYes)、演算処理部203は、クロック周波数を上げるようにクロック制御部202に命令し(S354)、後続の処理を継続して行う(S355)。一方、実行中の処理区間が十分長いと判定しなければ(S353がNo)、クロック周波数を上げずに後続の処理を継続して行う(S355)。
排他処理区間検出部213が、実行中の排他的な処理区間を終了する地点を検出すると(S356)、演算処理部203は、S353の処理において、以前の実行時間が十分長いと判定して、この処理区間でクロック周波数を上げたかどうかを判定する(S357)。クロック周波数を上げていない場合(S357がNo)、この処理区間の実行時間が、クロック周波数が上がっていない分大きくなる。そのため、本来上げるはずであったクロック周波数との比を取って、クロック周波数を上げて実行した場合の実行時間に補正する(S358)。例えば、40MHzのクロック周波数に上げることを設定していたが、4MHzの低いクロック周波数のままこの処理区間を実行した場合、クロック周波数の比は10となり、実行時間は1/10(10分の1)倍に補正する。その後、演算処理部203は、この処理区間の時間の計測を終了して実行に要した時間の情報を保存する(S359)。例えば、図9に示すように302の前回の実行時間や303や304の平均の実行時間の情報を更新すればよい。
なお、しきい値と対比すべき予測実行時間として、クロック周波数を低く保ったままで実行したと仮定したときの予測実行時間を選ぶのが望ましいが、他のクロック周波数に対応する予測実行時間を採用しても支障ない。また、しきい値として、電圧制御部212が電圧を上昇させるのに要する時間、すなわち電圧上昇時間そのものを設定することができる。更に、しきい値として電圧上昇時間にあるマージンを付加した時間を設定しても良い。更に、しきい値として、電圧上昇時間と、電圧制御部212が電圧を下降させるのに要する時間、すなわち電圧下降時間との和を設定することができる。更に、しきい値として、前記の和にあるマージンを付加した時間を設定しても良い。
更には、しきい値と対比すべき予測実行時間として、クロック周波数を低く保ったままで実行したと仮定したときの予測実行時間を選んだ場合には、しきい値として、前記の和にクロック周波数を高くしたときの予測実行時間を加算した加算期間を設定しても良い。更には、しきい値として、この加算期間にあるマージンを付加した時間を設定しても良い。それぞれに応じた確度をもって、リアルタイム性を確保する上で逆効果となる場合又は効果が薄い場合に、クロック周波数の上昇を回避することができる。なお、マージンを付加するには、例えば、正の定数を加算する、或いは1を超える定数を乗算するとよい。
電圧上昇時間及び電圧下降時間をしきい値に反映させるのは、電圧制御部212が指示を受けてから、電圧の変更を達成するまで時間を要する場合があることを考慮したものである。上に述べた図10の手順は、電圧を変更するのに要する期間では、プログラムの実行は停止していることを前提としている。すなわち、図8においてクロック周波数を高めたときの予測実行時間は、電圧が高い値252で一定となっている期間に相当する。
また、しきい値に反映させるべき電圧上昇時間の代わりに、クロック制御部202がクロック周波数を上昇させるのに要する時間である周波数上昇時間を用いることができる。同様に、しきい値に反映させるべき電圧下降時間の代わりに、クロック制御部202がクロック周波数を下降させるのに要する時間である周波数下降時間を用いることができる。周波数上昇時間及び周波数下降時間をしきい値に反映させるのは、クロック制御部202が指示を受けてから、クロック周波数の変更を達成するまでに時間を要する場合があることを考慮したものである。上に述べた図10の手順は、クロック周波数を変更するのに要する期間では、プログラムの実行は停止していることを前提としている。
図11は、クロック周波数の変更に時間を要する場合のクロック周波数の変化の様子を示すグラフである。図11において、クロック周波数は低い値501から高い値502へ上昇するのに、ある時間を要している。同様に、クロック周波数は高い値502から低い値501へ下降するのに、ある時間を要している。図11においてクロック周波数を高めたときの予測実行時間は、クロック周波数が高い値502で一定となっている期間、すなわち時刻503〜時刻504の期間に相当する。
図10を用いて排他的に処理を行う区間の処理の流れを示したが、電圧とそれに応じたクロック周波数の組み合わせを複数取り得る場合、S353とS354の手順で排他的な処理区間を最短にするような電圧とクロック周波数を選択することができる。
S353とS354において最適な電圧とクロック周波数を選択する方法を述べる。まず、図8に示す251の水準から252の水準に電圧が上昇して安定するまでの時間は、現在の電圧の水準と変更後の電圧の水準の2値、及び電圧の上昇速度、すなわち電圧対時間の曲線の傾きによって定まる。また、排他的な処理区間の予測実行時間は、あるクロック周波数に基づいた予測実行時間と変更後のクロック周波数の2値によって定まる。変更後のクロック周波数は、変更後の電圧の水準に応じた最大のクロック周波数であるので、変更後の電圧の水準によって定まる。したがって結果的に、電圧の上昇時間よりも排他的な処理区間の予測実行時間が長いという条件下で、排他的な処理区間の予測実行時間を最短にするような電圧の水準を選択すればよい。その電圧の水準に応じた最大のクロック周波数が最適なクロック周波数である。
より詳細に説明すると、上記の処理手順は、電圧の上昇中及び下降中にはプログラムを実行することができないことを前提としている。すなわち上記の処理手順は、図8又は図11において電圧が平坦である期間に限りプログラムが実行されることを前提としている。上記の処理手順は、この前提の上で、電圧とクロック周波数とを単純に、「高速処理モード」と「低電力消費モード」とに対応した2つの値の間で変えるのではなく、電圧の上昇速度及び下降速度、言い換えれば電圧の上昇時間及び下降時間と、上昇させたクロック周波数で排他的な処理区間の処理を行うのに要する時間との間の関係を考慮して、最適な電圧と対応するクロック周波数とに上昇させるものである。
以下に具体例を挙げる。通常の動作モードである「低電力消費モード」では、20MHzの速度で演算処理部203が動作している時に、ある排他的な処理区間の処理時間が60秒であると予測されたものとする。この場合に、クロック周波数を60MHzに上昇させると、単純な計算によれば、排他的な処理区間の処理時間は20秒となることが期待される。しかしながら、クロック周波数を10MHz分上昇させるために、電圧を上昇させる時間として5秒を要すると仮定すると、クロック周波数を20MHzから60MHzまで上昇させ、更にその後下降させるのに合計40秒の時間を必要とする。すなわち、排他的な処理区間の処理時間である20秒を含めると、電圧が元の低い値に戻るまでに、20+40=60秒の時間が必要となる。
これに対して、クロック周波数を60MHzではなく、40MHzにまで上昇させる場合には、20MHzから40MHzまで上昇させ、更にその後下降させるのには、合計20秒の時間で足りる。クロック周波数が40MHzであれば、クロック周波数が20MHzである場合に比べて処理速度は2倍になるので、排他的な処理区間の処理時間は30秒となる。すなわち、排他的な処理区間の処理時間である30秒を含めて、30+20=50秒の時間で電圧が元の低い値に戻る。
このように、予め定められた範囲で、上昇させるべき最適なクロック周波数を選択することができる。すなわち、電圧が元の低い値に戻るまでの時間、或いはこれにあるマージンを加えた時間よりも、クロック周波数を低いままに保ったままで排他的な処理区間の処理を行った場合に予測される時間が長くなるクロック周波数である有効周波数が予め定められた範囲にあれば、クロック周波数を有効周波数まで上昇させ、有効周波数が予め定められた範囲にない場合には、クロック周波数を上昇させなければよい。予め定められた範囲は、クロック周波数の範囲を段階的に定めるものであってもよく、連続した範囲であってもよい。一つのクロック周波数について、排他的な処理区間の処理時間についての予測値が得られれば、他の任意のクロック周波数について、排他的な処理区間の処理時間、及び電圧の上昇及び下降に要する時間は、単純な計算で得ることができる。
このように、排他的な処理区間を最短にするような電圧とクロック周波数を選択した場合、S357とS358の手順の中で、選択したクロック周波数に応じて計測した実行時間を補正する必要がある。S359で保存される時間情報は、ある特定のクロック周波数に基づいて計測された時間情報である。例えば、排他的な処理区間の実行時間を情報処理装置が許容する最大のクロック周波数に基づいて計測されている場合、実際に実行した時のクロック周波数との比を取って補正を行う。基準となる最大のクロック周波数が40MHzであり、排他的な処理区間において選択したクロック周波数が固定で20MHzあるいは平均的に20MHzであれば、計測した実行時間を20/40=0.5倍に補正して、S359で時間情報として保存する。すなわち、20MHzのクロック周波数の下で実行時間が10秒であったならば、0.5倍に補正した5秒が時間情報として保存される。なお、排他的な処理区間の実行時間を記録するための基準となるクロック周波数は、任意の値に定めることができる。
一方、図8の257に示すように、電圧が低下し終えるまでに再度排他的に処理を行う区間が開始して電圧をすぐに再度上げなければいけない場合、排他的に処理を行う区間で即座に電圧が目標の水準252まで到達しないので、クロック周波数をすぐに上げることができずにリアルタイム性を損なう。また、電源制御部212が電圧を変更する処理や、電圧の変更に伴ってクロック制御部202がクロック周波数を変更する処理が無駄になる。そこで、排他的に処理を行う区間が終了してすぐに再度排他的に処理を行う区間が開始する場合に、クロック制御判定部214は、クロックを下げる命令をクロック制御部202に通知せず、電圧を252の水準に保ちクロック周波数を高いまま維持する方法が取れる。
すぐに再度排他的な処理が開始するかどうかをクロック制御判定部214が判定するために、例えば図12に示すように、排他的な処理の終了から次の排他的な処理の開始までの処理区間の実行時間の情報を記憶部204に保存している。クロック制御判定部214は、記憶部204からこの情報を取得して利用する。図9に示す情報と大きく異なる点は、ある排他的な処理を終了する地点とその次に実行される排他的な処理を開始する地点とは1対1に対応しない点である。ある排他的な処理を終了すると、割り込みなどの処理によって様々に実行経路が変化することが考えられ、次の排他的な処理の開始地点との組み合わせを全て考える必要がある。図12の401には、それぞれの割り込み禁止区間やプリエンプト禁止区間の終了地点に対して、可能性として考えられる次の排他的な処理を開始する地点との組み合わせが記される。
排他的な処理区間の開始と終了は、演算処理部203が行う処理中の複数個所で設定されている。したがって、それぞれの組み合わせに応じて実行時間の情報を保持するために、どの個所の排他的な処理区間の開始及び終了であるのか特定する必要がある。それらを特定する方式は、前述した排他的な処理区間を特定する方式と同様の方式により実現することができる。
例えば、排他処理区間検出部213によって検出する排他的な処理区間の開始と終了をあらかじめ抽出して、それぞれの地点を特定する数値などの識別記号との一覧を用意しておく。ソフトウェアの中で排他的な処理区間を開始あるいは終了する時に、その一覧の中で対応する識別記号を記憶部204に通知する。それにより、どの排他的な処理区間の開始あるいは終了であるのかを明示的に示すことができる。
また、排他的な処理区間の開始と終了を特定する別の方式として、排他的な処理を行う際の演算処理部203の内部情報に基づいて一意に特定する方式でもよい。演算処理部203の内部情報とは、内部で処理を行うために使用されるレジスタの値などである。演算処理部203は、排他的な処理区間を開始及び終了する時に、その地点を特定できる演算処理部203の内部情報を記憶部204に通知する。
これらの方式により、図12に示す排他的な処理区間の実行時間の情報を記憶部204が管理することができる。
図12の402、403、404の情報は、401に示すそれぞれの終了地点から開始地点までの処理区間をこれまでに実行して得られた時間情報を記憶したものであり、402には前回実行した時に要した時間を示している。また403には、それぞれの終了地点から開始地点までの処理区間を実行した時に要した時間の合計と、実行した全回数を示している。404には、403より得られた実行時間の合計と実行回数を基に計算して、それぞれの終了地点から開始地点までの処理区間の平均の実行時間を示している。
排他的に処理を行うある区間が終了された時に、次に排他的な処理区間が開始されるまでの実行時間の情報に基づいて処理する流れを図13のフローチャートで示す。まず、排他的に処理を行う区間が終了されると(S451)、演算処理部203は、排他的な処理区間が開始されるまでの実行時間を把握するために時間の計測を開始する(S452)。次に、演算処理手段203は、現在実行している処理区間の実行時間が十分に長いかどうかを判定する(S453)。この判定を行うために、実行時間が十分に長いかどうかを判定するための実行時間のしきい値を設定して、現在実行している排他的な処理区間の予測実行時間と比較して判定すればよい。
しきい値は、電圧が下降するのに要する時間を考慮して設定する。また、予測実行時間は図12に示す排他的な処理の終了地点から開始地点までの区間の実行時間の情報に基づいて予測する。404に示す平均の実行時間を用いてもよく、402に示す前回の実行時間を用いてもよい。例えば、しきい値が10μsecであり、予測実行時間に404の平均の実行時間のうち最短のものを用いる場合、図12に示すように識別番号1の割り込み禁止の区間が終了されると、予測実行時間は次に識別番号2の割り込み禁止が開始される場合が最短であり、しきい値より予測実行時間である平均の実行時間の446.04μsecの方が長いので、この区間の実行時間は十分長いと判定する。逆に、識別番号1のプリエンプト禁止区間が終了されると、予測実行時間は次に識別番号1の割り込み禁止区間が開始される場合であり、しきい値より平均の実行時間4.86μsecが短いので、この区間の実行時間が十分長いと判定しない。
実行中の処理区間が十分長いと判定すると(S453がYes)、演算処理部203は、クロック周波数を下げるようにクロック制御部202に命令し(S454)、後続の処理を継続して行う(S455)。一方、実行中の処理区間が十分長いと判定しなければ(S453がNo)、クロック周波数を下げずに後続の処理を継続して行う(S455)。
排他処理区間検出部213が、実行中の排他的な処理区間を開始する地点を検出すると(S456)、S453の処理において、以前の実行時間が十分長いと判定して、この処理区間でクロック周波数を下げたかどうかを判定する(S457)。クロック周波数を下げていない場合(S457がNo)、この処理区間の実行時間が、クロック周波数が下がっていない分大きくなる。そのため、本来下げるはずであったクロック周波数との比を取って、クロック周波数を上げて実行した場合の実行時間に補正する(S459)。例えば、4MHzのクロック周波数に下げることを設定していたが、40MHzの高いクロック周波数のままこの処理区間を実行した場合、クロック周波数の比は1/10(10分の1)となり、実行時間は10倍に補正する。その後、この処理区間の時間の計測を終了して実行に要した時間の情報を保存する(S459)。例えば、図12に示すように402の前回の実行時間や403や404の平均の実行時間の情報を更新すればよい。
なお、しきい値と対比すべき予測実行時間として、クロック周波数を下げて実行したと仮定したときの予測実行時間を選ぶのが望ましい。また、しきい値として、電圧制御部212が電圧を下降させるのに要する時間、すなわち電圧下降時間そのものを設定することができる。或いは、しきい値として電圧下降時間にあるマージンを付加した時間を設定しても良い。また、しきい値として、電圧下降時間と、電圧制御部212が電圧を上昇させるのに要する時間、すなわち電圧上昇時間との和を設定することができる。更に、しきい値として、前記の和にあるマージンを付加した時間を設定しても良い。それぞれに応じた確度をもって、消費電力を節減する効果が薄い場合にまで、クロック周波数を下降させることを回避することができる。
また、しきい値に反映させるべき電圧上昇時間の代わりに、クロック制御部202がクロック周波数を上昇させるのに要する時間である周波数上昇時間を用いることができる。同様に、しきい値に反映させるべき電圧下降時間の代わりに、クロック制御部202がクロック周波数を下降させるのに要する時間である周波数下降時間を用いることができる。
図14は、クロック周波数の変更に時間を要する場合のクロック周波数の変化の様子を示すグラフである。図14において、クロック周波数は高い値511から低い値512へ下降するのに、ある時間を要している。同様に、クロック周波数は低い値512から高い値511へ上昇するのに、ある時間を要している。電圧の変更に時間を要する場合の電圧の変化の様子は、図14と同様に描かれる。
電圧上昇時間及び電圧下降時間をしきい値に反映させるのは、電圧制御部212が指示を受けてから、電圧の変更を達成するまで時間を要する場合があることを考慮したものである。また、周波数上昇時間及び周波数下降時間をしきい値に反映させるのは、クロック制御部202が指示を受けてから、クロック周波数の変更を達成するまでに時間を要する場合があることを考慮したものである。上に述べた図13の手順は、電圧を変更するのに要する時間或いはクロック周波数を変更するのに要する時間では、プログラムの実行は停止していることを前提としている。図14においてクロック周波数を低くしたときの予測実行時間は、クロック周波数が低い値512で一定となっている期間、すなわち時刻513〜時刻514の期間に相当する。
図13を用いて、排他的に処理を行う区間が終了された時に、次に排他的な処理区間が開始されるまでの処理の流れを示したが、電圧とそれに応じたクロック周波数の組み合わせを複数取り得る場合、S453とS454の手順で排他的な処理の終了から次の開始までの区間を最長にするような電圧とクロック周波数を選択することができる。
S453とS454において最適な電圧とクロック周波数を選択する方法を述べる。まず、図8に示す252の水準から251の水準に電圧が下降して安定するまでの時間は、現在の電圧の水準と変更後の電圧の水準の2値、及び電圧の下降速度、すなわち電圧対時間の曲線の傾きによって定まる。また、排他的な処理の終了から次の開始までの区間の予測実行時間は、あるクロック周波数に基づいた予測実行時間と変更後のクロック周波数の2値によって定まる。変更後のクロック周波数は、変更後の電圧の水準に応じた最大のクロック周波数であるので、変更後の電圧の水準によって定まる。したがって結果的に、電圧の下降時間よりも排他的な処理の終了から次の開始までの区間の予測実行時間が長いという条件下で、予測実行時間を最長にするような電圧の水準を選択すればよい。その電圧の水準に応じた最大のクロック周波数が最適なクロック周波数である。
より詳細に説明すると、上記の処理手順は、電圧の上昇中及び下降中にはプログラムを実行することができないことを前提としている。すなわち上記の処理手順は、図14において電圧が平坦である期間に限りプログラムが実行されることを前提としている。上記の処理手順は、この前提の上で、電圧とクロック周波数とを単純に、「高速処理モード」と「低電力消費モード」とに対応した2つの値の間で変えるのではなく、電圧の下降速度及び上昇速度、言い換えれば電圧の下降時間及び上昇時間と、下降させたクロック周波数で排他的でない処理区間の処理を行うのに要する時間との間の関係を考慮して、最適な電圧と対応するクロック周波数とに下降させるものである。
以下に具体例を挙げる。演算処理部203が60MHzの速度で実行していた「高速処理モード」が終了したときに、次の排他的な処理区間の開始までの処理時間、すなわち非排他的な処理区間の処理時間が10秒であると予測されたものとする。この場合に、クロック周波数を20MHzに下降させると、単純な計算によれば、非排他的な処理区間の処理時間は30秒となると予測される。しかしながら、クロック周波数を10MHz分下降させるために、電圧を下降させる時間として5秒を要すると仮定すると、クロック周波数を60MHzから20MHzまで下降させ、更にその後上昇させるのに合計40秒の時間を必要とする。すなわち、周波数を低くして非排他的な処理区間の処理を行ったときの処理時間である30秒は、クロック周波数の下降及び上昇に要する時間である40秒に比べて短い。この場合には、クロック周波数を下げることによる消費電力の節減効果は希薄であり、クロック周波数を下げなければよい。
これに対して、クロック周波数を20MHzではなく、40MHzにまで下降させる場合には、60MHzから50MHzまで下降させ、更にその後上昇させるのには、合計10秒の時間で足りる。クロック周波数が50MHzであれば、非排他的な処理区間の処理時間は12秒となる。すなわち、周波数を50MHzまで低くして非排他的な処理区間の処理を行ったときの処理時間である12秒は、クロック周波数の下降及び上昇に要する時間である10秒に比べて短い。この場合には、クロック周波数を下げることによる消費電力の節減効果は高いと言え、クロック周波数を例えば50MHzまで下げると良い。
このように、予め定められた範囲で、下降させるべき最適なクロック周波数を選択することができる。すなわち、電圧が元の高い値に戻るまでの時間、或いはこれにあるマージンを加えた時間よりも、クロック周波数を低くして非排他的な処理区間の処理を行った場合に予測される時間が長くなるクロック周波数である有効周波数が、予め定められた範囲にあれば、クロック周波数を有効周波数まで下げ、有効周波数が予め定められた範囲になければクロック周波数を下降させなければよい。予め定められた範囲は、クロック周波数の範囲を段階的に定めるものであってもよく、連続した範囲であってもよい。一つのクロック周波数について、非排他的な処理区間の処理時間についての予測値が得られれば、他の任意のクロック周波数について、非排他的な処理区間の処理時間、及び電圧の上昇及び下降に要する時間は、単純な計算で得ることができる。
このように、排他的な処理の終了から次の開始までの区間を最長にするような電圧とクロック周波数を選択した場合、S457とS458の手順の中で、選択したクロック周波数に応じて計測した実行時間を補正する必要がある。S459で保存される時間情報は、ある特定のクロック周波数に基づいて計測された時間情報である。例えば、排他的な処理の終了から次の開始までの実行時間を、情報処理装置が許容する最小のクロック周波数に基づいて計測されている場合、実際に実行した時のクロック周波数との比を取って補正を行う。基準となる最小のクロック周波数が4MHzであり、排他的な処理区間において選択したクロック周波数が固定で20MHzあるいは平均的に20MHzであれば、計測した実行時間を20/4=5倍に補正して、S459で時間情報として保存する。すなわち、20MHzのクロック周波数の下で実行時間が10秒であったならば、5倍に補正した50秒が時間情報として保存される。なお、排他的な処理区間の実行時間を記録するための基準となるクロック周波数は、任意の値に定めることができる。
(その他の実施形態)
以上の実施の形態では、排他的な処理区間とそれ以外の処理区間との間でクロック周波数を変える例を示した。しかしながら、排他的な処理区間に限らず、一般に特定の処理区間について、上記の排他的な処理区間と同様の処理を行うように情報処理装置を構成しても良い。作成するプログラム或いは既に作成されたプログラムの中に、排他的な処理区間と同様に何らかの特定の処理を行う区間を特定し、識別名を通知するコードを埋め込むことは可能である。それにより、排他的処理区間検出部110又は213と同様の動作をする特定処理区間検出部によって、プログラムの実行中に特定の処理区間の開始及び終了を検出することができる。
また、排他的処理区間検出部110又は213が、プログラム中の多数の排他的な処理区間のうち、予め定められた特定の排他的な処理区間のみを検出するように情報処理装置を構成してもよい。例えば、プリエンプト禁止区間が実行されていても、その区間を含む処理の条件の如何によっては、通常において他のプロセスが存在しない場合があり、プリエンプト禁止の必要がない場合があるからである。作成するプログラム或いは既に作成されたプログラムの中に、様々な排他的な処理区間のうちの単数又は複数の特定の区間のみを特定し、識別名を通知するコードを埋め込むことは可能である。それにより、排他的処理区間検出部110又は213は、プログラムの実行中に、排他的な処理区間のうちの特定のものについてのみ、開始及び終了を検出することが可能となる。また、ハードウェアの状態に基づく方法においても、例えば、スタックのトレースに基づいて関数の呼出関係が特定のものを登録し(又は外し)たり、あるレジスタが特定状態であればそのときの処理を登録し(又は外し)たりすることが可能である。