ニュース
[COMPUTEX 2006#11]効果物理アクセラレーションはRadeon X1000が本命? ATI,“Radeon 3枚差しHavok FX”の詳細を公開
2006/06/09 23:22
 COMPUTEX TAIPEI 2006の期間中,会場に隣接するホテル「Grand Hyatt Taipei」では,ATI Technologies(以下ATI)がプライベートブースを開設。CrossFire動作する2枚のRadeon X1900でグラフィックスレンダリングを行い,残る1枚を物理シミュレーションに専念させる動作デモを披露していた。
 そう,これはCOMPUTEX TAIPEI 2006のレポート#02でお伝えしている,Intel基調講演で公開された「Havok FX」のデモシステムだ。

■あらためて確認するHavok FXの仕組み

 「Havok FX」は,Havokの物理シミュレーションミドルウェア「Havok 4 SDK」に統合される「効果物理(Effects Physics)」のサブシステムである……というのは,レポートしたとおり。
 このHavok FXによって実現される効果物理を,GeForce 6/7シリーズのGPU(グラフィックスチップ)でアクセラレートする仕組みは,GDC 2006でNVIDIAが発表済みだ。今回発表されたのはそのATI版とでもいうべきもので,Radeon X1000シリーズを利用して,アクセラレーションを行う。

 Havok FXで取り扱う物理シミュレーションは,主に剛体(Rigid Body)同士の衝突のことを指しており,柔体(Soft Body)や流体(Fluid)の物理処理については,剛体物理に異方性処理やパラメトリック処理を介入させることにより,擬似的に模倣するアプローチを採っている。

 さて,この剛体の衝突物理の処理で負荷がかかるのは,登場する剛体同士の相互衝突判定と,衝突後の挙動の更新だ。
 Havok FXでは,こうした処理をGPUのピクセルレンダリングパイプラインに流し込んで処理する。さらに細かくいえば,衝突する可能性を秘めているオブシェクトのペアを見つける処理と,衝突処理の結果(次にどの方向に向かうか,速度や加速度はどう変化するか)を反映する処理を,ピクセルレンダリングパイプラインで実行しているのだ。
 実際の「何と何が衝突したか」という判定と,それにまつわる処理系はHavok FXにおいてもCPUで処理されている。GPUで100%処理されるわけではない。
 ちなみに,この「CPU側に戻される」ことは必ずしもデメリットばかりではない。ゲーム進行に関わる“親”物理ともいうべき物理処理「ゲームプレイ物理」(Game Play Physics)を介入させられることにもつながる。

■「効果物理のアクセラレーションはRadeon X1000シリーズのほうがGeForceより有利」

 さて,ATIのロシア担当広報で,物理シミュレーションに詳しいNick Radovskiy(ニック・ラドフスキー)氏は「効果物理のアクセラレーションでは,NVIDIAのGeForceシリーズよりもRadeon X1000シリーズのほうが優れている」と切り出すところから,プレゼンテーションを開始した。


Nick Radovskiy氏(PR representative, Russia and CIS, ATI)
 前述した,衝突ペアを見つける処理系において欠かせないのが条件分岐処理だ。条件分岐とは,簡単にいえば「処理が分岐するプログラムの流れ」のことで,プロセッサの処理系としては面倒な部類になる。物理シミュレーションでは,例えば「衝突しているか,していないか」で処理を分ける必要があるから,条件分岐処理が頻発しやすい。
 この処理系において,各ピクセルシェーダユニットに専属の分岐ユニットを実装するRadeon X1000シリーズのアーキテクチャは有利に働くと,Radovskiy氏はいう。

ピクセルシェーダユニットの条件分岐処理の比較。左がNVIDIA,右がATI
 Radeon X1000シリーズでは,条件分岐が発生すると,専属の分岐ユニットが分岐先を即座に実行させる。また,Radeon X1000シリーズが持つ分岐処理ユニットの動作で特徴的なのは,「ある2スレッドの衝突処理の結果が別々の異なる分岐先となり,さらにそこで異なる演算器を活用している場合,この2スレッドを同時に実行させられる」という点だ。
 具体的に説明すると「衝突スレッドA」の分岐結果が「衝突後の処理」に進み,「衝突スレッドB」の分岐結果が「衝突しなかった場合の処理」に進んだとき,Radeon X1000シリーズでは並列実行が可能なのだ。ちなみにRadeon X1000シリーズでは,衝突スレッドは1ピクセルシェーダユニット当たり16スレッドを処理する。これはもちろん,Radeon X1000シリーズのピクセルレンダリングパイプラインが4×4ピクセルの処理をひとかたまりとしていることから来ている。このあたりの仕組みについての詳細は,筆者の連載でRadeon X1800やRadeon X1900シリーズについて解説した回を参照してほしい。

 これに対して,GeForce 6/7シリーズのピクセルシェーダユニットには専属の分岐ユニットがないため,分岐時にレイテンシが発生する。さらに分岐先の同時実行もできないので,分岐処理時のオーバーヘッドが大きくなるという。
 また,単純にトップエンドで比較すれば,GeForce 7900 GTX/GTのピクセルシェーダユニットが24基なのに対し,Radeon X1900 XTX/XTは48基であり,単純な数の比較でもRadeon X1000シリーズが有利とのことだ。

■Radeon X1000シリーズの物理シミュレーション処理能力

Radeon X1600 XTでもPhysX PPUの2倍,Radeon X1900 XTXなら9倍の物理シミュレーション処理性能があるとするスライド
 Radeon X1000シリーズで物理アクセラレーションが利く条件は,物理シミュレーションエンジンにHavok 4.0を採用し,さらにHavok FXを利用したアプリケーションだ。Havok FXはGeForce 6/7シリーズにも対応しているため,ユーザーは,Radeon X1000シリーズとGeForce 6/7シリーズの両方で物理アクセラレーションを利用できる。
 ATIの実験によれば,単位時間あたりに行える球状衝突判定量で比較すると,Radeon X1600 XTには,AGEIA Technologies製物理演算チップ「PhysX PPU」の2倍の処理性能があると判明しているとのことだ。Havok FXは効果物理のアクセラレーションだけなので,ゲームプレイ物理のアクセラレーションまでが行えるPhysX PPUが劣っているという短絡的な判断はできないが,このデータを信じるなら,効果物理に関していえば,Radeon X1600 XTで必要十分なパフォーマンスが得られることになる。


左から点対点,球状対球状,メッシュモデル対メッシュモデル,四面体対四面体。それぞれ,単位時間あたりの衝突処理量をG70(GeForce )を100%として換算したパフォーマンスグラフ。はっきりいって,比較になっていない
 Radovskiy氏は続けて,GeForce 6/7シリーズと比較しても,Radeon X1000シリーズの性能が圧倒的に高いというデータを示した。右がそのスライドだが,Radeon X1900 XT(R580)では驚きの12倍以上。Radeon X1800 XT(R520)はもちろんのこと,Radeon X1600 XT(RV530)ですらGeForce 7900 GTX(G71)やGeForce 7800 GTX(G70)の4倍を超える性能というのは,かなり衝撃的だ。

 Radeon X1000シリーズが強力な物理シミュレーション処理能力を持っていることを踏まえて,プライベートブースでRadeon X1000シリーズを3枚差したシステムを展示,披露したというわけである。

 展示されていたシステムは,2パターン。一つは,Intel 975X Expressチップセットを搭載し,PCI Express x16スロットを3本用意したIntel製マザーボード「D975XBX」を利用し,Radeon X1900 XTを3枚差し(正確にはRadeon X1900 XTが2枚と,Radeon X1900 CrossFire Editionが1枚)したシステムだ。このシステムでは,2枚がCrossFire動作し,1枚がHavok FXの動作に専念する仕様になっていた。
 ただし,各PCI Express x16スロットに割り当てられるレーン数には制限があり,このデモにおいては,CrossFireの2枚が各8レーン,Havok FX専任の1枚は4レーン接続になっているという。

 もう一つは「効果物理のアクセラレーションなら必要十分」とされた,Radeon X1600 XTを利用したデモだ。
 こちらは,Intel製CPU用チップセットとなる,未発表のチップセット「RD600」(開発コードネーム)ベースのマザーボードを使用。いずれも16レーンで動作する,2本のPCI Express x16スロットにRadeon X1900 CrossFire EditionとRadeon X1900 XTカードを差してCrossFire動作させ,2枚の間にあるPCI Express x1スロットに,Radeon X1600 XTを差すという構成だ。Radeon X1600 XTは,x1→x16のスロット変換アダプタを挟み込んで,半ば強引に差している。

 スロット幅をPCI Express x16にしたところで,伝送は1レーンで行われるため,素直にPCI Express x1仕様のRadeon X1600 XTカードを差すほうがスマートだが,そういったデザインのカードがないため,このような形のデモになったのだという。Radovskiy氏いわく,「変換アダプタを実際に発売する計画はない」とのことで「あくまでコンセプトの展示」ということらしい。


左:Radeon X1900 XTの3枚差しは,Intel 975X Express搭載マザーボードによって実現されていた
中央:(見ても言われなければそうだとは分からないのだが)RD600チップセットで,3枚差しシステムが動作している様子。
右:2枚のRadeon X1900 XTに挟まれた格好のRadeon X1600 XTが,少し手前にはみ出しているように見えるのは,変換アダプタを介しているためだ


 ちなみに同氏は,2個のGPUでグラフィックスレンダリング,1個のGPUで物理アクセラレーションを行うシステムを「2+1」,1個のGPUでグラフィックス,1個のGPUで物理を行わせるシステムを「1+1」と表現。このように,GPUに異なる仕事を行わせるシステムを「非対称コンフィグレーション(Asymmetrical Configurations)」と呼称した。
 なお,1+1はともかく,2+1システムに関しては,どのような形でユーザーに提供するかの方針はまったく決まっていないとのこと。現時点で2+1の3枚差しシステムは,モーターショウでいうところの「コンセプトカー展示」という位置づけと捉えたほうがいいだろう。

一方のGPUでグラフィックス,もう一方のGPUで物理シミュレーション処理。これが非対称コンフィグレーション(Asymmetrical Configurations)


 Radovskiy氏はプレゼンテーションの最後に,実際にRadeon X1900 XTの2+1システムを利用して,Havok FXのアクセラレーション性能を披露した。
 デモは15000個の岩を斜面から転がすというもので,Core 2 Duo E6700/2.66GHzによるソフトウェア処理だと平均フレームレートが6〜7fpsに留まるのに対し,この2+1システムでは,60〜70fpsをマークしていた。


左:1万5000個の岩を斜面に転がすデモ。実はこれ,Havok提供のもので,たびたびNVIDIAがHavok FXのデモで使っていたりする。そのため,インパクトは今一つ
右:デモに使われたディスプレイは,30インチサイズで,解像度2560×1600ドットのもの。衝突し合う1万5000個の岩がきめ細かく描写されているさまは圧巻


■次なるステップはゲームプレイ物理のアクセラレーションか

「GPUによる物理アクセラレーションはCPUに置き換わるものではない。GPUはCPUを補完するものである」というメッセージのスライド
 卓越した物理シミュレーション処理能力を有するGPUだが,Radovskiy氏は「いくらGPUが物理シミュレーションに優れるといっても,CPUを置き換えるものではない」ともいう。
 やはり,ゲームの進行を司るのはCPUの仕事であり,そこまではGPUが介入できるものではないからだ。

 次なるテーマはやはり,ゲーム進行やゲームロジックに関わる物理シミュレーションである「ゲームプレイ物理」を,GPUでアクセラレーションするパラダイムではないだろうか。
 この点について,Radovskiy氏は,あくまで個人的な意見であると断ったうえで,次のように述べる。
 「ゲームプレイ物理をGPUでアクセラレーションすることは十分可能だ。しかし,そうなると,ゲーム設計がGPU性能に依存してしまい,ゲームの設計そのものが難しくなる。そのため,ゲームの開発者はそうした技術を活用するのにあまり積極的にならないと思う」

 現在のHavok FXもATI用とGeForce用には別バイナリが必要であり,GPUの性能がハイエンドとバリュークラスとで異なることまで考えると,確かにゲーム進行に無関係な効果物理はスケーラビリティの面で実装が簡単だ。性能の低いGPUを利用するときは,それこそ“割れた岩の破片”を少なくすればいいだけだし,その破片は散らばるだけでゲーム進行には何の影響も及ぼさない。

 ところが,ゲームプレイ物理の場合,登場する敵や障害物の数が異なれば,ゲームのルール設定やバランス面の設計までもスケーラブルにする必要がある。これは,簡単なことではない。
 とはいえ,「ゲームプレイ物理も演算精度や演算頻度の側面でスケーラビリティを設ければ,ある程度は対応できる」と言われている。例えば,高性能なCPUを搭載するシステムにおいては,物理シミュレーションの演算頻度を毎フレーム行うが,そうでないCPUでは数フレームごとに行い,間を線形補間でつなぐという実装を行っているゲームタイトルも,現時点ですでに存在する。

 WinHEC 2006のレポートで述べたように,Windows Vista+DirectX 10.1世代では,GPUが完全に仮想化されて,システムから“自由に使えるコプロセッサ(CPUの補助をするプロセッサ)”として見えるようになる。この時代になれば,そうした実装はより実現されやすくなるだろう。
 GPUと物理演算の関係はまだ始まったばかり。今後の動向に注目していきたい。(トライゼット 西川善司)


ミドルウェア/開発ツール
■開発元:各社
■発売元:各社
■発売日:-
■価格:製品による
ATI Radeon X1900
■開発元:AMD(旧ATI Technologies)
■発売元:AMD(旧ATI Technologies)
■発売日:2006/01/24
■価格:製品による
→公式サイトは「こちら」
ATI Radeon X1600
■開発元:AMD(旧ATI Technologies)
■発売元:AMD(旧ATI Technologies)
■発売日:2005/10/05
■価格:製品による
→公式サイトは「こちら」

【この記事へのリンクはこちら】

http://www.4gamer.net/news/history/2006.06/20060609232256detail.html