(57)【特許請求の範囲】
【請求項１】
ＣＰＵ（Central Processing Unit）の動作性能を動的に制御するＣＰＵ制御方法において、
メモリ上のメモリ領域と当該メモリ領域に展開された命令コードを実行する際の前記ＣＰＵの動作性能に関する情報とを対応付けた対応情報を、ページングによるメモリ管理手段を用いて生成するステップと、
前記ＣＰＵが実行すべき命令コードを読み込み、かつ前記対応情報を参照して当該命令コードを実行する際の動作性能に関する情報を取得するステップと、
前記動作性能に関する情報に基づいて決定された値に前記ＣＰＵの動作性能を動的に設定するステップと、
設定された前記動作性能で前記ＣＰＵが前記命令コードを実行するステップと
を含むことを特徴とするＣＰＵ制御方法。
【請求項２】
前記動作性能に関する情報を取得するステップでは、読み込まれた前記命令コードが展開されていた前記メモリ領域に関する前記対応情報から当該命令コードを実行する際の動作性能に関する情報を取得することを特徴とする請求項１に記載のＣＰＵ制御方法。
【請求項３】
ＣＰＵ（Central Processing Unit）の動作性能を動的に制御するＣＰＵ制御方法において、
ＯＳ（Operating System）の起動時に、ページングによるメモリ管理手段により、メモリ上のメモリ領域と前記ＣＰＵの動作性能との対応関係を設定するステップと、
前記ＯＳのプログラムにおける任意のセクションを、当該セクションの処理を実行する際に所望する前記ＣＰＵの動作性能に応じて、当該動作性能に対応付けられたメモリ領域へロードするステップと、
前記メモリから実行すべき命令コードを読み込んだ際に、当該命令コードが展開されていた前記メモリ領域に基づき、当該メモリ領域に対応付けられている動作性能で動作するように前記ＣＰＵを設定するステップと、
設定された前記動作性能で前記ＣＰＵが前記命令コードを実行するステップと
を含むことを特徴とするＣＰＵ制御方法。
【請求項４】
前記対応関係を設定するステップでは、物理アドレスと論理アドレスとをマッピングするページテーブルのエントリに前記ＣＰＵの動作性能に関する情報を記述することを特徴とする請求項３に記載のＣＰＵ制御方法。
【請求項５】
プログラムに記述された命令コードを読み込んで実行するＣＰＵ（Central Processing Unit）と、
ページングによりメモリ管理を行うと共に、メモリ上のメモリ領域と当該メモリ領域に展開された命令コードを実行する際の前記ＣＰＵの動作性能に関する情報とを対応付けた対応情報を保持するメモリ管理手段と、
前記ＣＰＵの動作クロックを制御するクロック制御手段とを備え、
前記ＣＰＵは、所定の命令コードを実行する場合に、前記メモリ管理手段に保持されている前記対応情報を参照し、当該命令コードが展開されていたメモリ領域に対して対応付けられた動作性能に関する情報に基づいて前記クロック制御手段に指示を行い、動作クロックを動的に変更することを特徴とするコンピュータ装置。
【請求項６】
前記メモリ管理手段は、物理アドレスと論理アドレスとをマッピングするページテーブルであり、当該ページテーブルのエントリに前記ＣＰＵの動作性能に関する情報が記述されることを特徴とする請求項５に記載のコンピュータ装置。
【請求項７】
前記メモリ管理手段は、物理アドレスと論理アドレスとをマッピングするページディレクトリであり、当該ページディレクトリのエントリに前記ＣＰＵの動作性能に関する情報が記述されることを特徴とする請求項５に記載のコンピュータ装置。
【請求項８】
前記ＣＰＵは、Ｉ／Ｏバウンドの処理を行う場合に、前記動作性能に関する情報に基づいて前記クロック制御手段に指示を行い、動作クロックを動的に変更することを特徴とする請求項５に記載のコンピュータ装置。
【請求項９】
前記ＣＰＵは、入力待ちのアイドル・ループ処理を行う場合に、前記動作性能に関する情報に基づいて前記クロック制御手段に指示を行い、動作クロックを動的に変更することを特徴とする請求項５に記載のコンピュータ装置。
【請求項１０】
クロック発信器を制御して動作クロックを動的に変更可能なＣＰＵ（Central Processing Unit）であって、
メモリから命令コードを読み込む命令読み込み手段と、
ページングによりメモリ管理を行うと共にメモリ上のメモリ領域と当該メモリ領域に展開された命令コードを実行する際の前記ＣＰＵの動作性能に関する情報とを対応付けた対応情報を保持するメモリ管理手段から、読み込んだ前記命令コードが展開されていたメモリ領域に対応付けられた動作性能に関する情報を取得する情報取得手段と、
取得された前記動作性能に関する情報に基づいて前記クロック発信器のコントローラに動作クロックの変更指示を行う指示手段とを備え、
前記コントローラに対して行われた前記動作クロックの変更指示により動的に制御された動作クロックにしたがって動作することを特徴とするＣＰＵ。
【請求項１１】
前記メモリ管理手段は、物理アドレスと論理アドレスとをマッピングしエントリに前記ＣＰＵの動作性能に関する情報が記述されたページテーブルであり、前記情報取得手段は、読み込んだ前記命令コードが展開されていたメモリ領域に対応する当該ページテーブルのエントリを参照して前記動作性能に関する情報を取得することを特徴とする請求項１０に記載のＣＰＵ。
【請求項１２】
前記メモリ管理手段は、物理アドレスと論理アドレスとをマッピングしエントリに前記ＣＰＵの動作性能に関する情報が記述されたページディレクトリであり、前記情報取得手段は、読み込んだ前記命令コードが展開されていたメモリ領域に対応する当該ページディレクトリのエントリを参照して前記動作性能に関する情報を取得することを特徴とする請求項１０に記載のＣＰＵ。
【請求項１３】
コンピュータを制御するプログラムであって、
ＯＳ（Operating System）の起動時に、ページングによるメモリ管理手段により、メモリ上のメモリ領域とＣＰＵ（Central Processing Unit）の動作性能との対応関係を設定する機能と、
前記ＯＳのプログラムにおける任意のセクションを、当該セクションの処理を実行する際に所望する前記ＣＰＵの動作性能に応じて、当該動作性能に対応付けられたメモリ領域へロードする機能と、
取得された前記動作性能に関する情報に基づいてクロック発信器のコントローラに動作クロックの変更指示を行う機能と
を前記コンピュータに実現させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムにおけるＣＰＵ（Central Processing Unit）のパワーマネージメントにより消費電力を制御する技術に関する。
【０００２】
【従来の技術】
近年、コンピュータ装置は、ＣＰＵの高性能化に伴って消費電力及び発熱量が増加している。コンピュータ装置において、システムがビジー状態の時には、ＣＰＵの消費電力はシステム全体から見て大きな比重を占める。通常、各種のデバイスはＣＰＵに比べて処理が遅いため、ＣＰＵにはある程度の待ち時間が必要となる。この待ち時間の間、ＣＰＵは多くの場合、無駄な処理を実行することになる。そこで、この待ち時間などに、ＣＰＵのパワーマネージメントによって装置全体の消費電力を削減し、熱の発生を抑えることが課題となっている。
【０００３】
ＣＰＵのパワーマネージメントによる消費電力を減少させる手法として、次のような手法が考えられる。
（１）ＣＰＵの動作性能（パフォーマンス）を落とすことにより、ＣＰＵにより消費する単位時間あたりの消費電力を抑える方法。
（２）ＣＰＵの処理が要求される度合に応じて適宜ＣＰＵを省電力状態へ移行させることにより、ＣＰＵの消費電力を抑える方法。
上記（１）の手法は、例えばThrottlingや米国インテル社のSpeed Stepにて実現されているが、一般にシステムのスループットは低下する。これに対し、（２）の手法は、ＣＰＵへの要求に応じた制御を行うため、システム全体の処理性能を落とさずにＣＰＵの消費電力を削減することができる。
【０００４】
（２）の手法が適用できる場合としては、
ｉ）ＣＰＵスケジューラで、ＣＰＵへ処理の要求がない場合
ｉｉ）Ｉ／Ｏ（Input-Output）バウンドのタスクでデバイスから応答があるまで一定時間待つ必要がある場合
がある。
ＣＰＵスケジューラにおいてＣＰＵへの要求がない場合に省電力状態に移行させる手段は、ＯＳ（Operating System：オペレーティングシステム）のＣＰＵスケジューラにより、ＣＰＵに対して次の要求があるまで当該ＣＰＵを省電力状態に入れることができる。省電力状態としては、例えばＡＣＰＩ（Advanced Configuration and Power Interface）においてＣ０からＣ３までの４段階の動作状態が定義されており、これを用いることができる。また、ＡＰＭ  ＩｄｌｅやＩｎｔ１６を用いて省電力状態に移行することも可能であった。ここで、ＣＰＵのキャッシュメモリのスヌーピング（Snooping）が必要な場合、ＣＰＵの省電力状態（Ｃ３）から通常状態（Ｃ０）に戻るか、もしくは、スヌーピングが実行できる省電力状態（Ｃ１／Ｃ２）を利用する。キャッシュメモリのスヌーピングが必要ない場合は、単にＣＰＵの次の要求があるまで省電力状態にしておくことができる。
【０００５】
一方、Ｉ／Ｏバウンドのタスクでデバイスの応答を一定時間待つ場合にＣＰＵを省電力状態に移行させる実用的な手段は、これまでなかった。この種の目的で用いることができる従来技術としては、例えば、米国特許第５８７５１２０号に開示された技術や米国特許第５８７５３４８号に開示された技術がある。
米国特許第５８７５１２０号には、ＣＰＵを省電力状態に移行させる際に、予め省電力状態から復帰する時間を指定する手法が開示されている。
また、米国特許第５８７５３４８号には、ＣＰＵがＰｏｒｔ６１などのＩ／Ｏアクセスを検出し、リフレッシュビット（Refresh Bit）を逃さない程度に、ＣＰＵの動作性能を落とすことにより、ＣＰＵによる消費電力を抑える方法が開示されている。
【０００６】
【発明が解決しようとする課題】
上記のように、ＣＰＵのパワーマネージメントによりコンピュータシステム全体の消費電力を低下させるため、従来から種々の手法が提案されている。上述した従来技術のうち、（２）の手法において、ｉｉ）のＩ／Ｏバウンドのタスクでデバイスから応答があるまで一定時間待つ必要がある場合にＣＰＵの消費電力を抑える方法は、ｉ）のＣＰＵの動作状態に応じて消費電力を抑える方法では対応しきれない場合（デバイスからの応答を待つ間の無駄な実行）に対しても、省電力状態へ移行させることができる。
しかしながら、上述したこの手法における実用的な手段はなく、上述した従来技術には、次のような問題があった。
【０００７】
Ｉ／Ｏバウンドのタスクでデバイスから応答があるまで一定時間待つ必要がある場合には一般に、次に示す方法が用いられている。
・ＢＩＯＳ（Basic Input/Output System：基本入出力システム）による制御において、メモリリフレッシュのタイマー（１５．２μｓｅｃ）を数えて一定時間待つ方法。
・ＯＳあるいはデバイスドライバにより、ＣＰＵのパフォーマンスを前もって計測し、一定時間、ＣＰＵのループインストラクションを使用して待つ方法。この場合、ＣＰＵのパフォーマンスに基づく方法では特殊なハードウェアを必要としないが、待ち時間の正確さに問題がある。
・ＯＳによるデバイスドライバの制御において、ＡＣＰＩのタイマーを使用して一定時間待つ方法。
上述した米国特許第５８７５１２０号に開示された手法は、上述のそれぞれの方法に対してＢＩＯＳやＯＳ、あるいはデバイスドライバを省電力状態から復帰する時間を指定するように変更する必要があるため、導入が容易ではない。
【０００８】
一方、米国特許第５８７５３４８号に開示された手法は、ＣＰＵの動作性能を落とす必要がない場合にも、動作性能を低下させてしまう場合があるため、システムのスループットの低下を招くおそれがあった。
【０００９】
また、ＣＰＵの動作性能を落とす手法（上記（１）の手法）は、通常は上述したようにシステムのスループットを低下させてしまうが、ゲームなど、アイドル・ループが多いタスクの場合には、スループットの低下は多くない。したがって、このような場合を特定してＣＰＵの動作性能を低下させることができれば、それだけ消費電力を抑えることが可能となる。
【００１０】
そこで本発明は、デバイスとの関係やプログラムの処理の過程でＣＰＵが待ち時間を必要とする場合に、このＣＰＵの動作性能を低下させて消費電力を抑え、システム全体の消費電力と熱の発生とを抑える実用的な手段を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記の目的を達成する本発明は、ＣＰＵの動作性能を動的に制御する次のようなＣＰＵ制御方法として実現することができる。すなわち、このＣＰＵ制御方法は、ＣＰＵが実行する命令コードと、この命令コードを実行する際の動作性能に関する情報とをＣＰＵにロードするステップと、この動作性能に関する情報に基づいて決定された値にＣＰＵの動作性能を動的に設定するステップと、設定された動作性能でＣＰＵがこの命令コードを実行するステップとを含むことを特徴とする。
【００１２】
さらに好ましくは、このＣＰＵ制御方法は、メモリ上のメモリ領域と、当該メモリ領域に展開された命令コードを実行する際の前記ＣＰＵの動作性能に関する情報とを対応付けた対応情報を生成するステップをさらに含む構成とすることができる。この場合、動作性能に関する情報をＣＰＵにロードするステップは、メモリから実行すべき命令コードを読み込むステップと、読み込まれた命令コードが展開されていたメモリ領域に関する対応情報からこの命令コードを実行する際の動作性能に関する情報を取得するステップとを含む。
あるいは、このＣＰＵ制御方法において、動作性能に関する情報をＣＰＵにロードするステップは、命令コードを含むプログラム中に記述された、所定の命令列を実行する際のＣＰＵの動作性能を指定する動作性能指定命令をＣＰＵに読み込むステップを含む構成とすることもできる。
【００１３】
また、本発明は、次のようなＣＰＵ制御方法としても実現することができる。すなわち、このＣＰＵ制御方法は、メモリ上に前記ＣＰＵの相異なる動作性能に対応付けられた複数のメモリ領域を設定するステップと、メモリから実行すべき命令コードを読み込んだ際に、この命令コードが展開されていたメモリ領域に基づき、このメモリ領域に対応付けられている動作性能でＣＰＵを動作させ、この命令コードを実行するステップとを含むことを特徴とする。
ここで、さらに詳しくは、メモリ上にメモリ領域を設定するステップは、メモリ空間を分割するページごとにＣＰＵの動作性能に関する情報を記録したページテーブルを作成するステップを含む。
【００１４】
また、上記の目的を達成する他の本発明は、次のように構成されたコンピュータ装置として実現することができる。すなわち、プログラムに記述された命令コードを読み込んで実行するＣＰＵと、このＣＰＵの動作クロックを制御するクロック制御手段とを備え、このＣＰＵは、所定の命令コードを実行する場合に、この命令コードに対して設定された動作性能に関する情報に基づいてクロック制御手段に指示を行い、動作クロックを動的に変更することを特徴とする。
ここで、クロック制御手段は、例えば、ＣＰＵに動作クロックを供給するクロック発信器及びそのコントローラで構成される。
【００１５】
さらに、このコンピュータ装置は、ＣＰＵの相異なる動作性能に対応付けられた複数のメモリ領域が設定されたメモリを備える構成とすることができる。この場合、ＣＰＵは、メモリから読み込んだ命令コードに関して、この命令コードが展開されていたメモリ領域に基づき、動作性能に関する情報を取得してクロック制御手段に指示を行う。
ここで、さらに好ましくは、このコンピュータ装置は、メモリ空間をページで管理し、当該ページ単位で前記ＣＰＵの動作性能を指定して前記メモリ領域に対応付けるメモリ管理手段を備える構成とすることができる。このメモリ管理手段としては、ページディレクトリやページテーブルを用いることができる。
さらにまた、このコンピュータ装置において、ＣＰＵは、プログラム中に記述された、所定の命令列を実行する際のＣＰＵの動作性能を指定する動作性能指定命令を読み込み、この動作性能指定命令にしたがってコントローラに指示を行うことができる。
【００１６】
また、本発明は、次のようなコンピュータ装置としても実現することができる。すなわち、このコンピュータ装置は、プログラムを読み込んで演算処理を行うと共に、外部デバイスに対してデータの入出力を行うＣＰＵと、このＣＰＵの動作クロックを制御するクロック制御手段とを備え、このＣＰＵは、Ｉ／Ｏバウンドの処理を行う場合に、クロック制御手段に指示を行い、動作クロックを動的に変更することを特徴とする。あるいは、このＣＰＵは、入力待ちのアイドル・ループ処理を行う場合に、クロック制御手段に指示を行い、動作クロックを動的に変更することを特徴とする。
【００１７】
さらにまた、上記の目的を達成する他の本発明は、クロック発信器を制御して動作クロックを動的に変更可能な次のように構成されたＣＰＵとして実現することができる。すなわち、このＣＰＵは、メモリから命令コードを読み込む命令読み込み手段と、読み込まれた命令コードに関して設定された動作性能に関する情報を取得する情報取得手段と、取得された動作性能に関する情報に基づいてクロック発信器のコントローラに動作クロックの変更指示を行う指示手段とを備える。そして、コントローラに対して行われた動作クロックの変更指示により動的に制御された動作クロックにしたがって動作することを特徴とする。
【００１８】
ここで詳しくは、この情報取得手段は、読み込まれた命令コードに関して、この命令コードが展開されていたメモリ領域に基づき、このメモリ領域に対応付けられた動作性能に関する情報を取得してコントローラに指示を行う。さらに好ましくは、この情報取得手段は、メモリ空間をページで管理するメモリ管理情報に基づいて、このページ単位でＣＰＵの動作性能に関する情報を取得する。
あるいは、この情報取得手段は、所定の命令列を実行する際のＣＰＵの動作性能を指定する命令コードが命令読み込み手段にて読み込まれた場合に、この命令コードを動作性能に関する情報として認識する。
【００１９】
また、本発明は、コンピュータを制御する次のようなプログラムとして実現することができる。すなわち、このプログラムは、メモリ上にＣＰＵの相異なる動作性能に対応付けられた複数のメモリ領域を設定する機能と、プログラム中の命令コードを、この命令コードを実行する際に所望するＣＰＵの動作性能に応じたメモリ領域にロードする機能とをコンピュータに実現させることを特徴とする。
あるいは、次のようなプログラムとしても実現することができる。すなわち、このプログラムは、所定の演算処理を実行させる演算手段と、自プログラム中の命令コードにて特定される所定の命令列を演算手段が実行する際における演算手段の動作性能を動的に変更させる動作制御手段としてコンピュータを機能させることを特徴とする。
これらのプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記憶媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。
【００２０】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
まず、本発明の概要を説明する。今日製品化されているＣＰＵには、動作性能を外部から制御できるものがある。例えば、米国トランスメタ（Transmeta）社のクルーソー（Crusoe）や、米国インテル（Intel）社のペンティアム（Pentium）などである。そして、ＯＳやアプリケーションによる制御の下、ＣＰＵの使用率に応じて当該ＣＰＵの動作性能を動的に変更するという手法によるパワーマネージメントがなされている。
【００２１】
本発明は、このようなＣＰＵに対して、動作性能を変更する条件として、対応するアーキテクチャにおけるインストラクションセット（命令セット）のセマンティクス（意味）を与えることにより、ＣＰＵのパワーマネージメントを行う。その手法として、本発明では次の２つの方法を提案する。
方法１：メモリに展開されたインストラクションセットの領域と、その領域で必要とするＣＰＵの動作性能を指定する。
方法２：所定のインストラクション・シーケンス（命令列）を指定し、そのインストラクションで必要とするＣＰＵの動作性能を指定する。
【００２２】
図１は、上記方法１に対応する実施の形態１によるＣＰＵのパワーマネージメントを実行するコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図１に示すコンピュータ装置は、演算手段であるＣＰＵ（Central Processing Unit：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２及びＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３と、同じくＭ／Ｂチップセット１０２及びＡＧＰ（Accelerated Graphics Port）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Peripheral Component Interconnect）バスを介してＭ／Ｂチップセット１０２に接続されたハードディスク１０５及びネットワークインターフェイス１０６と、さらにこのＰＣＩバスからブリッジ回路１０７及びＩＳＡ（Industry Standard Architecture）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピー（登録商標）ディスクドライブ１０８及びキーボード／マウス１０９とを備える。また、図１には記載していないが、このコンピュータ装置は、後述するようにＣＰＵ１０１の動作性能（動作クロック）を制御する手段として、クロック発信器及びそのコントローラを備える。
なお、図１は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、音声による入出力を行うためのサウンド機構を設けたり、ＡＴＡ（AT Attachment）などのインターフェイスを介してＣＤ−ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）のドライブを設けたりしても良い。
【００２３】
図２は、図１に示したコンピュータ装置を用いて、上述した方法１によるＣＰＵのパワーマネージメントを行う場合のシステム構成を示す図である。
図２において、ソフトウェアであるＯＳ２１０及びアプリケーションプログラム２２０は、図１のハードディスク１０５に格納され、メインメモリ１０３に読み込まれてＣＰＵ１０１の動作を制御する。また、コンピュータ装置は、ＣＰＵ１０１の動作性能制御手段としてクロック発信器１１２及びそのコントローラ１１１を備える。
本実施の形態では、ＯＳ２１０またはアプリケーションプログラム２２０の命令コードが読み込まれるメインメモリ１０３の領域に応じてＣＰＵ１０１の動作性能が指定される。そして、ＣＰＵ１０１は、命令コードが展開されていたメモリ領域にて特定される動作性能の指定値をコントローラ１１１に指示し、クロック発信器１１２を制御させることで指定された動作性能を実現する。
【００２４】
図示のように、ＯＳ２１０は、ページテーブル２１１と、カーネル（Kernel Function）２１２と、入出力待ちファンクション（I/O wait function）２１３とを備える。ここで、カーネル２１２は、ＣＰＵ１０１を制御して基本的な制御機能を実現する仮想的なソフトウェアブロックである。また入出力待ちファンクション２１３は、ＣＰＵ１０１を制御して信号の入出力における待ち状態の制御機能を実現する仮想的なソフトウェアブロックである。
ページテーブル２１１は、ページによるメモリ管理を行うメモリ管理手段であり、物理アドレスと論理アドレスとをマッピングするためのテーブルである。本実施の形態では、このページテーブル２１１のエントリに動作性能属性（Performance Attribute）を追加し、ＣＰＵ１０１がページテーブルエントリによってページごとに指定された動作性能で動作することによりパワーマネージメントを実現する。
【００２５】
図３は、ページテーブルエントリの記述例を示す図、図４は、図３のページテーブルエントリにおける動作性能属性の記述とＣＰＵ１０１の動作性能との関係を示す図表である。
図３を参照すると、「00:High」、「01:Middle1」、「10:Middle2」、「11:Low」の４段階の動作性能が設定され、２ビットのデータで記述される。また、図４を参照すると、ページテーブルエントリにおける動作性能属性の記述が「00:High」である場合に、ＣＰＵ１０１の動作速度（ＣＰＵクロック）が１.５ＧＨｚであり、同様に、動作性能属性の記述が「01:Middle1」の場合に、ＣＰＵクロックが１.０ＧＨｚであり、動作性能属性の記述が「10:Middle2」の場合に、ＣＰＵクロックが５００ＭＨｚであり、動作性能属性の記述が「11:Low」の場合に、ＣＰＵクロックが１００ＭＨｚである。
なお、ページテーブル２１１と共にページングによるメモリ管理に用いられるページディレクトリ（図示せず）を用い、ページテーブルエントリの代わりにページディレクトリエントリに動作性能属性を追加することによっても同様のパワーマネージメントを実現できる。
【００２６】
図５は、ページテーブルエントリにて指定された動作性能を反映させたメモリマップの例を示す図である。
図５を参照すると、ページテーブルエントリ（ＰＴＥ）０がハイパフォーマンス（図３のＨｉｇｈ）、ページテーブルエントリ１がローパフォーマンス（図３のＬｏｗ）、ページテーブルエントリ２がミドルフォーマンス１（図３のＭｉｄｄｌｅ１）、ページテーブルエントリ３がローパフォーマンス、ページテーブルエントリ４がハイパフォーマンスに指定されている。またメモリマップを参照すると、ページテーブルエントリ０、１に対応するメモリ領域５０１、５０２をＯＳ２１０が使用し、ページテーブルエントリ２、３、４に対応するメモリ領域５０３、５０４、５０５をアプリケーションプログラム２２０が使用している。
【００２７】
本実施の形態におけるＣＰＵ１０１は、上記ページテーブルエントリに記述された動作性能属性を読み込み、当該属性値に応じてコントローラ１１１に指示を行い、クロック発信器１１２のクロック周波数を変更させることができる。したがって、ＣＰＵ１０１は、メインメモリ１０３の所定のメモリ領域５０１〜５０５から実行すべき命令コードを読み込んだ際に、当該命令コードが展開されていたメモリ領域５０１〜５０５を認識し、当該メモリ領域５０１〜５０５に対応するページテーブルエントリ０〜ｎを参照することにより、当該命令コードを実行すべき動作性能の情報である動作性能属性を取得する。そして、当該属性値をコントローラ１１１に指示し、必要に応じてクロック発信器１１２のクロック周波数を変更することにより、所望の動作クロックで動作し、当該命令コードを実行することとなる。
図５において、ＯＳ２１０のうち、高速な処理を必要としない入出力待ちファンクション２１３は、ローパフォーマンスのメモリ領域５０２が割り当てられている。したがって、本実施の形態におけるＣＰＵ１０１は、１００ＭＨｚの低速な動作性能で当該入出力待ちファンクション２１３を実行する。同様にＯＳ２１０のカーネル２１２及びアプリケーションプログラム２２０の各命令コードが、提供する機能において要求されるＣＰＵ１０１の動作性能に応じて、メモリ領域５０１〜５０５の所定の位置に割り当てられることとなる。
【００２８】
図６は、本実施の形態においてＯＳ２１０をメインメモリ１０３へロードする際の動作を説明するフローチャートである。
まず、ＯＳ２１０のカーネル２１２が使用するメモリ領域（例えば図５のメモリ領域５０１、５０２）に対応するページテーブルエントリ（図５の例ではＰＴＥ０、１）に動作性能属性を設定する（ステップ６０１）。そして、カーネル２１２における高速な処理を要するセクションをハイパフォーマンスのメモリ領域（図５の例ではメモリ領域５０１）へロードし（ステップ６０２）、高速な処理を要しないセクションをローパフォーマンスのメモリ領域（図５の例ではメモリ領域５０２）へロードする（ステップ６０３）。
以上のようにして、ＯＳ２１０の機能ごとに適切なＣＰＵ１０１の動作性能が指定され、ＣＰＵ１０１は各機能を実行する際に、指定された動作性能で処理を実行することとなる。なお、ＯＳ２１０におけるいずれのセクションをどの動作性能で実行させるかについては、例えばＯＳ２１０の設計の際に設定することができ、ＯＳ２１０の起動時にかかる設定にしたがって各セクションをロードすることが可能である。
【００２９】
アプリケーションプログラム２２０においては、当該アプリケーションプログラム２２０を実行する際のＣＰＵ１０１の動作性能をユーザが指定することも可能である。
図７は、ユーザによるＣＰＵ１０１の動作性能の設定を受け付ける動作を説明するフローチャートである。
図７を参照すると、まず、ディスプレイ装置にアプリケーションプログラム２２０のプロパティ設定の画面を表示して実行速度の選択の入力を待つ（ステップ７０１）。プロパティ設定の画面は、例えば、ＯＳ２１０を米国マイクロソフト社のＷｉｎｄｏｗｓとする場合、マウスの右クリックで表示されるメニューの中からプロパティの項目を選択することにより表示するようなユーザインターフェイスとすることができる。
次に、ユーザによる実行速度を選択する操作が行われ（ステップ７０２）、選択結果がレジストリファイルに保存される（ステップ７０３）。
以上の操作により、アプリケーションプログラム２２０を実行する際のＣＰＵ１０１の動作性能が設定され、アプリケーションプログラム２２０は、メインメモリ１０３に読み込まれる際に、該当するメモリ領域が割り当てられることとなる。
【００３０】
次に、アプリケーションプログラム２２０の実行時におけるＣＰＵ１０１の動作を説明する。
図８は、アプリケーションプログラム２２０を起動し実行する際の処理の流れを示すフローチャート、図９は、アプリケーションプログラム２２０の実行時におけるＣＰＵ１０１の処理を説明するフローチャートである。
【００３１】
図８を参照すると、アプリケーションプログラム２２０の起動命令の入力に応じて、まず図７に示した操作で行われた当該アプリケーションプログラム２２０の実行速度の設定を検査する（ステップ８０１）。そして、検査により取得された実行速度の設定がＯＳ２１０のページテーブル２１１における該当するページテーブルエントリの動作性能属性にセットされる（ステップ８０２）。
次に、アプリケーションプログラム２２０がメインメモリ１０３にロードされ（ステップ８０３）、ＣＰＵ１０１にて実行される（ステップ８０４）。
【００３２】
ステップ８０４のＣＰＵ１０１によるアプリケーションプログラム２２０の実行は、次のように行われる。
図９を参照すると、まずＣＰＵ１０１がメインメモリ１０３を読み込み（ステップ９０１）、ＯＳ２１０のページテーブル２１１における該当するページテーブルエントリの動作性能属性の指定値を検査する（ステップ９０２）。そして、動作性能を変更する必要がなければ、そのまま当該アプリケーションプログラム２２０の命令コードを実行する（ステップ９０３、９０５）。
一方、動作性能を変更する必要がある場合、コントローラ１１１に動作性能の指定値を指示してクロック発信器１１２のクロック数を変更する動作性能変更処理を実行した後（ステップ９０３、９０４）、当該アプリケーションプログラム２２０の命令コードを実行する（ステップ９０５）。
【００３３】
図１０及び図１１は、本実施の形態によるメモリマッピングの様子を概略的に示す図である。
図１０に示すように、メモリマップ上に、ＣＰＵを高速に動作させるハイパフォーマンス領域１００１、中速で動作させるノーマルパフォーマンス領域１００２、低速で動作させるローパフォーマンス領域１００３を設定する。そして、高速な処理を要するセクションはハイパフォーマンス領域１００１を使用領域とし、高速な処理を要しないセクションはノーマルパフォーマンス領域１００２やローパフォーマンス領域１００３を使用領域とする。図示の例では、カーネルモードモジュールの使用領域をハイパフォーマンス領域１００１とし、短時間固定でデバイスからの応答を待つルーチン（Ｉ／Ｏバウンドのタスク）の使用領域をローパフォーマンス領域１００３としている。
また図１１に示すように、所定のアプリケーションプログラムにおいて、通常はハイパフォーマンス領域１００１を用いて高速な処理を実現し、入力待ちとなるアイドル・ループ処理がローパフォーマンス領域１００３を使用して処理速度を落とすように設定することも可能である。
【００３４】
次に、上記方法２に対応する実施の形態２によるＣＰＵのパワーマネージメントについて説明する。
実施の形態２は、予め決められた実施の形態１と同様に、図１に示したコンピュータ装置にて実行される。
図１２は、図１に示したコンピュータ装置を用いて、上述した方法２、すなわち、所定のインストラクション・シーケンス（命令列）を指定し、そのインストラクションで必要とするＣＰＵの動作性能を指定する方法によるＣＰＵのパワーマネージメントを行う場合のシステム構成を示す図である。
図１２において、ソフトウェアであるＯＳ１２１０及びアプリケーションプログラム１２２０は、図１のハードディスク１０５に格納され、メインメモリ１０３に読み込まれてＣＰＵ１０１の動作を制御する。
本実施の形態では、ＯＳ１２１０またはアプリケーションプログラム１２２０にＣＰＵ１０１の動作性能を指定する命令コード（以下、パフォーマンス指定命令と称す）が記述されており、ＣＰＵ１０１は、パフォーマンス指定命令に基づいてコントローラ１１１に動作性能の指定値を指示し、クロック発信器１１２を制御させることで指定された動作性能を実現する。
【００３５】
ＯＳ１２１０は、ＣＰＵ１０１の動作速度を変更して実行したいプログラムファンクションに対して所望のパフォーマンス指定命令を記述している。図１２に示す例では、入出力待ちファンクション（I/O wait function）１２１１にパフォーマンス指定命令が記述されている。また、アプリケーションプログラム１２２０に対しても、プログラム全体あるいは所定のプログラムファンクションごとにパフォーマンス指定命令を記述することができる。
【００３６】
本実施の形態におけるＣＰＵ１０１は、上記プログラム中に記述されたパフォーマンス指定命令を読み込み、当該命令に応じてコントローラ１１１に指示を行い、クロック発信器１１２のクロック周波数を変更させることができる。したがって、ＣＰＵ１０１は、ＯＳ１２１０やアプリケーションプログラム１２２０といったプログラムを実行する過程でパフォーマンス指定命令を読み込んだ際に、当該パフォーマンス指定命令に基づいて、所望の動作性能の指定値を取得する。そして、当該指定値をコントローラ１１１に指示し、必要に応じてクロック発信器１１２のクロック周波数を変更することにより、所望の動作クロックで動作し、当該命令コードを実行することとなる。
【００３７】
図１３は、プログラム中に記述されるパフォーマンス指定命令とＣＰＵ１０１の動作性能との関係を示す図表である。
図１３に示す例では、ＣＰＵ１０１の動作性能は、Ｈｉｇｈ（１.５ＧＨｚ）、Ｍｉｄｄｌｅ１（１.０ＧＨｚ）、Ｍｉｄｄｌｅ２（５００ＭＨｚ）、Ｌｏｗ（１００ＭＨｚ）の４段階が設定されており、さらに直前の動作性能に復帰するためのレジュームパフォーマンスが設定されている。各設定に対するパフォーマンス指定命令は、Ｈｉｇｈが「Jmp $+6 DB "@Hi_"」、Ｍｉｄｄｌｅ１が「Jmp $+6 DB "@Md1"」、Ｍｉｄｄｌｅ２が「Jmp $+6 DB "@Md2"」、Ｌｏｗが「Jmp $+6 DB "@Low"」、レジュームパフォーマンスが「Jmp $+6 DB "@Res"」である。
ＣＰＵ１０１は、プログラム中に記述された上記のようなパフォーマンス指定命令を読み込むと、当該パフォーマンス指定命令にて指示されたクロックまたは電圧で、その後のインストラクションを実行する。
【００３８】
次に、上記のようなパフォーマンス指定命令が記述されたプログラムを実行する際のＣＰＵ１０１の動作を説明する。
例として、プログラム中に、次のような命令シーケンスがあるものとする。
・ローパフォーマンス（Ｌｏｗ）命令：Jmp $+6 DB "@Low"
・高速な実行速度を必要としないプログラムファンクション
・レジュームパフォーマンス命令：Jmp $+6 DB "@Res"
【００３９】
図１４は、上記の命令シーケンスを読み込んだ際のＣＰＵの動作を説明するフローチャートである。なお、初期的にＣＰＵ１０１はハイパフォーマンスＹ（Ｈｉｇｈ）の動作性能（１.５ＧＨｚ）で動作しているものとする。
図１４を参照すると、ＣＰＵ１０１は、まずメインメモリ１０３の先読み（プリフェッチ）でローパフォーマンス命令を認識する（ステップ１４０１）。そして、コントローラ１１１に指示してクロック発信器１１２を制御することにより、ローパフォーマンス（Ｌｏｗ）の動作性能（１００ＭＨｚ）に変更する（ステップ１４０２）。この後、変更された動作性能で、高速な実行速度を必要としないプログラムファンクションを読み込んで実行する（ステップ１４０３）。
次に、ＣＰＵ１０１は、メインメモリ１０３の先読み（プリフェッチ）でレジュームパフォーマンス命令を認識する（ステップ１４０４）。そして、コントローラ１１１に指示してクロック発信器１１２を制御することにより、動作性能変更前のハイパフォーマンス（Ｈｉｇｈ）の動作性能（１.５ＧＨｚ）に戻す（ステップ１４０５）。これ以後、ＣＰＵ１０１は再びハイパフォーマンス（Ｈｉｇｈ）における高速な実行速度でプログラムファンクションを読み込み、実行する。
【００４０】
上述したように、本実施の形態は、ＣＰＵ１０１の動作状態に応じてパワーマネージメントを行うのではなく、命令シーケンス、すなわちＣＰＵ１０１がどのような処理を行うかに基づいてパワーマネージメントを行うため、Ｉ／Ｏバウンドの処理やアイドル・ループ処理のようにＣＰＵ１０１が無駄な処理を実行する場合に、きめ細かくＣＰＵ１０１の動作性能を落とし、消費電力の低下及び発熱の抑制を行うことができる。
また、ＣＰＵ１０１の待ち時間における消費電力を抑える機能を、メモリやＣＰＵ自体に組み込んだため、デバイスドライバを変更する必要はない。また、予め定められた処理の命令シーケンスを対象としてＣＰＵ１０１の動作性能を制御するため、不必要に動作性能を低下させてしまうおそれもない。
【００４１】
さらにまた、今後、ＣＰＵ１０１の実行速度はさらに高速化することが予想されるが、画像処理などの一部の分野ではＣＰＵ１０１の性能を十分に活かせるものの、主としてテキストデータを扱うワードプロセッサなどのようにＣＰＵ１０１の能力をそれほど必要としないアプリケーションプログラムも多い。
そこで、上記実施の形態のように、所定の処理を行う場合にＣＰＵ１０１の動作性能を低下させるのではなく、通常はある程度ＣＰＵ１０１の動作性能を抑えて動作させ、画像処理のようなＣＰＵ１０１の高い性能を要する処理や、そのような処理を多く含むゲームなどのアプリケーションソフトを実行する場合に個別にＣＰＵ１０１の動作性能を高めるといった制御を行うことも可能である。
【００４２】
【発明の効果】
以上説明したように、本発明によれば、デバイスとの関係やプログラムの処理の過程でＣＰＵが待ち時間を必要とする場合に、このＣＰＵの動作性能を低下させて消費電力を抑え、システム全体の消費電力と熱の発生とを抑えることを可能とする。
【図面の簡単な説明】
【図１】  実施の形態１によるＣＰＵのパワーマネージメントを実行するコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図２】  図１に示したコンピュータ装置を用いて、方法１によるＣＰＵのパワーマネージメントを行う場合のシステム構成を示す図である。
【図３】  実施の形態１におけるページテーブルエントリの記述例を示す図である。
【図４】  図３のページテーブルエントリにおける動作性能属性の記述とＣＰＵの動作性能との関係を示す図表である。
【図５】  実施の形態１におけるページテーブルエントリにて指定された動作性能を反映させたメモリマップの例を示す図である。
【図６】  実施の形態１において、ＯＳをメモリへロードする際の動作を説明するフローチャートである。
【図７】  実施の形態１において、ユーザによるＣＰＵの動作性能の設定を受け付ける動作を説明するフローチャートである。
【図８】  実施の形態１において、アプリケーションプログラムを起動し実行する際の処理の流れを示すフローチャートである。
【図９】  図８のアプリケーションプログラムの実行時におけるＣＰＵの処理を説明するフローチャートである。
【図１０】実施の形態１におけるメモリマッピングの様子を概略的に示す図であり、Ｉ／Ｏバウンドのタスクをローパフォーマンス領域に読み込んだ状態を示す。
【図１１】実施の形態１におけるメモリマッピングの様子を概略的に示す図であり、アイドル・ループ処理をローパフォーマンス領域に読み込んだ状態を示す。
【図１２】図１に示したコンピュータ装置を用いて、方法２によるＣＰＵのパワーマネージメントを行う場合のシステム構成を示す図である。
【図１３】実施の形態２におけるプログラム中に記述されるパフォーマンス指定命令とＣＰＵの動作性能との関係を示す図表である。
【図１４】実施の形態２において、命令シーケンスを読み込んだ際のＣＰＵの動作を説明するフローチャートである。
【符号の説明】
１０１…ＣＰＵ（Central Processing Unit：中央処理装置）、１０２…Ｍ／Ｂ（マザーボード）チップセット、１０３…メインメモリ、１０５…ハードディスク、１１１…コントローラ、１１２…クロック発信器、２１０、１２１０…ＯＳ（Operating System：オペレーティングシステム）、２１１…ページテーブル、２１２…カーネル（Kernel Function）、２１３、１２１１…入出力待ちファンクション（I/O wait function）、２２０、１２２０…アプリケーションプログラム
【図１】
0003685401.tif 000002
【図２】
0003685401.tif 000003
【図３】
0003685401.tif 000004
【図４】
0003685401.tif 000005
【図５】
0003685401.tif 000006
【図６】
0003685401.tif 000007
【図７】
0003685401.tif 000008
【図８】
0003685401.tif 000009
【図９】
0003685401.tif 000010
【図１０】
0003685401.tif 000011
【図１１】
0003685401.tif 000012
【図１２】
0003685401.tif 000013
【図１３】
0003685401.tif 000014
【図１４】
0003685401.tif 000015