FC2ブログ

鈴の音情報局blog

携帯関連の将来や最新の技術情報や業界の行く末などを適当に綴るblogです。 内容の信憑性は?余り信じない方がいいと思います。
本家の鈴の音情報局はこちら→http://suzusuzu.dip.jp:8800/
スマホ・携帯端末アクセス[ランキング][アクセスシェア(グラフ)] (毎年10/1にログをクリア)

FGOの動作が遅いネタが今回はストレージがUFSでなければ遅いということに・・・私はそれ以外の要素も大いに理由としてあると思います

先日の記事のコメ欄でネタになったFGOのロード時間問題。
これ、だいぶ前からこのブログで何度か扱っていますよね。
結局はシングルコアしか使っていないということで落ち着きました。

そこに先日透過して頂いたコレ。

AndroidでFGOのローディング時間が長すぎてつらい問題は端末買い換えるより他ない ~ つんどくダイアリー
 iPhoneが圧倒的すぎてつらい。

 正直申し上げますとはじめからAndriodのみでプレイしていたので全く気がついていませんでした。

 今はLenovo Phab2 Proを使用していますが、ローディング時間が長いこと以外はそう不便を感じていなかったところも見落としていた一因になるかもしれません。

ぶっちゃけ、FGOの速度差が圧倒的だという話ですが、それがストレージの差だという結果で結んでおりました。


いや、まあそれも間違いではないですけどね。
でもストレージの差だけってのは違います。
断じて違います。
ここにシングルコアのデコードが絡んでくるんですよ。

Unityを利用したゲームは、シーンを移る時に次のゲームシナリオをロードしてシナリオを移動して
ゲームを進めていきます。戦闘なら戦闘シナリオ、イベントならそのイベントシーンごとのシナリオ。

それぞれがシナリオコードや2Dの画像や動画、3Dのデータやテクスチャ等、圧縮パックされたものを
ロードして移行してい行きます。そのロードがAndroidでは長いのです。

そのブログ記事ではそれを単純にストレージ性能の差と書いているのですよ。
申し訳ないが、それだけが原因と考えると現実を見失います。


記事ではFGOを高速に遊びたいなら、UFSを搭載した端末を買えとのことです。
それ自体は上手く正解を導き出しています。
何故ならUFSを搭載している端末は、ハイエンドプロセッサを積んでいる可能性が高い。
なので偶然ではなく、必然的にストレージ性能だけでなく処理性能も高い。
一応政界には導いているのですけど、でも同じハイエンドならより高速なものを買いたいですよね。

とりあえずSnapdragon 845を搭載している端末なら問題ないんじゃないですかね。
私もXperia XZ1C(SO-02K)でFGOがそれまでの端末での動きが嘘のように快適になりました。
古いですが手持ちのiPhone 5sよりも速いですし、うちの中ではXZ1CでのFGOが一番高速です。
私の経験からSnapdragon 835&UFSストレージ以上ならまあ問題ない性能で遊べると思っています。

UFSストレージを搭載していれば、後はプロセッサ勝負ですからね。
ストレージだけでなく、プロセッサ選びも大事です。


でもね、Unityもマルチコアをきちんと使えるようになってきているのですから、FGOがAndroidの
プログラムを書きなおせば一番早いのです。

Android版のFGOは32bit版として動作しています、一方iPhoneは64bit版。
32bitと64bitではデータの種類によっては全く性能は変わりませんが、大型のデータを一気に展開
するような使い方だと、転送部ではバス幅が広い64bitが有利な場面が多いです。

シナリオデータの圧縮の展開ではどうかと思いますが、これも倍の幅で圧縮データを処理できますから、
恐らくは64bitのレジスタやバスが有効に働いていると思います。
そこにシングルコアが強力なアップルAプロセッサが功を奏してこの大きな差を生んでいると私は考えています。。
そんなわけで、ストレージ外でも大きな差が生まれているのです。
端末側要因と併せて、FGOのゲーム側要因も含めて。

なので、FGOのゲーム側を書き換えれば、Android版ももっと高速化すると思います。


そこにちょっとばかりいいニュースが。

