Benchmarks

Zur Kennzeichnung der Rechenleistung der verschiedenen Arduinos habe ich das schon in der Vergangenheit verwendete „Sieve of Erastothenes“ als Benchmark herangezogen.

Das „Sieve of Erastothenes“ ist ein Standard-Benchmark, der verwendet wird, um die relative Geschwindigkeit von verschiedenen Computern zu bestimmen oder das Laufzeitverhalten von Code, der mit unterschiedlichen Compilern erzeugt wurde, zu vergleichen. Siehe hierzu auch https://rosettacode.org/wiki/Sieve_of_Eratosthenes.

Heute verwende ich neben diesem Benchmark vor allem Dhrystone, Wheatstone und CoreMark zum Test.

Das Dhrystone-Benchmark-Programm (http://labs.isee.biz/index.php/Dhrystone_MIPS_2.1) hat sich zu einem beliebten Benchmark für die Messung der CPU-/Compiler-Leistung entwickelt, insbesondere im Bereich Minicomputer, Workstations, PCs und Mikroprozessoren. Es erfüllt offenbar die Notwendigkeit eines einfach zu verwendenden ganzzahligen Benchmarks. Es gibt eine erste Leistungsangabe, die aussagekräftiger ist als MIPS-Zahlen, die in ihrer wörtlichen Bedeutung (Millionen Anweisungen pro Sekunde) nicht für verschiedene Befehlssätze (z. B. RISC vs. CISC) verwendet werden können. Mit der zunehmenden Verwendung des Benchmarks erschien es notwendig, den Benchmark zu überdenken und zu prüfen, ob er diese Funktion noch erfüllen kann. Version 2 von Dhrystone ist das Ergebnis einer solchen Neubewertung.

Whetstone ist ein Benchmark-Test, der versucht, die Geschwindigkeit und Effizienz zu messen, mit der ein Computer Gleitkommaoperationen ausführt. Das Testergebnis wird in Einheiten angegeben, die als KiloWhetstone pro Sekunde oder KWIPS bezeichnet werden.

Der Whetstone ist ein synthetischer Benchmark zur Messung des Verhaltens wissenschaftlicher Programme. Es enthält mehrere Module, die eine Mischung von Operationen darstellen sollen, die typischerweise in wissenschaftlichen Anwendungen ausgeführt werden. Eine Vielzahl von C-Funktionen, einschließlich sin, cos, sqrt, exp und log, werden ebenso verwendet wie mathematische Ganzzahl- und Gleitkommaoperationen, Arrayzugriffe, bedingte Verzweigungen und Prozeduraufrufe. Das Hauptziel dieses Benchmarks ist es, die Leistung sowohl der Ganzzahl- als auch der Gleitkomma-Arithmetik zu messen (http://www.keil.com/benchmarks/whetstone.asp).

IOBench ist ein einfacher Benchmark für Arduinos und kompatible Mikrocontroller. Geschrieben von Gareth Halfacree (freelance@halfacree.co.uk). Durch wiederholte digitale Read- & Write-Instruktionen wird die relative IO-Performance gemessen.

Der CoreMark® von EEMBC (https://www.eembc.org/coremark/) ist ein Benchmark, der die Leistung von Mikrocontrollern (MCUs) und Zentraleinheiten (CPUs) misst, die in eingebetteten Systemen verwendet werden. Coremark ersetzt den veralteten Dhrystone-Benchmark und enthält Implementierungen der folgenden Algorithmen: Listenverarbeitung (Suchen und Sortieren), Matrixmanipulation (allgemeine Matrixoperationen), Zustandsmaschine (Feststellen, ob ein Eingabestream gültige Zahlen enthält) und CRC (zyklische Redundanzprüfung). Es kann auf Geräten von 8-Bit-Mikrocontrollern bis zu 64-Bit-Mikroprozessoren ausgeführt werden.

8-Bit Mikrocontroller

BoardArduino UnoArduino Uno WiFi Rev 2LGT8F328P AZ-Delivery
CPUATmega328pATmega4809LGT8F328P
Clock16 MHz16 MHz32 MHz
Sieve Runtime14012 ms13375 ms6100 ms
Dhrystones/s17229.8618306.6647125.88
VAX MIPS9.8110.4226.82
Whetstone12961 ms
MIPS7.72
Coremark8.2
CoreMark/MHz0.5
IOBench Read256.47 kHz
IOBench Write155.9 kHz
IOBench Toggle109.4 kHz

32-Bit Cortex-Mx Mikrocontroller

BoardSeeeduino
XIAO
Heltec
CubeCell
Raspberry
Pi Pico
RP2040
STM32
Bluepill
Arduino DueArduino
Nano 33 BLE
STM32L412Seeeduino
Wio Terminal
Arduino
Portenta H7
Teensy 4.0
CPUSAMD21
Cortex-M0+
PS 4000S
Cortex-M0+
Cortex-M0+Cortex M3AT91SAM3X8E
Cortex-M3
nRF52840
Cortex-M4
Cortex-M4ATSAMD51P19
Cortex-M4F
STM32H747
Cortex-M7
NXP iMXRT1062
Cortex-M7
Clock48 MHz48 MHz125 MHz72 MHz84 MHz64 MHz80 MHz120 MHz480 MHz600 MHz
Sieve Runtime4857 ms1339 ms3867 ms220 ms104 ms
Dhrystones/s41589.9344982.14134727.8078638.39
VAX MIPS23.6725.676.6844.76
Whetstone45105 ms618 ms12888 ms1999 ms59 ms
MIPS2.2216.627.7650.031694.92
Coremark56.4754.49136.7389.1994.95106.37143.48211.491132.572313.57
CoreMark/MHz1.21.1351.091.2391.11.6621.7931.7622.363.9
IOBench Read1241.88 kHz650.41 kHz
IOBench Write861.87 kHz419.51 kHz
IOBench Toggle227.3 kHz

32-Bit ESP Mikrocontroller

BoardLeduinaESPduino-32ESP32-S2-Saola-1MESP32-C3
CPUESP8266EXESP-WROOM-32ESP32-S2-WROVER ESP32-C3-DevKitM-1
RV32IMC
Clock80 MHz240 MHz240 MHz160 MHz
Sieve Runtime2189 ms805 ms632 ms1746 ms
Dhrystones/s%308997.7388089.23302811.73
VAX MIPS%175.87220.88172.35
Whetstone%744 ms1883 ms8662 ms
MIPS%134.4152.1311.54
Coremark%336.36451.57400 *)
253.69
CoreMark/MHz%1.41.882.5 *)
1.59
IOBench Read%5359.1 kHz%
IOBench Write%7468.48 kHz%
IOBench Toggle200 kHz%%

*) https://hackaday.com/2021/02/08/hands-on-the-risc-v-esp32-c3-will-be-your-new-esp8266/

RISC-V Mikrocontroller

BoardMaixduinoLongan NanoESP32-C3
CPUK210
RV64IMAFDC
GD32VF103VBT6
RV32IMAC
ESP32-C3-DevKitM-1
RV32IMC
Clock400 MHz108 MHz160 MHz
Sieve Runtime329 ms3800 ms1746 ms
Dhrystones/s161193302811.73
VAX MIPS91 172.35
Whetstone336 ms8662 ms
MIPS297.62 11.54
Coremark695.5400 *)
253.69
CoreMark/MHz1.72.5 *)
1.59
IOBench Read
IOBench Write
IOBench Toggle

2023-02-08/ck

%d Bloggern gefällt das: