2012-03-30 9 views
0

現在、私はプロセッサには2つの状態しかないと思います。実行中の場合、タスクを処理するために最大限の力を発揮します。複数のプロセスがある場合、プロセスはCPUの一部によって共有されます。OSはどのようにして実際にCPUの消費電力を測定できますか?

どのようにコンピューティングパワーを「部分」に分けることができますか?だから、CPUが100万個のトランジスタを持っていて、CPUが50%だけであれば半分のトランジスタしか使われないとしますか?

これは、各プロセスの割り当てられた処理時間に関連していますか?すなわち、プロセスが50%の計算能力、すなわち100ミリ秒を受け取ることを意味するデフォルトnice値(優先度値)0を有するプロセスであれば、「100%」と仮定すると、プロセスは200ミリ秒間CPUを占有する。正しいアイデアは何ですか?

+3

最近のプロセッサでは、クロック周波数を変更することも、個々のコアをオフまたはスローダウンすることもできます。最近のチップの中には、電流を測定する回路さえあるものもあると聞いています。そして彼らの多くは温度を測定することができます。 –

+0

あなたの質問に「力」という言葉を明確にし、*エネルギー*(ジュール/秒)または*リソース*(指示/秒)を示すことを意味する場所を示すことができます。 –

答えて

3

Intel x86 CPUとWindows NT(およびその派生物)の例で説明します。これらのOSのビルトインシステムプロセスの1つは、システムアイドルプロセスです。このプロセスは、オペレーティングシステムの「アイドルループ」によってどのくらいのCP​​U時間が使用されているかを表します。そのアイドルループは何もしませんが、CPUのHLT命令を実行します。その命令は、次の割り込みが到着するまで何もしないようにCPUに命令します。

したがって、与えられた瞬間にCPU時間を必要とするプロセスがないとスケジューラが判断した場合、システムアイドルプロセスに与えられます。たとえば、最後のn秒の時間の99%がそのプロセスを実行することによって費やされた場合、CPUは実際にはn秒の1%でのみ使用されたことを意味します。

私はそれがLinuxと完全に類似していると信じていますが、CPUの「怠惰」をモデル化するための別個のプロセスはありません。

注意:もちろん、HLT命令を実行しないOSを使用することも可能です。これはWindows 98以前(明らかにMS-DOSを含む)の場合で、そのアイドルループは単純にjmp $で構成されていました。その結果、CPUの消費電力が大幅に増加しました。

+2

Windowsのアイドル状態のスレッドは、保留中のDPCがあるかどうかを確認して配信します。 DOSの場合、単にマルチタスクOSではなく、実際にプログラムの実行を制御していなかったため、CPUを他のプログラムに変換することは定義上存在しませんでした。同時に、プログラムに欠けている機能(スケジューラとスレッド)を実装したり、ここにhltを振りかざして何も壊れないことを望むことはあまり実用的ではなかったので、プログラムは複雑です。だから、ほとんどのプログラマは、自分のプログラムが何もしていない間でも、必然的にすべてのCPUサイクルを消費することを選択しました。そしてそれはOKだった。 –

+0

したがって、CPUは実際にフルパワーで動作するか、または停止(アイドル)します。電力は、一定期間のCPU使用率によって測定されます。これはすべてのプロセスの限界について話している秒ですか?たとえば、OSはCPUを200ミリ秒ごとに測定するため、CPUを共有できるプロセスの最大数は200で、それぞれ1ミリ秒です。一方、この期間中は、すべてのプロセスがプロセス優先度のために単に200ミリ秒を消費するとは限りません。 – Amumu

関連する問題