Electronic – How does a Cortex M0 perform compared to 8-bit controllers

microcontrollerperformance

This document cites 60 DMIPS/mW for a Cortex M0, vs 31 DMIPS/mW for an M3. (The latter doesn't agree with the numbers in this document, which cite 1.25 DMIPS/MHz and 0.19 mW/MHz, giving 6.6 DMIPS/mW.)
Does anyone know how the M0 performance/power compares to 8/16-bit controllers like AVR, PIC and MSP430? And what's the deal with the M3 figures?

Best Answer

Here are a couple of pointers that I can provide. The specifications that NXP is providing is for their entire chip (core, memory, peripherals). The specification that ARM provides is based on just the core. As the numbers are derived differently it's really hard to do the comparison.

So, I propose we step back and look at two devices. An NXP M0 based MCU, and an MXP M3 based MCU.

For the M0 based MCU let's look at the LPC1111. When this MCU is executing an busy idle loop it will consume 3mA of current at 12MHz clock rate. This yields 250uA/MHz, which at 3.3V is 825uW/MHz.

For the M3 based MCU let's look at the LPC1311. When this MCU is executing the same busy idle loop it will consume 4mA of current at 12MHz. Yielding 333.3uA/MHz, which is 1.1mW/MHz.

If we look at a MSP430C1101 MCU (16-bit) we'll see it's going to use 240uA at 1MHz when the voltage is 3V. This yields 720uW/MHz.

Next, let's turn to the ATMega328 (used in Arduino Uno). We see 200uA used at 1MHz with a voltage of 2V. This yields 400uA/MHz.

It should also be noted that the MSP430 and AVR are spec'ed differently. Their power consumption is given at 1MHz, where as the M0 and M3 are given at 12MHz. This means the M0 and M3 have inefficiencies of scaling up to 12MHz baked into their numbers.

These values are all active current consumption numbers. If you look at the current consumption when the device is in a sleep state you see orders of magnitude less power being used. The advantage that the 32bit M0 provides is that it can get a lot more work done in less time than the 8 and 16 bit MCU. This means for a given workload it will spend a lot more time in a sleep state. The M0 in the hands of a good engineer will often times get far better power efficiency than an 8-bit MCU in the hands of a less skilled engineer despite the differences in active power consumption.

From my experience the M0 is so close to 16 and 8 bit active power consumption that you can make up for a lot of the differences in application. Also, many times the power consumption of everything you have hanging off of the MCU dwarfs the MCU. So, for a lot of applications tackling the efficiency of the MCU isn't the most important thing.

I hope that helps. It is a long way of saying that power consumption is a bit worse, but you get a lot more done with those clock cycles than other chips would. So, it really depends on your application.