BIOS設定で、ゲーム中のプチフリ防止

デフォルト設定のままでは、CPUスピードが頻繁に変わる。

(Intel社製CPUとそれに対応したマザーボードでの話です)

省電力機能とターボブースト(Core i7とi5シリーズのみ)がデフォルトで有効になっており、操作中にクロック周波数が上がったり下がったりします。

CPU-ZやHWiNFO等のソフトで見ると、クロック周波数が激しく上下しています。
電力の節約になるのは有難いのですが、ゲームや負荷の高い作業中にパフォーマンスの低下を招くことがあります。

FEZの場合では、たまに1秒前後キャラクターが止まってしまい、その間操作を受け付けなくなります。(回線・PC性能・他のプロセス等の問題なしで)

CPUクロック周波数の変動に関係する項目…
Intel SpeedStepTurbo ModeCPU C statesの3つ。(ターボブースト機能がないCPUの場合は、Intel SpeedStepとCPU C statesの2つ)

XP時代から、ゲームのためにはSpeedStepとCステートは切るべしと言われてそうしてきましたが、今回改めて調べてみました。

実験 ― 省電力・ターボブースト設定の違いによる動作倍率の変化

[PC環境]

  • CPU: Intel Core i5-6500 (3.2GHz)
  • マザーボード: ASUS Z170 PRO GAMING
  • OS: Windows 10 Home 64bit Build 10586

Core i5-6500の定格は、100MHz×32 = 3200MHz。定格の動作倍率は32倍、ターボブースト時は33~36倍。

上記マザーボードのBIOS(v1206)において、C statesはAuto・Disabled(無効)・Enabled(有効)の3つから選択可能。Enabledの時だけ詳細設定(C1E・C3・C6・C7/C7s・C8レポートの有効/無効)が可能になります。

(Package C State limitはAutoのままでテストしました)

以下、動作倍率とそうなる時の設定です。

動作倍率 8~36倍 (多段階)

  • SpeedStep: 有効(Auto)
  • Turbo Mode: 有効
  • CPU C states: Auto or 全て有効
  • Win電源OP: バランス

デフォルト設定がこれ。

動作倍率 33~36倍 (4段階)

  • SpeedStep: 有効
  • Turbo Mode: 有効
  • CPU C states: Auto or 全て有効
  • Win電源OP: 高パフォーマンス
  • SpeedStep: 有効
  • Turbo Mode: 有効
  • CPU C states: Auto or 全て有効
  • Win電源OP: 高パフォーマンス
  • SpeedStep: 無効
  • Turbo Mode: 有効
  • CPU C states

    • C1E: 有効
    • C3以上のどれか: 有効
  • Win電源OP: バランス or 高パフォーマンス
  • SpeedStep: 無効
  • Turbo Mode: 有効
  • CPU C states

    • C1E: 無効
    • C3以上のどれか: 有効
  • Win電源OP: バランス or 高パフォーマンス

動作倍率 8~33倍 (多段階)

  • SpeedStep: 有効
  • Turbo Mode: 有効
  • CPU C states: 無効
  • Win電源OP: バランス

動作倍率 8~32倍 (多段階)

  • SpeedStep: 有効
  • Turbo Mode: 無効
  • CPU C states: Auto or 全て有効 or 無効
  • Win電源OP: バランス

動作倍率 33倍 (固定)

  • SpeedStep: 有効
  • Turbo Mode: 有効
  • CPU C states: 無効
  • Win電源OP: 高パフォーマンス
  • SpeedStep: 無効
  • Turbo Mode: 有効
  • CPU C states: 無効
  • Win電源OP: バランス or 高パフォーマンス
  • SpeedStep: 無効
  • Turbo Mode: 有効
  • CPU C states

    • C1E: 有効
    • C3以上: 無効
  • Win電源OP: 高パフォーマンス

動作倍率 32倍 (固定)

  • SpeedStep: 有効
  • Turbo Mode: 無効
  • CPU C states: Auto or 全て有効 or 無効
  • Win電源OP: 高パフォーマンス
  • SpeedStep: 無効
  • Turbo Mode: 無効
  • CPU C states

    • C1E: 有効
    • C3以上のどれか: 有効
  • Win電源OP: バランス or 高パフォーマンス
  • SpeedStep: 無効
  • Turbo Mode: 無効
  • CPU C states: 無効
  • Win電源OP: バランス or 高パフォーマンス

動作倍率 8 or 33倍 (2段階)

  • SpeedStep: 無効
  • Turbo Mode: 有効
  • CPU C states

    • C1E: 有効
    • C3以上: 無効
  • Win電源OP: バランス

