3年ぶりの駄文 悪あがきその5

GPUのOCネタ試行錯誤が長文脱線になってしまい少々読みづらくなったので切り出し。
メインのCPUネタはその3を参照。
マザボの電圧設定が概ね安定動作ラインに到達し、とりあえず24hはnvlddmkm出なかったのでグラボもOC BIOSに焼き直し。
今回はASUSファクトリーOCよりもコアクロックのブーストテーブルを+2段->ブーストテーブルオフセットはせずに電圧テーブルをいじってブースト段数を上げる方法に変更->ブーストテーブルオフセット+1段と電圧テーブル変更を併用する方法に変更->ブーストテーブルオフセット無しで電圧テーブルのみ変更に落ち着きました->結局ブーストテーブルオフセット+1段と電圧テーブル変更を併用する方法に変更(Afterburner読みで高負荷時1137MHz@1187.5mV -> 1176MHz@1212.5mV、VRAM 3004MHz -> 3197MHz)仕様。
フリッカ*1無視してベンチマーク回すだけならブーストテーブルで+7段、VRAM 3500MHzあたりまではイケるんですが、そうするとグラボ側の電圧不足(?)でnvlddmkmガガガ・・・
グラボは電圧はいじらずにクロックだけ上げているのですが、安定動作ラインの見極めがCPUよりも更に面倒で。。。GPUコアについては、エラーチェック有り設定でOCCTのGPU TESTを走らせて+4段までは1時間ノーエラー、+5段ではエラー検出するのでこのクロックが電圧いじらずにある程度動作する上限*2とほぼ断定できるのですが、VRAMはドライバの応答停止と回復が頻繁に発生したり3D Markであからさまに描画にちらつきが出るところまでクロックを上げてもOCCTではエラーが出たり出なかったり。どうもOCCTはGPUコアに対する負荷や電力面での負荷に重点を置いているソフトなのでデフォルト設定ではVRAM消費が低く*3、余程のことがないとVRAM起因のエラーは検出できないようです。それでも3400MHzまで上げるとさすがのOCCTもエラー検出する場合があるので、常用できるのはまぁせいぜい3250MHzとか3300MHzとかが上限だと思うのですが、このあたりのクロック設定はnvlddmkm発生したりしなかったり。。。
他にもVideo Memory stress Test v1.7とかも試してみたのですが、GPUコアの負荷が軽い状態でいくらテストを走らせても電力的には大した負荷になっていないせいかまるでエラー検出されず。このツールはOCの際に〜と紹介されることもありますが、あまりに負荷が軽いと例え電源管理モードが「パフォーマンス最大化を優先」に設定されていてもドライバがコアクロック落としちゃいますし、肝心のOC状態での正確な評価診断は難しいようです。
nvlddmkmは、ギリギリ狙いOCで動作タイミングがシビアになっていることが原因で出る場合はドライバのバージョンによっても挙動が変わったりしますし、できれば安定性評価の指標として使いたくないのですが。。。

その後別アプローチで、旧バージョンが非商用フリー化されている3D Mark Vantageを使い、DSR2KレンダリングでVRAM2GBをほぼ9割使い切る設定*4とし、ベンチマーク中のスタッタリングやゴミテクスチャの発生を目視でチェックする地味検証をやってみました。。。時間かかった・・・
その過程で、Afterburner読みでVRAMクロック3200MHzと3300MHzに、「クロックを上げるとベンチマークスコアが落ちるポイント」があることを発見。おそらくクロック上昇に合わせ、自動でアクセスタイミングを緩めるような制御が何かしらされているのでしょう。GPUコアクロックノーマルでのベンチマークスコアを比較すると、VRAMクロック3290MHz>3305MHz≒3251MHz≒3197MHz>3206MHzのような結果に。VRAM 3260MHz〜3290MHzは描画にゴミテクスチャが混ざってしまい明らかに安定動作限界を超えているため、レイテシ重視で3197MHzとするかクロック重視で3305MHzとするかのいずれかが常用限界っぽい。
->どっちも限界を超えている気配。nvlddmkmの発生頻度が高いので、レイテンシの緩む3206MHz設定に変更して検証中。。。->3206MHzでもnvkddmkmが連続稼動48時間以内には記録される模様。。。3206MHzは以前のC2D@4GHz環境ではエラー出ずに安定動作する範囲だと思っていたのですが、、、マザーボード側のFSBも上がっているのでVRAMの電気的な動作安定度がよりシビアに要求される状態なのかもしれません。一度VRAMを定格の3004MHzに戻し、「VRAM以外は現状本当に安定しているのか?」を再度検証中です・・・
->どうも今回CPU Vcoreを上げた影響か、検証が面倒でいじっていなかったCPU Terminationもある程度上げてやらないと、VRAM3004MHz設定でもnvlddmkmが消えない事が判明。マザボ側の電圧設定を再検証中、グラボは一時中断です・・・
->とりあえずVRAM3004MHzでは問題のでなさそうな設定を出せたので、再度VRAMを3197MHzへupして検証中。->問題なさそうなのでVRAMはこれで決め打ち。

