ARM GPUセミナー初級編

ARMで行われたGPUセミナー初級編をtsudaってみた。
6
kinneko @kinneko

前半は来なくて正解だったかも。> @himamura #armjp

2013-04-19 14:01:03
kinneko @kinneko

#armjp 3Dの移動計算は、行列演算+浮動小数点演算が必要。CPUではしんどい。GPUが必要。テクスチャを入れるにもGPUが速い。

2013-04-19 14:19:28
kinneko @kinneko

まだテクスチャマッピング… どこまでやるのだろう。#armjp

2013-04-19 14:21:16
kinneko @kinneko

#armjp 簡略化した3Dグラフィックの演算パイプライン。三角形をTransformStage->ラスタライゼーションステージして、3Dイメージができる。

2013-04-19 14:25:20
kinneko @kinneko

しかし、4k円のデバイスにも、普通にリアルタイム演算できるGPUが乗っているとか、80年代には想像だにできなかったねぇ。CPUで位置画面に一晩とかだったな。EWSならもちょっと早かったけど。

2013-04-19 14:26:50
kinneko @kinneko

#armjp 基本的なデータフロー図。CPUが移動判定をしてGPUに渡す。GPUはジオメトリコアで移動点を生成、終わったものからピクセルシェーダが三角形を作り、フレームバッファに入れる。

2013-04-19 14:29:05
kinneko @kinneko

#armjp OpenGL/ESの一連の処理。先ほどと同じ。移動座標計算後、ラスタライズで色塗り、バラバラのものを戻す、Color, Depth, Stencil処理をしてフレームバッファにデータを出す。

2013-04-19 14:31:34
kinneko @kinneko

#armjp だし方には2つ。イミディエイト(NVIDIA,DMP,正統派)とタイル(ARMとイマジネーション)。どちらもいいことがある。アングリーバードでタイルの状態を見るデモ。イミディエイトは走査線のような格好。わかりやすいが性能が必要。タイルはGPUにビデオメモリがたくさん

2013-04-19 14:34:04
kinneko @kinneko

#armjp メモリ負荷や帯域で、バースト長は小さいほうがいいという最適化がタイル。割り込みが入ったときに処理が簡単。途中で止めるペナルティを小さく。GPUを途中で止められる。GPGPUでは効いてくる。

2013-04-19 14:36:49
kinneko @kinneko

アングリーバードでオブジェクト動いているものだけわかるように出しているデモ、面白い。#armjp

2013-04-19 14:37:34
kinneko @kinneko

#armjp タイルベースでは、動かない部分は更新しない。フレームバッファは前のまま。更新部分だけ再描画。メモリ帯域が軽い。割り込みに強い。イミディエイトではこうはいかない。でも、ゲイトが多くなる。直接GPUを操作するときにはパフォーマンス測定が状況依存。一長一短。

2013-04-19 14:40:34
kinneko @kinneko

#armjp 2k,4kになってくると、全画面の塗り替えには結構なスピードが必要。タイルのほうが有利かもしれない。

2013-04-19 14:41:26
kinneko @kinneko

#armjp Mali GPUのデータフロー図。CPU,RAM,GPU。GPU内にはジオメトリプロセッサと、ピクセルプロセッサ、L2キャッシュがある。発狂したくなるくらいメモリアクセスがある。UIだけなのにCPUもGPUもバリバリ動く。

2013-04-19 14:45:36
kinneko @kinneko

#armjp 各社が進めているのは、PCはメモリがたくさんあるが、組込みではメモリ帯域をどれくらい細くできるのか挑戦中。バスがネック。どこでどう解消するのか?CPU L2をCPUがスヌーピング。タイルリストはL2に入らないのでRAMに。テクスチャはバーストで太い帯域使う。圧縮。

2013-04-19 14:48:27
kinneko @kinneko

#armjp デファクトのテクスチャフォーマットがあるが圧縮。フレームバッファへのアクセスは一画面あたりでは常に同じ。ARMはフレームバッファに入れるものも圧縮。スマホ・タブレットのお客から強い要望がある。

2013-04-19 14:49:42
kinneko @kinneko

#armjp ジオメトリプロセッサ(GP)とピクセルプロセッサ(PP)。OpenGLでは演算の順番が移動と頂点、塗りがパイプライン。GPUもパイプラインになっている。GP/PPはL2共有してパイプライン化。OpenGL逆縛り。効率よく動くように。独自の構成は取りにくい。

2013-04-19 14:52:45
kinneko @kinneko

#armjp だいたいどこも同じようになって、差別化ができなくなってきている。どこがいいと聞かれても、ARMの安心感ですかねとしか言えなくなってきた。メモリ帯域減らすとか、簡単に描かけるツールチェインがセールスポイントに。

2013-04-19 14:54:29
kinneko @kinneko

#armjp Mali400は、この図がそのままはいっている。GPはバス帯域が軽い。メモリアクセスが重いPPの数が性能を決める。720なら各1で。2-4kだとPPが4-8、4-8kだとPPが8-16必要。他社はARMよりピクセルシェーダが大きいこともある。

2013-04-19 14:56:58
kinneko @kinneko

#armjp GL/ES2.0の複数のテクスチャマップの合成の例。

2013-04-19 14:58:57
kinneko @kinneko

#armjp まとめ。3Dグラフィックスは難しくない。説明したような難しいことは、ツールがやってくれる。OpenGL/ES2.0が主流になりつつあります。ツールも対応している。おわり。

2013-04-19 15:00:34
kinneko @kinneko

最後の15分くらいは面白かったかな。#armjp

2013-04-19 15:00:44
kinneko @kinneko

後半はハンドアウトない。#armjp

2013-04-19 15:01:27
kinneko @kinneko

#armjp 後半。デモにタブレットを回覧。超解像デモ。480x270を1920まで。シンセシスで作ったGPGPUを使ったデモ。Androidの標準のスムーサーとの比較も。

2013-04-19 15:22:57
kinneko @kinneko

#armjp 前半では3Dグラフィックの作り方、GPUを使った話をした。後半は、もう少し具体的に、選定のファクタ、パラメータの回答や懸念点。まずは、GPGPUについて。

2013-04-19 15:24:33
kinneko @kinneko

#armjp 別のパイプラインに演算だけをジェネラルに実行するものを追加。その分サイズは大きくなる。ARMもIPでやったが、そんなに売れないと思っていた。Mali T-604 MP4が意表をついて使われだした。chrome book, Nexus10, Arndale Board

2013-04-19 15:27:10