読者です 読者をやめる 読者になる 読者になる

Game Developers Conference 2005 ネタ (2)

DirectX

PC Watch の記事より.つづき.

話題は続いて「ゲームを動かすハードウェア」の見地へと進む。ここで、ついに近代ゲームにおいて、「CPUパフォーマンスがボトルネックになった」という衝撃の告白を行なった。PCゲームでも家庭用ゲーム機においても同じである、と氏は強調する。

複雑、高度化したゲームソフトの開発を推し進めていくとグラフィックスサブシステムよりも、CPUで動かすソフトウェアの方が、先にそのパフォーマンス限界に到達してしまうというのだ。

にわかには信じがたいという人も多いと思う。

現在のゲームでは「CPUがAIや物理、インターフェイス入力、その他の処理をしてGPUで描画……その繰り返し」という処理系になり、60fpsの場合ならば、GPUとCPUはほぼ並行に動作できていると仮定しても、各フレーム描画のインターバルである16.66msの間にそのAIや物理、インターフェイス入力、その他の処理を全て終えなければならない。

つまり、逆に言えば「16.66msの間にCPU担当の処理が終えていない場合、GPUがどんなに高速化されてもフレームレートは向上しない」わけで、それどころか、今や「GPUが次の描画処理をしたいのに、CPUが自分の処理が手一杯でGPUに描画させる用意ができていない」……という状況がすでに最先端ゲームでは起こってしまっているというのだ。

別に最先端ゲームと呼ばれるような大層なものでなくっても,現在の DirectX 9 環境では例えば 5 年前のノリでちまちまと描画命令を発行するだけで,CPU の方が先に根を上げるような現象は簡単に見られます.むしろ何も考えずに適当に実装すると CPU 律速になる可能性の方が高いかもしれません.GPU が遊んでいるなら描画命令あたりもっと時間をかけてもいいわけで,これこそが「よりハイクオリティー・ハイコストな描画技法へ」という動機のひとつです.要するに「これ以上 CPU リソース配分を増やしてもらえそうにない」という視点で何をするべきか,ですね.
似たような話は,GbE に対応した NIC が従来通りのバッファサイズで割り込み発生させると,数 100 Mbps のスループットでは割り込み回数が増えすぎて CPU が悲鳴を上げるなんていう話もあります google:割り込み加減率.サウンド周りでも,低レイテンシは高 CPU 負荷と隣り合わせです.

では何故このASIOがDTM用として広がったのか?一番の理由は“レイテンシー(遅延)を低くできる”から。一般的にMMEは100msec以上、DirectSoundで50msec以上のレイテンシーがあると言われている。流石にこれだけあると、例えばパソコンでソフトシンセを動かした場合、キーボードを押してから実際音が出るまで明らかに遅れてしまう。しかしASIOを使うと普通で10msec以下、低いものだと1msec以下のレイテンシーしか発生しない。なるほど、DTMで流行るのも納得。