CoreMark Test

Материал из MIK32 микроконтроллер

Введение

Из wikipedia.org: CoreMark — набор синтетических тестов производительности для измерения скорости центральных процессоров во встраиваемых системах. Создан в 2009 году Shay Gal-On из компании EEMBC в качестве замены для антикварного бенчмарка Dhrystone 1984 года. Код тестов написан на языке программирования Си и содержит реализации таких алгоритмов: обработка связных списков (поиск и сортировка), обработка матриц (несколько матричных операций), машина состояний (определение, что входной символьный поток содержит действительные числа в десятичной записи), подсчет суммы CRC.

Более подробно о самом тесте можно почитать на https://ru.wikipedia.org/wiki/CoreMark

Измерения

Все тесты были проведены при частоте 32МГц. Код теста скомпилирован в GCC 10.

Так как основной рабочий код будет находиться во внешней памяти, подключенной на шине QSPI, то важно отметить, что ведь код CoreMark не помещается в кэш целиком (это бы повредило объективности сравнения). Таким образом результаты теста можно будет соотнести с показателями микроконтроллеров, работающих из внутренней памяти без кэш.

Результаты
Источник кода Кэш CoreMark/-O0 CoreMark/-O1 CoreMark/-O2 CoreMark/-O3 CoreMark/-Os CoreMark/-Ofast
QSPI, 4 бит да 6.1 31 35 35 31 35
QSPI, 1 бит да 3.7 29 29 23 26 26
QSPI, 4 бит нет 1.2 3 3.6 3.9 3.9 2.3
QSPI, 1 бит нет 0.4 1.1 1.3 1.4 0.9 1.4
INT RAM NA не помещает. 34 40 40 32 40
INT FLASH NA не помещает. не помещает. не помещает. не помещает. не помещает. не помещает.

Размер кода

Так как код в случае исполнения из QSPI поступает по последовательному каналу и имеет дополнительные циклы ожидания инструкций, то размер кода приложения имеет первостепенную значимость.

Параметр CoreMark/-O0 CoreMark/-O1 CoreMark/-O2 CoreMark/-O3 CoreMark/-Os CoreMark/-Ofast
Размер кода 17024 10240 10992 13328 8960 13424

Важно понимать так же, что кэш инструкций поступающих через QSPI составлят 1кБ, а кэш данных - . Важно отметить, что эта память находится в блоке SPIFI, а не в самом ядре процессора.

Попытка объективного позиционирования

Важными критериями при сравнении являются, естественно, потенциал процессора. И далее:

  • Конфигурация памяти;
  • Рабочая частота;
  • Используемый компилятор и уровень оптимизации кода
  • Наличие/отстствие кэш памяти

Наиболее близкие конкуренты MIK32 по данным с сайта https://www.eembc.org/coremark/scores.php - это микроконтроллеры на ядре Cortex-M0.

NXP LPC1114 gcc 4.3.3 (Code Red) Internal flash (Static) 48 46.93 0.98