新旧Android 4機種のNEON対応
(2011-04-14 一部修正)
samurai-appsでは、今年に入ってAndroid開発機を一気に増強し、次の4台になりました。
- NTTドコモ HT-03A (HTC Magic)
- イーモバイル PocketWiFi S (Huawei IDEOS U8150)
- NTTドコモ Xperia arc SO-01C (Sony Ericsson)
- Motorola Xoom WiFi
今後これらを駆使してプラットフォーム対応の向上を目指して参ります。
各機の違いをみるため、次期Tegraでは搭載されるという噂もあるARM版SIMD命令”NEON”について調べてみました。
NEONを使うと演算主体のルーチンを劇的に高速化できることがあります。NEON命令を使うにはC/C++でネイティブライブラリを作成し、アプリからJNI (Java Native Interface) を使ってライブラリを呼び出します。ARMv7以上でかつNEON対応のCPUが必要で、機種ごとに対応・非対応を調べてルーチンを切り替える必要がありでしょう。
NEON対応状況を、Android NDK r5bに付属のHelloNeonアプリを使って対応を調べてみました。
さらに、各機の基本的情報およびtDpiInfoで調べたディスプレイスペックも併せて紹介します。
| 機種名 | NTT docomo HT-03A |
EMOBILE PocketWiFi S |
NTT docomo Xperia arc SO-01C |
Xoom |
|---|---|---|---|---|
| メーカー | HTC | Huawei | Sony Ericsson | Motorola |
| OS Version | 1.6 | 2.2 | 2.3.2 | 3.0.1 |
| CPU | Qualcomm MSM7200A →see |
Qualcomm MSM7201A →see |
Qualcomm Snapdragon MSM8255 →see |
NVIDIA Tegra 2 250 →see |
| Clock | 384MHz *1 | 528MHz | 1000MHz | 1000MHz (Dual Core) |
| ARMv7 or later | No | No | Yes | Yes |
| NEON | No | No | Yes | No |
| Height [px] | 480 | 320 | 854 | 800 |
| Width [px] | 320 | 240 | 480 | 1280 |
| Density | 1.0 | 0.75 | 1.5 | 1.0 |
| Xdpi [px] | 180.62193 | 160.42105 | 234.46153 | 149.82489 |
| Ydpi [px] | 181.96814 | 159.37254 | 233.24301 | 149.41176 |
*1: スペック上は528MHz動作可能なCPUですが、384MHzで駆動されています。
動作速度は、HT-03AとPocket WiFi Sのグループ、Xperia arcとXoomのグループの2つでは別次元です。Xoomは最も解像度が高いですが、最も高速に動作する印象です。Dual CoreとGPUが効いているのでしょう。Xperia arcも操作感は滑らかで、どちらも素晴らしいです。前者のグループは遅く、解像度も低いですが、開発時の速度チューニング用に使っています。
開発の観点からは、DPIの違いにも注目です。
DPIは160px/inchを標準としてDensity=1.0と定められており、ディスプレイの仕様・物理的サイズに応じて各機固有の値を持っています。ただ、Densityは0.25刻みでまるめられるようで、Densityが1.0でも物理サイズが小さいHT-03Aは180dpiと高くなっていますし、ディスプレイの大きなXoomは逆に149dpiと低くなっています。Xperia arcは、Densityが1.5と高くなっています。そのため、グラフィックスを表示する場合は1.5倍に拡大しないと視覚的には非常に小さく表示されてしまいます。
# なお、ChartExpertにはこの問題があり、現在鋭意対応作業中です:P
NEON対応については、samurai-appsの所有する中ではXperia arcだけという結果になりました。アプリ開発でNEONを前提とするにはまだまだ注意が必要と言えそうです。
(2011-04-14 追記)
ほかの機種についても、知人の協力を得て調べてみました。
| 機種名 | NTT docomo MEDIAS N-04C |
NTT docomo REGZA Phone T-01C |
au IS03 |
|---|---|---|---|
| メーカー | NECカシオ | 富士通東芝 | SHARP |
| OS Version | 2.2.1 | 2.1-update1 | 2.1-update1 |
| CPU | Qualcomm Snapdragon MSM7230 →see |
Qualcomm Snapdragon QSD8250 →see |
Qualcomm Snapdragon QSD8650 →see |
| Clock | 800MHz | 1000MHz | 1000MHz |
| ARMv7 or later | Yes | Yes | Yes |
| NEON | Yes | Yes | Yes |
| Height [px] | 854 | 854 | 960 |
| Width [px] | 480 | 480 | 640 |
| Density | 1.5 | 1.5 | 2.0 |
| Xdpi [px] | 160.42105 | 160.42105 | 331.7551 |
| Ydpi [px] | 159.49706 | 159.49706 | 334.0274 |
IS03の解像度の高さが際立ちます。
MEDIASとREGZA Phoneのディスプレイスペックはよく似ています。ただし、Densityが1.5で240dpiのはずなのに、XdpiとYdpiが160前後の値になっているのが気になります。
NEONについては、Snapdragon搭載機はすべて対応でした。ここ1年の携帯電話ならば問題ないでしょう。一方、タブレットはTegra2搭載機が増えていますので、注意が必要になりそうです。
調査にご協力いただいた皆様、本当にありがとうございました!
I ran tDpiInfo v1.1.5 on a rooted LG-L45C phone running Android Gingerbread v2.3.4 and did not get the reports shown above. I was particularly interested in the CPU details, NEON status, ARM line items. Is there another version of tDpiInfo that was used or an altogether different APP that was actually used?
Hello. Thank you for reading our article.
We have thanked tDpiInfo for bringing information related to display, such as DPI, resolution, and scaling parameter.
To get NEON status, we used the HelloNeon, a sample App included in Android NDK. For details, see http://developer.android.com/sdk/ndk/overview.html#samples.
To get other CPU details, such as its model number and clock frequency, we checked manually vendor’s sites or other sites like here if a vendor does not provide details.