GPUコアは、ベンチ中のブーストクロックが1189MHz以上となる設定では明らかにスタッタリングが増える。それぞれのクロック設定で2,3回ずつしか計測していないので精度は低いですが、1137MHz*5 -> 1150MHz -> 1163MHzまでは描画品質に有意差が見られずベンチスコアも順当に上昇するものの、1176MHzではなぜかベンチスコアの伸びが鈍り、スタッタリングは出たりで出なかったり、それ以下のクロックではほぼ見られないゴミテクスチャの発生も見られる。このため当面の常用クロックをブーストテーブル+2段に設定。

さらにその後、完全に気まぐれで電圧もいじる方針に変更。直前のベンチマーク検証で設定した「ブーストテーブル+2段」(MAX1163MHz@1187.5mV)よりも更に高クロックを狙ってみました。
BIOSのVoltage Tableを書き換え、デフォルトでは通常時上限1200.0mV、オーバーボルテージ上限1212.5mVを、それぞれ1250.0mV、1312.5mVに変更、、、したのですが、どうもハードウェアレベルで1212.5mVでリミッターがかかっている(?)ようで、結局それ以上電圧を上げられず。
この状態で、Afterburner等のツールを使用してオーバーボルテージ設定をしなくとも1212.5mVまでオートで電圧がかかるようになり、ブーストテーブルをオフセットしなくともコアクロックが瞬間1176Mhz、連続負荷時1163MHzで動作するように。
更にブーストテーブル2段オフセットをかけたところ、瞬間で1202MHz、連続負荷で1189MHzで動作。ストレステストツールで電力負荷をかけてクロックダウンした際の電圧がベンチで検証した1163MHzで1187.5mV、1176MHz以上のクロックでは1212.5mV、1150MHz以下のクロックではクロックが下がったなりに電圧も下がるように。
更にもう1段ブーストを載せて連続負荷で1202MHz出るようにしても1212.5mVなら行けそうなんですが、そうするとベンチ検証ラインの1163MHzで1175.0mVに電圧が低下してしまい安定動作のマージンが無くなりそうなので当分はこの仕様で使ってみます。