動作倍率 8 or 32倍 (2段階)

  • SpeedStep: 無効
  • Turbo Mode: 無効
  • CPU C states

    • C1E: 有効
    • C3以上: 無効
  • Win電源OP: バランス

クロック周波数変動時の下限の設定

Windows上で、SpeedStepやC1Eステート有効時の最小動作倍率を変更する方法。

簡単に、定格より下がらないようにしたい場合

Windowsのコントロールパネル→電源オプション
電源プラン: 省電力・バランス → 高パフォーマンスに変更

カスタマイズしたい場合

Windowsのコントロールパネル→電源オプション→設定変更したいプランを選択→詳細設定→プロセッサの電源管理→最小のプロセッサの状態 を変更

ここの数値に合わせて最小動作倍率が変わります。
デフォルト値は、省電力・バランスプランで5%、高パフォーマンスプランで100%。

i5-6500の例 (ターボブースト無効時/有効時)

  • 最小のプロセッサの状態 5% → 最小倍率 8/8
  • 最小のプロセッサの状態 50% → 最小倍率 16/17
  • 最小のプロセッサの状態 100% → 最小倍率 32/33

実験でわかったこと

  • 動作倍率が上下動する設定では、ゲームプレイ中にプチフリが発生。
  • ターボブーストによる動作倍率の上昇だけが起きる設定では、プチフリとは少し違ったかもしれないが、動作がおかしかったことが1回だけあった。(要再検証)
  • 動作倍率を固定する設定ではプチフリ未発生。
  • SpeedStepが有効の場合、頻繁にクロック周波数が定格より低下する。防止する方法は、次のいずれか。

    • Windowsの電源オプション→使用中のプラン選択→詳細設定→プロセッサの電源管理→最小のプロセッサの状態: 100%にする。
      単に高パフォーマンスプランに変更するだけでも良い。
    • BIOSでIntel SpeedStepを無効にする。
  • CPU C statesのうち、C1E(Enhanced C-states)ステートのみが有効の場合、時折動作倍率が最小になる。(Intel SpeedStepが無効でも)

    これも高パフォーマンスプランに変更するか、現在の電源プランの「最小のプロセッサの状態」を100%にすることで回避できる。

  • ターボブースト無効の場合の最大動作倍率は、CPUの動作100%の状態では定格通り。(Core i5-6500の場合で32倍)
  • ターボブースト有効の場合の最大動作倍率は、スペック表のターボブースト時の最大と同じ。(Core i5-6500の場合で36倍)
    ただし、ターボブースト機能の特性上、全てのコアが同時に最高倍率まで上がることはない。
  • ターボブースト有効でも、Cステート全てが無効かC1Eステートのみ有効の場合は、最大動作倍率はターボブースト時の最低に留まる。(Core i5-6500の場合で33倍。34倍~36倍にはならない)

ゲーム向けのおすすめ設定

プチフリ防止のため、クロック周波数を固定します。念のため、ターボブーストによる変動も止めておきます。

ターボブースト機能付きのCPUの場合

  • Intel SpeedStep: 有効
  • Turbo Mode: 有効
  • CPU C states: 無効 or C3ステート以上は無効
  • Win電源OP: 高パフォーマンス (ゲーム以外の時は他の電源プランでもOK)

あるいは、

  • Intel SpeedStep: 無効
  • Turbo Mode: 有効
  • CPU C states: 無効

ターボブースト機能がないCPUの場合

  • Intel SpeedStep: 有効
  • Turbo Mode: 無効
  • CPU C states: (何でも良い)
  • Win電源OP: 高パフォーマンス (ゲーム以外の時は他の電源プランでもOK)

あるいは、

  • Intel SpeedStep: 無効
  • Turbo Mode: 無効
  • CPU C states: (基本的に何でも良いが、「C1Eのみ有効」だけはダメ)

C statesを一部または全部有効にしていることで不安定になるなら、C statesを無効にしてみてください。

(おまけ)ターボブーストは有効なのに、クロック周波数が上がらない。

BIOSで次のように設定すればターボブーストが働くようになります。

  • Turbo Mode: 有効
  • Cステート: 全部Auto or 有効、あるいは、C1E~C3ステート以上を有効

ある日、ターボブースト時の最大倍率まで上がることがないのに気づきました。

i5-6500は定格動作倍率が32倍、ターボブースト時は33~36倍。それなのに33倍までしか上がらず、34~36倍にはなりません。

BIOS設定で、CPU C states 無効 → これが原因でした。

Turbo Modeが有効であっても、CステートのうちC3以上のうちいずれかが有効になっていないと、最高倍率までは変動しません。C1Eだけ有効ではだめで、C3またはそれ以上を有効にしてみたら、動作倍率が33~36倍で変動するようになりました。

関連記事