The Cortex-M33 and Cortex-M23 are 32-bit processor cores designed by ARM for microcontroller applications. Both utilize the ARMv8-M architecture and include features for security, digital signal processing, and floating point math. However, there are some key differences between the two cores:
The Cortex-M33 includes the ARMv8-M Security Extension, TrustZone technology, and support for DSP instructions. The M23 lacks these features. The M33 also has greater performance with higher clock speeds, more internal memory, and faster floating point math capabilities. It is designed for more advanced applications requiring security, signal processing, and math performance.
Architecture and Performance
Both the Cortex-M33 and M23 use the ARMv8-M Baseline architecture. This includes a 32-bit RISC instruction set optimized for microcontroller applications, support for the Thumb-2 instruction set, and includes the ARM Nested Vectored Interrupt Controller for handling interrupts and exceptions.
However, the M33 implements the ARMv8-M Mainline architecture extensions which includes digital signal processing instructions, single precision floating point unit, and support for Arm’s TrustZone security technology. The M23 lacks these features and uses just the ARMv8-M Baseline level.
In terms of performance, the Cortex-M33 can be clocked significantly faster than the M23. The M33 supports speeds up to 300 MHz while the M23 only goes up to 150 MHz. At the same clock speed, the M33 will perform better thanks to its more advanced architecture extensions.
Both processors contain integrated flash memory controllers. However, the Cortex-M33 has support for larger memories. It can interface with up to 1MB of embedded flash memory versus 512 KB on the Cortex-M23. This allows the M33 to support more complex, data-intensive applications.
For SRAM, the Cortex-M33 integrates 256KB of memory while the M23 has just 64KB. More on-chip SRAM allows faster access to data stored in memory rather than having to access slower external memories.
A major difference between the two cores is the Cortex-M33 implements Arm’s TrustZone technology for security while the M23 does not. TrustZone provides hardware-level security through isolating trusted software from untrusted software. This prevents unauthorized access to critical data and functions on a device.
TrustZone on the M33 works by partitioning memory and peripherals into Secure and Non-secure states. Software and data marked as Secure can only be accessed by code running in the Secure state. The Non-secure state has no visibility into the Secure environment.
This enables secure boot, cryptographic acceleration, and runtime protection against vulnerabilities. Devices like payment terminals, access cards, and IoT sensors can use the M33’s security features to protect sensitive data and transactions.
Digital signal processing performance is improved on the Cortex-M33 thanks to the inclusion of DSP extension instructions. These instructions can accelerate processing of math-heavy algorithms for applications like motor control, audio processing, computer vision, and machine learning.
DSP instructions on the M33 include saturating arithmetic, rounding, bit manipulation, and SIMD instructions to perform multiple data operations in parallel. This boosts performance on tasks like high-speed math, software-defined radio, and data analytics.
The Cortex-M23 lacks any DSP extension support. It is limited to just integer and bitwise arithmetic operations making it unsuitable for math-intensive functions.
Floating Point Unit
The Cortex-M33 incorporates a single precision floating point unit compliant with the IEEE 754 standard. This hardware unit can execute floating point arithmetic like add, subtract, multiply, and divide much faster than doing these operations in software.
Floating point capabilities allows the M33 to take advantage of higher dynamic range and precision for math functions. This is useful for 3D graphics, measurement and metering devices, instrumentation, and financial applications.
In contrast, the Cortex-M23 does not include any integrated floating point hardware. It is limited to just integer operations making it unsuitable for applications requiring advanced math performance.
Both the Cortex-M33 and M23 can be programmed using industry standard embedded development tools including:
- ARM Keil – μVision IDE and MDK toolchain
- IAR Embedded Workbench IDE and compiler
- GCC-based IDEs like Atollic TrueSTUDIO
- Debuggers like SEGGER J-Link and ST-LINK
These tools allow developing software in C/C++ and Assembly Language. Developers have access to ARM’s CoreSight Debug and Trace technology for debugging and profiling applications running on the cores.
The Cortex-M33 and M23 processor designs are licensed by Arm and can be customized and manufactured by silicon partners like NXP, STMicroelectronics, and Microchip. Companies pay an upfront licensing fee to Arm plus royalties per device sold.
This enables companies to integrate the cores into their own chip designs and sell them under their brand rather than having to design a microcontroller core from scratch.
Here are some example applications where the Cortex-M33 and M23 would typically be used:
Cortex-M33 Use Cases
- IoT devices
- Industrial automation and control
- Smart home products
- Wearables and hearables
- Payment terminals
- Automotive infotainment and instrument clusters
Cortex-M23 Use Cases
- Basic consumer electronics
- Home appliances
- Legacy industrial devices
The Cortex-M33 would be chosen for products requiring advanced performance, security, digital signal processing, and floating point math capabilities. The M23 is more cost optimized for simple embedded applications not needing those features.
In summary, the Cortex-M33 is designed for more complex embedded and IoT applications while the Cortex-M23 targets basic, cost-sensitive devices. The M33 includes features for security, DSP, and floating point processing making it suitable for edge computing requiring those capabilities. The M23 provides a more budget-friendly option for simple microcontroller use cases not needing advanced features.