ちゃんと調べたわけではないので間違っている部分もあるかもしれませんが、、、
GeForceの持つGPU Boost機能では、まず個々のGPUダイが持つASIC Qualityのレート等から、BIOSの持つVoltage Tableの各ブーストレベルごとの電圧設定範囲のうち「実際に何ボルトの電圧でそのブースト段を動作させるか」がまず決定される。その電圧情報に基づき、GPUコア温度、消費電力、TDP、動作電圧のいずれかが上限に達するまでブーストレベルが引き上げられ、決定した各ブーストレベルにおける動作クロックはBIOSのBoost Tableを参照する。という流れでクロック、電圧が決定します。
で、お手軽にGPU OCを行う場合、「純正状態では各ブーストレベルの動作電圧において、参照されるBoost Tableの設定クロックには動作マージンがあることから、このBoost Tableの数値をオフセットする。」方法が一般的なのですが、今回は前段階のVoltage Tableをいじりました。
というのも、現在使用しているASUSのGTX760、ASIC Qualityのレート自体は75.8%(GPU-Z表示値)で、高くもなく低くもなくごく平均的な数値だと思うのですが、GPU Boost機能で使用されるBIOSのBoost Table 35段〜52段のうち、特に電圧設定に手を入れない状態では電圧上限に達してしまい45段目までしか使っていない。基板を改造せずにGPUコアにかけられる上限電圧である1212.5mVで、ベンチマーク画面にゴミテクスチャが乗り始めるのは検証の結果1215MHzだったのですが、ASUSファクトリーOCのBoost Tableをオフセットしなくても51段目にこのクロックは既に設定されており、Boost Tableオフセットで使いもしない高クロック設定を増やすのは気づいてしまったら何か気に入らない(笑)
Boost Tableをオフセットしなくても、各ブースト段での動作電圧範囲自体をいじって電圧リミッタに当たらずよりブーストレベルが引き上げられるようにすればいいじゃない!と、BIOSの電圧設定をいじって焼き直しては再起動を繰り返し、、、結果Boost Tableの50段目、1202MHzまできっちり使わせることに成功しました。どちらにせよ1212.5mV以上の電圧は使えないのならと、通常時・オーバーボルテージの上限は共に1212.5mVに設定しています。
->1202MHzで動作させるとコア電圧1212.5mVでもnvlddmkm発症するので封印。->nvlddmkmはGPUコアクロック起因ではなくVRAMクロック?起因の可能性もあり、要再検証。
->その後、Voltage Tableの各段ごと全てに個々の上限値を設定して「中間クロック」の電圧をコントロールするのもあまり賢くない、ASIC Qualityから自動算出されるLoad Line Calibrationを活かしたままで中間クロックにおける電圧マージンを最適化したい。ということで、ブーストテーブルを+1段オフセットしました。結局。
特に温度や電力等で制限がかからずそこそこの負荷で動作している場合、GPU Boost機能は最大で1202MHz@1212.5mVまでブーストし、TDP(?)が閾値を超えると1段ブーストレベルが下がり、
高負荷時にも1189MHz@1212.5mVで安定して連続動作します。ストレステストツールなどで更に大きな負荷をかけると、コア温度や消費電力に応じ1176MHz@1212.5mV -> 1163MHz@1200.0mV -> 1150MHz@1187.5mVと段階的に動作クロック・電圧が抑制され異常加熱による半導体の損傷などが発生しないように自動制御されます。
Voltage Table 49段目(1202MHz)及び50段目(1215MHz)は電圧設定範囲下限がそれぞれ1175.0mV及び1187.5mVなので、余程条件が良いときに瞬間的にブーストされてしまう可能性もありますが、上限は1250.0mVとしてあるのでASIC Qualityから電圧を算出する時点で1212.5mVを超えるため通常は使用されません。
->さらにその後マザボ側の電圧設定も合わせて検証を続けたのですが、GPUコアを1189MHzまで上げてしまうとBOINCを回しっぱなしにした状態で24時間エラー記録がなく安定したかと一瞬期待するも結局48時間は持たずにイベントビューアにディスプレイドライバの応答停止と回復が記録されてしまう状態を解消できず、結局ブーストテーブルオフセットはなしで高負荷時連続1176MHz@1212.5mVとなる設定に落ち着きました。->この状態でも電力負荷が瞬間的に大きく変動するタイミングに主にブラウザの描画が重なるとディスプレイドライバの応答停止と回復が記録されてしまう場合があり更にマザボ側の設定を詰めてみたところ、これまでは触っていなかったクロックドライブ電圧の昇圧が効果が有ると判明。最終的に高負荷時連続1189MHz@1212.5mVとなる設定に落ち着きました。

