Archives

November 2010 の記事

ARM の浮動小数演算命令は再び混沌としてきました。
Tegra2 の Cortex-A9 では NEON 命令が使えないようです。

テストしたのは LuvPad AD100。
Tegra2 搭載でメインプロセッサは Cortex-A9 の Dual Core (MPCore)。
以前作成していた ndk のコードが動かず、build 時の neon option を外すと
動作しました。

その代わり VFP が常識的な速度で走ります。
Cortex-A8 のように極端に遅くなることもなく、Snapdragon 系 CPU や
ARM11 + VFP のように普通に VFP で浮動小数演算を行うことができそうです。

NEON を使わなければ全く速度が出なかった Cortex-A8 の方が特殊だったのかも
しれません。

           core       VFP     NEON
--------------------------------------------------------------------
各種       Cortex-A8  超低速  高速   NEONが必ず搭載されている
Snapdragon Scorpion   高速    高速   スカラーだけなら VFP の方が良い
Tegra2     Cortex-A9  高速    ---    VFP のみ (A9 の neon は option)

VFP が遅いため ARM11 時代のコードは A8 で速度が落ちることがありました。
A9 ではそのような問題は起こらないと思われます。
その代わり A8 向けに NEON 最適化したプログラムは、少なくても Tegra2 では
使えないことになります。
Snapdragon は比較的どちらのコードもそつなく走るだろうと予想できます。
ただし若干特性は違います。

これでどのプラットフォームでも高速に走るバイナリの作成が難しくなりました。

; Cortex-A9 (Tegra2)
Processor       : ARMv7 Processor rev 0 (v7l)
Features        : swp half thumb fastmult vfp edsp vfpv3 vfpv3d16


; Snapdragon (QSD8250)
Processor       : ARMv7 Processor rev 2 (v7l)
Features        : swp half thumb fastmult vfp edsp thumbee neon

参考
ARM Cortex-A9 Processor

関連エントリ
Snapdragon と浮動小数演算速度
ARM Cortex-A8 の NEON と浮動小数演算最適化
NetWalker PC-Z1 Cortex-A8 の NEON 命令とメモリ速度
SSE の浮動小数演算速度
NetWalker PC-Z1 Cortex-A8 浮動小数演算の実行速度
NetWalker PC-Z1 Atom と速度比較
Direct3D Mobile と T-01A の Snapdragon


持ち歩いて使ってみました。
予想に反して自分の中では理想に近い良くできたブラウザ機でした。

マウスコンピュータ LuvPad AD100

 NVIDIA Tegra 250 に Android OS 2.2 (Froyo) を載せた 10インチタブレット。
 Tegra2 は現在主流の ARM Cortex-A8 よりさらに新しい Cortex-A9 (1GHz) を
 2core 搭載した非常に強力な物。GPU はもちろん GeForce の流れをくむ。


●ブラウザ

ポータブルルータは UQ WiMAX URoad-5000 + UD01SS を使用。
現段階でもブラウザ専用と割りきってしまえば十分快適なことが判明。

メモリが多い、画面が大きい、速い

(1) メモリが多い

ウィンドウを多数開いても大丈夫。
iPad だと複数ひらくと切替時にリロードが発生することがあります。
LuvPad はとりあえず限界の 8枚開いても余裕でした。
8枚以上開けないのが惜しいところです。

(2) 画面が大きい

解像度が高いと拡大しなくても文字が読めますが、
画面が大きいと拡大しなくてもリンクをタッチできます。
スマートフォンより Tablet が優れてると思ったのはこの点。

(3) 速い

ブラウザのレスポンスが高速です。
加速センサーのちょっとした揺れに追従して水平に置いたときは激しく向きが
切り替わることがあります。画面の回転に全くもたつきが無いため。


問題点

・なぜかブラウザだけマルチタッチ出来ない

 他のソフトでは 2点まで使えています。
 画面が大きいので拡縮する頻度が少ないのが幸い。

・液晶が見づらい

 視野角が狭く画面を縦にすると見づらい。

・ちょっと重い

 でもプラスチックで若干厚みがあるせいか iPad ほどずっしりした感触はない。


●電源

結構持ちます。
スリープしても左下のバッテリーと Wi-Fi LED が点灯したままなので心配に
なりますが、一晩経っても全く減っていなかったので大丈夫そうです。

スリープからは瞬時に復帰しますが、電源を切ってからの起動も速いです。
実測で 20秒で起動しています。


●まとめ

昨日はじめて触った感想では、操作性やアプリの無さ、安定度などいまいちな
印象でしたがブラウザに関しては気に入りました。

逆に現状まだアプリを入れておらず、ブラウザしか使い道がないとも言えます。
洗練度はまだまだだけど、隠れた潜在能力の一端は見ることが出来ました。


●その他

・RAM 空間は 448MB。残りの 64MB は VRAM?
・カーネルは SMP。本当に CPU はマルチコアらしい。
・Adreno (旧ATI) 系と違って頂点テクスチャなし

NVIDIA Tegra2

pshader constant = 1024
vshader constant = 256
vshader input    = 16
vshader output   = 15
pshader texture  = 16
vshader texture  = 0
max texture size = 2048

