CoreMark
CoreMark — это специализированный бенчмарк (тест производительности) для микроконтроллеров и центральных процессоров (CPU), разработанный Embedded Microprocessor Benchmark Consortium (EEMBC). Он предназначен для оценки производительности процессорных ядер на задачах, типичных для встраиваемых систем, и служит заменой устаревшего теста Dhrystone. CoreMark измеряет производительность в количестве итераций в секунду (CoreMark/s), что позволяет сравнивать эффективность различных архитектур, тактовых частот и компиляторов.
История
Бенчмарк CoreMark был создан в 2009 году организацией EEMBC, занимающейся разработкой стандартизированных тестов для встраиваемых систем. Предшествующий тест Dhrystone, широко использовавшийся с 1980-х годов, подвергался критике за устаревшую модель вычислений, слабую зависимость от компилятора и возможность «обмана» путём оптимизации кода. CoreMark был разработан как более репрезентативный и устойчивый к оптимизациям тест, отражающий реальную нагрузку на процессор во встраиваемых приложениях.
Первая версия CoreMark была выпущена в 2009 году. С тех пор он стал де-факто стандартом для оценки производительности микроконтроллеров, используемых в автомобильной электронике, промышленной автоматизации, потребительской электронике и интернете вещей (IoT). В 2012 году EEMBC выпустила обновление CoreMark Pro, которое включает многопоточную версию теста для оценки производительности многоядерных процессоров.
Устройство и алгоритм
CoreMark представляет собой компактную программу на языке C, состоящую примерно из 2000 строк кода. Она выполняет три основные вычислительные задачи, которые моделируют типичные операции в реальных встраиваемых приложениях:
- Обработка списка (list processing): включает операции вставки, удаления и поиска элементов в связанном списке. Это проверяет производительность операций с памятью и указателями.
- Матричные операции (matrix manipulation): выполнение умножения матриц фиксированного размера (5x5). Это тестирует арифметические вычисления с плавающей запятой (или целочисленные, в зависимости от конфигурации).
- Алгоритм CRC (Cyclic Redundancy Check): вычисление контрольной суммы для массива данных. Это проверяет производительность побитовых операций и работы с памятью.
Эти задачи выполняются в цикле, и количество завершённых итераций за определённое время (обычно 10 секунд) является результатом теста. Результат выражается в CoreMark/s (количество итераций в секунду). Для сравнения разных процессоров часто используется нормированный показатель CoreMark/MHz, который показывает производительность на один мегагерц тактовой частоты.
Классификация и версии
CoreMark существует в нескольких версиях, адаптированных под разные сценарии тестирования:
- CoreMark (однопоточный): базовая версия для оценки производительности одного ядра. Используется для микроконтроллеров и однопоточных приложений.
- CoreMark Pro: многопоточная версия, которая запускает несколько копий теста параллельно. Позволяет оценить масштабируемость многоядерных процессоров и эффективность работы с кэш-памятью.
- CoreMark-HPC: версия для высокопроизводительных вычислений (HPC), оптимизированная для работы с большими объёмами данных и сложными алгоритмами.
- CoreMark-IT: версия для тестирования производительности в задачах интернета вещей (IoT), включающая симуляцию работы с сетевыми протоколами и шифрованием.
Применение
CoreMark широко используется в индустрии встраиваемых систем для:
- Сравнения процессоров: производители микроконтроллеров (например, ARM, RISC-V, Intel, NXP, STMicroelectronics) публикуют результаты CoreMark для своих продуктов, что позволяет разработчикам выбирать оптимальный чип под конкретную задачу.
- Оценки эффективности компиляторов: результаты CoreMark зависят от настроек компилятора (например, GCC, IAR, Keil). Разработчики могут оптимизировать код под конкретный компилятор, чтобы повысить производительность.
- Валидации архитектур: при проектировании новых процессорных ядер CoreMark используется для проверки корректности работы и сравнения с эталонными показателями.
- Тестирования встраиваемых систем: CoreMark встраивается в прошивки устройств для самодиагностики и оценки производительности в реальных условиях.
Критика
Несмотря на широкое распространение, CoreMark имеет ряд ограничений:
- Узкая направленность: тест моделирует только три типа задач, что не отражает всё разнообразие нагрузок в реальных приложениях (например, работа с графикой, нейросетями, базами данных).
- Зависимость от компилятора: хотя CoreMark устойчивее к оптимизациям, чем Dhrystone, результаты всё равно могут варьироваться в зависимости от версии и настроек компилятора, что затрудняет прямое сравнение процессоров разных архитектур.
- Отсутствие тестирования памяти: CoreMark не измеряет производительность подсистемы памяти (кэш, DRAM), что критично для многих современных приложений.
- Неприменимость для GPU: тест не предназначен для оценки производительности графических процессоров (GPU) или специализированных ускорителей (NPU, TPU).
Сравнение с другими бенчмарками
CoreMark часто сравнивают с другими тестами производительности:
- Dhrystone: устаревший тест, который CoreMark заменил. Dhrystone выполняет в основном целочисленные операции и легко оптимизируется компилятором, что делает его менее репрезентативным.
- SPEC CPU: более сложный и ресурсоёмкий набор тестов для настольных и серверных процессоров. SPEC CPU включает десятки различных нагрузок, но требует много времени и ресурсов, что делает его непригодным для встраиваемых систем.
- BogoMips: простой тест, встроенный в ядро Linux, который измеряет скорость выполнения пустого цикла. Он используется только для калибровки задержек, а не для сравнения производительности.
Интересные факты
- CoreMark является одним из немногих бенчмарков, который официально поддерживается EEMBC и имеет строгие правила публикации результатов, чтобы предотвратить «подгонку» тестов.
- Результаты CoreMark часто публикуются в даташитах микроконтроллеров наряду с тактовой частотой и энергопотреблением.
- В 2021 году рекорд производительности CoreMark для однопоточного теста принадлежал процессору Intel Core i9-12900K с результатом около 10 000 CoreMark/s.
- CoreMark используется в образовательных целях для изучения архитектуры процессоров и оптимизации кода.
Источники
- EEMBC. «CoreMark: An EEMBC Benchmark». Embedded Microprocessor Benchmark Consortium, 2009.
- EEMBC. «CoreMark Pro: Multithreaded Benchmark». Embedded Microprocessor Benchmark Consortium, 2012.
- «CoreMark vs Dhrystone: A Comparison of Embedded Benchmarks». Embedded Systems Design, 2010.
- «CoreMark: A Benchmark for Embedded Systems». IEEE Spectrum, 2011.
- «The CoreMark Benchmark: A Practical Guide». Embedded Computing Design, 2015.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →