CPUのボトルネックを回避するGPUとの組み合わせは?
パソコンの購入時にGPUをまず決定して、CPUを選びたい場合、どのレンジのCPUにしようかと迷うことがある。
よくおすすめされる方法が、大体同レベルのものを抑えておけば間違えないという考えである。
すなわち3~4万円程度のミドルレンジのGPUならばCPUはミドルレンジといわれるCore i5、5万円を超えるようなGPUを積むならばCore i7,9を搭載するといった具合である。
この考え方は間違えではなく、私も人に聞かれるとそのように回答するが、言うなれば大は小を兼ねるという考え方であり、コストを考えると常に最適解とはならない。
本稿では、なぜCPUのボトルネックが発生するのかを理解し、要件にあったCPUとGPUの組み合わせを自力で選べるようになることを目指す。
考え方が分かればあとはGPU性能比較表やCPU性能比較表等を参考に最終決定していこう。
- CPUがボトルネックとはどのような状態か?
- ゲームにおけるGPUの役割
- ゲームにおけるCPUの役割
- CPUのボトルネックは高いFPSで発生する
- 4KゲームでCPUがボトルネックとなる可能性は低い
- 4KならミドルレンジのCPU、高FPSならハイエンドのCPU
- メーカー推奨スペックは合理的である
- CPUボトルネックチェッカーは役に立たない
- まとめ
CPUがボトルネックとはどのような状態か?
ゲームの滑らかさを決めるフレームレートはGPUの能力によるところが大きく、より滑らかな映像を実現するためにはより高価なGPUと交換することが一般的である。
ところがCPUの能力が低いと、せっかく高価なGPUと交換したにも関わらず、FPSが全く伸びないという状態になり得る。この状態をCPUがボトルネックであるという。
逆にGPUを交換することによりフレームレートが上がる場合は、GPUがフレームレートのボトルネックになっているという事が言えるが、こちらの方が一般的なケースが多いため普通GPUのボトルネックに言及されることはない。
次の節からはGPU、CPUのゲームにおける役割を抑え、何故ボトルネックが発生するのかを理解していこう。
ゲームにおけるGPUの役割
GPUのゲームにおける役割は描画を滑らかに行うことである。
具体的には毎フレームごとに各ピクセルの色や透明度を決定し、それをフレームバッファーという描画のためのメモリ領域に書き込むという操作が必要となる。
これを行うためには操作している人や背景、敵などの位置を計算する座標変換や、光源と物体の位置関係や光の反射を計算して最終的なピクセルごとの色を決定するライティング(lighting)などのタスクが必要となる。
GPUの一つ一つのコアの能力は1GHzそこそこで到底CPUには及ばないものの、コア数は数千にも及び膨大なピクセルに対する演算を並列処理で高速にこなす事ができる。
例えば背景の視点が回転して変わった時に、各ピクセルがどこにマッピングされるかは、他のピクセルとの依存関係のない行列演算となるため、並列演算に適した処理となる。
この超並列演算により、60FPSならばわずか16.66msという短い時間内に描画に必要な計算処理を全て済ますことができるのである。
一方でCPUではコア数が多くて数十個であるため、それぞれのコアの能力は高くとも、膨大な描画演算をこなす事はできない。
CPUとGPUの違いを車で例えるならば、CPUはスーパーカーで、GPUはバスであり、移動距離x人数を考えるとGPUの方が効率が良い。同じ処理を複数の対象に適用する場合にGPUは力を発揮する。
ゲームにおけるCPUの役割
GPUがメインの描画を担う一方で、CPUはたいして働いていないと思う人は多いかもしれない。
しかし実際にはCPUは物体同士が衝突して向きを変える物理演算、敵AIの制御、サウンドエフェクト、UI更新や操作ユーザの制御、オンラインゲームならばサーバとの同期処理など非常に多くのことを担う。
60FPSと聞くと、1秒に60回描画することだと想像する人が多く、その通りなのだが、1フレームの16.66msの間に上記の演算も全て終えなければならない。
すなわち一般的にはGPUがボトルネックとなるケースが多いものの、CPUの処理が多く要求されるゲームとなると、今度は逆にCPUがボトルネックとなることもあるのである。
このため実際のゲーム開発の現場では、プロジェクトの初期段階からCPUのパフォーマンスをチェックし、AI制御や更新するUIの簡素化、複数コアを演算で使えるようにプログラミングをマルチスレッドなものに変更するなど日々チューニングに励んでいるのである。
CPUのボトルネックは高いFPSで発生する
ここまでの話でピンと来ている人はいるかもしれないが、GPUで1フレーム作成する処理をいくら16.66ms以内に納めたとしても、CPUが各フレームで発生するタスクを処理できなければフレームレートを上げることができない。
そして高フレームレートを目指そうとしたときにはリソース制約は更に厳しくなり、4倍となる240Hzのフレームレートを実現するためには、わずか4ms強でCPU処理を完了しなければならない。
つまり高いFPSを目指すほど、短時間で同一の処理をCPUは処理しなければならないためCPUのボトルネックが発生しやすいのである。
ゲームによりけりであるが、特にFullHDでゲームを行う場合にはどんなに良いGPUを搭載しようとも一定以上FPSが上がらないことはよくある。
4KゲームでCPUがボトルネックとなる可能性は低い
一方で4Kなど高解像度を目指したときは、物理演算は多少細かくなる可能性はあるものの、敵のAI処理や通信処理、サウンドエフェクトなど多くの処理は解像度の違いによらず一定の負荷である。
4Kではグラフィックボードの性能が不足しがちで高いFPSが出にくいため、ボトルネックとなるのは専らGPUであり、CPUがボトルネックとなる可能性は相対的に低い。
4KならミドルレンジのCPU、高FPSならハイエンドのCPU
以上の話により、4Kクオリティの映像を楽しみたい場合にはそこまでCPUの能力は求められないためミドルレンジのCPUで構わない。
一方で144Hzなど高いフレームレートを目指したいならば、CPUがより短時間でタスクをこなす必要がでてくるためハイエンドのCPUを搭載しなければならないというのが結論である。
ハイエンドのCPUは高いものでは10万円近くするため、遊び方次第ではスペックを合理的に落とすことが可能なのである。
また、可能な限りCPUとGPUを限界まで活用したいという場合、うまい具合に画質をチューニングすることも重要である。
たとえばレイトレーシングと呼ばれる、光の反射を考慮してよりリアルな映像に近づける技術があるが、ピクセルごとの計算量が大幅に増えるためオン・オフを設定で切り替えられるゲームがある。
GPUの能力が余っていると感じたら、これをオンにすると良いだろう。
メーカー推奨スペックは合理的である
遊びたいゲームが決まっている場合はメーカーの推奨スペックを確認することは非常に合理的である。
一番無駄のないCPUとGPUの組み合わせは、両方のプロセッサーが力を持て余すことなく負荷がかかるような組み合わせである。
多くのゲームでは、同レンジのCPUとGPUを組み合わせて、ボトルネックがどちらにあるかを実験してパフォーマンスチューニングを行っており、ハイエンドGPUとCeleronの組み合わせなどは試していないであろう。
このため一般的にはこの開発スタイルに合わせ、特に4Kではなく高いフレームレートを目指したい場合は同レンジのCPUとGPUを組み合わせて使うのが一般的には良いという事になる。
ところがソフトウェアの作り方による違いはゲームごとに大きいため、同じパソコンのスペックでも、あるゲームは標準的な画質でGPUがボトルネックになるが、他のゲームではCPUがボトルネックとなるのが普通である。
そこでやりたいゲームが決まっている場合のみであるが、メーカーの推奨スペックを確認することをおすすめする。そこにCPUとGPUのちょうど良い均衡点が書かれているためである。
ただし一般的にどのメーカーサイトでも4Kの推奨CPUは大抵の場合やや過剰な気がする。ともあれ最強の環境を作りたいという場合は従えば良いだろう。
CPUボトルネックチェッカーは役に立たない
CPUとGPUのどちらがボトルネックになるのかは4KかFullHDかQHDか?同じ解像度でもそれぞれのディテールの描写は細かいか荒いか?それぞれのゲームでのチューニングの度合いなどで決まるため、あるCPUに対してこのGPUが最適であると一意に特定することはできない。
言えるとするならばたとえば、フォートナイトをレイトレーシング有、DLSS有設定でQHD画質で遊ぶことを考えた時、Geforce 3060Tiをグラフィックボードとして選択すれば、ボトルネックとならないようなCPUはCore i7 〇〇Kである、みたいな超具体的な答えとなってしまうだろう。
よってボトルネックチェッカーというサービスがあるが基本的に目安にすらならないだろう。
まとめ
以上、言いたいことをまとめる。
これを念頭に入れつつ自分にとってコスパの良いCPUとGPUの組み合わせを決めてもらえれば幸いである。