Открыть сервис

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 строк кода. Она выполняет три основные вычислительные задачи, которые моделируют типичные операции в реальных встраиваемых приложениях:

  1. Обработка списка (list processing): включает операции вставки, удаления и поиска элементов в связанном списке. Это проверяет производительность операций с памятью и указателями.
  2. Матричные операции (matrix manipulation): выполнение умножения матриц фиксированного размера (5x5). Это тестирует арифметические вычисления с плавающей запятой (или целочисленные, в зависимости от конфигурации).
  3. Алгоритм 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 →