Moving to a new family of microcontrollers (MCU) can be a daunting task for an electronic engineer. Making comparisons between families of processors is difficult because of the differences in architecture and the types of available data. Therefore most engineers tend to favor one family of processor simply because it’s what they know or understand.
This paper describes the various tests and the conditions under which they were made that analyzed and compared the energy consumption and computational efficiency of six different 8-bit microcontrollers from from three different manufacturers.
Measured were the energy cost of processing, sleeping, non-volatile memory writes and ADC measurements. These measurements compare the chips directly to one another and reveal ideal operating points under which each can be used to reduce energy consumption.
The operations each chip carries out internally can be different from one another yet produce the same result. The differences can be the result of programming style, compiler optimization, memory usage and what instructions are supported by each MCU.
Per instruction energy consumption is also affected by other factors such as the state of the processors internal circuitry, the operands of a given function and neighboring instructions Source code optimization such as loop unrolling and appropriate selection of variable types can lower energy usage, which may be applied by the programmer.
The measured data shows large variations in the energy consumption between chips while sleeping, performing ADC measurements and non-volatile memory writes.
Measurement data indicates that the energy required to conduct an ADC measurement and store it in non-volatile memory (to prevent measurement data-loss) depends heavily on the cost of nonvolatile memory writes.
Relative to on-chip functions, writing to EEPROM is very expensive in terms of energy consumption. The use of flash memory in place of EEPROM in this investigation proved efficient. Once the optimum operating point has been found there is negligible difference, in terms of energy consumed per instruction cycle, between MCU families and models.
Instruction cycle speed does not wholly determine code execution speed. The amount of power consumed whilst sleeping varies significantly between chips, which is especially important for low power sensing and metering applications.
(To read this external content in full, download the paper from the author archives. )