Androidアプリ、2019年8月に64bit対応を義務化。2018年にはOreo以降をターゲット化へ ~ engadget
Googleが、2019年8月までにAndroidアプリの64bit対応を義務化する方針を発表しました。その時点で32bitアプリのサポートを打ち切るわけではないものの、アプリは必ず64bitをサポートしなければなりません。

Androidのアプリは基本32bitアプリを基準としています。
32bitのアプリでも、LLVMを介してネイティブコード化する過程で64bitコードを吐くことはできます。
しかしアプリの内部的には32bitで動作していれば、余り高速化しないものも有るのです。
特に大量のデータ処理や転送が絡むものは64bitネイティブコード化の効果は薄いです。

そこでアプリの64bit化が必要になってきます。
Androidのアプリ自体が64bitに対応すれば、ぐんと高速化するゲームも出てくると思います。
FGOのような、Androidの端末の性能の1/5~1/10程度と、ほんの一部だけで動作しているような
ゲームはかなり高速化させられる可能性を秘めています。


当該記事の「ストレージ性能を測ってみる」の所。
Androidの数字はまあいいとしましょう。

問題はiPhoneの数字。
RAMで異常な数字が出ていますよね。

これ恐らくRAMではなくキャッシュの性能を測ってるんですよ。
キャッシュに乗り切ってしまえば、異常な数字が出てしまいます。
キャッシュに乗りきらないサイズになった瞬間に、本来のRAMの数字が出ると思います。

恐らくiOS版のFGOはこのCPUキャッシュが有効に働いている所もあるのではと思います。
Aプロセッサは途中から、キャッシュに依存する設計に変更され、それが功を奏して高速化しました。

iPhone 6s / 2GB
Apple A9 (1.85GHz)
L1  64.0KB + 64.0KB
L2  3.00MB

iPhone 7 / 2GB
Apple A10 Fusion (2.34GHz)
L1  64.0KB + 64.0KB
L2  3.00MB

iPhone 8 / 2GB
Apple A11 Bionic (2.39GHz)
L1  32.0KB + 32.0KB
L2  8.00MB

iPhone XS / 4GB
Apple A12 Bionic (2.49GHz)
L1  32.0KB + 32.0KB
L2  8.00MB

AプロセッサはA11から突然L2が鬼のように強力なL2キャッシュを搭載するようになりました。
このL2キャッシュがかなり効いている。A11/12プロセッサのシングルコアが強力な理由の
一つがこの暴力的なまでのL2キャッシュの容量と言えるでしょう。

私はFGOのシナリオロードが高速なのも、動画などのエンコードが高速なのも、このキャッシュが
効いているせいだと思っています。ストレージは確かに高速な方がいいですが、余程大きなデータでも
なければ、極端に遅いストレージではない限り、そこまで極端に数字に表れるとは私は思っていません。


今時のSnapdragonも確認しておきます。(なかなかきっちりした資料が無いので誤りがある可能性あり)
アップルのAプロセッサが、どれだけキャッシュ命で設計されているのかが分かると思います。

Snapdragon 835 (2.45GHz + 1.9GHz)
 L1  32KB + 32KB /1コア         (L1全コア合計512KB)
 L2  512KB /B1コア + 256KB /L1コア  (L2全コア合計3MB)

Snapdragon 845 (2.8GHz + 1.8GHz)
 L1  32KB + 32KB /1コア         (L1全コア合計512KB)
 L2  256KB /B1コア + 128KB /L1コア  (L2全コア合計1.5MB)
 L3  2.0MB (全コアで共用)

Snapdragon 710 (2.2GHz + 1.7GHz)
 L1  32KB + 32KB /1コア        (L1全コア合計512KB)
 L2  0.25MB + 0.128MB          (L2全コア合計1.28MB)
 L3  1.0MB



またストレージはiPhoneはPC系と同じNVMeを搭載しています。
速い代わりに電力を食う。
なのでiPhoneにはNVMeそのままではなく、サブセットを利用しているという話もあります。

Androidはモバイル用に開発されたUFSを利用。
別にUFSに限る必要はなく、NVMeを搭載してもそれはメーカーの自由なんですが、
やはり電力のことを考えるとUFSを採用するのが一番スマートです。

