(57)【特許請求の範囲】
【請求項１】
第１のプロセッサに結合される１つ以上の周辺デバイスと、
電力／リセット制御モジュールを備えた第２のプロセッサであって、スリープモードの動作の間に前記１つ以上の周辺デバイスの少なくとも１つを制御するように構成されている第２のプロセッサと、を備え、
前記電力／リセット制御モジュールは、非アクティブの期間の後に、１つ以上のスイッチを用いて、前記１つ以上の周辺デバイスの少なくとも１つ及び前記第１のプロセッサに対する電力供給を選択的に切り替えて、前記スリープモードの動作に移行するように構成されており、
前記第２のプロセッサは、前記第１のプロセッサと実質的に同様な機能を実行するように構成されている、装置。
【請求項２】
前記第１のプロセッサ、前記第２のプロセッサ、及び前記１つ以上の周辺デバイスの間のデータ通信パスを提供するように構成されるバスを更に備えた、請求項１に記載の装置。
【請求項３】
前記第２のプロセッサは前記１つ以上の周辺デバイスに結合されている、請求項１に記載の装置。
【請求項４】
前記１つ以上の周辺デバイスの少なくとも１つの各々に結合される制御器を備えており、
前記制御器は、その対応する前記１つ以上の周辺デバイスの少なくとも１つと、第１及び第２のプロセッサとの間のデータトラフィックを管理するように構成されている、請求項１に記載の装置。
【請求項５】
前記第２のプロセッサは、前記第１のプロセッサが前記スリープモードの動作にある間の他には制御され得ない前記１つ以上の周辺デバイスの少なくとも１つを制御するように構成されている、請求項１に記載の装置。
【請求項６】
前記第２のプロセッサは、
前記電力／リセット制御モジュールに結合されたマイクロコントローラと、
前記マイクロコントローラに結合され前記コンピュータの電力管理を制御するように構成されるアドバンスド・コンフィギュレーション・アンド・パワー・インタフェース・モジュールと、
前記マイクロコントローラに結合され前記マイクロコントローラと前記第１のプロセッサ及び前記１つ以上の周辺デバイスとの間でのインタフェースを提供するように構成されるバス接続と、
前記マイクロコントローラに結合され前記マイクロコントローラによって実行されるコンピュータプログラムを記憶するように構成されるファームウエアデバイスと、
前記マイクロコントローラに結合され前記マイクロコントローラのためのプログラム命令及びデータを記憶するように構成されるメモリデバイスと、を備えている、請求項１に記載の装置。
【請求項７】
前記電力／リセット制御モジュールは、
電力源と、
前記電力源に結合され前記電力源からの電圧を前記コンピュータに対する適切な電圧に調整するように構成される電力回路と、
前記電力源に結合され前記電力源に電力のサージが存在する場合に前記コンピュータへの電力をリセットするように構成されるリセット回路と、を備えている、請求項６に記載の装置。
【請求項８】
前記第２のプロセッサは前記第１のプロセッサよりも低いクロック周波数で動作するように構成されている、請求項１に記載の装置。
【請求項９】
前記第２のプロセッサは、前記第１のプロセッサがスリープモードの動作にある間に前記コンピュータの保守及び診断のタスクを制御するように構成されている、請求項１に記載の装置。
【請求項１０】
アクティブモードの動作の間に１つ以上の周辺デバイスを第１のプロセッサで制御するステップと、
スリープモードの動作の間に、前記１つ以上の周辺デバイスの少なくとも１つを、電力／リセット制御モジュールを備える第２のプロセッサで制御するステップと、を備え、
前記電力／リセット制御モジュールは、非アクティブの期間の後に、１つ以上のスイッチを用いて、前記１つ以上の周辺デバイスの少なくとも１つ及び前記第１のプロセッサに対する電力供給を選択的に切り替えて、前記スリープモードの動作に移行するように構成されており、
前記第２のプロセッサは、前記第１のプロセッサと実質的に同様な機能を実行するように構成されている、方法。
【請求項１１】
前記第１のプロセッサ、前記第２のプロセッサ、及び前記１つ以上の周辺デバイスの間でのデータ通信パスを提供するステップを更に備えた、請求項１０に記載の方法。
【請求項１２】
前記１つ以上の周辺デバイスを前記第１のプロセッサで制御するステップは、前記１つ以上の周辺デバイスと前記第１のプロセッサの間でのデータトラフィックを管理するステップを備えている、請求項１０に記載の方法。
【請求項１３】
前記１つ以上の周辺デバイスの少なくとも１つを前記第２のプロセッサで制御するステップは、前記第１のプロセッサが前記スリープモードの動作にある間の他には制御され得ない前記１つ以上の周辺デバイスの少なくとも１つの機能を制御するステップを備えている、請求項１０に記載の方法。
【請求項１４】
前記１つ以上の周辺デバイスの少なくとも１つを前記第２のプロセッサで制御するステップは、前記アクティブモードの動作の間に前記第１のプロセッサと共に動作するステップを備えている、請求項１０に記載の方法。
【請求項１５】
前記１つ以上の周辺デバイスの少なくとも１つを前記第２のプロセッサで制御するステップは、前記第１のプロセッサよりも低いクロック周波数で動作するステップを備えている、請求項１０に記載の方法。
【請求項１６】
アクティブモードの動作の間に１つ以上の周辺デバイスを第１のプロセッサで制御するように構成される第１のモジュールと、
スリープモードの動作の間に、前記１つ以上の周辺デバイスの少なくとも１つを、電力／リセット制御モジュールを備えた第２のプロセッサで制御するように構成される第２のモジュールと、を備え、
前記電力／リセット制御モジュールは、非アクティブの期間の後に、１つ以上のスイッチを用いて、前記１つ以上の周辺デバイスの少なくとも１つ及び前記第１のプロセッサに対する電力供給を選択的に切り替えて、前記スリープモードの動作に移行するように構成されており、
前記第２のプロセッサは、前記第１のプロセッサと実質的に同様な機能を実行するように構成されている、システム。
【請求項１７】
前記第１のプロセッサ、前記第２のプロセッサ、及び前記１つ以上の周辺デバイスの間でのデータ通信パスを提供するように構成される第３のモジュールを更に備えた、請求項１６に記載のシステム。
【請求項１８】
前記第１のモジュールは、前記１つ以上の周辺デバイスと前記第１のプロセッサの間でのデータトラフィックを管理するように構成されるモジュールを備えている、請求項１６に記載のシステム。
【請求項１９】
前記第２のモジュールは、前記第１のプロセッサが前記スリープモードの動作にある間の他には制御され得ない前記１つ以上の周辺デバイスの少なくとも１つの機能を制御するように構成されるモジュールを備えている、請求項１６に記載のシステム。
【請求項２０】
前記第２のモジュールは、前記アクティブモードの動作の間に前記第１のプロセッサと共に動作するように構成されるモジュールを備えている、請求項１６に記載のシステム。
【請求項２１】
前記第２のモジュールは、前記第１のプロセッサよりも低いクロック周波数で動作するように構成されるモジュールを備えている、請求項１６に記載のシステム。
【請求項２２】
１つ以上のプロセッサが実行するための１つ以上の命令の１つ以上のシーケンスを伝える非一時的なコンピュータ可読媒体であって、
アクティブモードの動作の間に１つ以上の周辺デバイスを第１のプロセッサで制御することと、
スリープモードの動作の間に前記１つ以上の周辺デバイスを第２のプロセッサで制御することと、を前記プロセッサに実行させ、
前記電力／リセット制御モジュールは、非アクティブの期間の後に、１つ以上のスイッチを用いて、前記１つ以上の周辺デバイスの少なくとも１つ及び前記第１のプロセッサに対する電力供給を選択的に切り替えて、前記スリープモードの動作に移行するように構成されており、
前記第２のプロセッサは、前記第１のプロセッサと実質的に同様な機能を実行するように構成されている、コンピュータ可読媒体。
【請求項２３】
前記第１のプロセッサ、前記第２のプロセッサ、及び前記１つ以上の周辺デバイスの間でのデータ通信パスを提供することを、前記プロセッサに実行させる請求項２２に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してプロセッサのスリープモードの動作の間にコンピュータの性能を最適化することに関する。
【背景技術】
【０００２】
中央処理ユニット（ＣＰＵｓ）及びそれらが使用されるコンピュータの設計においては、電力の浪費が重要な検討事項である。多くのコンピュータは、処理が要求されていないときに電力消費を低減するために「スリープ」モードの動作に入るように構成されている。典型的にはスリープモードにおいては、コンピュータは非アクティブにされ、またそのＣＰＵは命令の実行を停止する。コンピュータは非アクティブであるが、限られた数のコンピュータデバイス（例えばキーボード、マウス、ユニバーサル・シリアル・バス(Universal Serial Bus)（ＵＳＢ）ポート）はアクティブのままであり、これらのデバイスがユーザ入力によってトリガーされたときにコンピュータはスリープ解除してアクティブ状態になる。例えばキーボードのキーストローク又はマウスのクリックが、コンピュータをスリープモードからスリープ解除することができる。
【０００３】
しかし、他のコンピュータ機能及びデバイスはスリープモードの間に電力を落とされ又は非アクティブである。これらのコンピュータ機能及びデバイスは例えば、表示デバイス（例えばモニタ）、ネットワークデバイス（例えばインターネット接続）、及び音声デバイス（例えば音声アダプタ）を含む。コンピュータ及びそのＣＰＵは、ユーザがこれらのデバイスを実行することが可能になるのに先立ち、低電力スリープモードの動作を終了させる必要がある。
【０００４】
ＣＰＵの最適性能を必要としないコンピュータプログラムに対しては、ＣＰＵはこれらの種類のアプリケーションにおいて不必要にかなりの量の電力を消費する。この電力の浪費は主として、ＣＰＵにおいてデバイスを切り換えること及び、電気回路の抵抗性に起因する熱の形態でのエネルギー損失が原因である。例えば、コンピュータで実行されるアプリケーションが高いＣＰＵクロック速度を必要としていないにもかかわらず、アプリケーションの複雑性とは無関係にＣＰＵはその高いクロック速度で動作する。ＣＰＵがスリープモードから出て計算上の激しさが少ないアプリケーションを実行することを継続するにつれて、ＣＰＵは要求されるよりも多い電力を不必要に消費すると共に、デバイス故障の危険性を高め従ってコンピュータの信頼性を低下させる可能性がある。
【０００５】
また可搬型携帯デバイスのような低電力な適用に対しては、ＣＰＵによる電力の不必要な浪費がバッテリ寿命を短くし、デバイスの性能を低下させる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、プロセッサのスリープモードの動作の間にコンピュータの性能を最適化する改良された装置及び方法が求められている。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、第１のプロセッサがスリープモードの動作にある間にコンピュータの性能を最適化するための装置を含む。装置は第１のプロセッサと第２のプロセッサとに結合される１つ以上の周辺デバイスを含む。装置はまた、第１のプロセッサ、第２のプロセッサ、及び１つ以上の周辺デバイスの間のデータ通信パスを提供するように構成されるバスを含むことができる。１つ以上の周辺デバイスは各周辺デバイスに結合される制御器を含むことができ、制御器はその対応する周辺デバイスと第１及び第２のプロセッサの間のデータトラフィックを管理するように構成される。第１のプロセッサはアクティブモードの動作の間に１つ以上の周辺デバイスを制御するように構成される。
【０００８】
第１のプロセッサがスリープモードにある間、第２のプロセッサは少なくとも１つ以上の周辺デバイスを制御するように構成される。第２のプロセッサは第１のプロセッサがスリープモードの動作にある間の他には制御され得ない１つ以上の周辺デバイスの機能を制御するように構成されてよい。第１及び第２のプロセッサを組み込んだコンピュータシステムにおける電力消費を更に低減するために、第２のプロセッサはスリープモードの間はより低い周波数で動作することができ、従って特定の計算タスクを実行するのに第１のプロセッサよりも長い時間をとる。
【０００９】
本発明の実施形態は、第１のプロセッサがスリープモードの動作にある間にコンピュータの性能を最適化するための方法を含む。方法は、アクティブモードの動作の間に１つ以上の周辺デバイスを第１のプロセッサで制御することと、スリープモードの動作の間に１つ以上の周辺デバイスを第２のプロセッサで制御することとを含む。方法はまた、第１のプロセッサ、第２のプロセッサ、及び１つ以上の周辺デバイスの間でのデータ通信パスを提供することを含むことができる。
【００１０】
本発明の実施形態は、第１のプロセッサがスリープモードの動作にある間にコンピュータの性能を最適化するためのシステムを含む。システムは、アクティブモードの動作の間に１つ以上の周辺デバイスを第１のプロセッサで制御する第１のモジュールと、スリープモードの動作の間に１つ以上の周辺デバイスを第２のプロセッサで制御する第２のモジュールとを含む。システムはまた、第１のプロセッサ、第２のプロセッサ、及び１つ以上の周辺デバイスの間でのデータ通信パスを提供する第３のモジュールを含むことができる。
【００１１】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に記述されている。本発明がここに記述される特定の実施形態に限定されないことを特記しておく。当該実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
【図面の簡単な説明】
【００１２】
添付の図面は、ここに組み込まれまた出願書類の一部をなし、本発明の実施形態を示しそして、明細書と共に本発明の原理を説明し並びに関連分野を含めた当業者が本発明をつくり及び使用することを可能にするのに更に役立つ。
【００１３】
【図１】図１は従来のコンピュータシステムを示す図である。
【００１４】
【図２】図２は第１のプロセッサがスリープモードの動作にある間にコンピュータの性能を最適化するための装置の実施形態を示す図である。
【００１５】
【図３】図３はスリーププロセッサの実施形態を示す図である。
【００１６】
【図４】図４は電力／リセット制御モジュールの実施形態を示す図である。
【００１７】
【図５】図５はスリーププロセッサの実施形態を実装しているウエブサーバを含むネットワークの例を示す図である。
【００１８】
【図６】図６はスリーププロセッサの実施形態を含むウエブサーバにおけるコンピュータシステムの例を示す図である。
【００１９】
【図７】図７はスリープモードの動作においてウエブサーバにアクセスしているユーザが受け取ることのできる状態メッセージの例を示す図である。
【００２０】
【図８】図８は第１のプロセッサがスリープモードの動作にある間にコンピュータの性能を最適化するための方法の実施形態を示す図である。
【００２１】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に記述されている。本発明がここに記述される特定の実施形態に限定されないことを特記しておく。当該実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
【発明を実施するための形態】
【００２２】
本発明の以下の詳細な説明は、この発明に合致する例示的な実施形態を示す添付の図面を参照する。他の実施形態も可能であり、本発明の精神及び範囲内で実施形態に対して修正がなされ得る。従って、詳細な説明は本発明を限定することを意図されたものではない。むしろ本発明の範囲は添付の特許請求の範囲によって画定される。
【００２３】
本発明はソフトウエア、ハードウエア、ファームウエア、及び／又は図面に示された実体の多くの異なる実施形態において後述するように実装又は実施され得ることが関連分野を含めた当業者にとって明らかであろう。本発明を実装又は実施するハードウエアの特別な制御を伴ういかなる現実的なソフトウエアコードも本発明を限定していない。このように、本発明の動作上の挙動は、ここに提示される詳細さのレベルを前提として実施形態の修正及び変更が可能であるとの理解のもとに記述されることになる。
【００２４】
図１は従来のコンピュータシステム１００を示す図である。コンピュータシステム１００は、中央処理ユニット（ＣＰＵ）１１０と、バス１２０と、制御器１３００〜１３０４と、周辺デバイス１４０とを含む。制御器１３００〜１３０４は周辺デバイス１４０に結合される。周辺デバイス１４０は例えば、表示デバイス１４００と、入力デバイス１４０１と、ネットワークデバイス１４０２と、記憶デバイス１４０３と、音声デバイス１４０４とを含むことができる。
【００２５】
ＣＰＵ１１０はバス１２０を介して制御器１３００〜１３０４及び周辺デバイス１４０と通信する。バス１２０はＣＰＵ１１０と周辺デバイス１４０の間でチャネル又はパスを提供する。バス１２０は例えば、ＣＰＵ１１０を主メモリ（例えばランダムアクセスメモリ（ＲＡＭ））に接続するシステムバスと、ＣＰＵ１１０を表示デバイス１４００（例えばモニタ）、入力デバイス１４０１（例えば外部ビデオカメラ）、ネットワークデバイス１４０２（例えばインターネット接続）、記憶デバイス１４０３（例えばハードドライブ）、及び音声デバイス１４０４（例えば音声アダプタ）に接続する周辺コンポーネントインタフェースとの組み合わせであってよい。代替的には、ＣＰＵ１１０を周辺デバイス１４０に接続するために、例えばＰＣＩ＿Ｅｘｔｅｎｄｅｄ（ＰＣＩｅ）及びＰＣＩ＿Ｅｘｐｒｅｓｓ（ＰＣＩ−Ｘ）バスアーキテクチャのような他の種類のバスアーキテクチャが使用可能であることを関連分野を含めた当業者は認識するであろう。
【００２６】
制御器１３００〜１３０４はＣＰＵ１１０と周辺デバイス１４０の間でのデータトラフィックを管理する。周辺デバイス１４０におけるコンポーネントはバス１２０を共有しているので、制御器１３００〜１３０４は周辺デバイス１４０における各コンポーネントとＣＰＵ１１０の間でのデータトラフィックを調整する手段を提供する。例えばスリープモードの動作においては、制御器１３００〜１３０４は、スリープモードの動作の間はＣＰＵ１１０がデータを受け取らないであろうことを示す信号をＣＰＵ１１０から受け取りそれぞれの周辺デバイスに出力することができる。従ってこれらの周辺デバイスはスリープモードの間は電力を落とされて(powered down)よい。同様にスリープモードからアクティブモードへの移行に際しては、制御器１３００〜１３０４は、ＣＰＵ１１０が周辺デバイス１４０からデータを受け取りこれらの周辺デバイスをスリープ解除することが可能であることを示すＣＰＵ１１０からの信号を出力することができる。
【００２７】
ＣＰＵ１１０が使用されていないとき、コンピュータシステム１００は典型的にはスリープモードの動作に入る。コンピュータシステムにおける電力管理を規定するために広く用いられている業界標準は、アドバンスド・コンフィギュレーション・アンド・パワー・インタフェース(Advanced Configuration and Power Interface)（ＡＣＰＩ）規格である。ＡＣＰＩ規格はＡＣＰＩ適合コンピュータに対して５つのスリープ状態（Ｓ１〜Ｓ５）を規定しており、各状態はコンピュータ内の特定のデバイスの電力を落とす。各スリープ状態はより大きな電力の節約をもたらすが、これに応じてスリープ解除して作業の実行を開始するのにより多くの時間を必要とする（例えばＳ１はＳ２，Ｓ３，Ｓ４，及びＳ５よりも短い作業待ち時間を有し、Ｓ２はＳ３，Ｓ４，及びＳ５よりも短い作業待ち時間を有し、以下同様である）。システムにおけるキーコンポーネントの電力消費及び熱サイクルを低減してコンピュータの寿命を延ばし且つ信頼性を高めるためには、コンピュータシステム１００がスリープモードの動作、特に深いスリープ状態であり続けることが有益である。
【００２８】
Ｓ１スリープモードの動作においては、ＣＰＵ１１０への電力は維持されているもののコンピュータシステム１００は非アクティブにされ、ＣＰＵ１１０は命令の実行を停止する。ＣＰＵ１１０は非アクティブであるが、ＣＰＵ１１０及びコンピュータシステム１００の主メモリ（図示せず）は電力が投入されたままである。例えばキーボード、マウス、ＵＳＢポート、及び拡張カードのような付加的なデバイスもまた電力を維持しており、これらのデバイスからのユーザ入力によってコンピュータはスリープ解除可能である。また、ハードウエア内にファームウエアを含むデバイス（例えばＣＤ−ＲＯＭ）も、これらのデバイスはＣＰＵ１１０から独立して動作可能であるから、電力が投入されたままである。組み込まれたファームウエアを有しておらず又はＳ１スリープ状態の間にオンであり続ける必要があることを示していない他のデバイスは、電力を落とされる。例えば、表示デバイス１４００、入力デバイス１４０１、ネットワークデバイス１４０２、記憶デバイス１４０３、及び音声デバイス１４０４は、Ｓ１スリープモードの動作の間に電力を落とされてよい。
【００２９】
Ｓ１よりも深いスリープ状態であるＳ２スリープモードの動作においては、ＣＰＵ１１０は電力を落とされる。しかし、コンピュータシステム１００の主メモリは電力を投入されたままである。主メモリは電力を投入されたままであるので、コンピュータのオペレーティングシステム及びユーザによって実行されるオープンアプリケーションは、コンピュータシステム１００がスリープモードに入る前と同じ状態を維持する。Ｓ１及びＳ２よりも深いスリープ状態であるＳ３スリープモードの動作は、Ｓ２スリープモードの動作と同様に動作するが、コンピュータシステム１００内の付加的なデバイス（ここでは詳述せず）は電力を落とされる。
【００３０】
Ｓ１〜Ｓ３よりも深いスリープ状態であるＳ４スリープモードの動作においては、ＣＰＵ１１０が電力を落とされるだけでなく、主メモリもまた電力を落とされる。主メモリの全ての内容は不揮発性メモリデバイス（例えばコンピュータのハードドライブ）にセーブされ、不揮発性メモリデバイスは主メモリの電力を落とすよりも前にオペレーティングシステム及びオープンアプリケーションの状態を保存する。
【００３１】
最後にＡＣＰＩ規格で最も深いスリープ状態であるＳ５スリープモードの動作においては、ユーザ入力によってコンピュータがスリープ解除することができるように電力の投入が維持される少数のデバイスを除き、コンピュータシステム１００内の多くのデバイスは電力を落とされる。例えばキーボード、マウス、又はＵＳＢポートは電力を投入されたままであってよく、これらのデバイスからのユーザ入力（例えばキーボードのキーストローク、マウスのクリック、又はＵＳＢポートへのＵＳＢデバイスの挿入）がコンピュータシステム１００のスリープモードを解除することができる。
【００３２】
Ｓ１〜Ｓ５スリープモードの動作を参照して上に示されるように、コンピュータが種々のスリープ状態に入るのに従って、コンピュータ内のより多くのデバイスが電力を落とす。そしてコンピュータシステム１００がより深いスリープ状態に入るに従って、付加的なデバイスは各進行性のスリープ状態で電力を落とされるので、コンピュータシステム１００はより少ない電力を浪費する。最近のコンピュータアーキテクチャ設計では、ユーザがコンピュータシステム１００でアプリケーションを実行する必要があるときに、ＣＰＵ１１０はスリープモードを終了させてアクティブモードの動作を再開する。
【００３３】
幾つかのコンピュータアプリケーションにとっては、ユーザによって実行されるアプリケーションは、ＣＰＵ１１０からの最適性能を必要とはしないであろう。例えばＣＰＵ１１０は、高いＣＰＵクロック速度で実行される必要のある例えばグラフィックス機能のような激しく且つ高度に複雑なコード命令でアプリケーションを処理するように設計されているかもしれない。本質的に、ＣＰＵ１１０はこれらの種類の複雑なコード命令を処理することができるので、ＣＰＵ１１０は当該処理性能を必要としないアプリケーションについても処理可能である。しかし、ＣＰＵ１１０は計算上の激しさが少ないアプリケーションに対しても複雑なアプリケーションに対するのと同じクロック周波数で動作するから、ＣＰＵ１１０はこれらの計算上の激しさが少ないアプリケーションを動作させる場合により多くの電力を不必要に消費する。これによりＣＰＵ１１０における電力管理の非効率性を招き、コンピュータシステム１００の寿命及び信頼性を低下させてしまう。
【００３４】
コンピュータシステム１００がスリープモードから出て計算上の激しさが少ないアプリケーションを実行することを継続するにつれて、ＣＰＵ１１０は要求されるよりも多い電力を不必要に消費し、デバイス故障の危険性が高くなり得る。従来のコンピュータシステム１００のこの欠点を打開するための装置及び方法が必要である。この装置及び方法は、主要プロセッサ（例えばＣＰＵ１１０）がスリープモードにある間の他には実行されないであろうアプリケーションを動作させるための補助プロセッサを組み込むことによって、コンピュータシステムの電力管理の効率を高める。
【００３５】
以下の記述においては、説明を目的として、本発明の完全な理解を提供するための特定の詳細が記載されている。しかし、これらの特定な詳細が無くとも本発明が実施可能であることは、関連分野を含めた当業者にとって明らかであろう。他の例では、周知の回路、構造、及び技術は、本明細書の理解を不必要に曖昧にすることを避けるために、ブロック図において詳細には示されていない。
【００３６】
本明細書における「１つの実施形態」又は「実施形態」への言及は、その実施形態に関連して記述される特定の特徴、構造、又は特性が本発明の少なくとも１つの実施形態に含まれていることを意味する。本明細書において頻繁に出てくる「１つの実施形態において」という表現は必ずしも同じ実施形態を参照しない。
【００３７】
図２は第１のプロセッサがスリープモードの動作にある間にコンピュータの性能を最適化するための装置２００の実施形態を示す図である。装置２００は、第１のプロセッサがスリープモードにある間に補助プロセッサが特定の機能を実行することを可能にすることによって、コンピュータシステムの電力管理の効率を最適化することができる。これらの機能は第１のプロセッサがスリープモードにある間の他には実行されなくてよいアプリケーションを含む。
【００３８】
装置２００は、補助プロセッサ２１０（ここでは補助プロセッサ又はスリーププロセッサと称される）と、ＣＰＵ１１０と、バス１２０と、制御器１３００〜１３０４と、周辺デバイス１４０とを含む。周辺デバイス１４０は例えば、表示デバイス１４００と、入力デバイス１４０１と、ネットワークデバイス１４０２と、記憶デバイス１４０３と、音声デバイス１４０４とを含んでいてよい。ＣＰＵ１１０、バス１２０、制御器１３００〜１３０４、及び周辺デバイス１４０は、図１において説明したものと同様に機能する。
【００３９】
ここで説明されるように、スリーププロセッサ２１０はＣＰＵ１１０がスリープモードにある間に動作可能であるが、ＣＰＵ１１０がアクティブモードにある間にもスリーププロセッサ２１０が動作するように構成され得ることを関連分野を含めた当業者は認識するであろう。例えば、ＣＰＵ１１０の演算中の帯域が過負荷である場合、スリーププロセッサ２１０は、アクティブモードでのＣＰＵ１１０の特定のタスクを実行することによって、ＣＰＵの帯域を軽減するのを支援するように構成されてよい。また、スリーププロセッサ２１０はＣＰＵ１１０とは別の要素として図２に示されているが、スリーププロセッサ２１０がＣＰＵ１１０内に実装され得ることを関連分野を含めた当業者は認識するであろう。例えば、スリーププロセッサ２１０はＣＰＵ１１０と同じ集積回路上で又は同じ回路パッケージ内で製造され得る。
【００４０】
図３はスリーププロセッサ２１０の実施形態を示す図である。スリーププロセッサ２１０は、マイクロコントローラ３１０と、バス接続３２０と、ＡＣＰＩモジュール３３０と、電力／リセット制御モジュール３４０と、メモリデバイス３５０と、メモリバス制御器３６０と、ファームウエアデバイス３７０と、ファームウエアバス制御器３８０とを含む。マイクロコントローラ３１０はバス接続３２０を介してＣＰＵ１１０及び制御器１３００〜１３０４（図２内）と通信する。バス接続３２０はバス１２０を介したマイクロコントローラ３１０とコンピュータシステムの残りの部分との間のインタフェースを提供し、バス接続３２０は例えばＰＣＩｅ及びＰＣＩ−Ｘコンピュータバスアーキテクチャのようなコンピュータシステム内に実装されるよく用いられるバスインタフェースであってよい。コンピュータバスアーキテクチャは関連分野を含めた当業者に知られている。
【００４１】
ＡＣＰＩモジュール３３０はスリープモードの動作の間、装置２００の電力管理を制御する。図１に関して上述したように、コンピュータシステムは種々のスリープモード状態に入ることができ、各スリープ状態はコンピュータシステム内の複数の付加的なコンポーネントの電力を次第に落としてゆく。マイクロコントローラ３１０と連動して、ＡＣＰＩモジュール３３０は各スリープ状態の間に特定の周辺デバイス１４０の電力を落とすことを制御するように構成されてよい。例えば図２を参照すると、入力デバイス１４０１及び音声デバイス１４０４の電力が落とされるように構成されてよい一方で、表示デバイス１４００、ネットワークデバイス１４０２、及び記憶デバイス１４０３はＳ１スリープモードの動作の間、電力を投入され続ける。ここで、ＡＣＰＩモジュール３３０は、マイクロコントローラ３１０と通信して電力／リセット制御モジュール３４０に対してシャットダウン信号を出力して、制御器１３０１、入力デバイス１４０１、制御器１３０４、及び音声デバイス１４０４の電力を落とす。関連分野を含めた当業者であれば、ＡＣＰＩモジュール３３０が種々のスリープモードの動作の間に１つ以上の周辺デバイス１４０の電力を落とすように構成され得ることを認識するであろう。
【００４２】
図４は電力／リセット制御モジュール３４０の実施形態を示す図である。電力／リセット制御モジュール３４０は、電力源４１０と、電力回路４２０と、リセット回路４３０と、スイッチ４４００〜４４０５とを含む。電力源４１０は、例えば１２０Ｖ壁コンセントのような外部電源から装置２００へ電力を供給する。電力回路４２０は電力源４１０からの電力信号を装置２００に対する適切な電圧レベルに調整し、次いで調整された電力信号を装置２００内の複数のデバイス（即ちＣＰＵ１１０、制御器１３００〜１３０４、周辺デバイス１４０、及びスリーププロセッサ２１０）に分配する。電力回路４２０はスイッチ４４００〜４４０５を通して装置２００内の複数のデバイスへの電力の分配を選択的に制御する。このようにスリープモードの動作の間、マイクロコントローラ３１０は電力回路４２０と通信してスイッチ４４００〜４４０５を介して周辺デバイス１４０の電力を落とすことができる。
【００４３】
リセット回路４３０は装置２００へのリセット線を提供し、必要な場合に装置２００内の電力をリセットする。実施形態においては、電力／リセット制御モジュール３４０内の電力及びリセットの機能は密接に関連している。例えば、装置２００の電力投入シーケンスの間は、適切な電力レベルの安定化までリセット線が装置２００内で有効にされる。電力回路４２０は適切な電力レベルに到達したことを示す信号（例えば電力良好(POWERGOOD)信号）を生成することができ、その信号が有効な場合に、リセット線は装置２００から無効にされてよい。他の実施形態においては、電力回路４２０は電力源４１０からの電力サージを受け取ることができ、電力サージはリセット回路４３０をトリガーして、装置２００の電力を落とし次いで所定の時間（例えば電力サージが弱まるのに適切な時間）の後に電力を投入することができる。
【００４４】
図３を参照すると、ファームウエアデバイス３７０はマイクロコントローラ３１０によって実行されるコンピュータプログラムを記憶している。他の実施形態においては、マイクロコントローラ３１０によって実行されるコンピュータプログラムは、スリーププロセッサ２１０の全体の回路領域を減少させるために、ＣＰＵ１１０により用いられる不揮発性メモリ（図示せず）内に記憶されていてよい。ＣＰＵ１１０により用いられコンピュータプログラムが記憶され得る不揮発性メモリの例は、ＢＩＯＳフラッシュＥＥＰＲＯＭを含む。
【００４５】
ファームウエアデバイス３７０に記憶されているコンピュータプログラムは設計仕様(design-specific)であり、特定のタスクを実行することができる。例えばファームウエアデバイス３７０は、コンピュータのオペレーティングシステムによって要求される保守及び診断のタスクを実行するためのプログラムを記憶するように構成されてよい。これらのタスクは例えば、ディスクデフラグ(disk defragmentation)、ウイルススキャン、更新のダウンロード、並びにメモリの試験及び初期化を含む。これらの種類のタスクは対人関係あるいはＣＰＵ１１０の最大実行能力を必要としないので、ＣＰＵ１１０がスリープモードにある間にマイクロコントローラ３１０がこれらのアプリケーションを実行することは有益である。また、コンピュータシステム内における全電力消費を低減するために、マイクロコントローラ３１０はこれらのタスクを長期間にわたってより低いクロック周波数にて実行することができる。
【００４６】
ＣＰＵ１１０がスリープモードにある間にマイクロコントローラ３１０が特定のタスクを実行することが有益である一方で、ファームウエアデバイス３７０及びマイクロコントローラ３１０もまたＣＰＵ１１０と実質的に同様な機能を包含するように構成され得ることを関連分野を含めた当業者は認識するであろう。
【００４７】
ファームウエアバス制御器３８０はファームウエアデバイス３７０とマイクロコントローラ３１０の間でのデータリンクを提供する。ファームウエアバス制御器３８０は例えば、シリアル周辺機器用バスインタフェースであってよい。代替的には、他の種類の通信データリンクがファームウエアバス制御器３８０のために用いられてよい。
【００４８】
メモリデバイス３５０はマイクロコントローラ３１０のための主メモリとして機能する。マイクロコントローラ３１０はメモリ３５０からの命令を読み出し、それらの命令を実行する。また、マイクロコントローラ３１０でアクティブに動作させられているあらゆるデータもまた、メモリデバイス３５０内に記憶されていてよい。メモリデバイス３５０の例はＲＡＭである。メモリバス制御器３６０は、マイクロコントローラ３１０がメモリデバイス３５０に対して読み出し及び書き込みが可能になるように、メモリデバイス３５０とマイクロコントローラ３１０の間でのインタフェースを提供する。
【００４９】
システム設計に組み込まれるスリーププロセッサ２１０の例を提供するために、例示を目的として、スリーププロセッサ２１０はコンピュータネットワーク５００の一部であるものとする。図５はユーザ５１０、ネットワーク５２０、及びウエブサーバ５３０を含むコンピュータネットワーク５００の例を示す図である。ネットワーク５２０は公衆の又は私的な通信ネットワークのいずれか（例えばインターネット又は企業のネットワークイントラネット）であってよい。通信ネットワークは関連分野を含めた当業者に知られている。この例では、ウエブサーバ５３０が本発明の実施形態に従いスリーププロセッサ２１０を実装している。
【００５０】
図６はウエブサーバ５３０内のコンピュータシステム６００の例を示す図である。コンピュータシステム６００はネットワーク５２０を介したユーザ５１０からの要求に応答するために用いることができる。コンピュータシステム６００は、スリーププロセッサ２１０と、ＣＰＵ１１０と、バス１２０と、制御器１３００〜１３０４と、周辺デバイス１４０とを含む。ＣＰＵ１１０がスリープモードにある一方で、スリーププロセッサ２１０は、図６に影付きの領域６２０で示されるように、ネットワークデバイス１４０２（例えばネットワーク５２０を介して通信するネットワークルータ）と通信する。表示デバイス１４００、入力デバイス１４０１、記憶デバイス１４０３、音声デバイス１４０４、及びそれらのそれぞれの制御器１３００，１３０１，１３０３，１３０４はスリープモードの間は非アクティブである。
【００５１】
非アクティブの期間の後、コンピュータシステム６００はスリープモードの動作に入り、そこではスリーププロセッサ２１０及びネットワークデバイス１４０２はアクティブのままである。アクティブモードからスリープモードの動作への移行においては、ＡＣＰＩモジュール３３０がマイクロコントローラ３１０と通信して、ＣＰＵ１１０、制御器１３００，１３０１，１３０３，１３０４、表示デバイス１４００、入力デバイス１４０１、記憶デバイス１４０３、及び音声デバイス１４０４の電力を落とすためのシャットダウン信号を電力／リセット制御モジュール３４０に対して出力する。図４を参照すると、これらのデバイスの電力を落とす場合には、スイッチ４４００，４４０１，４４０３，４４０４が接地接続に切り換えられる。
【００５２】
このスリープモードの例では、スリーププロセッサ２１０の機能性は単純な機能に限定され、ＣＰＵ１１０によって提供される最大性能は包含しない。例えばユーザ５１０がウエブサーバ５３０にウエブページ要求を送ろうとする場合、スリーププロセッサ２１０は、ネットワーク５２０を介してユーザ５１０へウエブサーバ５３０の状態を示すメッセージを送ることができる。状態メッセージを送るようマイクロコントローラ３１０（スリーププロセッサ２１０内の）に命令するコンピュータプログラムは、ファームウエアデバイス３７０内に記憶されている。図７はスリーププロセッサ２１０がユーザ５１０へ送ることができる状態メッセージの例を示す図である。
【００５３】
状態メッセージの例７００によって示されるように、コンピュータシステム６００は要求されたウエブページを開く旨の選択をユーザ５１０に提供する。もしユーザ５１０がそのウエブページにアクセスすることを決定すれば、スリーププロセッサ２１０はＣＰＵ１１０への電力を回復させる。ＣＰＵ１１０は次いでスリープモードを終了させ、ユーザ５１０によるウエブページ要求に応答する。一方もしユーザ５１０がそのウエブページにアクセスしないことを決定すると、ＣＰＵ１１０はスリープモードを継続する。スリーププロセッサ２１０は結果として、ＣＰＵ１１０ではなくスリーププロセッサ２１０がユーザ５１０にウエブページへのアクセスを問い合わせてからコンピュータシステム６００によって消費される全電力を低減する。
【００５４】
つまり、ネットワーク５２０を介してユーザ５１０へ状態メッセージを送ることのような単純なタスクはスリーププロセッサ２１０によって実行されるから、ＣＰＵ１１０はスリープモードを終了させて状態メッセージ動作を実行する必要が無いのである。もしＣＰＵ１１０がこの動作を実行する必要があったとすると、ＣＰＵ１１０は状態メッセージをユーザ５１０へ送ることよりもむしろよほど複雑なタスク、例えばウエブサーバ５３０からウエブページ情報を検索することのために設計されているであろうから、ＣＰＵ１１０によって消費される電力の非効率的な使用がもたらされてしまうことになる。スリーププロセッサ２１０はその代わりに、ネットワーク５２０を介して状態メッセージを送る単純なタスクを実行することができ、従ってコンピュータシステム６００の全体の電力消費が低減される。
【００５５】
関連分野を含めた当業者であれば、他のタスクがスリーププロセッサ２１０によって実行され得ることを認識するであろう。例えばスリーププロセッサ２１０は、コンピュータシステム６００のオペレーティングシステムによって要求される保守及び診断のタスクを実行するように設計されてよい。
【００５６】
図８は第１のプロセッサがスリープモードにある間にコンピュータの性能を最適化するための方法８００の実施形態を示す図である。方法８００は例えば装置２００を用いて実施することができる。ステップ８１０では、１つ以上の周辺デバイスがアクティブモードの動作の間に第１のプロセッサによって制御される。１つ以上の周辺デバイスは、例えば表示デバイス、記憶デバイス、及び音声デバイスのような、第１のプロセッサによって制御される様々な種類のデバイスであってよい。また第１のプロセッサは、第１のプロセッサを組み込んだコンピュータシステムの機能を制御するように構成されるＣＰＵであってよい。１つ以上の周辺デバイスを制御する際に第１のプロセッサは、それ自体と１つ以上の周辺デバイスの間での通信リンク（例えばデータトラフィック）を管理することができる。
【００５７】
ステップ８２０では、１つ以上の周辺デバイスはスリープモードの動作の間、第２のプロセッサによって制御される。第２のプロセッサは、スリープモードの間にコンピュータの特定の機能を制御するので、「スリープ」プロセッサと称されることもある。数ある機能のうちでも、スリーププロセッサは、第１のプロセッサがスリープモードにある間の他には制御され得ない１つ以上の周辺デバイスの機能を制御することができる。例えば保守及び診断のタスクは、第１のプロセッサがアクティブモードの動作にある間にだけ実行されてよい。スリーププロセッサはこれらの種類のタスクを実行するように構成されてよい。コンピュータシステム内における全電力消費を低減するために、スリーププロセッサはまた、これらのタスクを長期間にわたってより低いクロック周波数にて実行するように構成されてよい。更に、スリーププロセッサは第１のプロセッサがスリープモードにある間に動作するものとして説明されているが、アクティブモードの動作の間に第１のプロセッサと共に動作するようにスリーププロセッサが構成され得ることを関連分野を含めた当業者は認識するであろう。
【００５８】
ステップ８３０では、第１のプロセッサ、第２のプロセッサ、１つ以上の周辺デバイスの間にデータ通信パスが提供される。それらデバイス間のデータ通信パスを提供するために、例えば図２のバス１２０を用いることができる。また、第２のプロセッサと第１のプロセッサ及び１つ以上の周辺デバイスとの間でのインタフェースを提供するために、例えば図３のバス接続３２０を用いることができる。
【００５９】
本発明の例示的な実施形態において上述のスリーププロセッサを提供するデバイスのハードウエア実装に加えて、そのようなデバイスは、例えば、ソフトウエア（例えばコンピュータ可読プログラムコード）を記憶するように構成されたコンピュータ利用可能な（例えば可読な）媒体内に配置されたソフトウエアにおいて具現化されてもよい。プログラムコードは、以下のような実施形態：（i）ここに開示される方法及びシステムの機能（例えばスリーププロセッサを組み込んだシステム及び方法）；（ii）ここに開示されるシステム及び方法の製造（例えばスリーププロセッサ構造を提供することが可能なデバイスの製造）；又は（iii）ここに開示されるシステム及び方法の機能及び製造の組み合わせを含め、本発明の実施形態の実施可能性をもたらす。
【００６０】
例えばこのことは、一般的なプログラミング言語（例えばＣ又はＣ＋＋）、Ｖｅｒｉｌｏｇ、Ｖｅｒｉｌｏｇ−Ａ、ＨＤＬ、ＶＨＤＬ、ＡｌｔｅｒａＨＤＬ（ＡＨＤＬ）等を含むハードウエア記述言語（ＨＤＬ）、あるいは他の利用可能なプログラミング及び／又は回路等キャプチュアツール（例えば回路キャプチュアツール）の使用を通して達成され得る。これらのプログラミングツールは電子システムの挙動をモデル化することができ、この場合システムはゲートネットリスト(gate netlist)に合成され次いで最終的にはハードウエアデバイスへと製造されてよい。プログラムコードは、半導体、磁気ディスク、光学ディスク（例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ）を含むあらゆる既知のコンピュータ使用可能媒体内に配置されてよく、またコンピュータが使用可能な（例えば可読な）伝送媒体（例えばデジタル、光学的、又はアナログ系の媒体を含む搬送波又は他のあらゆる媒体）において具現化されるコンピュータデータ信号として処置されてよい。従って、コードは、インターネット及びそれと同等のもの(the Internet and internets)を含む通信網を介して伝送されてよい。上述したシステム及び技術により達成される機能及び／又は提供される構造は、プログラムコードにおいて具現化されるコア（例えばメディア処理コア）内に表現することができ、また集積回路の生産の一部としてハードウエアに変換されてよいことが理解される。
【００６１】
本発明の種々の実施形態が上に説明されてきたが、それらは例示のみを目的として提示されたものであり、限定を目的とはしていない。添付の特許請求の範囲で画定されるような本発明の精神及び範囲から逸脱することなしに、形態及び詳細における種々の変更がここになされ得ることが関連分野をも含めた当業者によって理解されるであろう。本発明はこれらの例示に限定されないことが理解されるべきである。本発明はここに説明されるように動作する任意の要素に適用可能である。従って、本発明の広さ及び範囲は上述のいかなる例示的実施形態によっても限定されるべきではなく、後述の特許請求の範囲及びそれらの均等なものに従ってのみ画定されるべきである。
【図１】
0005707321.tif 000002
【図２】
0005707321.tif 000003
【図３】
0005707321.tif 000004
【図４】
0005707321.tif 000005
【図５】
0005707321.tif 000006
【図６】
0005707321.tif 000007
【図７】
0005707321.tif 000008
【図８】
0005707321.tif 000009