CoreMark Test: различия между версиями
(→Выводы) |
|||
Строка 151: | Строка 151: | ||
==== Выводы ==== | ==== Выводы ==== | ||
В результате исследования оказалось, что микроконтроллер MIK32 по своей производительности близок к другим микроконтроллерам на 32-битном ядре. | В результате исследования оказалось, что микроконтроллер MIK32 по своей производительности близок к другим микроконтроллерам на 32-битном ядре того же класса. Работа из внешней памяти ухудшает быстродействие на ~30%, но в реальости все будет зависеть структуры приложения и его объема. | ||
Так же можно предположить, что коммерческие компиляторы могут дать более высокую оценку, как это видно из других замеров с сайта eembc.org. | Так же можно предположить, что коммерческие компиляторы могут дать более высокую оценку, как это видно из других замеров с сайта eembc.org. |
Версия от 15:43, 31 июля 2023
Введение
Из wikipedia.org: CoreMark — набор синтетических тестов производительности для измерения скорости центральных процессоров во встраиваемых системах. Создан в 2009 году Shay Gal-On из компании EEMBC в качестве замены для антикварного бенчмарка Dhrystone 1984 года. Код тестов написан на языке программирования Си и содержит реализации таких алгоритмов: обработка связных списков (поиск и сортировка), обработка матриц (несколько матричных операций), машина состояний (определение, что входной символьный поток содержит действительные числа в десятичной записи), подсчет суммы CRC.
Более подробно о самом тесте можно почитать на https://ru.wikipedia.org/wiki/CoreMark
Измерения
Все тесты были проведены при частоте 32МГц. Код теста скомпилирован в GCC 10.xx.xx
Так как основной рабочий код будет находиться во внешней памяти, подключенной на шине 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.
Процессор | Компилятор | Источник кода | МГц | CoreMark | CoreMark/МГц |
---|---|---|---|---|---|
NXP LPC1114 | gcc 4.3.3 (Code Red) -O3 | Internal flash (Static) | 48 | 46.93 | 0.98 |
STM32L053 | IAR ANSI C/C++ Compiler V7.30 -Ohs | Internal Flash | 32 | 75.18 | 2.35 |
STM32F103RB | GCC 4.4.1 -O3 | Internal Flash | 24 | 43.13 | 1.7971 |
PIC32MX360F512L | GCC3.4.4 Microchip MPLAB C Compiler -O3 | Internal Flash | 30 | 72.780 | 2.4260 |
RL78/G23 | Renesas CC-RL V1.12 | Internal Flash | 32 | 51.047 | 1.5952 |
Выводы
В результате исследования оказалось, что микроконтроллер MIK32 по своей производительности близок к другим микроконтроллерам на 32-битном ядре того же класса. Работа из внешней памяти ухудшает быстродействие на ~30%, но в реальости все будет зависеть структуры приложения и его объема.
Так же можно предположить, что коммерческие компиляторы могут дать более высокую оценку, как это видно из других замеров с сайта eembc.org.