# Coremark

CoreMark és un punt de referència que mesura el rendiment de les unitats centrals de processament (CPU) utilitzades en sistemes integrats. Va ser desenvolupat l'any 2009 per Shay Gal-On a EEMBC i està pensat per convertir-se en un estàndard de la indústria, substituint el punt de referència de Dhrystone. El codi està escrit en C i conté implementacions dels algorismes següents: processament de llistes (cerca i ordena), manipulació de matrius (operacions de matriu habituals), màquina d'estats (determinar si un flux d'entrada conté números vàlids) i CRC. El codi es troba sota la llicència Apache 2.0 i és gratuït d'utilitzar, però el Consorci en conserva la propietat i la publicació de versions modificades amb el nom CoreMark està prohibida.

## Temes abordats per CoreMark

L'algorisme CRC té una funció dual; proporciona una càrrega de treball que es veu habitualment a les aplicacions incrustades i garanteix el correcte funcionament del punt de referència CoreMark, proporcionant essencialment un mecanisme d'autocomprovació. Concretament, per verificar el funcionament correcte, es realitza un CRC de 16 bits sobre les dades contingudes en elements de la llista enllaçada.
Per garantir que els compiladors no puguin calcular prèviament els resultats en el moment de la compilació, cada operació del benchmark deriva un valor que no està disponible en el moment de la compilació. A més, tot el codi utilitzat dins de la part cronometrada del punt de referència forma part del propi punt de referència (no hi ha crides a la biblioteca).

## CoreMark versus Dhrystone

CoreMark es basa en els punts forts que van fer que Dhrystone sigui tan resistent: és petit, portàtil, fàcil d'entendre, gratuït i mostra una puntuació de referència de nombre únic. A diferència de Dhrystone, CoreMark té regles específiques d'execució i informes, i va ser dissenyat per evitar els problemes ben entès que s'han citat amb Dhrystone.
Les parts principals de Dhrystone són susceptibles a la capacitat d'un compilador d'optimitzar el treball; per tant, és més un punt de referència del compilador que un punt de referència de maquinari. Això també fa que sigui molt difícil comparar els resultats quan s'utilitzen diferents compiladors/marcadors.
Les crides a la biblioteca es fan dins de la part programada de Dhrystone. Normalment, aquestes crides a la biblioteca consumeixen la major part del temps consumit pel benchmark. Com que el codi de la biblioteca no forma part del benchmark, és difícil comparar els resultats si s'utilitzen biblioteques diferents. Hi ha directrius sobre com executar Dhrystone, però com que els resultats no estan certificats ni verificats, no s'apliquen. No hi ha estandardització sobre com s'han d'informar els resultats de Dhrystone, amb diversos formats en ús (DMIPS, Dhrystones per segon, DMIPS/MHz)

## Referències

* ↑ Pitcher, Graham. «EEMBC launches MIPS busting benchmark» (en anglès). newelectronics.co.uk, 08-06-2009. Arxivat de l'original el 2012-07-30. [Consulta: 28 abril 2020].
* ↑ «ARM Announces Support For EEMBC CoreMark Benchmark» (en anglès). GISCafe, 06-06-2009. [Consulta: 28 abril 2020].
* ↑ «COREMARK® ACCEPTABLE USE AGREEMENT» (en anglès). GitHub, 24-05-2018. [Consulta: 28 abril 2020].
* ↑ «Core-Mark International | LinkedIn» (en anglès). [Consulta: 22 octubre 2023].