CoreMark Test: различия между версиями
Строка 107: | Строка 107: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
! | !Процессор | ||
! | !Компилятор | ||
! | !Источник кода | ||
! | !МГц | ||
! | !CoreMark | ||
! | !CoreMark/МГц | ||
|- | |- | ||
|NXP LPC1114 | |||
|gcc 4.3.3 (Code Red) | |gcc 4.3.3 (Code Red) -O3 | ||
|Internal flash (Static) | |Internal flash (Static) | ||
|48 | |48 | ||
Строка 121: | Строка 121: | ||
|0.98 | |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-битном ядре. | |||
Так же можно предположить, что коммерческие компиляторы могут дать более высокую оценку, как это видно из других замеров с сайта eembc.org. |
Версия от 06:44, 27 июля 2023
Введение
Из 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.
Процессор | Компилятор | Источник кода | МГц | 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-битном ядре.
Так же можно предположить, что коммерческие компиляторы могут дать более высокую оценку, как это видно из других замеров с сайта eembc.org.