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 AVR-Mikrocontroller

BoardArduino UnoArduino Uno WiFi Rev 2
CPUATmega328pATmega4809
Clock16 MHz16 MHz
Sieve Runtime14012 ms13375 ms
Dhrystones/s17229.8618306.66
VAX MIPS9.8110.42
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
Arduino DueSeeeduino
Wio Terminal
Teensy 4.0
CPUSamD21
Cortex-M0+
PS 4000S
Cortex-M0+
AT91SAM3X8E
Cortex-M3
ATSAMD51P19
Cortex-M4F
NXP iMXRT1062
Cortex-M7
Clock48 MHz48 MHz84 MHz120 MHz600 MHz
Sieve Runtime4857 ms3867 ms104 ms
Dhrystones/s41589.9344982.1478638.39
VAX MIPS23.6725.644.76
Whetstone45105 ms12888 ms1999 ms59 ms
MIPS2.227.7650.031694.92
Coremark56.4754.4994.95211.492313.57
CoreMark/MHz1.21.1351.11.7623.9
IOBench Read1241.88 kHz650.41 kHz
IOBench Write861.87 kHz419.51 kHz
IOBench Toggle227.3 kHz

32-Bit ESP Mikrocontroller

BoardLeduinaESPduino-32
CPUESP8266EXESP-WROOM-32
Clock80 MHz240 MHz
Sieve Runtime2189 ms805 ms
Dhrystones/s%308997.7
VAX MIPS%175.87
Whetstone%744 ms
MIPS%134.41
Coremark%336.36
CoreMark/MHz%1.4
IOBench Read5359.1 kHz
IOBench Write7468.48 kHz
IOBench Toggle200 kHz

RISC-V Mikrocontroller

BoardMaixduinoLongan Nano
CPUK210
RV64IMAFDC
GD32VF103VBT6
RV32IMAC
Clock400 MHz108 MHz
Sieve Runtime329 ms3800 ms
Dhrystones/s161193
VAX MIPS91
Whetstone336 ms
MIPS297.62
Coremark695.5
CoreMark/MHz1.7
IOBench Read
IOBench Write
IOBench Toggle

Erstelle deine Website auf WordPress.com
Jetzt starten
%d Bloggern gefällt das: