(57)【要約】【課題】リアルタイム性を損なうことなく、プロセッサを安全に動作させる。【解決手段】ＣＰＵ速度制御モジュール２６は、温度センサ１４によって検出されるＣＰＵ１１の温度がある閾値を超えた時、ＣＰＵ１１の平均動作速度を低下させるためにＣＰＵ速度制御処理を実行する。ＣＰＵ速度制御処理においては、ＣＰＵ１１の動作を停止する命令を含むプロセッサ停止タスク（CPU Stop Task）が定期的に実行されるように、CPU Stop Taskの実行期間をリアルタイムタスクの実行期間以外の他の期間に割り当てる処理が実行される。これにより、リアルタイムの動作に影響を与えることなくＣＰＵ１１の平均動作速度を低下させることができるので、リアルタイム性を損なうことなく、プロセッサを安全に動作させることが可能となる。【選択図】      図１
2005165470.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
リアルタイム処理を実行するためのリアルタイムタスクを含む複数のタスクの実行順序を制御するためのスケジュール情報に従って、前記リアルタイムタスクが優先して実行されるように前記複数のタスクを前記プロセッサに割り当てるためのスケジューリング処理を実行する手段と、
前記プロセッサの温度を検出する温度検出器と、
前記温度検出器によって検出される前記プロセッサの温度が所定の閾値を越えた場合、前記プロセッサの動作を停止する命令を含むプロセッサ停止タスクが定期的に実行されるように、前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行する手段とを具備することを特徴とする電子機器。
【請求項２】
前記スケジュール情報は、前記複数のタスクそれぞれに割り当てられた優先度レベルを示す情報を含み、
前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行する手段は、前記リアルタイムタスクに割り当てられた優先度レベルに次いで高い優先度レベルが前記プロセッサ停止タスクに割り当てられるように前記プロセッサ停止タスクの優先度レベルを変更する手段を含むことを特徴とする請求項１記載の電子機器。
【請求項３】
前記スケジュール情報は、前記複数のタスクそれぞれに割り当てられた優先度レベルを示す情報を含み、
前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行する手段は、前記温度検出器によって検出される前記プロセッサの温度が所定の閾値を越えた場合、前記プロセッサ停止タスクの優先度レベルが最下位の優先度レベルから、前記リアルタイムタスクに割り当てられた優先度レベルに次いで高い優先度レベルに変更されるように前記プロセッサ停止タスクの優先度レベルを変更する手段を含むことを特徴とする請求項１記載の電子機器。
【請求項４】
前記スケジュール情報は、前記リアルタイムタスクの実行期間を予約するプロセッサ時間割り当て情報を含み、
前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行する手段は、前記リアルタイムタスクの実行期間以外の他の期間に前記プロセッサ停止タスクの実行期間を予約する手段を含むことを特徴とする請求項１記載の電子機器。
【請求項５】
前記スケジューリング処理を実行する手段は、前記リアルタイムタスクが各サイクルタイム内の第１の期間に実行され、且つ前記リアルタイムタスク以外の他のタスクが前記各サイクルタイム内の第２の期間に実行されるように、前記スケジュール情報に従って前記スケジューリング処理を実行する手段を含み、
前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行する手段は、前記温度検出器によって検出される前記プロセッサの温度が所定の閾値を越えた場合、前記プロセッサ停止タスクが前記リアルタイムタスク以外の他のタスクよりも優先して前記各サイクルタイム内の前記第２の期間内に実行されるように前記プロセッサ停止タスクの実行期間を前記各サイクルタイム内の前記第２の期間に予約する手段を含むことを特徴とする請求項１記載の電子機器。
【請求項６】
プロセッサの動作速度を制御するプロセッサ速度制御方法であって、
リアルタイム処理を実行するためのリアルタイムタスクを含む複数のタスクの実行順序を制御するためのスケジュール情報に従って、前記リアルタイムタスクが優先して実行されるように前記複数のタスクを前記プロセッサに割り当てるためのスケジューリング処理を実行するステップと、
前記プロセッサの温度が所定の閾値を越えたか否かを判別するステップと、
前記プロセッサの温度が所定の閾値を越えた場合、前記プロセッサの動作を停止する命令を含むプロセッサ停止タスクが前記プロセッサによって定期的に実行されるように、前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行するステップとを含むことを特徴とするプロセッサ速度制御方法。
【請求項７】
前記スケジュール情報は、前記複数のタスクそれぞれに割り当てられた優先度レベルを示す情報を含み、
前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行するステップは、前記リアルタイムタスクに割り当てられた優先度レベルに次いで高い優先度レベルが前記プロセッサ停止タスクに割り当てられるように前記プロセッサ停止タスクの優先度レベルを変更するステップを含むことを特徴とする請求項６記載のプロセッサ速度制御方法。
【請求項８】
前記スケジュール情報は、前記複数のタスクそれぞれに割り当てられた優先度レベルを示す情報を含み、
前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行するステップは、前記プロセッサの温度が所定の閾値を越えた場合、前記プロセッサ停止タスクの優先度レベルが最下位の優先度レベルから、前記リアルタイムタスクに割り当てられた優先度レベルに次いで高い優先度レベルに変更されるように前記プロセッサ停止タスクの優先度レベルを変更するステップを含むことを特徴とする請求項６記載のプロセッサ速度制御方法。
【請求項９】
前記スケジュール情報は、周期実行すべきタスクに対して割り当てるべきプロセッサ時間を予約するためのプロセッサ時間割り当て情報を含み、
前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行するステップは、前記リアルタイムタスクの実行期間以外の他の期間に前記プロセッサ停止タスクの実行期間を予約するステップを含むことを特徴とする請求項６記載のプロセッサ速度制御方法。
【請求項１０】
前記スケジューリング処理を実行するステップは、前記リアルタイムタスクが各サイクルタイム内の第１の期間に実行され、且つ前記リアルタイムタスク以外の他のタスクが前記各サイクルタイム内の第２の期間に実行されるように、前記スケジュール情報に従って前記スケジューリング処理を実行するステップを含み、
前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行するステップは、前記プロセッサの温度が所定の閾値を越えた場合、前記プロセッサ停止タスクが前記リアルタイムタスク以外の他のタスクよりも優先して前記各サイクルタイム内の前記第２の期間内に実行されるように前記プロセッサ停止タスクの実行期間を前記各サイクルタイム内の前記第２の期間に予約するステップを含むことを特徴とする請求項６記載のプロセッサ速度制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサを含む電子機器および同電子機器で用いられるプロセッサ速度制御方法に関する。
【背景技術】
【０００２】
近年、プロセッサの動作速度を制御する技術が開発されている。例えば、プロセッサに供給されるクロックの周波数を低下させることによって、プロセッサの発熱の抑制およびプロセッサのパワーセーブを図ることができる。
【０００３】
プロセッサに供給されるクロックを制御する技術の一つとして、プロセッサがアイドル状態に入った時に実行されるクロック制御プログラムを用いて、プロセッサに供給されるクロックを停止するシステムが知られている（例えば、特許文献１参照）。
【特許文献１】米国特許第５，１８９，６４７号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１のシステムでは、プロセッサがアイドル状態にならない限り、クロック制御プログラムは実行されない。このため、実行可能なタスクが存在する限り、プロセッサは常にその１００％の性能で動作しつづける。
【０００５】
プロセッサを常にその１００％の性能で動作させることは、非常に危険である。プロセッサの温度がその安全動作保証温度を越えてしまう可能性があるためである。
【０００６】
また、リアルタイムシステムにおいては、プロセッサに供給されるクロックの周波数を単純に下げることはできない。プロセッサがリアルタイムタスクを実行している期間中にもしクロック周波数を低下させたならば、決められた時間制約内にリアルタイムタスクの実行を完了できなくなる危険が発生するからである。
【０００７】
本発明は上述の事情を考慮してなされたものであり、リアルタイム性を損なうことなく、プロセッサを安全に動作させることが可能な電子機器およびプロセッサ速度制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述の課題を解決するため、本発明の電子機器は、プロセッサと、リアルタイム処理を実行するためのリアルタイムタスクを含む複数のタスクの実行順序を制御するためのスケジュール情報に従って、前記リアルタイムタスクが優先して実行されるように前記複数のタスクを前記プロセッサに割り当てるためのスケジューリング処理を実行する手段と、前記プロセッサの温度を検出する温度検出器と、前記温度検出器によって検出される前記プロセッサの温度が所定の閾値を越えた場合、前記プロセッサの動作を停止する命令を含むプロセッサ停止タスクが前記プロセッサによって定期的に実行されるように、前記プロセッサ停止タスクの実行期間を前記リアルタイムタスクの実行期間以外の他の期間中に割り当てるための処理を実行する手段とを具備することを特徴とする。
【０００９】
この電子機器においては、プロセッサの温度が所定の閾値を越えた場合には、プロセッサ停止タスクが定期的に実行されるので、プロセッサの平均動作速度を低下することができる。さらに、プロセッサ停止タスクの実行期間はリアルタイムタスクの実行期間以外の他の期間中に割り当てられるので、リアルタイムタスクの動作に影響を与えることなく、プロセッサの平均動作速度を低下することができる。
【発明の効果】
【００１０】
本発明によれば、リアルタイム性を損なうことなく、プロセッサを安全に動作させることが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して、本発明の実施形態を説明する。  
図１には、本発明の一実施形態に係る電子機器の構成が示されている。この電子機器は、例えば、オーディオ・ビデオのようなマルチメディアデータを扱う装置である。この電子機器は、リアルタイムシステムとして機能する組み込みシステムを含んでいる。この組み込みシステムはプロセッサを含む情報処理装置であり、図示のように、バス１０、ＣＰＵ１１、システムコントローラ１２、メモリ１３、温度センサ１４、システムタイマ１５、および各種Ｉ／Ｏデバイス１６を含んでいる。
【００１２】
ＣＰＵ１１は本電子機器の動作を制御するプロセッサである。ＣＰＵ１１は、メモリ１３にロードされたオペレーティングシステム（ＯＳ）２１および各種アプリケーションプログラムを実行する。ＣＰＵ１１はクロック信号ＣＬＫに同期して動作する。システムコントローラ１２はＣＰＵ１１のプロセッサバスとバス１０との間を双方向で接続するブリッジデバイスであり、メモリ１３を制御するメモリコントローラも含んでいる。さらに、システムコントローラ１２は、システムタイマ１５および各Ｉ／Ｏデバイス１６それぞれからの割り込み要求信号に応じて割り込み信号ＩＮＴをＣＰＵ１１に供給する割り込みコントローラを内蔵している。システムタイマ１５は、予め決められた時間間隔で割り込み要求信号（タイマ割り込み）を発生する。
【００１３】
温度センサ１４はＣＰＵ１１の温度を検出するセンサである。温度センサ１４によって検出されたＣＰＵ１１の温度は、システムコントローラ１２内のレジスタにセットされる。温度センサ１４はＣＰＵ１１のチップ上またはそのＣＰＵ１１の近傍に配置されている。ＣＰＵ１１の温度はそのＣＰＵ１１自体の発熱によって上昇する。もしＣＰＵ１１がその１００％の動作速度で動作し続けると、ＣＰＵ１１の温度はそのＣＰＵ１１の安全動作温度範囲を超える危険がある。温度センサ１４は、ＣＰＵ１１の温度が安全動作温度範囲にあるかどうかを監視するために用いられる。
【００１４】
本実施形態においては、温度センサ１４によって検出されるＣＰＵ１１の温度が所定の閾値を超えたとき、ＣＰＵ１１の平均動作速度を低下させるためにＣＰＵ速度制御処理が実行される。閾値は、例えば、ＣＰＵ１１の安全動作温度範囲の上限値よりもすこし低い値に設定されている。ＣＰＵ速度制御処理は、ある一定時間内に一回の割合でＣＰＵ１１の動作停止期間が挿入されるように、ＣＰＵ１１の動作を定期的に停止する。たとえば１秒当たり２００ｍｓの期間だけＣＰＵ１１の動作が停止されるように、ＣＰＵ１１の動作を定期的に停止することにより、ＣＰＵ１１の平均動作速度をその最高動作速度の８０％の動作速度に低減することができる。
【００１５】
ＣＰＵ速度制御処理は、ＣＰＵ１１の動作を停止するために用意されたタスクであるプロセッサ停止タスク（CPU Stop Task）を利用して実行される。プロセッサ停止タスク（CPU Stop Task）は、例えばＨＡＬＴ命令のような、ＣＰＵ１１の動作を停止するための命令を含む。プロセッサ停止タスク（CPU Stop Task）がＣＰＵ１１にディスパッチされたとき、ＣＰＵ１１はプロセッサ停止タスク（CPU Stop Task）のＨＡＬＴ命令を実行し、これによってそのＣＰＵ１１自身の動作を停止する。この場合、ＣＰＵ１１の内部クロックも停止され、ＣＰＵ１１内のコアユニットの動作が停止する。
【００１６】
オペレーティングシステム（ＯＳ）２１はマルチタスク機能をサポートするように構成されている。ＯＳ２１は、スケジューラ２２およびディスパッチャ２３を含む。スケジューラ２２は、ＣＰＵ時間を割り当てるべき次のタスクを決定する。このスケジューラ２２は、リアルタイムタスクおよび非リアルタイムタスクを含むタスク群の実行順序を制御するためのスケジュール情報にしたがって、リアルタイムタスクが非リアルタイムタスクよりも優先して実行されるようにリアルタイムタスクおよび非リアルタイムタスクを含むタスク群をＣＰＵ１１に順次割り当てるためのスケジューリング処理を実行する。ここで、リアルタイムタスクは、リアルタイム処理を実行するためのタスク、つまりある時間制約内に処理を完了することが必要とされるタスクである。
【００１７】
スケジューラ２２は、スケジューリングキュー２４およびスケジューリングテーブル２５の少なくとも一方を用いてスケジュール情報を管理する。スケジューリングキュー２４は実行可能なタスクを登録するためのキューである。スケジューリングキュー２４は、上述のスケジュール情報として、各タスクの優先度レベルを示す優先度情報を管理する。リアルタイムタスクの優先度レベルは最も高く、非リアルタイムタスクそれぞれにはリアルタイムタスクよりも低い優先度レベルが割り当てられる。これにより、リアルタイムタスクは非リアルタイムタスクよりも優先して実行される。
【００１８】
スケジューリングテーブル２５は周期実行すべきタスクを登録するためのテーブルである。スケジューリングテーブル２５は、上述のスケジュール情報として、リアルタイムタスクの実行期間を予約するプロセッサ時間割り当て情報を管理する。リアルタイムタスクはスケジューリングテーブル２５に登録され、リアルタイムタスクの実行開始タイミングおよび実行期間が予約される。これにより、リアルタイムタスク毎にその実行開始タイミングおよび実行期間が規定される。非リアルタイムタスクは、リアルタイムタスクの実行期間以外の残りの空き時間を利用して実行される。スケジューリングテーブル２５は、リアルタイムタスクに、決められたタイミングで周期的にＣＰＵ時間を割り当てるために利用される。
【００１９】
ディスパッチャ２３は、スケジューリングキュー２４またはスケジューリングテーブル２５にしたがって、タスクをＣＰＵ１１にディスパッチする。このディスパッチャ２３は、スケジューラ２２がタスクスイッチ（コンテクストスイッチ）が必要である判断した場合、スケジューリングキュー２４またはスケジューリングテーブル２５を参照して、タスクスイッチを実行する。なお、スケジューラ２２とディスパッチャ２３とを合わせたたものをスケジューラと称することもある。
【００２０】
ＯＳ２１は、さらに、ＣＰＵ速度制御モジュール２６を含んでいる。ＣＰＵ速度制御モジュール２６は、上述のＣＰＵ速度制御処理を実行する。ＣＰＵ速度制御モジュール２６は、ＣＰＵ１１の温度がある閾値を超えた時、CPU Stop Taskが定期的にＣＰＵ１１によって実行されるようにCPU Stop Taskの実行期間をリアルタイムタスクの実行期間以外の他の期間に割り当てるための処理を実行する。CPU Stop Taskの実行期間をリアルタイムタスクの実行期間以外の他の期間に割り当てるための処理は、スケジュール情報を変更することによって実現される
具体的には、ＣＰＵ速度制御モジュール２６は、（１）リアルタイムタスクに割り当てられた優先度レベルに次いで高い優先度レベルがCPU Stop Taskに割り当てられるようにCPU Stop Taskの優先度レベルを変更する処理、あるいは（２）リアルタイムタスクの実行期間以外の他の期間にCPU Stop Taskの実行期間が予約されるようにCPU Stop Taskの実行期間を予約する処理、を実行する。
【００２１】
ＣＰＵ速度制御モジュール２６は、スケジューラ２２に対してスケジュール情報の更新を依頼することにより、あるいはスケジューリングキュー２４またはスケジューリングテーブル２５を直接更新することにより、CPU Stop Taskの優先度レベルの変更、またはCPU Stop Taskのための実行期間の予約を行う。
【００２２】
次に、図２乃図４を参照して、プロセッサ時間割り当て情報の更新によってCPU Stop Taskを定期的に実行する方法について説明する。
【００２３】
図２には、スケジューリングテーブル２５のプロセッサ時間割り当て情報にしたがって、リアルタイムタスクとCPU Stop Taskとが周期的に実行される様子が示されている。図２の例においては、各サイクルタイム内に、リアルタイム処理を実行するための期間Ｔ１と非リアルタイム処理を実行するための期間Ｔ２とが定義されている。２つのリアルタイムタスクＡ，Ｂには、サイクルタイム毎にその期間Ｔ１においてＣＰＵ時間が割り当てられる。CPU Stop Taskには、サイクルタイム毎にその期間Ｔ２においてＣＰＵ時間が割り当てられる。CPU Stop Taskに割り当てられたＣＰＵ時間に対応する期間中は、ＣＰＵ１１の動作は停止されている。CPU Stop Taskに割り当てられたＣＰＵ時間以外の期間中は、ＣＰＵ１１は、その１００％の動作速度で動作する。CPU Stop Taskに割り当てられたＣＰＵ時間の長さが１つのサイクルタイムの長さの２０％であるならば、ＣＰＵ１１の平均動作速度は８０％に低減される。リアルタイムタスクＡ，Ｂは、常に、１００％の動作速度で動作するＣＰＵ１１によって実行されるので、リアルタイム性を損なうことなく、ＣＰＵ１１の動作速度を低減することができる。
【００２４】
図３には、ＣＰＵ１１の温度が閾値以下の場合に対応するスケジューリングの様子が示されている。リアルタイムタスクＡ，Ｂは、スケジューリングテーブル２５に登録されており、リアルタイムタスクＡ，Ｂそれぞれに割り当てるべきＣＰＵ時間が予約されている。
【００２５】
リアルタイムタスクＡ，Ｂは、ＣＰＵ時間割り当て情報にしたがって、各サイクルタイムの期間Ｔ１において実行される。非リアルタイムタスクＣはスケジューリングキュー２４に登録されている。各サイクルタイムの期間Ｔ２においては、スケジューリングキュー２４に登録されている非リアルタイムタスクＣが実行される。
【００２６】
図４には、ＣＰＵ１１の温度が閾値を超えた場合に対応するスケジューリングの様子が示されている。ＣＰＵ速度制御モジュール２６は、CPU Stop Taskの実行期間が各サイクルタイムの期間Ｔ２に予約されるように、CPU Stop Taskをスケジューリングテーブル２５に登録してそのCPU Stop Taskに割り当てるべきＣＰＵ時間を予約する。CPU Stop Taskに対して予約されるＣＰＵ時間としては、上述したように各サイクルタイムの期間Ｔ２が利用される。スケジューリングキュー２４に登録されている非リアルタイムタスクＣは、各サイクルタイムの期間Ｔ２内において、CPU Stop Taskに対して予約された実行期間以外の残りの期間を利用して実行される。
【００２７】
次に、図５乃至図７を参照して、優先度情報の更新によってCPU Stop Taskを定期的に実行する方法について説明する。
【００２８】
図５には、スケジューリングキュー２４の構成例が示されている。スケジューリングキュー２４は、優先度レベルが互いに異なるいくつかのスケジューリングキューを含む。例えば、５つの優先度レベルそれぞれに対応する５つのスケジューリングキュー２４１〜２４５によってスケジューリングキュー２４が構成される。最も優先度レベルが高いスケジューリングキュー２４１には、リアルタイムタスクＡ，Ｂが登録される。非リアルタイムタスクＣ，Ｄは、例えば、スケジューリングキュー２４３に登録される。CPU Stop Taskは、通常は、最も優先度レベルが低いスケジューリングキュー２４５に登録されている。ＣＰＵ１１の温度が閾値を超えたとき、ＣＰＵ速度制御モジュール２６は、CPU Stop Taskの優先度レベルを変更し、第２位の優先度レベルが割り当てられたスケジューリングキュー２４２にCPU Stop Taskに登録する。これにより、CPU Stop Taskは、リアルタイムタスクＡ，Ｂの実行期間以外の他の期間中に、非リアルタイムタスクＣ，Ｄよりも優先して実行される。
【００２９】
図６には、ＣＰＵ１１の温度が閾値以下である場合に対応するスケジューリングの様子が示されている。優先度レベルが高い順に、タスクＡ，Ｂ，Ｃ，Ｄが順次実行される。CPU Stop Taskの優先度レベルは最下位であるので、実行可能な他のタスクが存在する限り、CPU Stop Taskは実行されない。
【００３０】
図７には、ＣＰＵ１１の温度が閾値を超えた場合に対応するスケジューリングの様子が示されている。CPU Stop Taskの優先度レベルはリアルタイムタスクＡ，Ｂに次いで高い優先度レベルに変更されるので、優先度レベルが高い順に、タスクＡ，タスクＢ，CPU Stop Task，そしてタスクＣ，Ｄが順次実行される。
【００３１】
図６と図７を比較するとわかるように、CPU Stop Taskの優先度レベルの変更前および変更後のどちらでも、リアルタイムタスクＡ，Ｂそれぞれの実行タイミングは変化しない。
【００３２】
次に、図８のフローチャートを参照して、ＯＳ２１によって実行されるスケジューリング処理について説明する。
【００３３】
ＣＰＵ速度制御モジュール２６は、温度センサ１４によって検出されたＣＰＵ１１の温度が閾値を超えたかどうかを判断する（ステップＳ１０１）。ステップＳ１０１においては、ＣＰＵ速度制御モジュール２６は、システムコントローラ１２内のレジスタにセットされているＣＰＵ温度をリードし、そのリードしたＣＰＵ温度と閾値とを比較する。また、ＣＰＵ１１に割り込み信号を供給して、ＣＰＵ温度が閾値を超えたことをＣＰＵ速度制御モジュール２６に通知するようにしてもよい。
【００３４】
温度センサ１４によって検出されたＣＰＵ１１の温度が閾値を超えたならば（ステップＳ１０１のＹＥＳ）、ＣＰＵ速度制御モジュール２６は、CPU Stop Taskの優先度レベルを上げること、あるいはCPU Stop Taskに割り当てるべきＣＰＵ時間を予約すること、をスケジューラ２２に対して要求する（ステップＳ１０２）。スケジューラ２２は、ＣＰＵ速度制御モジュール２６からの要求にしたがって、スケジューリングキュー２４の優先度情報またはスケジューリングテーブル２５のＣＰＵ時間割当て情報を変更する（ステップＳ１０３）。
【００３５】
このステップＳ１０３では、CPU Stop Taskの優先度レベルがリアルタイムタスクに次ぐ第２の優先度レベル（つまり、リアルタイムタスクの優先度レベルと非リアルタイムタスクの優先度レベルとの間の中間の優先度レベル）になるように優先度情報を変更する処理、またはCPU Stop TaskにＣＰＵ時間が予約されるようにＣＰＵ時間割り当て情報を変更する処理が実行される。
【００３６】
ディスパッチャ２３は、スケジューリングキュー２４またはスケジューリングテーブル２５から次に実行すべきタスクを取り出す（ステップＳ１０４）。次に実行すべきタスクがCPU Stop Taskであれば（ステップＳ１０５のＹＥＳ）、CPU Stop TaskがＣＰＵ１１にディスパッチされて実行される（ステップＳ１０６）。CPU Stop TaskはＨＡＬＴ命令を含んでいるので、ＣＰＵ１１がCPU Stop Taskを実行したとき、ＣＰＵ１１の動作は停止される。ＣＰＵ１１に対してタイマ割り込みのような割り込み信号がスケジューリングイベントとして入力されると（ステップＳ１０７のＹＥＳ）、ＣＰＵ１１は動作を再開する（ステップＳ１０８）。
【００３７】
一方、次に実行すべきタスクがCPU Stop Task以外の他のタスクであれば（ステップＳ１０５のＮＯ）、リアルタイムタスクまたは非リアルタイムタスクがＣＰＵ１１にディスパッチされて実行される（ステップＳ１１１）。ＣＰＵ１１にディスパッチされたリアルタイムタスクまたは非リアルタイムタスクは、ＣＰＵ１１にタイマ割り込みのような割り込み信号がスケジューリングイベントとして入力されるまで（ステップＳ１０７のＮＯ）、継続して実行される（ステップＳ１１３）。ＣＰＵ１１にタイマ割り込みのような割り込み信号がスケジューリングイベントとして入力されると（ステップＳ１０７のＹＥＳ）、ステップＳ１０１の処理に戻る。
【００３８】
ＣＰＵ１１が動作を再開すると（ステップＳ１０８）、温度センサ１４によって検出されたＣＰＵ１１の温度が閾値以下になったかどうかがＣＰＵ速度制御モジュール２６によって判断される（ステップＳ１０９）。もしＣＰＵ１１の温度が閾値以下であれば（ステップＳ１０９のＹＥＳ）、ＣＰＵ速度制御モジュール２６は、CPU Stop Taskの優先度レベルを下げること、あるいはCPU Stop Taskに対するＣＰＵ時間の予約を解除すること、をスケジューラ２２に対して要求する（ステップＳ１１０）。スケジューラ２２は、ＣＰＵ速度制御モジュール２６からの要求にしたがって、スケジューリングキュー２４の優先度情報またはスケジューリングテーブル２５のＣＰＵ時間割当て情報を変更する（ステップＳ１０３）。これにより、以降は、ＣＰＵ１１はその１００％の動作速度で動作する。
【００３９】
もしＣＰＵ１１の温度が閾値以下に下がっていない場合には（ステップＳ１０９のＮＯ）、ステップＳ１１０，Ｓ１０３の処理は実行されない。ＣＰＵ１１の温度が閾値以下に下がるまで、CPU Stop Taskは定期的に実行される。
【００４０】
なお、ＣＰＵ１１の動作が再開されるたびに、CPU Stop Taskがディスパッチされてからの経過時間の長さをチェックし、その経過時間が予め与えられた時間に達するまで、CPU Stop Taskを継続して実行するようにしてもよい。この場合、CPU Stop TaskをＣＰＵ１１にディスパッチする処理が、何回か連続して繰り返されることになる。
【００４１】
以上のように、本実施形態によれば、リアルタイムタスクの動作に影響を及ぼすことなく、ＣＰＵ１１の動作速度を低減することが出来る。さらに、CPU Stop Taskの優先順位の変更、またはCPU Stop Taskに対して割り当てるべきＣＰＵ時間の予約を行うだけで、リアルタイムタスクの動作に影響を及ぼすことなくCPU Stop Taskを定期的に実行することが出来るので、ＯＳ２１が有する通常のスケジューリングアルゴリズムを変更する必要もない。
【００４２】
また、本実施形態のＣＰＵ速度制御処理はコンピュータプログラムによって実現されているので、そのコンピュータプログラムをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータにインストールするだけで、本実施形態と同様の効果を容易に得ることが可能である。
【００４３】
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４４】
【図１】本発明の一実施形態に係る電子機器のシステム構成を示すブロック図。
【図２】図１のシステムにおいてリアルタイムタスクとCPU Stop Taskが周期的に実行される様子を示す図。
【図３】図１のシステムに設けられたＣＰＵの温度が閾値以下の場合に対応するスケジューリングの例を示す図。
【図４】図１のシステムに設けられたＣＰＵの温度が閾値を越えた場合に対応するスケジューリングの例を示す図。
【図５】図１のシステムで用いられるスケジューリングキューの構成例を示す図。
【図６】図５のスケジューリングキューを用いて、ＣＰＵの温度が閾値以下の場合に実行されるスケジューリングの例を示す図。
【図７】図５のスケジューリングキューを用いて、ＣＰＵの温度が閾値を越えた場合に実行されるスケジューリングの例を示す図。
【図８】図１のシステムにおいて実行されるＣＰＵ速度制御処理の手順を示すフローチャート。
【符号の説明】
【００４５】
１１…ＣＰＵ、１３…メモリ、１４…温度センサ、２１…オペレーティングシステム、２２…スケジューラ、２３…ディスパッチャ、２４…スケジューリングキュー、２５…スケジューリングテーブル、２６…ＣＰＵ速度制御モジュール。
【図１】
2005165470.tif 000003
【図２】
2005165470.tif 000004
【図３】
2005165470.tif 000005
【図４】
2005165470.tif 000006
【図５】
2005165470.tif 000007
【図６】
2005165470.tif 000008
【図７】
2005165470.tif 000009
【図８】
2005165470.tif 000010