Arm Cortex M* — Сколько «Весит» Примитив?

Видимые преимущества языка «С» сопровождаются затратами, скрытыми затратами вычислительных ресурсов на указатели, передачу данных «память».

<=> регистр», сопоставление размера бит, выравнивание и т. д. Разница между ожидаемым и реальным временем выполнения критических участков кода чувствительна для промышленного программирования бюджетных микроконтроллеров, где главное – низкая цена.

Низкая цена является ключевым преимуществом при массовом производстве.

Невысокая цена, естественно, уравновешивается скромными вычислительными возможностями бюджетных микроконтроллеров.

Все сложные вычисления состоят из конечного числа простых.

Представление о реальном времени выполнения примитивных операторов языка Си открывает возможность экспресс-оценки производительности критических участков кода на этапе проектирования путем простого подсчета количества примитивных операторов.

Время выполнения примитивных операторов языка Си измерялось на двух аппаратных платформах в равных условиях.

Сразу отметим, что производительность Cortex M4 выше, чем Cortex M0, что естественно.

Общие наблюдения по измерениям:

  • - операции int32 выполняются примерно на 20% быстрее, чем int16;
  • - double в 2 раза медленнее float на Cortex M0;
  • - double в 27 раз медленнее float на Cortex M4;
  • - арифметика с плавающей запятой на Cortex M4 конкурирует с int16 там же;
  • - деление всегда самая медленная операция, которую можно ожидать.

Результаты измерений представлены ниже в таблицах, где:
  • - fn: - операторная формула на языке «С»;
  • - cc: - скорость выполнения оператора в циклах ЦП;
  • - us: - скорость выполнения оператора в микросекундах (1E-6).

   

+========================================= +-------------- # 1 --------------------- +-- RELEASE at 12:26:28 +-- CPU:48 MHz, STM32 ARM Cortex M0 +----------------------------------------- +-- cpu time of simple int16 "C" fn: i3 = i1 + i2,

Теги: #Программирование микроконтроллеров #микроконтроллеры #stm32 #C++ #оптимизация #Промышленное программирование #микроинтервалы
Вместе с данным постом часто просматривают: