ESP32でマンデルブロ集合を表示、ATmega328と速度を比較
6月24日の記事で、ESP8266を使ってマンデルブロ集合を0.96インチOLEDに表示させましたが、同じことをESP32でやってみました。一番の目的はどれくらい速くなるか確認することです。
プログラムはこちら、20200701MandelblotAtESP32.ino(ESP32の仕様に合わせLEDピンをD2に変更しています)
▼回路図

配線はたったこれだけ。
▼ESP32で実行中

ガニ股ブレッドボードを使ったのでコンパクトに配線出来ました。
結果はもの凄く速くなりました。以下にその様子を紹介します。
ATmega328に対してどれくらい速くなったか、1画面(128x64画素)を計算する時間で比較したのが次のグラフです。

これは同じ画面を計算するのに要した時間をATmega328とESP32で比較したもので、横軸がESP32、縦軸がATmega328の実行時間です。ちなみにマンデルブロ集合の計算時間はその計算する座標によって大幅に変わるので、実行時間はこのグラフのように大きく変化します。
グラフの傾きは52.088となりました。つまり、ESP32の方がATmega328より52倍速いということで、これは凄いです。
前の記事と同じようにオシロを使って1回の計算時間を比較してみました。計算中はLED(青色)を点灯させているので、ここの波形を見ています。なお、信号はかなり速いのでうちの安いオシロ(DSO-SHELL)では測定出来ないので、400MHzのアナログオシロで測定しています。
・ATmega328

波形がHighになっている期間が計算中で、その時間は約70μsでした。
ESP32

計算時間は1.4μsになっています。実行時間の比較で52倍速くなっていたので当然ですが、こうやって波形を見るとその速度が実感できます。
ちなみにこの1.4μsの間に32ビットの浮動小数点の掛け算を6回、足し算(引き算)を4回やっています。ESP32には浮動小数点演算機能(FPU)があるのでこれが威力を発揮しているのだと思います。
◆まとめ
ATmega328との速度比較で、ESP8266は6.7倍速かったのですが、ESP32は52倍速いということが判りました。これだけ速いとCPUパワーが必要になる応用でも使い易いでしょうね。今だと機械学習が旬なのでしょうが、個人的にはFFTをやってみたいです。
あと、ESP32はM5StackのCPUとして使われていますが、なるほど、これだけのCPUパワーがあれば使ってみたくなるのもうなずけます。
◆動画
ESP32
全部通常撮影です。
ATmega328
後半はタイムラプスの高速撮影になっています。また、画像の表示回数やズーム比が異なっていますが、マンデルブロ集合の観察位置は同じです。
プログラムはこちら、20200701MandelblotAtESP32.ino(ESP32の仕様に合わせLEDピンをD2に変更しています)
▼回路図

配線はたったこれだけ。
▼ESP32で実行中

ガニ股ブレッドボードを使ったのでコンパクトに配線出来ました。
結果はもの凄く速くなりました。以下にその様子を紹介します。
ATmega328に対してどれくらい速くなったか、1画面(128x64画素)を計算する時間で比較したのが次のグラフです。

これは同じ画面を計算するのに要した時間をATmega328とESP32で比較したもので、横軸がESP32、縦軸がATmega328の実行時間です。ちなみにマンデルブロ集合の計算時間はその計算する座標によって大幅に変わるので、実行時間はこのグラフのように大きく変化します。
グラフの傾きは52.088となりました。つまり、ESP32の方がATmega328より52倍速いということで、これは凄いです。
前の記事と同じようにオシロを使って1回の計算時間を比較してみました。計算中はLED(青色)を点灯させているので、ここの波形を見ています。なお、信号はかなり速いのでうちの安いオシロ(DSO-SHELL)では測定出来ないので、400MHzのアナログオシロで測定しています。
・ATmega328

波形がHighになっている期間が計算中で、その時間は約70μsでした。
ESP32

計算時間は1.4μsになっています。実行時間の比較で52倍速くなっていたので当然ですが、こうやって波形を見るとその速度が実感できます。
ちなみにこの1.4μsの間に32ビットの浮動小数点の掛け算を6回、足し算(引き算)を4回やっています。ESP32には浮動小数点演算機能(FPU)があるのでこれが威力を発揮しているのだと思います。
◆まとめ
ATmega328との速度比較で、ESP8266は6.7倍速かったのですが、ESP32は52倍速いということが判りました。これだけ速いとCPUパワーが必要になる応用でも使い易いでしょうね。今だと機械学習が旬なのでしょうが、個人的にはFFTをやってみたいです。
あと、ESP32はM5StackのCPUとして使われていますが、なるほど、これだけのCPUパワーがあれば使ってみたくなるのもうなずけます。
◆動画
ESP32
全部通常撮影です。
ATmega328
後半はタイムラプスの高速撮影になっています。また、画像の表示回数やズーム比が異なっていますが、マンデルブロ集合の観察位置は同じです。
- 関連記事
-
- ESP32のアナログリード特性の確認
- ESP32を使ったマンデルブロ集合ビュワーの製作
- ESP32でマンデルブロ集合を表示、ATmega328と速度を比較
- ESP32(ESP-WROOM-32)を使う (書き込み回路の改造)
- ESP32 (ESP-WROOM-32) を使う (ブレッドボードの準備)