Compress Format
83f0   GL_COMPRESSED_RGB_S3TC_DXT1_EXT
83f1   GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
83f2   GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
83f3   GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
8c70   GL_COMPRESSED_LUMINANCE_LATC1_EXT
8c71   GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT
8c72   GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT
8c73   GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT
8d64   GL_ETC1_RGB8_OES

GL_NV_platform_binary 
GL_OES_rgb8_rgba8 
GL_OES_fbo_render_mipmap 
GL_NV_depth_nonlinear 
GL_NV_draw_path
GL_OES_EGL_image
GL_OES_vertex_half_float
GL_NV_framebuffer_vertex_attrib_array
GL_NV_coverage_sample
GL_OES_mapbuffer
GL_ARB_draw_buffers
GL_EXT_Cg_shader
GL_EXT_packed_float
GL_OES_texture_half_float
GL_OES_texture_float
GL_EXT_texture_array
GL_OES_compressed_ETC1_RGB8_texture
GL_EXT_texture_compression_latc
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_s3tc
GL_EXT_texture_filter_anisotropic
GL_NV_get_tex_image
GL_NV_read_buffer
GL_NV_shader_framebuffer_fetch
GL_NV_fbo_color_attachments
GL_EXT_bgra
GL_EXT_texture_format_BGRA8888
GL_NV_unpack_subimage 


Tegra2 GPU と Cortex-A9 を試す時間がほしい。


関連エントリ
マウスコンピュータ LuvPad AD100


Android Tablet の LuvPad AD100 来ました。
12月に延期になったとか言われてすっかり諦めていただけにうれしい誤算でした。
ちなみに 9月中旬頃 PCDEPOT で予約です。

LuvPad AD100

これで Tegra2 の GPU と Cortex-A9 を試す環境が出来ました。
でも時間がなくてほとんど試す余裕が無いのがつらいところ。


内蔵アプリも少なくマーケットアプリも無いので、ある程度使えるよう環境を
作っていく必要がありそうです。

普段 HTC Desire X06HT を使っているため Android の操作方法は慣れている
つもりでしたが、携帯電話として作りこまれた Desire とは結構違いがあります。
開発者向けの素の状態にかなり近いです。

たまに待たされたりタッチしたはずが反応しないことがあって、スムーズな
操作という点では現状 Desire の方が上と感じました。

液晶は視野角が狭く角度によって見え方が大きく変わります。
そのため縦位置では左右の視差による違いが気になるかもしれません。
基本は横画面で使う端末だと思ったほうが良さそうです。


DevTools が入っておりターミナルもあるのですがソフトキーボードからの
入力がうまくいきません。
その代わり ES File Explorer というソフトが入っており、これを使って
フォルダ内を自由に見ることができます。

スペックにはフラッシュ容量は 8GB と書かれていますが、設定画面の
「SDカードと端末容量」を見ると SDカード相当が 12GB 、本体容量が
1.74GB と表示されています。
micro SD スロットには何もいれていないので、これがおそらく内蔵している
フラッシュ容量だと思われます。

手持ちの micro SD は再起動したら /sdcard2 にマウントされていました。

同じ Tegra2 の dynabook AZ について書かれたこちらのページを参考にして
android_winusb.inf を書き換えたら ADB でつながるようになりました。

Android PC のdynabook AZを使ってみるブログ (GreenTea2010 さん)

あとはキーボードがつながってくれると良いのですが。


DDR3 4GB がおよそ 5000円、3枚セットで 15000円で手に入ると聞いたので
メモリ増設してみました。
もともと 6GB だったので 4GBx3 = 12GB を足して合計 18GB。

6GB でも特に不自由していなかったので
すごい速くなった~というような感動は全く無いです。

HDD → SSD なら確実に高速化ですが、
RAM 増設の効果は高速化でなく「過負荷でも遅くならない」こと。

ページファイルは切っています。
今までの仮想メモリよりも物理メモリの方が多くなったので。


起動したまま長時間放置してたアプリが
スワップアウトしないでスッと戻ってくるのがいい。

多数のアプリを起動しっぱなしのまま長時間使っていると、
使ってなかったアプリがページファイルに送られてしまうことがあります。

タスクバーのアイコンをクリックしたとき、いかにもディスクからメモリを
巻き戻していますといった感じでガリガリ言いながら VisualStudio が
ゆっくり起きてくることがありますが
そう言うのはなくなりました。


RAM は全く使い切れません。
作業時でも 3GB 程度 + キャッシュで 5GB くらい。
完全な未使用領域が 10GB 近くあります。

何日か稼動し続けてると徐々にディスクキャッシュが増えていくことはわかりました。
まだ完全にメモリを埋めたことがなく、少なくても 1日では使い切れません。

Windows 7 なら余っていても、ディスクキャッシュで有効に使ってくれるだろう
とか漠然と考えていたのは甘かったです。


とりあえず経験したことがない広大なメモリなので、
どうやって使いこなすか考える楽しみがあります。
でもきっと数年後にはそんな小さな容量、とか思うのでしょう。