富士ソフト Android プラットフォーム向けグラフィックス・アクセラ

デザイン・ソリューション:
お客様の成功事例
富士ソフト Android プラットフォーム向け
グラフィックス・アクセラレーション・
ソリューション
姫野 呂裕
富士ソフト社
エンベデッドプロダクト事業推進部課長
プロジェクト:Android SoC
Android プラットフォームは、Linux OS をベースに、豊富なユー
デザイン・チーム:
富士ソフト社は、FPGA ベースのハードウェアとソフ
ザー・インタフェースと通信ライブラリを使用することができ、高
性能システムを開発することができるターンキー環境として、エン
ベデッド・システム開発者の注目を集めています。
トウェア・スタックのパッケージングにより、エンベ
デッド・デザインの最適なソリューション提供に豊
富な経験を持つ設計サービスの SI ベンダーおよび
しかし、多くのエンベデッド・システム開発者は、Android にあま
IP プロバイダーです。
りなじみがないため、プラットフォームをサポートするためのハー
ドウェア・コンポーネントの購入や独自ハードウェアの構築に不安
課題:
を感じている方が多く存在します。富士ソフト社は、そのような方々
Android プラットフォームを採用したエンベデッド・
に向けて Android プラットフォームをオールインパッケージとして
システムは、Android ユーザー・インタフェースの
提供しています。
グラフィックス・アクセラレーションが必要になるこ
とがよくありますが、ほとんどのエンベデッド・ハー
ドウェアは滑らかな描画に必要な性能を備えていま
富士ソフト社で提供する Android プラットフォームには、アルテラ
せん。
SoC 上で Android をス ムーズ に 動 作させるた め に 必 要 なグラ
ソリューション:
富士ソフト社は、FPGA をベースに、Android に必
要な特定のアクセラレーションを行うコンパクトで低
消費電力のグラフィックス・エンジンを開発しました。
詳細は以下を参照ください。
富士ソフト・ウェブサイト:
www.fsi.co.jp/solution/android/
E-mail: [email protected]
アルテラ・ウェブサイト:
www.altera.co.jp/devices/processor/
soc-fpga/cyclone-v-soc/cyclone-v-soc.html
フィックス・アクセラレータ IP コア、それに加え、アルテラの BSP
か ら の Linux カ ー ネ ル 上 で 動 作 す る 標 準 オ ー プ ン・ソ ー ス
Android OS バージョン 4.0.4 ICS を含む Android プラットフォーム
を提供しています。
デ ザ イ ン ・ ソ リュ ー ショ ン
OCTOBER 2015
FPGA ユーザーは、アルテラ SoC 上で動作する Android プラットフォームを一式提供されたとしても、あまりなじみ
がないプラットフォームであることから不安を抱く方が多いかと思います。富士ソフト社では、完全なハードウェア/
ソフトウェア・デザインだけでなく、必要に応じて OS サポート・サービスを提供することも可能です ( 図 1)。この
富士ソフト社が提供する Android プラットフォームがあれば、グラフィックス・アクセラレータ、Android プラットフォー
ム、および OS サポートという、デザイン・チームがアルテラ SoC を使用して Android ベースの製品を開発するの
に必要な要素をすべて手に入れることができ、スムーズに開発をスタートすることが可能です。もちろん、富士ソフ
ト社では、ユーザーの細かなニーズに柔軟に対応して、フルシステム・デザイン・サービスといったカスタマイズ
開発に対応することも可能です。
図 1:Android スタック
アプリケーション
アプリケーション
アプリケーション
フル・デザイン・サービス
アプリケーション、ミドルウェア、OS、
ドライバ、ボード、FPGA、IP
ミドルウェア
Android PF と
アルテラ SoC 用ドライバ
Open Source 4.0 OS、
FSI PF ドライバ
Android
Linux
Android および
Linux OS サポート・サービス
ドライバ
グラフィックス・アクセラレータ
IP コアおよびドライバ
グラフィック・アクセラレータ
制御ドライバ
グラフィック・
アクセラレータ
IP
HPS
FPGA
アルテラ SoC
フルカスタマイズおよびデザイン・サービス
2
デ ザ イ ン ・ ソ リュ ー ショ ン
OCTOBER 2015
デザインの課題
Android は、ワールドワイドで使用されるスマートフォン・オペレーティング・システムの No.1 となっています。スマー
トフォンやタブレット用の最も一般的な OS であり続ける一方で、他のエンベデッド・デバイスや産業機器での採用
も進んでいますが、エンベデッド・システム設計者が高性能 CPU を採用することはコスト高やデバイスの入手性な
どに起因して採用されることは稀なケースです。エンベデッドでよく使用される性能の CPU を使用して Android プ
ラットフォームを実装すると Android ソフトウェアの描画処理部がボトルネックとなり、スマートフォンのような快適
なユーザー・エクスペリエンスにはなりません。
移動、回転、スケーリング ( 拡大縮小 ) などの描画機能が Android ソフトウェア内部で動作しており、
この部分がスムー
ズに動作してこそ快適なユーザー・インタフェースが提供されるのです。しかし、アルテラ SoC に搭載されている高
性能な ARM® CPU コアで動作させたとしても、CPU 単体では吸収しきれない程のソフトウェア処理負荷がかかり、
UI の操作がぎくしゃくしたり、もたついたりしてしまいます。
そのソリューションとして必要なものがハードウェア・グラフィックス・アクセラレータです。しかし、Android 向け
のグラフィックス・アクセラレーションを搭載した現行の SoC はスマートフォンをターゲットにしており、エンベデッド・
アプリケーションではコスト、性能、消費電力など様々な要素でアンマッチとなっています。
デザイン・ソリューション
この課題に対する富士ソフト社のソリューションは、Android グラフィックス専用のアクセラレーションを FPGA に実
装する手法です。最も CPU を消費する機能、つまり最も高負荷な Android ソフトウェア処理である描画処理機能を、
FPGA ファブリック部に一部オフロードし、快適に動作する Android プラットフォームを実現したのです。これはた
だ単に FPGA ファブリック部にオフロードするだけでなく、アルテラ SoC 内の ARM CPU コアとロジック・ファブリッ
ク間で最適な「分業」
をすることが重要でした。この結果として、ユーザー・インタフェースは滑らかで自然な動きと
なり、アプリケーション・コードの実行速度が向上し、処理のボトルネックが緩和されたのです。
図 2:アクセラレーションの対象とするグラフィックス機能の選択
テスト環境:マルチタッチ VEEK (P013) ‒ 800x400
性能
アルファ・ブレンディング
画像回転
拡大縮小
fps
CPU 使用率
合計
グラフィック・アクセラレータあり
55 fps
Android 描画
19 %
グラフィック・アクセラレータなし
33 fps
Android 描画
49 %
Android 描画はアプリケーション・レイヤとユーザー・インタラクションを指しており、
Linux および Android システムは含んでいません。
サイズ
レイヤ・ミキシング
2DGE
LE
ALM
SRAM
5500
2400
262 K ビット (1024 ビット x 32 ビット x 8 行 )
+
DSP 18 ビット x 38
3
OCTOBER 2015
デ ザ イ ン ・ ソ リュ ー ショ ン
図 2 に示すように、
この IP はアルファ・ブレンディング、画像回転、
スケーリング、
レイヤ・ミキシングという 4 つの最
も高負荷な Android 描画機能をアルテラ SoC の FPGA ファブリックで処理します。
その結果として、fps ( フレーム/
秒 ) 性能の向上と同時に、CPU 使用率の低減を達成しています。
動作原理
アプリケーションの描画を開始する時点から、Android によってアプリケーションを LCD に出力可能になる時点まで
の処理フローについて、
以下に解説します。
すべてのアプリケーションは、
それぞれの画像レンダリング・バッファ上で画像をレンダリングします。
その際、図 3 に
示すように、Android の標準では、OpenGL® ES などの API を介して、画像レンダリング・ソフトウェア・ライブラリが
使用されます。
図 3:グラフィックス・アクセラレータ IP コアの動作理論
アプリケーション・プロセス 1
アプリケーション・プロセス 2
アプリケーション・プロセス 3
アプリケーション・プロセス X
アプリケーション 1
アプリケーション 2
アプリケーション 3
アプリケーション X
ソフトウェア描画ライブラリ (OpenGL ES1.0、Skia など )
アプリケーション
画像レンダリング・
バッファ 1
アプリケーション
画像レンダリング・
バッファ 2
アプリケーション
画像レンダリング・
バッファ 3
アプリケーション
画像レンダリング・
バッファ X
画像処理
すべてのアプリケーションは、
ソフトウェア・ライブラリ
(OpenGL ES など ) を
使用して、アプリケーションの
画像レンダリング・
バッファ上で 3D 画像
レンダリングなどを実行
ソフトウェア描画ライブラリ (OpenGL ES1.0)
ポイント 1
ポイント 3
ソフトウェア・ライブラリ
グラフィックス・アクセラレータ
画像合成バッファ
画像合成バッファ
ソフトウェア描画ライブラリ (OpenGL ES1.4)
ポイント 2
アプリケーションの
画像レンダリング・
バッファから
画像合成バッファに
データをブレンド
ポイント 4
ソフトウェア・ライブラリ
グラフィックス・アクセラレータ
LCD 出力バッファ
LCD 出力バッファ
画像合成バッファから
LCD 出力バッファに
データを転送
従来のソフトウェア・ライブラリの使用シーケンス
グラフィックス・アクセラレータによって高速化されたシーケンス
4
OCTOBER 2015
デ ザ イ ン ・ ソ リュ ー ショ ン
次に、Surface Flinger 機能により、
アプリケーションの画像レンダリング・バッファに書き込まれた複数のレイヤがブ
レンド ( 重ねあわせ ) されますが、
この動作は OpenGL ES API を介して画像レンダリング・ソフトウェア・ライブラリ
を使用しながら、画像合成バッファにレイヤがブレンドされることで、1 つのフレームが作成されます ( 図 3 のポイン
ト 1 を参照 )。
この時点で、
アルファ・ブレンディング、
スケーリング ( 拡大縮小 )、
レイヤ・ミキシングなどの多くの Android 描画機
能に必要とされる非常に高負荷な処理を通常は ARM CPU のみで実行しなければなりません。
これによってボトル
ネックが生じ、Android ユーザー・エクスペリエンスが損なわれてしまうのです。
最後に、画像合成バッファでブレンドされた画像が LCD 出力バッファに転送されます。最終的な LCD 画像は、図 3 の
ポイント 2 で、API EGL と呼ばれる標準 Android 画像レンダリング・ソフトウェア・ライブラリを介して送られます。
グラフィックス・アクセラレータを実装すると、最も高負荷な Android 描画機能 ( アルファ・ブレンディング、
スケーリ
ング、
レイヤ・ミキシング、回転 ) は ARM CPU からオフロードされ、FPGA ファブリック内で処理され前述のポイント 1
および 2 で生じるボトルネックが緩和されます ( 図 3 のポイント 3 および 4 を参照 )。
図 3 のポイント 3 および 4 の赤い線は、ARM CPU が FPGA 内部のアクセラレータによって補完されて改善された
Android 描画処理を示しています。
この結果、
フレーム・レート処理性能が向上し、
スマートフォン並みのユーザー・
エクスペリエンスが実現します。
図 4:アクセラレータのブロック図
Avalon-MM
スレーブ
DRAM
ホスト・
インタフェース
Avalon-MM
スレーブ
CPU
スケーラ
ミキサ
Avalon-MM
スレーブ
メモリ
DMA
制御
DRAM
DRAM
5
デ ザ イ ン ・ ソ リュ ー ショ ン
OCTOBER 2015
図 4 に示すように、
アクセラレータの実際の実装では、ARM システム・バスから FPGA ファブリックへの広帯域幅接
続を利用します。ARM コアと FPGA ファブリック間の画像処理データ・フローとセットアップ/制御フローを処理する
ために、
それぞれ 3 つの Memory-Mapped インタフェース (2 つはバス・マスタ・インタフェース、1 つはスレーブ・
インタフェース ) を使用しています。
結果
富士ソフト社は、
アルテラ Cyclone® V SoC 開発キットと互換 Terasic 社のマルチタッチ LCD モジュールに加え、
スト
レージとして 4 G バイト ( 以上 ) の MicroSD カードを使用して、
アルテラ Cyclone V SoC FPGA にグラフィックス・ア
クセラレータと Android プラットフォームを実装しました。実装したソフトウェア・プラットフォームは、Android 4.0.4
(ICS)、Linus カーネル 3.7.0、および U-boot バージョン 2012.10 で構成されています。
このシステムでパフォーマンスを測定した結果が以下となります。
Android 用
Android 用
グラフィックス・アクセラレータあり
グラフィックス・アクセラレータなし
19.0
48.8
55
33
CPU 使用率 (%)
フレーム・レート (fps)
これらのパフォーマンス結果から、ARM CPU が実際に大幅にオフロードされていることがわかります。また、デバ
イスとのユーザー・インタラクションにより、ユーザー・インタフェース操作時にスマートフォンと同等のユーザー・
エクスペリエンスが得られることも確認されています。
この FPGA ファブリックへの特定グラフィックス・プリミティブの実装は、Android ホスト CPU とアクセラレータ間の
超広帯域幅・低レイテンシ接続の重要性と、エンベデッド環境におけるハードウェア・アクセラレーションの実装手
段としてのプログラマブル・ロジックの価値を物語っています。
〒163-1332
東京都新宿区西新宿6-5-1
新宿アイランドタワー32F 私書箱1594号
TEL. 03-3340-9480 FAX. 03-3340-9487
www.altera.co.jp
E-mail: [email protected]
Altera Corporation
101 Innovation Drive, San Jose, CA 95134 USA
www.altera.com
本資料に掲載されている内容は、製品の仕様の変更等により予告なく変更される可能性があります。最新の情報はアルテラ・ウェブサイトをご参照ください。
© 2015 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, ENPIRION, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera
Corporation and registered in the U.S. Patent and Trademark Office and are trademarks or registered trademarks in other countries. All other words and logos identified as trademarks or service marks
are the property of their respective holders as described at www.altera.com/legal.
DS-1000/JP