Holy war: AVR vs ARM

Andrey Voloshin
TechMaker
Published in
1 min readApr 14, 2018

Новий пристрій можливо реалізувати на 8-bit або 32-bit архітектурі. Ціна класичних Arduino Nano (atmega328p) та STM32F103 Blue Pill ~однакова ($1.8). Що краще обрати?

З одного боку, енергоефективність повинна бути краще у 8-бітной архітектури. З іншого боку, енергоефективність досягається тим, що мікроконтролер більшість часу знаходиться в режимі deep sleep.

Для порівняння візьмемо просту задачу пошуку максимального значення в масиві

Компілятори

AVR GCC 4.6.4 (-O2) — https://godbolt.org/g/WLQA9G
ARM GCC 4.6.4 (-O2) — https://godbolt.org/g/LQ2pTu

8-бітна архітектура змушує компілятор розміщувати 32-бітні значення, як long або int32_t, по 4х окремим регістрам і виконує арифметичні та логічні операції над ними окремо.

AVR find_max
ARM find_max

Результати

  • пролог функції на AVR = 14 інструкцій проти 1 у ARM
  • організація циклу AVR = 19 інструкцій проти 6 у ARM
  • тіло циклу AVR = 13 інструкцій проти 3 у ARM
  • епілог функції AVR = 13 інструкцій проти 1 у ARM

Окрім більшої частоти ARM ядра та можливості її динамічної зміни (PLL множники та дільники встановлюються програмно) ми також отримуємо більш компактну та оптимізовану прошивку

Про такі речі ми пишемо на нашій сторінці TechMaker в Facebook та розповідаємо на курсах

--

--