BIOS設定で、ゲーム中のプチフリ防止
デフォルト設定のままでは、CPUスピードが頻繁に変わる。
(Intel社製CPUとそれに対応したマザーボードでの話です)
省電力機能とターボブースト(Core i7とi5シリーズのみ)がデフォルトで有効になっており、操作中にクロック周波数が上がったり下がったりします。
CPU-ZやHWiNFO等のソフトで見ると、クロック周波数が激しく上下しています。
電力の節約になるのは有難いのですが、ゲームや負荷の高い作業中にパフォーマンスの低下を招くことがあります。
FEZの場合では、たまに1秒前後キャラクターが止まってしまい、その間操作を受け付けなくなります。(回線・PC性能・他のプロセス等の問題なしで)
CPUクロック周波数の変動に関係する項目…
Intel SpeedStep、Turbo Mode、CPU 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を無効にする。
- Windowsの電源オプション→使用中のプラン選択→詳細設定→プロセッサの電源管理→最小のプロセッサの状態: 100%にする。
-
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倍で変動するようになりました。