Этот документ цитирует 60 DMIPS / мВт для Cortex M0 против 31 DMIPS / мВт для M3. (Последнее не согласуется с числами в этом документе , которые указывают 1,25 DMIPS / МГц и 0,19 мВт / МГц, что дает 6,6 DMIPS / мВт.)
Кто-нибудь знает, как производительность / мощность M0 сравнивается с 8/16-битными контроллерами как AVR, PIC и MSP430? А как обстоят дела с цифрами М3?
microcontroller
performance
Федерико Руссо
источник
источник
Ответы:
Вот несколько советов, которые я могу предоставить. Спецификации, которые предоставляет NXP, относятся ко всему чипу (ядро, память, периферия). Спецификация, которую предоставляет ARM, основана только на ядре. Поскольку числа получены по-разному, очень трудно сделать сравнение.
Итак, я предлагаю отступить и посмотреть на два устройства. MCU на основе NXP M0 и MCU на основе MXP M3.
Для MCU на основе M0 давайте посмотрим на LPC1111. Когда этот MCU выполняет занятый бездействующий контур, он будет потреблять 3 мА тока с тактовой частотой 12 МГц. Это дает 250 мкА / МГц, что при 3,3 В составляет 825 мкВт / МГц.
Для MCU на основе M3 давайте посмотрим на LPC1311. Когда этот MCU выполняет ту же самую занятую петлю ожидания, он будет потреблять 4 мА тока на частоте 12 МГц. Выход 333,3 мкА / МГц, что составляет 1,1 мВт / МГц.
Если мы посмотрим на микроконтроллер MSP430C1101 (16-разрядный), то увидим, что он будет использовать 240 мкА при 1 МГц при напряжении 3 В. Это дает 720uW / MHz.
Теперь давайте обратимся к ATMega328 (используется в Arduino Uno). Мы видим 200 мкА, используемые при 1 МГц с напряжением 2 В. Это дает 400 мкА / МГц.
Следует также отметить, что MSP430 и AVR определены по-разному. Их потребляемая мощность указана при 1 МГц, а M0 и M3 - при 12 МГц. Это означает, что M0 и M3 имеют неэффективность масштабирования до 12 МГц, включенную в их число.
Все эти значения являются активными числами потребления тока. Если вы посмотрите на потребление тока, когда устройство находится в спящем режиме, вы увидите, что потребляемая мощность на порядок меньше. Преимущество, которое обеспечивает 32-битный M0, состоит в том, что он может выполнить гораздо больше работы за меньшее время, чем 8 и 16-битный MCU. Это означает, что для данной рабочей нагрузки он будет проводить намного больше времени в состоянии сна. M0 в руках хорошего инженера часто получит гораздо лучшую энергоэффективность, чем 8-битный MCU в руках менее квалифицированного инженера, несмотря на различия в потреблении активной мощности.
По моему опыту, M0 настолько близок к 16 и 8-битному потреблению активной мощности, что вы можете компенсировать множество различий в приложении. Кроме того, много раз энергопотребление всего, что у вас висит от MCU, превосходит MCU. Таким образом, для многих приложений повышение эффективности MCU - не самая важная вещь.
Надеюсь, это поможет. Можно сказать, что энергопотребление немного хуже, но с этими тактами вы справляетесь намного больше, чем другие чипы. Итак, это действительно зависит от вашего приложения.
источник
Сравнение от 12 МГц до 1 МГц смещено - более высокие тактовые частоты требуют меньшего тока на МГц. Например, последние версии MSP430 могут работать при 80-120 мкА на МГц с 8/16 МГц в активном режиме.
Стоит отметить, что правильно написанный код сохраняет активный режим MCU ниже 1% (или даже 0,1%) времени, поэтому режимы питания здесь имеют большое значение.
В реальной жизни MSP430 трудно победить (я не сотрудник TI) из-за очень полезных состояний низкого энергопотребления, когда другим MCU требуется больше времени для пробуждения или они не сохраняют содержимое оперативной памяти, что нелепо.
источник