(57)【要約】【課題】  バスマスタ転送を行う入出力デバイスを適切に動作させる。【解決手段】  中央処理装置の実行モードを制御するプログラムであって、中央処理装置は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有し、情報処理装置を、中央処理装置が低電力モードから高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得部と、情報処理装置の入出力デバイスが、低電力モードにおいて処理不能かつ高電力モードにおいて処理可能な処理を中央処理装置に要求してから、中央処理装置が高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得部と、許容時間及び復帰時間に基づいて、中央処理装置が低電力モードに移行可能と判断した場合に、中央処理装置を低電力モードに移行可能な状態に設定する実行モード設定部として機能させるプログラムを提供する。【選択図】図５
2005234826.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置に設けられた中央処理装置の実行モードを制御するプログラムであって、
前記中央処理装置は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有し、
前記情報処理装置を、
前記中央処理装置が、消費電力のより低い実行モードである低電力モードから、前記低電力モードより消費電力の高い実行モードである高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得部と、
前記情報処理装置の入出力デバイスが、前記低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得部と、
前記許容時間及び前記復帰時間に基づいて、前記中央処理装置が前記低電力モードに移行可能と判断した場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する実行モード設定部と
して機能させるプログラム。
【請求項２】
前記中央処理装置は、前記高電力モードにおいて命令を実行し、前記低電力モードにおいて命令を実行せず、
前記許容時間取得部は、前記入出力デバイスが、前記中央処理装置に命令の実行を要求してから、前記中央処理装置が命令の実行を開始するまでの最長の許容時間であるＣＰＵ許容時間を取得し、
前記実行モード設定部は、前記復帰時間が前記ＣＰＵ許容時間より短い場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する
請求項１記載のプログラム。
【請求項３】
前記中央処理装置は、キャッシュメモリを有し、前記高電力モードにおいて前記キャッシュメモリ及びメインメモリの一貫性を保つ処理である一貫性制御を行い、前記低電力モードにおいて前記一貫性制御を行わず、
前記許容時間取得部は、前記入出力デバイスが、前記情報処理装置のメインメモリへのアクセスを要求してから、前記中央処理装置が前記一貫性制御を行える状態となるまでの最長の許容時間であるバス許容時間を取得し、
前記実行モード設定部は、前記復帰時間が前記バス許容時間より短い場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する
請求項１記載のプログラム。
【請求項４】
前記中央処理装置は、前記高電力モードにおいて命令を実行し、前記低電力モードにおいて命令を実行せず、
前記許容時間取得部は、前記入出力デバイスが、前記中央処理装置に命令の実行を要求してから、前記中央処理装置が命令の実行を開始するまでの最長の許容時間であるＣＰＵ許容時間を更に取得し、
前記実行モード設定部は、前記復帰時間が前記ＣＰＵ許容時間より短いことを更に条件として、前記中央処理装置を前記低電力モードに移行可能な状態に設定する
請求項３記載のプログラム。
【請求項５】
前記中央処理装置は、前記高電力モードから、消費電力が互いに異なる複数の前記低電力モードの何れかに移行し、
前記復帰時間取得部は、前記中央処理装置が前記複数の低電力モードの各々から前記高電力モードに復帰するまでに要する復帰時間を取得し、
前記実行モード設定部は、前記複数の低電力モードのうち、前記許容時間より復帰時間が短くかつ最も消費電力が低い低電力モードを、前記中央処理装置が前記高電力モードから移行する移行先の低電力モードとして選択して設定する
請求項１記載のプログラム。
【請求項６】
前記情報処理装置は、複数の入出力デバイスを有し、
前記許容時間取得部は、前記複数の入出力デバイスの各々の前記許容時間を取得し、
前記実行モード設定部は、前記許容時間取得部が取得した最短の前記許容時間より前記復帰時間が短くかつ最も消費電力が低い低電力モードを、前記中央処理装置が前記高電力モードから移行する移行先の低電力モードとして選択して設定する
請求項５記載のプログラム。
【請求項７】
前記実行モード設定部は、前記移行先の低電力モードを、過去に設定していた低電力モードと比較して消費電力の高い低電力モードに変更してから、予め定められた基準設定時間が経過した場合に、前記移行先の低電力モードを、変更前の当該低電力モードに戻す設定を行う
請求項５記載のプログラム。
【請求項８】
前記実行モード設定部が、前記移行先の低電力モードを、変更前の当該低電力モードと比較して消費電力の高い低電力モードに変更してから、予め定められた基準設定時間が経過した場合に、前記許容時間取得部は、前記入出力デバイスを管理するデバイスドライバに、前記許容時間を問い合わせ、
前記実行モード設定部は、当該問合せの返答を取得できない場合に、前記移行先の低電力モードを、変更前の当該低電力モードに戻す設定を行う
請求項７記載のプログラム。
【請求項９】
前記中央処理装置は、前記高電力モードから、消費電力が互いに異なる複数の前記低電力モードの何れかに移行し、
前記情報処理装置は、複数の入出力デバイスを有し、
前記復帰時間取得部は、前記中央処理装置が前記複数の低電力モードの各々から前記高電力モードに復帰するまでに要する復帰時間を取得し、
前記許容時間取得部は、前記複数の入出力デバイスの各々の前記許容時間を取得し、
前記プログラムは、前記情報処理装置を、
前記入出力デバイス毎に、当該入出力デバイスのみが前記情報処理装置に設けられている場合に前記実行モード設定部が設定するべき移行先の低電力モードを、前記許容時間及び前記復帰時間に基づいて選択する移行先モード選択部として更に機能させ、
前記実行モード設定部は、入出力デバイス毎に前記移行先モード選択部により選択された移行先の低電力モードのうち、最も復帰時間が短い低電力モードを、移行先の低電力モードとして設定する
請求項１記載のプログラム。
【請求項１０】
当該プログラムは、前記入出力デバイスの動作状態に基づいて当該入出力デバイスの前記許容時間を生成する許容時間生成部として前記情報処理装置を更に機能させ、
前記許容時間取得部は、前記許容時間生成部から前記許容時間を取得する
請求項１記載のプログラム。
【請求項１１】
前記許容時間生成部は、前記入出力デバイスがメインメモリとの間でデータを転送する場合に、当該入出力デバイスがメインメモリとの間でデータを転送しない場合と比較して、より短い時間を前記許容時間として生成する
請求項１０記載のプログラム。
【請求項１２】
情報処理装置に設けられた中央処理装置の実行モードを制御するプログラムであって、
前記中央処理装置は、キャッシュメモリを有し、前記キャッシュメモリとメインメモリとのデータ一貫性制御を行いかつ消費電力のより高い高電力モードと、前記高電力モードより消費電力が低く前記一貫性制御を行わない低電力モードとを有し、
前記情報処理装置を、
前記低電力モードにおいて、前記情報処理装置の入出力デバイスが前記メインメモリとの間で行うデータ転送を要求した場合に、当該データ転送に障害が発生したか否かを判断する障害検出部と、
前記障害検出部により障害が発生したと判断された場合に、前記中央処理装置が前記低電力モードに移行できないように設定する実行モード設定部と
して機能させるプログラム。
【請求項１３】
情報処理装置の中央処理装置を、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードの何れかにより動作させる制御を行うプログラムであって、
前記中央処理装置は、消費電力のより高い実行モードである高電力モードから、前記高電力モードより消費電力の低い複数の実行モードである複数の低電力モードの何れかに移行し、
前記情報処理装置を、
前記中央処理装置が前記複数の低電力モードの各々から前記高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得部と、
前記複数の低電力モードの各々について、前記情報処理装置の入出力デバイスが、当該低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得部と、
前記入出力デバイスが前記情報処理装置に設けられており他の入出力デバイスが設けられていない場合において前記中央処理装置が移行すべき移行先の低電力モードを、前記許容時間及び前記復帰時間に基づいて選択し、選択した低電力モードを示す情報を出力する移行先モード選択部と
して機能させるプログラム。
【請求項１４】
請求項１、請求項１２、及び請求項１３の何れかに記載のプログラムを記録した記録媒体。
【請求項１５】
情報処理装置に設けられた中央処理装置の実行モードを制御する制御方法であって、
前記中央処理装置は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有し、
前記中央処理装置が、消費電力のより低い実行モードである低電力モードから、前記低電力モードより消費電力の高い実行モードである高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得段階と、
前記情報処理装置の入出力デバイスが、前記低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得段階と、
前記許容時間及び前記復帰時間に基づいて、前記中央処理装置が前記低電力モードに移行可能と判断した場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する実行モード設定段階と
を備える制御方法。
【請求項１６】
情報処理装置に設けられた中央処理装置の実行モードを制御する制御方法であって、
前記中央処理装置は、キャッシュメモリを有し、前記キャッシュメモリとメインメモリとのデータ一貫性制御を行いかつ消費電力のより高い高電力モードと、前記高電力モードより消費電力が低く前記一貫性制御を行わない低電力モードとを有し、
前記低電力モードにおいて、前記情報処理装置の入出力デバイスが前記メインメモリとの間で行うデータ転送を要求した場合に、当該データ転送に障害が発生したか否かを判断する障害検出段階と、
前記障害検出段階において障害が発生したと判断された場合に、前記中央処理装置が前記低電力モードに移行できないように設定する実行モード設定段階と
を備える制御方法。
【請求項１７】
情報処理装置の中央処理装置を、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードの何れかにより動作させる制御を行う制御方法であって、
前記中央処理装置は、消費電力のより高い実行モードである高電力モードから、前記高電力モードより消費電力の低い複数の実行モードである複数の低電力モードの何れかに移行し、
前記中央処理装置が前記複数の低電力モードの各々から前記高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得段階と、
前記複数の低電力モードの各々について、前記情報処理装置の入出力デバイスが、当該低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得段階と、
前記入出力デバイスが前記情報処理装置に設けられており他の入出力デバイスが設けられていない場合において前記中央処理装置が移行すべき移行先の低電力モードを、前記許容時間及び前記復帰時間に基づいて選択し、選択した低電力モードを示す情報を出力する移行先モード選択段階と
を備える制御方法。
【請求項１８】
中央処理装置及び入出力デバイスを備えた情報処理装置であって、
前記中央処理装置は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有し、
前記中央処理装置が、消費電力のより低い実行モードである低電力モードから、前記低電力モードより消費電力の高い実行モードである高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得部と、
前記情報処理装置の入出力デバイスが、前記低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得部と、
前記許容時間及び前記復帰時間に基づいて、前記中央処理装置が前記低電力モードに移行可能と判断した場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する実行モード設定部と
を備える情報処理装置。
【請求項１９】
中央処理装置及び入出力デバイスを備えた情報処理装置であって、
前記中央処理装置は、キャッシュメモリを有し、前記キャッシュメモリとメインメモリとのデータ一貫性制御を行いかつ消費電力のより高い高電力モードと、前記高電力モードより消費電力が低く前記一貫性制御を行わない低電力モードとを有し、
前記低電力モードにおいて、前記情報処理装置の入出力デバイスが前記メインメモリとの間で行うデータ転送を要求した場合に、当該データ転送に障害が発生したか否かを判断する障害検出部と、
前記障害検出部により障害が発生したと判断された場合に、前記中央処理装置が前記低電力モードに移行できないように設定する実行モード設定部と
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、記録媒体、制御方法、及び情報処理装置に関する。特に、本発明は、中央処理装置の省電力に関するプログラム、記録媒体、制御方法、及び情報処理装置に関する。
【背景技術】
【０００２】
近年、中央処理装置の少なくとも一部の機能をディセーブルすることにより、情報処理装置の消費電力を低減する省電力技術が注目されている。例えば、ある中央処理装置は、通常の実行モードであるＣ０ステートと、中央処理装置の内部クロックを停止したＣ２ステートと、Ｃ２ステートにおいて更にキャッシュメモリ及びメインメモリの一貫性制御を無効にしたＣ３ステートとを有している。
【０００３】
また、近年の情報処理装置において、入出力デバイスは、中央処理装置に処理を要求せずに直接メインメモリにアクセスするバスマスタ転送を行うことができる。バスマスタ転送により、中央処理装置は、入出力デバイスから必要以上の割り込み処理を受けなくなるので、効率良く動作する。
【０００４】
しかしながら、中央処理装置がＣ３ステートである場合に、入出力デバイスがバスマスタ転送をしてしまうと、キャッシュメモリ及びメインメモリのデータの一貫性が失われてしまう。従って、中央処理装置のオペレーティングシステム（以下、ＯＳ）は、バスマスタ転送が行なわれていないことを確認した場合にのみ、中央処理装置をＣ３ステートに移行させていた。
【０００５】
例えば、ＷｉｎｄｏｗｓＸＰ（登録商標）等のＯＳは、バスマスタ転送の処理中を示すフラグをリセットし、その後直ちにそのフラグを参照した結果そのフラグがリセット状態のままであれば、バスマスタ転送の頻度が低いと判断して、Ｃ３ステートに移行させていた。そして、中央処理装置は、バスマスタ転送が再開された場合には、Ｃ３ステートからＣ０ステート等に直ちに復帰する必要があった。
【０００６】
省電力制御を行う先行技術が提案されている（特許文献１参照。）。
【特許文献１】特開平８−６６８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、中央処理装置がＣ０ステート等に復帰するのには、ある程度の時間が必要である。このため、入出力デバイスは、メインメモリへのアクセス等を要求してから、中央処理装置がＣ０ステートに復帰して処理を再開するまでの間に、メインメモリにアクセスできずに障害を発生させてしまう場合があった。
【０００８】
例えば、通信デバイスは、他の装置と一定の速度で通信するために、通信すべきデータをメインメモリから予め取得してバッファメモリに格納している。そして、バッファメモリに格納されたデータが不足した場合には、メインメモリから新たにデータを取得するべく、メインメモリに対するアクセスを要求する。通信デバイスがこの要求を行ってから、メインメモリからデータを取得するまでの間に、バッファメモリのデータが枯渇してしまうと、通信デバイスは、通信速度を一定に保持できずに障害を発生させてしまう。
【０００９】
そこで本発明は、上記の課題を解決することのできるプログラム、記録媒体、制御方法、及び情報処理装置を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の第１の形態においては、情報処理装置に設けられた中央処理装置の実行モードを制御するプログラムであって、中央処理装置は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有し、情報処理装置を、中央処理装置が、消費電力のより低い実行モードである低電力モードから、低電力モードより消費電力の高い実行モードである高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得部と、情報処理装置の入出力デバイスが、低電力モードにおいて処理不能かつ高電力モードにおいて処理可能な処理を中央処理装置に要求してから、中央処理装置が高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得部と、許容時間及び復帰時間に基づいて、中央処理装置が低電力モードに移行可能と判断した場合に、中央処理装置を低電力モードに移行可能な状態に設定する実行モード設定部として機能させるプログラム。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００１１】
本発明によれば、バスマスタ転送を行う入出力デバイスを適切に動作させることができる。
【発明を実施するための最良の形態】
【００１２】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
図１は、情報処理装置１０のハードウェア構成の一例を示す。情報処理装置１０は、ホストコントローラ１０８２により相互に接続される中央処理装置周辺部と、Ｉ／Ｏコントローラ１０８４によりホストコントローラ１０８２に接続される入出力部と、Ｉ／Ｏコントローラ１０８４に接続されるレガシー入出力部とを備える。中央処理装置周辺部は、中央処理装置１０００、メインメモリ１０２０、グラフィックコントローラ１０７５、及び表示装置１０８０を有する。
【００１４】
入出力部は、通信インターフェイス１０３０、赤外線通信デバイス１０３２、ＵＳＢデバイス１０３５、及びその他の入出力デバイスであるデバイスＡ又はデバイスＢ等と、ハードディスクドライブ１０４０と、ＣＤ−ＲＯＭドライブ１０６０とを有する。レガシー入出力部は、ＢＩＯＳ１０１０、フレキシブルディスクドライブ１０５０、及びＩ／Ｏチップ１０７０を有する。
【００１５】
ホストコントローラ１０８２は、メインメモリ１０２０と、高い転送レートでメインメモリ１０２０をアクセスする中央処理装置１０００及びグラフィックコントローラ１０７５とを接続する。中央処理装置１０００は、ＢＩＯＳ１０１０及びメインメモリ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。
【００１６】
グラフィックコントローラ１０７５は、中央処理装置１０００等がメインメモリ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、中央処理装置１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００１７】
Ｉ／Ｏコントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、赤外線通信デバイス１０３２、ＵＳＢデバイス１０３５、デバイスＡ・Ｂ、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して外部の装置と通信する。
【００１８】
赤外線通信デバイス１０３２は、赤外線通信技術により外部の装置と無線通信する。ＵＳＢデバイスは、ＵＳＢ規格に準拠したデバイスであり、メインメモリ１０２０のデータを読み書きする。ハードディスクドライブ１０４０は、情報処理装置１０が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、Ｉ／Ｏコントローラ１０８４を介してメインメモリ１０２０に提供する。
【００１９】
また、Ｉ／Ｏコントローラ１０８４には、ＢＩＯＳ１０１０と、フレキシブルディスクドライブ１０５０やＩ／Ｏチップ１０７０等の比較的低速な入出力装置とが接続される。ＢＩＯＳ１０１０は、情報処理装置１０の起動時に中央処理装置１０００が実行するブートプログラムや、情報処理装置１０のハードウェアに依存するプログラム等を格納する。
【００２０】
フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、Ｉ／Ｏチップ１０７０を介してメインメモリ１０２０に提供する。Ｉ／Ｏチップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００２１】
情報処理装置１０に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、Ｉ／Ｏチップ１０７０及び/又はＩ／Ｏコントローラ１０８４を介して、記録媒体から読み出され情報処理装置１０にインストールされて実行される。
【００２２】
情報処理装置１０にインストールされて実行されるプログラムは、許容時間生成モジュールと、復帰時間取得モジュールと、許容時間取得モジュールと、障害検出モジュールと、実行モード設定モジュールと、実行モード選択モジュールとを含む。各モジュールが情報処理装置１０に働きかけて行わせる動作は、図２から図１４において説明する情報処理装置１０における、対応する部材の動作と同一であるから、説明を省略する。
【００２３】
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はメインメモリ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置１０に提供してもよい。
【００２４】
図２は、中央処理装置１０００の実行モードの概要を示す。中央処理装置１０００は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有する。一例として、中央処理装置１０００は、この複数の実行モードとして、Ｃ０ステート、Ｃ１ステート、Ｃ２ステート、Ｃ３ステート、及びＣ４ステートを有する。
【００２５】
Ｃ０ステートからＣ４ステートは、この順に、消費電力が高い。例えば、ある種類の中央処理装置において、Ｃ０ステートの消費電力は２０Ｗを超える一方、Ｃ１ステート、Ｓ２ステート、Ｃ３ステート、及びＣ４ステートの消費電力は、それぞれ、０．８Ｗ、０．６９Ｗ、０．２６Ｗ、及び０．１Ｗである。
【００２６】
Ｃ０ステートは、本発明に係る高電力モードの一例であり、Ｃ０ステートにおいて、中央処理装置１０００は、命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行する。これに対して、Ｃ１からＣ４ステートは、本発明に係る低電力モードの一例であり、Ｃ１からＣ４ステートにおいて、中央処理装置１０００は、命令を実行しない。
【００２７】
また、Ｃ０ステートからＣ２ステートにおいて、中央処理装置１０００は、キャッシュメモリ１００５及びメインメモリ１０２０の一貫性を保つ処理である一貫性制御を行う。これに対して、Ｃ３ステート及びＣ４ステートにおいて、中央処理装置１０００は、この一貫性制御を行わない。例えば、中央処理装置１０００は、Ｃ０からＣ２ステートにおいて、メインメモリのアクセス用バスを監視するバススヌープ処理を行い、Ｃ３及びＣ４ステートにおいて、バススヌープ処理を行わない。
【００２８】
また、Ｃ２ステートにおいて、中央処理装置１０００は、動作クロックの供給を受けたまま、中央処理装置１０００の内部の動作クロックを停止する。Ｃ３ステートにおいては、中央処理装置１０００は、更に、中央処理装置１０００の外部の動作クロックを停止する。そして、Ｃ４ステートにおいて、中央処理装置１０００は、Ｃ３ステートと比較して中央処理装置１０００の電源電圧を低下させる。
【００２９】
図３は、メインメモリ１０２０に格納されるデータのデータ構造の一例を示す。メインメモリ１０２０は、ＣＰＵ情報記録部３００と、デバイス情報記録部３１０とを有する。ＣＰＵ情報記録部３００は、中央処理装置１０００が複数の低電力モードの各々から、高電力モードに復帰するまでに要する時間である復帰時間を格納する。
【００３０】
ただし、中央処理装置１０００が低電力モードの状態から、命令を実行可能な状態になるまでに要する時間と、一貫性制御が可能となるまでに要する時間とは異なる。従って、ＣＰＵ情報記録部３００は、各低電力モードについて、その低電力モードから命令を実行する状態になるまでに要する時間であるＣＰＵ復帰時間と、その低電力モードから一貫性制御を行う状態になるまでに要する時間であるバス復帰時間とを格納する。また、バス復帰時間とは、低電力モードから、入出力デバイスが、メインメモリにアクセスするバスの制御権を獲得可能な状態になるまでに要する時間であってもよい。
【００３１】
一例として、ＣＰＵ情報記録部３００は、Ｃ３ステートから命令を実行する状態になるまでに要するＣＰＵ復帰時間として、８５μｓを格納する。一方、ＣＰＵ情報記録部３００は、Ｃ２ステートから命令を実行する状態になるまでに要するＣＰＵ復帰時間として、１μｓを格納する。なお、これらの復帰時間は、ユーザプログラムがＡＣＰＩのＡＰＩによりオペレーティングシステムに問い合わせた結果得られた値であってもよいし、利用者により測定された値であってもよい。
【００３２】
デバイス情報記録部３１０は、入出力デバイス毎に、その入出力デバイスが中央処理装置１０００に命令の実行を要求してから、中央処理装置１０００が実際にＣ０ステートに復帰して命令を実行するまでの最大の許容時間であるＣＰＵ許容時間を格納する。更に、デバイス情報記録部３１０は、入出力デバイス毎に、その入出力デバイスがメインメモリ１０２０へのアクセスを要求してから、中央処理装置１０００が一貫性制御を可能な状態となるまでの最大の許容時間であるバス許容時間を格納する。
【００３３】
なお、デバイス情報記録部３１０が格納する許容時間は、ＣＰＵ許容時間及びバス許容時間に限らない。デバイス情報記録部３１０は、入出力デバイスが、低電力モードにおいて処理不能かつ高電力モードにおいて処理可能な処理を中央処理装置１０００に要求してから、実際にその処理を開始するまでの許容時間を格納すればよい。また、デバイス情報記録部３１０が格納するバス許容時間は、中央処理装置１０００がＣ０ステートに復帰するまでの時間に限定されない。例えば、中央処理装置１０００がＣ３ステート等からＣ０ステートを経由せずにＣ２ステートに移行可能であるならば、デバイス情報記録部３１０は、バス許容時間として、中央処理装置１０００がＣ３ステートからＣ２ステートに復帰するまでに要する時間を格納してもよい。
【００３４】
図４は、入出力デバイスの処理及び実行モードの遷移のタイミングの一例を示す図である。（ａ）は、中央処理装置１０００がＣ０ステート及びＣ３ステートの何れかにより動作する状態におけるタイミングの一例を示す。Ｃ３ステートにおいて、入出力デバイスが、ＬＰＣ＿ＤＲＥＱ＃信号をアサートすることによりメインメモリに対するアクセスを要求した場合に（１）、中央処理装置１０００は、Ｃ３ステートからＣ０ステートへの復帰処理を開始する。
【００３５】
具体的には、まず、情報処理装置１０は、ＣＰＵＳＴＰ＃信号をデアサートすることにより、中央処理装置１０００が動作クロックの供給を受ける準備を開始する。この準備には、例えば８０μｓ程度の時間を要する。そして、情報処理装置１０は、ＳＴＰＣＬＫ＃信号をデアサートすることにより、動作クロックを再開する。これにより、情報処理装置１０は、Ｃ０ステートに復帰し（２）、バスマスタデバイスの要求を処理する。
【００３６】
中央処理装置１０００は、この例においては、Ｃ０ステートにおいて４２μｓ動作した後、バスマスタ転送の要求を更に検出しなければ、再度Ｃ３ステートに移行する（３）。この処理と略同時に、例えば赤外線通信デバイス１０３２は、メインメモリに対するアクセスを要求する。情報処理装置１０は、ＣＰＵＳＴＰ＃をアサートしてＣ３ステートに移行した瞬間に直ちにＣ０ステートへの復帰処理を開始する。この復帰処理には、例えば８５μｓ程度の時間がかかる（４）。
【００３７】
赤外線通信デバイス１０３２がメインメモリに対するアクセスを要求してから８５μｓ以内に、赤外線通信デバイス１０３２に設けられたバッファメモリのデータが枯渇してしまう場合には、赤外線通信デバイス１０３２は、メインメモリから取得するデータが不足して障害を発生させてしまう。このような場合に、本実施例における情報処理装置１０は、中央処理装置１０００をＣ０ステートからＣ３ステートでなくＣ２ステートに移行させる設定を行う。
【００３８】
（ｂ）は、中央処理装置１０００がＣ０ステート及びＣ２ステートの何れかにより動作する状態におけるタイミングの一例を示す。本例において中央処理装置１０００は、メインメモリに対するアクセス要求を検出しない場合に、ＳＴＰＣＬＫ＃をアサートし、ＣＰＵＳＴＰ＃をデアサートすることによりＣ２ステートに移行する。そして、中央処理装置１０００は、メインメモリに対するアクセスが要求された場合に、Ｃ２ステートのまま一貫性制御を行う。
本図に示す例においては、（ａ）の例とは異なり、赤外線通信デバイス１０３２は、メインメモリに対するアクセスを要求してからさしたる遅延無くデータを取得できるので、障害を発生させることなく通信を継続することができる。
【００３９】
図５は、中央処理装置１０００のブロック図を示す。中央処理装置１０００は、デバイスドライバＡにより、許容時間生成部５００−１として機能し、デバイスドライバＢにより、許容時間生成部５００−２として機能する。また、中央処理装置１０００は、オペレーティングシステムの省電力モジュールにより、復帰時間取得部５１０と、許容時間取得部５２０と、障害検出部５３０と、実行モード設定部５４０として機能する。
【００４０】
なお、デバイスドライバＡは、デバイスＡを管理するプログラムであり、デバイスドライバＢは、デバイスＢを管理するプログラムである。そして、オペレーティングシステム、デバイスドライバＡ、及びデバイスドライバＢの組が、本発明に係るプログラムの一例である。
【００４１】
許容時間生成部５００−１は、デバイスＡの動作状態に基づいて、ＣＰＵ許容時間及びバス許容時間を生成し、メインメモリ１０２０のデバイス情報記録部３１０に格納する。デバイスドライバＢによる処理は、デバイスドライバＡによる処理と略同一であるので説明を省略する。
【００４２】
復帰時間取得部５１０は、各実行モードのＣＰＵ復帰時間及びバス復帰時間を、メインメモリ１０２０のＣＰＵ情報記録部３００から取得する。許容時間取得部５２０は、初期化時、および変更時に各入出力デバイスのＣＰＵ許容時間及びバス許容時間を取得する。これに代えて、許容時間取得部５２０は、実行モード設定部５４０が移行先の実行モードを消費電力の低い低電力モードからより高い低電力モードに変更してから所定の基準設定時間が経過した場合に、ＣＰＵ許容時間及びバス許容時間をデバイスドライバＢ等に問い合わせてもよい。
【００４３】
障害検出部５３０は、低電力モードにおいて、何れかの入出力装置がメインメモリとの間で行うデータ転送を要求した場合に、そのデータ転送に障害が発生したか否かを判断する。一例として、障害検出部５３０は、赤外線通信デバイス１０３２のバッファメモリがアンダーランエラーを発生させたか否かを検出してもよい。
【００４４】
実行モード設定部５４０は、ＣＰＵ復帰時間、バス復帰時間、ＣＰＵ許容時間、及びバス許容時間（以下、ＣＰＵ復帰時間等と呼ぶ）に基づいて、中央処理装置１０００がＣ０ステートから移行すべき移行先の低電力モード（以下、移行先モードと呼ぶ）を設定する。例えば、実行モード設定部５４０は、中央処理装置１０００を、Ｃ３ステートに移行できないように設定することにより、移行先モードをＣ２ステートに設定してもよい。また、実行モード設定部５４０は、移行可能な実行モードの組を設定してもよい。設定方法の一例として、実行モード設定部５４０は、中央処理装置１０００上で動作するＢＩＯＳプログラムの所定のＡＰＩを呼び出してもよい。
【００４５】
更に、実行モード設定部５４０は、障害検出部５３０により障害が発生したと判断された場合に、ＣＰＵ復帰時間等に関わらず、中央処理装置１０００がＣ３ステートに移行できないように設定してもよい。これに代えて、実行モード設定部５４０は、ＣＰＵ復帰時間等に基づきＣ３ステートに移行させないと判断した場合に、障害検出部５３０により障害が発生したと判断されたことを更に条件として、Ｃ３ステートに移行できないように設定してもよい。
【００４６】
図６は、オペレーティングシステムが移行先モードを設定する処理の一例を示す。オペレーティングシステムは、中央処理装置１０００がユーザプログラムの命令を実行していないアイドル状態である場合に、以下の処理を行わせる。まず、復帰時間取得部５１０は、ＣＰＵ復帰時間及びバス復帰時間を取得する（Ｓ６００）。
【００４７】
許容時間取得部５２０は、各入出力デバイスのＣＰＵ許容時間及びバス許容時間を取得する（Ｓ６１０）。そして、実行モード設定部５４０は、複数の入出力デバイスのうち最短のＣＰＵ許容時間が、Ｃ４ステートのＣＰＵ復帰時間以上か否か判断する（Ｓ６２０）。ＣＰＵ許容時間がＣＰＵ復帰時間以上の場合に（Ｓ６２０：ＹＥＳ）、続いて、実行モード設定部５４０は、複数の入出力デバイスのうち最短のバス許容時間が、Ｃ４ステートのバス復帰時間以上か否か判断する（Ｓ６３０）。
【００４８】
バス許容時間がバス復帰時間以上の場合に（Ｓ６３０：ＹＥＳ）、実行モード設定部５４０は、移行先モードをＣ４ステートに設定する（Ｓ６４０）。なお、後の処理に備えて、好ましくは、実行モード設定部５４０は、設定前に既に設定されていた移行先モードをメインメモリ等に保存しておく。一方、最短のＣＰＵ許容時間がＣ４ステートのＣＰＵ復帰時間より短い場合（Ｓ６２０：ＮＯ）、又は、最短のバス許容時間がＣ４ステートのバス復帰時間より短い場合に（Ｓ６３０：ＮＯ）、実行モード設定部５４０は、図７の処理に移る。
【００４９】
図７は、図６に続く処理を示す。実行モード設定部５４０は、複数の入出力デバイスのうち最短のＣＰＵ許容時間が、Ｃ３ステートのＣＰＵ復帰時間以上か否か判断する（Ｓ７００）。ＣＰＵ許容時間がＣＰＵ復帰時間以上の場合に（Ｓ７００：ＹＥＳ）、続いて、実行モード設定部５４０は、複数の入出力デバイスのうち最短のバス許容時間が、Ｃ３ステートのバス復帰時間以上か否か判断する（Ｓ７１０）。
【００５０】
バス許容時間がバス復帰時間以上の場合に（Ｓ７１０：ＹＥＳ）、実行モード設定部５４０は、移行先モードをＣ３ステートに設定する（Ｓ７２０）。一方、最短のＣＰＵ許容時間がＣ３ステートのＣＰＵ復帰時間より短い場合（Ｓ７００：ＮＯ）、又は、最短のバス許容時間がＣ３ステートのバス復帰時間より短い場合に（Ｓ７１０：ＮＯ）、実行モード設定部５４０は、次の処理に移る。
【００５１】
実行モード設定部５４０は、複数の入出力デバイスのうち最短のＣＰＵ許容時間が、Ｃ２ステートのＣＰＵ復帰時間以上か否か判断する（Ｓ７３０）。ＣＰＵ許容時間がＣＰＵ復帰時間以上の場合に（Ｓ７３０：ＹＥＳ）、続いて、実行モード設定部５４０は、複数の入出力デバイスのうち最短のバス許容時間が、Ｃ２ステートのバス復帰時間以上か否か判断する（Ｓ７４０）。
【００５２】
バス許容時間がバス復帰時間以上の場合に（Ｓ７４０：ＹＥＳ）、実行モード設定部５４０は、移行先モードをＣ２ステートに設定する（Ｓ７５０）。一方、最短のＣＰＵ許容時間がＣ２ステートのＣＰＵ復帰時間より短い場合（Ｓ７３０：ＮＯ）、又は、最短のバス許容時間がＣ２ステートのバス復帰時間より短い場合に（Ｓ７４０：ＮＯ）、実行モード設定部５４０は、移行先モードをＣ１ステートに設定する（Ｓ７６０）。
【００５３】
これにより、実行モード設定部５４０は、最短のＣＰＵ許容時間よりＣＰＵ復帰時間が短く、かつ最短のバス許容時間よりバス復帰時間が短い低電力モードを選択し、移行先モードとして設定することができる。更に、実行モード設定部５４０は、消費電力の低い実行モードから高い実行モードまでこの順に移行可能か否か判断することにより、できるだけ消費電力の低い実行モードに移行させることができる。
【００５４】
図８は、オペレーティングシステムが行う他の処理の一例を示す。オペレーティングシステムは、以下の処理を例えば定期的に行わせる。許容時間取得部５２０は、実行モード設定部５４０が、移行先モードを、過去に設定していた低電力モードと比較して消費電力の高い低電力モードに変更してから、予め定められた基準設定時間が経過したか否か判断する（Ｓ８００）。
【００５５】
基準設定時間が経過した場合に、許容時間取得部５２０は、各入出力デバイスのＣＰＵ許容時間及びバス許容時間を問い合わせる（Ｓ８１０）。許容時間取得部５２０は、当該問合せに対する返答を取得した場合に（Ｓ８２０：ＹＥＳ）、Ｓ８４０に処理を移す。なお、返答とは、ＣＰＵ許容時間及びバス許容時間自体であってもよいし、これらの時間をメインメモリ１０２０に書き込んだ旨の通知であってもよい。
【００５６】
一方、実行モード設定部５４０は、当該問合せに対する返答を取得できない場合に（Ｓ８２０：ＮＯ）、移行先モードを、変更前の当該低電力モードに戻す設定を行う（Ｓ８３０）。例えば、実行モード設定部５４０は、Ｓ６４０において保存された変更前の低電力モードをメインメモリから取り出して設定してもよい。これにより、デバイスドライバに障害が発生してＣＰＵ許容時間及びバス許容時間が不正確となった場合であっても、情報処理装置１０の消費電力を低く保つことができる。
【００５７】
続いて、オペレーティングシステムは以下の処理を定期的に行う。なお、上述の処理と処理のタイミングは異なってもよい。障害検出部５３０は、何れかの低電力モードにおいて、何れかの入出力装置がメインメモリとの間で行うデータ転送を要求した場合に、そのデータ転送に障害が発生したか否かを判断する（Ｓ８４０）。データ転送に障害が発生したと判断された場合に（Ｓ８４０：ＹＥＳ）、実行モード設定部５４０は、所定の低電力モード、例えばＣ３ステートに移行できないように設定する（Ｓ８５０）。
【００５８】
図９は、デバイスドライバＡの動作フローの一例を示す。デバイスドライバＡは、例えば定期的に以下の処理を行わせる。許容時間生成部５００−１は、メインメモリとの間のデータ転送を開始する転送開始指示を受けたか否か判断する（Ｓ９００）。転送開始指示を受けた場合に（Ｓ９００：ＹＥＳ）、許容時間生成部５００−１は、デバイス情報記録部３１０に格納していたバス許容時間より短い時間を、新たなバス許容時間としてデバイス情報記録部３１０に格納することにより、バス許容時間を短くする（Ｓ９１０）。
【００５９】
そして、許容時間生成部５００−１は、デバイスＡによるデータ転送を行う（Ｓ９２０）。データ転送が終了すると、許容時間生成部５００−１は、Ｓ９１０において格納したバス許容時間より長い時間を新たなバス許容時間としてデバイス情報記録部３１０に格納することにより、バス許容時間を長くする（Ｓ９３０）。この結果、許容時間生成部５００−１は、デバイスＡがメインメモリとの間でデータを転送する場合に、デバイスＡがメインメモリとの間でデータを転送しない場合と比較して、より短い時間をバス許容時間として設定することができる。
【００６０】
これに代えて、許容時間生成部５００−１は、ＣＰＵ許容時間を短くし、データ転送終了後にＣＰＵ許容時間を長くしてもよい。また、許容時間生成部５００−１は、データ転送の転送速度に応じてバス転送時間又はＣＰＵ許容時間を設定してもよい。例えば、許容時間生成部５００−１は、データ転送の転送速度が速い場合に、その転送速度より遅い場合と比較して、より短い時間をバス許容時間として生成してもよい。
【００６１】
以上、本実施例によると、できるだけ消費電力の低い実行モードで動作させるとともに、入出力デバイスに障害が発生することを防止できる。
【００６２】
図１０は、変形例における中央処理装置１０００のブロック図を示す。図５において説明した中央処理装置１０００と異なり、中央処理装置１０００は、デバイスドライバＡにより、許容時間生成部５００−１と、復帰時間取得部５１０−１と、許容時間取得部５２０−１と、移行先モード選択部５５０−１として機能する。そして、デバイスドライバＢにより、許容時間生成部５００−２と、復帰時間取得部５１０−２と、許容時間取得部５２０−２と、移行先モード選択部５５０−２として機能する。本図における許容時間生成部５００−１、復帰時間取得部５１０−１、及び許容時間取得部５２０−１は、それぞれ、図５に示す許容時間生成部５００−１、復帰時間取得部５１０、及び許容時間取得部５２０と略同一であるので説明を省略する。
【００６３】
また、中央処理装置１０００は、オペレーティングシステムの省電力モジュールにより、実行モード設定部５４０として機能する。なお、図５と同様、デバイスドライバＡは、デバイスＡを管理するプログラムであり、デバイスドライバＢは、デバイスＢを管理するプログラムである。そして、オペレーティングシステム、デバイスドライバＡ、及びデバイスドライバＢの組が、本発明に係るプログラムの一例である。
【００６４】
移行先モード選択部５５０−１は、デバイスＡのみが入出力デバイスとして情報処理装置１０に設けられており他の入出力デバイスが設けられていない場合において実行モード設定部５４０が設定するべき移行先モードを、ＣＰＵ復帰時間等に基づいて選択する。そして、移行先モード選択部５５０−１は、デバイスＡに対応付けて、選択した移行先モードを示す情報をメインメモリ１０２０に格納する。許容時間生成部５００−２等は、同様に、入出力デバイス毎に移行先モードを選択してメインメモリ１０２０に格納する。他の入出力デバイスのデバイスドライバの処理は、デバイスドライバＡの処理と略同一であるので、以降の説明を省略する。
【００６５】
実行モード設定部５４０は、入出力デバイス毎に移行先モード選択部５５０−１等により選択された移行先モードのうち、最もＣＰＵ復帰時間が短くかつ最もバス復帰時間が短い低電力モードを、移行先モードとして設定する。設定処理の例は、図５と略同一であるので説明を省略する。
【００６６】
図１１は、変形例におけるデバイス情報記録部３１０の一例を示す。デバイス情報記録部３１０は、入出力デバイス毎に、その入出力デバイスのみが情報処理装置１０に設けられている場合において実行モード設定部５４０が設定するべき移行先モードを格納する。これに代えて、デバイス情報記録部３１０は、入出力デバイス及び実行モード毎に、その入出力デバイスのみが情報処理装置１０に設けられている場合において実行モード設定部５４０がその実行モードに移行可能な設定を行うべきか否かの情報を格納してもよい。なお、本例におけるＣＰＵ情報記録部３００は、図３に示すＣＰＵ情報記録部３００と略同一であるので説明を省略する。
【００６７】
図１２は、変形例におけるデバイスドライバＡの動作フローの一例を示す。デバイスドライバＡは、例えば定期的に、又は、デバイスＡの動作状態を変更する毎に、以下の処理を行わせる。まず、復帰時間取得部５１０−１は、ＣＰＵ復帰時間及びバス復帰時間を取得する（Ｓ１２００）。許容時間生成部５００−１は、デバイスＡのＣＰＵ許容時間及びバス許容時間を生成する（Ｓ１２１０）。許容時間取得部５２０−１は、デバイスＡのＣＰＵ許容時間及びバス許容時間を許容時間生成部５００−１から取得する（Ｓ１２２０）。
【００６８】
移行先モード選択部５５０−１は、デバイスＡのＣＰＵ許容時間が、Ｃ４ステートのＣＰＵ復帰時間以上か否か判断する（Ｓ１２３０）。ＣＰＵ許容時間がＣＰＵ復帰時間以上の場合に（Ｓ１２３０：ＹＥＳ）、続いて、移行先モード選択部５５０−１は、デバイスＡのバス許容時間が、Ｃ４ステートのバス復帰時間以上か否か判断する（Ｓ１２４０）。
【００６９】
バス許容時間がバス復帰時間以上の場合に（Ｓ１２４０：ＹＥＳ）、移行先モード選択部５５０−１は、移行先モードとしてＣ４ステートを選択し、デバイス情報記録部３１０に格納する（Ｓ１２５０）。一方、デバイスＡのＣＰＵ許容時間がＣ４ステートのＣＰＵ復帰時間より短い場合（Ｓ１２３０：ＮＯ）、又は、デバイスＡのバス許容時間がＣ４ステートのバス復帰時間より短い場合に（Ｓ１２４０：ＮＯ）、移行先モード選択部５５０は、図１３の処理に移る。
【００７０】
図１３は、図１２に続く処理を示す。移行先モード選択部５５０−１は、デバイスＡのＣＰＵ許容時間が、Ｃ３ステートのＣＰＵ復帰時間以上か否か判断する（Ｓ１３００）。ＣＰＵ許容時間がＣＰＵ復帰時間以上の場合に（Ｓ１３００：ＹＥＳ）、続いて、移行先モード選択部５５０−１は、デバイスＡのバス許容時間が、Ｃ３ステートのバス復帰時間以上か否か判断する（Ｓ１３１０）。
【００７１】
バス許容時間がバス復帰時間以上の場合に（Ｓ１３１０：ＹＥＳ）、移行先モード選択部５５０−１は、移行先モードとしてＣ３ステートを選択し、デバイス情報記録部３１０に格納する（Ｓ１３２０）。一方、デバイスＡのＣＰＵ許容時間がＣ３ステートのＣＰＵ復帰時間より短い場合（Ｓ１３００：ＮＯ）、又は、デバイスＡのバス許容時間がＣ３ステートのバス復帰時間より短い場合に（Ｓ１３１０：ＮＯ）、移行先モード選択部５５０−１は、次の処理に移る。
【００７２】
移行先モード選択部５５０−１は、デバイスＡのＣＰＵ許容時間が、Ｃ２ステートのＣＰＵ復帰時間以上か否か判断する（Ｓ１３３０）。ＣＰＵ許容時間がＣＰＵ復帰時間以上の場合に（Ｓ１３３０：ＹＥＳ）、続いて、移行先モード選択部５５０−１は、デバイスＡのバス許容時間が、Ｃ２ステートのバス復帰時間以上か否か判断する（Ｓ１３４０）。
【００７３】
バス許容時間がバス復帰時間以上の場合に（Ｓ１３４０：ＹＥＳ）、移行先モード選択部５５０−１は、移行先モードとしてＣ２ステートを選択し、デバイス情報記録部３１０に格納する（Ｓ１３５０）。一方、デバイスＡのＣＰＵ許容時間がＣ２ステートのＣＰＵ復帰時間より短い場合（Ｓ１３３０：ＮＯ）、又は、デバイスＡのバス許容時間がＣ２ステートのバス復帰時間より短い場合に（Ｓ１３４０：ＮＯ）、移行先モード選択部５５０−１は、移行先モードとしてＣ１ステートを選択し、デバイス情報記録部３１０に格納する（Ｓ１３６０）。
【００７４】
図１４は、変形例におけるオペレーティングシステムの処理の一例を示す。実行モード設定部５４０は、全ての入出力デバイスについての、移行先モードを、デバイス情報記録部３１０から取得する（Ｓ１４００）。そして、実行モード設定部５４０は、入出力デバイス毎に移行先モード選択部５５０−１等により選択された移行先モードのうち、最もＣＰＵ復帰時間が短くかつ最もバス復帰時間が短い低電力モードを、移行先モードとして設定する（Ｓ１４１０）。
【００７５】
以上、本変形例によれば、既存のオペレーティングシステムの機能をほとんど変更することなく、デバイスドライバの機能により、入出力デバイスを適切に動作させることができる。
【００７６】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００７７】
以上に示す実施例によれば、以下の各項目に示すプログラム、記録媒体、制御方法、及び情報処理装置が実現される。
（項目１）  情報処理装置に設けられた中央処理装置の実行モードを制御するプログラムであって、前記中央処理装置は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有し、前記情報処理装置を、前記中央処理装置が、消費電力のより低い実行モードである低電力モードから、前記低電力モードより消費電力の高い実行モードである高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得部と、前記情報処理装置の入出力デバイスが、前記低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得部と、前記許容時間及び前記復帰時間に基づいて、前記中央処理装置が前記低電力モードに移行可能と判断した場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する実行モード設定部として機能させるプログラム。
（項目２）  前記中央処理装置は、前記高電力モードにおいて命令を実行し、前記低電力モードにおいて命令を実行せず、前記許容時間取得部は、前記入出力デバイスが、前記中央処理装置に命令の実行を要求してから、前記中央処理装置が命令の実行を開始するまでの最長の許容時間であるＣＰＵ許容時間を取得し、前記実行モード設定部は、前記復帰時間が前記ＣＰＵ許容時間より短い場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する項目１記載のプログラム。
【００７８】
（項目３）  前記中央処理装置は、キャッシュメモリを有し、前記高電力モードにおいて前記キャッシュメモリ及びメインメモリの一貫性を保つ処理である一貫性制御を行い、前記低電力モードにおいて前記一貫性制御を行わず、前記許容時間取得部は、前記入出力デバイスが、前記情報処理装置のメインメモリへのアクセスを要求してから、前記中央処理装置が前記一貫性制御を行える状態となるまでの最長の許容時間であるバス許容時間を取得し、前記実行モード設定部は、前記復帰時間が前記バス許容時間より短い場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する項目１記載のプログラム。
（項目４）  前記中央処理装置は、前記高電力モードにおいて命令を実行し、前記低電力モードにおいて命令を実行せず、前記許容時間取得部は、前記入出力デバイスが、前記中央処理装置に命令の実行を要求してから、前記中央処理装置が命令の実行を開始するまでの最長の許容時間であるＣＰＵ許容時間を更に取得し、前記実行モード設定部は、前記復帰時間が前記ＣＰＵ許容時間より短いことを更に条件として、前記中央処理装置を前記低電力モードに移行可能な状態に設定する項目３記載のプログラム。
【００７９】
（項目５）  前記中央処理装置は、前記高電力モードから、消費電力が互いに異なる複数の前記低電力モードの何れかに移行し、前記復帰時間取得部は、前記中央処理装置が前記複数の低電力モードの各々から前記高電力モードに復帰するまでに要する復帰時間を取得し、前記実行モード設定部は、前記複数の低電力モードのうち、前記許容時間より復帰時間が短くかつ最も消費電力が低い低電力モードを、前記中央処理装置が前記高電力モードから移行する移行先の低電力モードとして選択して設定する項目１記載のプログラム。
（項目６）  前記情報処理装置は、複数の入出力デバイスを有し、前記許容時間取得部は、前記複数の入出力デバイスの各々の前記許容時間を取得し、前記実行モード設定部は、前記許容時間取得部が取得した最短の前記許容時間より前記復帰時間が短くかつ最も消費電力が低い低電力モードを、前記中央処理装置が前記高電力モードから移行する移行先の低電力モードとして選択して設定する項目５記載のプログラム。
（項目７）  前記実行モード設定部は、前記移行先の低電力モードを、過去に設定していた低電力モードと比較して消費電力の高い低電力モードに変更してから、予め定められた基準設定時間が経過した場合に、前記移行先の低電力モードを、変更前の当該低電力モードに戻す設定を行う項目５記載のプログラム。
【００８０】
（項目８）  前記実行モード設定部が、前記移行先の低電力モードを、変更前の当該低電力モードと比較して消費電力の高い低電力モードに変更してから、予め定められた基準設定時間が経過した場合に、前記許容時間取得部は、前記入出力デバイスを管理するデバイスドライバに、前記許容時間を問い合わせ、前記実行モード設定部は、当該問合せの返答を取得できない場合に、前記移行先の低電力モードを、変更前の当該低電力モードに戻す設定を行う項目７記載のプログラム。
（項目９）  前記中央処理装置は、前記高電力モードから、消費電力が互いに異なる複数の前記低電力モードの何れかに移行し、前記情報処理装置は、複数の入出力デバイスを有し、前記復帰時間取得部は、前記中央処理装置が前記複数の低電力モードの各々から前記高電力モードに復帰するまでに要する復帰時間を取得し、前記許容時間取得部は、前記複数の入出力デバイスの各々の前記許容時間を取得し、前記プログラムは、前記情報処理装置を、前記入出力デバイス毎に、当該入出力デバイスのみが前記情報処理装置に設けられている場合に前記実行モード設定部が設定するべき移行先の低電力モードを、前記許容時間及び前記復帰時間に基づいて選択する移行先モード選択部として更に機能させ、前記実行モード設定部は、入出力デバイス毎に前記移行先モード選択部により選択された移行先の低電力モードのうち、最も復帰時間が短い低電力モードを、移行先の低電力モードとして設定する項目１記載のプログラム。
【００８１】
（項目１０）  当該プログラムは、前記入出力デバイスの動作状態に基づいて当該入出力デバイスの前記許容時間を生成する許容時間生成部として前記情報処理装置を更に機能させ、前記許容時間取得部は、前記許容時間生成部から前記許容時間を取得する項目１記載のプログラム。
（項目１１）  前記許容時間生成部は、前記入出力デバイスがメインメモリとの間でデータを転送する場合に、当該入出力デバイスがメインメモリとの間でデータを転送しない場合と比較して、より短い時間を前記許容時間として生成する項目１０記載のプログラム。
（項目１２）  情報処理装置に設けられた中央処理装置の実行モードを制御するプログラムであって、前記中央処理装置は、キャッシュメモリを有し、前記キャッシュメモリとメインメモリとのデータ一貫性制御を行いかつ消費電力のより高い高電力モードと、前記高電力モードより消費電力が低く前記一貫性制御を行わない低電力モードとを有し、前記情報処理装置を、前記低電力モードにおいて、前記情報処理装置の入出力デバイスが前記メインメモリとの間で行うデータ転送を要求した場合に、当該データ転送に障害が発生したか否かを判断する障害検出部と、前記障害検出部により障害が発生したと判断された場合に、前記中央処理装置が前記低電力モードに移行できないように設定する実行モード設定部として機能させるプログラム。
【００８２】
（項目１３）  情報処理装置の中央処理装置を、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードの何れかにより動作させる制御を行うプログラムであって、前記中央処理装置は、消費電力のより高い実行モードである高電力モードから、前記高電力モードより消費電力の低い複数の実行モードである複数の低電力モードの何れかに移行し、前記情報処理装置を、前記中央処理装置が前記複数の低電力モードの各々から前記高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得部と、前記複数の低電力モードの各々について、前記情報処理装置の入出力デバイスが、当該低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得部と、前記入出力デバイスが前記情報処理装置に設けられており他の入出力デバイスが設けられていない場合において前記中央処理装置が移行すべき移行先の低電力モードを、前記許容時間及び前記復帰時間に基づいて選択し、選択した低電力モードを示す情報を出力する移行先モード選択部として機能させるプログラム。
（項目１４）  項目１、項目１２、及び項目１３の何れかに記載のプログラムを記録した記録媒体。
（項目１５）  情報処理装置に設けられた中央処理装置の実行モードを制御する制御方法であって、前記中央処理装置は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有し、前記中央処理装置が、消費電力のより低い実行モードである低電力モードから、前記低電力モードより消費電力の高い実行モードである高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得段階と、前記情報処理装置の入出力デバイスが、前記低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得段階と、前記許容時間及び前記復帰時間に基づいて、前記中央処理装置が前記低電力モードに移行可能と判断した場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する実行モード設定段階とを備える制御方法。
（項目１６）  情報処理装置に設けられた中央処理装置の実行モードを制御する制御方法であって、前記中央処理装置は、キャッシュメモリを有し、前記キャッシュメモリとメインメモリとのデータ一貫性制御を行いかつ消費電力のより高い高電力モードと、前記高電力モードより消費電力が低く前記一貫性制御を行わない低電力モードとを有し、前記低電力モードにおいて、前記情報処理装置の入出力デバイスが前記メインメモリとの間で行うデータ転送を要求した場合に、当該データ転送に障害が発生したか否かを判断する障害検出段階と、前記障害検出段階において障害が発生したと判断された場合に、前記中央処理装置が前記低電力モードに移行できないように設定する実行モード設定段階とを備える制御方法。
【００８３】
（項目１７）  情報処理装置の中央処理装置を、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードの何れかにより動作させる制御を行う制御方法であって、前記中央処理装置は、消費電力のより高い実行モードである高電力モードから、前記高電力モードより消費電力の低い複数の実行モードである複数の低電力モードの何れかに移行し、前記中央処理装置が前記複数の低電力モードの各々から前記高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得段階と、前記複数の低電力モードの各々について、前記情報処理装置の入出力デバイスが、当該低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得段階と、前記入出力デバイスが前記情報処理装置に設けられており他の入出力デバイスが設けられていない場合において前記中央処理装置が移行すべき移行先の低電力モードを、前記許容時間及び前記復帰時間に基づいて選択し、選択した低電力モードを示す情報を出力する移行先モード選択段階とを備える制御方法。
（項目１８）  中央処理装置及び入出力デバイスを備えた情報処理装置であって、前記中央処理装置は、実行できる処理の種類及び消費電力が互いに異なる複数の実行モードを有し、前記中央処理装置が、消費電力のより低い実行モードである低電力モードから、前記低電力モードより消費電力の高い実行モードである高電力モードに復帰するまでに要する時間である復帰時間を取得する復帰時間取得部と、前記情報処理装置の入出力デバイスが、前記低電力モードにおいて処理不能かつ前記高電力モードにおいて処理可能な処理を前記中央処理装置に要求してから、前記中央処理装置が前記高電力モードに復帰して当該処理を開始するまでの最長の許容時間を取得する許容時間取得部と、前記許容時間及び前記復帰時間に基づいて、前記中央処理装置が前記低電力モードに移行可能と判断した場合に、前記中央処理装置を前記低電力モードに移行可能な状態に設定する実行モード設定部とを備える情報処理装置。
（項目１９）  中央処理装置及び入出力デバイスを備えた情報処理装置であって、前記中央処理装置は、キャッシュメモリを有し、前記キャッシュメモリとメインメモリとのデータ一貫性制御を行いかつ消費電力のより高い高電力モードと、前記高電力モードより消費電力が低く前記一貫性制御を行わない低電力モードとを有し、前記低電力モードにおいて、前記情報処理装置の入出力デバイスが前記メインメモリとの間で行うデータ転送を要求した場合に、当該データ転送に障害が発生したか否かを判断する障害検出部と、前記障害検出部により障害が発生したと判断された場合に、前記中央処理装置が前記低電力モードに移行できないように設定する実行モード設定部とを備える情報処理装置。
【図面の簡単な説明】
【００８４】
【図１】図１は、情報処理装置１０のブロック図を示す。
【図２】図２は、中央処理装置１０００の実行モードの概要を示す。
【図３】図３は、メインメモリ１０２０に格納されるデータのデータ構造の一例を示す。
【図４】図４は、入出力デバイスの処理及び実行モードの遷移のタイミングの一例を示す図である。
【図５】図５は、中央処理装置１０００のブロック図を示す。
【図６】図６は、オペレーティングシステムが移行先モードを設定する処理の一例を示す。
【図７】図７は、図６に続く処理を示す。
【図８】図８は、オペレーティングシステムが行う他の処理の一例を示す。
【図９】図９は、デバイスドライバＡの動作フローの一例を示す。
【図１０】図１０は、変形例における中央処理装置１０００のブロック図を示す。
【図１１】図１１は、変形例におけるＣＰＵ情報記録部３００の一例を示す。
【図１２】図１２は、変形例におけるデバイスドライバＡの動作フローの一例を示す。
【図１３】図１３は、図１２に続く処理を示す。
【図１４】図１４は、変形例におけるオペレーティングシステムの処理の一例を示す。
【符号の説明】
【００８５】
１０  情報処理装置
３００  ＣＰＵ情報記録部
３１０  デバイス情報記録部
５００  許容時間生成部
５１０  復帰時間取得部
５２０  許容時間取得部
５３０  障害検出部
５４０  実行モード設定部
５５０  移行先モード選択部
１０００  中央処理装置
１０２０  メインメモリ
【図１】
2005234826.tif 000003
【図２】
2005234826.tif 000004
【図３】
2005234826.tif 000005
【図４】
2005234826.tif 000006
【図５】
2005234826.tif 000007
【図６】
2005234826.tif 000008
【図７】
2005234826.tif 000009
【図８】
2005234826.tif 000010
【図９】
2005234826.tif 000011
【図１０】
2005234826.tif 000012
【図１１】
2005234826.tif 000013
【図１２】
2005234826.tif 000014
【図１３】
2005234826.tif 000015
【図１４】
2005234826.tif 000016