-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
性能目標未達(M5Stack) #17
Comments
PSG を削除し、VDP の レンダリング処理をスキップした状態(つまり、ほぼ Z80 だけ動かした状態)にしても約35ms(28/30fps)と目標達成が微妙にできていない。 PSG + VDP レンダリング は 2フレームあたり 6ms 程度(3ms程度)でそろそろ最適化余地が限界に達しつつある。 最適化余地があるとすれば Z80 エミュレーション...と、あとは esp32, FreeRTOS or M5Stack 固有のチューニング余地がある何かだが、それについても万策尽きつつあるかも。 |
esp32 のマニュアルにパフォーマンスに関する記述がある https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/performance/index.html 上記には「実行速度」「バイナリサイズ」「RAM使用方法」の3つの観点からのアドバイスが書かれている。 実行速度全体的な速度向上CONFIG_ESPTOOLPY_FLASHFREQ を80MHzに設定する
これについては既に設定されているっぽい。 #23 のログ情報に
CONFIG_ESPTOOLPY_FLASHMODEをQIOまたはQOUTモード(Quad I/O)に設定
試しに platformio.ini で、
を指定してみたが、特段動作速度に変化はなかったので既に設定済みだと思われる。 CONFIG_COMPILER_OPTIMIZATION を Optimize for performance (-O2) に設定
既に非推奨の CONFIG_ESP32_REV_MIN を 3 に設定
#23 で PSRAM は完全 OFF にしているので関係ない... 浮動小数点演算フロートの使用を避ける
倍精度浮動小数点演算倍数の使用を避ける
|
#25 にて大丈夫な感じになった |
現状 46〜48fps ぐらいの性能 |
CoreS3 では 48〜50fps ぐらいの性能(若干程度早くなった) |
ゲーム側の実装依存の部分が結構あるかも。 例えば、垂直同期割り込み待ちをする時にJPでぐるぐる回すより、HALTを発行した方がエミュ側の負荷が軽くなりそうです。HALTを発行すると、内部的にはPCのデータを読み捨てる(4Hz ※M1相当だからMSXだと5Hz?)動作をしますがPCがインクリメントされない形になるので、キャッシュミスヒット率が下がりつつ、トータルのネイティブ命令実行数が少なくなるので。 エミュサイドとしては手の入れようが無いなぁ...(垂直同期待ちかどうかを実行コードから動的に判断するのはオーバーヘッドが大きいので、やるならコードをスタティック解析して書き換える感じだが想定外のデグが起こりそうなので原則元コードはエミュ側ではイジらないスタンス) |
性能目標が未達成:
The text was updated successfully, but these errors were encountered: