CoreMark is a benchmark that measures the performance of central processing units (CPU) used in embedded systems. It was developed in 2009 by Shay Gal-On at EEMBC and is intended to become an industry standard, replacing the Dhrystone benchmark. The code is written in C and contains implementations of the following algorithms: list processing (find and sort), matrix manipulation (common matrix operations), state machine (determine if an input stream contains valid numbers), and CRC. The code is under the Apache License 2.0 and is free of cost to use, but ownership is retained by the Consortium and publication of modified versions under the CoreMark name prohibited. (Wikipedia)
This projects implements the Coremark benchmark for the iMXRT Family controller using Rowley Crossworks. This project contains two solution files.
- Coremark_RowleyBsp.hzp uses the original CPU support package from Rowley
- Coremark.hzp uses a customized and extended version of the CPU support package which makes in incompatible to the original one.
Both solution files contain separate projects for the various derivatives of the iMXRT family which can be run on the respective evaluation boards. For iMXRT1160/1170, the projects for the M7 core must be active so that the projects for both cores can be loaded onto the CPU and debugged there. Unfortunately, the multicore functionality does not yet work for the iMXRT1180.
The results are in iterations per second (higher is better), code and data is stored in TCM.
Controller | O0 | OG | O1 | OSize | O2 | O3 | O3 + LTO |
---|---|---|---|---|---|---|---|
iMX RT1011 ( 396 MHz) | 289.59 | 906.88 | 1159.52 | 1147.26 | 1590.48 | 1584.53 | 1622.42 |
iMX RT1011 ( 500 MHz) | 365.65 | 1140.87 | 1463.22 | 1448.56 | 2008.67 | 1999.68 | 2048.59 |
iMX RT1060 ( 528 MHz) | 386.13 | 1204.90 | 1548.17 | 1527.88 | 2121.52 | 2106.59 | 2153.87 |
iMX RT1060 ( 600 MHz) | 438.78 | 1369.22 | 1759.32 | 1736.29 | 2410.91 | 2393.83 | 2447.62 |
iMX RT1160_CM7 ( 500 MHz) | 341.81 | 1136.72 | 1456.49 | 1442.66 | 2004.89 | 1991.95 | 2038.48 |
iMX RT1160_CM7 ( 600 MHz) | 411.82 | 1369.52 | 1754.81 | 1738.16 | 2415.57 | 2399.92 | 2456.03 |
iMX RT1160_CM4 ( 240 MHz) | 134.03 | 386.16 | 455.26 | 413.25 | 581.98 | 616.77 | 622.45 |
iMX RT1170_CM7 ( 800 MHz) | 547.71 | 1821.55 | 2338.19 | 2303.51 | 3199.38 | 3193.25 | 3266.69 |
iMX RT1170_CM7 (1000 MHz) | 683.62 | 2273.55 | 2918.34 | 2875.05 | 3993.29 | 3985.65 | 4076.97 |
iMX RT1170_CM4 ( 400 MHz) | 219.33 | 631.95 | 745.00 | 676.28 | 952.38 | 1009.35 | 1018.60 |
The results are in iterations per second (higher is better), code and data is stored in TCM.
Controller | O0 | OG | O1 | OSize | O2 | O3 | O3 + LTO |
---|---|---|---|---|---|---|---|
iMX RT1011 ( 396 MHz) | 289.59 | 909.12 | 1170.16 | 1207.23 | 1598.10 | 1588.56 | 1630.31 |
iMX RT1011 ( 500 MHz) | 365.65 | 1153.61 | 1480.42 | 1524.29 | 2008.67 | 2001.60 | 2058.46 |
iMX RT1060 ( 528 MHz) | 386.13 | 1212.32 | 1561.86 | 1610.72 | 2116.93 | 2110.77 | 2167.22 |
iMX RT1060 ( 600 MHz) | 438.78 | 1377.63 | 1774.87 | 1830.36 | 2405.69 | 2398.65 | 2462.81 |
iMX RT1160_CM7 ( 500 MHz) | 341.81 | 1143.32 | 1478.28 | 1503.80 | 2055.24 | 1994.65 | 2055.24 |
iMX RT1160_CM7 ( 600 MHz) | 411.82 | 1377.48 | 1781.07 | 1811.85 | 2410.45 | 2403.15 | 2476.22 |
iMX RT1160_CM4 ( 240 MHz) | 134.03 | 389.72 | 464.88 | 436.04 | 594.31 | 626.06 | 629.69 |
iMX RT1170_CM7 ( 800 MHz) | 547.71 | 1831.16 | 2359.15 | 2435.46 | 3206.56 | 3199.79 | 3293.59 |
iMX RT1170_CM7 (1000 MHz) | 683.63 | 2285.60 | 2944.64 | 3038.59 | 4002.24 | 3993.92 | 4099.36 |
iMX RT1170_CM4 ( 400 MHz) | 219.33 | 637.75 | 760.76 | 713.57 | 972.57 | 1024.52 | 1030.43 |
The results are in iterations per second (higher is better), code and data is stored in TCM.
Controller | O0 | OG | O1 | OSize | O2 | O3 | O3 + LTO |
---|---|---|---|---|---|---|---|
iMX RT1011 ( 396 MHz) | 289.59 | 887.04 | 1201.69 | 1498.62 | 1601.38 | 1604.87 | 1635.96 |
iMX RT1011 ( 500 MHz) | 365.65 | 1127.11 | 1521.23 | 1892.21 | 2024.12 | 2032.93 | 2065.51 |
iMX RT1060 ( 528 MHz) | 386.13 | 1192.66 | 1605.03 | 1996.16 | 2132.19 | 2148.04 | 2195.48 |
iMX RT1060 ( 600 MHz) | 438.78 | 1355.38 | 1823.95 | 2268.39 | 2423.06 | 2440.92 | 2494.88 |
iMX RT1160_CM7 ( 500 MHz) | 341.81 | 1122.48 | 1519.57 | 1883.16 | 2010.37 | 2018.24 | 2056.76 |
iMX RT1160_CM7 ( 600 MHz) | 411.82 | 1352.41 | 1830.83 | 2268.91 | 2422.24 | 2431.67 | 2478.06 |
iMX RT1160_CM4 ( 240 MHz) | 134.03 | 386.32 | 490.83 | 511.05 | 605.96 | 634.59 | 646.97 |
iMX RT1170_CM7 ( 800 MHz) | 547.71 | 1797.20 | 2422.59 | 3017.68 | 3221.64 | 3244.64 | 3314.77 |
iMX RT1170_CM7 (1000 MHz) | 683.62 | 2243.15 | 3023.88 | 3766.47 | 4020.90 | 4049.56 | 4137.36 |
iMX RT1170_CM4 ( 400 MHz) | 219.33 | 632.21 | 803.21 | 836.30 | 991.60 | 1038.49 | 1058.72 |
The results are in iterations per second (higher is better), code and data is stored in TCM.
Controller | O0 | OG | O1 | OSize | O2 | O3 | O3 + LTO |
---|---|---|---|---|---|---|---|
iMX RT1011 ( 396 MHz) | 289.52 | 886.58 | 1200.45 | 1499.11 | 1570.54 | 1594.38 | 1607.66 |
iMX RT1011 ( 500 MHz) | 365.56 | 1127.09 | 1523.46 | 1892.86 | 1975.65 | 2011.50 | 2029.87 |
iMX RT1060 ( 600 MHz) | 437.65 | 1354.20 | 1831.97 | 2268.60 | 2378.34 | 2417.09 | 2436.17 |
iMX RT1160_CM7 ( 500 MHz) | 341.81 | 1122.48 | 1519.57 | 1883.23 | 1967.88 | 2003.60 | 2017.51 |
iMX RT1160_CM7 ( 600 MHz) | 411.82 | 1348.10 | 1832.44 | 2226.67 | 2333.06 | 2414.05 | 2430.72 |
iMX RT1160_CM4 ( 240 MHz) | 134.03 | 386.57 | 491.62 | 511.05 | 589.04 | 621.81 | 625.67 |
iMX RT1180_CM33 ( 240 MHz) | 153.52 | 452.44 | 550.66 | 583.20 | 651.09 | 697.35 | 699.33 |
iMX RT1180_CM7 ( 800 MHz) | 530.49 | 1784.12 | 2402.80 | 2991.86 | 3136.76 | 3186.74 | 3209.65 |
The results are in iterations per second (higher is better), code and data is stored in TCM.
Controller | O0 | OG | O1 | OSize | O2 | O3 | O3 + LTO |
---|---|---|---|---|---|---|---|
iMX RT1011 ( 396 MHz) | 289.52 | 892.69 | 1187.56 | 1257.54 | 1581.62 | 1613.52 | 1617.23 |
iMX RT1011 ( 500 MHz) | 365.56 | 1119.44 | 1498.62 | 1587.85 | 1994.65 | 2042.73 | 2042.48 |
iMX RT1060 ( 528 MHz) | 386.04 | 1192.74 | 1589.31 | 1677.85 | 2110.68 | 2153.03 | 2156.84 |
iMX RT1060 ( 600 MHz) | 438.68 | 1355.41 | 1806.09 | 1906.65 | 2398.54 | 2446.66 | 2450.98 |
iMX RT1160_CM7 ( 500 MHz) | 341.81 | 1122.48 | 1494.32 | 1581.62 | 1986.80 | 2034.58 | 2033.84 |
iMX RT1160_CM7 ( 600 MHz) | 411.82 | 1352.41 | 1800.43 | 1905.63 | 2393.83 | 2451.34 | 2450.37 |
iMX RT1160_CM4 ( 240 MHz) | 134.03 | 386.32 | 473.23 | 450.16 | 599.47 | 635.75 | 631.79 |
iMX RT1170_CM7 ( 800 MHz) | 547.73 | 1798.75 | 2394.63 | 2534.46 | 3183.69 | 3260.30 | 3262.21 |
iMX RT1170_CM7 (1000 MHz) | 683.64 | 2245.07 | 2988.82 | 3163.35 | 3973.61 | 4069.34 | 4071.66 |
iMX RT1170_CM4 ( 400 MHz) | 219.33 | 632.21 | 774.39 | 736.66 | 980.96 | 1040.36 | 1033.91 |
iMX RT1180_CM33 ( 240 MHz) | 153.52 | 452.44 | 524.29 | 527.98 | 685.43 | 710.59 | 708.88 |
iMX RT1180_CM7 ( 800 MHz) | 531.67 | 1784.37 | 2373.83 | 2513.19 | 3149.01 | 3227.05 | 3237.08 |
The results are in iterations per second (higher is better), code and data is stored in TCM.
Controller | O0 | OG | O1 | OSize | O2 | O3 | O3 + LTO |
---|---|---|---|---|---|---|---|
iMX RT1060 ( 528 MHz) | 386.04 | 1192.74 | 1589.31 | 1675.43 | 2110.68 | 2153.03 | 2156.84 |
iMX RT1060 ( 600 MHz) | 438.68 | 1355.41 | 1806.09 | 1903.89 | 2398.54 | 2446.66 | 2436.17 |