安価な端末は安価なeMMCが使われます。
これは既に各プロセッサには必ずと言っていいほどeMMCコントローラーが搭載されている上に、
eMMCのメモリ自体がものすごく値下がりして安くなっているからです。

その点UFSは、Snapdragonなら835以降と、かなりハイエンドのプロセッサでなければコントローラーが搭載されていません。
なのでUFS搭載の端末を選ぶと必然的にハイエンドのプロセッサを選ぶことになります。
今はミドルレベルまでUFSが落ちてきているかもしれません、基本的にはハイエンドの端末から採用されていきました。




思うにストレージの速度が問題なら、キャッシュを組めばいいのではと思ってみたりします。
最近のAndroidのスマートホンは、ミドルハイ以上なら、4GB以上というのが普通です。
でも4GBも使い切ることは余りありませんし、6GBやら8GBやらもう何に使うの変わらなかいような端末さえあります。

ならば、1GB~3GB位なら、ストレージキャッシュを組んで入れてみたらストレージ性能が
超高速化するのではないでしょうか。

基本高速化するのはランダムアクセスになると思いますが、ランダムアクセスはマルチタスクである以上、
細かく頻繁にあるのでマルチタスクに強いAndroid端末と、ストレージキャッシュは相性がいいのではと思います。

シーケンシャルリードやライトには余り効果は出ませんが、並行してシステムがストレージにアクセスを
ちょこちょことしていますので、シーケンシャルリード・ライトにも多少の効果はあると思います。
データ部分だけじゃなくて、管理部分は常にキャッシュヒットしますしね。
それだけでもキャッシュの効果は大きいと思います。


しかしストレージキャッシュなんて個人で後で入れるには、rootを取っていないと出来ません。
なので事実上はメーカーか、Googleしか入れることはできないだろうと思います。
私個人はGoogleがAndroidのカーネルに含んでおいて欲しいなと思います。
容量は0~4GB位まで対応していれば当面は十分でしょう。

ライトバックキャッシュにすると、突然の再起動などがあるなら怖いですが、
Androidは今はもうそんなことはまず無く、安定していますので、ライトバックキャッシュでも
十分安全に運用できると思います。


そんなわけでFGOのネタを中心に、結局色々書いてしまいました。

関連記事
  1. 2018/09/21(金) 02:06:24|
  2. 携帯
  3. | トラックバック:0
  4. | コメント:3
| ホーム | iPhone XS / XS Max / XR、一部以外は静かで本当に新型発表したのかって程・・・私なりの今回の見解も>>

コメント

>鈴さん
>シナリオコードや2Dの画像や動画、3Dのデータやテクスチャ等、圧縮パック
これ全部CPUでやるんでしょうか?
FGOの仕様は知りませんが、表面的に見ると大半がGPUやコプロセッサの仕事に見えます。
  1. URL |
  2. 2018/09/21(金) 07:20:23 |
  3. GMS #3XH2/Kw.
  4. [ 編集]

カセットテープでのロード経験車からすると、数十秒間待ちでも駄目なんて贅沢じゃのぉ
時代の流れは凄いですなぁ
  1. URL |
  2. 2018/09/22(土) 06:55:42 |
  3. 老爺 #-
  4. [ 編集]

結局は汎用機(Andoroid)と専用機(iphone)の差でしょ
両方使っていますがゲームするならiphone一択です
  1. URL |
  2. 2018/09/23(日) 09:42:12 |
  3. gogogo #-
  4. [ 編集]

コメントの投稿(投稿時には必ず何らかの名前を付けてください)


管理者にだけ表示を許可する

(名前を入れないとクリックできません)

トラックバック

トラックバックURLはこちら
http://suzunonejh.blog15.fc2.com/tb.php/7505-68818466
この記事にトラックバックする(FC2ブログユーザー)

最近の記事

機能リンク

最近のコメント

カテゴリー

ブログ内検索

ブログリンク

RSSフィード

QRコード

QR

月別アーカイブ



メールフォーム

お問い合わせ・ご質問はこちらから。

名前:
メール:
件名:
本文:

suzunone.m(あっと)gmail.com に
直メでもOKです。