web-dev-qa-db-ja.com

CPUはスリープモードでアクティブですか?

Windows OSで、コンピュータを切り替えてスリープモードにして、それを片付けたとします。私の知る限り、プログラムやプロセスは実行されません。

しかし、プロセッサはまだ running であるか、または何らかの方法でバックグラウンドでアクティブであり、電力を利用していますか?

というのも、Windows 7/8.1/10を実行している最新のコンピューターで何らかのアクションを実行すると、ふたを開け、ボタンを押し、マウスに触れると、電源ボタンを押さなくてもすぐに電源が入ります。それは、CPUが低電力状態のときにこれらのイベントをアクティブに待機していたためでしょうか。

40
cpx

CPUはスリープモードでアクティブですか?

場合によります。スリープ状態は異なり(S1からS4)、CPU状態はすべて同じではありません。

  • CPUはスリープ状態S1で停止します
  • スリープ状態S2以上では、CPUの電源がオフになります。

スリープは通常はスリープ状態S3ですが、BIOSは代わりにスリープ状態S1を使用するように構成できます(S3からのレジュームが適切に機能しない場合に使用されます)。

powercfg -aを使用して、PCがサポートするスリープ状態を確認できます。

出力例:

F:\test>powercfg -a
The following sleep states are available on this system: 
Standby (S3) Hibernate Hybrid Sleep
The following sleep states are not available on this system: 
Standby (S1)
    The system firmware does not support this standby state.
Standby (S2)
    The system firmware does not support this standby state.

システムのスリープ状態

状態S1、S2、S3、およびS4はスリープ状態です。これらのいずれかの状態のシステムは、計算タスクを実行しておらず、オフになっているようです。ただし、シャットダウン状態(S5)のシステムとは異なり、スリープ状態のシステムは、ハードウェアまたはディスクのいずれかでメモリ状態を保持します。コンピュータを動作状態に戻すためにオペレーティングシステムを再起動する必要はありません。

一部のデバイスは、モデムへの着信コールなどの特定のイベントが発生したときに、システムをスリープ状態から復帰させることができます。さらに、一部のコンピューターでは、外部インジケーターがシステムにスリープ状態にあることをユーザーに通知します。

S1からS4までのスリープ状態が続くたびに、より多くのコンピューターがシャットダウンされます。以下のセクションに示すように、ACPI準拠のすべてのコンピューターは、S1でプロセッサクロックを停止し、S4でシステムハードウェアコンテキストを失います(シャットダウン前に休止状態ファイルが書き込まれない限り)。中間のスリープ状態の詳細は、製造元がマシンをどのように設計したかによって異なります。たとえば、一部のマシンではマザーボード上の特定のチップがS3で電力を失う可能性がありますが、他のマシンではS4まで電力を保持します。さらに、一部のデバイスは、システムをS1からのみ起動でき、より深いスリープ状態からは起動できない場合があります。

システム電源状態S1

システム電源状態S1は、次の特性を持つスリープ状態です。

消費電力

  • S0よりも消費が少なく、他のスリープ状態よりも消費が多い。プロセッサクロックはオフで、バスクロックは停止しています。ソフトウェアの再開

  • 制御は中断したところから再開します。

ハードウェアの待ち時間

  • 通常は2秒以内です。

システムハードウェアコンテキスト

  • ハードウェアによって保持および維持されるすべてのコンテキスト。

システム電源状態S2

システムの電源状態S2は、プロセッサの電源が切れたためにCPUコンテキストとシステムキャッシュの内容が失われることを除いて、S1と同様です。状態S2には次の特性があります。

消費電力

  • 状態S1よりも消費が少なく、S3よりも消費が多い。プロセッサーはオフです。バスクロックは停止しています。一部のバスは停電する可能性があります。ソフトウェアの再開

  • ウェイクアップ後、制御はプロセッサのリセットベクタから始まります。

ハードウェアの待ち時間

  • 2秒以上。 S1のレイテンシ以上。

システムハードウェアコンテキスト

  • CPUコンテキストとシステムキャッシュの内容は失われます。

システム電源状態S3

システム電源状態S3は、次の特性を持つスリープ状態です。

消費電力

  • 状態S2よりも消費が少ない。プロセッサがオフになっていて、マザーボード上の一部のチップもオフになっている可能性があります。

ソフトウェアの再開

  • ウェイクアップイベントの後、プロセッサのリセットベクタから制御が開始されます。

ハードウェアの待ち時間

  • S2とほとんど区別できません。

システムハードウェアコンテキスト

  • システムメモリのみが保持されます。 CPUコンテキスト、キャッシュの内容、チップセットコンテキストは失われます。

システム電源状態S4

システム電源状態S4(休止状態)は、電力消費が最も少ないスリープ状態であり、ウェイクアップレイテンシが最も長くなります。消費電力を最小限に抑えるために、ハードウェアはすべてのデバイスの電源をオフにします。ただし、オペレーティングシステムコンテキストは、システムがS4状態に入る前にディスクに書き込む休止状態ファイル(メモリのイメージ)で維持されます。再起動時に、ローダーはこのファイルを読み取り、システムの以前の休止状態の場所にジャンプします。

状態S1、S2、またはS3のコンピューターがすべてのACまたはバッテリー電源を失うと、システムハードウェアコンテキストが失われるため、再起動してS0に戻す必要があります。ただし、状態S4のコンピューターは、オペレーティングシステムのコンテキストが休止状態のファイルに保持されているため、バッテリーまたはAC電源がなくなった後でも、以前の場所から再起動できます。休止状態のコンピューターは電力を使用しません(トリクル電流を除く)。

状態S4には次の特性があります。

