目次
ESP32-C3
Wi-FiとBluetoothを内蔵した最新ESP32マイコンESP32-C3には、低コストなRISC-Vプロセッサが搭載されています。本稿では、ベンチマーク評価を行い、従来のTensilica Xtensaプロセッサを搭載したESP32やESP8266とのパフォーマンス比較結果について紹介します。
搭載プロセッサ
比較に使用した各ESPマイコンに搭載されているMPUの概要を以下に示します。ESP32-C3は、シングルコアで、FPUなし、最大周波数160MHzの点で、プロセッサとしては、ESP8266に近い仕様です(RAMは2.5倍に増量。)
マイコン | Bit | MPUコア | 数 | FPU | 周波数 | RAM |
ESP32-C3 | 32 | RISC-V | 1 | – | 160 MHz | 400 KB |
ESP8266 | 32 | Tensilica Xtensa LX106 | 1 | – | 160 MHz | 160 KB |
ESP32 | 32 | Tensilica Xtensa LX6 | 2 | 〇 | 240 MHz | 520 KB |
機能面では、GPIOは22チャンネル※、ADC(12ビット)が6チャンネル、Bluetooth(LE)が5.0対応、AES-128/256, RSA暗号化アクセラレータ搭載など、ESP32に迫る仕様となっています。
※(2021/7/3追記)最近のマイコンの中では少ない方です。パラレル接続のLCDを使用する場合は、8ビットまたは16ビットで接続する必要があります(ビット数が少ないと表示速度が低下する)。
使用したハードウェア
ESP32-C3チップを開発したEspressif System純正の開発ボードESP32-C3-DevKitM-1を使用しました。写真右側にある通信モジュールは ESP32-C3-MINI-1 というモデルで、内部にESP32-C3チップやフラッシュメモリが実装されています。他にも、ESP-WROOM-02と同じ形状のESP32-C3-WROOM-02の開発が進めれられいます。なお、入手したハードウェアは、電波法に関わる工事設計認証が取得できていないので、電波を送信することは出来ません。
搭載されているチップの情報は「Chip is unknown ESP32-C3 (revision 3)」、チップIDは「no Chip ID」と表示されました。モジュール内に内蔵されているフラッシュメモリのサイズは4MBでした。
$ ./esptool.py chip_id esptool.py v3.2-dev Found 1 serial ports Serial port /dev/ttyS2 Detecting chip type… ESP32-C3 Chip is unknown ESP32-C3 (revision 3) Features: Wi-Fi Crystal is 40MHz MAC: 7c:df:a1:xx:xx:xx Warning: ESP32-C3 has no Chip ID. Reading MAC instead. $ ./esptool.py flash_id Manufacturer: 20 Device: 4016 Detected flash size: 4MB
パフォーマンス測定の方法
測定には、ChrisMicro氏が公開しているArduino 用ベンチマークテストソフトArduino Benchmark All Platforms を使用しました。測定回数やウォッチドック・タイマの設定を追加したソースコードを下記に公開しました。
ソースコード(Arduino用):
https://bokunimo.net/git/esp32c3/tree/master/benchmark
なお、執筆時点では、通常(リリース版)のESP32のArduino IDE用 ボードマネージャesp32 by Espressif Systemsでは、ESP32-C3に対応していません。本稿では、開発途上版のバージョン2.0.0-alpha 1を使用しました。
開発版ボードマネージャは、下記のGitHub上のJSONファイルを使用します。ただし、執筆時点ではESP32-C3に対応していない古いesptool 3.0.0がインストールされ、動作しませんでしたので、esptool 3.2-devに変更してESP32-C3に書き込みました。
ボードマネージャ設定:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
最新のインストール方法は、下記のリンク先の情報をご覧ください。
GitHub - espressif/arduino-esp32: Arduino core for the ESP32
https://github.com/espressif/arduino-esp32
(2021/06/27時点の情報)
ESP32-S2 and ESP32-C3 Support
If you want to test ESP32-S2 and/or ESP32-C3 through the board manager, please use the development release link: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
and install the latest 2.0.0 version.
比較結果
結論としては、ESP8266に近い値でした。浮動小数点数演算器(FPU)を搭載していない点で、ESP32よりも劣ります。
6/30追記:FPUを使わない整数演算(Dhrystone)についてはESP32に近い値でした(ほぼクロックの差)。
ESP32-C3 | ESP8266 | ESP32 | |
Whetstone (M WIPS) | 11.56 | 13.68 | 323.62 |
Dhrystone (DMIPS) | 172.35 | 96.26 | 250.82 |
4th order float IIR (Meg/s) | 0.082 | 0.126 | 4.267 |
digitalWrite (Meg/s) | 2.86 | 2.14 | 7.88 |
analogRead (kilo/s) | 20.69 | 12.26 | 15.88 |
Whetstone
演算能力(浮動小数点数)を比較するときによく用いられる方式での比較です。単位はM WIPSで、高いほど速いことを示します。ESP32と比べて、大差で劣っていることが分かります。
Dhrystone (6/30追加)
整数演算も確認してみました。こうみると、ややESP32に近いです。
ESP32 : 250.82 DMIPS
ESP32C3 : 172.35 DMIPS
ESP8266 : 96.26 DMIPS
GPIO (digitalWrite/analogRead)
汎用マイコンでよく使われるGPIO制御についてのパフォーマンス比較です。デジタル出力(Arduino命令digitalWrite)とアナログ入力(analogRead)を測定しました。
演算能力ほどの差は無く、アナログ入力については、ややESP32を上回りました。
汎用マイコンとしての能力については、何ら問題は無いでしょう。
結論
ESP32-C3はESP32シリーズではありますが、プロセッサのパフォーマンスとしては、ESP8266の後継のような位置づけであることが分かりました。とはいえ、RAMの容量拡大や、GPIOは22チャンネル(ESP8266は17)、ADCが12ビット(同10)・6チャンネル(同1)、Bluetooth搭載(同なし)、暗号化アクセラレータ搭載(同なし)など、ESP32に迫る充実ぶりで、機能面に不足は感じないでしょう。
なお、本稿で説明した測定結果は、特定のチップを使用し、特定の条件条件下での1サンプルでの値です。個体差、今後のバージョンアップ、測定条件などで変化する場合があります。
関連記事
ESP8266+ESP32 アーカイブ – ボクにもわかる電子工作のブログ (bokunimo.net)
by bokunimo.net
「RSIC-Vを搭載した 最新 ESP32-C3 のベンチマーク評価」への2件の返信
[…] RSIC-Vを搭載した 最新 ESP32-C3 のベンチマーク評価 RISC-V搭載 ESP32-C3 Deep Sleep 時の消費電流を実測 RISC-V搭載ESP32ボード上の WS2812で手間のかかるLチカ […]
[…] RSIC-Vを搭載した 最新 ESP32-C3 のベンチマーク評価 RISC-V搭載ESP32ボード上の WS2812で手間のかかるLチカ […]