Ryzenでアイドル状態や低負荷の時にBSOD(いわゆるKP41病)になってしまう人へ
Ryzenは多いようです。
チェック.1 代表的な症状
- アイドル状態でBSOD
- ネットを見る等の低負荷でBSOD
- windowsのインストール中にBSOD
- ゲームなど高負荷ではBSODにならない
- Memtestではエラーは出ない
最後の2つは特に重要です。
高負荷でBSODになるなら、電源・マザーが怪しいです。
Memtestでエラーが出るなら、メモリが原因です。
Ryzenの初期不良は、高負荷ではBSODにならないが、低負荷でBSODになるのが特徴です。
チェック.2 BSODのエラーコードは下記のどれかである。
- IRQL_NOT_LESS_OR_EQUAL
- DRIVER_IRQL_NOT_LESS_OR_EQUAL
- KERNEL_SECURITY_CHECK_FAILURE
- KMODE_EXCEPTION_NOT_HANDLED
- MEMORY_MANAGEMENT
- SYSTEM_SERVICE_EXCEPTION
- APC_INDEX_MISMATCH
- DPC_WATCHDOG_VIOLATION
- PAGE_FAULT_IN_NONPAGED_AREA
- KERNAL_AUTO_BOOST_LOCK_ACQUISITION_WITH_RAISED_IRQL
他にもエラーコードは出ますが代表的なものだけ。
ドライバもしくはメモリ・マザー・電源が故障していると起きがちなエラーコードです。
このせいでCPUを疑う人は少ないのではないでしょうか?
チェック.3 BSODを引き起こすのは下記のどれかである。
- ntoskrnl.exe
- ntkrnlmp.exe
- amdppm.sys
上2つはwindowsのカーネルです。壊れることはほぼありません。
amdppm.sys はReddit読む限りCPUの電力管理に関係してるらしいです。(AMD Proccecor Power Module?)
上記に当てはまる場合、CPUの初期不良である可能性が高いです。
Ryzenは特にこのような症状が多いらしく、Reddit等にも似たような報告は数多くあります。
https://www.reddit.com/r/Amd/comments/id577u/update_on_random_bsod_issue_3700x/
https://www.reddit.com/r/Amd/comments/dz2s74/too_low_stock_voltage_on_tomahawk_max_and_ryzen/
https://www.reddit.com/r/AMDHelp/comments/m9c3nx/bsod_when_idle_never_while_gaming/
https://www.reddit.com/r/ryzen/comments/jhmwoz/ryzen_3700x_random_freezes_bsods_at_idle/
根本的な解決策は、新品へ交換しかない模様。
交換(RMA)してもらったら治ったとの報告が多いです。
保証が効いてるうちに対応してもらえたらいいのですが、CPUはなかなか壊れない部品なので、まさかCPUが原因だと思う人はそういないでしょう。
「調べてるうちに初期不良保証の期日が過ぎてしまった!」なんて人もいるのでは?
CPUクロックの低下、電圧の低下がBSODを引き起こすらしく、私の経験およびRedditからのBSOD対策をまとめておきました。
低負荷によるKP41対策
- 電源プランを高パフォーマンスにする
- 省電力機能を無効にする
- CPU Voltage(vcore)を盛る
- 古いBIOSに更新する
電源プランを高パフォーマンスにする
コントロールパネルから電源オプションを開き
「高パフォーマンス」「AMD Ryzen High Performance」
のどちらかに設定する。
シンプルですが効果は抜群です。UEFIいじらないで済むから安心。
要は「最小のプロセッサの状態」が100%だったら良いです。
しかし電源プラン設定が必要なため、windowsインストール中に起きるBSODには全く効果ありません。
BIOSから省電力機能を無効にする
P-STATE, C-STATE, Power Supply Idle Control すべて無効にしましょう
P-STATE
- Cool'N'Quiet を無効
- PPC Adjustment を PState 0 に設定
- PSS Support を無効
マザーボードによっては名前が違っていたり、項目が一部存在しないかもしれません。
C-STATE
- Global C-State Control を無効
Power Supply Idle Control
- Power Supply Idle Control を Typical Current Idle に設定
Typical Current Idle に設定すると Package C6 STATE が無効になるらしいです。
Core Voltage(vcore)を盛る
それでも直らないならCPUの電圧を盛ってみましょう。
CPU Core Voltage を Offset +50mV 又は +100mV に設定
かなり効果があるようで、電圧を盛るとP-STATE, C-STATE有効でもKP41が収まる場合もあるようです。
私の場合はこれで完璧にKP41病は完治しました。
必ず電圧を盛る前にあらかじめCore Performance Boost (CPB)を無効にしてください。
CPB有効だと電圧が盛られて1.45Vくらいになっているはずです。
1.45Vからさらに電圧を盛るのは危険です。
古いBIOSに更新する
RyzenはAGESAファームウェアのバージョンによって、大きく不安定になったりします。
新バージョン出すたびに不具合報告があるので、常に最新がいいわけではないようです。
私の環境 (B450 GAMING PLUS MAX)ではこれも効果ありました。
AGESA ComboPI 1.0.0.3abba 以前のBIOSでは、BSODはほとんど起きません。一方、AGESA ComboPI 1.0.0.4 以降のBIOSでは、BSODは頻繁に起きます。
(おまけ)CPPCを無効にする
あまり効果はありませんが、参考として一応書いておきます。
- CPPC (Collaborative Processor Performance Control) を無効
パフォーマンス改善でよく話題にされる 「CPPC Preferred Cores」ではありません。CPPC です。
私自身これがBSODに影響があるとは驚きでした。
一部のコアが低いクロックや低い電圧に耐えられずBSODになっているらしいので、CPPCをオフにするとBSOD発生がいくらか減少に繋がるようです。
省電力の無効化、電圧を盛る対策と比べると、根本的な解決には繋がりません。
まとめると、
無難な対策は、電源プラン高パフォーマンス。
Windowsインストール中BSODになるならば、省電力機能を切る 又は CPU電圧を盛る。
古いBIOSも試してみる。
省電力系の機能はゲームでカクつく原因にもなるし、この際一切無効でもいいと思う。
Reddit, Tom's Hardware等の記事を読む限りでは、BSODの原因は、
- AGESAかBIOSに何かバグがある?
- AGESAとBIOSが新しくなるにつれ、低電圧耐性の弱い個体をカバーしてきた猶予・遊びが厳しくなってる?(AMDはこれをCPUの不良として認識している)
のどちらかが原因ではないかなと思います。