BeneDict 地球歴史館

BeneDict 地球歴史館
menu

週刊スモールトーク (第218話) プレステ4 Ⅴ~ゲーム専用CPU~

カテゴリ : 娯楽科学

2013.08.04

プレステ4 Ⅴ~ゲーム専用CPU~

■2極化するゲーム

ゲームはハードではなくソフト ・・・ 言わずと知れたゲーム業界の決まり文句だが、任天堂の成功をみればクドクド説明する必要はないだろう。

さらに ・・・

今のゲームは、強力なハードをあてこんだ美麗なCGでごまかしている。面白さの点では昔のゲームにはかなわない、と年季の入ったゲーマーはしたり顔で吹聴する。

それではと、動くかどうかもわからない初代ファミコンをひっぱりだして、昔のゲームをやってみると ・・・ 存外つまらない。

早い話が、優れたゲームソフトはハイスペックなハード、チープなハード、両方に存在するのだ。もちろん、逆も真なり。つまるところ、ベストチョイスは最良のハードで動く最良のソフト、このルールに議論の余地はないだろう。だから、ハイスペックなハードをこきおろしたり、チープなハードをもちあげたりする必要はないのだ。

時代は変わりつつある。

ファミコン時代のお気軽ゲームは、スマホ(スマートフォン)に継承され、暇つぶし、時間つぶしに落ちぶれている。一方、昔のスーパーコンピュータ並に進化した据え置き型ゲーム機は、ハリウッド映画なみの本格派エンターテインメントを量産しつつある。これが今起きているゲーム市場の二極化だ。

ところが、日本でいう「ゲームの二極化」はピントがずれている。「スマホ」と「ゲーム専用機」、つまり、プラットホームで区別しているのだ。

二極の正体は、「暇つぶし」と「本格派エンターテインメント」なのにね。

このままでは、日本のゲームメーカーはますます衰退していく。この2つの「遊び」は目的も、発想も、作り込みも、販促も違う、似て非なるモノなのだ。ところが、日本のメーカーは二兎を追い、海外のトップメーカーは「本格派エンターテインメント」にフォーカスしている。技術力に差が出るのは当然だ。実際、プレステ3やXBoxのハイエンドなゲームをプレイすると、その差は歴然 ・・・

■ソーシャルゲームは統計学

先日、東京に出張した際、知り合いがやっているゲームソフト会社に寄ってみた。この会社はファミコン時代からの老舗デベロッパーだが、今は7号業界(パチンコ・パチスロ)で食っている。プレステ3でついていけなくなったのだ。そこで、ソーシャルゲームをやらないのかと聞くと、彼(社長)は毅然として答えた。

「あんなものはやらない。俺たちはゲームの面白さを追究してきた。でもね、ソーシャルは課金の仕掛けがすべて。あれじゃ、クリエーターは育たない

そこで一息ついて、彼はこう付け加えた。

「そもそも、ゲーム業界とソーシャル業界は世代のギャップがある。俺たちは40代で、あっちは30代(社長のこと)。だから、付き合いがないし、付き合いたいとも思わない。ところで、今日お泊まりですか?よかったら、飲みに行きません?」

同じようなグチをまた一から聞かされるのは辛いので、これから金沢に帰ります、とウソをついてしまった(本当は泊まり)。

彼の口ぶりからは、自分たちが作ってきたゲームの方が上等で、ソーシャルはただの統計学、そんな意気込み?がひしひし伝わってきた。半分はソーシャルへの嫉妬だろうが、半分は真実だろう。

だから ・・・

日本のゲームメーカーがソーシャルゲームを意識しながら据え置きゲーム機のソフトを作るなら、中途半端な駄作を連発することになるだろう。あげく、開発力はみるみる落ちていく。時間つぶしと本格派エンターテインメントは別モノなのだから。中学校の演劇部に、ハリウッド映画を作らせるようなものだ(演劇をさげすんでいるわけではありません)。

