/Coremark_iMXRT

Coremark for iMXRT1170 Dual Core

Primary LanguageC

Coremark port for iMXRT family

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.

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.

Results with GCC 10.3

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

Results with GCC 11.3

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

Results with GCC 12.2

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

Results with GCC 12.3

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

Results with GCC 13.2

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

Results with GCC 13.3

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