またVoltage Tableを弄ったついでにPower Tableも内容を検証してみました。
Target TDPやTarget Powerについては、設定値をいじっても「どこまでブーストするか」は変化しても、それぞれのブースト段における電圧算出値には影響を与えない、ASIC Quality等から算出された電圧が先に上限に達してそれ以上のブーストができない場合はいじる意味がない事を確認。このあたりは基板の電源回路の限界値などは素人判断では難しい箇所のため検証後オリジナルの設定に戻しています。
ただ設定値で気になったのが、いわゆる「8ピン補助電源コネクタ」に関する電力消費設定が、Default 180W - Maximum 180Wとされていた点。「ATX電源の出力容量が十分にある」「電源ユニットから直接配線が接続されており、途中で分岐タコ足されていない」前提において、8ピン補助コネクタは+12V配線が3本とGND配線が5本で構成されており、(8ピンコネクタの接点端子の定格電流が5Aなので)+12Vの電線1本につき5Aの電流を許容すると3本分で180Wとなり安全上問題はない、という事のようですが、、、Wikipediaを見るとPCI-Eの規格上はM/Bスロットからの給電が最大75W、補助コネクタ6ピンで+75W、補助コネクタ8ピンで+150Wとされている様子。まぁどっちにしろ電源喰うならM/Bに負荷をかけるよりATX電源から直接給電される方が安定するのは確かなのかもしれないですが、同Power Table内の設定値でPCI-Eスロットの項目を見るとDefault 66W - Maximum 66W。(自分の勘違いで、PCI-Eスロットからの「+12Vの」給電能力は最大5.5Aで66Wでした。オリジナルのBIOS設定で何も問題なし。)
イマイチ腑に落ちなかったので、PCI-EスロットをDefault 66W - Maximum 75W、8ピン補助コネクタをDefault 150W - Maximum 180Wと書き換えました。Defaultの66W+150Wでも計216Wとなり、同Power Table内のTarget Power設定値のMaximum 214Wはカバーしている事から、この設定変更がボトルネックとなり性能発揮できない可能性は低いと判断。Maximumの66W+180WならTarget Power設定値Maximum 225Wも余裕。8ピン補助コネクタの内+12V配線1本あたりの電流値はDefault 4.17Aに抑えられ、過電流による配線トラブルを未然に防止できるのではないかと勝手に思っているのですが、逆にM/B側に余分な負荷をかけて不安定になる可能性もあり、、、真相は不明。
->PCI-E規格値を超える電力を要求する設定には疑問を感じるところではあるのですが、現実的な問題として「8ピン補助コネクタの要求電力値を制限すると(おそらくマザーボードからの電源供給能力に対する負荷が上昇し)、ゲームを起動した瞬間やタブブラウザを起動した瞬間など、電力負荷が変動したと思われるタイミングでのディスプレイドライバの応答停止と回復が発生する頻度に有意差が見られる。」ため、設定値をDefault 180W - Maximum 180Wに戻しました。。。

どこか設定をいじるたびに毎回書いている気もしますが、またしばらく使いながら様子を見ますw
//追記の繰り返しで極めて読みにくい状態ですみません。経過も含めて自分用メモの意味合いが多分にあるもので・・・

*1:厳密にはフリッカと呼んでいいものか微妙ですが、限界ギリギリのクロックで3Dベンチマークやゲームを動作させると正常に描画されず、緑一色のフレームが間に入り画面がちらついて見える症状が出ます。おそらくフレームバッファかVRAMがデータを正常に扱えず内容が飛んでいるものの、ディスプレイドライバはぎりぎり死なずに持ちこたえている状態w

*2:実際には4段上げちゃうとnvlddmkm頻発するので「安定動作」上限はもっと低い・・・

*3:メモリ使用量を手動で設定することもできるのですが、本来数十MBのVRAMしか使わないテストを無理に数GB使いきるように設定して走らせても、設計通りの負荷がかけられないようでフレームレートは乱高下するわGPUコア温度もまるで上がらないわで余計にエラーの検出率は下がります。

*4:DSR4K(3840x2400)まで上げると、VRAM2GBでは容量が不足しメインメモリへのアクセスが発生し露骨にフレームレートが低下するので、DSR2K(2715x1697)設定としています。

*5:ASUSファクトリーOC設定