図1は、情報処理装置の一例を示す図である。
情報処理装置は、例えばノート型パーソナルコンピュータ、換言すれば、ノート型PC100である。情報処理装置は、ノート型PC100に限られず、例えば、タブレット型のコンピュータ、携帯情報端末等であってもよく、後述するバッテリ51により動作することが可能な情報処理装置であればよい。
ノート型PC100は、CPU(Central Processing Unit)1と、システムコントローラ2と、メモリ3と、フラッシュメモリ4と、電源制御部5と、ディスクコントローラ6と、グラフィクスコントローラ7と、入出力コントローラ8と、USB(Universal Serial Bus)ホストコントローラ9とを含む。システムコントローラ2は、CPU1及びメモリ3に接続される。システムコントローラ2は、バス10を介して、フラッシュメモリ4、電源制御部5、ディスクコントローラ6、グラフィクスコントローラ7、入出力コントローラ8及びUSBホストコントローラ9と接続される。バス10には、例えばPCI Express又はPCIのような拡張用バス11が接続される。
システムコントローラ2は、省電力処理に用いられる情報を格納する設定テーブル21を含む。フラッシュメモリ4は、BIOS(Basic Input/Output System、基本入出力システム)40を格納する。BIOS40は、PCの初期化や各種設定を行うファームウェア、換言すれば、基本入出力プログラムである。BIOS40は、省電力処理に用いられる情報を格納する制御テーブル41を含む。設定テーブル21は、後述するように、制御テーブル41の一部を読み取ることにより生成される。電源制御部5には、接続線53を介して、バッテリ51が接続される。また、電源制御部5は、バス10とは異なる専用の信号線12を介して、システムコントローラ2と接続される。ディスクコントローラ6には、ハードディスク61が接続される。グラフィクスコントローラ7には、ディスプレイ71が接続される。入出力コントローラ8には、キーボード81が接続される。USBホストコントローラ9には、複数のUSBポート91が接続される。複数のUSBポート91は、各々、ノート型PC100への種々のデバイスの接続に用いられる。
システムコントローラ2は、ノート型PC100の全体を制御する。ユーザによりノート型PC100の電源が投入されると、フラッシュメモリ4に格納されたBIOS40を先頭から順に読み出してCPU1にロードする。CPU1は、BIOS40を実行することにより、ハードディスク61から制御プログラムであるオペレーティングシステム(OS)を読み出して、主メモリであるメモリ3上に常駐させ、OSを起動する。
CPU1は、BIOS40を実行することにより、後述するように、バッテリ51を制御する電源制御部5からバッテリ51のサイズを取得する。そして、CPU1は、BIOS40を実行することにより、取得したバッテリ51のサイズに応じて予め定められたノート型PC100の制御パラメータを設定する。設定される制御パラメータは、例えば、PC100の電力消費に関連する種々の制御パラメータである。具体的には、BIOS40に含まれる制御テーブル41の中から、取得したバッテリ51のサイズに応じた部分が読み取られ、システムコントローラ2の設定テーブル21に設定される。設定テーブル21は、システムコントローラ2以外に設けるようにしてもよい。
CPU1は、メモリ3上に常駐するOSに従って、コンピュータ1を制御する。CPU1は、メモリ3上のアプリケーションプログラムを実行する。アプリケーションプログラムは、例えば、CD−ROMやDVD等の記録媒体に格納され、記録媒体からCD−ROMドライブやDVDドライブ等を介してハードディスク61に入力され、ハードディスク61からメモリ3にロードされる。
ディスクコントローラ6は、システムコントローラ2を介してのCPU1からの指示に従って、ハードディスク61を制御して、種々のプログラムや種々のデータの入出力を実行する。グラフィクスコントローラ7は、システムコントローラ2を介してのCPU1からの指示に従って、ディスプレイ71を制御して、種々の画面表示を実行する。入出力コントローラ8は、システムコントローラ2を介してのCPU1からの指示に従って、キーボード81を制御して、キーボード81からの入力を実行する。USBホストコントローラ9は、システムコントローラ2を介してのCPU1からの指示に従って、複数のUSBポート91を制御して、複数のUSBポート91に接続された種々のデバイスについての入出力を実行する。USBポート91には、例えばマウス、プリンタ、送受信装置等が接続される。
図2は、情報処理装置の外観の説明図である。
ノート型PC100は、図2(A)に示すように、上側筐体101と、下側筐体102とを含む。上側筐体101と下側筐体102とは、相互に折り畳み可能に設けられる。上側筐体101にはディスプレイ71が設けられ、下側筐体102にはキーボード81が設けられる。
ノート型PC100は、図2(B)に示すように、バッテリ51を含む。バッテリ51は、例えば下側筐体102の底面に、下側筐体102から着脱可能に取り付けられる。換言すれば、ノート型PC100は、バッテリ51を接続可能なコンピュータである。ノート型PC100へのバッテリ51の接続箇所は、下側筐体102の底面に限られず、例えば、下側筐体102の側面等であってもよい。
バッテリ51は、接続線53を介して、電源制御部5に接続される。バッテリ51は、充電可能な2次電池、例えばリチウムイオン電池である。バッテリ51は、例えば、ノート型PC100が商用電源に接続されている場合に充電され、ノート型PC100が商用電源に接続されていない場合に、ノート型PC100の全体又は予め定められた範囲へ電力を供給する。
バッテリ51として、例えば、最大容量6000mAh(ミリアンペアアワー)のバッテリと、最大容量3000mAhのバッテリとが、ノート型PC100に対応する製品として存在するものとする。バッテリ51のサイズとしては、バッテリ51の最大容量が用いられる。例えば、6000mAhのサイズのバッテリ51は標準バッテリであり、最大容量3000mAhのバッテリ51は小サイズバッテリである。
バッテリ51のサイズは、2種類に限られず、また、バッテリ51のサイズも6000mAh及び3000mAhに限られない。例えば、10000mAh、6000mAh、3000mAh、1500mAh等の複数の種類のバッテリ51がノート型PC100に接続可能であってもよい。
図3は、省電力処理の説明図である。図3は、図1ノートPC100において、バッテリ51の省電力制御に関係する部分を抜き出して示す。
電源制御部5は、例えば、ノート型PC100が商用電源に接続されている場合には商用電源から安定化電源を介して供給される電力により動作し、ノート型PC100が商用電源に接続されていない場合にはバッテリ51から供給される電力により動作し、商用電源とバッテリ51の双方が利用可能な場合には商用電源から安定化電源を介して供給される電力により動作する。
電源制御部5は、例えばマイクロコンピュータであり、接続線53を介してバッテリ51に接続される。接続線53は、例えば、電源制御部5に電力を供給する電源線と、信号線とを含む。信号線は、例えばバッテリデータ線BTDATとバッテリクロック信号線BTCLKとを含む。電源制御部5とバッテリ51とを電源線で直接接続することにより、ノート型PC100の電源の投入により直ちに、商用電源又はバッテリ51から電源制御部5に電力を供給することができる。
電源制御部5は、例えば、ノート型PC100の電源が投入されると、BIOS40の実行する処理とは独立に、接続線53の信号線を介して、バッテリ51から、バッテリ51のサイズ、及び、バッテリ51の識別番号等を読み取る。従って、接続線53の信号線は、バッテリ51から電源制御部5へ、バッテリ51のサイズ及びバッテリ51の識別番号等を通知するための信号線である。電源制御部5は、読み取ったバッテリ51のサイズ及びバッテリ51の識別番号等を、各々、予め定められたアドレスを有するレジスタ52に格納する。
例えば、バッテリ51が6000mAhのサイズの標準バッテリである場合、バッテリ51のサイズとして値「6000」が読み取られ、レジスタ52に格納される。バッテリ51が3000mAhのサイズの小サイズバッテリである場合、バッテリ51のサイズとして値「3000」が読み取られ、レジスタ52に格納される。
なお、電源制御部5は、例えば、バッテリ51がノート型PC100に接続されると、BIOS40の実行する処理とは独立に、接続線53の信号線を介して、バッテリ51から、バッテリ51のサイズ、及び、バッテリ51の識別番号等を読み取るようにしてもよい。
ノート型PC100の電源が投入されると、システムコントローラ2は、フラッシュメモリ4に格納されたBIOS40を先頭から順に読み出してCPU1にロードする。CPU1は、BIOS40を実行する。CPU1において実行されるBIOS40は、以下のような処理を実行する。
BIOS40は、電源制御部5からバッテリ51のサイズを取得する。電源制御部5は、ノート型PC100のバス10とは異なる専用の信号線12を介して、システムコントローラ2に接続される。従って、バス10の初期化前においても、CPU1は、システムコントローラ2及び専用の信号線12を介して、電源制御部5にアクセスすることができる。専用の信号線12は、例えばAD[3:0]のような4ビットの信号線である。一方、システムコントローラ2は、電源制御部5において読み取ったバッテリ51のサイズを格納するレジスタ52のアドレスを保持する。これにより、BIOS40は、ノート型PC100の電源の投入に応じて、システムコントローラ2にレジスタ52へのI/Oアクセスを依頼することにより、システムコントローラ2及び専用の信号線12を介して電源制御部5のレジスタ52へアクセスして、レジスタ52からバッテリ51のサイズを取得する。BIOS40は、取得したバッテリ51のサイズを、例えば、BIOS40が使用するCPU1の予め定められたレジスタに保持する。取得したバッテリ51のサイズは、バッテリ51のサイズの判定に用いられる。
電源制御部5からのバッテリ51のサイズの取得は、ノート型PC100に搭載された種々のデバイスの初期化に先立って実行される。具体的には、CPU1、メモリ3、拡張用バス11、グラフィクスコントローラ7を含むディスプレイ71及び複数のデバイスの初期化に先立って、電源制御部5からバッテリ51のサイズが取得される。これにより、取得したサイズに応じて、CPU1、メモリ3、拡張用バス11、グラフィクスコントローラ7及び複数のデバイスの各々について、ノート型PC100の制御パラメータを設定することができる。
そして、BIOS40は、取得したバッテリ51のサイズに応じて、予め定められた制御パラメータを設定する。具体的には、BIOS40は、制御パラメータを格納する設定テーブル21をシステムコントローラ2に設け、設定テーブル21に従ってノート型PC100の制御パラメータを設定する。
ここで、制御パラメータは、BIOS40において、省電力処理に用いられる情報を格納する制御テーブル41に予め格納される。換言すれば、制御テーブル41はバッテリ51の複数のサイズの各々について予め定められた制御パラメータを含み、また、制御パラメータは省電力用の制御パラメータである。制御パラメータは、例えば、CPU1、メモリ3、拡張用バス11、グラフィクスコントローラ7及び複数のデバイスの各々について、動作を規定する値である。従って、BIOS40は、ノート型PC100に接続可能な複数のバッテリ51の各々に応じて、CPU1、メモリ3、拡張用バス11、グラフィクスコントローラ7及び複数のデバイスの各々の動作を規定する値を、予め格納する。
一方、システムコントローラ2は、CMOS回路部20と、バッテリ51とは異なる専用バッテリ22とを含む。設定テーブル21は、CMOS回路部20に設けられる。CMOS回路部20は、専用バッテリ22から電源を供給される予め定められた回路である。専用バッテリ22は、バッテリ51と比べて小型の充電可能な2次電池、例えばリチウムイオン電池である。専用バッテリ22は、例えば、ノート型PC100が商用電源に接続されている場合に充電され、ノート型PC100が商用電源に接続されていない場合に、CMOS回路部20へ電力を供給する。
専用バッテリ22は、ノート型PC100の電源を遮断された場合に、CMOS回路部20へ電力を供給する。CMOS回路部20の消費電力は極めて小さいので、ノート型PC100の電源を遮断しても、CMOS回路部20に書き込まれたデータ等は、再度ノート型PC100の電源投入されるまで保持される。なお、専用バッテリ22に代えてバッテリ51を用いて、ノート型PC100の電源を遮断された場合に、バッテリ51からCMOS回路部20へ電力を供給するようにしてもよい。
制御パラメータは、システムコントローラ2において、省電力処理に用いられる情報を格納する設定テーブル21に格納される。換言すれば、設定テーブル21は、予め定められた制御パラメータであって、取得したバッテリ51のサイズに応じた制御パラメータを含む。
BIOS40は、制御テーブル41に含まれるバッテリ51の複数のサイズの各々についての制御パラメータの中から、取得したバッテリ51のサイズに応じて予め定められた制御パラメータを選択して取得し、設定テーブル21に設定する。従って、システムコントローラ2には、取得したバッテリ51のサイズに応じて、CPU1、メモリ3、拡張用バス11、グラフィクスコントローラ7及び複数のデバイスの各々の動作を規定する値が格納される。
そして、BIOS40は、システムコントローラ2に設定された制御パラメータに基づいて、換言すれば、設定テーブル21に基づいて、少なくともCPU1の初期化を実行する。具体的には、BIOS40は、取得したバッテリ51のサイズに応じて、CPU1、メモリ3、拡張用バス11、グラフィクスコントローラ7を含むディスプレイ71及び複数のデバイスの初期化を実行する。
この後、BIOS40は、ノート型PC100のOSをメモリ3にロードして起動する。従って、BIOS40は、ノート型PC100の電源の投入に応じて最初に実行されるプログラムであり、ノート型PC100のOSよりも先に実行される。
図4は、BIOSの一例を示す図である。
図4(A)に示すように、BIOS40は、制御テーブル41と、SEC(Security)処理部42と、PEI(Pre EFI Initialization)処理部43と、DXE(Driver Execution Environment)処理部44と、ブートマネージャ45と、OSブートローダ46と、セットアップ表示データ47とを含む。PEI処理部43は省電力処理部431を含み、DXE処理部44は省電力処理部441を含む。
制御テーブル41は、実際には、複数の単位制御テーブルを含む。具体的には、制御テーブル41は、ノート型PC100に接続可能なバッテリ51のサイズ毎の単位制御テーブルを含む。例えば、標準バッテリと小サイズバッテリとがノート型PC100に接続可能である場合に、標準バッテリ用制御テーブル411と、小サイズバッテリ用制御テーブル412とが、単位制御テーブルとして、制御テーブル41に含まれる。制御テーブル41に含まれる単位制御テーブルの数は、2個に限られず、n個のバッテリ51がノート型PC100に接続可能である場合に、n個の単位制御テーブルが含まれる。
SEC処理部42、PEI処理部43及びDXE処理部44は、ノート型PC100のプラットフォームの初期化を実行する。SEC処理部42、PEI処理部43、DXE処理部44及びブートマネージャ45は、POST(Power−On Self Test)、換言すれば、起動時の自己診断プログラムを実行する。
SEC処理部42は、ノート型PC100のセキュリティについての設定処理を実行する。PEI処理部43は、CPU1、メモリ3、拡張用バス11、グラフィクスコントローラ7についての初期化処理及び設定処理を実行する。DXE処理部44は、LAN(Local Area Network)、光学ドライブ、Bluetooth(登録商標)、無線LAN、Cardbusのような、複数のデバイスについての初期化処理及び設定処理を実行する。ブートマネージャ45は、OSの起動準備を含む処理を実行する。この後、OSブートローダ46は、OSを起動する。
セットアップ表示データ47は、BIOSセットアップメニューの画面をディスプレイ71に表示するためのデータである。BIOSセットアップメニューの画面は、例えば図8に示すような画面711である。
図4(B)に示すように、BIOS40は、先頭から順に、1個のBFV(Boot Firmware Volume)49と、複数のFV(Firmware Volume)410とを含む。BFV49は、ノート型PC100の電源の投入に応じて、最初に実行されるモジュールである。FV410は、CPU1やUSBポート91を含むノート型PC100に搭載されたデバイスの初期化等を実行するモジュールである。BFV49及びFV410は、各々、BIOS40の実行コードの集合である。
例えば、SEC処理部42は、フラッシュメモリ4に格納された状態ではプログラムの実行コードの集合であり、CPU1において実行されることによりSEC処理部42を構成する。PEI処理部43、DXE処理部44、ブートマネージャ45、OSブートローダ46も同様である。
SEC処理部42は、例えば、先頭のBFV49と、これに続く複数のFV410とにより構成される。PEI処理部43、DXE処理部44、ブートマネージャ45、OSブートローダ46は、例えば、各々、複数のFV410により構成され、この順に、換言すれば、実行順にBIOS40において記述される。制御テーブル41は、実際には、PEI処理部43において、制御テーブル41を参照する箇所に続けて、又は、OSブートローダ46の後に記述される。セットアップ表示データ47は、実際には、PEI処理部43において、セットアップ表示データ47を参照する箇所に続けて、又は、制御テーブル41の後に記述される。
図5〜図8は、省電力処理の説明図であり、BIOS40が実行する省電力処理の詳細について示す。
図5は、BIOS40に含まれる制御テーブル41の一例を示す。図5(A)は例えば標準バッテリ用制御テーブル411を示し、図5(B)は例えば小サイズバッテリ用制御テーブル412を示す。制御テーブル411及び制御テーブル412は、BIOS40の一部としてBIOS40に含まれる。
制御テーブル41、換言すれば、制御テーブル411及び制御テーブル412の各々は、ノート型PC100の制御パラメータとして、CPU動作周波数上限、CPUコア数、CPUマルチスレッディング、PCI Express ASPM(Active State Power Management)、メモリクロック、Clock Run、グラフィックス周波数上限、C−State、LAN、光学ドライブ、Bluetooth、無線LAN、Cardbusを格納する。
CPU動作周波数上限、CPUコア数、CPUマルチスレッディング、C−Stateは、CPU1についての制御パラメータである。メモリクロック、Clock Runは、メモリ3についての制御パラメータである。PCI Express ASPMは、PCI Expressについての制御パラメータである。グラフィックス周波数上限は、グラフィックスについての制御パラメータである。LAN、光学ドライブ、Bluetooth、無線LAN、Cardbusは、各種のバスについての制御パラメータである。
CPU動作周波数上限は、CPU1の動作周波数の上限の値である。CPU動作周波数上限は、例えば、2.0GHz等に設定される。CPUコア数は、CPU1がマルチコアである場合において、動作するコアの数である。CPUコア数は、例えば、「2」等に設定される。CPUマルチスレッディングは、CPU1上でマルチスレッドの動作が可能である場合におけるマルチスレッドの動作の可否である。CPUマルチスレッディングは、例えば、有効又は無効に設定される。
PCI Express ASPMは、PCI Expressにおける、省電力に関する設定である。PCI Express ASPMは、例えば、L0s、L1等のいずれかのステートに設定される。
メモリクロックは、メモリ3の動作周波数の値である。メモリクロックは、例えば、1066MHz等に設定される。
Clock Runは、例えば、予め定められた場合に拡張用バス11に接続された予め定められたデバイスにクロックの供給を停止する省電力機能である。Clock Runは、例えば、有効又は無効のいずれかに設定される。
グラフィックス周波数上限は、グラフィクスコントローラ7の動作周波数の上限の値である。グラフィックス周波数上限は、例えば、600MHz等に設定される。
C−Stateは、CPU1のアイドル時に電源をオフしたり動作を停止したりする省電力機能である。C−Stateは、例えば、C1E、C3、C6等のいずれかのステートに設定される。なお、C−Stateは、C2ステート、C4ステート等であってもよい。
LAN、光学ドライブ、Bluetooth、無線LAN、Cardbusは、ノート型PC100のマザーボード上に搭載されたデバイスである。LAN、光学ドライブ、Bluetooth、無線LAN、Cardbusは、各々について、例えば、有効又は無効に設定される。
例えば、CPU動作周波数上限について、2.0GHzである場合と1.0GHzである場合とを比較すると、2.0GHzである場合の消費電力が大きく、1.0GHzである場合の消費電力が小さい。従って、CPU動作周波数上限は、標準バッテリ用制御テーブル411においては、消費電力が大きい2.0GHzに設定され、小サイズバッテリ用制御テーブル412においては、消費電力が小さい1.0GHzに設定される。他の制御パラメータについても、同様に、標準バッテリ用制御テーブル411には消費電力が大きい状態が設定され、小サイズバッテリ用制御テーブル412には消費電力が小さい状態が設定される。
図5(A)及び図5(B)に示す制御テーブル411及び制御テーブル412においては、メニュー項目として、「CPU動作周波数上限」等のBIOSセットアップメニューの項目に対応した名前が使用される。これにより、制御パラメータについて、現在の設定値を知ることができる。
BIOS40は、図5に示す制御テーブル41から、図7に示す設定テーブル21を得る。この際、BIOS40は、図6に示す変換規則に従って、制御テーブル41を設定テーブル21に変換する。これにより、制御テーブル411から設定テーブル211が生成され、制御テーブル412から設定テーブル212が生成される。
例えば、図6に示すように、「CPUコア数」の項目名として、「CPU_Number_Of_Cores」を用いる。「CPUコア数」の値として、制御テーブル41におけるコア数が「1(コア)」である場合には、設定テーブル21における値を「1」とする。これにより、CPU1のコアの数は「1」とされる。他の制御パラメータについても、同様に、図6に従って、制御テーブル41の内容から設定テーブル21の内容に変換される。
図7は、CMOS回路部20に格納される設定テーブル21の一例を示す。図7(A)は例えば標準バッテリ用設定テーブル211を示し、図7(B)は例えば小サイズバッテリ用設定テーブル212を示す。設定テーブル21、換言すれば、設定テーブル211及び設定テーブル212は、各々、制御パラメータとして、制御テーブル411及び制御テーブル412と同様の項目を含む。
例えば、ノート型PC100に接続されたバッテリ51のサイズが標準であれば、BIOS40は、バッテリ51のサイズとして、値「6000」を取得する。そこで、BIOS40は、設定テーブル21の値を、標準バッテリ用制御テーブル411の内容に従った内容に設定する。換言すれば、標準バッテリ用設定テーブル211が、設定テーブル21に格納される。
逆に、ノート型PC100に接続されたバッテリ51のサイズが小サイズであれば、BIOS40は、バッテリ51のサイズとして、値「3000」を取得する。そこで、BIOS40は、設定テーブル21の値を、小サイズバッテリ用制御テーブル412の内容に従った内容に設定する。換言すれば、小サイズバッテリ用設定テーブル212が、設定テーブル21に格納される。
なお、設定テーブル21が、標準バッテリ用設定テーブル211及び小サイズバッテリ用設定テーブル212の双方を格納し、取得したバッテリ51のサイズに応じて、いずれか一方を選択して使用するようにしてもよい。
BIOS40が、設定テーブル21を用いることなく、制御テーブル41のみを用いるようにしてもよい。逆に、BIOS40が、制御テーブル41を用いることなく、設定テーブル21のみを用いるようにしてもよい。また、制御テーブル41を、BIOS40ではなく、フラッシュメモリ4以外の不揮発性記憶装置、例えばフラッシュメモリ4とは別に設けられたフラッシュメモリ等に設けるようにしてもよい。また、設定テーブル21を、CMOS回路部20以外に設けるようにしてもよく、システムコントローラ2以外に設けるようにしてもよい。
例えば、取得したバッテリ51のサイズが小サイズであるとする。この場合、BIOS40は、小サイズバッテリ用制御テーブル412のCPU動作周波数上限を参照して、1.0GHzに設定されていることを求める。そして、BIOS40は、図6に示すように、項目名として「CPU_Upper_Limit」を用いて、これに対応する値として「1」を格納することにより、図7(B)に示すように、小サイズバッテリ用設定テーブル212のCPU動作周波数上限を設定する。他の制御パラメータについても同様である。
この後、BIOS40は、設定テーブル212に基づいて、P−Stateと呼ばれるCPU1の周波数段階設定機能を使用して、CPU1の動作周波数を初期化、換言すれば、制御する。P−Stateは、例えばACPI(Advanced Configuration and Power Interface)の動作を定義する言語であるASL(ACPI Source Language)によって記述される。これにより、例えば、CPU1の動作周波数の最高値が2.5GHzである場合に、動作周波数が1.0GHzとされ、消費電力が抑制される。
また、BIOS40は、CPUコアについても、例えば、制御テーブル412に従って、設定テーブル212に「1」を設定する。そして、BIOS40は、設定テーブル212に基づいて、CPU1のモデル固有レジスタ(Model Specific Register、MSR)を使用して、CPU1のコア数を制御する。これにより、例えば、CPU1が4コアである場合に、3コアが停止される。
また、BIOS40は、CPUマルチスレッディングについても、例えば、制御テーブル412に従って、設定テーブル212に「0」を設定する。そして、BIOS40は、設定テーブル212に基づいて、CPUマルチスレッディングを無効、換言すれば、使用不可にする。
また、BIOS40は、PCI Express ASPMについても、例えば、制御テーブル412に従って、設定テーブル212に「0」を設定する。そして、BIOS40は、設定テーブル212に基づいて、PCI Expressのコンフィグレーションレジスタを使用して、PCI Expressを制御する。これにより、例えば、PCI Expressは、L1/L0sで動作する。
また、BIOS40は、メモリクロックについても、例えば、制御テーブル412に従って、設定テーブル212に「0」を設定する。そして、BIOS40は、設定テーブル212に基づいて、CPU1に含まれるメモリコントローラのレジスタを使用して、メモリクロックを制御する。これにより、例えば、メモリクロックは、DDR3(Double Data Rate 3)の667MHzとされる。なお、BIOS40は、メモリ3の初期化を開始すると、最初に、メモリクロックの設定情報を、メモリ3に搭載されたROMであるSPD(Serial Presence Detect)から、SMBusを介して読み出す。これにより、BIOS40は、設定可能なメモリクロックの情報を得ることができる。
また、BIOS40は、グラフィックス周波数上限についても、例えば、制御テーブル412に従って、設定テーブル212に「0」を設定する。そして、BIOS40は、設定テーブル212に基づいて、グラフィクスコントローラ7のレジスタを使用して、グラフィックス周波数上限を制御する。これにより、例えば、グラフィックス周波数上限は、300MHzとされる。
また、BIOS40は、C−Stateについても、例えば、制御テーブル412に従って、設定テーブル212に「2」を設定する。そして、BIOS40は、設定テーブル212に基づいて、C−Stateを制御する。これにより、例えば、C−Stateは、C1E/C3/C6で動作する。
また、BIOS40は、LAN、光学ドライブ、Bluetooth、無線LAN、Cardbusについても、例えば、制御テーブル412に従って、設定テーブル212に「0」を設定する。そして、BIOS40は、設定テーブル212に基づいて、システムコントローラに含まれるGPIO(General Purpose I/O)の信号線を使った電源のオン/オフの制御機能を使用して、LAN、光学ドライブ、Bluetooth、無線LAN、Cardbusを無効にする。例えば、Bluetoothの場合、電源制御の信号のGPIO_BTがハイレベルであれば電源オンとされ、ロウレベルであれば電源オフとされる。これにより、例えば、無線LANモジュール、Bluetooth、USB接続のカメラについて、電源の供給を切断することができる。
図8は、BIOSセットアップメニューの画面の一例を示す。
画面711は、セットアップ表示データ47の一部としてBIOS40に含まれ、BIOS40によりディスプレイ71に表示される。具体的には、画面711は、PEI処理部43によるグラフィックス初期化の実行の後に、表示可能とされる。BIOS40は、例えば、PEI処理部43によるグラフィックス初期化の実行の後の所定の期間内に、BIOSセットアップメニューを表示させる予め定められたファンクションキー、換言すれば、セットアップキーが押し下げられると、BIOSセットアップメニューとしての画面711を表示する。
画面711において、「省電力おまかせ設定」という項目が設けられる。例えば、ノート型PC100の出荷時に、「省電力おまかせ設定」が「使用する」に設定される。従って、BIOS40は、バッテリ51のサイズに応じて制御テーブル41から制御テーブル411及び制御テーブル412のいずれかを読み出して、設定テーブル21に設定テーブル211又は設定テーブル212を格納する。これにより、バッテリ51のサイズに応じて、制御パラメータを設定することができる。
なお、画面711において、例えば、カーソルが「現在の設定」に位置付けられた状態でEnterキーが押し下げられると、BIOS40は、現在の設定状態を表示する。具体的には、BIOS40は、設定テーブル21として設定されている、設定テーブル211又は設定テーブル212の内容を、ディスプレイ71に表示する。
また、ユーザが、例えばBIOSセットアップメニューから、設定テーブル21の内容を変更することができるようにしてもよい。更に、ユーザが、例えばBIOSセットアップメニューから、制御テーブル41の内容を変更することができるようにしてもよい。
図9は、BIOS処理フローの一例である。
SEC処理部42、PEI処理部43、DXE処理部44、ブートマネージャ45は、POSTを実行する。SEC処理及びPEI処理は、例えばPOSTの前半に相当する。DXE処理及びブートマネージャ45による処理は、例えばPOSTの後半に相当する。SEC処理部42、PEI処理部43及びDXE処理部44は、ノート型PC100のプラットフォームの初期化を実行する。
ユーザによりノート型PC100の電源が投入されると(ステップS11)、フラッシュメモリ4のBIOS40が、先頭から順に、システムコントローラ2を介して、CPU1にロードされ実行される。
具体的には、最初に、CPU1により実行されるBIOS40のSEC処理部42が、SEC処理を実行する(ステップS12)。次に、CPU1により実行されるBIOS40のPEI処理部43が、PEI処理を実行する(ステップS13)。これにより、システムコントローラ2、CPU1、メモリ3の初期化が実行される。
次に、CPU1により実行されるBIOS40のDXE処理部44が、DXE処理を実行する(ステップS14)。これにより、USBポート91、拡張用バス11に接続されたSerial ATAを含む各種のバスやオンボードデバイスの初期化が実行される。
次に、CPU1により実行されるBIOS40のブートマネージャ45が、OSの起動準備を含む処理を実行する(ステップS15)。この後、CPU1により実行されるBIOS40のOSブートローダ46が実行され(ステップS16)、OSブートローダ46がOSを起動する(ステップS17)。
図10及び図11は、省電力処理フローの一例であり、一体となってBIOS40が実行する省電力処理を示す。図10及び図11は、図9におけるステップS13〜S14を詳細に示す。
図9のステップS12の後に、CPU1により実行されるBIOS40のPEI処理部43が、PEI処理を開始し(ステップS21)、最初に、システムコントローラ2及び信号線12を介して電源制御部5へのI/Oアクセスを実行することにより、電源制御部5からバッテリ51のサイズを読み出して、読み出したバッテリ51のサイズをチェックし保存する(ステップS22)。従って、バッテリ51のサイズの取得は、PEI処理、換言すれば、POSTにおいて、最初に実行される。
例えば、取得したバッテリ51のサイズをチェックのために、取得したバッテリ51のサイズは、設定テーブル21に保持されているバッテリ51のサイズと比較される。また、取得したバッテリ51のサイズは、BIOS40が使用するCPU1の予め定められたレジスタに保持される。
次に、PEI処理部43が、取得したバッテリ51のサイズのチェック結果に基づいて、CMOS回路部20の設定テーブル21に設定されている設定値を切り替える(ステップS23)。従って、ノート型PC100のバッテリ51が交換されている場合には、取得したバッテリ51のサイズに応じて、設定テーブル21に設定されている設定値が切り替えられる。
例えば、ステップS22において、取得したバッテリ51のサイズと設定テーブル21に保持されているバッテリ51のサイズとが一致しない場合に、PEI処理部43は、設定テーブル21に設定されている設定値を切り替える。具体的には、PEI処理部43は、取得したバッテリ51のサイズに応じて、制御テーブル41の中から制御テーブル411又は制御テーブル412のいずれかを読み出して、読み出した制御テーブル411又は制御テーブル412を設定テーブル21に設定する。これにより、設定テーブル211又は設定テーブル212が得られる。取得したバッテリ51のサイズと設定テーブル21に保持されているバッテリ51のサイズとが一致する場合には、PEI処理部43は、設定テーブル21に設定されている設定値を切り替えない。換言すれば、PEI処理部43は、ステップS23を省略する。
次に、PEI処理部43が、CPU1の初期化を開始し(ステップS24)、最初に、省電力処理部431により、保存したバッテリ51のサイズが標準のサイズであるか又は小サイズであるかを調べる(ステップS25)。なお、前述したように、バッテリ51のサイズは、標準のサイズ及び小サイズには限られない。
バッテリ51のサイズが標準のサイズである場合、PEI処理部43が、省電力処理部431により、設定テーブル21の標準バッテリ用設定テーブル211の設定に従って、CPU1の設定値を変更する(ステップS26)。これにより、CPU1の動作周波数上限の値、コア数、CPUマルチスレッディングの数、C−Stateの設定が、標準バッテリ用設定テーブル211に従うように変更される。
バッテリ51のサイズが小サイズである場合、PEI処理部43が、省電力処理部431により、設定テーブル21の小サイズバッテリ用設定テーブル212の設定に従って、CPU1の設定値を変更する(ステップS27)。これにより、CPU1の動作周波数上限の値、コア数、CPUマルチスレッディングの数、C−Stateの設定が、小サイズバッテリ用設定テーブル212に従うように変更される。
次に、PEI処理部43が、CPU1の動作周波数上限の値、コア数、CPUマルチスレッディングの数、C−Stateの設定以外の、各種のCPU1の初期化処理を実行する(ステップS28)。これにより、CPU1の動作周波数上限の値、コア数、CPUマルチスレッディングの数、C−Stateの設定以外の、CPU1についての種々の設定が実行される。
次に、PEI処理部43が、メモリ3の初期化を開始し(ステップS29)、最初に、省電力処理部431により、保存したバッテリ51のサイズが標準のサイズであるか又は小サイズであるかを調べる(ステップS210)。
バッテリ51のサイズが標準のサイズである場合、PEI処理部43が、省電力処理部431により、設定テーブル21の標準バッテリ用設定テーブル211の設定に従って、メモリ3の設定値を変更する(ステップS211)。これにより、メモリ3の動作クロックであるメモリクロックの値が、標準バッテリ用設定テーブル211に従うように変更される。
バッテリ51のサイズが小サイズである場合、PEI処理部43が、省電力処理部431により、設定テーブル21の小サイズバッテリ用設定テーブル212の設定に従って、メモリ3の設定値を変更する(ステップS212)。これにより、メモリクロックの値が、小サイズバッテリ用設定テーブル212に従うように変更される。
次に、PEI処理部43が、メモリクロックの値以外の、各種のメモリ3の初期化処理を実行する(ステップS213)。これにより、例えば、メモリ3の種々のタイミング、容量等の設定が実行される。
次に、PEI処理部43が、拡張用バス11、例えばPCI Expressの初期化を開始し(ステップS214)、最初に、省電力処理部431により、保存したバッテリ51のサイズが標準のサイズであるか又は小サイズであるかを調べる(ステップS215)。
バッテリ51のサイズが標準のサイズである場合、PEI処理部43が、省電力処理部431により、設定テーブル21の標準バッテリ用設定テーブル211の設定に従って、PCI ExpressのASPMの設定を変更する(ステップS216)。これにより、PCI ExpressのASPMの設定が、標準バッテリ用設定テーブル211に従うように変更される。
バッテリ51のサイズが小サイズである場合、PEI処理部43が、省電力処理部431により、設定テーブル21の小サイズバッテリ用設定テーブル212の設定に従って、PCI ExpressのASPMの設定を変更する(ステップS217)。これにより、PCI ExpressのASPMの設定が、小サイズバッテリ用設定テーブル212に従うように変更される。
次に、PEI処理部43が、PCI ExpressのASPMの設定以外の、各種のPCI Expressの初期化処理を実行する(ステップS218)。これにより、例えば、PCI Expressについてのリソース、アドレス等の設定が実行される。
次に、PEI処理部43が、グラフィクスコントローラ7、換言すれば、グラフィックスの初期化を開始し(ステップS219)、最初に、省電力処理部431により、保存したバッテリ51のサイズが標準のサイズであるか又は小サイズであるかを調べる(ステップS220)。
バッテリ51のサイズが標準のサイズである場合、PEI処理部43が、省電力処理部431により、設定テーブル21の標準バッテリ用設定テーブル211の設定に従って、グラフィックスの設定値を変更する(ステップS221)。これにより、グラフィックスの動作周波数上限の値が、標準バッテリ用設定テーブル211に従うように変更される。
バッテリ51のサイズが小サイズである場合、PEI処理部43が、省電力処理部431により、設定テーブル21の小サイズバッテリ用設定テーブル212の設定に従って、グラフィックスの設定値を変更する(ステップS222)。これにより、グラフィックスの動作周波数上限の値が、小サイズバッテリ用設定テーブル212に従うように変更される。
次に、PEI処理部43が、グラフィックスの動作周波数上限の値以外の、各種のグラフィックスの初期化処理を実行する(ステップS223)。これにより、例えば、グラフィックスについてのリソース、出力先等の設定が実行される。
次に、CPU1により実行されるBIOS40のDXE処理部44が、DXE処理を開始し(ステップS224)、最初に、省電力処理部441により、SATAやUSB等の各種のバスの初期化を開始し(ステップS225)、保存したバッテリ51のサイズが標準のサイズであるか又は小サイズであるかを調べる(ステップS226)。
バッテリ51のサイズが標準のサイズである場合、DXE処理部44が、省電力処理部441により、設定テーブル21の標準バッテリ用設定テーブル211の設定に従って、各種のバスの設定を変更する(ステップS227)。これにより、LAN、光学ドライブ、Bluetooth、無線LAN、Cardbusのような各種のバスの設定が、各々、標準バッテリ用設定テーブル211に従うように、換言すれば、有効となるように変更される。
バッテリ51のサイズが小サイズである場合、DXE処理部44が、省電力処理部441により、設定テーブル21の小サイズバッテリ用設定テーブル212の設定に従って、各種のバスの設定を変更する(ステップS228)。これにより、LAN、光学ドライブ、Bluetooth、無線LAN、Cardbusのような各種のバスの設定が、各々、小サイズバッテリ用設定テーブル212に従うように、換言すれば、無効となるように変更される。
以上のように、CPU1、PCI Express、メモリ3、グラフィクスコントローラ7については、ノート型PC100の電源の投入後、POSTの前半で設定される。一方、マザーボード上に搭載された種々のデバイスについては、POSTの後半で設定される。
次に、DXE処理部44が、以上に説明した処理以外の処理である、その他のPOST処理を実行する(ステップS229)。これにより、ノート型PC100のセキュリティについての設定、ノート型PC100に独自の機能についての設定等が実行される。この後、図9のステップS15においてブートマネージャの処理が実行される。
以上の例においては、図8に示すように、バッテリ51のサイズに応じて、予め定められた内容の設定テーブル21が選択される。ユーザは設定テーブル21又は制御テーブル41の内容を変更することは可能であるが、BIOSセットアップメニューについて知識が必要とされるので、ユーザの負担となる。
図12〜図14は、省電力処理の他の例を示す。図12〜図14の例は、BIOSセットアップメニューについて知識がないユーザであっても、容易に設定テーブル21又は制御テーブル41の内容を変更することが可能な例を示す。
図12〜図14の例において、CPU1において実行されるBIOS40は、ディスプレイ71に表示された制御パラメータの変更を指示する入力を受付ける。具体的には、BIOS40は、ディスプレイ71の初期化の実行の後に、ディスプレイ71に表示された制御パラメータの変更を指示する入力を受付ける。BIOS40は、変更を指示する入力に従って変更された制御パラメータを、システムコントローラ2に設定し、システムコントローラ2に設定された制御パラメータに基づいて、少なくともCPU1の初期化を実行する。
図12において、画面712は、セットアップ表示データ47の一部としてBIOS40に含まれ、BIOS40によりディスプレイ71に表示される。具体的には、画面712は、PEI処理部43によるグラフクス初期化の実行の後に、表示可能とされる。BIOS40は、例えば、PEI処理部43によるグラフクス初期化の実行の後の所定の期間内に、予め定められたセットアップキーが押し下げられると、BIOSセットアップメニューとしての画面712を表示する。
画面712において、「詳細なバッテリサイズごとの省電力設定」という項目が設けられる。前述したように、「省電力おまかせ設定」は「使用する」に設定されているが、例えば、カーソルが「詳細なバッテリサイズごとの省電力設定」に位置付けられた状態でEnterキーが押し下げられると、BIOS40は、図13に示すように、省電力設定の画面713をディスプレイ71に表示する。
図13において、画面713は、セットアップ表示データ47の一部としてBIOS40に含まれ、BIOS40によりディスプレイ71に表示される。画面713において、例えば、標準サイズのバッテリ51用の制御テーブル411及び小サイズのバッテリ51用の制御テーブル412に含まれる制御パラメータが表示される。これにより、ユーザは、制御テーブル411及び制御テーブル412の双方の内容を参照しつつ、制御パラメータを設定することができる。例えば、ユーザは、小サイズのバッテリ51が接続されている場合であっても、CPU1の動作周波数上限の値を、「1.0GHz」から「2.0GHz」に変更することができる。他の制御パラメータについても同様である。
これにより、ユーザは、設定テーブル21の内容を、自己の希望に合致した内容にカスタマイズして、ノート型PC100を使用することができる。前述したように、設定テーブル21の内容は専用バッテリ22により保持されるので、ユーザは、シャットダウン後に電源を再投入した場合でも、カスタマイズされたノート型PC100を使用することができる。また、省電力の状態を変更することができるので、軽量のバッテリを搭載したPCにおいて、できるだけ駆動時間は伸ばし、かつ、特定のデバイスは使用したいという、ユーザの詳細な希望に応じた省電力の状態を選択することができる。
なお、図13の画面713において、その時点における設定テーブル21に対応する制御パラメータを反転表示するようにしてもよい。また、制御テーブル411及び制御テーブル412の双方の内容に代えて、その時点における設定テーブル21に対応する制御パラメータのみを表示するようにしてもよい。
図14は、省電力処理フローの一例である。
BIOS40は、図11のステップS223の実行の後に、図11のDXE処理と並列に、図14のステップS31〜S35を実行する。
BIOS40は、DXE処理が終了したか否かを調べる(ステップS31)。DXE処理が終了した場合、BIOS40は、図9のステップS15においてブートマネージャの処理を実行する。
DXE処理が終了していない場合、BIOS40は、予め定められたセットアップキーが押し下げられたか否かを調べる(ステップS32)。予め定められたセットアップキーが押し下げられない場合、BIOS40は、ステップS31を繰り返す。従って、BIOS40は、ステップS223の実行の後、DXE処理が終了まで、ユーザによる予め定められたセットアップキーの押し下げを待つ。なお、ステップS223の実行の後、BIOS40は、予め定められたセットアップキーの押し下げが可能であることを示す画面を、ディスプレイ71に表示する。
セットアップキーが押し下げられた場合、BIOS40は、図12に示すBIOSセットアップメニューとしての画面712を表示し(ステップS33)、制御パラメータの入力の有無を調べる(ステップS34)。制御パラメータの入力がない場合、BIOS40は、ステップS34を繰り返す。
制御パラメータの入力がある場合、BIOS40は、入力された制御パラメータに従って、設定テーブル21に格納された値を変更する(ステップS35)。この後、BIOS40は、図10のステップS24を実行する。
なお、ステップS35の後、例えば、BIOS40が、シャットダウン時又はノート型PC100の電源の遮断時に、これに先立って、入力された制御パラメータに従って、制御テーブル41に格納された値を変更する。これにより、ユーザは、一度だけ制御パラメータを入力することにより、制御テーブル41を変更することができる。逆に、BIOS40が制御テーブル41に格納された値を変更しないようにしてもよい。
また、ステップS35において、BIOS40が、制御テーブル41に格納された値を変更することなく、入力された制御パラメータを直接用いて、CPU1の初期化等の処理を実行するようにしてもよい。また、ステップS35において、BIOS40が、入力された制御パラメータに従って、制御テーブル41に格納された値を変更するようにしてもよい。
以上のように、設定テーブル21の内容はユーザの希望に合致した内容にカスタマイズされ、制御パラメータはユーザの希望に合致した内容に設定され、ユーザは自己の希望に合致した性能のノート型PC100を使用することができる。また、BIOS40の知識や省電力の設定の知識がないユーザでも、容易に設定テーブル21の内容を変更することができる。また、例えば、省電力制御用ユーティリティが特定のOSのバージョンに依存している場合でも、これに無関係に制御パラメータを設定することができ、OSが改版された場合でも、これに無関係に制御パラメータを設定することができる。また、例えば、省電力設定がプラットフォームや搭載デバイスに存在していても、これに無関係に制御パラメータを設定することができる。
以上の説明から理解されるように、以下のような実施の態様が把握される。
(付記1) 情報処理装置の電源の投入に応じて実行されるプログラムである基本入出力プログラムを格納する不揮発性記憶装置と、
前記基本入出力プログラムを実行するCPUと、
前記情報処理装置に電力を供給するバッテリと、
前記バッテリを制御する電源制御部とを含み、
前記CPUにおいて実行される前記基本入出力プログラムが、前記電源制御部から前記バッテリのサイズを取得し、取得した前記サイズに応じて予め定められた前記情報処理装置の制御パラメータを設定する
ことを特徴とする情報処理装置。
(付記2) 前記基本入出力プログラムは、前記情報処理装置のオペレーティングシステムよりも先に実行され、少なくとも前記CPUの初期化を実行し、前記オペレーティングシステムを起動する
ことを特徴とする付記1に記載の情報処理装置。
(付記3) 前記情報処理装置は、更に、
前記情報処理装置を制御するシステムコントローラを含み、
前記CPUにおいて実行される前記基本入出力プログラムが、前記制御パラメータを格納する設定テーブルを、前記システムコントローラに設ける
ことを特徴とする付記1に記載の情報処理装置。
(付記4) 前記CPUにおいて実行される前記基本入出力プログラムが、前記システムコントローラに設定された前記制御パラメータに基づいて、少なくとも前記CPUの初期化を実行する
ことを特徴とする付記3に記載の情報処理装置。
(付記5) 前記システムコントローラは、前記バッテリとは異なる専用バッテリと、前記専用バッテリから電源を供給される予め定められた回路とを含み、
前記制御パラメータは、前記予め定められた回路に設定される
ことを特徴とする付記3に記載の情報処理装置。
(付記6) 前記電源制御部は、前記情報処理装置のバスとは異なる専用線を介して、前記システムコントローラに接続され、
前記CPUにおいて実行される前記基本入出力プログラムが、前記情報処理装置の電源の投入に応じて、前記システムコントローラ及び前記専用線を介して、前記電源制御部から前記バッテリのサイズを取得する
ことを特徴とする付記1に記載の情報処理装置。
(付記7) 前記電源制御部は、前記電源制御部に電力を供給する電源線と、前記電源制御部に前記バッテリのサイズを通知する信号線とを介して、前記バッテリに接続される
ことを特徴とする付記6に記載の情報処理装置。
(付記8) 前記不揮発性記憶装置に格納された前記基本入出力プログラムが、前記バッテリの複数のサイズの各々について、予め定められた前記制御パラメータを含む
ことを特徴とする付記1に記載の情報処理装置。
(付記9) 前記情報処理装置は、更に、前記制御パラメータを表示する表示装置を含み、
前記CPUにおいて実行される前記基本入出力プログラムが、前記表示装置に表示された前記制御パラメータの変更を指示する入力を受付ける
ことを特徴とする付記1に記載の情報処理装置。
(付記10) 前記CPUにおいて実行される前記基本入出力プログラムが、前記表示装置の初期化の実行の後に、前記表示装置に表示された前記制御パラメータの変更を指示する入力を受付ける
ことを特徴とする付記9に記載の情報処理装置。
(付記11) 前記CPUにおいて実行される前記基本入出力プログラムが、前記変更を指示する入力に従って変更された前記制御パラメータを、前記システムコントローラに設定し、前記システムコントローラに設定された前記制御パラメータに基づいて、少なくとも前記CPUの初期化を実行する
ことを特徴とする付記9に記載の情報処理装置。
(付記12) 前記情報処理装置は、更に、メモリと、拡張用バスと、表示装置と、複数のデバイスとを含み、
前記CPUにおいて実行される前記基本入出力プログラムが、前記CPU、前記メモリ、前記拡張用バス、前記表示装置及び前記複数のデバイスの初期化に先立って、前記電源制御部から前記バッテリのサイズを取得し、取得した前記サイズに応じて、前記CPU、前記メモリ、前記拡張用バス、前記表示装置及び前記複数のデバイスの各々について、前記制御パラメータを設定する
ことを特徴とする付記1に記載の情報処理装置。
(付記13) 前記CPUにおいて実行される前記基本入出力プログラムが、前記制御パラメータを、前記システムコントローラに設定し、前記システムコントローラに設定された前記制御パラメータに基づいて、前記CPU、前記メモリ、前記拡張用バス、前記表示装置及び前記複数のデバイスの各々について、初期化を実行する
ことを特徴とする付記12に記載の情報処理装置。
(付記14) 情報処理装置の電源の投入に応じて実行されるプログラムである基本入出力プログラムを格納する不揮発性記憶装置と、前記基本入出力プログラムを実行するCPUと、前記情報処理装置に電力を供給するバッテリと、前記バッテリを制御する電源制御部とを含む情報処理装置の制御方法であって、
前記CPUにおいて実行される前記基本入出力プログラムが、
前記電源制御部から前記バッテリのサイズを取得し、
取得した前記サイズに応じて予め定められた前記情報処理装置の制御パラメータを設定する
ことを特徴とする情報処理装置の制御方法。
(付記15) 不揮発性記憶装置に格納され情報処理装置の電源の投入に応じて実行されるプログラムであって、
コンピュータに、
前記情報処理装置に電力を供給するバッテリを制御する電源制御部から、前記バッテリのサイズを取得し、
取得した前記サイズに応じて予め定められた前記情報処理装置の制御パラメータを設定する、処理を実行させる
ことを特徴とするプログラム。