そこで、プレステ4とXBox Oneを契機に、日本のゲームメーカー(パブリッシャー)も、据え置き型ゲームに本腰を入れてはどうだろう。アメリカのように、30億円かけて3年で1タイトルのペースで!

さもないと、日本のゲームメーカーは10年後には東映や日活のようになる。ご当地ゲーム(日本限定も含む)を作ったり、海外ゲームをローカライズ(日本語化)したり、そんな仕事しかなくなる。

では、ソーシャルゲームはどうか?

グリーとDeNAをブッちぎって、今や我が世の春のガンホー、その引き金となった「パズドラ」を見ていると ・・・ 「たまごっち」を思い出す。

■プレステ4 Vs XBox One

というわけで、本格派ゲーム市場では、ゲーム機のハードスペックは非常に重要だ。もちろん、ポータブルゲーム機は論外で、中途半端なWii Uもダメ、今なら、プレステ4か最低でもXBox Oneだろう。

では、今回の次世代ゲーム機のスペックはどの程度なのか?

具体的にみていこう。

まず、ゲーム機の性能を左右するのが、メイン処理を担当する「CPU」とグラフィック処理を担当する「GPU」だが、それ以外にも重要な要素がある。

たとえば、プレステ3の大作系ゲーム「バイオショック インフィニット」。ゲームロードとステージ切り替えに時間がかかり過ぎるのだ。出来が良く、没入感が深いぶん、興ざめしてしまう。

だから、データのロード時間が短くなるだけで、ゲームの品質は劇的に向上する。特に他に欠点の見あたらない優れたゲームの場合。

ちなみに、プレステ4では、ゲームロードとステージ切り替えは確実に速くなる。理由は、メモリ容量がプレステ3の「31倍」、ハードディスク容量が「6倍」にグレードアップしているから。これで速くならないはずがない。

もちろん、プレステ4は肝心のグラフィック能力も向上している。理論上は、プレステ3の「10倍」はいくだろう。

では、Xbox Oneは?

プレステ4に比べて落ちるが、半分以下ということはない(たぶん)。

というのも、ゲーム機の性能を大きく左右する「CPU」と「GPU」が、プレステ4とXbox Oneで同じなのだ。ただし、プレステ4はメモリなど細かい部分に手抜きがないので、スペック上は、
「プレステ4 > Xbox One」

じゃあ、Xbox Oneはプレステ4の劣化コピー!?

それが本当なら、同じものを作ってどうする?

じつは、これにはやむえない事情がある。

マイクロソフトはCPUのノウハウがないので、初めから”有り物”CPU。ところが、独自路線のソニーまでが”有り物”に決めたので、同じCPUになったのだ。気持ちパーフォーマンス寄りでコストパーフォーマンス最優先なら、これしかない!?

ではまず、メイン処理を担当するCPUからみていこう。

■Jaguarコア

今回、プレステ4とXbox Oneで採用されたCPUは、Windows PCとMacに搭載されている「x86」系。つまり、パソコンと同じCPU。

これは、プログラマーにとって朗報だ。パソコン、スマホ、ゲーム機、組み込み系などハードを問わず、プログラマーはパソコンで開発しているから。そのパソコンとCPUが同じなら、技術的な敷居は低くなる。とはいえ、プレステ4のCPUは、有り物そのままというわけではない。ゲーム機用にカスタマイズ(最適化)されているのだ。

両機種のCPUは相似なので、ここからは、プレステ4に絞って話を進めよう。

まず、プレステ4で採用されるCPUはAMD社製で、「APU」とよばれている。

なぜ、「CPU」ではなくて「APU」?

じつは、「APU」はメイン処理用のCPUと、グラフィック処理用のGPUがワンチップになった「融合プロセッサ」なのだ。

つまり ・・・ APU=CPU+GPU(これがワンチップに!)

まず、CPUパートだが、「Jaguar」という64ビットCPUが2基実装されている。1基の「Jaguar」は4コアからなるので、全部で8コアのCPU!パソコンでも、かなり上位に位置する。

さらに ・・・

