CoreMark Test
Введение
Из 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 |
---|---|---|---|---|---|