web-dev-qa-db-ja.com

Prime95で、すべてのオプションのCPUが100%であるにもかかわらず、小さなFFTが最も多くの熱を生成するのはなぜですか?

新しいSkylake PC をビルドしたところです。ストレステスターとしてPrime95を使用して、オーバークロックについて少し考えます。

通常の使用では正常に動作しますが、Prime95を使用すると、特定の負荷の下でCPUが少しスロットルされることに気付きます。

4つのコア(8スレッド)すべてが100%で詰まっている場合でも、Prime95のSmall FFT設定が「Blend」オプションよりも高温になるのはなぜですか?

9
ChrisA

ベクトル化されたコード、特にAVXは、プロセッサがこれらの命令を実行するためにより高い電圧で動作する必要があるため、CPUの熱出力を自然に増加させます。小さなFFTは、ブレンドモードよりも少ないメモリを必要とするため、プロセッサはデータの処理により多くの時間を費やし、データの待機時間を短縮します。

  • X86-64アーキテクチャは、特に最新のプロセッサで、広範なベクトル処理機能を提供します。ベクトル処理により、アプリケーションは一度に複数のデータ項目に対して数学演算を実行でき、多くの新しい計算集約型アプリケーションで使用されて、処理スループットが向上します。

  • Prime95が使用するベクトル化されたコード、特に[〜#〜] avx [〜#〜]命令は、プロセッサに通常よりも高い電圧で動作します。これにより、通常のワークロードで発生するよりも高い電力消費と熱出力が得られます。このため、 Intelは、AVXの負荷が大きいと、プロセッサがスロットルするか、完全なターボブーストクロックレートを維持できない可能性があることを警告しています (脚注1):

    インテル®AdvancedVectorExtensions(インテル®AVX)は、特定の整数および浮動小数点演算でより高いスループットを実現するように設計されています。プロセッサの電力特性が異なるため、AVX命令を使用すると、a)一部の部品が定格周波数未満で動作し、b)一部の部品がIntel®TurboBoostTechnology 2.0を使用して、ターボ周波数をまったくまたは最大にしない場合があります。

    Intelは、これについて このホワイトペーパー でさらに詳しく説明しています。特に、それは注意します:

    Intel AVXは、特定の整数および浮動小数点演算でより高いスループットを実現するように設計されています。これらの命令を使用すると、プロセッサがマークされたTDP周波数よりも低い周波数で動作する可能性があります。これらの周波数の低下は、高出力のIntelAVX命令が追加の電圧と電流を必要とするために発生します。

    • なぜVをブーストするのかについての私の推測 AVX命令に必要なのは、AVX実行ユニットがプロセッサの他の部分よりも複雑であるため、対応するパイプラインステージの完了に時間がかかることです(パイプラインの技術情報については、 この回答 を参照してください。プロセッサ設計の他の側面)。特定のパイプラインステージが遅い場合、パイプラインのすべてのステージが各クロックサイクル内で終了する必要があるため、プロセッサ全体の最大クロックレートが制限されます。

    • 同じ理由で、電圧が高くなるとオーバークロック時に達成可能な最大周波数が増加します(トランジスタは電圧が高いほど速くスイッチングできます)。電圧を高くすると、長いパイプラインステージを時間どおりに完了することができます。

  • スモールFFTモードは、両方で動作するブレンドモードとは異なり、CPUキャッシュに収まる小さなデータアイテムのみを使用します。キャッシュに収まらない可能性のある小さい値と大きい値。単にデータを処理する場合に比べてメモリへのアクセスが遅いため、プロセッサは実際にブレンドモードでデータを処理するために費やす時間が少なくなり、熱出力が減少します。小さなFFTは、メモリアクセスの数に近い場所を必要としないため、CPUが実行する実際の作業が多くなり、消費電力と熱出力が増加します。

13
bwDraco