(57)【要約】【課題】高機能システムに適用可能であり、ＣＰＵの消費電力を低減すること。【解決手段】ＯＳ２０は、あるイベントが実行されるとき、あるイベントを識別する対応イベント識別子を特定し、テーブル２５を参照して、対応イベント識別子に対応する設定動作周波数として対応設定動作周波数を選択する。ＯＳ２０は、テーブル２６を参照して、対応設定動作周波数に一致する対応動作周波数と、対応動作周波数に対応する対応動作電圧とを選択して通知する。制御装置３６は、対応動作周波数と対応動作電圧で動作するようにＣＰＵ３０を制御する。ＯＳ２０は、あるイベントに対応する複数の対応プロセスをＣＰＵ３０に割り当てる。ＯＳ２０は、ＣＰＵ３０が複数の対応プロセスを処理するときの処理時間に基づいて、ＣＰＵ３０の消費電力を低減するための算出設定動作周波数を計算し、設定動作周波数として対応イベント識別子に対応付けてテーブル２５に格納する。【選択図】図１
2008107944.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステム（以下、ＯＳ）と、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、
対応動作周波数と対応動作電圧で動作するように前記ＣＰＵを制御する制御装置とを具備し、
前記ＯＳは、
複数のイベントのそれぞれを識別する複数のイベント識別子と、前記複数のイベント識別子に対応付けられ、複数のプロセスのそれぞれを識別する複数のプロセス識別子と、設定動作周波数とが格納された動作周波数保存テーブルと、
複数の動作周波数と、前記複数の動作周波数に比例する複数の動作電圧とが格納された周波数・電圧変換テーブルと、
前記複数のイベントのうちの１つのイベントが実行されるとき、前記１つのイベントを識別する対応イベント識別子を通知し、前記１つのイベントに対応する前記複数のプロセスとして複数の対応プロセスを前記ＣＰＵに割り当てるスケジューラと、
前記動作周波数保存テーブルを参照して、前記対応イベント識別子に対応する前記設定動作周波数として対応設定動作周波数を選択する第１動作周波数判定部と、
前記周波数・電圧変換テーブルを参照して、前記対応設定動作周波数に一致する前記対応動作周波数と、前記対応動作周波数に対応する前記対応動作電圧とを選択し、前記制御装置に通知する第２動作周波数判定部と、
前記ＣＰＵが前記複数の対応プロセスを処理するときの処理時間に基づいて、前記ＣＰＵの消費電力を低減するための算出設定動作周波数を計算し、前記設定動作周波数として前記対応イベント識別子に対応付けて前記動作周波数保存テーブルに格納する負荷測定部と
を具備するデータ処理装置。
【請求項２】
前記ＯＳは、
前記複数のイベント識別子と、前記複数のイベントのそれぞれに対する処理を終了しなければならない時間を表す複数の負荷測定時間とが格納された負荷測定周期時間テーブルを更に具備し、
前記負荷測定部は、
前記負荷測定周期時間テーブルを参照して、前記対応イベント識別子に対応する対応負荷測定時間を選択し、
前記処理時間と前記対応負荷測定時間とに基づいて、前記算出設定動作周波数を計算する
請求項１に記載のデータ処理装置。
【請求項３】
周期タイマ装置を更に具備し、
前記負荷測定部は、
前記対応負荷測定時間を選択したときに、前記対応負荷測定時間を前記周期タイマ装置に設定し、
前記スケジューラは、前記複数の対応プロセスを前記ＣＰＵに割り当てるプロセス割り当て処理を実行したときに、前記ＣＰＵへの割り当てがない場合、前記ＣＰＵがアイドル状態であることを前記負荷測定部に通知し、
前記周期タイマ装置は、前記対応負荷測定時間が設定されたときに、カウントを開始し、そのカウント値に対応する計測時間が前記対応負荷測定時間になったときに、割込みを通知し、
前記処理時間は、前記負荷測定部が前記対応負荷測定時間を前記周期タイマ装置に設定したカウント開始時間から、前記アイドル状態の通知を受け取ったアイドル開始時間までの時間を表し、
前記負荷測定部は、
前記カウント開始時間と前記アイドル開始時間と前記対応負荷測定時間とに基づいて、前記算出設定動作周波数を計算する
請求項２に記載のデータ処理装置。
【請求項４】
前記１つのイベントが実行されるときに、前記対応負荷測定時間内に前記アイドル状態になり、かつ、前記周期タイマ装置による割込みが、次のイベントにおける前記プロセス割り当て処理の実行より先に発生する場合、
前記対応負荷測定時間をＴＥとし、前記カウント開始時間をＴ１とし、前記アイドル開始時間をＴ２とし、最大動作周波数をｆｍａｘとし、前記算出設定動作周波数をｆ”としたとき、前記負荷測定部は、
ｆ”＝（（Ｔ２−Ｔ１）／（ＴＥ−Ｔ１））×ｆｍａｘ
により、前記算出設定動作周波数を計算し、
前記算出設定動作周波数を前記設定動作周波数として前記対応イベント識別子に対応付けて前記動作周波数保存テーブルに格納し、
前記対応イベント識別子に対応する前記設定動作周波数は、前記１つのイベントが再度実行された場合、前記対応動作周波数として利用される
請求項３に記載のデータ処理装置。
【請求項５】
前記１つのイベントが実行されるときに、前記対応負荷測定時間内に前記アイドル状態になり、かつ、次のイベントにおける前記プロセス割り当て処理の実行が、前記周期タイマ装置による割込みより先に発生する場合、
前記負荷測定部が前記対応負荷測定時間内に次のイベントにおける負荷測定時間を前記周期タイマ装置に設定したカウント開始時間として、次のカウント開始時間をＴ３としたとき、前記負荷測定部は、
ｆ”＝（（Ｔ２−Ｔ１）／（Ｔ３−Ｔ１））×ｆｍａｘ
により、前記算出設定動作周波数を計算し、
前記算出設定動作周波数を前記設定動作周波数として前記対応イベント識別子に対応付けて前記動作周波数保存テーブルに格納し、
前記対応イベント識別子に対応する前記設定動作周波数は、前記１つのイベントが再度実行された場合、前記対応動作周波数として利用される
請求項４に記載のデータ処理装置。
【請求項６】
前記１つのイベントが実行されるときに、前記アイドル状態になる前に前記周期タイマ装置による割込みが１回発生した場合、
現在の動作周波数として前記対応動作周波数をｆとし、前記算出設定動作周波数に対する調整用算出設定動作周波数をｆ”’としたとき、前記負荷測定部は、
ｆ”’＝（（Ｔ２−Ｔ１）／ＴＥ）×ｆ
により、前記調整用算出設定動作周波数を計算し、
前記調整用算出設定動作周波数が前記最大動作周波数よりも大きい場合は、前記調整用算出設定動作周波数を前記最大動作周波数とし、
前記調整用算出設定動作周波数を前記設定動作周波数として前記対応イベント識別子に対応付けて前記動作周波数保存テーブルに格納し、
前記対応イベント識別子に対応する前記設定動作周波数は、前記１つのイベントが再度実行された場合、前記対応動作周波数として利用される
請求項４又は５に記載のデータ処理装置。
【請求項７】
前記１つのイベントが実行されるときに、前記アイドル状態になる前に前記周期タイマ装置による割込みが２回以上発生した場合、
前記負荷測定部は、最大動作周波数優先通知を前記第２動作周波数判定部に通知し、
前記第２動作周波数判定部は、前記最大動作周波数優先通知に応じて、前記最大動作周波数とそれに対応する最大動作電圧とを前記制御装置に通知し、
前記制御装置は、前記最大動作周波数とそれに対応する最大動作電圧で動作するように前記ＣＰＵを制御する
請求項６に記載のデータ処理装置。
【請求項８】
前記１つのイベントが実行されるときに、周辺装置による割込みが発生した場合、
前記制御装置は、前記最大動作周波数とそれに対応する最大動作電圧で動作するように前記ＣＰＵを制御する
請求項４〜７のいずれかに記載のデータ処理装置。
【請求項９】
前記１つのイベントが実行されるときに、前記対応負荷測定時間内に前記アイドル状態になり、かつ、前記周期タイマ装置による割込みが、次のイベントにおける前記プロセス割り当て処理の実行より先に発生する場合、
前記１つのイベントとその次のイベントとの間に最低限必要な時間をＴＭとしたとき、前記負荷測定部は、
ｆ”＝（（Ｔ２＋ＴＭ−Ｔ１）／（ＴＥ−Ｔ１））×ｆｍａｘ
により、前記算出設定動作周波数を計算する
請求項４に記載のデータ処理装置。
【請求項１０】
前記１つのイベントが実行されるときに、前記対応負荷測定時間内に前記アイドル状態になり、かつ、次のイベントにおける前記プロセス割り当て処理の実行が、前記周期タイマ装置による割込みより先に発生する場合、
前記１つのイベントとその次のイベントとの間に最低限必要な時間をＴＭとしたとき、前記負荷測定部は、
ｆ”＝（（Ｔ２＋ＴＭ−Ｔ１）／（Ｔ３−Ｔ１））×ｆｍａｘ
により、前記算出設定動作周波数を計算する
請求項５に記載のデータ処理装置。
【請求項１１】
前記１つのイベントが実行されるときに、前記アイドル状態になる前に前記周期タイマ装置による割込みが１回発生した場合、
前記１つのイベントとその次のイベントとの間に最低限必要な時間をＴＭとしたとき、前記負荷測定部は、
ｆ”’＝（（Ｔ２＋ＴＭ−Ｔ１）／ＴＥ）×ｆ
により、前記調整用算出設定動作周波数を計算する
請求項６に記載のデータ処理装置。
【請求項１２】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、対応動作周波数と対応動作電圧で動作するように前記ＣＰＵを制御する制御装置とに接続されたオペレーティングシステム（以下、ＯＳ）を用いる方法であって、
前記複数のイベントのうちの１つのイベントが実行されるとき、前記１つのイベントを識別する対応イベント識別子を特定する特定ステップと、
複数のイベントのそれぞれを識別する複数のイベント識別子と、前記複数のイベント識別子に対応付けられ、複数のプロセスのそれぞれを識別する複数のプロセス識別子と、設定動作周波数とが格納された動作周波数保存テーブルを参照して、前記対応イベント識別子に対応する前記設定動作周波数として対応設定動作周波数を選択する第１動作周波数判定ステップと、
複数の動作周波数と、前記複数の動作周波数に比例する複数の動作電圧とが格納された周波数・電圧変換テーブルを参照して、前記対応設定動作周波数に一致する前記対応動作周波数と、前記対応動作周波数に対応する前記対応動作電圧とを選択し、前記制御装置に通知する第２動作周波数判定ステップと、
前記１つのイベントに対応する前記複数のプロセスとして複数の対応プロセスを前記ＣＰＵに割り当てるプロセス割り当てステップと、
前記ＣＰＵが前記複数の対応プロセスを処理するときの処理時間に基づいて、前記ＣＰＵの消費電力を低減するための算出設定動作周波数を計算する負荷測定ステップと、
前記算出設定動作周波数を前記設定動作周波数として前記対応イベント識別子に対応付けて前記動作周波数保存テーブルに格納する更新ステップと
を具備するデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、利用者が携帯可能なデータ処理装置に関する。
【背景技術】
【０００２】
携帯電話機のように、利用者が携帯可能なデータ処理装置が普及されている。このようなデータ処理装置ではバッテリーを内蔵しているため、バッテリーの使用可能な時間としてバッテリー持続時間を出来るだけ長くするために、消費電力の削減が望まれている。特に、データ処理装置は更にＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を内蔵し、そのＣＰＵの消費電力は、データ処理装置全体の消費電力に占める割合が高い。このため、ＣＰＵの消費電力を削減することが望まれている。
【０００３】
一般にＣＰＵの消費電力は、動作周波数と、動作電圧の２乗とに比例して増加する。即ち、ＣＰＵの消費電力、動作周波数、動作電圧をそれぞれＰ、ｆ、Ｖとしたとき、Ｐ∝ｆＶ２により表される。そこで、動作電圧Ｖは動作周波数ｆでＣＰＵが動作するように設定される。
【０００４】
従来、リアルタイムＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を搭載したデータ処理装置が普及されている。このようなデータ処理装置をリアルタイムシステムと称する。このリアルタイムシステムにおいて、動作電圧Ｖは、例えば全てのイベントが同時に発生した場合、全てのイベントに対する処理が規定時間内に終了するように設定される。そこで、動作電圧Ｖを低下させることにより、ＣＰＵの消費電力を低減することが可能である。また、上述のように、動作電圧Ｖは動作周波数ｆでＣＰＵが動作するように設定されるため、動作周波数ｆも低下させることにより、ＣＰＵが安定に動作する。このように、リアルタイムシステムでは、システム動作中に、ＣＰＵの動作周波数と動作電圧を動的に制御することにより、ＣＰＵの消費電力の低減に有効である。
【０００５】
近年、高機能ＯＳを搭載したデータ処理装置が普及されている。高機能ＯＳとは、カーネル、ユーザ層の区別を持ち、カーネル保護機能を有し、すべてのイベントがカーネルを介して通知されるＯＳをいう。このようなデータ処理装置を高機能システムと称する。また、機能の高度化に伴って、リアルタイムシステムから高機能システムに移行してきている。このため、高機能システムにおいても、効率的に消費電力を低減する方法が望まれている。
【０００６】
ＣＰＵの消費電力を低減するリアルタイムシステムとして、プロセッサ電力制御装置が特開２００５−２８５０９３号公報に記載されている。この公報の［００１１］〜［００１４］項を参照して説明する。
【０００７】
このリアルタイムシステム（プロセッサ電力制御装置）は、ＯＳ１０と、電力制御ブロック２０と、クロック生成部３１と、電圧生成部３２と、ＣＰＵ３３とを具備している。
ＯＳ１０は、タスクスケジューラ１１を具備している。タスクスケジューラ１１は、複数のタスクから１つのタスクを選択してＣＰＵ３０に割り付ける。リアルタイムシステムでは、イベントに対する処理をタスクという最小処理単位で実行する。
電力制御ブロック２０は、システム要求性能算出ブロック２１と、タスク要求性能テーブル２２と、判定ブロック２３、２４と、電力モードテーブル２５とを具備している。タスク要求性能テーブル２２には、事前に各タスクに必要な要求性能を表す値が設定されている。電力モードテーブル２５には、要求性能に対する電力モード（動作周波数と動作電圧）が設定されている。
【０００８】
このリアルタイムシステム（プロセッサ電力制御装置）の動作について説明する。
【０００９】
（従来・動作１）
複数のタスクのうちの１つのタスクが起動された時に、タスクスケジューラ１１は、そのタスクの起動を電力制御ブロック２０に通知する。
【００１０】
（従来・動作２）
電力制御ブロック２０のシステム要求性能算出ブロック２１は、そのタスクのリアルタイム性を保証するために、そのタスクの要求性能を表す値をタスク要求性能テーブル２２から取得し、システムの要求性能を計算する。
【００１１】
（従来・動作３）
判定ブロック２３、２４は、システムの要求性能を満たし、かつ最も消費電力が小さくなるように、電力モードテーブル２５を用いて電力モード（動作周波数と動作電圧）を決定し、動作周波数、動作電圧をそれぞれクロック生成部３１、電圧制御部３２に通知する。クロック生成部３１は、その動作周波数に対するクロックを生成してＣＰＵ３３に供給し、電圧制御部３２は、その動作電圧をＣＰＵ３３に供給する。
【００１２】
（従来・動作４）
上記（従来・動作１）〜（従来・動作３）の処理をタスクの起動／停止の度に行う。
【００１３】
上記（従来・動作２）の処理において、個々のタスクの要求性能をＬＤｔｓｋとする。ここで、ＬＤｔｓｋは、タスクを要求処理時間以内に処理するために必要な動作周波数をＣＰＵの最大動作周波数に対してパーセンテージに表現したものであり、以下の式で算出される。
ＬＤｔｓｋ＝そのタスクをＣＰＵの最大動作周波数で動作させた時の処理時間／そのタスクの要求処理時間×１００
【００１４】
また、上記（従来・動作２）の処理において、システムの要求性能をＬＤｓｙｓとする。ここで、ＬＤｓｙｓは、タスクの起動／停止の度に、以下により算出される。
【００１５】
（従来・算出法１）
タスクが新たに起動された場合は、タスク起動前のＬＤｓｙｓに起動されたタスクのＬＤｔｓｋを加算した値を新たなＬＤｓｙｓとする。
【００１６】
（従来・算出法２）
タスクが終了した場合で、かつ実行待ちのタスクがある場合は、ＬＤｓｙｓを変更しない。
【００１７】
（従来・算出法３）
タスクが終了した場合で、かつ実行中もしくは実行待ちのタスクが無くなった場合は。ＬＤｓｙｓを０とする。
【００１８】
上記（従来・算出法１）、（従来・算出法２）、（従来・算出法３）のサイクルにより、ＣＰＵ３３の動作周波数と動作電圧を最適に維持する。
【００１９】
また、この公報の［００２７］〜［００２９］項を参照すると、割込みは、非同期に発生する可能性があるため、動的に周波数を変更するシステムでは、動作周波数が遅い電力モードで動作している場合にも発生しうる。タスクの実行時間を考慮すると、割込み処理期間は極力短時間であることが望ましい。そこで、割込み処理期間は、無条件にＣＰＵ３３が最大周波数で動作するようにし、割込み状態が終了したときに再度、電力モードを特定し、最適な周波数に変更する。
【００２０】
このように、リアルタイムシステムにおいて、性能を劣化させず、個々のタスクに最適な動作周波数と動作電圧をＣＰＵ３３に設定することにより、低消費電力を実現すると共に、割込み処理性能も劣化させない。
【００２１】
【特許文献１】特開２００５−２８５０９３号公報（［００１１］〜［００１４］、図１）
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかし、上記のリアルタイムシステムでは、以下のような問題点がある。
【００２３】
まず、第１に、上記のリアルタイムシステムを高機能システムに適用することを考えてみる。リアルタイムシステムでは、イベントに対する処理をタスクという最小処理単位で実行するのに対して、高機能システムでは、複数のイベントの各々に対する処理をプロセスという最小処理単位で実行する。この場合、個々のプロセスは、複数の機能を持つ場合が多いため、上述の要求性能を一意に設定することができない。つまり、高機能システムの場合、イベント１の場合は、１０［μｓ］以内で処理しなければならず、イベント２の場合は、１００［μｓ］以内で処理しなければならないといったケースが多数存在する。一方、リアルタイムシステムでは、タスク要求性能テーブル２２を１つのタスクに１つの値しか設定できず、重層的にテーブルを設定できない。また、高機能システムの場合には、ＯＳによるオーバーヘッドが大きく、一意でないため、個々のプロセスの要求処理時間を予め見積もることが困難である。
【００２４】
第２に、上記のシステムが大規模なシステムになった場合、タスク要求性能テーブル２２をタスクの数だけ見積もる必要があるため、コストがかかる。
【００２５】
このように、高機能システムに適用可能であり、ＣＰＵの消費電力を低減することができるデータ処理装置が望まれる。
【課題を解決するための手段】
【００２６】
以下に、［発明を実施するための最良の形態］で使用する番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００２７】
本発明のデータ処理装置は、
オペレーティングシステム（以下、ＯＳ）（２０）と、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）（３０）と、
対応動作周波数と対応動作電圧で動作するように前記ＣＰＵ（３０）を制御する制御装置（３６）とを具備し、
前記ＯＳ（２０）は、
複数のイベントのそれぞれを識別する複数のイベント識別子と、前記複数のイベント識別子に対応付けられ、複数のプロセスのそれぞれを識別する複数のプロセス識別子と、設定動作周波数（ｆ’）とが格納された動作周波数保存テーブル（２５）と、
複数の動作周波数（ｆ）と、前記複数の動作周波数（ｆ）に比例する複数の動作電圧（Ｖ）とが格納された周波数・電圧変換テーブル（２６）と、
前記複数のイベントのうちの１つのイベントが実行されるとき、前記１つのイベントを識別する対応イベント識別子を通知し、前記１つのイベントに対応する前記複数のプロセスとして複数の対応プロセスを前記ＣＰＵ（３０）に割り当てるスケジューラ（２１）と、
前記動作周波数保存テーブル（２５）を参照して、前記対応イベント識別子に対応する前記設定動作周波数（ｆ’）として対応設定動作周波数（ｆ’）を選択する第１動作周波数判定部（２３）と、
前記周波数・電圧変換テーブル（２６）を参照して、前記対応設定動作周波数（ｆ’）に一致する前記対応動作周波数（ｆ）と、前記対応動作周波数（ｆ）に対応する前記対応動作電圧（Ｖ）とを選択し、前記制御装置（３６）に通知する第２動作周波数判定部（２３）と、
前記ＣＰＵ（３０）が前記複数の対応プロセスを処理するときの処理時間に基づいて、前記ＣＰＵ（３０）の消費電力を低減するための算出設定動作周波数（ｆ”）を計算し、前記設定動作周波数（ｆ’）として前記対応イベント識別子に対応付けて前記動作周波数保存テーブル（２５）に格納する負荷測定部（２２）と
を具備している。
【発明の効果】
【００２８】
本発明のデータ処理装置では、上述のように、ＯＳ（２０）は、動作周波数保存テーブル（２５）により、対応イベント識別子に対応する設定動作周波数（ｆ’）として対応設定動作周波数（ｆ’）を選択し、周波数・電圧変換テーブル（２６）により、対応設定動作周波数（ｆ’）に一致する対応動作周波数（ｆ）と、対応動作周波数（ｆ）に対応する対応動作電圧（Ｖ）とを選択し、制御装置（３６）に通知する。制御装置（３６）は、対応動作周波数と対応動作電圧で動作するようにＣＰＵ（３０）を制御する。前述のように、高機能システムの場合には、ＯＳによるオーバーヘッドが大きく、一意でないため、プロセスの要求処理時間を予め見積もることが困難である。したがって、本発明のデータ処理装置では、ＯＳ（２０）は、ＣＰＵ（３０）が複数の対応プロセスを処理するときの処理時間に基づいて、算出設定動作周波数（ｆ”）を計算し、設定動作周波数（ｆ’）として動作周波数保存テーブル（２５）に格納（更新）する。このように、本発明のデータ処理装置では、高機能システムに適用可能である。
【００２９】
また、本発明のデータ処理装置では、上述のように、算出設定動作周波数（ｆ”）は、ＣＰＵ（３０）の消費電力を低減するための動作周波数を表している。この算出設定動作周波数（ｆ”）は、設定動作周波数（ｆ’）として動作周波数保存テーブル（２５）に更新され、その設定動作周波数（ｆ’）は、上記１つのイベントが再度実行された場合、上記の対応動作周波数（ｆ）として利用される。周波数・電圧変換テーブル（２６）に格納された複数の動作周波数（ｆ）と複数の動作電圧（Ｖ）とは比例しているため、上記１つのイベントが再度実行されるときの対応動作周波数（ｆ）、対応動作電圧（Ｖ）は、それぞれ、上記１つのイベントが再度実行されたときの対応動作周波数（ｆ）、対応動作電圧（Ｖ）よりも低い。このため、本発明のデータ処理装置では、ＣＰＵ（３０）の消費電力を低減することができる。
【００３０】
以上により、本発明のデータ処理装置では、高機能システムに適用可能であり、ＣＰＵの消費電力を低減することができる。
【発明を実施するための最良の形態】
【００３１】
以下に添付図面を参照して、本発明のデータ処理装置について詳細に説明する。
【００３２】
図１は、本発明のデータ処理装置の構成を示したブロック図である。
【００３３】
本発明のデータ処理装置は、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）２０と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０と、周期タイマ装置３４と、周辺装置３５と、制御装置３６とを具備している。
周期タイマ装置３４は、タイマの機能を有している。
周辺装置３５は、入力装置を含んでいる。
制御装置３６は、電圧制御装置３１と、クロック制御装置３２と、割込み制御装置３３とを具備している。
【００３４】
オペレーティングシステム（以下、ＯＳ）２０は、前述の高機能ＯＳの機能を有し、スケジューラ２１と、負荷測定部２２と、動作周波数判定部２３とを具備している。
スケジューラ２１は、複数のイベントの各々の複数のプロセスを含むプロセス群１０を管理する。
負荷測定部２２は、負荷測定周期時間テーブル２４を具備している。
動作周波数判定部２３は、動作周波数保存テーブル２５と、周波数・電圧変換テーブル２６とを具備している。
【００３５】
図２は、負荷測定周期時間テーブル２４を示している。負荷測定周期時間テーブル２４には、複数のイベントのそれぞれを識別する複数のイベント識別子“０”、“１”、“２”、“３”、“４”、…と、複数のイベントのそれぞれに対する処理を終了しなければならない時間を表す複数の負荷測定時間ＴＥとが格納されている。
【００３６】
図３は、動作周波数保存テーブル２５を示している。動作周波数保存テーブル２５には、複数のイベント識別子“０”、“１”、“２”、“３”、“４”、…が格納されている。動作周波数保存テーブル２５には、更に、複数のイベント識別子“０”、“１”、“２”、“３”、“４”、…に対応付けて、複数のプロセスのそれぞれを識別する複数のプロセス識別子と、設定動作周波数ｆ’［ＭＨｚ］とが格納されている。
【００３７】
図４は、周波数・電圧変換テーブル２６を示している。周波数・電圧変換テーブル２６には、ＣＰＵ３０の動作周波数を表す複数の動作周波数ｆ［ＭＨｚ］と、ＣＰＵ３０の動作電圧を表す複数の動作電圧Ｖ［Ｖ］とが格納されている。複数の動作周波数ｆは、それぞれ、“１≦ｆ＜１０”、“１０≦ｆ＜２０”、“２０≦ｆ＜３０”、“３０≦ｆ＜４０”、“４０≦ｆ＜５０”、…に設定されている。複数の動作電圧Ｖは、複数の動作周波数ｆに比例し、それぞれ、“０．５”、“０．５１”、“０．５２”、“０．５３”、“０．５４”、…に設定されている。
【００３８】
ＯＳ２０は、ＯＳの標準的な機能を有している。複数のイベントのうちの１つのイベントが発生した時に、ＯＳ２０は、その標準的な機能を用いて、上記１つのイベントに対応した複数のプロセスとして複数の対応プロセスを特定する。このとき、ＯＳ２０は、上記１つのイベントを識別する対応イベント識別子と、複数の対応プロセスをそれぞれ識別する複数の対応プロセス識別子とをスケジューラ２１に通知する。
【００３９】
ＯＳ２０内のスケジューラ２１は、対応イベント識別子と複数の対応プロセス識別子とにより、プロセス群１０の中から、複数の対応プロセスを選択する。このとき、スケジューラ２１は、対応イベント識別子と複数の対応プロセス識別子とを動作周波数判定部２３に通知すると共に、複数の対応プロセスを１番目から最終番目までこの順にＣＰＵ３０に割り付ける（割り当てる）。また、スケジューラ２１は、複数の対応プロセスをＣＰＵ３０に割り当てたときに、ＣＰＵ３０への割り当てがない状態である場合、アイドル（ＩＤＬＥ）状態であることを負荷測定部２２に通知する。
【００４０】
動作周波数判定部２３は、対応イベント識別子と複数の対応プロセス識別子とをスケジューラ２１から受け取る。動作周波数判定部２３は、動作周波数保存テーブル２５を参照して、複数の設定動作周波数ｆ’の中から、対応イベント識別子と複数の対応プロセス識別子とに対応する設定動作周波数ｆ’として対応設定動作周波数ｆ’を選択する。
【００４１】
動作周波数判定部２３は、周波数・電圧変換テーブル２６を参照して、複数の動作周波数ｆの中から、対応設定動作周波数ｆ’に一致する対応動作周波数ｆを選択し、複数の動作電圧Ｖの中から、対応動作周波数ｆに対応する対応動作電圧Ｖを選択する。動作周波数判定部２３は、クロック制御装置３２に対応動作周波数ｆを通知し、電圧制御装置３１に対応動作電圧Ｖを通知し、負荷測定部２２に対応イベント識別子を通知する。また、動作周波数判定部２３は、負荷測定部２２から渡される算出設定動作周波数ｆ”を設定動作周波数ｆ’として、対応イベント識別子に対応付けて動作周波数設定テーブル２５に格納（更新）する。
【００４２】
負荷測定部２２は、対応イベント識別子を動作周波数判定部２３から受け取る。負荷測定部２２は、負荷測定周期時間テーブル２４を参照して、複数の負荷測定時間ＴＥの中から、対応イベント識別子に対応する対応負荷測定時間ＴＥを選択し、その時間で割込みが発生するように、対応負荷測定時間ＴＥを周期タイマ装置３４に設定する。また、負荷測定部２２は、スケジューラ２１からアイドル状態の通知を受け取り、周期タイマ装置３４のカウント値を取得する。このときのカウント値は、ＣＰＵ３０が複数の対応プロセスを実行するときの処理時間を表している（後述）。また、負荷測定部２２は、周期タイマ装置３４からの割込みを通知された時に、処理時間に基づいてＣＰＵ３０の消費電力を低減するための算出設定動作周波数ｆ”を計算し、動作周波数判定部２３に通知する。
【００４３】
電圧制御装置３１、クロック制御装置３２は、それぞれ、動作周波数判定部２３から対応動作電圧Ｖ、対応動作周波数ｆを受け取った時、ＣＰＵ３０に供給する。電圧制御装置３１、クロック制御装置３２は、それぞれ、割込み制御装置３３から割込みの通知があった場合、割込みによる処理を高速に終わらせるために、最大動作周波数ｆｍａｘとそれに対応する最大動作電圧ＶｍａｘをＣＰＵ３０に供給する。
【００４４】
周期タイマ装置３４は、負荷測定部２２により対応負荷測定時間が設定されたときに、カウントを開始する。周期タイマ装置３４は、そのカウント値に対応する計測時間が対応負荷測定時間ＴＥになったときに、負荷測定部２２と割込み制御装置３３とに割込みを通知する。
周辺装置３５は、利用者の操作に応じて、割込みを割込み制御装置３３に通知する。例えば、利用者が入力装置を用いてある操作を行なった場合、周辺装置３５は、割込みを割込み制御装置３３に通知する。
割込み制御装置３３は、周期タイマ装置３４や周辺装置３５からの割込みを電圧制御装置３１とクロック制御装置３２に通知後、ＣＰＵ３０に通知する。
【００４５】
本発明のデータ処理装置の動作について説明する。
【００４６】
前提として、あるイベントにより、あるプロセスの実行が開始されてから、アイドル状態になるまでの動作周波数は一定とする。
また、アイドル状態になる前に別のイベントが発生した場合も、動作周波数は操作せず、一定のままとする。ただし、割込みは例外とする。
また、アイドル状態の場合は、ＣＰＵ３０の動作周波数と動作電圧は最低値まで下げることとする。
また、同イベントに対する各プロセスの処理に周期性（次に同じイベントが発生した場合に同様の処置を行う特性）を持つことを前提条件として記載している。
【００４７】
図８Ａ、８Ｂは、本発明のデータ処理装置の動作を示すフローチャート図である。
【００４８】
（ステップＳ１；イベント通知受付）
複数のイベントのうちの１つのイベントがＯＳ２０に通知される。
【００４９】
（ステップＳ２；プロセス特定処理）
ＯＳ２０は、上記１つのイベントに対応した複数のプロセスとしてｎ個（ｎは１以上の整数）の対応プロセスを特定し、上記１つのイベントを識別する対応イベント識別子と、ｎ個の対応プロセスをそれぞれ識別するｎ個の対応プロセス識別子とをスケジューラ２１に通知する。スケジューラ２１は、対応イベント識別子と複数の対応プロセス識別子とにより、プロセス群１０の中から、ｎ個の対応プロセスを選択し、対応イベント識別子とｎ個の対応プロセス識別子を動作周波数判定部２３に通知する。
【００５０】
（ステップＳ３；動作周波数判定処理）
動作周波数判定部２３は、対応イベント識別子と複数の対応プロセス識別子とをスケジューラ２１から受け取る。このとき、動作周波数判定部２３は、動作周波数保存テーブル２５を参照して、複数の設定動作周波数ｆ’の中から、対応イベント識別子と複数の対応プロセス識別子とに対応する設定動作周波数ｆ’として対応設定動作周波数ｆ’を選択する。動作周波数判定部２３は、周波数・電圧変換テーブル２６を参照して、複数の動作周波数ｆの中から、対応設定動作周波数ｆ’に一致する対応動作周波数ｆを選択し、複数の動作電圧Ｖの中から、対応動作周波数ｆに対応する対応動作電圧Ｖを選択する。ここで、対応イベント識別子と複数の対応プロセス識別子とに対応する設定動作周波数ｆ’が動作周波数保存テーブル２５に存在しなかった場合は、例えば、上記１つのイベントが初めて実行される場合は、対応動作周波数ｆを最大動作周波数ｆｍａｘとする。動作周波数判定部２３は、対応動作電圧Ｖ、対応動作周波数ｆをそれぞれ電圧制御装置３１、クロック制御装置３２に通知する。
【００５１】
（ステップＳ４；周波数・電圧供給処理）
電圧制御装置３１、クロック制御装置３２は、それぞれ、動作周波数判定部２３から対応動作電圧Ｖ、対応動作周波数ｆを受け取り、ＣＰＵ３０に供給する。
【００５２】
（ステップＳ５；周期タイマ割込み設定処理）
動作周波数判定部２３は、負荷測定部２２に対応イベント識別子を通知する。負荷測定部２２は、対応イベント識別子を動作周波数判定部２３から受け取る。このとき、負荷測定部２２は、負荷測定周期時間テーブル２４を参照して、複数の負荷測定時間ＴＥの中から、対応イベント識別子に対応する対応負荷測定時間ＴＥを選択し、その時間で割込みが発生するように、対応負荷測定時間ＴＥを周期タイマ装置３４に設定する。周期タイマ装置３４は、負荷測定部２２により対応負荷測定時間ＴＥが設定されたときに、カウントを開始する。周期タイマ装置３４がカウントを開始した時間をカウント開始時間Ｔ１とする。
【００５３】
（ステップＳ６；プロセス割り当て処理）
スケジューラ２１は、ｎ個の対応プロセスのうちの第ｉ対応プロセス（ｉは、１≦ｉ≦ｎを満たす整数）をＣＰＵ３０に割り当てる。ＣＰＵ３０は、その第ｉ対応プロセスを実行する。
スケジューラ２１は、ｎ個の対応プロセスを１番目からｎ番目までこの順にＣＰＵ３０に割り当てる。即ち、ｉがｎではない場合、他にも実行可能なプロセスとして、ｉに１をインクリメントし（ステップＳ７−ＹＥＳ）、上記ステップＳ６の処理を実行し、ｉがｎになるまで（ステップＳ７−ＮＯ）、ステップＳ６の処理を繰り返す。
【００５４】
スケジューラ２１は、ｎ個の対応プロセスを１番目からｎ番目までこの順にＣＰＵ３０に割り当てたとき（ステップＳ７−ＮＯ）、即ち、アイドル状態になった時に、負荷測定部２２にアイドル状態であることを通知する。このとき、負荷測定部２２は、スケジューラ２１からアイドル状態の通知を受け取り、周期タイマ装置３４のカウント値に対応する計測時間をアイドル開始時間Ｔ２として取得する。
【００５５】
周期タイマ割込み設定処理（ステップＳ５）において、周期タイマ装置３４は、そのカウント値が対応負荷測定時間ＴＥに対応する値であるときに、負荷測定部２２と割込み制御装置３３とに割込みを通知する。
【００５６】
以下の処理では、本発明のデータ処理装置の動作として、第１〜第５のケースに分けることができる。
ここで、スケジューラ２１は、上記１つのイベントのｎ個の対応プロセスをＣＰＵ３０に割り当てるプロセス割り当て処理（ステップＳ６）を実行した後、次のイベントにおけるプロセス割り当て処理（ステップＳ６）を実行するものとする。
【００５７】
まず、第１のケースについて説明する。
【００５８】
第１のケースでは、上記１つのイベントが初めて実行されるときに、負荷測定時間ＴＥ内にアイドル状態になる場合（ステップＳ１１−ＹＥＳ）で、かつ、周期タイマ装置３４による割込みが、次のイベントにおけるプロセス割り当て処理の実行より先に発生する場合（ステップＳ１２−ＹＥＳ）であり、後述の第１負荷測定処理（ステップＳ２０）が実行される。
【００５９】
この場合、負荷測定部２２は、対応負荷測定時間ＴＥを周期タイマ装置３４に設定したときに、周期タイマ装置３４のカウント値によりカウント開始時間Ｔ１を取得する。その後、負荷測定部２２は、対応負荷測定時間ＴＥ内にスケジューラ２１からアイドル状態の通知を受け取り、周期タイマ装置３４のカウント値によりアイドル開始時間Ｔ２を取得する。その後、負荷測定部２２は、対応負荷測定時間ＴＥ経過後に周期タイマ装置３４から割込みの通知を受け取る。
【００６０】
上述のように、対応負荷測定時間をＴＥとし、カウント開始時間をＴ１とし、アイドル開始時間をＴ２とし、最大動作周波数をｆｍａｘとし、算出設定動作周波数をｆ”とする。このとき、負荷測定部２２は、
ｆ”＝（（Ｔ２＋ＴＭ−Ｔ１）／（ＴＥ−Ｔ１））×ｆｍａｘ
により、算出設定動作周波数ｆ”を計算する。ここで、Ｔ１からＴ２までの時間を処理時間とし、Ｔ２からＴＥまでの時間をアイドル時間としたとき、ＴＭは、上記１つのイベントとその次のイベントとの間にアイドル時間として最低限必要な時間で、Ｔ２に比べて十分に小さく設定される。
【００６１】
そこで、ＴＭを無視した場合、算出設定動作周波数ｆ”は、
ｆ”＝（（Ｔ２−Ｔ１）／（ＴＥ−Ｔ１））×ｆｍａｘ
により表される。
【００６２】
負荷測定部２２は、その算出設定動作周波数ｆ”を動作周波数判定部２３に通知し、動作周波数判定部２３は、負荷測定部２２からの算出設定動作周波数ｆ”を設定動作周波数ｆ’として、対応イベント識別子に対応付けて動作周波数設定テーブル２５に格納（更新）する。この設定動作周波数ｆ’は、上記１つのイベントが再度実行された場合、上記の対応動作周波数ｆとして利用される。
【００６３】
上記の第１負荷測定処理（ステップＳ２０）について具体的に説明する。例えば、図５Ａに示されるように、上記のｎを３とし、上記１つのイベントに対するｎ個の対応プロセスを１番目からｎ番目までこの順にプロセスＡ、Ｂ、Ｃとする。また、最大動作周波数ｆｍａｘを１００［ＭＨｚ］とし、最大動作周波数ｆｍａｘにおいてＣＰＵ３０がプロセスＡ、Ｂ、Ｃを処理するときの処理時間をそれぞれ１、２、４［ｍｓ］とする。また、対応負荷測定時間ＴＥを１４［ｍｓ］とし、ＯＳ２０のオーバーヘッドを０．１［ｍｓ］とする。
【００６４】
上記１つのイベントが初めて実行される場合、図５Ａに示されるように、クロック制御装置３２と電圧制御装置３１は、それぞれ、最大動作周波数ｆｍａｘとして１００［ＭＨｚ］とそれに対応する最大動作電圧をＣＰＵ３０に供給し、スケジューラ２１は、上記１つのイベントに対するプロセスＡ、Ｂ、Ｃをこの順にＣＰＵ３０に割り当てる。この場合、Ｔ１＝０［ｓ］、Ｔ２＝７．１［ｍｓ］（１＋２＋４＋０．１＝７．１［ｍｓ］）、ＴＥ＝１４［ｍｓ］となるので、Ｔ１からＴ２までの処理時間は７．１［ｍｓ］となり、Ｔ２からＴＥまでのアイドル時間は６．９［ｍｓ］となる。また、ＴＭを０．２［ｍｓ］とすると、算出設定動作周波数ｆ”は、（（７．１＋０．２−０）／１４）×１００［ＭＨｚ］となり、約５２［ＭＨｚ］となる。
【００６５】
次に、上記１つのイベントが再度実行された場合、図５Ｂに示されるように、クロック制御装置３２と電圧制御装置３１は、それぞれ、対応動作周波数ｆとして５２［ＭＨｚ］とそれに対応する対応動作電圧ＶとをＣＰＵ３０に供給し、スケジューラ２１は、上記１つのイベントに対するプロセスＡ、Ｂ、Ｃをこの順にＣＰＵ３０に割り当てる。この場合、ＣＰＵ３０は５２［ＭＨｚ］とそれに対応する対応動作電圧Ｖで動作し、そのときのプロセスＡ、Ｂ、Ｃの処理時間は７．１［ｍｓ］から約１３．６５［ｍｓ］に延びている。一方、対応動作周波数ｆと対応動作電圧Ｖが前回のそれよりも下がっていることから、ＣＰＵ３０の消費電力は低下している。
【００６６】
このように、本発明では、同イベント（上記１つのイベント）で実行されるプロセスに周期性がある場合に、処理時間をアイドル時間分だけ間延びさせ、対応動作周波数ｆと対応動作電圧Ｖを低下させることにより、省電力化を図ることができる。また、負荷測定時間は、プロセスＡ、Ｂ、Ｃの処理を終わらせなければならない時間でもあるため、対応動作周波数ｆは必要以上に低下されない。
【００６７】
次に、第２のケースについて説明する。
【００６８】
第２のケースでは、上記１つのイベントが初めて実行されるときに、負荷測定時間ＴＥ内にアイドル状態になる場合（ステップＳ１１−ＹＥＳ）で、かつ、次のイベントにおけるプロセス割り当て処理の実行が、周期タイマ装置３４による割込みより先に発生する場合（ステップＳ１２−ＮＯ）であり、後述の第２負荷測定処理（ステップＳ３０）が実行される。
【００６９】
この場合、負荷測定部２２は、対応負荷測定時間ＴＥを周期タイマ装置３４に設定したときに、周期タイマ装置３４のカウント値によりカウント開始時間Ｔ１を取得する。その後、負荷測定部２２は、対応負荷測定時間ＴＥ内にスケジューラ２１からアイドル状態の通知を受け取り、周期タイマ装置３４のカウント値によりアイドル開始時間Ｔ２を取得する。その後、負荷測定部２２は、対応負荷測定時間ＴＥ内に、次のイベントにおける負荷測定時間を周期タイマ装置３４に設定したときに、周期タイマ装置３４のカウント値によりカウント開始時間として、次のカウント開始時間Ｔ３を取得する。負荷測定部２２は、負荷測定時間ＴＥ経過後に周期タイマ装置３４から割込みの通知を受け取る。
【００７０】
上述のように、カウント開始時間をＴ１とし、アイドル開始時間をＴ２とし、カウント開始時間Ｔ１に対する次のカウント開始時間をＴ３とし、最大動作周波数をｆｍａｘとし、算出設定動作周波数をｆ”とする。このとき、負荷測定部２２は、
ｆ”＝（（Ｔ２＋ＴＭ−Ｔ１）／（Ｔ３−Ｔ１））×ｆｍａｘ
により、算出設定動作周波数ｆ”を計算する。ここで、上述のように、Ｔ１からＴ２までの時間を処理時間とし、Ｔ２からＴＥまでの時間をアイドル時間としたとき、ＴＭは、上記１つのイベントとその次のイベントとの間にアイドル時間として最低限必要な時間で、Ｔ２に比べて十分に小さく設定される。
【００７１】
そこで、ＴＭを無視した場合、算出設定動作周波数ｆ”は、
ｆ”＝（（Ｔ２−Ｔ１）／（Ｔ３−Ｔ１））×ｆｍａｘ
により表される。
【００７２】
負荷測定部２２は、その算出設定動作周波数ｆ”を動作周波数判定部２３に通知し、動作周波数判定部２３は、負荷測定部２２からの算出設定動作周波数ｆ”を設定動作周波数ｆ’として、対応イベント識別子に対応付けて動作周波数設定テーブル２５に格納（更新）する。この設定動作周波数ｆ’は、上記１つのイベントが再度実行された場合、上記の対応動作周波数ｆとして利用される。
【００７３】
上記の第２負荷測定処理（ステップＳ３０）について具体的に説明する。例えば、図６Ａに示されるように、上記のｎを３とし、上記１つのイベントに対するｎ個の対応プロセスを１番目からｎ番目までこの順にプロセスＡ、Ｂ、Ｃとする。また、最大動作周波数ｆｍａｘを１００［ＭＨｚ］とし、最大動作周波数ｆｍａｘにおいてＣＰＵ３０がプロセスＡ、Ｂ、Ｃを処理するときの処理時間をそれぞれ１、２、４［ｍｓ］とする。対応負荷測定時間ＴＥを１４［ｍｓ］とし、ＯＳ２０のオーバーヘッドを０．１［ｍｓ］とする。また、別のイベントによりプロセスＤがプロセスＡの開始から１０［ｍｓ］後に開始されるものとする。
【００７４】
上記１つのイベントが初めて実行される場合、図６Ａに示されるように、クロック制御装置３２と電圧制御装置３１は、それぞれ、最大動作周波数ｆｍａｘとして１００［ＭＨｚ］とそれに対応する最大動作電圧をＣＰＵ３０に供給し、スケジューラ２１は、上記１つのイベントに対するプロセスＡ、Ｂ、Ｃをこの順にＣＰＵ３０に割り当てる。この場合、Ｔ１＝０［ｓ］、Ｔ２＝７．１［ｍｓ］（１＋２＋４＋０．１＝７．１［ｍｓ］）、ＴＥ＝１４［ｍｓ］、Ｔ３＝１０［ｍｓ］となるので、Ｔ１からＴ２までの処理時間は７．１［ｍｓ］となり、Ｔ２からＴ３までのアイドル時間は２．９［ｍｓ］となる。また、ＴＭを０．２［ｍｓ］とすると、算出設定動作周波数ｆ”は、（（７．１＋０．２−０）／（１０−０））×１００［ＭＨｚ］となり、約７３［ＭＨｚ］となる。
【００７５】
次に、上記１つのイベントが再度実行された場合、図６Ｂに示されるように、クロック制御装置３２と電圧制御装置３１は、それぞれ、対応動作周波数ｆとして７３［ＭＨｚ］とそれに対応する対応動作電圧ＶとをＣＰＵ３０に供給し、スケジューラ２１は、上記１つのイベントに対するプロセスＡ、Ｂ、Ｃをこの順にＣＰＵ３０に割り当てる。この場合、ＣＰＵ３０は７３［ＭＨｚ］とそれに対応する対応動作電圧Ｖで動作し、そのときのプロセスＡ、Ｂ、Ｃの処理時間は７．１［ｍｓ］から約９．７３［ｍｓ］に延びている。一方、対応動作周波数ｆと対応動作電圧Ｖが前回のそれよりも下がっていることから、ＣＰＵ３０の消費電力は低下している。
【００７６】
このように、本発明では、同イベント（上記１つの対応イベント）で実行されるプロセスに周期性があり、アイドル状態後、別のイベントでプロセスが動作した場合でも、処理時間をアイドル時間分だけ間延びさせ、対応動作周波数ｆと対応動作電圧Ｖを低下させることにより省電力化を図ることができる。また、何らかの理由によりプロセスＤが実行されなかった場合でも、上述の第１のケースが実行されるので、更なる省電力化を期待できる。
【００７７】
次に、第３のケースについて説明する。
【００７８】
第３のケースでは、上記１つのイベントが実行されるときに、アイドル状態になる前に周期タイマ装置３４による割込みが１回発生した場合（ステップＳ１１−ＮＯ、Ｓ１３−ＹＥＳ、Ｓ１４−ＮＯ）であり、後述の第３負荷測定処理（ステップＳ４０）が実行される。
【００７９】
この場合、負荷測定部２２は、対応負荷測定時間ＴＥを周期タイマ装置３４に設定したときに、周期タイマ装置３４のカウント値によりカウント開始時間Ｔ１を取得する。その後、負荷測定部２２は、スケジューラ２１からアイドル状態の通知を受け取る前に、負荷測定時間ＴＥ経過後に周期タイマ装置３４から割込みの通知を受け取る。その後、負荷測定部２２は、スケジューラ２１からアイドル状態の通知を受け取り、周期タイマ装置３４のカウント値によりアイドル開始時間Ｔ２を取得する。
【００８０】
上述のように、対応負荷測定時間をＴＥとし、カウント開始時間をＴ１とし、アイドル開始時間をＴ２とし、現在の動作周波数として上記の対応動作周波数をｆとし、算出設定動作周波数ｆ”に対する調整用算出設定動作周波数をｆ”’とする。このとき、負荷測定部２２は、
ｆ”’＝（（Ｔ２＋ＴＭ−Ｔ１）／ＴＥ）×ｆ
により、調整用算出設定動作周波数ｆ”’を計算する。ここで、Ｔ１からＴ２までの時間を処理時間とし、Ｔ２からＴＥまでの時間をアイドル時間としたとき、ＴＭは、上記１つのイベントとその次のイベントとの間にアイドル時間として最低限必要な時間で、Ｔ２に比べて十分に小さく設定される。また、調整用算出設定動作周波数ｆ”’が最大動作周波数ｆｍａｘよりも大きい場合は、調整用算出設定動作周波数ｆ”’を最大動作周波数ｆｍａｘとする。
【００８１】
また、ＴＭを無視した場合、調整用算出設定動作周波数ｆ”’は、
ｆ”’＝（（Ｔ２−Ｔ１）／ＴＥ）×ｆ
により表される。
【００８２】
負荷測定部２２は、その調整用算出設定動作周波数ｆ”’を動作周波数判定部２３に通知し、動作周波数判定部２３は、負荷測定部２２からの調整用算出設定動作周波数ｆ”’を設定動作周波数ｆ’として、対応イベント識別子に対応付けて動作周波数設定テーブル２５に格納（更新）する。この設定動作周波数ｆ’は、上記１つのイベントが再度実行された場合、上記の対応動作周波数ｆとして利用される。
【００８３】
上記の第３負荷測定処理（ステップＳ４０）について具体的に説明する。例えば、図７Ａに示されるように、上記のｎを３とし、上記１つのイベントに対するｎ個の対応プロセスを１番目からｎ番目までこの順にプロセスＡ、Ｂ、Ｃとする。また、最大動作周波数ｆｍａｘを１００［ＭＨｚ］とし、対応動作周波数ｆを５０［ＭＨｚ］とし、対応動作周波数ｆにおいてＣＰＵ３０がプロセスＡ、Ｂ、Ｃを処理するときの処理時間をそれぞれ２、４、８［ｍｓ］とし、対応負荷測定時間ＴＥを１４［ｍｓ］とし、割り込みなどのＯＳ２０によるオーバーヘッドを４［ｍｓ］とする。
【００８４】
上記１つのイベントが実行される場合、図７Ａに示されるように、クロック制御装置３２と電圧制御装置３１は、それぞれ、対応動作周波数ｆとして５０［ＭＨｚ］とそれに対応する対応動作電圧ＶをＣＰＵ３０に供給し、スケジューラ２１は、上記１つのイベントに対するプロセスＡ、Ｂ、Ｃをこの順にＣＰＵ３０に割り当てる。この場合、Ｔ１＝０［ｓ］、Ｔ２＝１８［ｍｓ］（２＋４＋８＋４＝１８［ｍｓ］）、ＴＥ＝１４［ｍｓ］となるので、Ｔ１からＴ２までの処理時間は１８［ｍｓ］となる。また、ＴＭを０．２［ｍｓ］とすると、調整用算出設定動作周波数ｆ”’は、（（１８＋０．２−０）／１４）×５０［ＭＨｚ］となり、約６５［ＭＨｚ］となる。
【００８５】
次に、上記１つのイベントが再度実行された場合、図７Ｂに示されるように、クロック制御装置３２と電圧制御装置３１は、それぞれ、対応動作周波数ｆとして６５［ＭＨｚ］とそれに対応する対応動作電圧ＶとをＣＰＵ３０に供給し、スケジューラ２１は、上記１つのイベントに対するプロセスＡ、Ｂ、Ｃをこの順にＣＰＵ３０に割り当てる。この場合、ＣＰＵ３０は６５［ＭＨｚ］とそれに対応する対応動作電圧Ｖで動作し、そのときのプロセスＡ、Ｂ、Ｃの処理時間は１８［ｍｓ］から約１３．８５［ｍｓ］に縮まっている。このため、負荷測定時間ＴＥ内でプロセスＡ、Ｂ、Ｃの処理を完了している。
【００８６】
このように、本発明では、ＯＳ２０のオーバーヘッド等の他の要因が発生しても、プロセスＡ、Ｂ、Ｃの処理が負荷測定時間ＴＥ内で完了するように、柔軟に対処し、かつ省電力化を図ることができる。
【００８７】
次に、第４のケースについて説明する。
【００８８】
第４のケースでは、上記１つのイベントが実行されるときに、アイドル状態になる前に周期タイマ装置３４による割込みが２回以上発生した場合（ステップＳ１１−ＮＯ、Ｓ１３−ＹＥＳ、Ｓ１４−ＹＥＳ）であり、割込み処理（ステップＳ５０）が実行される。
【００８９】
この場合、負荷測定部２２は、対応負荷測定時間ＴＥを周期タイマ装置３４に設定したときに、周期タイマ装置３４のカウント値によりカウント開始時間Ｔ１を取得する。その後、負荷測定部２２は、スケジューラ２１からアイドル状態の通知を受け取る前に、負荷測定時間ＴＥ経過後に周期タイマ装置３４から割込みの通知を２回受け取る。この時は、複数イベントによる高負荷状態なので、プロセスＡ、Ｂ、Ｃの処理を早く終わらせる必要がある。そのために、負荷測定部２２は、最大動作周波数優先通知を動作周波数判定部２３に通知する。動作周波数判定部２３は、この最大動作周波数優先通知に応じて、最大動作電圧Ｖｍａｘ、最大動作周波数ｆｍａｘをＣＰＵ３０に供給する。このとき、ＣＰＵ３０は、最大動作周波数ｆｍａｘと最大動作電圧Ｖｍａｘで動作し、割込み制御装置３３は、ＣＰＵ３０に割込みを通知する。
【００９０】
上記のような場合は、多数のイベントにより多数のプロセスが動作している。このような時は高負荷状態なので、プロセスＡ、Ｂ、Ｃの処理を早期に終わらせる必要がある。そのためにＣＰＵ３０を最大動作周波数ｆｍａｘと最大動作電圧Ｖｍａｘで動作させる。このような場合には、省電力化を図ることは期待できないが、性能要求としてデータ処理装置の信頼性を満足させることはできる。次に動作した場合は、第１〜３のケースが実行されるときに省電力化を図ることができる。このため、性能要求を満たしつつ省電力化を図ることができる。
周期タイマ装置３４による割込みが２回発生する間は、ＣＰＵ３０が低速動作する可能性があるが、高機能ＯＳを採用するシステムでは、リアルタイムＯＳほど厳密な処理要求性能を満たす必要がないため問題とはならない。
【００９１】
次に、第５のケースについて説明する。
【００９２】
第５のケースでは、上記１つのイベントが実行されるときに、周辺装置３５による割込みが発生した場合（ステップＳ１１−ＮＯ、Ｓ１３−ＮＯ、Ｓ１５−ＹＥＳ）であり、上述の割込み処理（ステップＳ５０）が実行される。
【００９３】
割込みは非同期に発生するため、低周波数動作時でも発生する可能性がある。しかしシステム性能を劣化させないためには、割込み処理を高速に終わらせる必要がある。そこで、以下のような動作を行う。
割込み制御装置３３は、周辺装置３５からの割込みを電圧制御装置３１とクロック制御装置３２に通知する。電圧制御装置３１、クロック制御装置３２は、それぞれ、動作周波数判定部２３から通知される対応動作電圧Ｖ、対応動作周波数ｆを無視して、優先的に最大動作電圧Ｖｍａｘ、最大動作周波数ｆｍａｘをＣＰＵ３０に供給する。このとき、ＣＰＵ３０は最大動作周波数ｆｍａｘと最大動作電圧Ｖｍａｘで動作し、その後、割込み制御装置３３は、ＣＰＵ３０に割込みを通知する。
ＯＳ２０は、その発生した割込みに対応した処理を行う。ＯＳ２０は、割込みに対応した処理を終了した後、動作周波数判定部２３に割り込み発生前の対応動作周波数ｆと対応動作電圧Ｖに戻すように、電圧制御装置３１、クロック制御装置３２に通知を行う。
電圧制御装置３１、クロック制御装置３２は、それぞれ、動作周波数判定部２３から通知される対応動作電圧Ｖ、対応動作周波数ｆをＣＰＵ３０に供給する。ＣＰＵ３０は、割込み前の対応動作周波数ｆとそれに対応する対応動作電圧Ｖで動作する。
割込み発生時に、上記の割込処理を行うことにより、割込み性能を劣化せず、省電力化を実現できる。
【００９４】
以上の説明により、本発明のデータ処理装置では、高機能システムに適用可能であり、ＣＰＵの消費電力を低減することができる。
【００９５】
その理由として、第１に、本発明のデータ処理装置では、上述のように、ＯＳ２０は、動作周波数保存テーブル２５により、対応イベント識別子に対応する設定動作周波数ｆ’として対応設定動作周波数ｆ’を選択し、周波数・電圧変換テーブル２６により、対応設定動作周波数ｆ’に一致する対応動作周波数ｆと、対応動作周波数ｆに対応する対応動作電圧Ｖとを選択し、制御装置３６（電圧制御装置３１、クロック制御装置３２）に通知する。制御装置３６（電圧制御装置３１、クロック制御装置３２）は、対応動作周波数と対応動作電圧で動作するようにＣＰＵ３０を制御する。前述のように、高機能システムの場合には、ＯＳによるオーバーヘッドが大きく、一意でないため、プロセスの要求処理時間を予め見積もることが困難である。したがって、本発明のデータ処理装置では、ＯＳ２０は、ＣＰＵ３０が複数の対応プロセスを処理するときの処理時間に基づいて、算出設定動作周波数ｆ”を計算し、設定動作周波数ｆ’として動作周波数保存テーブル２５に格納（更新）する。このように、本発明のデータ処理装置では、高機能システムに適用可能である。
【００９６】
第２に、本発明のデータ処理装置では、上述のように、算出設定動作周波数ｆ”は、ＣＰＵ３０の消費電力を低減するための動作周波数を表している。この算出設定動作周波数ｆ”は、設定動作周波数ｆ’として動作周波数保存テーブル２５に更新され、設定動作周波数ｆ’は、上記１つのイベントが再度実行された場合、上記の対応動作周波数ｆとして利用される。周波数・電圧変換テーブル２６に格納された複数の動作周波数ｆと複数の動作電圧Ｖとは比例しているため、上記１つのイベントが再度実行されるときの対応動作周波数ｆ、対応動作電圧Ｖは、それぞれ、上記１つのイベントが再度実行されたときの対応動作周波数ｆ、対応動作電圧Ｖよりも低い。このため、本発明のデータ処理装置では、ＣＰＵ３０の消費電力を低減することができる。
【図面の簡単な説明】
【００９７】
【図１】本発明のデータ処理装置の構成を示すブロック図である。
【図２】図１の負荷測定周期時間テーブルを示す図である。
【図３】図１の動作周波数保存テーブルを示す図である。
【図４】図１の周波数・電圧変換テーブルを示す図である。
【図５Ａ】本発明のデータ処理装置の動作として第１負荷測定処理（Ｓ２０）を説明するための図であり、あるイベントによりプロセスＡ、Ｂ、Ｃを最大動作周波数で実行した場合のタイミングチャート図である。
【図５Ｂ】本発明のデータ処理装置の動作として第１負荷測定処理（Ｓ２０）を説明するための図であり、同イベントによりプロセスＡ、Ｂ、Ｃを設定動作周波数で実行した場合のタイムチャート図である。
【図６Ａ】本発明のデータ処理装置の動作として第２負荷測定処理（Ｓ３０）を説明するための図であり、あるイベントによりプロセスＡ、Ｂ、Ｃを最大動作周波数で実行した場合のタイミングチャート図である。
【図６Ｂ】本発明のデータ処理装置の動作として第２負荷測定処理（Ｓ３０）を説明するための図であり、同イベントによりプロセスＡ、Ｂ、Ｃを設定動作周波数で実行した場合のタイムチャート図である。
【図７Ａ】本発明のデータ処理装置の動作として第３負荷測定処理（Ｓ４０）を説明するための図であり、あるイベントによりプロセスＡ、Ｂ、Ｃを最大動作周波数で実行した場合のタイミングチャート図である。
【図７Ｂ】本発明のデータ処理装置の動作として第３負荷測定処理（Ｓ４０）を説明するための図であり、同イベントによりプロセスＡ、Ｂ、Ｃを設定動作周波数で実行した場合のタイムチャート図である。
【図８Ａ】本発明のデータ処理装置の動作を示すフローチャート図である。
【図８Ｂ】本発明のデータ処理装置の動作を示すフローチャート図である。
【符号の説明】
【００９８】
１０    プロセス群
２０    ＯＳ
２１    スケジューラ
２２    負荷測定部
２３    動作周波数判定部
２４    負荷測定周期時間テーブル
２５    動作周波数保存テーブル
２６    周波数・電圧変換テーブル
３０    ＣＰＵ
３１    電圧制御装置
３２    クロック制御装置
３３    割込み制御装置
３４    周期タイマ装置
３５    周辺装置
３６    制御装置
【図１】
2008107944.tif 000003
【図２】
2008107944.tif 000004
【図３】
2008107944.tif 000005
【図４】
2008107944.tif 000006
【図５Ａ】
2008107944.tif 000007
【図５Ｂ】
2008107944.tif 000008
【図６Ａ】
2008107944.tif 000009
【図６Ｂ】
2008107944.tif 000010
【図７Ａ】
2008107944.tif 000011
【図７Ｂ】
2008107944.tif 000012
【図８Ａ】
2008107944.tif 000013
【図８Ｂ】
2008107944.tif 000014