■まずはノーマルでプレイ
まずはノーマル状態でプレイしてみたところ、何だか動きがカクカクしている。
明らかにi7-4770K+GTX660のJ4509改と比べて快適でなく、プレイしていると気持ちが悪くなってくる・・・
「やはりFX-8100ではクロックが低いせいか」という事で、CPUのオーバークロック(OC)を試すことにした。
■OCを試みるが不具合
まずはBIOSを開いてOC設定があるか調べたが、それらしき設定は全く無い。というか、本当にBIOSで設定できる項目が少ない。さすはメーカー製PCだ。(苦笑)
ということでWindows上のツールが行えないか調べてみたところ、グラボのドライバとしてCatalyst Control Center(CCC1)4.4をインストールしたが、このCCC上にAMD OverDriveという項目があり、ここで自動でOC可能な範囲の洗い出しとOC有効化を行ってくれる事がわかった。
私のマシンで早速行ったところ、定格2.8GHzから3.1GHzまでアップ可能となった。
約1割のアップだが、K53TKの時は無理をすれば2.4GHzが3.0GHzと2割以上のアップが出来たので些か期待外れ。
またFX-8100はMax Turboで3.7GHzまでアップ可能な筈だけど、このツール上ではTurboがどうなるのかさっぱり判らない。
「まぁまずはこれで多少はDiablo3のカクつきは改善されるか試そう」
ということで、3.1GHzにアップ可能なOC設定でDiablo3をプレイしてみた。
ところが、改善されるどころか新たな不具合が発生してしまった。
Diablo3の動作が早送り状態になっている。なんて言えば良いのだろう、描画間隔が非常に広く、コマ落ちが物凄い状態になっておりとてもプレイできる状態でない。
この現象はCCCでAMD OverDriveをオフにすると改善するので明らかにOCが原因。
■別のツールを試す
「うーん、CCC内のツールではうまくいかないのかな」
と思い、他のツールがないか調べたところ、AMDが別のツールとして「AMD OverDrive」というソフトを出しているという事が分かった。
◆AMD OverDrive(2014/8/17時点の最新は4.3.1)
このツールはCCC内の項目と同じ名称だが、機能は全然違い、非常に多くの項目をモニタリング可能、かつ細かな設定が出来る。
AMDの意図がよくわからないけど、CCC内の機能はEasy OC、別ツールのAMD OverDriveの方はマニア向けということなのだろうか。
で、さっそくこのツールを使ってOCしてみることにする。
ツール内の、「パフォーマンス制御」→「クロック/電圧」を開き、そこの「クロック」欄のスライドバーを動かすと、最大クロックを変えられるようだ。
このスクリーンショットでは「14 X」になっているので、ベースクロック200MHzX14=2800MHz、つまり2.8GHzということだろう。
まずはこれを「14.5 X」、つまり2.9GHzにしてみてDiablo3をプレイしてみたところ、CCC内のツールでOCした時と同じく早送り状態になってしまった・・・
■早送りの原因を調査
「AMD FXでOCした状態ではゲームをプレイできないのかよ。」
と諦めかけたが、こんな程度の事はFXユーザは当然のように行っている筈なので出来ないのはおかしいと思い、もう少し調べてみることにした。
まず早送りになる件について、類似のキーワードで検索したところ、どうもRDTSC (Read Time Stamp Counter)という、CPUクロックに基づく相対時間を計測するのに利用する命令に関係するトラブルのようだ。
簡単に言うと、ゲーム内では様々な時間を必要としている(例:この攻撃の効果は何秒間続くとかだと思う)が、それをカウントするのにこのRDTSCという命令を使っているらしい。
で、このRDTSCはCPU内でクロックに従ってカウントアップされるが、複数コアを持つPCの場合にはコア毎にカウンタがずれるらしい。よって、あるタイミングでカウンタ値を読み込んだコアと次に読み込んだコアが異なると、このずれによって正確な時間がカウント出来なくなりおかしくなるという事だと思われる。
もちろん、別にOCしなくてもこの問題は発生する筈なのでなんらかの打ち手がアプリ側に組み込まれているのだとは思うが、OCするとその打ち手がうまく働かないのだろう。
もちろん、別にOCしなくてもこの問題は発生する筈なのでなんらかの打ち手がアプリ側に組み込まれているのだとは思うが、OCするとその打ち手がうまく働かないのだろう。
これを防ぐ方法の1つとして、該当プログラムは特定1コアしか使わない状態で起動するというものがあるとの事だったので、同じく早送りになるDQ10ベンチを特定1コアしか使わない状態で起動させてみた。
◆元のベンチ起動コマンド
"C:\Program Files (x86)\SquareEnix\DRAGON QUEST X BENCHMARK\Game\DQXBenchmark.exe"
◆3コア目しか使わない状態でのベンチ起動コマンド
C:\Windows\System32\cmd.exe /C start "" /affinity 0x04 "C:\Program Files (x86)\SquareEnix\DRAGON QUEST X BENCHMARK\Game\DQXBenchmark.exe"
※このコマンドのポイントは、affinity引数で指定している16進数。この例だと0x04なので、2進数に直すと00000100。3桁目が1になっている、つまり3番目のコアだけ使うという指定になる。ちなみに1コア目と3コア目だけを使う場合には、0x05=00000101になる。
この状態で起動させると、確かに早送りにはならない。よってOCする事によりRDTSCのカウントアップがプログラムが想定しているタイミングより早くなってしまい、早送りになってしまうのだと思われる。
「では特定コアのみを使用した状態で使うか」とも思ったが、その場合はコアが1個しか使えないのでOC前の2.8GHzより遅くなってしまい、OCする意味がない。
■対処方法を発見
もう一度AMD OverDriveの設定画面をチェックしてみると、「クロック/電圧」の初期画面上にクロックのスライドバーがあるが、「Turbo Core...」ボタンを押して表示される第2画面にもある。
「もしかしたら、初期画面のスライドバーはベースクロック(という言葉でよいのか?)を変更してしまうのでRDTSCもおかしくなってしまうが、この「Turbo Core...」画面の方を変更すれば、負荷が掛った際のTurbo時のクロックが変わるので、RDTSCへの影響はないか?」
と想定して、初期画面の方は「14 X」ままとし、第2画面の方を「20 X(=4.0GHz)」としてみてDiablo3を起動したところ、見事早送りが解消された!!
しかも2.8GHzの時と違ってカクつきが解消されていて快適にプレイ可能になった。
これを見つけた時は本当に嬉しかった。
■Diablo3をプレイ
OC状態でDiablo3をプレイできるようになったのでさっそく検証。
ドタ感で「4.0GHzくらいなら大丈夫かな?」とあたりをつけて「20 X」までOCした状態で、プレイした際のログをまとめたグラフは下記の通り。
【負荷状況】
・CPU : Core#3-#1が平均70%程度。ただ所々90%近くになっている。
Core#0-#0、#1-#0、#2-#0は平均20%程度
あとは働いていない。
・GPU : 平均80%程度だが、100%に張り付いている場合もしばしば見られる。
Diablo3は基本的にシングルコアアプリなのでCPU Core #3-#1の負荷だけが高くなっているが、CPUがボトルネックとはなっていないようだ。ただもう少し余裕があってもいいかもしれない。
ボトルネックになっているのはGPUの方で、所々100%に張り付いてしまっている。
【プレイ感覚】
概ねJ4509改(i7-4770K)と遜色がない快適さで動作したが、所々J4509改では感じられなかった、0.1~0.2秒くらいの引っかかりを感じた。これが上記グラフのGPU100%のタイミングなのかもしれない。
しかし2.8GHzの時と比べると非常に快適で、これなら常用マシンにしても問題ない。
格安で購入したPCだが、とりあえず自分の用途で快適に使えるように出来て良かった。
0 件のコメント:
コメントを投稿