消費電力

  • 電源ボタンおよび同様のデバイスへのトリクル電流を除き、オフ。ソフトウェアの再開

  • 保存された休止状態ファイルからシステムが再起動します。 hibernateファイルをロードできない場合は、再起動が必要です。システムがS4状態のときにハードウェアを再構成すると、変更が発生し、休止状態ファイルが正しく読み込まれなくなる可能性があります。

ハードウェアの待ち時間

  • 長くて未定義。物理的な相互作用のみがシステムを動作状態に戻します。このような相互作用には、ユーザーがONスイッチを押すことや、適切なハードウェアが存在し、ウェイクアップが有効になっている場合、モデムの着信リングまたはLAN上のアクティビティが含まれることがあります。ハードウェアがサポートしている場合、マシンは再開タイマーから復帰することもできます。システムハードウェアコンテキスト

  • ハードウェアに保持されるものはありません。システムは、電源を切る前にhibernateファイルにメモリのイメージを書き込みます。オペレーティングシステムが読み込まれると、このファイルが読み取られ、以前の場所にジャンプします。

ソース システムのスリープ状態


参考文献

58
DavidPostill

Davidの優れた答えは、従来のマシンと8より前のWindowsバージョンに当てはまります。ただし、Windows 8では、低電力デバイス(Atomベースのタブレットなど)に新しいスリープモードが導入されました。これは InstantGo/Connected Standby 。これは、サポートされているハードウェアを搭載したWindowsタブレットで画面をオフにするときのデフォルトの「スリープ」モードです。

コネクトスタンバイ は、従来のACPIスリープ状態を使用しません。その目的は 接続周辺機器をアクティブに保つ であり、OSが通知に応答できるようにします。着信メール、インスタントメッセージなど。さらに、マシンは30秒ごとに数百ミリ秒間「起動」します。 CPUは、従来のS3スリープよりも速く応答(ウェイクアップ)する必要があります。

[コネクトスタンバイが必要]アイドルモードとアクティブモードを100ミリ秒未満で切り替える機能。アクティブモードでは、CPUでコードを実行できますが、必ずしもストレージデバイスや他のホストコントローラーや周辺機器へのアクセスは許可されません。アイドルモードは、クロックゲーティングまたはパワーゲーティングの状態にすることができますが、SoCとDRAMの消費電力が最も少ない状態にする必要があります。

ソース

これは、Davidの回答のように、S1に指定された最大2秒、またはS2/S3に指定された2秒以上よりもはるかに速いことに注意してください。

このため、 CPUはMicrosoftが呼び出す特別な状態に保たれます[〜#〜] drips [〜#〜] (最も深いランタイムアイドルプラットフォーム状態)。

Intel(x86)SoCでは、これは 新しい(非標準)S0ix状態 、特にS0i3のいずれかに該当します。この状態では、CPUはコードを実行しませんが、SoCは全体としてアクティブであり、ネットワークに接続されたままになり、イベントに応答します。


ACPIに関する限り、これは引き続きS0(アクティブ)状態と見なされます。 WindowsはACPI_S0_LOW_POWER_IDLEフラグは、DRIPSがサポートされているかどうかを判別します。 ACPI仕様6. 、2015年4月、§5.2.9、表5-35、ページ127)は、このフラグを次のように定義しています。

1つはOSPMに、プラットフォームがS3で通常達成されるものと同等かそれ以上のS0での電力節約を達成できることを通知します。実際には、このビットが設定されている場合、S3へのスリープ遷移を行うことによってシステムが電力の利点を達成しないことを示します。

Microsoftによる

Modern StandbyをサポートするシステムはS1-S3を使用しません。

26
Bob

ACPIによって管理されるスタンバイモードには多くの種類があります https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface

CPUは通常、スタンバイモードのときに実行されますが、クロックレートは低くなります。CPUは特定の入力のみをリッスンし、他のプロセスをアクティブに実行しません。最初にprocmonを実行してラップトップをスリープ状態に設定して測定を試みましたが、この期間はまったく実行されませんでした。

4つのグローバル状態、G0-G3があり、G0はRunningであり、G3はMechanical offリンクされた記事によると、G1サブステートS2はCPUをオフにし、そのキャッシュをRAMに移動します。 RAMは、すべてのタイプのスリープで電源がオンになるものです。休止状態および標準シャットダウンでは電源がオフになります。ほとんどのスリープ状態では、すべての外部入力デバイスが電源オンであり、ウェイクアップを送信しますコンピュータへのイベント。コンピュータは、それ自体を起動して、ウェイクアップコールを必要とするルーチンを処理することもできます。

6
Koliat

私はこれらのすでに優れた答えに追加する技術はありません。しかし、自分のコンピューターでスリープモードの効果をテストする最も簡単な方法(ラップトップのことを言っているのは、「離れる」と言っているからです)は、ラップトップをスリープモードにして、プラグを抜くことです(バッテリーに注意してください)。レベルが最初)。数時間後にマシンを再開し、その間にバッテリーレベルがなくなったかどうかを確認します。

スリープモードがかなりのペースでバッテリーを消耗するという難しい方法を見つけました。旅行の前にラップトップのふたを閉じました-事前の電源設定で休止状態をトリガーするように「ふたを閉じる」ように構成したと思いましたが、代わりにスリープモードになりました。数時間後、バッテリーが完全に消耗したため、マシンは再開しませんでした(古くて弱いバッテリーでした)。

対照的に、私は自分のラップトップを休止状態にし、いつまでもプラグを抜くことができ、何日にもわたって発生する自然なトリクル放電よりも速くバッテリーを使い切ることはありません。

しかし、他の投稿が言ったように:YMMV。

1
user275514

CPUがアクティブに待機していたためかの質問に答えて、CPUが待機する必要はありません。ハードウェアは待機を行い、CPUにウェイクアップさせる割り込みをCPUに送信します。

0
user34660