The ARM Cortex-M0 and Cortex-M23 are two low-power microcontroller cores designed for embedded and IoT applications. The main differences between the M0 and M23 cores come down to performance, features, and intended use cases.
Overview
The Cortex-M0 is a 32-bit ARM processor optimized for low-cost and low-power embedded applications. It is an extremely compact and energy efficient design, making it well-suited for simple microcontroller units (MCUs) in cost-sensitive devices that require basic computation and connectivity features.
The Cortex-M23 takes the M0 design and enhances it further for ultra low-power microcontroller applications. ARM positions the M23 core for battery-powered and energy harvesting IoT edge nodes that need to operate autonomously for long periods. The M23 architecture incorporates additional power-saving features for improved efficiency.
Key Differences
Performance
The Cortex-M0 has a maximum clock speed of 50 MHz and achieves 1.25 DMIPS/MHz. This gives the M0 core decent performance for basic embedded applications. However, performance is limited compared to higher-end Cortex-M cores.
The Cortex-M23 boosts performance to 1.5 DMIPS/MHz with a maximum clock speed of 64 MHz. So at maximum configuration, the M23 provides up to 96 DMIPS compared to 62.5 DMIPS on the M0. The M23 achieves better performance through a longer 4-stage pipeline vs 3-stage for the M0.
Power Efficiency
A major focus for the Cortex-M23 design was improving power efficiency over the ultra-low power M0. ARM targeted a 2x boost in energy efficiency for the M23 core. This allows M23 MCUs to operate much longer on small batteries or energy harvesting sources.
The M23 incorporates architectural optimizations like operand isolation and logic merging that reduce switching activity. It also has an enhanced sleep/wakeup system that draws minimal leakage current in sleep mode. These enhancements make the M23 the most energy efficient application processor ARM has developed.
Features
The Cortex-M0 has a compact two-stage pipeline designed for minimal area and power draw. It includes basic embedded features like 16-32 bit Thumb instruction set, NVIC interrupt controller, SysTick timer, and debug support.
Building on the M0 foundation, the M23 adds a number of features to support ultra low-power applications. This includes wait-for-interrupt and sleep modes, data watchpoint tracing, and optional memory protection unit. The M23 also has enhancements for deterministic real-time performance.
Intended Use Cases
The Cortex-M0 targets cost-sensitive embedded applications where resources are very limited. It excels in basic industrial sensors, home appliances, consumer electronics, and simple IoT devices.
The Cortex-M23 focuses on battery-operated and energy harvesting wireless IoT endpoints. Typical applications include wireless sensors, wearable electronics, and remote controls. The power optimizations make it ideal for years of autonomous operation.
Architecture Comparison
Since the Cortex-M23 builds on the compact M0 foundation, the two cores share a similar streamlined architecture. But the M23 adds new capabilities focused on ultra low-power operation.
Pipeline
As mentioned earlier, the M0 has a compact 3-stage pipeline while the M23 lengthens this to 4 stages. The additional branch prediction stage in the M23 boosts performance while adding minimal power and area overhead.
Wakeup Unit
A new Wakeup Unit (WIC) in the M23 manages the processor state during sleep. It allows very fast low-latency wakeup from sleep/standby states to handle interrupts. This minimizes workload interruption and power consumption when idling.
Data Watchpoint Trace
The embedded trace macrocell in the M23 includes a data watchpoint trace feature. This allows tracing processor execution while watching accesses to specific addresses. The data tracing enhances debugging capabilities without excessive overhead.
Security Extension
An optional TrustZone security extension module can be added to the M23 core. This provides memory isolation, access control, and on-chip cryptographic acceleration for trusted execution environments.
Deterministic Operation
The M23 architecture incorporates features that make execution fully deterministic. This includes avoiding pipeline stalls, atomic bit operations, duplication of system timers, and guarantees around interrupt handling. Deterministic operation is important for real-time applications.
Performance Benchmarks
Looking at benchmarks helps quantify the performance advantages of the Cortex-M23 compared to the Cortex-M0. Here are a few notable benchmarks:
- CoreMark-PRO – Cortex-M23 scores 5.41 vs 2.47 for the M0, demonstrating 118% higher benchmark performance.
- DMIPS/MHz – 1.5 DMIPS/MHz for the M23 vs 1.25 DMIPS/MHz for the M0, a 20% advantage.
- Dhrystone – 1.03 DMIPS/MHz for the M23 and 0.9 DMIPS/MHz for the M0 based on the industry standard Dhrystone benchmark.
So while the maximum clock speeds differ by just 14 MHz, the microarchitecture improvements in the M23 give it a sizable real-world performance advantage over the older Cortex-M0 design.
Power Efficiency Comparisons
Since ultra low-power operation was a primary goal for the Cortex-M23, it achieves major efficiency gains over the already impressive Cortex-M0. Some sample comparisons:
- Active Mode Power – 12 μW/MHz for Cortex-M23 versus 15 μW/MHz for Cortex-M0, a 20% improvement.
- Standby Mode Leakage – 0.5 μW for Cortex-M23 versus 2 μW for Cortex-M0, 4x less leakage.
- Sleep Mode Leakage – 0.2 μW for Cortex-M23 versus 0.6 μW for Cortex-M0, 3x enhancement.
The architectural and circuity optimizations allow the M23 to operate at lower voltages as well. The M23 can reliably run down to voltages as low as 0.7V to extend battery life.
Target Applications
The differing capabilities and design goals of the Cortex-M0 and Cortex-M23 make them suited for different types of embedded applications.
Cortex-M0 Applications
- Basic industrial sensors and controllers
- Small home appliances and consumer electronics
- Toys and other cost-sensitive gadgets
- Simple lighting controls
- Low-end wearable devices
Cortex-M23 Applications
- Battery-powered wireless IoT endpoints
- Energy harvesting wireless sensor nodes
- Remote controls and user interfaces
- Smart home automation devices
- Location tracking tags and monitors
Development Environment Support
Both the Cortex-M0 and Cortex-M23 cores are supported broadly by major embedded development environments and RTOS vendors. This includes:
- GCC ARM Embedded toolchains
- ARM Keil MDK-ARM
- IAR Embedded Workbench
- Mentor Graphics Sourcery CodeBench
- FreeRTOS, ThreadX, Micrium uC/OS, and other RTOSes
The extensive toolchain support allows developing on either core using industry standard development suites. Most tools support the ARM CMSIS software abstraction layer for straightforward software reuse across Cortex-M devices.
MCU Vendor Support
Since licensing from ARM, semiconductor vendors have released many microcontroller products based on the Cortex-M0 and Cortex-M23 cores. This includes MCUs from:
- NXP/Freescale
- STMicroelectronics
- Microchip
- Renesas
- Nuvoton
- Cypress Semiconductor
- Silicon Labs
- Infineon
- Maxim Integrated
The strong industry support from leading MCU suppliers ensures availability of many chip options based on both core designs, though Cortex-M0 adoption is more widespread given its earlier introduction.
Conclusion
In summary, the ARM Cortex-M23 takes the compact and efficient Cortex-M0 design and pushes it to an even lower level of power consumption. The M23 achieves substantial efficiency gains through microarchitectural enhancements specifically targeted at battery-powered applications. While the M0 excels in basic embedded devices, the M23 is purpose-built for autonomous wireless IoT nodes needing extended battery life. Both cores will continue seeing widespread use in future embedded and IoT products requiring low cost and power efficiency.