「2013/10/13-01」の編集履歴(バックアップ)一覧はこちら
「2013/10/13-01」(2013/10/13 (日) 20:30:15) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
**CPU負荷お手上げ状態
(以下の記述は全てFullHD(画面解像度1920x1080)を前提に試験及び記述しています)
高フレームレートを実現するためにはCore i7-4770K/4.4Ghzでも性能不足が決定的となり、
StatsNow!!用のサーバから引っこ抜いて来たのがこれ。
&image(ES3930K.JPG)
レーザ刻印に&b(){INTEL CONFIDENTIAL}とありますので目にモザイクをして下さい。
Core i7-3930Kとは書いてありませんが、それだと思うとそれになります。
2010年生産と刻印されており、2010年に3930Kは存在しなかったかもしれませんが、それも気にしないで下さい。
----
4Coreの4.4Ghzでもほぼ全負荷状態に陥るため6Coreを投入したわけですが、&b(){どうも様子がおかしい。}
&b(){&Color(red){明らかに4770Kの方が滑らかに動いている。}}
十分な数のスレッドが並行稼働しているので遊んでいるCoreは無いはず。
実際に確認してみても6Core全てが相応に稼働しています。
もしや性能不足か?
Core i7-4770K : 4.4Ghz * 4Core * 並列処理効率80%(推定) = 14.08
Core i7-3930K : 3.2Ghz * 6Core * 並列処理効率70%(推定) = 13.44
あ、下回った。(苦笑)
でもこんな僅かな差では無い程、性能劣化している様に感じます。
試しに3930Kもオーバークロックを強行します。
Core i7-3930K : 4.4Ghz * 6Core * 並列処理効率70%(推定) = 18.48
&color(red){理論的には30%ほど4770Kより高性能になりました。}
恐らくもっと高クロックで稼働しますが取り敢えずこれで様子を見ましょう。
----
***【鬼門】GeForce GTX TITANは画質LOWなら120Frames/secは達成出来るか?
&image(BF4_Beta_Titan_Low_20131013_01.png)
***&color(red){文句無しの惨敗でした。}
&b(){&color(red){CPUもGPUも負荷が65%程度で推移しています。}}
もっと働けよ...
4時間調べて納得しました。
DirectX10(10.1かも)からMultiThread対応が謳われていますが、
特定の処理の組み合わせについて並列化が可能となっただけであり、
条件を満たさないケースでは一方のスレッドは待ち状態に入ります。
従って、実質的には今でもほぼSingleThreadで描画が行われていると考えるべきです。
DirectXに依存しない処理は多数のスレッドによって並列実行されていることは間違いありませんが。
そのため&color(red){CPUコアがいくつあっても描画処理に使用されるのは1コアだけ}と考えて良さそうです。
瞬間的には2コアで描画しているかもしれませんが、平均すると1.1コアなど1コアに近い値になるはずです。
※この傾向はBattlefield4(Frostbite3)特有ではなくDirectX10/11に対応した多くのソフトウェアに共通の傾向です
----
その結果、1コア相当の描画性能しか発揮出来ず、
残るコアはアイドルするためトータルでの負荷状況が65%程度になっています。
&b(){&color(red){画質Lowに限定すれば、1コア相当のCPU性能よりGPUの描画性能が上回るため、GPUもアイドル(描画命令待ち)する時間が長くなっています。}}
----
****なぜか?
ここまで過酷な状況になっている理由は明確ではありませんが、
原則論としては&b(){視界範囲内のオブジェクト(モノ、ヒト)が多すぎる}から。
&b(){以下、USベース内にて撮影)
&b(){上向き}
&image(BF4_Titan_Low_U.jpg)
&b(){下向き}
&image(BF4_Titan_Low_D.jpg)
&b(){前向き}
&image(BF4_Titan_Low_F.jpg)
&b(){後向き}
&image(BF4_Titan_Low_B.jpg)
&b(){前(前線方面)を向いている時だけフレームレートが急激に下がっています。}
&b(){また、戦闘中であっても視界範囲が限定されていれば高フレームレートを維持出来る例もあります。}
&image(BF4_Titan_Low_InFight.jpg)
&b(){これは敵のすぐ後ろがマップの範囲外になり、描画対象が存在しないため高フレームレートになっていると考えられます。}
----
一般的に描画対象の数が影響するのはGPU負荷のようなイメージがあると思います。
しかし、GPUが担当するのは「どう描画するか」であって「何を」や「どこに」は全てCPUが指示しています。
しかも、1フレームごとに描画する可能性(*1)のあるオブジェクトのジオメトリ(位置や向きなどの)情報を全て列挙し、GPUへ指示します。
そのため「何を」の分母に該当する、視界範囲内のオブジェクト総数が多くなる程CPU負荷も増大します。
※理論的には高FOV設定ほど高負荷になりますが、FOVと視界距離は反比例の関係にあるため、
遠くのオブジェクトが描画されなくなる分だけ負荷が抑えられるケースもあるかもしれません。
(*1)
他のオブジェクトの裏側になるオブジェクトは描画しても見えないため、
GPUが自動的に判断して描画対象から除外します。
----
さてどうするか。
GeForce GTX TITANを画質Lowで使い切るには、
単純計算すると1コアあたりの処理能力が&b(){現状}の1.5倍程度のCPUが必要になるようです。
一般的な意味での&b(){現状}ではないですね。これ4.4Ghzで動いていますから。
現状の何倍と表現するかは別として6.6Ghz程度のCPUが必要なようです。
但し、コア数が多い必要は無いでしょう。4Coreも要らないかも。
----
これはあくまでも超高性能なGPUを低画質で使用することにより、
確実に120fpsをキープしたい本気で戦う方々にのみ必要な性能であり、
ほとんどの方には無用な性能だと思いますが...
いや、そうでも無いかも。
[[Battlefield4の推奨環境>>https://twitter.com/Battlefield/statuses/377129313524387841]]の推奨環境に挙げられている、
&color(red){GeForce GTX 660やRadeon HD7870を画質Mediumで使用すると、4770K/4.4GhzでもGPUがアイドルします。}
つまりCPUの性能不足でGPUの能力を使い切れていない状態です。
ちなみにどちらのGPUも画質をHighにするとCPUとバランスが取れるようです。
----
***このCPU依存な現象はBattlefield4だけなのか?
試しました。
&b(){皆さん御存知Battlefield3のCaspian Border 激戦の最前線にて撮影}
&image(BF3_Titan_Low_01.jpg)
&image(BF3_Titan_Low_02.jpg)
&image(BF3_Titan_Low_03.jpg)
こちらも画質Lowですが150fps程度を安定してキープしています。
同じFrostbite系のエンジンを使っているとは言え、別のソフトウェアですので「画質Low」の意味が異なるかもしれませんが、
それにしても差が大きすぎますね。
----
***単純な対策は無さそうですが「予算は出来るだけCPUへ」は間違っていないようです
----
(2013/10/13 20:30追記)
&b(){全負荷になってるのは1コアだけですね。HT Disabledなので全体の半分しかCPUを使っていません。}
&image(TaskManager_3930K_20131013.png)
(&Counter())
表示オプション
横に並べて表示:
変化行の前後のみ表示: