現在実行中のCコードのサイクル数を測定中です。このコードは、Windows APIから_beginthreadex()で10msごとに生成された余分なスレッドで実行されます。サイクル測定は、QueryThreadCycleTimes()を使用して行われ、割り込みの目盛りなどを数えないようにします。Intel SpeedStepが実行サイクル数に影響するのはなぜですか?
マシン上でこのコードだけを実行すると、サイクル数は550〜1,800,000の間で、それぞれ数回(5〜10回)コールされます。
Intel SpeedStepをオフにして調査したところ、サイクル数は中央値580 000で、約10 000ティックの偏差があります。容認できる! 私の質問は、SpeedStepが実行に必要なサイクル数にどのように影響するかということです。私が思ったように、サイクルカウントには影響しないはずの電力消費量を減らすことによってプロセッサの周波数を下げるだけですが、このサイクルカウントに達するのに必要な時間はかかりますか?他の重要なハードウェア部品やCPUキャッシュに影響があるかどうかは誰かが知っているかもしれませんか?
ありがとうございます。挨拶 サシャ
システムプロパティ:
のIntel Xeon E5 - 1620プロセッサ
のVisual Studio 2013
QueryThreadCycleTimesはサイクルを測定しません。時間を測定します。速度、消費電力、ファンノイズはトレードオフです。たぶんあなたは掃除機を取り出して、コンピュータのケースを開き、ダストバニーを吸い取る必要があります。プログラマーは、これを十分に頻繁にはしません。 –
@ハンスそれでは、MSDNページのスレッドカーネルとユーザーサイクルで間違っています。今度は、低い周波数から高い時間までの関係が明確です。ここで[リンク](https://blogs.msdn.microsoft.com/oldnewthing/20160429-00/?p=93385)には、通常は測定されたサイクルがありますが、公称CPUレートが記載されています。したがって、サイクルカウンタが低すぎると、「あまりにも速く」なります。質問は解決されました、ありがとうございました。 – Sascha