Як працює Cortex M0 порівняно з 8-бітовими контролерами?


10

Цей документ цитує 60 DMIPS / мВт для Cortex M0, проти 31 DMIPS / мВт для M3. (Останній не погоджується з номерами в цьому документі , які цитують 1,25 DMIPS / МГц і 0,19 мВт / МГц, даючи 6,6 DMIPS / мВт.)
Хто-небудь знає, як продуктивність / потужність M0 порівнюється з 8/16-бітовими контролерами як AVR, PIC та MSP430? І яка угода з цифрами M3?


3
@frederico - це дуже завантажене питання, і відповіді немає просто. Оскільки мій досвід полягає в тому, що інші речі визначають продуктивність .. Такі речі, як можливості попереднього вибору, швидкість шини, кількість периферійних пристроїв, що звисають до шини, швидкість доступу спалаху тощо. і зовні стає шийкою пляшки. Ну, якщо ви детально описуєте свою заявку, я би радий надати зрозуміти, який найкращий шлях вибрати процесор.
Френк

1
@Frank: Чи реферат Dhrystone не враховує такі речі, як попередній вибір та швидкість шини? Я особливо хотів би, щоб суперечливі цифри NXP M3 були очищені. Не можу надати детальну інформацію про програму, оскільки деталей ще не існує :-)
Федеріко Руссо

@Frederico, я вважаю себе нижче середнього інженера, звичайно, не архітектора. Я не довіряю жодному орієнтиру там, оскільки дані майже завжди масажуються. Наприклад, якщо у вас є високошвидкісний протокол даних, який вимагає, щоб ви вводили та вимикали дані, а в той час, коли вам потрібно отримати доступ до пам'яті та інших периферійних пристроїв, ця шина справи перешкоджає. Ці процесори розроблені саме для випадків середнього використання. Якщо ви робите м'яке декодування певних даних, для яких потрібно кілька читання / запису пам'яті, і шлях даних може переповнюватися або голодувати. Зазвичай це закінчується безсонними ночами для програмних хлопців.
Френк

У наші дні Dhrystone - це весела іграшка, але все одно вам не скаже. Орієнтовні показники взагалі вам мало що розповідають. Ви повинні взяти свою заявку та запустити її. Компілятор, який ви вибрали, не змінюючи жодного коду чи обладнання, може зробити кілька разів різницею продуктивності плюс або мінус, тому все це дуже складно. Ви можете зробити орієнтири, за допомогою яких цифри відображатимуть все, що завгодно.
old_timer

АРМ збирається виконувати кола навколо решти для чистого виконання (за аналогічного розміру та аналогічної ціни, не обов'язково потужності). Я не думаю, що навіть 8051 повільний, як PIC, чи можете ви зрозуміти кількість втрачених годин, щоб зробити щось корисне? Використовуючи asm, люди використовують C і стає нестерпно спостерігати. Msp430, ви, мабуть, хочете його для додатків, де вимкніть його, він прокидається раз у синій місяць, зробить пару речей, потім переходить у сон, як пульт дистанційного керування телевізора чи щось подібне.
old_timer

Відповіді:


9

Ось пара покажчиків, які я можу надати. Технічні характеристики, які надає 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 MCU (16-бітний), то побачимо, що він буде використовувати 240uA на 1 МГц, коли напруга 3В. Це дає 720uW / MHz.

Далі перейдемо до ATMega328 (використовується в Arduino Uno). Ми бачимо 200uA, що використовується на частоті 1 МГц напругою 2В. Це дає 400uA / МГц.

Слід також зазначити, що MSP430 та AVR характеризуються по-різному. Їх енергоспоживання задається на 1 МГц, де як М0, так і М3 задаються на 12 МГц. Це означає, що M0 і M3 мають неефективність масштабування до 12 МГц, що відповідає їх кількості.

Ці значення - це всі активні номери споживання струму. Якщо ви дивитеся на споживаний струм, коли пристрій перебуває у сплячому режимі, ви бачите на порядок менше енергії, яка використовується. Перевага, яку надає 32-бітний M0, полягає в тому, що він може зробити набагато більше роботи за менший час, ніж 8 та 16 бітний MCU. Це означає, що для даного робочого навантаження вона буде витрачати набагато більше часу у сплячому стані. M0 в руках хорошого інженера часто отримує набагато кращу енергоефективність, ніж 8-бітний MCU в руках менш кваліфікованого інженера, незважаючи на відмінності в активному енергоспоживанні.

З мого досвіду, M0 настільки близький до 16 і 8 біт активного енергоспоживання, що ви можете компенсувати безліч відмінностей у застосуванні. Крім того, багато разів споживання електроенергії на все, що ви звисаєте з MCU, гномить MCU. Отже, для багатьох застосунків, що займаються ефективністю MCU, не найважливіше.

Я сподіваюся, що це допомагає. Довгий спосіб сказати, що споживання електроенергії трохи гірше, але ви зробите набагато більше, ніж зробите з цими тактовими циклами, ніж інші мікросхеми. Отже, це дійсно залежить від вашої заявки.


1
Повторіть свій перший абзац: якщо цифри ARM приблизно в основі, тоді вони повинні бути вище, ніж цифри NXP, що включають потужність периферійних пристроїв. Але вони нижче. Я також не можу це пояснити.
stevenvh

1
Також слід порівняти контролери при рівних напругах. Якщо ви запускаєте LPC1111 на 3В, як MSP430, їх енергоспоживання дуже близько. Непогано для NXP ARM; MSP430 відомий своєю малою потужністю.
stevenvh

1
одна велика проблема, яка у мене була з пристроями кору ARM порівняно з MSP430, полягає в тому, що пристрої ARM можуть спалювати багато процесорних циклів, повертаючись у робочий стан з режиму низької потужності. Дані оперативної пам’яті втрачаються і підлягають відновленню / ініціалізації (крім SRAM, що підтримується батареєю), PLL та тактову систему потрібно перезапустити. MSP просто поновлюється з наступної інструкції з усією ОЗУ неушкодженою з того моменту, коли вона перейшла в режим сну. Якщо ваш процес передбачає часті переходи між активними і режимами сну, ARM втратить.
uɐɪ

3

Порівнюючи 12 МГц з 1 МГц упереджено - більш високі тактові частоти вимагають менше струму на МГц. Наприклад, останні MSP430 можуть досягати 80-120uA на МГц при 8 / 16MHz в активному режимі.

Варто зазначити, що правильно написаний код підтримує активний режим MCU нижче 1% (або навіть 0,1%) часу, тому режими живлення тут дуже сильно змінюються.

У реальному житті MSP430 важко перемогти (я не TI-працівник) через дуже корисні стани низької потужності, де іншим MCU потрібно довше прокидатися або не зберігати вміст ОЗУ, що смішно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.