クロック周波数制御方法及びコンピュータプログラム
【課題】実行するアプリケーションプログラムの数、規模又は演算量等に応じて、処理装置のクロック周波数を適切に変更することができるクロック周波数制御方法及びコンピュータプログラムの提供。
【解決手段】CPU1にて実行する複数のアプリケーションプログラムAPと必要処理能力との対応をアプリケーションテーブルATに予め記憶しておくと共に、合計必要処理能力とクロック周波数との対応をクロック周波数テーブルCTに予め記憶しておく。制御プログラムCPは、複数のアプリケーションプログラムAPを実行する際にアプリケーションテーブルATから各アプリケーションプログラムAPの必要処理能力を取得して加算し、合計必要処理能力を算出し、クロック周波数テーブルCTからクロック周波数を決定して、クロック周波数の変更を行う。
【解決手段】CPU1にて実行する複数のアプリケーションプログラムAPと必要処理能力との対応をアプリケーションテーブルATに予め記憶しておくと共に、合計必要処理能力とクロック周波数との対応をクロック周波数テーブルCTに予め記憶しておく。制御プログラムCPは、複数のアプリケーションプログラムAPを実行する際にアプリケーションテーブルATから各アプリケーションプログラムAPの必要処理能力を取得して加算し、合計必要処理能力を算出し、クロック周波数テーブルCTからクロック周波数を決定して、クロック周波数の変更を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、実行するアプリケーションプログラムの数、規模又は演算量等に応じて、処理装置のクロック周波数を変更するクロック周波数制御方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
近年の電気機器にはCPU(Central Processing Unit)又はMPU(Micro Processing Unit)等の処理装置が搭載されて種々のアプリケーションプログラムが実行されている。また、電気機器の高性能化に伴って、1つの処理装置にて同時的に実行されるアプリケーションプログラムの数は増加している。実行するアプリケーションプログラムが高度なものであるほど、また、同時的に実行するプログラムが多いほどに、処理装置には高い処理能力が必要である。処理装置の処理能力を高める方法として、処理装置に供給されるクロックの周波数を高めることによって、単位時間あたりの演算量を増す方法がある。
【0003】
しかし、処理装置のクロック周波数を高めることにより、処理装置の消費電力が増大するという問題がある。例えば、高度なアプリケーションプログラムを複数同時的に実行可能なように処理装置のクロック周波数を高く設定した場合であっても、処理装置では常に高度なアプリケーションプログラムが複数同時的に実行されるわけではなく、状況によっては単純な1つのアプリケーションプログラムのみが実行されることもある。このような場合には、処理装置の処理能力が必要以上に高められ、電力を必要以上に消費する虞がある。このため、アプリケーションプログラムの規模及び実行数等に応じてクロック周波数を変更し、処理装置が最適な処理能力で処理を行うことが求められている。
【0004】
特許文献1においては、実行される割り込み又はアプリケーションに基づいてCPU及び他のシステムバスに可変のクロック周波数のクロック信号を供給する周波数シンセサイザを有し、実行されるべき所定のアプリケーションなど又はCPUの利用度等に基づいてクロック周波数を変更することができる自動CPU速度制御のための装置が提案されている。この装置の一実施例では、CPUがアイドルタスクを実行しているか否かに応じて低速モード又は高速モードにクロック周波数を変更することができ、割り込みの有無に応じてクロック周波数を変更することができる。また他の実施例では、CPUの使用レベルを動的にモニタし、CPUの使用レベルに応じてクロック周波数を変更することができる。更に他の実施例では、ワードプロセッサ又はボイスディクテーション等のアプリケーション毎に最適なクロック周波数を予め定めてテーブルに記憶しておき、アプリケーションを実行する際にテーブルに記憶された最適なクロック周波数に変更することができる。
【特許文献1】特表2002−533801号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1に記載の自動CPU速度制御のための装置は、アイドルタスクの実行の有無に応じてクロック周波数を低速モード又は高速モードに変更する構成の場合、アプリケーションが実行されているか否かによりクロック周波数が変更されるのみであり、単純なアプリケーションであっても高度なアプリケーションであっても高速モードで実行されるため、上述の問題を解決することはできない。
【0006】
また、モニタしたCPUの使用レベルに応じてクロック周波数を変更する構成の場合、CPUの使用レベルに応じて細かくクロック周波数を変更することができるため上述の問題を解決し得るが、CPUの使用レベルをモニタするためには過大なCPUリソースを消費するという問題がある。このため、PC(パーソナルコンピュータ)又はWS(ワークステーション)等の高級なシステムにてこの構成を実現することはできるが、電気機器に搭載された小規模なマイコンなどでこの構成を実現することは容易ではない。
【0007】
また、アプリケーション毎に最適なクロック周波数をテーブルに記憶しておき、アプリケーションを実行する際にテーブルに記憶された最適なクロック周波数に変更する構成の場合、アプリケーションの規模に応じて最適なクロック周波数に変更することができる。しかしながら、複数のアプリケーションを同時的に動作させる場合には、最適なクロック周波数に変更することができないという問題がある。例えば、各アプリケーションに最適なクロック周波数をそれぞれ比較して最大のクロック周波数に変更することができるが、単純なアプリケーションを多数動作させる場合には十分な処理能力が得られない虞がある。
【0008】
この構成において、テーブルに予め記憶されるアプリケーション毎のクロック周波数は、CPUの構成及び性能等に応じて決定されるハードウェアに固有の値であるため、同じアプリケーションを別の構成のCPUにて実行する場合には、別のCPUに最適なクロック周波数をアプリケーション毎に新たに算出して新たなテーブルを作成しなければならず、汎用性が低いという問題もある。
【0009】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、複数のアプリケーションプログラムと実行に要する必要処理能力との対応を予め記憶しておき、同時的に実行するアプリケーションプログラムの各必要処理能力を基に合計必要処理能力を算出し、この合計必要処理能力に応じてクロック周波数を決定して変更することにより、複数のアプリケーションプログラムを実行する場合であっても最適なクロック周波数で処理装置(コンピュータ)を動作させることができるクロック周波数制御方法及びコンピュータプログラムを提供することにある。
【0010】
また本発明の他の目的とするところは、合計必要処理能力とクロック周波数との対応を予め記憶しておき、同時的に実行するアプリケーションプログラムの各必要処理能力を基に算出した合計必要処理能力に対応するクロック周波数を取得することにより、アプリケーション毎にクロック周波数を記憶しておく必要がなく、汎用性の高いクロック周波数制御方法を提供することにある。
【0011】
また本発明の他の目的とするところは、処理装置にて第1の制御プログラムを実行し、第1の制御プログラム上で第2の制御プログラムを実行し、第2の制御プログラム上でアプリケーションプログラムを実行し、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を基に合計必要処理能力を算出することにより、実行するアプリケーションの追加などに容易に対応できる汎用性の高いクロック周波数制御方法を提供することにある。
【0012】
また本発明の他の目的とするところは、実行するアプリケーションプログラムに応じて第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を生成することにより、実行するアプリケーションプログラムを追加した場合などに、第2の制御プログラムによって対応を自動的に生成することができるクロック周波数制御方法を提供することにある。
【0013】
また本発明の他の目的とするところは、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を基に処理装置のクロック周波数を決定して変更することにより、処理装置の構成の変更に容易に対応できる汎用性の高いクロック周波数制御方法を提供することにある。
【0014】
また本発明の他の目的とするところは、処理装置の規模、処理能力及び構成等に応じて、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を生成する構成とすることにより、処理装置の構成が変更された場合などに、第2の制御プログラムによって対応を自動的に生成することができるクロック周波数制御方法を提供することにある。
【課題を解決するための手段】
【0015】
第1発明に係るクロック周波数制御方法は、複数のアプリケーションプログラムを実行する処理装置のクロック周波数の変更を制御するクロック周波数制御方法において、複数のアプリケーションプログラムと、各アプリケーションプログラムの実行に要する必要処理能力との対応を記憶しておき、前記処理装置にて実行する一又は複数のアプリケーションプログラムの各必要処理能力を基に、前記一又は複数のアプリケーションプログラムの実行に要する合計必要処理能力を算出し、算出した合計必要処理能力に応じてクロック周波数を決定し、決定したクロック周波数に前記処理装置のクロック周波数を変更することを特徴とする。
【0016】
また、第2発明に係るクロック周波数制御方法は、合計必要処理能力とクロック周波数との対応を記憶しておき、算出した合計必要処理能力を基に対応するクロック周波数を取得して、変更するクロック周波数を決定することを特徴とする。
【0017】
また、第3発明に係るクロック周波数制御方法は、前記処理装置の構成に応じた第1の制御プログラム、及び前記アプリケーションプログラムを実行する第2の制御プログラムを用いて、前記処理装置にて前記第1の制御プログラムを実行し、該第1の制御プログラム上で前記第2の制御プログラムを実行し、該第2の制御プログラム上で前記アプリケーションプログラムを実行し、前記第2の制御プログラムにて、アプリケーションプログラムと必要処理能力との対応を基に、合計必要処理能力の算出を行うことを特徴とする。
【0018】
また、第4発明に係るクロック周波数制御方法は、前記処理装置にて実行するアプリケーションプログラムに応じて、前記第2の制御プログラムにて、アプリケーションプログラムと必要処理能力との対応を生成することを特徴とする。
【0019】
また、第5発明に係るクロック周波数制御方法は、前記第2の制御プログラムにて、合計必要処理能力とクロック周波数との対応を基に、変更するクロック周波数の決定を行うことを特徴とする。
【0020】
また、第6発明に係るクロック周波数制御方法は、アプリケーションプログラムを実行する処理装置に応じて、前記第2の制御プログラムにて、合計必要処理能力とクロック周波数との対応を生成することを特徴とする。
【0021】
また、第7発明に係るコンピュータプログラムは、コンピュータにクロック周波数の変更を制御させるコンピュータプログラムにおいて、コンピュータに、予め記憶された複数のアプリケーションプログラムと各アプリケーションプログラムの実行に要する必要処理能力との対応から、前記コンピュータにて実行する一又は複数のアプリケーションプログラムの各必要処理能力を取得させ、取得した各必要処理能力を基に、前記一又は複数のアプリケーションプログラムの実行に要する合計必要処理能力を算出させ、算出した合計必要処理能力に応じてクロック周波数を決定させ、前記コンピュータのクロック周波数を決定したクロック周波数に変更させることを特徴とする。
【0022】
本発明においては、処理装置にて実行する複数のアプリケーションプログラムと実行に要する必要処理能力との対応を、例えばテーブルなどとして予め記憶しておく。処理装置の構成により決定されるクロック周波数ではなく、処理装置の構成に関係のない必要処理能力を各アプリケーションプログラムについて記憶しておくことによって、処理装置の構成を変更した場合であってもアプリケーションプログラムと必要処理能力との対応を変更する必要はない。実行するアプリケーションプログラムを追加した場合であっても、このアプリケーションプログラムに対する必要処理能力を対応に追加するのみでよい。
処理装置のクロック周波数を変更する場合には、同時的に実行するアプリケーションプログラムの各必要処理能力を基に合計必要処理能力を算出し、この合計必要処理能力に応じてクロック周波数を決定する。例えば、各アプリケーションプログラムの必要能力を数値として設定した場合には、加算などの簡単な四則演算で合計必要処理能力を算出すればよい。アプリケーションプログラム毎ではなく、合計必要処理能力に対してクロック周波数を決定するため、決定方法は実行するアプリケーションプログラムの追加などにより変更する必要はない。クロック周波数を変更する際に、予め記憶した対応を調べて簡単な演算により変更するクロック周波数を決定できるため、処理装置のリソースを過大に消費することはなく、小規模な処理装置であってもこの方法でクロック周波数の変更を行うことができる。
【0023】
また、本発明においては、合計必要処理能力とクロック周波数との対応を、例えばテーブルなどとして予め記憶しておく。アプリケーションプログラム毎ではなく、合計必要処理能力に対するクロック周波数を記憶しておくのみであるため、実行するアプリケーションプログラムを追加した場合であっても、対応を変更する必要はない。
【0024】
また、本発明においては、処理装置にて第1の制御プログラムを実行し、第1の制御プログラム上で第2の制御プログラムを実行し、第2の制御プログラム上でアプリケーションプログラムを実行する。プログラムの実行を階層構造とすることにより、例えば処理装置の構成を変更した場合には第1の制御プログラムのみを変更すればよいため、汎用性が高い。また、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を基に合計必要処理能力を算出する構成とすることにより、実行するアプリケーションプログラムを追加した場合などには、処理装置の構成に関係のない第2の制御プログラムにてアプリケーションプログラムと必要処理能力との対応を追加すればよく、第1の制御プログラムには影響しないため、汎用性が高い。
【0025】
また、本発明においては、実行するアプリケーションプログラムを追加した場合などに、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を生成する。例えば、アプリケーションプログラムに予め必要処理能力又は演算量等の情報をデータとして保持させておき、このアプリケーションプログラムが処理装置にインストールされるなどして追加された場合に、第2の制御プログラムが追加されたアプリケーションプログラムからデータを読み出して、テーブルなどとして記憶されたアプリケーションプログラムと必要処理能力との対応を追加又は修正することができる。
【0026】
また、本発明においては、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を基に処理装置のクロック周波数を決定する。第1の制御プログラムにクロック周波数を決定する機能を備える必要がないため、処理装置の構成が変更された場合に、第1の制御プログラムの変更が行い易い。第2の制御プログラムは、合計必要処理能力とクロック周波数との対応を変更するのみでよい。
【0027】
また、本発明においては、処理装置の構成を変更した場合などに、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を生成する。例えば、第2の制御プログラムは、処理装置から直接的に又は第1の制御プログラムから間接的に、処理装置の規模及び処理能力等の情報を取得することによって、テーブルなどとして記憶された計必要処理能力とクロック周波数との対応を修正又は変更することができる。
【発明の効果】
【0028】
第1発明及び第7発明による場合は、アプリケーションプログラムと必要処理能力との対応を予め記憶しておき、同時的に実行するアプリケーションプログラムの各必要処理能力を基に合計必要処理能力を算出し、この合計必要処理能力に応じてクロック周波数を決定して変更することにより、複数のアプリケーションプログラムを実行する場合であっても最適なクロック周波数で処理装置を動作させることができ、小規模な処理装置であってもこの方法でクロック周波数の変更を行うことができる。また、処理装置の構成に関係のない必要処理能力を各アプリケーションプログラムについて記憶しておくことによって、処理装置の構成を変更した場合であってもアプリケーションプログラムと必要処理能力との対応を変更する必要はないため、汎用性が高い。よって、本発明のクロック周波数制御方法及び制御プログラムを利用することによって、処理装置の構成又はアプリケーションプログラムの構成等に関わらず、十分な処理能力でアプリケーションプログラムを実行できると共に、クロック周波数の変更による処理装置の消費電力の低減を十分に実現できる。
【0029】
また、第2発明による場合は、合計必要処理能力とクロック周波数との対応を予め記憶しておき、同時的に実行するアプリケーションプログラムの各必要処理能力を基に算出した合計必要処理能力に対応するクロック周波数を取得することにより、アプリケーション毎にクロック周波数を記憶しておく必要がなく、実行するアプリケーションプログラムを追加した場合であっても記憶した対応を変更する必要はないため、汎用性の高いクロック周波数制御方法を実現することができる。
【0030】
また、第3発明による場合は、処理装置にて第1の制御プログラムを実行し、第1の制御プログラム上で第2の制御プログラムを実行し、第2の制御プログラム上でアプリケーションプログラムを実行し、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を基に合計必要処理能力を算出することにより、例えば処理装置の構成を変更した場合には第1の制御プログラムのみを変更すればよく、実行するアプリケーションの追加などに容易に対応できるため、より汎用性の高いクロック周波数制御方法を実現することができる。
【0031】
また、第4発明による場合は、実行するアプリケーションプログラムに応じて第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を生成することにより、アプリケーションプログラムが処理装置にインストールされるなどして追加された場合に、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を自動的に生成するため、アプリケーションプログラムと必要処理能力との対応を別途変更する必要がなく、利便性の高いクロック周波数制御方法を実現することができる。
【0032】
また、第5発明による場合は、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を基に処理装置のクロック周波数を決定して変更することにより、処理装置の構成が変更された場合に、第1の制御プログラムの変更が行い易く、第2の制御プログラムは合計必要処理能力とクロック周波数との対応を変更するのみでよいため、処理装置の構成の変更に容易に対応できる。よって、より汎用性の高いクロック周波数制御方法を実現することができる。
【0033】
また、第6発明による場合は、処理装置の規模、処理能力及び構成等に応じて、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を生成する構成とすることにより、処理装置の構成を変更した場合に、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を自動的に生成するため、合計必要処理能力とクロック周波数との対応を別途変更する必要がなく、より利便性の高いクロック周波数制御方法を実現することができる。
【発明を実施するための最良の形態】
【0034】
(実施の形態1)
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。図1は、本発明に係るクロック周波数制御方法を適用したコンピュータシステムの一構成例を示すブロック図である。図において1はコンピュータシステムの中核をなすCPUであり、制御プログラム及びアプリケーションプログラム等の種々のプログラムを実行することにより種々の処理を行う処理装置である。また、図示のコンピュータシステムは、CPU1にバスを介して接続される主記憶部2、入力部3、出力部4及び補助記憶部5等を備えると共に、CPU1及びその他の各部へ供給されるクロック信号を発生するクロック発生部6を備えている(ただし、図1においてはクロック発生部6からCPU1へのクロック信号の供給経路のみを図示し、その他の各部へのクロック信号の供給経路は図示を省略してある)。
【0035】
主記憶部2は、SRAM(Static Random Access Memory)又はDRAM(Dynamic Random Access Memory)等のデータ書き換え可能且つ高速アクセス可能なメモリ素子で構成されており、CPU1にて実行されるコンピュータプログラム及び各種のデータ等をロードしてCPU1がアクセスする、又はCPU1の演算処理の過程で発生したデータを一時的に記憶する等の目的で利用される。
【0036】
入力部3は、外部からのデータ入力を受け付けるものである。例えば入力部3は、キーボード及びマウス等により構成され、ユーザからのデータ入力を受け付けてCPU1へ通知する。また例えば、小規模な電気機器などの場合には、複数のボタン及びスイッチ、又はタッチパネル等により入力部3は構成されてユーザからのデータ入力を受け付ける。更に、制御機器などの場合には、入力部3はユーザからのデータ入力を受け付けるのではなく、各種のセンサなどの検知結果をデータ入力として受け付ける構成であってもよい。
【0037】
出力部4は、外部へのデータ出力を行うものであり、例えば液晶ディスプレイなどの表示装置により構成され、CPU1からの表示命令に従って文字、写真又は絵等の表示出力するようにしてある。また、例えば出力部4は、文字、写真又は絵等を印刷出力するレーザプリンタ又はインクジェットプリンタ等の印刷装置で構成されるものであってもよい。更に、制御機器などの場合には、制御対象の機器へ制御信号を出力する構成であってもよい。
【0038】
補助記憶部5は、ハードディスクなどの磁気ディスク装置又はフラッシュメモリなどの不揮発性のメモリ素子で構成されている。また、補助記憶部5は、メモリカード、光ディスク又は磁気ディスク等の記憶媒体と、これらの記憶媒体を装着してデータの読み書きを行うドライブ装置とで構成されていてもよい。補助記憶部5には、CPU1にて実行される制御プログラムCP及びアプリケーションプログラムAP等の各種のプログラム、並びにこれらのプログラムを実行する際に利用される各種のデータ等が多数インストールされて予め記憶してある。また、本発明に係るクロック周波数制御方法を適用したコンピュータシステムにおいては、補助記憶部5にアプリケーションテーブルAT及びクロック周波数テーブルCTがデータとして記憶してある。これらのテーブルの詳細は後述するが、アプリケーションテーブルATはCPU1にて実行される各アプリケーションプログラムAPについて必要な処理能力をそれぞれ記憶するテーブルであり、クロック周波数テーブルCTはクロック発生部6が発生するクロック信号のクロック周波数を決定するためのテーブルである。
【0039】
クロック発生部6は、水晶振動子若しくはセラミック振動子等を利用した固体振動子発振回路、又はリングオシレータ等のように所定周波数の発振信号を出力する発振回路と、この発振回路からの発振信号を分周して出力する分周回路とを備えている。本システムのクロック発生部6は、CPU1から与えられる命令に応じて出力するクロック信号のクロック周波数を変更することができるようにしてある。クロック周波数の変更は、例えば上述の分周回路による発振信号の分周数を変更することにより行うことができる。
【0040】
図2は、CPU1にて実行されるプログラムの階層構造を説明するための模式図である。プログラムの実行は、補助記憶部5に記憶された制御プログラムCP及びアプリケーションプログラムAP等を主記憶部2に読み出し、CPU1が主記憶部2からプログラムのコードを読み出すことにより行われる。CPU1で実行されるプログラムは、CPU1上で実行される制御プログラムCPと、この制御プログラムCP上で実行される複数のアプリケーションプログラムAP1〜AP3によるアプリケーション層との大きく2つの階層に分類することができる。また、制御プログラムCPは、例えばOS(オペレーティングシステム)又はインタープリタ等のプログラムであり、本発明の制御プログラムCPは、CPU1上で実行される抽象化層の制御プログラム(第1の制御プログラム)と、この抽象化層の制御プログラム上で実行されるプラットホーム層の制御プログラム(第2の制御プログラム)との2つの階層に分類することができる。
【0041】
抽象化層の制御プログラムは、下層のCPU1及びその他のハードウェアの構成(アーキテクチャ)が異なる場合であっても、上層のプログラムに対して、ハードウェアの構成を抽象化し、共通の動作環境を与えるためのプログラムである。このため、抽象化層の制御プログラムは、特にCPU1のハードウェア構成に依存するものであり、異なるCPU1に対しては異なる抽象化層の制御プログラムを用いる。
【0042】
プラットホーム層の制御プログラムは、上層のアプリケーション層にて実行される複数のアプリケーションプログラムAP1〜AP3のスケジューリング及びリソース管理等の処理を行うプログラムである。また、プラットホーム層の制御プログラムは、抽象化層の制御プログラム上で実行されるため、CPU1のハードウェア構成に依存せず、異なるCPU1に対しても同じプラットホーム層の制御プログラムを用いることができる。更に、本発明のプラットホーム層の制御プログラムは、上述のアプリケーションテーブルAT及びクロック周波数テーブルCTを用いて、クロック発生部6が発生するクロック信号のクロック周波数を変更する処理を行うようにしてある。
【0043】
アプリケーションプログラムAP1〜AP3は、システムがPC又はWS等の場合には、例えばワープロ、表計算又は画像編集等のプログラムである。また、システムが車輌などに搭載された機器の制御を行う制御システムの場合には、例えばドアの施錠/開錠、ヘッドランプ若しくはルームランプ等の点灯/消灯の制御、又はカーナビゲーション装置若しくはオーディオ装置等の動作制御等を行うプログラムである。これらのアプリケーションプログラムAP1〜AP3は、プラットホーム層の制御プログラム上で複数を同時的に実行することができるようにしてある。
【0044】
図3は、アプリケーションテーブルAT及びクロック周波数テーブルCTの一例を示す模式図である。アプリケーションテーブルAT及びクロック周波数テーブルCTは、補助記憶部5に予め記憶してあり、主記憶部2に読み出された後、プラットホーム層の制御プログラムがクロック周波数の変更を行う際に利用される。アプリケーションテーブルATは、CPU1にて実行され得るアプリケーションプログラムAP1〜AP3、即ち補助記憶部5にインストールされたアプリケーションプログラムAP1〜AP3のそれぞれについて、要求する処理能力を数値化した必要処理能力が対応付けて記憶してある(図3(a)参照)。図示の例では、アプリケーションプログラムAP1の必要処理能力は1であり、アプリケーションプログラムAP2の必要処理能力は10であり、アプリケーションプログラムAP3の必要処理能力は20であるため、アプリケーションプログラムAP3が最も高度な処理を行うものと判断できる。
【0045】
なお、アプリケーションテーブルATは、図1に示すコンピュータシステムの設計者が予め作成して補助記憶部5に記憶しておく構成としてもよく、アプリケーションプログラムAP1〜AP3の設計者がそれぞれ必要処理能力を設定して各アプリケーションプログラムにデータとして付与しておき、プラットホーム層の制御プログラムがこのデータを読み出してアプリケーションテーブルATを自動的に作成する構成としてもよい。
【0046】
クロック周波数テーブルCTは、同時的に実行される複数のアプリケーションプログラムAP1〜AP3の必要処理能力の合計値である合計必要処理能力と、この値に対して最適なクロック周波数とが対応付けて記憶してある(図3(b)参照)。本実施例において合計必要処理能力は、アプリケーションテーブルATの各アプリケーションプログラムAP1〜AP3の必要処理能力を単純に加算した値(例えば、アプリケーションプログラムAP1〜AP3の3つを同時的に実行する場合は合計必要処理能力は1+10+20=31であり、アプリケーションプログラムAP1及びAP2の2つを同時的に実行する場合は合計必要処理能力は1+10=11である)とするが、これに限るものではなく、例えばアプリケーションプログラムAP1〜AP3を重み付けする計数と各必要処理能力とを乗算した後に加算して合計必要処理能力を算出するなどの構成としてもよく、その他の方法で算出する構成としてもよい。
【0047】
また、クロック周波数テーブルCTに記憶されるクロック周波数は、CPU1及びクロック発生部6等の構成に依存する。図示の例は、クロック発生部6が”低速”、”中速”及び”高速”の3段階でクロック信号の周波数を変化させることができる場合であり、合計必要処理能力が1〜10の場合にクロック周波数が”低速”に設定され、合計必要処理能力が11〜20の場合にクロック周波数が”中速”に設定され、合計必要処理能力が21以上の場合にクロック周波数が”高速”に設定されるようにしてある。なお、クロック周波数テーブルCTは、コンピュータシステムの設計者又はCPU1の設計者等が予め作成して補助記憶部5に記憶しておく構成としてもよく、プラットホーム層の制御プログラムがCPU1又は抽象化層の制御プログラム等からCPU1の処理能力に係る情報を取得してクロック周波数テーブルCTを自動的に作成する構成としてもよい。
【0048】
図4は、アプリケーションプログラムAP1〜AP3の実行とクロック周波数の変更との一例を示すタイミングチャートである。例えば、時刻t0においてアプリケーションプログラムAP1及びAP2をCPU1にて同時的に実行する場合、プラットホーム層の制御プログラムは、まずアプリケーションテーブルATからアプリケーションプログラムAP1の必要処理能力”1”とアプリケーションプログラムAP2の必要処理能力”10”とを取得し、これらを加算して合計必要処理能力”11”を算出する。次いで、プラットホーム層の制御プログラムは、クロック周波数テーブルCTから合計必要処理能力”11”に対応するクロック周波数”中速”を取得するため、クロック発生部6が出力するクロック信号の周波数を”中速”に変更する。
【0049】
また、時刻t1において更にアプリケーションプログラムAP3を同時的に実行する場合、プラットホーム層の制御プログラムは、アプリケーションテーブルATを基に合計必要処理能力”31”を算出し、クロック周波数テーブルCTからクロック周波数”高速”を取得するため、クロック発生部6が出力するクロック信号の周波数を”高速”に変更する。以下、プラットホーム層の制御プログラムは同様の処理を繰り返し行い、例えばアプリケーションプログラムAP1のみが実行される期間(t3〜t4、t5〜t6、t7〜t8)はクロック周波数が”低速”に設定され、アプリケーションプログラムAP1及びAP2が同時的に実行される期間(t0〜t1、t2〜t3、t4〜t5、t8〜t9)はクロック周波数が”中速”に設定され、アプリケーションプログラムAP1及びAP3が同時的に実行される期間(t6〜t7)及びアプリケーションプログラムAP1〜AP3が同時的に実行される期間(t1〜t2)はクロック周波数が”高速”に設定される。
【0050】
図5は、プラットホーム層の制御プログラムが行うクロック周波数変更処理の手順を示すフローチャートである。クロック周波数変更処理において、プラットホーム層の制御プログラムは、CPU1にて実行するアプリケーションプログラムAPの実行数に変化があるか否かを調べ(ステップS1)、実行数に変化がない場合には(S1:NO)、実行数が変化するまで待機する。アプリケーションプログラムAPの実行数に変化がある場合(S1:YES)、プラットホーム層の制御プログラムは、補助記憶部5又は主記憶部2からアプリケーションテーブルATを読み出して(ステップS2)、実行するアプリケーションAPの必要処理能力をアプリケーションテーブルATから取得する(ステップS3)。
【0051】
次いで、プラットホーム層の制御プログラムは、取得した各必要処理能力を加算することによって合計必要処理能力を算出し(ステップS4)、補助記憶部5又は主記憶部2からクロック周波数テーブルCTを読み出して(ステップS5)、算出した合計必要処理能力に対応するクロック周波数をクロック周波数テーブルCTから取得することによって、変更するクロック周波数を決定する(ステップS6)。その後、プラットホーム層の制御プログラムは、クロック発生部6が出力するクロック信号の周波数を決定したクロック周波数に変更して(ステップS7)、処理を終了する。
【0052】
以上の構成のクロック周波数制御方法を適用したコンピュータシステムにおいては、アプリケーションプログラムAPと必要処理能力との対応を予めアプリケーションテーブルATに記憶しておくと共に、合計必要処理能力とクロック周波数との対応を予めクロック周波数テーブルCTに記憶しておくことによって、プラットホーム層の制御プログラムが簡単な演算により合計必要処理能力を算出してCPU1のクロック周波数を決定することができるため、小規模又は安価なCPU1であってもクロック周波数の変更処理が大きな負荷となることはない。よって、多数のアプリケーションプログラムAPを同時的に実行するシステムであっても、適切なクロック周波数にてCPU1が処理を行うことができ、十分な処理能力と十分な低消費電力化とを実現することができる。
【0053】
また、制御プログラムCPをプラットホーム層の制御プログラム及び抽象化層の制御プログラムの2階層に分けると共に、アプリケーションテーブルATを用いた合計必要処理能力の算出及びクロック周波数テーブルCTを用いたクロック周波数の決定等の処理をプラットホーム層の制御プログラムが行う構成とすることによって、CPU1及びその他のハードウェア構成を変更した場合には抽象化層の制御プログラムのみを変更すればよく、プラットホーム層の制御プログラムを変更する必要はないため、制御プログラムCPの汎用性を高めることができる。
【0054】
また、アプリケーションテーブルATは、CPU1及びその他のハードウェア構成に関係のない必要処理能力が各アプリケーションに対応付けて記憶してあるため、CPU1及びその他のハードウェアの構成が変更された場合であっても、アプリケーションテーブルATを変更する必要はなく、汎用性が高い。また、クロック周波数テーブルCTは、合計必要処理能力とクロック周波数との対応が記憶してあり、アプリケーションプログラムAP毎のクロック周波数を記憶しておく必要がないため、新たなアプリケーションプログラムAPがインストールされた場合であっても、クロック周波数テーブルCTを変更する必要がなく、汎用性が高い。よって、本発明のクロック周波数制御方法は汎用性が高く、様々なシステムに適用することができ、CPU1及びその他のハードウェア構成又はアプリケーションプログラムAPの構成に関わらず、十分な処理能力でアプリケーションプログラムAPを実行できると共に、クロック周波数の変更による処理装置の消費電力の低減を十分に実現できる。
【0055】
なお、本実施の形態においては、3つのアプリケーションプログラムAP1〜AP3をCPU1にて実行する構成としたが、これに限るものではなく、2つ以下又は4つ以上のアプリケーションプログラムAPを同時的に実行する構成としてもよい。また、図3のアプリケーションテーブルAT及びクロック周波数テーブルCTに示した値は一例であってこれに限るものではなく、同様に図4に示したタイミングチャートは一例であってこれに限るものではない。更には、図1に示したコンピュータシステムは一例であってこれに限るものではなく、本発明は種々のシステムに適用することができる。
【0056】
(実施の形態2)
実施の形態2に係るクロック周波数制御方法は、実施の形態1に係るクロック周波数制御方法にアプリケーションテーブルATを自動生成する方法を追加したものである。図6は、図2に示した階層構造において新たなアプリケーションプログラムAP4を追加した構成を示す模式図である。アプリケーションプログラムAP4の追加は、図1に示すコンピュータシステムの補助記憶部5にアプリケーションプログラムAP4をインストールすることによって行われる。よって、アプリケーション層にはアプリケーションプログラムAP4が追加されるため、プラットホーム層の制御プログラムはアプリケーションテーブルATを変更する必要がある。クロック周波数テーブルCTを変更する必要はない。
【0057】
図7は、変更されたアプリケーションテーブルATの一例を示す模式図であり、図3(a)に示したアプリケーションテーブルATに、追加されたアプリケーションプログラムAP4に係る項目が追加されている。図示の例では、アプリケーションプログラムAP4の必要処理能力は”10”である。アプリケーションテーブルATの変更はプラットホーム層の制御プログラムが行うが、プラットホーム層の制御プログラムが必要処理能力を取得することができるように、各アプリケーションプログラムAP1〜AP4には必要処理能力に係るデータが予め付与してある。このデータは、例えば各アプリケーションプログラムAP1〜AP4の設計者が予め付与しておけばよい。よって、プラットホーム層の制御プログラムは、新たなアプリケーションプログラムAP4がインストールされた場合には、このアプリケーションプログラムAP4から必要処理能力に係るデータを取得してアプリケーションテーブルATを変更することができる。
【0058】
図8は、アプリケーションプログラムAP1〜AP4の実行とクロック周波数の変更との一例を示すタイミングチャートである。図示の例において、アプリケーションプログラムAP1のみが実行される期間(t3〜t4、t6〜t7、t8〜t9)はクロック周波数が”低速”に設定される。アプリケーションプログラムAP1及びAP2が同時的に実行される期間(t0〜t1、t2〜t3、t5〜t6、t10〜t11)及びアプリケーションプログラムAP1及びAP4が同時的に実行される期間(t4〜t5)はクロック周波数が”中速”に設定される。アプリケーションプログラムAP1及びAP3が同時的に実行される期間(t7〜t8)、アプリケーションプログラムAP1〜AP3が同時的に実行される期間(t1〜t2)、及びアプリケーションプログラムAP1、AP2、AP4が同時的に実行される期間(t9〜t10)はクロック周波数が”高速”に設定される。このように、アプリケーションプログラムAP4が追加されたことによって、アプリケーションプログラムAP3が実行されない場合であっても、アプリケーションプログラムAP1、AP2、AP4の3つが実行される場合であれば、クロック周波数は”高速”に設定される。
【0059】
図9は、プラットホーム層の制御プログラムが行うアプリケーションテーブルATの作成処理の手順を示すフローチャートである。アプリケーションテーブルATの作成処理において、プラットホーム層の制御プログラムは、アプリケーションプログラムAPが補助記憶部5に新たにインストールされたか否かを調べ(ステップS21)、インストールされていない場合には(S21:NO)、新たなアプリケーションプログラムAPがインストールされるまで待機する。
【0060】
新たなアプリケーションプログラムAPがインストールされた場合(S21:YES)、プラットホーム層の制御プログラムは、インストールされたアプリケーションプログラムAPから必要処理能力を取得し(ステップS22)、補助記憶部5からアプリケーションテーブルATを読み出して(ステップS23)、インストールされたアプリケーションプログラムAPについての必要処理能力を追加してアプリケーションテーブルATを更新する(ステップS24)。その後、プラットホーム層の制御プログラムは更新したアプリケーションテーブルATを補助記憶部5に上書きして保存し(ステップS25)、アプリケーションテーブルATの作成処理を終了する。
【0061】
以上の実施の形態2のクロック周波数制御方法を適用したコンピュータシステムにおいては、アプリケーションプログラムが補助記憶部5にインストールされて追加された場合に、プラットホーム層の制御プログラムが自動的にアプリケーションテーブルATを変更するため、コンピュータシステムを利用するユーザなどがアプリケーションテーブルATの変更を行う必要がない。よって、コンピュータシステムの利便性を高めることができる。
【0062】
(実施の形態3)
実施の形態3に係るクロック周波数制御方法は、実施の形態1に係るクロック周波数制御方法にクロック周波数テーブルCTを自動生成する方法を追加したものである。図10は、図2に示した階層構造においてCPU1を新たなCPU1aに変更した構成を示す模式図であり、(a)に変更前の構成を示し、(b)に変更後の構成を示してある。例えばCPU1のグレードアップなどを目的としてコンピュータシステムのCPU1を変更する場合、CPU1の構成に依存する抽象化層の制御プログラム及びクロック周波数テーブルCTを新たなCPU1aに適するよう変更する必要がある。CPU1の構成に依存しないプラットホーム層の制御プログラム及びアプリケーションテーブルATを変更する必要はない。
【0063】
図11は、変更されたクロック周波数テーブルCTの一例を示す模式図であり、(a)に変更前のクロック周波数テーブルCTを示し、(b)に変更後のクロック周波数テーブルCTを示してある。図示の例では、CPU1からCPU1aにグレードアップすることによって処理能力が増し、合計必要処理能力が1〜20の場合にクロック周波数が”低速”に設定され、合計必要処理能力が21〜40の場合にクロック周波数が”中速”に設定され、合計必要処理能力が41以上の場合にクロック周波数が”高速”に設定されるようにしてある。
【0064】
クロック周波数テーブルCTの変更はプラットホーム層の制御プログラムが行うが、プラットホーム層の制御プログラムはCPU1a又は変更された抽象化層の制御プログラムから、CPU1aの処理能力に関する情報を取得するようにしてある。処理能力に関する情報は、例えばCPU1aが1クロック当たりに処理できるデータ量、平行して処理することができる命令数、又はCPU1aがパイプライン処理を行う場合にはパイプライン数等の情報であり、プラットホーム層の制御プログラムはこれらの情報を基にCPU1aの処理能力を判断し、合計必要処理能力とクロック周波数との対応を決定することができる。これらの処理能力に関する情報は、CPU1aの設計者が予めCPU1aから直接的に取得可能なようにCPU1aに保持させる構成であってもよく、CPU1a用の抽象化層の制御プログラムが保持する構成であってもよい。
【0065】
図12は、変更されたクロック周波数テーブルCTを用いた場合のアプリケーションプログラムAP1〜AP3の実行とクロック周波数の変更との一例を示すタイミングチャートである。図示の例において、アプリケーションプログラムAP1のみが実行される期間(t3〜t4、t5〜t6、t7〜t8)、並びにアプリケーションプログラムAP1及びAP2が同時的に実行される期間(t0〜t1、t2〜t3、t4〜t5、t8〜t9)は、クロック周波数が”低速”に設定される。アプリケーションプログラムAP1〜AP3が同時的に実行される期間(t1〜t2)、並びにアプリケーションプログラムAP1及びAP3が同時的に実行される期間(t6〜t7)は、クロック周波数が”中速”に設定される。また、クロック周波数が”高速”に設定されることはない。これは、CPU1aが十分に高い処理能力を有しているため、クロック周波数は”中速”で十分で有り、更に多くのアプリケーションプログラムAPを同時的に実行することができることを示している。
【0066】
図13は、プラットホーム層の制御プログラムが行うクロック周波数テーブルCTの作成処理の手順を示すフローチャートである。クロック周波数テーブルCTの作成処理において、プラットホーム層の制御プログラムは、まず、コンピュータシステムのCPU1が変更されたか否かを調べる(ステップS41)。プラットホーム層の制御プログラムは、例えばコンピュータシステムの電源投入後に始めて実行された場合に、CPU1又は抽象化層の制御プログラムのバージョン情報などを調べるようにしてあり、これによりCPU1が変更されたか否かを知ることができるようにしてある。CPU1が変更されていない場合(S41:NO)、クロック周波数テーブルCTを作成する必要はないため、プラットホーム層の制御プログラムはクロック周波数テーブルCTの作成処理を終了する。
【0067】
CPU1が変更された場合(S41:YES)、プラットホーム層の制御プログラムは、CPU1又は抽象化層の制御プログラムからCPU1の処理能力に関する情報を取得し(ステップS42)、取得した情報を基にクロック周波数テーブルCTを作成する(ステップS43)。次いで、プラットホーム層の制御プログラムは、作成したクロック周波数テーブルCTを補助記憶部5に上書きして保存し(ステップS44)、クロック周波数テーブルCTの作成処理を終了する。
【0068】
以上の実施の形態3のクロック周波数制御方法を適用したコンピュータシステムにおいては、CPU1が変更された場合に、プラットホーム層の制御プログラムが自動的にクロック周波数テーブルCTを変更するため、コンピュータシステムを利用するユーザなどがクロック周波数テーブルCTの変更を行う必要がない。よって、コンピュータシステムの利便性を高めることができる。なお、本実施の形態においては、CPU1が変更された場合にクロック周波数テーブルCTを変更するものとしたが、これに限るものではなく、例えばクロック発生部6が4段階にクロック周波数を変更できるようにグレードアップした場合など、その他のハードウェアの構成が変更された場合にもクロック周波数テーブルCTを変更してもよい。
【図面の簡単な説明】
【0069】
【図1】本発明に係るクロック周波数制御方法を適用したコンピュータシステムの一構成例を示すブロック図である。
【図2】CPUにて実行されるプログラムの階層構造を説明するための模式図である。
【図3】アプリケーションテーブル及びクロック周波数テーブルの一例を示す模式図である。
【図4】アプリケーションプログラムの実行とクロック周波数の変更との一例を示すタイミングチャートである。
【図5】プラットホーム層の制御プログラムが行うクロック周波数変更処理の手順を示すフローチャートである。
【図6】図2に示した階層構造において新たなアプリケーションプログラムを追加した構成を示す模式図である。
【図7】変更されたアプリケーションテーブルの一例を示す模式図である。
【図8】アプリケーションプログラムの実行とクロック周波数の変更との一例を示すタイミングチャートである。
【図9】プラットホーム層の制御プログラムが行うアプリケーションテーブルの作成処理の手順を示すフローチャートである。
【図10】図2に示した階層構造においてCPUを新たなCPUに変更した構成を示す模式図である。
【図11】変更されたクロック周波数テーブルの一例を示す模式図である。
【図12】変更されたクロック周波数テーブルを用いた場合のアプリケーションプログラムの実行とクロック周波数の変更との一例を示すタイミングチャートである。
【図13】プラットホーム層の制御プログラムが行うクロック周波数テーブルの作成処理の手順を示すフローチャートである。
【符号の説明】
【0070】
1 CPU(処理装置、コンピュータ)
1a CPU(処理装置、コンピュータ)
2 主記憶部
3 入力部
4 出力部
5 補助記憶部
6 クロック発生部
CP 制御プログラム(コンピュータプログラム)
AP、AP1〜4 アプリケーションプログラム
AT アプリケーションテーブル(アプリケーションプログラムと必要処理能力との対応)
CT クロック周波数テーブル(合計必要処理能力とクロック周波数との対応)
【技術分野】
【0001】
本発明は、実行するアプリケーションプログラムの数、規模又は演算量等に応じて、処理装置のクロック周波数を変更するクロック周波数制御方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
近年の電気機器にはCPU(Central Processing Unit)又はMPU(Micro Processing Unit)等の処理装置が搭載されて種々のアプリケーションプログラムが実行されている。また、電気機器の高性能化に伴って、1つの処理装置にて同時的に実行されるアプリケーションプログラムの数は増加している。実行するアプリケーションプログラムが高度なものであるほど、また、同時的に実行するプログラムが多いほどに、処理装置には高い処理能力が必要である。処理装置の処理能力を高める方法として、処理装置に供給されるクロックの周波数を高めることによって、単位時間あたりの演算量を増す方法がある。
【0003】
しかし、処理装置のクロック周波数を高めることにより、処理装置の消費電力が増大するという問題がある。例えば、高度なアプリケーションプログラムを複数同時的に実行可能なように処理装置のクロック周波数を高く設定した場合であっても、処理装置では常に高度なアプリケーションプログラムが複数同時的に実行されるわけではなく、状況によっては単純な1つのアプリケーションプログラムのみが実行されることもある。このような場合には、処理装置の処理能力が必要以上に高められ、電力を必要以上に消費する虞がある。このため、アプリケーションプログラムの規模及び実行数等に応じてクロック周波数を変更し、処理装置が最適な処理能力で処理を行うことが求められている。
【0004】
特許文献1においては、実行される割り込み又はアプリケーションに基づいてCPU及び他のシステムバスに可変のクロック周波数のクロック信号を供給する周波数シンセサイザを有し、実行されるべき所定のアプリケーションなど又はCPUの利用度等に基づいてクロック周波数を変更することができる自動CPU速度制御のための装置が提案されている。この装置の一実施例では、CPUがアイドルタスクを実行しているか否かに応じて低速モード又は高速モードにクロック周波数を変更することができ、割り込みの有無に応じてクロック周波数を変更することができる。また他の実施例では、CPUの使用レベルを動的にモニタし、CPUの使用レベルに応じてクロック周波数を変更することができる。更に他の実施例では、ワードプロセッサ又はボイスディクテーション等のアプリケーション毎に最適なクロック周波数を予め定めてテーブルに記憶しておき、アプリケーションを実行する際にテーブルに記憶された最適なクロック周波数に変更することができる。
【特許文献1】特表2002−533801号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1に記載の自動CPU速度制御のための装置は、アイドルタスクの実行の有無に応じてクロック周波数を低速モード又は高速モードに変更する構成の場合、アプリケーションが実行されているか否かによりクロック周波数が変更されるのみであり、単純なアプリケーションであっても高度なアプリケーションであっても高速モードで実行されるため、上述の問題を解決することはできない。
【0006】
また、モニタしたCPUの使用レベルに応じてクロック周波数を変更する構成の場合、CPUの使用レベルに応じて細かくクロック周波数を変更することができるため上述の問題を解決し得るが、CPUの使用レベルをモニタするためには過大なCPUリソースを消費するという問題がある。このため、PC(パーソナルコンピュータ)又はWS(ワークステーション)等の高級なシステムにてこの構成を実現することはできるが、電気機器に搭載された小規模なマイコンなどでこの構成を実現することは容易ではない。
【0007】
また、アプリケーション毎に最適なクロック周波数をテーブルに記憶しておき、アプリケーションを実行する際にテーブルに記憶された最適なクロック周波数に変更する構成の場合、アプリケーションの規模に応じて最適なクロック周波数に変更することができる。しかしながら、複数のアプリケーションを同時的に動作させる場合には、最適なクロック周波数に変更することができないという問題がある。例えば、各アプリケーションに最適なクロック周波数をそれぞれ比較して最大のクロック周波数に変更することができるが、単純なアプリケーションを多数動作させる場合には十分な処理能力が得られない虞がある。
【0008】
この構成において、テーブルに予め記憶されるアプリケーション毎のクロック周波数は、CPUの構成及び性能等に応じて決定されるハードウェアに固有の値であるため、同じアプリケーションを別の構成のCPUにて実行する場合には、別のCPUに最適なクロック周波数をアプリケーション毎に新たに算出して新たなテーブルを作成しなければならず、汎用性が低いという問題もある。
【0009】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、複数のアプリケーションプログラムと実行に要する必要処理能力との対応を予め記憶しておき、同時的に実行するアプリケーションプログラムの各必要処理能力を基に合計必要処理能力を算出し、この合計必要処理能力に応じてクロック周波数を決定して変更することにより、複数のアプリケーションプログラムを実行する場合であっても最適なクロック周波数で処理装置(コンピュータ)を動作させることができるクロック周波数制御方法及びコンピュータプログラムを提供することにある。
【0010】
また本発明の他の目的とするところは、合計必要処理能力とクロック周波数との対応を予め記憶しておき、同時的に実行するアプリケーションプログラムの各必要処理能力を基に算出した合計必要処理能力に対応するクロック周波数を取得することにより、アプリケーション毎にクロック周波数を記憶しておく必要がなく、汎用性の高いクロック周波数制御方法を提供することにある。
【0011】
また本発明の他の目的とするところは、処理装置にて第1の制御プログラムを実行し、第1の制御プログラム上で第2の制御プログラムを実行し、第2の制御プログラム上でアプリケーションプログラムを実行し、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を基に合計必要処理能力を算出することにより、実行するアプリケーションの追加などに容易に対応できる汎用性の高いクロック周波数制御方法を提供することにある。
【0012】
また本発明の他の目的とするところは、実行するアプリケーションプログラムに応じて第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を生成することにより、実行するアプリケーションプログラムを追加した場合などに、第2の制御プログラムによって対応を自動的に生成することができるクロック周波数制御方法を提供することにある。
【0013】
また本発明の他の目的とするところは、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を基に処理装置のクロック周波数を決定して変更することにより、処理装置の構成の変更に容易に対応できる汎用性の高いクロック周波数制御方法を提供することにある。
【0014】
また本発明の他の目的とするところは、処理装置の規模、処理能力及び構成等に応じて、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を生成する構成とすることにより、処理装置の構成が変更された場合などに、第2の制御プログラムによって対応を自動的に生成することができるクロック周波数制御方法を提供することにある。
【課題を解決するための手段】
【0015】
第1発明に係るクロック周波数制御方法は、複数のアプリケーションプログラムを実行する処理装置のクロック周波数の変更を制御するクロック周波数制御方法において、複数のアプリケーションプログラムと、各アプリケーションプログラムの実行に要する必要処理能力との対応を記憶しておき、前記処理装置にて実行する一又は複数のアプリケーションプログラムの各必要処理能力を基に、前記一又は複数のアプリケーションプログラムの実行に要する合計必要処理能力を算出し、算出した合計必要処理能力に応じてクロック周波数を決定し、決定したクロック周波数に前記処理装置のクロック周波数を変更することを特徴とする。
【0016】
また、第2発明に係るクロック周波数制御方法は、合計必要処理能力とクロック周波数との対応を記憶しておき、算出した合計必要処理能力を基に対応するクロック周波数を取得して、変更するクロック周波数を決定することを特徴とする。
【0017】
また、第3発明に係るクロック周波数制御方法は、前記処理装置の構成に応じた第1の制御プログラム、及び前記アプリケーションプログラムを実行する第2の制御プログラムを用いて、前記処理装置にて前記第1の制御プログラムを実行し、該第1の制御プログラム上で前記第2の制御プログラムを実行し、該第2の制御プログラム上で前記アプリケーションプログラムを実行し、前記第2の制御プログラムにて、アプリケーションプログラムと必要処理能力との対応を基に、合計必要処理能力の算出を行うことを特徴とする。
【0018】
また、第4発明に係るクロック周波数制御方法は、前記処理装置にて実行するアプリケーションプログラムに応じて、前記第2の制御プログラムにて、アプリケーションプログラムと必要処理能力との対応を生成することを特徴とする。
【0019】
また、第5発明に係るクロック周波数制御方法は、前記第2の制御プログラムにて、合計必要処理能力とクロック周波数との対応を基に、変更するクロック周波数の決定を行うことを特徴とする。
【0020】
また、第6発明に係るクロック周波数制御方法は、アプリケーションプログラムを実行する処理装置に応じて、前記第2の制御プログラムにて、合計必要処理能力とクロック周波数との対応を生成することを特徴とする。
【0021】
また、第7発明に係るコンピュータプログラムは、コンピュータにクロック周波数の変更を制御させるコンピュータプログラムにおいて、コンピュータに、予め記憶された複数のアプリケーションプログラムと各アプリケーションプログラムの実行に要する必要処理能力との対応から、前記コンピュータにて実行する一又は複数のアプリケーションプログラムの各必要処理能力を取得させ、取得した各必要処理能力を基に、前記一又は複数のアプリケーションプログラムの実行に要する合計必要処理能力を算出させ、算出した合計必要処理能力に応じてクロック周波数を決定させ、前記コンピュータのクロック周波数を決定したクロック周波数に変更させることを特徴とする。
【0022】
本発明においては、処理装置にて実行する複数のアプリケーションプログラムと実行に要する必要処理能力との対応を、例えばテーブルなどとして予め記憶しておく。処理装置の構成により決定されるクロック周波数ではなく、処理装置の構成に関係のない必要処理能力を各アプリケーションプログラムについて記憶しておくことによって、処理装置の構成を変更した場合であってもアプリケーションプログラムと必要処理能力との対応を変更する必要はない。実行するアプリケーションプログラムを追加した場合であっても、このアプリケーションプログラムに対する必要処理能力を対応に追加するのみでよい。
処理装置のクロック周波数を変更する場合には、同時的に実行するアプリケーションプログラムの各必要処理能力を基に合計必要処理能力を算出し、この合計必要処理能力に応じてクロック周波数を決定する。例えば、各アプリケーションプログラムの必要能力を数値として設定した場合には、加算などの簡単な四則演算で合計必要処理能力を算出すればよい。アプリケーションプログラム毎ではなく、合計必要処理能力に対してクロック周波数を決定するため、決定方法は実行するアプリケーションプログラムの追加などにより変更する必要はない。クロック周波数を変更する際に、予め記憶した対応を調べて簡単な演算により変更するクロック周波数を決定できるため、処理装置のリソースを過大に消費することはなく、小規模な処理装置であってもこの方法でクロック周波数の変更を行うことができる。
【0023】
また、本発明においては、合計必要処理能力とクロック周波数との対応を、例えばテーブルなどとして予め記憶しておく。アプリケーションプログラム毎ではなく、合計必要処理能力に対するクロック周波数を記憶しておくのみであるため、実行するアプリケーションプログラムを追加した場合であっても、対応を変更する必要はない。
【0024】
また、本発明においては、処理装置にて第1の制御プログラムを実行し、第1の制御プログラム上で第2の制御プログラムを実行し、第2の制御プログラム上でアプリケーションプログラムを実行する。プログラムの実行を階層構造とすることにより、例えば処理装置の構成を変更した場合には第1の制御プログラムのみを変更すればよいため、汎用性が高い。また、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を基に合計必要処理能力を算出する構成とすることにより、実行するアプリケーションプログラムを追加した場合などには、処理装置の構成に関係のない第2の制御プログラムにてアプリケーションプログラムと必要処理能力との対応を追加すればよく、第1の制御プログラムには影響しないため、汎用性が高い。
【0025】
また、本発明においては、実行するアプリケーションプログラムを追加した場合などに、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を生成する。例えば、アプリケーションプログラムに予め必要処理能力又は演算量等の情報をデータとして保持させておき、このアプリケーションプログラムが処理装置にインストールされるなどして追加された場合に、第2の制御プログラムが追加されたアプリケーションプログラムからデータを読み出して、テーブルなどとして記憶されたアプリケーションプログラムと必要処理能力との対応を追加又は修正することができる。
【0026】
また、本発明においては、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を基に処理装置のクロック周波数を決定する。第1の制御プログラムにクロック周波数を決定する機能を備える必要がないため、処理装置の構成が変更された場合に、第1の制御プログラムの変更が行い易い。第2の制御プログラムは、合計必要処理能力とクロック周波数との対応を変更するのみでよい。
【0027】
また、本発明においては、処理装置の構成を変更した場合などに、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を生成する。例えば、第2の制御プログラムは、処理装置から直接的に又は第1の制御プログラムから間接的に、処理装置の規模及び処理能力等の情報を取得することによって、テーブルなどとして記憶された計必要処理能力とクロック周波数との対応を修正又は変更することができる。
【発明の効果】
【0028】
第1発明及び第7発明による場合は、アプリケーションプログラムと必要処理能力との対応を予め記憶しておき、同時的に実行するアプリケーションプログラムの各必要処理能力を基に合計必要処理能力を算出し、この合計必要処理能力に応じてクロック周波数を決定して変更することにより、複数のアプリケーションプログラムを実行する場合であっても最適なクロック周波数で処理装置を動作させることができ、小規模な処理装置であってもこの方法でクロック周波数の変更を行うことができる。また、処理装置の構成に関係のない必要処理能力を各アプリケーションプログラムについて記憶しておくことによって、処理装置の構成を変更した場合であってもアプリケーションプログラムと必要処理能力との対応を変更する必要はないため、汎用性が高い。よって、本発明のクロック周波数制御方法及び制御プログラムを利用することによって、処理装置の構成又はアプリケーションプログラムの構成等に関わらず、十分な処理能力でアプリケーションプログラムを実行できると共に、クロック周波数の変更による処理装置の消費電力の低減を十分に実現できる。
【0029】
また、第2発明による場合は、合計必要処理能力とクロック周波数との対応を予め記憶しておき、同時的に実行するアプリケーションプログラムの各必要処理能力を基に算出した合計必要処理能力に対応するクロック周波数を取得することにより、アプリケーション毎にクロック周波数を記憶しておく必要がなく、実行するアプリケーションプログラムを追加した場合であっても記憶した対応を変更する必要はないため、汎用性の高いクロック周波数制御方法を実現することができる。
【0030】
また、第3発明による場合は、処理装置にて第1の制御プログラムを実行し、第1の制御プログラム上で第2の制御プログラムを実行し、第2の制御プログラム上でアプリケーションプログラムを実行し、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を基に合計必要処理能力を算出することにより、例えば処理装置の構成を変更した場合には第1の制御プログラムのみを変更すればよく、実行するアプリケーションの追加などに容易に対応できるため、より汎用性の高いクロック周波数制御方法を実現することができる。
【0031】
また、第4発明による場合は、実行するアプリケーションプログラムに応じて第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を生成することにより、アプリケーションプログラムが処理装置にインストールされるなどして追加された場合に、第2の制御プログラムがアプリケーションプログラムと必要処理能力との対応を自動的に生成するため、アプリケーションプログラムと必要処理能力との対応を別途変更する必要がなく、利便性の高いクロック周波数制御方法を実現することができる。
【0032】
また、第5発明による場合は、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を基に処理装置のクロック周波数を決定して変更することにより、処理装置の構成が変更された場合に、第1の制御プログラムの変更が行い易く、第2の制御プログラムは合計必要処理能力とクロック周波数との対応を変更するのみでよいため、処理装置の構成の変更に容易に対応できる。よって、より汎用性の高いクロック周波数制御方法を実現することができる。
【0033】
また、第6発明による場合は、処理装置の規模、処理能力及び構成等に応じて、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を生成する構成とすることにより、処理装置の構成を変更した場合に、第2の制御プログラムが合計必要処理能力とクロック周波数との対応を自動的に生成するため、合計必要処理能力とクロック周波数との対応を別途変更する必要がなく、より利便性の高いクロック周波数制御方法を実現することができる。
【発明を実施するための最良の形態】
【0034】
(実施の形態1)
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。図1は、本発明に係るクロック周波数制御方法を適用したコンピュータシステムの一構成例を示すブロック図である。図において1はコンピュータシステムの中核をなすCPUであり、制御プログラム及びアプリケーションプログラム等の種々のプログラムを実行することにより種々の処理を行う処理装置である。また、図示のコンピュータシステムは、CPU1にバスを介して接続される主記憶部2、入力部3、出力部4及び補助記憶部5等を備えると共に、CPU1及びその他の各部へ供給されるクロック信号を発生するクロック発生部6を備えている(ただし、図1においてはクロック発生部6からCPU1へのクロック信号の供給経路のみを図示し、その他の各部へのクロック信号の供給経路は図示を省略してある)。
【0035】
主記憶部2は、SRAM(Static Random Access Memory)又はDRAM(Dynamic Random Access Memory)等のデータ書き換え可能且つ高速アクセス可能なメモリ素子で構成されており、CPU1にて実行されるコンピュータプログラム及び各種のデータ等をロードしてCPU1がアクセスする、又はCPU1の演算処理の過程で発生したデータを一時的に記憶する等の目的で利用される。
【0036】
入力部3は、外部からのデータ入力を受け付けるものである。例えば入力部3は、キーボード及びマウス等により構成され、ユーザからのデータ入力を受け付けてCPU1へ通知する。また例えば、小規模な電気機器などの場合には、複数のボタン及びスイッチ、又はタッチパネル等により入力部3は構成されてユーザからのデータ入力を受け付ける。更に、制御機器などの場合には、入力部3はユーザからのデータ入力を受け付けるのではなく、各種のセンサなどの検知結果をデータ入力として受け付ける構成であってもよい。
【0037】
出力部4は、外部へのデータ出力を行うものであり、例えば液晶ディスプレイなどの表示装置により構成され、CPU1からの表示命令に従って文字、写真又は絵等の表示出力するようにしてある。また、例えば出力部4は、文字、写真又は絵等を印刷出力するレーザプリンタ又はインクジェットプリンタ等の印刷装置で構成されるものであってもよい。更に、制御機器などの場合には、制御対象の機器へ制御信号を出力する構成であってもよい。
【0038】
補助記憶部5は、ハードディスクなどの磁気ディスク装置又はフラッシュメモリなどの不揮発性のメモリ素子で構成されている。また、補助記憶部5は、メモリカード、光ディスク又は磁気ディスク等の記憶媒体と、これらの記憶媒体を装着してデータの読み書きを行うドライブ装置とで構成されていてもよい。補助記憶部5には、CPU1にて実行される制御プログラムCP及びアプリケーションプログラムAP等の各種のプログラム、並びにこれらのプログラムを実行する際に利用される各種のデータ等が多数インストールされて予め記憶してある。また、本発明に係るクロック周波数制御方法を適用したコンピュータシステムにおいては、補助記憶部5にアプリケーションテーブルAT及びクロック周波数テーブルCTがデータとして記憶してある。これらのテーブルの詳細は後述するが、アプリケーションテーブルATはCPU1にて実行される各アプリケーションプログラムAPについて必要な処理能力をそれぞれ記憶するテーブルであり、クロック周波数テーブルCTはクロック発生部6が発生するクロック信号のクロック周波数を決定するためのテーブルである。
【0039】
クロック発生部6は、水晶振動子若しくはセラミック振動子等を利用した固体振動子発振回路、又はリングオシレータ等のように所定周波数の発振信号を出力する発振回路と、この発振回路からの発振信号を分周して出力する分周回路とを備えている。本システムのクロック発生部6は、CPU1から与えられる命令に応じて出力するクロック信号のクロック周波数を変更することができるようにしてある。クロック周波数の変更は、例えば上述の分周回路による発振信号の分周数を変更することにより行うことができる。
【0040】
図2は、CPU1にて実行されるプログラムの階層構造を説明するための模式図である。プログラムの実行は、補助記憶部5に記憶された制御プログラムCP及びアプリケーションプログラムAP等を主記憶部2に読み出し、CPU1が主記憶部2からプログラムのコードを読み出すことにより行われる。CPU1で実行されるプログラムは、CPU1上で実行される制御プログラムCPと、この制御プログラムCP上で実行される複数のアプリケーションプログラムAP1〜AP3によるアプリケーション層との大きく2つの階層に分類することができる。また、制御プログラムCPは、例えばOS(オペレーティングシステム)又はインタープリタ等のプログラムであり、本発明の制御プログラムCPは、CPU1上で実行される抽象化層の制御プログラム(第1の制御プログラム)と、この抽象化層の制御プログラム上で実行されるプラットホーム層の制御プログラム(第2の制御プログラム)との2つの階層に分類することができる。
【0041】
抽象化層の制御プログラムは、下層のCPU1及びその他のハードウェアの構成(アーキテクチャ)が異なる場合であっても、上層のプログラムに対して、ハードウェアの構成を抽象化し、共通の動作環境を与えるためのプログラムである。このため、抽象化層の制御プログラムは、特にCPU1のハードウェア構成に依存するものであり、異なるCPU1に対しては異なる抽象化層の制御プログラムを用いる。
【0042】
プラットホーム層の制御プログラムは、上層のアプリケーション層にて実行される複数のアプリケーションプログラムAP1〜AP3のスケジューリング及びリソース管理等の処理を行うプログラムである。また、プラットホーム層の制御プログラムは、抽象化層の制御プログラム上で実行されるため、CPU1のハードウェア構成に依存せず、異なるCPU1に対しても同じプラットホーム層の制御プログラムを用いることができる。更に、本発明のプラットホーム層の制御プログラムは、上述のアプリケーションテーブルAT及びクロック周波数テーブルCTを用いて、クロック発生部6が発生するクロック信号のクロック周波数を変更する処理を行うようにしてある。
【0043】
アプリケーションプログラムAP1〜AP3は、システムがPC又はWS等の場合には、例えばワープロ、表計算又は画像編集等のプログラムである。また、システムが車輌などに搭載された機器の制御を行う制御システムの場合には、例えばドアの施錠/開錠、ヘッドランプ若しくはルームランプ等の点灯/消灯の制御、又はカーナビゲーション装置若しくはオーディオ装置等の動作制御等を行うプログラムである。これらのアプリケーションプログラムAP1〜AP3は、プラットホーム層の制御プログラム上で複数を同時的に実行することができるようにしてある。
【0044】
図3は、アプリケーションテーブルAT及びクロック周波数テーブルCTの一例を示す模式図である。アプリケーションテーブルAT及びクロック周波数テーブルCTは、補助記憶部5に予め記憶してあり、主記憶部2に読み出された後、プラットホーム層の制御プログラムがクロック周波数の変更を行う際に利用される。アプリケーションテーブルATは、CPU1にて実行され得るアプリケーションプログラムAP1〜AP3、即ち補助記憶部5にインストールされたアプリケーションプログラムAP1〜AP3のそれぞれについて、要求する処理能力を数値化した必要処理能力が対応付けて記憶してある(図3(a)参照)。図示の例では、アプリケーションプログラムAP1の必要処理能力は1であり、アプリケーションプログラムAP2の必要処理能力は10であり、アプリケーションプログラムAP3の必要処理能力は20であるため、アプリケーションプログラムAP3が最も高度な処理を行うものと判断できる。
【0045】
なお、アプリケーションテーブルATは、図1に示すコンピュータシステムの設計者が予め作成して補助記憶部5に記憶しておく構成としてもよく、アプリケーションプログラムAP1〜AP3の設計者がそれぞれ必要処理能力を設定して各アプリケーションプログラムにデータとして付与しておき、プラットホーム層の制御プログラムがこのデータを読み出してアプリケーションテーブルATを自動的に作成する構成としてもよい。
【0046】
クロック周波数テーブルCTは、同時的に実行される複数のアプリケーションプログラムAP1〜AP3の必要処理能力の合計値である合計必要処理能力と、この値に対して最適なクロック周波数とが対応付けて記憶してある(図3(b)参照)。本実施例において合計必要処理能力は、アプリケーションテーブルATの各アプリケーションプログラムAP1〜AP3の必要処理能力を単純に加算した値(例えば、アプリケーションプログラムAP1〜AP3の3つを同時的に実行する場合は合計必要処理能力は1+10+20=31であり、アプリケーションプログラムAP1及びAP2の2つを同時的に実行する場合は合計必要処理能力は1+10=11である)とするが、これに限るものではなく、例えばアプリケーションプログラムAP1〜AP3を重み付けする計数と各必要処理能力とを乗算した後に加算して合計必要処理能力を算出するなどの構成としてもよく、その他の方法で算出する構成としてもよい。
【0047】
また、クロック周波数テーブルCTに記憶されるクロック周波数は、CPU1及びクロック発生部6等の構成に依存する。図示の例は、クロック発生部6が”低速”、”中速”及び”高速”の3段階でクロック信号の周波数を変化させることができる場合であり、合計必要処理能力が1〜10の場合にクロック周波数が”低速”に設定され、合計必要処理能力が11〜20の場合にクロック周波数が”中速”に設定され、合計必要処理能力が21以上の場合にクロック周波数が”高速”に設定されるようにしてある。なお、クロック周波数テーブルCTは、コンピュータシステムの設計者又はCPU1の設計者等が予め作成して補助記憶部5に記憶しておく構成としてもよく、プラットホーム層の制御プログラムがCPU1又は抽象化層の制御プログラム等からCPU1の処理能力に係る情報を取得してクロック周波数テーブルCTを自動的に作成する構成としてもよい。
【0048】
図4は、アプリケーションプログラムAP1〜AP3の実行とクロック周波数の変更との一例を示すタイミングチャートである。例えば、時刻t0においてアプリケーションプログラムAP1及びAP2をCPU1にて同時的に実行する場合、プラットホーム層の制御プログラムは、まずアプリケーションテーブルATからアプリケーションプログラムAP1の必要処理能力”1”とアプリケーションプログラムAP2の必要処理能力”10”とを取得し、これらを加算して合計必要処理能力”11”を算出する。次いで、プラットホーム層の制御プログラムは、クロック周波数テーブルCTから合計必要処理能力”11”に対応するクロック周波数”中速”を取得するため、クロック発生部6が出力するクロック信号の周波数を”中速”に変更する。
【0049】
また、時刻t1において更にアプリケーションプログラムAP3を同時的に実行する場合、プラットホーム層の制御プログラムは、アプリケーションテーブルATを基に合計必要処理能力”31”を算出し、クロック周波数テーブルCTからクロック周波数”高速”を取得するため、クロック発生部6が出力するクロック信号の周波数を”高速”に変更する。以下、プラットホーム層の制御プログラムは同様の処理を繰り返し行い、例えばアプリケーションプログラムAP1のみが実行される期間(t3〜t4、t5〜t6、t7〜t8)はクロック周波数が”低速”に設定され、アプリケーションプログラムAP1及びAP2が同時的に実行される期間(t0〜t1、t2〜t3、t4〜t5、t8〜t9)はクロック周波数が”中速”に設定され、アプリケーションプログラムAP1及びAP3が同時的に実行される期間(t6〜t7)及びアプリケーションプログラムAP1〜AP3が同時的に実行される期間(t1〜t2)はクロック周波数が”高速”に設定される。
【0050】
図5は、プラットホーム層の制御プログラムが行うクロック周波数変更処理の手順を示すフローチャートである。クロック周波数変更処理において、プラットホーム層の制御プログラムは、CPU1にて実行するアプリケーションプログラムAPの実行数に変化があるか否かを調べ(ステップS1)、実行数に変化がない場合には(S1:NO)、実行数が変化するまで待機する。アプリケーションプログラムAPの実行数に変化がある場合(S1:YES)、プラットホーム層の制御プログラムは、補助記憶部5又は主記憶部2からアプリケーションテーブルATを読み出して(ステップS2)、実行するアプリケーションAPの必要処理能力をアプリケーションテーブルATから取得する(ステップS3)。
【0051】
次いで、プラットホーム層の制御プログラムは、取得した各必要処理能力を加算することによって合計必要処理能力を算出し(ステップS4)、補助記憶部5又は主記憶部2からクロック周波数テーブルCTを読み出して(ステップS5)、算出した合計必要処理能力に対応するクロック周波数をクロック周波数テーブルCTから取得することによって、変更するクロック周波数を決定する(ステップS6)。その後、プラットホーム層の制御プログラムは、クロック発生部6が出力するクロック信号の周波数を決定したクロック周波数に変更して(ステップS7)、処理を終了する。
【0052】
以上の構成のクロック周波数制御方法を適用したコンピュータシステムにおいては、アプリケーションプログラムAPと必要処理能力との対応を予めアプリケーションテーブルATに記憶しておくと共に、合計必要処理能力とクロック周波数との対応を予めクロック周波数テーブルCTに記憶しておくことによって、プラットホーム層の制御プログラムが簡単な演算により合計必要処理能力を算出してCPU1のクロック周波数を決定することができるため、小規模又は安価なCPU1であってもクロック周波数の変更処理が大きな負荷となることはない。よって、多数のアプリケーションプログラムAPを同時的に実行するシステムであっても、適切なクロック周波数にてCPU1が処理を行うことができ、十分な処理能力と十分な低消費電力化とを実現することができる。
【0053】
また、制御プログラムCPをプラットホーム層の制御プログラム及び抽象化層の制御プログラムの2階層に分けると共に、アプリケーションテーブルATを用いた合計必要処理能力の算出及びクロック周波数テーブルCTを用いたクロック周波数の決定等の処理をプラットホーム層の制御プログラムが行う構成とすることによって、CPU1及びその他のハードウェア構成を変更した場合には抽象化層の制御プログラムのみを変更すればよく、プラットホーム層の制御プログラムを変更する必要はないため、制御プログラムCPの汎用性を高めることができる。
【0054】
また、アプリケーションテーブルATは、CPU1及びその他のハードウェア構成に関係のない必要処理能力が各アプリケーションに対応付けて記憶してあるため、CPU1及びその他のハードウェアの構成が変更された場合であっても、アプリケーションテーブルATを変更する必要はなく、汎用性が高い。また、クロック周波数テーブルCTは、合計必要処理能力とクロック周波数との対応が記憶してあり、アプリケーションプログラムAP毎のクロック周波数を記憶しておく必要がないため、新たなアプリケーションプログラムAPがインストールされた場合であっても、クロック周波数テーブルCTを変更する必要がなく、汎用性が高い。よって、本発明のクロック周波数制御方法は汎用性が高く、様々なシステムに適用することができ、CPU1及びその他のハードウェア構成又はアプリケーションプログラムAPの構成に関わらず、十分な処理能力でアプリケーションプログラムAPを実行できると共に、クロック周波数の変更による処理装置の消費電力の低減を十分に実現できる。
【0055】
なお、本実施の形態においては、3つのアプリケーションプログラムAP1〜AP3をCPU1にて実行する構成としたが、これに限るものではなく、2つ以下又は4つ以上のアプリケーションプログラムAPを同時的に実行する構成としてもよい。また、図3のアプリケーションテーブルAT及びクロック周波数テーブルCTに示した値は一例であってこれに限るものではなく、同様に図4に示したタイミングチャートは一例であってこれに限るものではない。更には、図1に示したコンピュータシステムは一例であってこれに限るものではなく、本発明は種々のシステムに適用することができる。
【0056】
(実施の形態2)
実施の形態2に係るクロック周波数制御方法は、実施の形態1に係るクロック周波数制御方法にアプリケーションテーブルATを自動生成する方法を追加したものである。図6は、図2に示した階層構造において新たなアプリケーションプログラムAP4を追加した構成を示す模式図である。アプリケーションプログラムAP4の追加は、図1に示すコンピュータシステムの補助記憶部5にアプリケーションプログラムAP4をインストールすることによって行われる。よって、アプリケーション層にはアプリケーションプログラムAP4が追加されるため、プラットホーム層の制御プログラムはアプリケーションテーブルATを変更する必要がある。クロック周波数テーブルCTを変更する必要はない。
【0057】
図7は、変更されたアプリケーションテーブルATの一例を示す模式図であり、図3(a)に示したアプリケーションテーブルATに、追加されたアプリケーションプログラムAP4に係る項目が追加されている。図示の例では、アプリケーションプログラムAP4の必要処理能力は”10”である。アプリケーションテーブルATの変更はプラットホーム層の制御プログラムが行うが、プラットホーム層の制御プログラムが必要処理能力を取得することができるように、各アプリケーションプログラムAP1〜AP4には必要処理能力に係るデータが予め付与してある。このデータは、例えば各アプリケーションプログラムAP1〜AP4の設計者が予め付与しておけばよい。よって、プラットホーム層の制御プログラムは、新たなアプリケーションプログラムAP4がインストールされた場合には、このアプリケーションプログラムAP4から必要処理能力に係るデータを取得してアプリケーションテーブルATを変更することができる。
【0058】
図8は、アプリケーションプログラムAP1〜AP4の実行とクロック周波数の変更との一例を示すタイミングチャートである。図示の例において、アプリケーションプログラムAP1のみが実行される期間(t3〜t4、t6〜t7、t8〜t9)はクロック周波数が”低速”に設定される。アプリケーションプログラムAP1及びAP2が同時的に実行される期間(t0〜t1、t2〜t3、t5〜t6、t10〜t11)及びアプリケーションプログラムAP1及びAP4が同時的に実行される期間(t4〜t5)はクロック周波数が”中速”に設定される。アプリケーションプログラムAP1及びAP3が同時的に実行される期間(t7〜t8)、アプリケーションプログラムAP1〜AP3が同時的に実行される期間(t1〜t2)、及びアプリケーションプログラムAP1、AP2、AP4が同時的に実行される期間(t9〜t10)はクロック周波数が”高速”に設定される。このように、アプリケーションプログラムAP4が追加されたことによって、アプリケーションプログラムAP3が実行されない場合であっても、アプリケーションプログラムAP1、AP2、AP4の3つが実行される場合であれば、クロック周波数は”高速”に設定される。
【0059】
図9は、プラットホーム層の制御プログラムが行うアプリケーションテーブルATの作成処理の手順を示すフローチャートである。アプリケーションテーブルATの作成処理において、プラットホーム層の制御プログラムは、アプリケーションプログラムAPが補助記憶部5に新たにインストールされたか否かを調べ(ステップS21)、インストールされていない場合には(S21:NO)、新たなアプリケーションプログラムAPがインストールされるまで待機する。
【0060】
新たなアプリケーションプログラムAPがインストールされた場合(S21:YES)、プラットホーム層の制御プログラムは、インストールされたアプリケーションプログラムAPから必要処理能力を取得し(ステップS22)、補助記憶部5からアプリケーションテーブルATを読み出して(ステップS23)、インストールされたアプリケーションプログラムAPについての必要処理能力を追加してアプリケーションテーブルATを更新する(ステップS24)。その後、プラットホーム層の制御プログラムは更新したアプリケーションテーブルATを補助記憶部5に上書きして保存し(ステップS25)、アプリケーションテーブルATの作成処理を終了する。
【0061】
以上の実施の形態2のクロック周波数制御方法を適用したコンピュータシステムにおいては、アプリケーションプログラムが補助記憶部5にインストールされて追加された場合に、プラットホーム層の制御プログラムが自動的にアプリケーションテーブルATを変更するため、コンピュータシステムを利用するユーザなどがアプリケーションテーブルATの変更を行う必要がない。よって、コンピュータシステムの利便性を高めることができる。
【0062】
(実施の形態3)
実施の形態3に係るクロック周波数制御方法は、実施の形態1に係るクロック周波数制御方法にクロック周波数テーブルCTを自動生成する方法を追加したものである。図10は、図2に示した階層構造においてCPU1を新たなCPU1aに変更した構成を示す模式図であり、(a)に変更前の構成を示し、(b)に変更後の構成を示してある。例えばCPU1のグレードアップなどを目的としてコンピュータシステムのCPU1を変更する場合、CPU1の構成に依存する抽象化層の制御プログラム及びクロック周波数テーブルCTを新たなCPU1aに適するよう変更する必要がある。CPU1の構成に依存しないプラットホーム層の制御プログラム及びアプリケーションテーブルATを変更する必要はない。
【0063】
図11は、変更されたクロック周波数テーブルCTの一例を示す模式図であり、(a)に変更前のクロック周波数テーブルCTを示し、(b)に変更後のクロック周波数テーブルCTを示してある。図示の例では、CPU1からCPU1aにグレードアップすることによって処理能力が増し、合計必要処理能力が1〜20の場合にクロック周波数が”低速”に設定され、合計必要処理能力が21〜40の場合にクロック周波数が”中速”に設定され、合計必要処理能力が41以上の場合にクロック周波数が”高速”に設定されるようにしてある。
【0064】
クロック周波数テーブルCTの変更はプラットホーム層の制御プログラムが行うが、プラットホーム層の制御プログラムはCPU1a又は変更された抽象化層の制御プログラムから、CPU1aの処理能力に関する情報を取得するようにしてある。処理能力に関する情報は、例えばCPU1aが1クロック当たりに処理できるデータ量、平行して処理することができる命令数、又はCPU1aがパイプライン処理を行う場合にはパイプライン数等の情報であり、プラットホーム層の制御プログラムはこれらの情報を基にCPU1aの処理能力を判断し、合計必要処理能力とクロック周波数との対応を決定することができる。これらの処理能力に関する情報は、CPU1aの設計者が予めCPU1aから直接的に取得可能なようにCPU1aに保持させる構成であってもよく、CPU1a用の抽象化層の制御プログラムが保持する構成であってもよい。
【0065】
図12は、変更されたクロック周波数テーブルCTを用いた場合のアプリケーションプログラムAP1〜AP3の実行とクロック周波数の変更との一例を示すタイミングチャートである。図示の例において、アプリケーションプログラムAP1のみが実行される期間(t3〜t4、t5〜t6、t7〜t8)、並びにアプリケーションプログラムAP1及びAP2が同時的に実行される期間(t0〜t1、t2〜t3、t4〜t5、t8〜t9)は、クロック周波数が”低速”に設定される。アプリケーションプログラムAP1〜AP3が同時的に実行される期間(t1〜t2)、並びにアプリケーションプログラムAP1及びAP3が同時的に実行される期間(t6〜t7)は、クロック周波数が”中速”に設定される。また、クロック周波数が”高速”に設定されることはない。これは、CPU1aが十分に高い処理能力を有しているため、クロック周波数は”中速”で十分で有り、更に多くのアプリケーションプログラムAPを同時的に実行することができることを示している。
【0066】
図13は、プラットホーム層の制御プログラムが行うクロック周波数テーブルCTの作成処理の手順を示すフローチャートである。クロック周波数テーブルCTの作成処理において、プラットホーム層の制御プログラムは、まず、コンピュータシステムのCPU1が変更されたか否かを調べる(ステップS41)。プラットホーム層の制御プログラムは、例えばコンピュータシステムの電源投入後に始めて実行された場合に、CPU1又は抽象化層の制御プログラムのバージョン情報などを調べるようにしてあり、これによりCPU1が変更されたか否かを知ることができるようにしてある。CPU1が変更されていない場合(S41:NO)、クロック周波数テーブルCTを作成する必要はないため、プラットホーム層の制御プログラムはクロック周波数テーブルCTの作成処理を終了する。
【0067】
CPU1が変更された場合(S41:YES)、プラットホーム層の制御プログラムは、CPU1又は抽象化層の制御プログラムからCPU1の処理能力に関する情報を取得し(ステップS42)、取得した情報を基にクロック周波数テーブルCTを作成する(ステップS43)。次いで、プラットホーム層の制御プログラムは、作成したクロック周波数テーブルCTを補助記憶部5に上書きして保存し(ステップS44)、クロック周波数テーブルCTの作成処理を終了する。
【0068】
以上の実施の形態3のクロック周波数制御方法を適用したコンピュータシステムにおいては、CPU1が変更された場合に、プラットホーム層の制御プログラムが自動的にクロック周波数テーブルCTを変更するため、コンピュータシステムを利用するユーザなどがクロック周波数テーブルCTの変更を行う必要がない。よって、コンピュータシステムの利便性を高めることができる。なお、本実施の形態においては、CPU1が変更された場合にクロック周波数テーブルCTを変更するものとしたが、これに限るものではなく、例えばクロック発生部6が4段階にクロック周波数を変更できるようにグレードアップした場合など、その他のハードウェアの構成が変更された場合にもクロック周波数テーブルCTを変更してもよい。
【図面の簡単な説明】
【0069】
【図1】本発明に係るクロック周波数制御方法を適用したコンピュータシステムの一構成例を示すブロック図である。
【図2】CPUにて実行されるプログラムの階層構造を説明するための模式図である。
【図3】アプリケーションテーブル及びクロック周波数テーブルの一例を示す模式図である。
【図4】アプリケーションプログラムの実行とクロック周波数の変更との一例を示すタイミングチャートである。
【図5】プラットホーム層の制御プログラムが行うクロック周波数変更処理の手順を示すフローチャートである。
【図6】図2に示した階層構造において新たなアプリケーションプログラムを追加した構成を示す模式図である。
【図7】変更されたアプリケーションテーブルの一例を示す模式図である。
【図8】アプリケーションプログラムの実行とクロック周波数の変更との一例を示すタイミングチャートである。
【図9】プラットホーム層の制御プログラムが行うアプリケーションテーブルの作成処理の手順を示すフローチャートである。
【図10】図2に示した階層構造においてCPUを新たなCPUに変更した構成を示す模式図である。
【図11】変更されたクロック周波数テーブルの一例を示す模式図である。
【図12】変更されたクロック周波数テーブルを用いた場合のアプリケーションプログラムの実行とクロック周波数の変更との一例を示すタイミングチャートである。
【図13】プラットホーム層の制御プログラムが行うクロック周波数テーブルの作成処理の手順を示すフローチャートである。
【符号の説明】
【0070】
1 CPU(処理装置、コンピュータ)
1a CPU(処理装置、コンピュータ)
2 主記憶部
3 入力部
4 出力部
5 補助記憶部
6 クロック発生部
CP 制御プログラム(コンピュータプログラム)
AP、AP1〜4 アプリケーションプログラム
AT アプリケーションテーブル(アプリケーションプログラムと必要処理能力との対応)
CT クロック周波数テーブル(合計必要処理能力とクロック周波数との対応)
【特許請求の範囲】
【請求項1】
複数のアプリケーションプログラムを実行する処理装置のクロック周波数の変更を制御するクロック周波数制御方法において、
複数のアプリケーションプログラムと、各アプリケーションプログラムの実行に要する必要処理能力との対応を記憶しておき、
前記処理装置にて実行する一又は複数のアプリケーションプログラムの各必要処理能力を基に、前記一又は複数のアプリケーションプログラムの実行に要する合計必要処理能力を算出し、
算出した合計必要処理能力に応じてクロック周波数を決定し、
決定したクロック周波数に前記処理装置のクロック周波数を変更すること
を特徴とするクロック周波数制御方法。
【請求項2】
合計必要処理能力とクロック周波数との対応を記憶しておき、
算出した合計必要処理能力を基に対応するクロック周波数を取得して、変更するクロック周波数を決定すること
を特徴とする請求項1に記載のクロック周波数制御方法。
【請求項3】
前記処理装置の構成に応じた第1の制御プログラム、及び前記アプリケーションプログラムを実行する第2の制御プログラムを用いて、
前記処理装置にて前記第1の制御プログラムを実行し、
該第1の制御プログラム上で前記第2の制御プログラムを実行し、
該第2の制御プログラム上で前記アプリケーションプログラムを実行し、
前記第2の制御プログラムにて、アプリケーションプログラムと必要処理能力との対応を基に、合計必要処理能力の算出を行うこと
を特徴とする請求項2に記載のクロック周波数制御方法。
【請求項4】
前記処理装置にて実行するアプリケーションプログラムに応じて、前記第2の制御プログラムにて、アプリケーションプログラムと必要処理能力との対応を生成すること
を特徴とする請求項3に記載のクロック周波数制御方法。
【請求項5】
前記第2の制御プログラムにて、合計必要処理能力とクロック周波数との対応を基に、変更するクロック周波数の決定を行うこと
を特徴とする請求項3又は請求項4に記載のクロック周波数制御方法。
【請求項6】
アプリケーションプログラムを実行する処理装置に応じて、前記第2の制御プログラムにて、合計必要処理能力とクロック周波数との対応を生成すること
を特徴とする請求項5に記載のクロック周波数制御方法。
【請求項7】
コンピュータにクロック周波数の変更を制御させるコンピュータプログラムにおいて、
コンピュータに、
予め記憶された複数のアプリケーションプログラムと各アプリケーションプログラムの実行に要する必要処理能力との対応から、前記コンピュータにて実行する一又は複数のアプリケーションプログラムの各必要処理能力を取得させ、
取得した各必要処理能力を基に、前記一又は複数のアプリケーションプログラムの実行に要する合計必要処理能力を算出させ、
算出した合計必要処理能力に応じてクロック周波数を決定させ、
前記コンピュータのクロック周波数を決定したクロック周波数に変更させること
を特徴とするコンピュータプログラム。
【請求項1】
複数のアプリケーションプログラムを実行する処理装置のクロック周波数の変更を制御するクロック周波数制御方法において、
複数のアプリケーションプログラムと、各アプリケーションプログラムの実行に要する必要処理能力との対応を記憶しておき、
前記処理装置にて実行する一又は複数のアプリケーションプログラムの各必要処理能力を基に、前記一又は複数のアプリケーションプログラムの実行に要する合計必要処理能力を算出し、
算出した合計必要処理能力に応じてクロック周波数を決定し、
決定したクロック周波数に前記処理装置のクロック周波数を変更すること
を特徴とするクロック周波数制御方法。
【請求項2】
合計必要処理能力とクロック周波数との対応を記憶しておき、
算出した合計必要処理能力を基に対応するクロック周波数を取得して、変更するクロック周波数を決定すること
を特徴とする請求項1に記載のクロック周波数制御方法。
【請求項3】
前記処理装置の構成に応じた第1の制御プログラム、及び前記アプリケーションプログラムを実行する第2の制御プログラムを用いて、
前記処理装置にて前記第1の制御プログラムを実行し、
該第1の制御プログラム上で前記第2の制御プログラムを実行し、
該第2の制御プログラム上で前記アプリケーションプログラムを実行し、
前記第2の制御プログラムにて、アプリケーションプログラムと必要処理能力との対応を基に、合計必要処理能力の算出を行うこと
を特徴とする請求項2に記載のクロック周波数制御方法。
【請求項4】
前記処理装置にて実行するアプリケーションプログラムに応じて、前記第2の制御プログラムにて、アプリケーションプログラムと必要処理能力との対応を生成すること
を特徴とする請求項3に記載のクロック周波数制御方法。
【請求項5】
前記第2の制御プログラムにて、合計必要処理能力とクロック周波数との対応を基に、変更するクロック周波数の決定を行うこと
を特徴とする請求項3又は請求項4に記載のクロック周波数制御方法。
【請求項6】
アプリケーションプログラムを実行する処理装置に応じて、前記第2の制御プログラムにて、合計必要処理能力とクロック周波数との対応を生成すること
を特徴とする請求項5に記載のクロック周波数制御方法。
【請求項7】
コンピュータにクロック周波数の変更を制御させるコンピュータプログラムにおいて、
コンピュータに、
予め記憶された複数のアプリケーションプログラムと各アプリケーションプログラムの実行に要する必要処理能力との対応から、前記コンピュータにて実行する一又は複数のアプリケーションプログラムの各必要処理能力を取得させ、
取得した各必要処理能力を基に、前記一又は複数のアプリケーションプログラムの実行に要する合計必要処理能力を算出させ、
算出した合計必要処理能力に応じてクロック周波数を決定させ、
前記コンピュータのクロック周波数を決定したクロック周波数に変更させること
を特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2009−26199(P2009−26199A)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願番号】特願2007−190899(P2007−190899)
【出願日】平成19年7月23日(2007.7.23)
【出願人】(395011665)株式会社オートネットワーク技術研究所 (2,668)
【出願人】(000183406)住友電装株式会社 (6,135)
【出願人】(000002130)住友電気工業株式会社 (12,747)
【Fターム(参考)】
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願日】平成19年7月23日(2007.7.23)
【出願人】(395011665)株式会社オートネットワーク技術研究所 (2,668)
【出願人】(000183406)住友電装株式会社 (6,135)
【出願人】(000002130)住友電気工業株式会社 (12,747)
【Fターム(参考)】
[ Back to top ]