お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2012/08/22 12:34

イベント

[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細

 Nintendo 3DS(以下,3DS)に採用された国産のグラフィックスIPコア(IP:Intellectual Property。LSIを作るための知的情報),「PICA200」。3DSの発売前や,発売後もしばらくの間,そのアーキテクチャや機能に関する詳細はほとんど明らかになっていなかったのだが,2011年に開催されたグラフィックスハードウェアの国際学術会議「High Performance Graphics 2011」(以下,HPG2011)でかなり突っ込んだ情報が公開されて話題を集めた。

セッションでPICA200の解説を行った大渕栄作氏(ディジタルメディアプロフェッショナル 開発部 取締役開発部長)
画像集#002のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
 CEDEC 2012の2日めに,PICA200のデベロッパであるディジタルメディアプロフェッショナル(以下,DMP)が行ったセッション「固定シェーダグラフィックスハードウェアPICA200の思考」はまさに,そんなHPG2011の発表内容を下敷きに,PICA200に関する本邦初公開の情報などを明らかにするものだった。興味深いその内容をまとめてお伝えしたいと思う。


PICA200は「テクスチャのシンセサイザー」だった?

〜プロシージャルテクスチャ機能の詳細


 さて,冒頭で,3DSの発売後もPICA200の情報はほとんど明らかになっていなかったと述べたが,実のところ,「どんな機能を持っているか」は,早い段階で公表されていた。たとえば,シェーダの一部が固定機能化され,性能と低消費電力の両立を図っているといったあたりは(関連記事),憶えている読者も少なくないだろう。

 PICA200が発表されたのは2006年のこと。もう6年も前の話になるわだけだが,「ハードウェアは開発してから採用されるまでに数年かかる」(大渕氏)という事情もあり,いまでも現役のグラフィックスIPコアである。4Gamer的にはもちろん3DS用のグラフィックスIPコア(≒GPU)という理解で正解だが,オリンパスのコンパクトデジタルカメラ「Tough TG-1」に下位モデルの「PICA200 Lite」が採用されていたり,また最近ではぱちんこ台のグラフィックス表示機能用としても採用が広がっていたりするという。

PICA200をDMPが発表したのは2006年のこと。DMP自体はその後,SMAPHという新しいグラフィックスIPコアも開発済みで,こちらも採用機器の数を増やしているところだそうだ
画像集#003のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細

 そんなPICA200に関して今回語られたのは次の4点になる。

セッションで語られた4つの内容。いずれも概要はすでに公開されていたが,CEDEC 2012ではより詳しい解説があった
画像集#004のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
  1. 頂点&ジオメトリシェーダにおけるメモリトラフィックや演算の最適化
  2. 再設定が可能なフラグメント(=ピクセル)シェーダの概要
  3. プロシージャルテクスチャの詳細
  4. これらの技術を組み込み向けにどう省電力化したか

 これらのなかでも最も興味深かったのが3.のプロシージャルテクスチャなので,まずはそこから紹介してみよう。

PICA200の技術デモとしてよく知られている「MIKAGE」(御影)
画像集#005のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
 通常,テクスチャにはビットマップを使う。それに対してPICA200では,ビットマップではなく,計算だけでテクスチャを生成するプロシージャル(procedural,計算による)テクスチャという機能を備えている。
 ビットマップに比べた利点は明らかで,たとえばテクスチャデータのメモリ消費を抑えると同時に,組み込み用途では消費電力の観点から無視できないメモリアクセスを減らせるのだ。また,演算でテクスチャを生成するため解像度の制限がなく,無限のLoD(Level of Detail)に対応できるといった利点もすぐに思いつく。

MIKAGEにおける床の木目は,まさにPICA200のプロシージャルテクスチャで生成されたものだという
画像集#006のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細

 PICA200ではプロシージャルテクスチャ機能を固定機能として持っている。シェーダプログラムで同じ機能を実装しようとすると演算の負荷が無視できなくなるが,PICA200ではグラフィックスパイプラインへの特別な負荷なしにテクスチャを生成可能だ。また,テクスチャ生成にあたってのメモリアクセスが必要ないため,原理的にグラフィックスパイプラインのストールが起こらなかったり,パラメータを変えるだけでテクスチャアニメーションを実現できたりといった利点もあると,大渕氏は述べている。

プロシージャルテクスチャはメモリアクセスが必要ないため,ストールがなく,アニメーションも実現できるといった利点があるというスライド
画像集#007のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細

 で,その固定機能部だが,まずベクトル成分UとVに対してノイズを乗せ,繰り返し(クランプ)操作を行い,最後にテクスチャの図形を入力してピクセルのカラー(テクセル値)を出力するというパイプラインになっているそうだ。

プロシージャルテクスチャのパイプライン図。「ノイズ機能」でU,Vにノイズを乗せ,「繰り返し機能」で反復させ,最後に「基本図形参照テーブル」で図形を入力して,ピクセルのカラーを出力する。繰り返しになるが,PICA200にはこのパイプラインが固定機能として実装されている
画像集#008のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細

 上のスライドで図示されているパイプラインは処理順になっているが,人間の感覚に沿って,「テクスチャの基本的な模様を決める部分」である基本図形参照テーブルから遡って話をしてみよう。
 筆者は先ほどここを「図形を入力する部分」としたが,ここでは「まず『G関数』で基本図形を出力し,その図形に『F関数』で変調をかけ,最後にカラー参照テーブルから色を取り出す」というステップになっている。

画像集#009のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
基本図形参照テーブルの詳細。3ステップからなっている
画像集#010のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
こちらは3ステップのさらなる詳細だ。G関数が基本図形を出力する関数で,F関数は図形に変調をかける関数,そして色を決めるのがカラー参照テーブルである

 G関数というのは,設定次第で横線や縦線,円,四角といった,さまざまな模様を出力できる関数だ。たとえばMIKAGEデモの木目を表現したいなら,G関数で縦線や横線を出力してやればいいというわけである。
 一方のF関数は,基本図形にカラー参照テーブルから色を乗せるときに,テーブルとの関係を決める関数だ。テーブルから単純に色を拾うだけではなく,F関数を介して乗せることで色に変化を付けられると考えればいい。

画像集#011のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
G関数で出力できる図形の例。たとえば「ADDSQRT2」を90度ずつ角度を変えて4つ出力してやれば円になる……といった具合にバリエーションも作れる
画像集#012のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
F関数は図形とカラー参照テーブルとの関係を設定する関数。このスライドは「F関数に単純な比例を与えると,テーブルの色をそのまま乗せられる」という例になる(下に続く)
画像集#013のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
(続き)なので,F関数に3角波のような関数を与えれば,カラー参照テーブルの色を途中で反復して乗せられたりする。このように,F関数の設定次第で色の乗せ方を変えられる仕組みだ

 以上のステップで図形と色が決まるわけだが,これだけだと単純な図形しか表現できない。この図形にノイズを加えて変形させ,さらにクランプ処理で反復させることによって,たとえば冒頭に出てきた木目のような絵柄を作れるというのが,プロシージャルテクスチャ機能の総合的な仕組みになる。

画像集#014のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
図形にノイズを乗せる。ある周波数で図形に変調をかけてやるようなイメージの処理だ。周波数や位相を変えることで,スライドの右端に示されているような,不規則に見える模様へ変形させる
画像集#015のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細
こちらは反復の例。図形を対称に貼ったり,反転させながら反復させつつ貼ったりする設定が可能だそうだ

 G関数で出力できる図形と,F関数やカラー参照テーブルで決まる色の変化,そしてノイズによる変形や繰り返しを使うことで,さまざまなバリエーションのテクスチャを計算だけで出力できる。これがプロシージャルテクスチャのポイントだ。さながら,基本波形にノイズなどを乗せ,変調をかけることで多彩な音を作り出すアナログシンセサイザーのテクスチャ版といったところだろうか。

 非常に興味深く,かつ面白い機能なのだが,ほかにあまり例がないので,PICA200独自機能と紹介しても差し支えない。それだけに応用は難しそうである。
 実際,大渕氏も,セッションの中で「利用するのが非常に難しい」と語っていた。「社内でも使いこなせる人は4人しかいない(笑)」そうなので,現状,実際のゲーム内で使われている例を探すのは難しいだろう。その意味で3DSは,まだそのグラフィックス性能を100%引き出せてはいないといえそうである。


電力消費を抑えつつ

多彩な機能を実装したPICA200


 残る3つの特徴も簡単に紹介しておこう。まずは1.の,頂点シェーダやジオメトリシェーダにおけるメモリトラフィックや演算の最適化からだが,PICA200は,ジオメトリを処理する固定機能「プリミティブエンジン」を使って,ポリゴンのサブディビジョン(subdivision,再分割)――Direct3D 11でいうところのテッセレーション――を実現できることが知られている。

PICA200はプリミティブエンジンを備え,テッセレーション機能を利用できる。この機能はソフトシャドウのシルエット(=影)生成やトゥーンシェーディングの輪郭などにも利用されるという。2006年にしてPICA200はDirectX 11の機能を先取りしていたといえそうだ
画像集#016のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細

 ジオメトリ処理の実装においては,頂点シェーダで演算済みの頂点情報を一時的にキャッシュする「Secondary Vertex Cache」(以下,SVC)が大きな役割を担っているとのことだ。SVCにキャッシュされた演算済みのデータは再利用できるため,メモリアクセスを低減できる。これは省電力という点でも有利になるだろう。

 さらに,「プリミティブエンジンでジオメトリ処理を行うときに可変長のプリミティブが扱える」というのもSVCの利点になると大渕氏は述べていた。それによってCatmull-Clark(カトマル・クラーク)分割やループ分割といった手法によるポリゴンの再分割を実現できているとのことだ。

ジオメトリエンジン部の実装で大きな役割を担っているのがSVCだと大渕氏。演算済みの頂点情報を再利用できるというだけでなく,SVCによって可変長のプリミティブを利用可能になり,また,ポリゴンの再分割といった高度な機能も利用できるようになると氏は説明していた
画像集#017のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細

 PICA200のジオメトリエンジン部からはテクスチャにアクセスできないため「ディスプレースメントマッピングはできないという制限はある」が,それ以外は一般的なジオメトリシェーダと同等の処理が可能だと大渕氏は説明していた。

 3.として挙がったPICA200のフラグメントシェーダ――一般的なOpenGL用語で言い換えると「ピクセルシェーダ」――は,再設定が可能な固定機能として実装されている点が特徴となっている。
 プログラマブルなシェーダが登場して10年以上が経過しているが,「使う機能(≒使うシェーダ)は大体決まってきている」(大渕氏)ため,フルプログラマブルにしなくても,「固定ハードウェアにいくつかの再設定機能を付け加えるだけで,やりたいことはほぼできてしまうのが現実」だそうだ。

 固定機能を採用することにより,PICA200におけるフラグメントシェーダのスループットは1〜4サイクルに収まるそうで,同じシェーダをプログラマブルシェーダで実行するのに比べて大幅な高速化と低消費電力化を実現したというのがポイントというわけである

同じシェーダプログラムをシェーダモデル3.0ベースのプログラマブルシェーダで実行した場合(右,「SM 3.0 asm steps」)とPICA200のフラグメントシェーダで実行した場合(中央,「Clk/frag」)とで,所要サイクル数を比較したもの。PICA200では1から4サイクルで実行できるのに対して,プログラマブルシェーダでは数十サイクルが必要になる。プログラマブルであることを捨てると,これだけのメリットを受けられるというのがDMPの主張だ
画像集#018のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細

 最後に4.として示した省電力化だが,PICA200では,回路自体を削減すると同時に,回路を可能な限りパイプライン化してクロックを低減したとのこと。さらにきめ細かなクロック制御を行っていると大渕氏は述べていた。
 最近のCPUやGPUでは,使用しない論理ブロックへのクロック供給を止める「クロックゲート」(クロックゲーティング)などによってクロックを細やかに制御することが当たり前になっているが,この技術は日本のお家芸でもあるそうで,「PICA200には日本の技術が生かされている」(大渕氏)とのことだ。

PICA200におけるクロック制御の実装。図中「G」と書かれているのがクロックゲートで,末端で制御するだけでなく,ルートに近い部分でもクロックゲート回路を入れて制御しているという
画像集#019のサムネイル/[CEDEC 2012]3DSはまだその実力を100%発揮できていない!? 3DSが搭載するGPUコア「PICA200」の詳細


DMPはグローバルイルミネーションの

固定機能化を検討中か


 以上,PICA200の概要を紹介してきたが,大渕氏はセッションの最後に,CEDEC 2012ではグローバルイルミネーション(Global Illumination,以下 GI)が注目されている点に触れ,その固定機能化について見解を述べていたのが,なかなか興味深かった。

 GIでは大局的なデータアクセス,つまりは広範囲なデータ参照が発生する。そのため固定機能化しづらいとよく言われるが,大渕氏は,「GPUに実装しやすいGIアルゴリズムほど,固定機能化もしやすい特徴がある」としていた。GPUも大局的なデータアクセスは苦手なので,GPUに実装しやすくできるなら,そのアルゴリズムは固定機能化もしやすくなるというのは,確かに納得できる話だ。

 ただ,「現時点で多数のアルゴリズムが提案されている。そのなかで,アルゴリズムを固定してしまってもいいものかどうか,議論はあると思う」(大渕氏)。固定機能としての実装は可能だが,定番のアルゴリズムが絞り込まれるまでDMPは様子を見ているというところだろうか。
 妄想を書かせてもらうなら,将来の“Nintendo DS”は,低負荷でリアルタイムなGIを実現するようになっているかもしれない。

ディジタルメディアプロフェッショナル公式Webサイト

CEDEC 2012公式Webサイト

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月21日〜11月22日