各コアはそれぞれ、プログラム専用の「命令キャッシュ」32KBと、データ専用の「データキャッシュ」32KBを備える。これを一次キャッシュと呼んでいる。さらに、4コアで2MBの二次キャッシュを共有する。以上が、1基の「Jaguar」だ。

ところで、「キャッシュ」って?

メインメモリの「読み書き」を高速化するための特殊なメモリ。誰も気にも留めない地味な電子回路だが、じつは、コンピュータのパーフォーマンスを大きく左右する。

■キャッシュ

まず、一般論として、コンピュータのプログラムとデータはメインメモリ(記憶装置)上にある。それをCPUが読み込んで処理をするわけだ。ところが、CPUに比べ、メインメモリは非常に遅い。そのため、CPUがメインメモリを読み込む速度も遅くなる。速いものと遅いものが連携すれば、遅い方に合わされる、これはコンピュータに限った話ではないだろう。

じつは、このギャップを埋めるのが「キャッシュ」なのだ。キャッシュは高価だが、非常に高速なメモリ(記憶装置)である。

このキャッシュを、CPUとメインメモリの間に入れるのである。すると、メインメモリから読み込まれたプログラムやデータは一旦、キャッシュにコピーされ、CPUに渡される。次回、同じプログラムやデータを読み込むときは、低速のメインメモリから読む必要はない。同じものがキャッシュにあるので、キャッシュから読めばいい。結果、読み込み速度は高速なキャッシュに合わされ、劇的に速くなる。

ただし、必要なプログラムやデータがキャッシュにない場合は、改めて、メインメモリから読む必要がある。

では、なぜ、メインメモリをやめて、全部キャッシュにしないのか?

キャシュは高価だから。そのため、キャッシュの容量(大きさ)は、前述したように、32KBとか2MBとか、メインメモリ(8GB)からみれば誤差のように小さい。それに、最も高速な一次キャッシュは部品として存在するわけでない。CPUやAPUのチップ内に、他の電子回路といっしょに、シリコンの一枚岩となって形成されているのだ。

というわけで、キャッシュは高速のCPUと低速のメインメモリの間をとりもつ緩衝メモリなのである。

もちろん、必要なプログラムやデータがキャッシュになければ、低速なメインメモリから読むため、いつも高速というわけではない。とはいえ、プログラムがキャッシュに収まるほどコンパクトで、ループ(繰り返し処理)なら、すべてキャッシュで実行できる(キャッシュのヒット率100%)。その場合、プログラムは爆走モードに突入する!(暴走ではない)。

■エキサイティングなプログラミング

また、ゲームソフトには他のソフトにない難しさがある。

リアルタイム(実時間処理)であること。

具体的には ・・・

一般的に、ゲームの画面は1秒間に60フレーム更新される。それ以下だと、画面がカクカクするから。ちなみに、映画は1秒間に24コマ(フレーム)、テレビは30コマ(フレーム)である。ここで、1秒間に60フレーム更新する場合、1フレームを処理するために与えられた時間は、
1÷60=0.017秒

つまり、「0.017秒」以内に処理を一区切りつけなけれなならない。この一区切りを1ターンとよんでいる。たとえば、歴史シミュレーションゲームなら、1ターンの処理は(テキトーです)、

①戦闘中のオブジェクトの状態の更新(ダメージ・燃料・弾薬・士気etc)
②移動中のオブジェクトの位置の更新
③アニメーションの次のフレームの座標計算
④アニメーションの描画
⑤その他の処理

秒間60フレームを実現しようとすれば、上記の①~⑤の処理を0.017秒以内で終えなければならない。

ところが、「⑤その他の処理」で1秒かかったとしたら、1秒間に1フレームしか更新できない(①~④がどれだけ速くても)。この場合、画面はカクカクどころか、ほとんど「止め絵」になる。

というわけで、リアルタイム系ソフトの場合、プログラムの中で1ヶ所でも処理の重い部分があれば、そこがボトルネックになる。そこで、まず、プログラムのどの部分が足を引っ張っているか(遅いか)を特定する。

