The Cortex-M23 and Cortex-M3 are both ARM processor cores designed for embedded and IoT applications. The key difference between them is that the Cortex-M23 is a newer, more advanced and efficient processor core while the Cortex-M3 is an older design. In a nutshell, the Cortex-M23 offers better performance and power efficiency compared to the Cortex-M3.
Introduction to ARM Cortex-M23 and M3
ARM Cortex-M is a family of 32-bit RISC ARM processor cores licensed by Arm Holdings. The Cortex-M family is designed for deeply embedded and IoT applications requiring low power consumption, good real-time performance and high code density.
The Cortex-M3 is one of the earliest and most popular cores in the Cortex-M family, launched in 2004. It has a 3-stage pipeline and includes features like Thumb-2 instruction set, optional MPU, and configurable Nested Vectored Interrupt Controller (NVIC).
The Cortex-M23 is a newer ultra low power microcontroller core launched in 2016. It retains code compatibility with Cortex-M3 but adds advanced power saving features like memory power gating and low power wake up on events.
Key Differences Between Cortex-M23 and M3
Here are some of the major differences between the ARM Cortex-M23 and Cortex-M3 cores:
- Power Efficiency – The M23 is designed to be ultra low power with advanced power saving features. M3 is less power efficient.
- Performance – The M23 offers higher performance than the older M3 despite being lower power.
- Pipeline – The M23 has a 2-stage pipeline while the M3 uses a 3-stage pipeline.
- Instruction Set – Both support Thumb-2 instruction set. M23 adds some minor extensions.
- Wakeup Time – M23 offers fast low power wake up from sleep/deep sleep modes.
- Memory – M23 supports multi-layer AHB bus matrix for flexible memory connectivity.
- Debug – Both have ARM CoreSight debug architecture. M23 adds enhancements.
- Fabrication – M23 uses newer 28nm fabrication while M3 uses legacy 130nm process.
The Cortex-M3 uses a 3-stage pipeline (Fetch, Decode, Execute) which allows for greater instruction throughput. The M23 implements a shorter 2-stage pipeline (Fetch+Decode, Execute) that reduces power consumption but also lowers peak performance.
Both cores support seperate instruction and data buses and memory management units for memory protection. The M23 adds more flexible multi-layer AHB bus matrix connectivity for more IO masters. It also supports memory power gating to cut power to unused memory blocks.
A key addition in the M23 is the Low Power Wakeup Unit which allows the core to wake up quickly from sleep/deep sleep modes in response to interrupts or events while consuming minimal power in standby. This enables energy efficient event based processing.
Both the M23 and M3 implement the Thumb-2 instruction set which provides a balance of high code density and good performance. Thumb-2 includes both 16-bit and 32-bit instructions to allow flexibility. The M23 adds some minor extensions for better code density.
Debug & Trace
For debug and trace, the cores utilize ARM’s CoreSight architecture. This provides JTAG interface for debug, Embedded Trace Macrocell (ETM) for instruction trace, and Instrumentation Trace Macrocell (ITM) for printf style debug trace. The M23 adds enhancements like Micro Trace Buffer (MTB) and hardware breakpoints.
Despite its lower power design, the Cortex-M23 actually delivers significantly higher performance than the older Cortex-M3. Here are some key performance differences:
- Higher DMIPS/MHz – Up to 1.25 DMIPS/MHz for M23 vs 1.0 for M3
- Faster wake up from sleep – Just 3 cycles for M23 vs hundreds of cycles for M3
- Lower latency interrupts – 12 cycles on M23 vs 18 cycles on M3
- Higher energy efficiency – Up to 20% lower energy per instruction compared to M3
The Cortex-M23 achieves these gains through its updated 2-stage pipeline, optimized logic, and advanced 28nm fabrication process. Overall, it delivers excellent performance for an ultra low power core.
Power Efficiency Comparison
Power efficiency is a key focus area of the Cortex-M23 design. Here are some of its major power saving features:
- Process – 28nm fabrication significantly reduces power versus old 130nm process used for M3
- Clock gating – Fine grained clock gating shuts down unused logic
- Power modes – Supports multiple low power modes including three sleep modes
- Wakeup Unit – Fast low power wake from sleep and interrupts
- Memory gating – Memory power gating reduces leakage current
- Architecture – 2 stage pipeline reduces power versus 3 stage M3 pipeline
As a result, the Cortex-M23 consumes significantly lower active and standby power than the Cortex-M3. For example, it can achieve over 4x lower standby power for a given process node.
Use Case Comparison
Here are some examples of where each core works best based on their capabilities and design focus:
Cortex-M23 Use Cases
- Ultra low power sensor nodes
- Low power wearables and hearables
- Battery powered or energy harvesting IoT endpoints
- Always-on voice assistant devices
Cortex-M3 Use Cases
- Cost sensitive embedded control systems
- Simple IoT endpoints where low cost is critical
- Automotive body applications
- Legacy embedded systems migrating to ARM
For low power battery constrained applications, the Cortex-M23 is usually the best fit due to its advanced power saving features. The Cortex-M3 may still be suitable for cost sensitive non power critical applications that can benefit from its lower cost.
Development Ecosystem Comparison
Both the Cortex-M23 and M3 are supported by extensive development ecosystems including hardware IP, software tools, RTOSes, debug probes and more. Here are some key points:
- Compatible compilers and IDEs – GCC, IAR, Keil MDK all support both cores
- RTOS support – FreeRTOS, ThreadX, Zephyr all support M23 and M3
- M23 adds CMSIS-Core v5 – Improved software interfaces for M23
- Hardware IP – Both have silicon, FPGA and virtual prototype IP available
- Debug probes – J-Link, ULINKplus, Segger probes all support both
The Cortex-M23 reuse of the v8-M architecture ensures easy software migration from M3. However, developers need to utilize new low power features of the M23 hardware for optimal efficiency.
In summary, the Cortex-M23 is clearly a more advanced processor core compared to the older Cortex-M3. It provides significant improvements in performance, power efficiency, and features while retaining code compatibility with the M3. For new low power embedded and IoT designs, the M23 should be strongly considered over the M3.