BiomedBench enables a systematic HW evaluation and comparison of the state-of-the-art platforms in the wearable domain.
To achieve a fair comparison, it is necessary to define the experimental setup and measurement process.

Experimental Setup

Signal acquisition - Sensor emulation

We assume an external ADC with a 768-byte RAM buffer (i.e., AD4130-8). We perform per-batch acquisition by transferring data to the MCU when the buffer is full. We employ an SPI acquisition scheme using the DMA while the core is in sleep mode. Moreover, we assume that the sensors have no processing ability and that all the computations take place in the MCU.
Future platform evaluation must comply with these assumptions for the results to be considered valid.

Energy measurements

We do not consider the energy of the sensor and ADC in our experiments, as it is common for all platforms. We have measured the energy consumption of all boards at the power supply entry point of the integrated circuit as we target a fair comparison across all platforms. However, we highlight that the reported energy numbers include the energy drawn by the input-to-core step-down voltage converter embodied in the integrated circuit.
Future platform energy measurements must comply with this procedure for the results to be considered valid*.
*Else, thoroughly explain your energy measurement process

We have selected the Otii Arc Pro provided by Qoitech, which samples at 4 kHz, to obtain an energy profile over time and extract the energy and execution time per phase. However, due to the limited ±10 µA precision of the Otii device, we used the Fluke 8846A multimeter to measure the average current of the Nucleo and Apollo boards in deep-sleep mode. This device can achieve a precision of 0.03 µA.
Please ensure your measuring equipment features a sampling rate in the range of kHz and adequate precision.

Processing Cycles

We measured the processing cycles per application using one of two methods. For the first method, we utilized the built-in HW performance counters when provided by the processor. The alternative, in the absence of HW counters, was to multiply the processing execution time by the processor frequency. This method is accurate, provided that one can measure the execution time with adequate precision.

Considered Platforms

Below, we summarize the evaluated platforms and the key experimental specifications for each of them.

Board MCU Measuring
Point
Voltage
(V)
FPU DMA
used
Sleep Mode
used
Raspberry Pi Pico RP2040 Board 2.75 No No Yes
Nucleo L4R5 STML4R5ZI MCU 3.30 Yes Yes Yes
Ambiq Apollo 3 Apollo 3 Blue MCU 1.80 Yes No Yes
Gapuino GAP8 MCU 2.80 No Yes No
GAP9EVK GAP9 MCU 2.80 Yes Yes Yes

 

Results

Processing cycles

Processor HeartBeatClass SeizureDetSVM SeizureDetCNN CognWorkMon GestureClass CoughDet EmotionClass Bio-BPfree
(reduced)
Arm Cortex-M0+ 11.6 4.3 283.0 346.0 571.6 149.7 15.3 16758.0
Arm Cortex-M4 7.4 2.8 240.0 141.0 23.0 9.9 2.5 662.0
CV32E40P GAP8 5.1 3.2 160.0 205.0 635.8 - 14.3 18450.0
CV32E40P GAP9 5.1 2.8 160.0 145.0 20.2 9.1 1.6 633.0

Energy

Below, we report the energy numbers per phase and board (1 table per application).

HeartBeatClass
Board/MCU Idle (mJ) Acquisition (mJ) Processing (mJ) Total (mJ)
Raspberry Pi Pico 29.647 3.519 6.532 39.698
STM32L4R5ZI 0.118 0.002 2.604 2.724
Apollo 3 Blue 0.073 0.061 0.226 0.360
GAP8 9.386 0.042 0.416 9.844
GAP9 9.833 0.154 0.411 10.398

 

SeizureDetSVM
Board/MCU Idle (mJ) Acquisition (mJ) Processing (mJ) Total (mJ)
Raspberry Pi Pico 118.805 2.402 2.42 123.627
STM32L4R5ZI 0.476 0.001 1.313 1.790
Apollo 3 Blue 0.294 0.042 0.137 0.473
GAP8 37.724 0.029 0.353 38.106
GAP9 39.5 0.037 0.09 39.627

 

SeizureDetCNN
Board/MCU Idle (mJ) Acquisition (mJ) Processing (mJ) Total (mJ)
Raspberry Pi Pico 3.514 7.528 167.87 178.912
STM32L4R5ZI 0.015 0.004 112.049 112.068
Apollo 3 Blue 0.010 0.494 18.262 18.766
GAP8 0.464 0.090 31.987 32.541
GAP9 36.303 0.557 3.711 40.571

 

CognWorkMon
Board/MCU Idle (mJ) Acquisition (mJ) Processing (mJ) Total (mJ)
Raspberry Pi Pico 104.902 35.876 195.910 336.688
STM32L4R5ZI 0.432 0.017 70.629 71.078
Apollo 3 Blue 0.325 0.620 3.887 4.832
GAP8 33.930 0.431 16.008 50.369
GAP9 36.303 0.557 3.711 40.571

 

GestureClass
Board/MCU Idle (mJ) Acquisition (mJ) Processing (mJ) Total (mJ)
Raspberry Pi Pico 0 8.008 347.104 355.112
STM32L4R5ZI 0 0.004 13.425 13.429
Apollo 3 Blue 0 0.525 2.500 3.025
GAP8 0 0.096 220.933 221.029
GAP9 0.027 0.124 0.604 0.755

 

CoughDet
Board/MCU Idle (mJ) Acquisition (mJ) Processing (mJ) Total (mJ)
Raspberry Pi Pico 0 2.972 87.543 90.515
STM32L4R5ZI 0 0.001 6.649 6.652
Apollo 3 Blue 0 0.198 0.444 0.642
GAP8 - - - -
GAP9 0.081 0.046 0.352 0.479

 

EmotionClass
Board/MCU Idle (mJ) Acquisition (mJ) Processing (mJ) Total (mJ)
Raspberry Pi Pico 19.651 1.259 8.760 29.670
STM32L4R5ZI 0.002 0.001 1.462 1.465
Apollo 3 Blue 0.061 0.083 0.110 0.254
GAP8 6.224 0.015 1.052 7.291
GAP9 6.572 0.019 0.061 6.652

 

Bio-BPfree
(reduced)
Board/MCU Idle (mJ) Acquisition (mJ) Processing (mJ) Total (mJ)
Raspberry Pi Pico - - 9374.500 9374.500
STM32L4R5ZI - - 432.227 432.227
Apollo 3 Blue - - 32.222 32.222
GAP8 - - 1453.368 1453.368
GAP9 - - 24.970 24.970