ところが、その昔、プログラマーだった頃、よく見かけたのは ・・・

「速度を落としている部分」をストップウオッチやカンで推測して改良するプログラマー。このようなやり方は、時間もかかるし、不正確だし、そもそも技術者のやることではない。

ではどうすれば良いのか?

きちんとプロファイル(分析データ)をとるのである。疑わしいプログラムの初めと終わりに、プロファイル用コードを設定すれば、そのプログラムの1ターン当たりの処理時間、全体の処理時間に占める比率を、リアルタイムで定量的に測定できる。それをみれば、どこがボトルネックか一目瞭然だ。あとは、その問題のコードを改良すればいい。その際、キャッシュのヒット率を上げるのも有効な方法だろう。

この手のプロファイラー(プロファイル用プログラム)は、自身の実行時間を最小にしなければならない。測定プログラムが時間がかかっていたのでは話にならないので。というわけで、プロファイラーは原理はカンタンなのだが、それなりに工夫がいる。ただし、一度作ればどんなプログラムでも利用できるので、使わない手はない。

話をキャッシュに戻そう。

このように、キャッシュのヒット率を考慮したプログラミングは一見面白そうだが、じつは現実的ではない。とくにパソコンのように、自分の管轄外のプログラムがウヨウヨしている場合。どんなプログラムが、どのタイミングでCPUを使うか予測不能だからだ。

たとえば ・・・

キャッシュに収まる小さなプログラムがループしていたとする。この場合、キャッシュのヒット率は100%なので爆走モード。ところが、ここで、自分の管轄外のプログラムが起動されると、キャッシュはそのプログラムで埋め尽くされ、我が愛すべきプログラムはキャッシュから放り出される。再び、自分のプログラムが起動されても、キャッシュにはないので、メインメモリから読み直しだ(キャッシュ・ミス)。

ただし、自分のプログラムしかいない専用ハードなら、キャッシュはすべてコントロールできる。つまり、極限までプログラムをカスタマイズできるわけだ。なんともエキサイティングなプログラミングではないか!

じつは、その昔、ハードとソフトを一人で作っていた頃は、みんなそうだった。本当は、ハードとソフトの機能切り分けが一番面白いのにね。あの頃は良かったなぁ ・・・ はいはい、老兵はこちらへ、ただ消え去るのみ。

マニアックな話になってきたので、この話題はここでおしまい。

■SIMDの高速化

さらに、3Dゲームでは、アニメーションする度に、オブジェクトを構成するポリゴンの頂点座標を再計算する必要がある。そのため、「4×4の行列」の計算が煩雑に発生する。もちろん、座標はすべて少数なので、行列の要素もすべて小数だ。そこで、「4×4」個の小数を一撃で(並列で)計算できれば、3Dグラフィックは劇的に速くなる。

そこで ・・・

プレステ4のJagarコアは「SIMD浮動小数点演算ユニット」を内蔵している。しかも、データバスが64ビットから128ビットへ拡張された。データの受け渡し回数が半分になるので、処理速度も上がる(2倍というわけではない)。ただし、2013年中にリリースされる「Mac Pro」はこのデータ幅が256ビットになるという(さらに2倍!)。もっとも、「Mac Pro」はパソコン最上位のワークステーションなので、比較するのもヘンな話だが。

というわけで、プレステ4はやるべきことはやっている(予算の許す限り)。

たしかに、CPUは有り物だが、ハイエンドのパソコンなみだし、ゲーム機用にカスタマイズもされている。しかも、低消費電力&低発熱!今流行のエコまで取り込んでいる。さらに、CPUとGPUがワンチップなので、占有面積も少なくてすむし、製造コストも安上がり。

つまり ・・・

そこそこパーフォーマンスが高く、値段も安く、環境に優しい ・・・ そのベストチョイスが「Jagar」コアだったのだ。プレステ4とXbox Oneが、同じ有り物CPUになった理由はここにある。

《つづく》

by R.B

関連情報