(57)【要約】【課題】ＣＰＵの処理速度を必要以上に低下させず、かつ、駆動電力の無駄な消費をより効率よく抑える。【解決手段】ＯＳを介した処理を行なうたびに、この処理の負荷に適したクロック周波数の値を計算する。そして、ＣＰＵレジスタ１ａで管理されるクロック周波数の書換えを行なう前に、予めユーザが指定した省電力レベルに応じて計算されたクロック周波数の上限値のデータをＢＩＯＳ−ＲＯＭ６から読み出して、この値と、ＯＳの処理の種別に応じて計算されたクロック周波数の値を比較して低い方の値を判別する。そして、この判別された値をＣＰＵレジスタ１ａに書き込んで、ＣＰＵ１の動作周波数を制御する。【選択図】      図６
2005182473.tif 000002
【特許請求の範囲】
【請求項１】
処理動作を制御する制御手段を備える情報処理装置の前記制御手段の動作周波数を制御する周波数制御方法であって、
前記動作周波数の上限値の指定を受け付ける指定ステップと、
前記制御手段による処理動作の種別に応じて前記動作周波数の値を計算する計算ステップと、
前記計算ステップにより計算された動作周波数の値と、前記指定ステップにより指定された上限値を比較する比較ステップと、
前記比較ステップによる比較の結果、前記計算ステップにより計算された動作周波数の値が前記指定ステップにより指定された上限値未満である場合には、前記計算ステップにより計算された値の動作周波数で前記制御手段が動作するように制御し、前記計算ステップにより計算された動作周波数の値が前記上限値以上である場合には、前記上限値の動作周波数で前記制御手段が動作するように制御する周波数制御ステップと
を有することを特徴とする周波数制御方法。
【請求項２】
前記情報処理装置は、前記動作周波数の上限値に関する入力操作を受け付ける入力手段を備え、
前記指定ステップは、前記入力手段による入力操作にしたがって前記動作周波数の上限値を指定することを特徴とする請求項１に記載の周波数制御方法。
【請求項３】
前記情報処理装置は、前記制御手段に駆動電力を供給する電源回路を備え、
前記電源回路に外部電源が供給されているか否かを検出する電源検出ステップと、
この電源検出ステップにより、前記電源回路に外部電源が供給されていないことが検出された際に前記動作周波数の上限値を指定する第２の指定ステップと
を有し、
前記比較ステップは、前記計算ステップにより計算された動作周波数の値と、前記第２の指定ステップにより指定された動作周波数の上限値を比較し、
前記制御ステップは、前記比較ステップによる比較の結果、前記計算ステップで計算された動作周波数の値が前記第２の指定ステップにより指定された上限値未満である場合には、前記計算ステップにより計算された値の動作周波数で前記制御手段が動作するように制御し、前記計算ステップにより計算された動作周波数の値が前記上限値以上である場合には、前記上限値の動作周波数で前記制御手段が動作するように制御する
ことを特徴とする請求項１に記載の周波数制御方法。
【請求項４】
前記情報処理装置は、前記制御ステップにより制御された前記動作周波数の値を記憶する記憶手段を備え、
前記記憶手段に記憶された動作周波数の値が前記計算ステップにより計算された動作周波数の値と異なる場合に、この値を前記計算ステップにより計算された動作周波数の値に書き換える書換えステップと、
前記記憶手段において、前記書換えステップにより書き換えられた動作周波数の値を読み出す読出しステップと
を有することを特徴とする請求項１に記載の周波数制御方法。
【請求項５】
処理動作を制御する処理手段と、
前記処理手段による処理動作の種別に応じて前記動作周波数の値を計算する計算手段と、
前記動作周波数の上限値の指定を受け付ける指定手段と、
前記計算手段により計算された動作周波数の値と、前記指定手段により指定された上限値を比較する比較手段と、
前記比較手段による比較の結果、前記計算手段により計算された動作周波数の値が前記指定手段により指定された上限値未満である場合には、前記計算手段により計算された値の動作周波数で前記制御手段が動作するように制御し、前記計算手段により計算された動作周波数の値が前記上限値以上である場合には、前記上限値の動作周波数で前記制御手段が動作するように制御する周波数制御手段と
を具備したことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばパーソナルコンピュータ等の情報処理装置のクロック周波数を制御する周波数制御方法および情報処理装置に関する。
【背景技術】
【０００２】
従来、例えば、ノート型パーソナルコンピュータ（ノートＰＣ）などの、情報処理装置の駆動電力の消費量は、ＣＰＵのクロック周波数に比例して増加する。そこで、ノートＰＣがバッテリから供給される駆動電力により動作する場合に無駄な駆動電力の消費を抑えるために、例えば、ＯＳ（オペレーティングシステム）の起動時および終了時などにおける高い負荷を要する処理を行なう際にはＣＰＵのクロック周波数を高くし、負荷の低い処理を行なう際にはクロック周波数を低くするように制御するものがある（例えば特許文献１参照）。
【０００３】
また、バッテリの残り容量が少ないなどの理由で駆動電力の消費を抑えたい場合に、ＣＰＵのクロック周波数を、ＯＳの処理動作の種別に関係なく、ユーザ指定のクロック周波数に切り替えるように制御するものがある（例えば特許文献２参照）。
【０００４】
また、ノートＰＣにＡＣアダプタが接続されているか否かを判別して、ＡＣアダプタの非接続時、つまりバッテリからの駆動電力のみで動作している場合に、ＡＣアダプタの接続時と比較して低いクロック周波数でノートＰＣが動作するように制御するものがある（例えば特許文献３参照）。
【特許文献１】特開２００１−５６６１号公報
【特許文献２】特開平１１−７３２３７号公報
【特許文献３】特開平６−３０１６４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前記特許文献２および特許文献３に開示された手法では、必要に応じてＣＰＵのクロック周波数を低くすることによりバッテリからの駆動電力の消費を低減することができるが、ＯＳの処理動作の種別に関係なくクロック周波数が一定となるので、前記特許文献１に開示された手法のようにＯＳの処理動作に応じてクロック周波数が変化しない。よって、あるクロック周波数を設定した場合に、高い負荷を要しない処理行なうような場合には、処理動作に対してクロック周波数が高い状態に保持されているため、このような場合には駆動電力を無駄に消費してしまう。
【０００６】
このように、前記特許文献１に開示された手法では、必要な処理動作に応じて、必要なクロック周波数に設定できるという、効率面で優れた点があるが、例えばバッテリ駆動で対応する場合など、より電力消費を抑えたい場合などに、動作速度よりもバッテリ寿命の長時間化を優先させたい場合がある。
【０００７】
そこで、本発明の目的は、かかる問題を解決し、処理にかかる速度を必要以上に低下させず、かつ、駆動電力の無駄な消費をより効率よく抑えることが可能になる周波数制御方法および情報処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
すなわち、本発明に係わる周波数制御方法は、処理動作を制御する制御手段を備える情報処理装置の前記制御手段の動作周波数を制御する周波数制御方法であって、前記動作周波数の上限値の指定を受け付ける指定ステップと、前記制御手段による処理動作の種別に応じて前記動作周波数の値を計算する計算ステップと、前記計算ステップにより計算された動作周波数の値と、前記指定ステップにより指定された上限値を比較する比較ステップと、前記比較ステップによる比較の結果、前記計算ステップにより計算された動作周波数の値が前記指定ステップにより指定された上限値未満である場合には、前記計算ステップにより計算された値の動作周波数で前記制御手段が動作するように制御し、前記計算ステップにより計算された動作周波数の値が前記上限値以上である場合には、前記上限値の動作周波数で前記制御手段が動作するように制御する周波数制御ステップとを有することを特徴とする。
【発明の効果】
【０００９】
本発明に係わる周波数制御方法では、制御手段の処理動作の種別に応じて動作周波数の値を制御できる上、かつ、動作周波数は上限値以下の値となる。よって、処理速度を必要以上に低下させず、かつ、駆動電力の消費をより効率よく抑えることができる。
【発明を実施するための最良の形態】
【００１０】
以下本発明をノート型のパーソナルコンピュータ（以下、ノートＰＣと称する）に適用した場合の実施形態について図面を参照して説明する。  
図１は、本発明の実施形態にしたがったノートＰＣの内部構成を示すブロック図である。  
図１では、ノートＰＣの内部回路において、本発明に関連する部分の構成のみについて図示する。本実施形態のノートＰＣは、該ノートＰＣ全体の制御を司るＣＰＵ１が設けられる。ＣＰＵ１は、ノースブリッジ（ｎｏｒｔｈ  ｂｒｉｄｇｅ：以後、ＮＢと称す）２と接続され、ＮＢ２は、サウスブリッジ（ｓｏｕｔｈ  ｂｒｉｄｇｅ：以後、ＳＢと称す）３と接続される。
【００１１】
ＮＢ２は、例えば、該ＮＢ２に接続されるデバイスであるＣＰＵ１との間のデータ及びアドレス変換などの処理を実行するブリッジ回路である。ＳＢ３は、このＳＢ３を介して接続されるデバイス間でデータの入出力処理などを実行するブリッジ回路である。また、ＮＢ２は、ＣＰＵ１が動作した時のワークエリアとなるメインメモリ４と接続され、また、表示デバイスであるＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶ディスプレイ）５と接続される。
【００１２】
ＳＢ３は、ＢＩＯＳ−ＲＯＭ６およびＨＤＤ（ハードディスクドライブ）７と接続される。ＢＩＯＳ−ＲＯＭ６には、ノートＰＣの基本入出力制御およびＣＰＵ１のクロック周波数の制御を行なうためのプログラムが記憶される。
【００１３】
また、ＢＩＯＳ−ＲＯＭ６には、ノートＰＣが行なっている処理の種別に応じてＣＰＵ１のクロック周波数を変更する処理、および、後述する省電力ユーティリティによる制御にしたがって、クロック周波数の上限値を変更する処理に係る制御処理用プログラム、および制御に関するパラメータ、例えばＣＰＵ１のクロック周波数の値が記憶される。また、ＢＩＯＳ−ＲＯＭ６は、各種プログラムおよびパラメータをＣＰＵ１の制御によりリード可能なメモリである。
【００１４】
ＣＰＵ１内には、該ＣＰＵ１のクロック周波数を管理するためのＣＰＵレジスタ１ａが設けられる。ＣＰＵ１は、このＣＰＵレジスタ１ａで管理されるクロック周波数で動作する。ＣＰＵレジスタ１ａで管理されるクロック周波数の値は、ＢＩＯＳ−ＲＯＭ６を介した制御によりリード／ライト可能である。
【００１５】
ＨＤＤ７は、不揮発性の記憶媒体であり、ノートＰＣの電源が投入されていない状態でもデータを記憶可能なデバイスである。このＨＤＤ７には、ＯＳ（オペレーティングシステム）およびアプリケーションプログラムなどが記憶され、これらのプログラムを実行する際は、当該プログラムは適宜メモリ４に展開される。ＯＳは省電力ユーティリティのプログラムを含んでいる。
【００１６】
省電力ユーティリティは、ユーザによるキー入力にしたがって、ＣＰＵ１のクロック周波数の複数段階の上限値に対応した省電力レベルを指定する機能を有するプログラムである。省電力レベルは、例えば、“高”，“中”，“低”の３段階で示され、それぞれの省電力レベルには、異なるクロック周波数の上限値がそれぞれ対応付けられており、省電力レベルの指定にともなって、これらと対応した上限値以下のクロック周波数でＣＰＵ１が動作するようになる。
【００１７】
ＳＢ３から延出されるバスには、エンベデッドコントローラ（Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ：以後、ＥＣと称す）８が接続される。ＥＣ８は、キーボード９と接続され、このキーボード９が押下された際にこれを検出し、押下されたキーに対応した制御信号をＣＰＵ１に出力する。
【００１８】
省電力レベルの選択は、ノートＰＣを起動させた状態で、キーボード９による所定の操作を行なって、ＣＰＵ１により省電力ユーティリティをＨＤＤ７から読み出させ、省電力レベルの設定用画面をＬＣＤ５に表示させる。ユーザは、この設定用画面に表示された指示にしたがってキーボード９の操作を行なうことで省電力レベルの設定を行なう。
【００１９】
また、ＥＣ８は電源回路１０と接続される。電源回路１０は、電源コード１１を介して電源プラグ１２と接続される。電源回路１０は、ＣＰＵ１などの各デバイスへ必要な駆動電力を供給する。また、電源回路１０はバッテリ１３と接続される。電源回路１０は、電源プラグ１２を介して外部電源が得られない場合には、バッテリ１３から駆動電力を得て、これを各デバイスに供給する。
【００２０】
次に、本実施形態のノートＰＣによるＣＰＵ１のクロック周波数の制御処理について説明する。  
図２は、図１に示したノートＰＣがＣＰＵ１のクロック周波数の上限値を設定する手順の概要を示す図である。  
なお、図中のＢＩＯＳはＢＩＯＳ−ＲＯＭ６に記憶されるプログラムであり、ＯＳとのアクセスを行なうためのプログラムであるＯＳインタフェース部と、各種演算処理を行なうためのプログラムであるコア部を含んでいる。
【００２１】
まず、ユーザがＯＳの省電力ユーティリティを起動して、前述した省電力レベルの設定用画面にしたがって所望の省電力レベルを指定すると、この省電力レベルに関わる処理がＢＩＯＳのＯＳインタフェース部の機能による処理に移行する。
【００２２】
ＢＩＯＳのＯＳインタフェース部の機能を実行して、省電力ユーティリティにより指定された省電力レベルを認識すると、省電力レベルに関わる処理がＢＩＯＳのコア部の機能による処理に移行する。そして、コア部の機能を実行して、省電力レベルに対応付けられたクロック周波数が求められ、このクロック周波数の値にＣＰＵ１のＣＰＵレジスタ１ａで管理されるクロック周波数の値が対応するように制御される。
【００２３】
以下、ユーザが省電力ユーティリティにより省電力レベルを設定してから、この設定された省電力レベルに対応したクロック周波数の上限値をＢＩＯＳの実行を介して計算する処理について説明する。
【００２４】
図３は、省電力レベルの指定に関する処理内容を示すフローチャートである。図４は、図２に示したＢＩＯＳのＯＳインタフェース部を介した処理内容を示すフローチャートである。図５は、図２に示したＢＩＯＳのコア部を介した処理内容を示すフローチャートである。
【００２５】
まず、ＣＰＵ１は、ユーザのキー入力にしたがって省電力ユーティリティを起動させる。そして、ＬＣＤ５に表示された省電力レベルの設定用画面における指示にしたがってユーザが省電力レベルを指定すると、ＣＰＵ１は、この省電力レベルを示すデータをメモリ４に記憶する（ステップＡ１）。そして、ＣＰＵ１は、ＢＩＯＳ−ＲＯＭ６からＢＩＯＳのＯＳインタフェース部に関するプログラムを読み出して実行し、ステップＡ１の処理によりメモリ４に記憶された省電力レベルのデータを読み出す（ステップＡ２）。つまり、省電力レベルに関する処理が、省電力ユーティリティによる処理からＢＩＯＳのＯＳインタフェース部による処理に移ることになる
ＣＰＵ１は、一度に複数の処理を見かけ上実行する機能であるハイパースレッディング（ｈｙｐｅｒ  ｔｈｒｅａｄｉｎｇ）機能を有している。ただし、ＣＰＵ１がハイパースレッディング機能にしたがった処理を行なうには、ＨＤＤ７におけるＯＳがハイパースレッディング機能に最適化されたシステムである必要がある。
【００２６】
ハイパースレッディング機能を有効とするか無効とするかは、ユーザが必要に応じてＢＩＯＳの実行を介して切り替えることができる。手順としては、ノートＰＣを起動させた状態で所定のキー操作を行なうことで、ＣＰＵ１がＢＩＯＳのセットアッププログラムをＢＩＯＳ−ＲＯＭ６から読み出し、ＢＩＯＳのセットアップ画面をＬＣＤ５に表示させる。
【００２７】
ユーザは、このセットアップ画面に表示される指示にしたがってキーボード９の操作を行なうことでハイパースレッディング機能を有効とするか無効とするかの設定を行なう。この無効か有効かを示す情報は図示しない不揮発性のメモリ例えばＣＭＯＳメモリ等に記憶される。
【００２８】
ステップＡ２の処理後、ＣＰＵ１はＢＩＯＳ−ＲＯＭ６にアクセスし、ＣＰＵ１のハイパースレッディング機能が有効に設定されているか無効に設定されているかを判別する（ステップＢ１）。
【００２９】
ステップＢ１の処理により、ハイパースレッディング機能が有効に設定されていることが判別された場合（ステップＢ１のＹＥＳ）には、ＣＰＵ１は、ＢＩＯＳ−ＲＯＭ６からＢＩＯＳのＯＳインタフェース部に関するプログラムを読み出して実行し、ＯＳがＣＰＵ１のハイパースレッディング機能の省電力機能に対応しているかどうか、つまり、ＯＳが、ハイパースレッディング機能が有効である際に、省電力レベルにしたがったクロック周波数の上限値の設定を実現するシステムであるか否かを判別する（ステップＢ２）。
【００３０】
ステップＢ２の処理により、ＯＳがＣＰＵ１のハイパースレッディング機能の省電力機能に対応していないと判別された場合（ステップＢ２のＹＥＳ）には、ＣＰＵ１は、ＢＩＯＳによりクロック周波数の上限値の設定が行なえるように、ＢＩＯＳのコア部に関するプログラムをＢＩＯＳ−ＲＯＭ６から読み出して実行する（ステップＢ３）。つまり、省電力レベルに関する処理がＢＩＯＳのＯＳインタフェース部による処理からＢＩＯＳのコア部による処理に移ることになる。
【００３１】
一方、ステップＢ１およびステップＢ２のいずれかの処理で「ＮＯ」と判別された際は、ＣＰＵ１はＯＳを実行する（ステップＢ４）。つまり、つまり、省電力レベルに関する処理がＢＩＯＳのＯＳインタフェース部による処理からＯＳによる処理に移ることになる。
【００３２】
これは、ハイパースレッディング機能の省電力機能に対応したＯＳを将来的にノートＰＣにインストールした際は、クロック周波数の制御を、ＢＩＯＳを介してではなくＯＳを介して実行した方がＢＩＯＳを介してクロック周波数の制御を行なう場合と比較して、処理効率の向上が見込めるからである。
【００３３】
ステップＢ３の処理後、ＣＰＵ１は、ＢＩＯＳのコア部に関するプログラムにしたがって、ステップＡ１の処理でメモリ４に記憶された省電力レベルのデータを読み出す（ステップＣ１）。
【００３４】
次に、ＣＰＵ１は、ステップＣ１の処理で読み出した省電力レベルに対応したクロック周波数の上限値を計算する。この計算を行なうために、ＢＩＯＳ−ＲＯＭ６には、ＣＰＵ１を最高性能で動作させるクロック周波数である最高性能値のデータ、および省電力レベルに対応した係数が記憶されており、ステップＣ２の処理では、ＣＰＵ１は、ステップＡ１の処理でメモリ４に記憶された省電力レベルに対応した係数を導き、この係数に最高性能値を掛けて上限値を計算し、これをメモリ４に記憶する（ステップＣ２）。
【００３５】
また、ＢＩＯＳ−ＲＯＭ６には、上限値とは別に、ＣＰＵ１の現在のクロック周波数のデータが記憶されており、ＣＰＵ１は、ステップＣ２の処理により計算されたクロック周波数の上限値と現在のクロック周波数をＢＩＯＳ−ＲＯＭ６から読み出して、現在のクロック周波数が、ステップＣ２の処理で計算した上限値より大きいか否かを判別する（ステップＣ３）。ＣＰＵ１は、後述するように、ＯＳを介して行なっている処理の種別に応じてＣＰＵ１のクロック周波数を変更する処理を行なうことができるが、ここでは行なわないものとして説明する。
【００３６】
ステップＣ３の処理で「ＹＥＳ」と判別された際には、ＣＰＵ１は、ＣＰＵレジスタ１ａに記憶されている、ＣＰＵ１のクロック周波数のデータを、ステップＣ２の処理で計算された上限値のデータに書き換える（ステップＣ４）。これによりＣＰＵ１は、ステップＣ２の処理で計算された上限値のクロック周波数で動作するようになる。なお、ステップＢ４の処理後は、ステップＣ１からＣ４と同様の処理を行なう。ただし、これらの処理はＯＳを介して実行される。
【００３７】
次に、ＯＳを介して行なっている処理の種別、および、省電力ユーティリティによる省電力レベルの指定に基づいてＣＰＵ１のクロック周波数を変更する処理について図６を参照して説明する。ＣＰＵ１は、ＯＳを介した処理を行なうたびに、この処理の種別に応じたクロック周波数、つまり、処理速度を低下させずに、かつ、できるだけ低いクロック周波数を計算する（ステップＤ１）。具体的には、ＣＰＵ１は負荷の高い処理を行なう際には、その他の待ち時間を要しない処理を行なう場合に必要なクロック周波数に対して高いクロック周波数を導く。
【００３８】
さらにアドレス変換を経てＣＰＵレジスタ１ａにアクセスして、このＣＰＵレジスタ１ａに記憶されたクロック周波数のデータを、ＯＳの処理の種別に応じて計算されたクロック周波数のデータに書き換える（ステップＤ２）。
【００３９】
また、ＣＰＵ１は、ステップＤ１，Ｄ２の処理とは別に、前述した省電力レベルの指定にしたがって、ステップＡ１，Ａ２，Ｂ１〜Ｂ４，Ｃ１，Ｃ２の処理を行なっている。ＣＰＵ１は、ステップＤ１の処理により、ＯＳの処理に応じたクロック周波数が計算された際に、この計算された値をＣＰＵレジスタ１ａに書き込まずに、ＢＩＯＳのコア部に関するプログラムにしたがって、ステップＣ３およびＣ４の処理の代わりに以下の処理を割込み処理として実行する。
【００４０】
まず、ＣＰＵ１は、ＢＩＯＳ−ＲＯＭ６にアクセスして、ステップＣ２の処理が予め行なわれたか、つまり省電力ユーティリティによる省電力レベルの指定にしたがったクロック周波数の上限値が計算された否かを判別する（ステップＥ１）。この判別の結果、クロック周波数の上限値が計算されていない場合（ステップＥ１のＮＯ）には、ステップＥ５の処理が行なわれる。一方、クロック周波数の上限値が既に計算されている場合（ステップＥ１のＹＥＳ）には、ステップＤ２の処理を行なわずに、上限値のデータをＢＩＯＳ−ＲＯＭ６から読み出してメモリ４に書き込む（ステップＥ２）。
【００４１】
次に、ステップＤ１の処理で計算したクロック周波数のデータをメモリ４に書き込む（ステップＥ３）。  
そして、ＣＰＵ１は、ＢＩＯＳのコア部に関するプログラムを実行し、ステップＤ１の処理により計算されてメモリ４に書き込まれたクロック周波数の値が、ステップＣ２の処理により計算されてメモリ４に書き込まれたクロック周波数の上限値より低いか否かを判別する（ステップＥ４）。
【００４２】
ステップＥ４の処理により「ＹＥＳ」と判別された際には、ＣＰＵ１はメモリ４にアクセスして、ステップＥ３の処理によりメモリ４に書き込まれたデータである、ＯＳの処理の種別に応じて計算されたクロック周波数のデータを読み出す。そして、ＣＰＵ１はＣＰＵレジスタ１ａにアクセスして、このＣＰＵレジスタ１ａで管理されているクロック周波数のデータを、ステップＥ３の処理によりメモリ４に書き込まれたクロック周波数のデータに書き換える（ステップＥ５）。これにより、ＣＰＵ１は、ＯＳの処理内容に応じて計算されたクロック周波数で動作する。
【００４３】
一方、ステップＥ４の処理により「ＮＯ」と判別された際には、ＣＰＵ１は、ステップＥ２の処理でメモリ４に書き込まれたクロック周波数の上限値のデータを読み出す。そして、ＣＰＵ１はＣＰＵレジスタ１ａにアクセスして、このＣＰＵレジスタ１ａで管理されているクロック周波数のデータを、メモリ４から読み出したクロック周波数の上限値のデータに書き換える（ステップＥ６）。これにより、ＣＰＵ１は、ユーザが指定した省電力レベルに応じて計算されたクロック周波数で動作する。また、ＣＰＵ１は、ステップＥ３の値をメモリ４に書き込む。
【００４４】
つまり、ステップＥ１からステップＥ６までの処理は、ステップＤ１，Ｄ２の処理に対する割込み処理であり、ＯＳの処理に応じて計算されたクロック周波数と、ユーザが指定した省電力レベルに応じて計算されたクロック周波数のうち低い方のクロック周波数が、ＣＰＵ１の新たなクロック周波数として反映されることになる。
【００４５】
これにより、ＣＰＵ１のクロック周波数は、ＯＳの処理の種別に応じて変化し、かつ、その値は省電力レベルに応じて計算された上限値以下の値となるので、必要以上に処理速度を低下させることなく、かつ、駆動電力の無駄な消費をより効率よく抑えることができる。例えば、ノートＰＣが外部電源ではなくバッテリ１３から供給される駆動電力により動作している場合に、負荷の軽い処理を行なう処理を行なう際でも、駆動電力の無駄な消費を抑えることができる。
【００４６】
図７は、ＣＰＵ１のクロック周波数の読出し処理の内容を示すフローチャートである。  ＣＰＵ１は、ＣＰＵレジスタ１ａで管理されるクロック周波数の書換え後にＢＩＯＳ−ＲＯＭ６に記憶されるデータであるＣＰＵ１の現在のクロック周波数を読み出し、この読み出した値が、ステップＤ１の処理で計算されたクロック周波数の値と一致するか否かの確認を行なっている（ステップＦ１）。この読出し処理はＯＳを介して行われるが、ステップＥ６の処理によりＢＩＯＳの実行を介してクロック周波数の値が変更された際には、ＢＩＯＳ−ＲＯＭ６に記憶される現在のクロック周波数がＯＳの処理の種別に応じて計算されたクロック周波数と一致しないことになり、これをＣＰＵ１はエラーと判断する。
【００４７】
このエラーを防ぐために、ＯＳの実行を介したクロック周波数の読出し処理を行なう際に、ＢＩＯＳのコア部のプログラムにしたがった割込み処理を行なう。ここで、ＣＰＵ１による現在のクロック周波数の読み出し対象エリアはＢＩＯＳ−ＲＯＭ６のアクセスエリア６ａであり、このエリア６ａには、ステップＥ３の処理によりＣＰＵレジスタ１ａに書き込まれたクロック周波数のデータが記憶されているものとする。
【００４８】
割込み処理の手順について説明する。ＣＰＵ１は、ステップＤ１の処理後、ステップＦ１の処理、つまりアドレス変換を経てエリア６ａへのアクセスを行なうことによる現在のクロック周波数の読み出し処理を行なう前に、このエリア６ａに記憶されたクロック周波数のデータを、ステップＥ３の処理によりメモリ４に保存されたクロック周波数のデータに書き換える（ステップＧ１）。
【００４９】
つまり、ＣＰＵ１がエリア６ａから読み出すクロック周波数の値は、ステップＤ１の処理によりＯＳの処理の種別に応じて計算されたクロック周波数の値である。よって、ステップＥ６の処理によりＢＩＯＳの実行を介してクロック周波数の値が変更された際でも、前述したエラーを防止することができる。
【００５０】
なお、前述した実施形態では、ユーザが省電力ユーティリティにより省電力レベルを指定して、この省電力レベルに対応した、クロック周波数の上限値を計算する手順としたが、これに限らず、ユーザが省電力ユーティリティによりキーボード９による入力操作を介して、前述した最高性能値以下の範囲でクロック周波数の上限値を直接設定できるようにしてもよい。
【００５１】
次に、前述した周波数制御処理の変形例を図８を参照して説明する。  
この変形例では、ユーザによる省電力レベルの指定に代えて、外部電源の供給の有無に応じてクロック周波数を自動的に計算して、これをＣＰＵ１の新たなクロック周波数として設定する。
【００５２】
外部電源の電源電圧とバッテリ１３の電源電圧は異なるので、ＥＣ８は、電源回路１０に供給される電源電圧の値を検出して、外部電源が供給されているか否かを検出する（ステップＨ１）。この検出の結果、外部電源が供給されていることが検出された際（ステップＨ１のＹＥＳ）には、クロック周波数の上限値の計算を行なわずに、ステップＤ１，Ｄ２の処理が行なわれる。
【００５３】
一方、外部電源が供給されていないことが検出された際（ステップＨ１のＮＯ）には、バッテリ駆動時用に予め設定されたクロック周波数と対応した省電力レベルをメモリ４に書き込む（ステップＨ２）。以後は、ステップＢ１以降と同様の処理を行ない。ステップＣ２の処理では、バッテリ駆動時用のクロック周波数の上限値が計算される。ここでは、ノートＰＣの駆動電力の消費を抑えるため、外部電源が供給されている場合のクロック周波数に対して、低い値をクロック周波数の上限値として設定する。
【００５４】
そして、ステップＥ４の処理が行なわれて、ＯＳの処理の種別に応じて計算されたクロック周波数の値と、バッテリ駆動時用に計算されたクロック周波数のうち低い方の値を判別し、ＯＳの処理の種別に応じて計算されたクロック周波数がステップＥ５の処理によりＣＰＵレジスタ１ａに書き込まれるか、バッテリ駆動時用に計算されたクロック周波数がステップＥ６の処理によりＣＰＵレジスタ１ａに書き込まれることになる。これにより、外部電源が供給されていない、つまりバッテリ１３による駆動電力でノートＰＣが動作している場合には、ユーザにより特別な設定を行なわずとも、ＯＳの処理に応じてクロック周波数を適切に変化させつつ、駆動電力の無駄な消費をより効率よく抑えることが出来る。
【００５５】
なお、この発明は、前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施形態にしたがったノートＰＣの内部構成を示すブロック図。
【図２】図１に示したノートＰＣがＢＩＯＳを介してＣＰＵ１のクロック周波数の上限値を設定する手順の概要を示す図。
【図３】省電力レベルの指定に関する処理内容を示すフローチャート。
【図４】図２に示したＢＩＯＳのＯＳインタフェース部を介した処理内容を示すフローチャート。
【図５】図２に示したＢＩＯＳのコア部を介した処理内容を示すフローチャート。
【図６】ＣＰＵ１のクロック周波数の切り替え処理の内容を示すフローチャート。
【図７】ＣＰＵ１のクロック周波数の読出し処理の内容を示すフローチャート。
【図８】クロック周波数の制御処理の変形例の手順を示すフローチャート。
【符号の説明】
【００５７】
１…ＣＰＵ、２…ＮＢ（Ｎｏｒｔｈ  Ｂｒｉｄｇｅ：ノースブリッジ）、３…ＳＢ（Ｓｏｕｔｈ  Ｂｒｉｄｇｅ：サウスブジッジ）、４…メインメモリ、５…ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶ディスプレイ）、６…ＢＩＯＳ−ＲＯＭ、７…ＨＤＤ、８…ＥＣ（Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ：エンベデッドコントローラ）、９…キーボード、１０…電源回路、１１…電源コード、１２…電源プラグ、１３…バッテリ。
【図１】
2005182473.tif 000003
【図２】
2005182473.tif 000004
【図３】
2005182473.tif 000005
【図４】
2005182473.tif 000006
【図５】
2005182473.tif 000007
【図６】
2005182473.tif 000008
【図７】
2005182473.tif 000009
【図８】
2005182473.tif 000010