Last week, ARM introduced a System Design Kit to facilitate the incorporation of the company’s 32-bit Cortex-M processors in ASICs and SoCs. Called the ARM Cortex-M System Design Kit (CMSDK), the package includes:
- Example systems for ARM Cortex-M0, Cortex-M3 and Cortex-M4 processors
- Example peripherals to aid migration of existing components from 8-bit or 16-bit systems
- AMBA AHB and APB components, including GPIO, timers, watchdog, and UART
- Compilation and simulation scripts for the Verilog environment
- Software drivers and example test code based on CMSIS (Cortex Microcontroller Software Interface Standard) for easy software reuse
- Project files for ARM RVDS, Keil MDK, and GNU compilers.
What’s different about the ARM Cortex-M series of 32-bit RISC processor cores? They’re small. According to Tom Halfhill’s Microprocessor Report article on the Cortex-M series (March 2, 2009, subscription required), an ARM Cortex-M0 processor requires only about 12K gates to implements and an ARM Cortex-M3 requires 33 to 60K gates. These processors exclusively use the 16-bit ARM Thumb instructions set. Compare these numbers to the older, less capable ARM7TDMI processor core, which has been a mainstay processor core for ASIC designers and SoC Realization teams. The ARM7TDMI-S core requires 48K gates for implementation and delivers less performance than the ARM Cortex-M3 core.
The much smaller ARM Cortex-M0 processor core can run as fast as the ARM7TDMI-S core (in terms of maximum clock rate) and delivers nearly the same performance per MHz while requiring only a quarter of the implementation gates. That’s a big, big difference. What do you lose? Not that much really. A fast multiplier (but you can have a fast one if you’re willing to spend the gates), a hardware divider, any chance for a memory-protection unit on the Cortex-M0 (but optional with the Cortex-M3).
However, you get some bonuses too like a far more complex, nested vectored interrupt controller that handles as many as 32 interrupts for theCortex-M0 core (but only 1 interrupt for the rock-bottom 12K gate cost) and as many as 240 interrupts for the Cortex-M3 core compared to the ARM7TDMI core’s two (count ‘em, 2) external interrupts.