The definitive guide to ARM Cortex-M0/M0+: Benchmarking low-power devices
Editor's Note: In designing deeply embedded systems, engineers face ongoing tradeoffs between power and performance. The rapid emergence of opportunities for personal electronics, wearables and Internet of Things (IoT) applications only exacerbates challenges in reducing power while enhancing performance. The ARM Cortex-M0 and Cortex-M0+ processors have emerged as a leading solution, providing the core for a broad range of microcontrollers designed to meet tough requirements for low-power, high-performance operation. In The Definitive Guide to ARM® Cortex®-M0 and Cortex-M0+ Processors, 2nd Edition, Joseph Yiu offers a comprehensive view of these processors. As Jack Gannsle wrote, these books will "...give you the insight you need to be productive on real projects."
CHAPTER 19. Ultralow-Power Designs (Cont.)
19.6 Benchmarking of Low-Power Devices
19.6.1 Background of ULPBench™
Currently, most microcontroller vendors describe the low-power characteristic of their products by quoting active current and idle current. However, as highlighted in the beginning of Section 19.2, this is no longer enough for designers. As there were no standardized rules of how active current should be measured, some of the quoted active current from microcontroller vendors could be controversial because:
The data can be obtained by running “while(1)”—the instruction could be fetched from a prefetch buffer and therefore no memory access activity in the flash and SRAM.
The data can be obtained by running program code from SRAM, with the flash memory turned off.
The data can be obtained by running program with wait states for flash memory enabled. This reduces the signal toggling and therefore reduces power.
The test could be carried out with a voltage supply that is only suitable for labs environment and is not suitable for real-world applications.
As a result, there is a need to come up a standardize way to demonstrate energy efficiency in low-power microcontroller devices.
Although it is possible to use existing benchmark code like EEMBC® CoreMark® as a reference for measuring power, the data processing complexity of CoreMark is somewhat overkill for a lot of the ULP applications. On the other hand, Dhrystone is too small to illustrate processing requirements and therefore is not suitable either.
There is also the need to demonstrate the sleep mode current. If the program execution is too long, the active power will dominate the test result.
As a result, the EEMBC ULPBench workgroup was formed in 2012. The aim of the
work group is to create benchmark suites that are suitable for measuring energy efficiency of low-power and ULP microcontroller devices, with a consistent and well-defined method.
The ULPBench project is divided into multiple phases. The first phase focuses on the energy efficiency of the processors inside the microcontroller, and is named ULPBench- Core Profile (or ULPBench-CP). Currently, additional profiles are being discussed and investigated in the EEMBC ULPBench workgroup.
19.6.2 Overview of the ULPBench-CP
The score of the ULBench-CP is to measure the energy efficiency of ULP microcontroller devices, including 8-, 16-, and 32-bit devices. Unlike traditional benchmarks, the ULPBench needs a piece of hardware to measure the actual energy consumption by a device. Therefore the ULPBench-CP has defined:
A workload (in C language) that can be used on 8-, 16-, and 32-bit architectures,
A reference energy measurement hardware, called the EnergyMonitor,
A Windows-based GUI to access the measurement hardware and control the test process and to display and compute the results.
In order to reflect the work load pattern of real-world applications, the workload executes a workload once every second and enter sleep mode the rest of the time (Figure 19.5).
Figure 19.5. Processor activities in ULPBench-CP execution.
The measurement process spans 10 occurrences of the processing. In order to ensure the data is accurate, 12 occurrences of the processing are needed and the software controlling the test detects the middle 10 occurrences and uses them for calculation of benchmark result.
The workload contains data processing functions including:
Data processing of 8-, 16-, and 32-bit data types,
Control functions (7-segment LCD),
- Task scheduling.
A simple task scheduler is included as part of the workload, but no actual context switching takes place because such operation is not supported by a number of 8-bit microcontrollers targeting ULP applications.
On existing Cortex®-M0, Cortex-M0+, Cortex-M3, and Cortex-M4 processors, the execution time of the workload takes around 10-14 k clock cycles. So if you wish, you can execute the workload with an on-chip 32-KHz crystal provided it has the required accuracy (±50 ppm).
To support the measurement setup, EEMBC provides a reference hardware tool called EnergyMonitor that you can buy from EEMBC Web site, and a software running on a personal computer to collect the data from EnergyMonitor and compute the result. The EnergyMonitor hardware is shown in Figure 19.6.
Figure 19.6. EEMBC Energy Monitor.
The Energy Monitor receives the power from the USB connector, and supplies the power to the DUT (Device Under Test) using jumper connector (Figure 19.7).
Figure 19.7. ULPBench-CP test setup.