CoreMark es un benchmark que mide el rendimiento de las unidades centrales de procesamiento (CPU) utilizadas en sistemas embebidos . Fue desarrollado en 2009 [ 1 ] por Shay Gal-On en EEMBC y está diseñado para convertirse en un estándar de la industria, reemplazando al benchmark Dhrystone . [ 2 ] El código está escrito en C y contiene implementaciones de los siguientes algoritmos: procesamiento de listas (búsqueda y ordenación), manipulación de matrices (operaciones matriciales comunes), máquina de estados (determina si un flujo de entrada contiene números válidos) y CRC . El código está bajo la Licencia Apache 2.0 y su uso es gratuito, pero la propiedad la conserva el Consorcio y se prohíbe la publicación de versiones modificadas bajo el nombre CoreMark. [ 3 ]
Problemas abordados por CoreMark
El algoritmo CRC cumple una doble función: proporciona una carga de trabajo común en aplicaciones integradas y garantiza el correcto funcionamiento del benchmark CoreMark, ofreciendo esencialmente un mecanismo de autocomprobación. Específicamente, para verificar el correcto funcionamiento, se realiza una verificación CRC de 16 bits sobre los datos contenidos en los elementos de la lista enlazada .
Para garantizar que los compiladores no puedan precalcular los resultados en tiempo de compilación, cada operación en la prueba de rendimiento deriva un valor que no está disponible en ese momento. Además, todo el código utilizado en la parte cronometrada de la prueba forma parte de la propia prueba (sin llamadas a bibliotecas ).
CoreMark frente a Dhrystone
CoreMark aprovecha las fortalezas que hicieron de Dhrystone una herramienta tan resistente: es pequeña, portátil, fácil de entender, gratuita y muestra una puntuación de referencia numérica única. A diferencia de Dhrystone, CoreMark tiene reglas específicas de ejecución e informes, y fue diseñado para evitar los problemas bien conocidos que se han señalado en Dhrystone .
Gran parte de Dhrystone es susceptible a la optimización del compilador; por lo tanto, se trata más de una prueba de rendimiento del compilador que del hardware. Esto también dificulta la comparación de resultados al usar diferentes compiladores o parámetros.
Las llamadas a la biblioteca se realizan dentro del período cronometrado de Dhrystone. Por lo general, estas llamadas consumen la mayor parte del tiempo total de la prueba. Dado que el código de la biblioteca no forma parte de la prueba, resulta difícil comparar los resultados si se utilizan bibliotecas diferentes. Existen directrices sobre cómo ejecutar Dhrystone, pero como los resultados no están certificados ni verificados, no se aplican. No existe una estandarización sobre cómo se deben reportar los resultados de Dhrystone, y se utilizan diversos formatos (DMIPS, Dhrystones por segundo, DMIPS/MHz).
Pruebas CoreMark
El código fuente y las instrucciones para ejecutar tanto el benchmark original CoreMark como el benchmark CoreMark-PRO están disponibles en GitHub. [ 4 ] [ 5 ]
Las pruebas del benchmark CoreMark original están diseñadas para ejecutarse en una amplia gama de procesadores, desde microcontroladores de 8 bits hasta microprocesadores de 64 bits, y se centran en el rendimiento de procesadores enteros de un solo hilo, con soporte para probar hilos paralelos. [ 6 ]
El benchmark CoreMark-PRO está diseñado para ejecutarse en un rango mucho más reducido de procesadores de 32 a 64 bits, e incluye conjuntos de datos más grandes para realizar pruebas de estrés en subsistemas de memoria más grandes, pruebas de rendimiento de punto flotante y pruebas de rendimiento de procesamiento paralelo. [ 6 ]
Aunque tanto CoreMark como CoreMark-PRO pueden ejecutarse "bare metal", también se suelen ejecutar en máquinas con un sistema operativo, como ocurre con Phoronix Test Suite . [ 7 ]
Resultados
Los resultados de CoreMark se pueden encontrar en el sitio web de CoreMark, [ 8 ] y en las hojas de datos del procesador. Los resultados tienen el siguiente formato:
CoreMark 1.0 : N/C/P/M
- N Número de iteraciones por segundo (con semillas 0,0,0x66, tamaño=2000)
- Versión y opciones del compilador C
- Parámetros P como detalles de asignación de datos y código
- M – Tipo de ejecución de algoritmo paralelo (si se utiliza) y número de contextos
Por ejemplo: CoreMark 1.0 : 128 / GCC 4.1.2 -O2 -fprofile-use / Heap en TCRAM / FORK:2
Véase también
Referencias
- ↑ Pitcher, Graham (2009-06-08). "EEMBC lanza un benchmark que supera a MIPS" . newelectronics.co.uk . Consultado el 28 de abril de 2020 .
- ↑ "ARM anuncia soporte para el benchmark EEMBC CoreMark" . GISCafe . 6 de junio de 2009. Consultado el 28 de abril de 2020 .
- ↑ "ACUERDO DE USO ACEPTABLE DE COREMARK®" . GitHub . 24 de mayo de 2018. Consultado el 28 de abril de 2020 .
- ↑ "eembc / coremark" en GitHub.
- ↑ "Transformación de código C heredado en EM" .
- 1 2 "Comparación entre CoreMark y CoreMark-PRO" .
- ↑ OpenBenchmarking. "Coremark" .
- ↑ "Puntuaciones" . Coremark . Consultado el 28 de abril de 2020 .
Enlaces externos
- Sitio web oficial
- Grupo público EEMBC CoreMark
- Sistemas embebidos
- Puntos de referencia (informática)