前言:在当今半导体行业受摩尔定律的刺激下飞速发展的今天,不断有性能越来越先进的处理器出现。在PC行业,以intel为例,从早起的的8086到后来的Pentium系列再到如今的酷睿系列(酷睿单核,酷睿双核,i5,i3,i7);在嵌入式行业,从早期的51到AVR、PIC和430等MCU再到后来的ARM系列(ARM7,ARM9,ARM11再到Cortex系列,而Cortex-A9之后又支持多核架构,现在intel又推出Atom系列打入嵌入式行业)。同时半导体工业制程从早期的几千个晶体管到几万个晶体管再到如今的120nm,90nm,60nm,45nm和22nm等,种种的种种,总之随着技术的不断进步,处理器性能一直在鼓足了劲头在超越(本来说摩尔定律要失效了,结果intel又搞出了3D半导体工艺),那么我们肯定会想到,处理器这么多,那衡量它们性能的标准是什么呢?0 }- x# T5 P% y$ H8 F ' ? R/ L* g5 e" P0 R) [ 前世: 说CoreMark之前,先说说它的前辈,当年业界很有名但却饱受争议的Dhrystone benchmark,可能这个名字一提出来好多人摸不到头脑,根本就没听过这个(这个正常,因为这个基准都是OEM厂商内部测试用的,咱没听过很正常,不要自卑哦,哈哈),不过提到DMIPS/MHz这个肯定大家伙都知道了吧,呵呵,没错,这个参数就是通过在CPU上运行Dhrystone benchmark得到的,也就是厂商用来吹嘘自己的CPU核有多牛的底气了。可能还有人不是很明白这个Dhrystone,那我就引用网上搜集过来的一个说法给大家解释一下:Dhrystone 是诞生在上个世纪80年代的一个用来测试CPU性能的测试用例(benchmark),把这个benchmark在CPU上运行,然后看看每秒能跑多少次 这个程序,然后除以1757,从而计算出DMIPS的值,至于为啥要除以1757呢,这是因为这个是拿VAX 11/780(DEC当年的一款经典计算机)来做基准参考的,VAX 11/780每秒能执行1757次的Dhrystone benchmark。所以拿Cortex-M4核号称1.25DMIPS/MHz为例,它说明Cortex-M4这个IP每秒能跑1757*1.25*Freq=42196.25xfreq 次的Dhrystone程序,如果Freq为150Mhz的话,那么每秒能跑的Dhrystone程序的次数为4392.5*150=329437.5。 4 I2 ~( h% e8 O 但是Dhrystone之所以饱受争议是因为它常常被半导体厂商滥用了,使它变的不是那么客观了,因为Dhrystone反映的是系统整体的性能,这就意味着它不单单是受CPU的性能影响还包括相应配套软件的性能,一些厂商拿来非常优化的OS或者Library来运行Dhrystone,自然得分就相应的高些了,所以就意味着一些不公平性。另外由于Dhrystone benchmark本身太小,因此能衡量的东西就太少, 反应不出CPU全面的性能。 , r, z# i3 ]' }: M5 L 今生:EEMBC(嵌入式微处理器基准协会)推出了一个免费的类似于Dhrystone的benchmark,称为CoreMark。/ g2 d- u7 [$ J0 n* x$ k6 U8 s' B CoreMark是一项有趣和有用的基准测试,它的目标就是要测试处理器核心性能。CoreMark能分析并为处理器管线架构和效率评分,通过执行三个主要任务来测试常用运算的执行。重要的是,CoreMark测试的设计方式,能让处理器不受内存的影响。所以目前CoreMark已迅速成为量测与比较处理器性能的业界标准基准测试。CoreMark数字越高,意味着更高的性能,大家可以尝试的去看一下内核的性能参数评估,在能效那一栏,现在常常是伴随着CoreMark评分和Dhtystone评分的,即CoreMark/MHz和DMIPS/MHz。 8 A# s$ g- j# M- g CoreMark的官网:http://www.eembc.org/coremark/index.php里面有关于各种处理器的跑分。. }0 h+ u7 s7 J) Q( y. ?6 U' D 其中STM32F756NGH6的跑分是1001.79,在200MHZ的情况下(这个是coremark官方验证过的),与ST官方的基本吻合。7 f- M6 [' U* {, s3 f0 N. [- M* E & T' ]( L4 j0 |8 r9 ]# | CoreMark主要运算:列举(寻找并排序) 数学矩阵操作(普通矩阵运算) 状态机(用来确定输入流中是否包含有效数字) CRC(循环冗余校验) 0 J2 z1 k5 o& B* T ]6 u( _2 B: Y3 `: G1 d! \ |
好资料