4538|3

116

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

心仪M7--STM32F769I-DISCO评测-CoreMark测试 (二) [复制链接]

本帖最后由 okwh 于 2016-12-19 20:08 编辑

心仪M7--STM32F769I-DISCO评测-CoreMark测试 ()

本次我们介绍 处理器性能测试基准程序(CoreMark)。

历史渊源
  大家知道,有众多厂家生成处理器,但这些的产品优劣如何如何货比三家呢?
  成立于1997年的非盈利组织EEMBC, the Embedded Microprocessor Benchmark Consortium, 嵌入式微处理器基准协会, 设计了一些程序软件(测试基准benchmark)来进行比较和评价。简单的讲,这东西就是个货比三家的参考,谁让人类喜欢排名呢。EEMBC目前提供的测试包括用于云和大数据、手机和pad移动设备、网络通讯、低功耗控制器、Iot、数字声视媒体、汽车自动化等不同任务。通常流传较广的是用于通用测试的CoreMarkMultiBench (多核)FPMark (浮点计算)
  其实至今,测试基准有很多,目前我们知道较多,上媒体较多就是CoreMark。由于计算机核心是用于计算的,主要测试其实就是测试其计算速度、计算能力的。之前常用的是上个世纪80年代的Dhrystone benchmark,用DMIPS/MHz(Dhrystone Million Instructions executed Per Second/MHz,每兆赫兹每秒百万指令)做计量单位,主要用整数计算、过程调用、间接指针、任务分配等测试。通常Cortex-M0 0.8 DMIPS/MHz Cortex-M3 1.25 DMIPS/MHz Cortex-A8 2 DMIPS/MHz ,可做参考比较分界。
  还有个Whetstone进行行浮点运算、整数算术运算、功能调用、数组变址、条件转移和超越函数的计算测试,其结果就是MFLOPS(Million Floating-point Operations per Second,每秒百万个浮点操作),这个MFLOPS经常用于表示计算中心超级计算机的计算能力。另外上个世纪70年代末开始还有较专业的LINPACK用于专门测试线性代数计算能力。
  下图可看出计算中心机架上使用的intel的至强处理器可达117 CoreMark/MHz,而Tilera的则以低功耗大道理令人惊叹的230 CoreMark/MHz,每核在10~40万。目前台式机和笔记本常用的intel i5~i7大约在5~30 CoreMark/MHz范围,每核在1~3万。



  扯远了,回归我们的STM32F769I-DISCO

CoreMark
  现在常用的CoreMark是一项测试处理器性能的基准测试。代码使用C语言写成,包含:链表、矩阵、状态机、CRC校验计算等,包括了基本的常用运算和基本浮点计算。EEMBC已经提供CoreMark pro版,对这几方面的测试进行了扩展增强,用更复杂繁重计算任务进行测试,虽然这些工作通常在嵌入控制系统中不常用。当然如果是机载航载、智能汽车、移动科学计算方面,也许可能就有需要了。     
  常做参考比较分界的是Cortex-M4 2.19 CoreMark/MHz 1.25 DMIPS/MHz 。强大的大约在CoreMark。就在216 MHz 处理器频率下性能达到 1082 CoreMark /462 DMIPS,这已经可以和前些年的台式机CPU相媲美。这次测试的STM32F769I-DISCO应该与此相当。

  
  
CoreMark/MHz
CoreMark/Core
Core

Intel 80486DX2
1.02  
67.18  
X86

STM32F103RB
1.50  
108.26  
M3

LPC4350
2.92  
595.93  
M4

STM32F756NGH6
5.01
1001.79
M7
Cer
STM32F746NGH6
5.01
1082.41  
M7

STM32H743
5.05
2020.55
M7H
Cer
i.MX6Quad
10.41
10370.75
A9

Cortex-A15
9.36
15908.00
A15
Cer
TILE-Gx8072
231.32
277578.70
Tilera
Cer
Xeon E5 2687W
117.68  
         400116.70
X86-64









本评测
  关于CoreMark测试,已经有鼠不胜数的资料,似乎真没必要人人都来测试,要知道这测试还真是技术活。即是EEMBC网站提供的测试数据都有5百多,只有极少数得到EEMBC认证。究其原因,是因为不同编译器设置会对测试结果有很大影响,降低了可比性。当然从统计规律看,这些测试还是有参考价值的。
对嵌入控制器,计算能力的增强是其从控制器向处理器提升的重要标志。就象我在前文所说,强大的计算能力为高性能的物控、物测、物连世界如多种信息现场收集融合、互连自动化、高端声音图象处理、复杂运动控制、甚至现场智能决策提供了可能。现在缺的就只是内存了,当然这对于针对每个具体单应用的控制系统,通常是不需要的。
  分析了众多的测试例,即是STM32F769I-DISCO也已经有了可直接拿来使用的代码,直接照抄实在没意思啊。测试下来,我发现,面对STM32F769I-DISCO惊艳的屏,却是黑黑的,却用PC的串口、别人的串口监控接收程序去获得CoreMark测试结果。唉,这实在不爽啊。
  没道理不用这美丽的屏去显示结果啊!!!
  好吧,我时间有限,去移植STemWin实现显示虽然也不算难,只是惊艳的缺省例子是STemWin+RTOS,需要去掉OS很那许多美丽的图,还有些舍不得。那就直接使用LCD吧。
于是取出C:\Keil\ARM\Pack\Keil\STM32F7xx_DFP\2.8.0\Projects\STM32F769I-Discovery\Applications\Display\LCD_PicturesFromSDCard的部分代码,可简单实现屏幕显示,把CoreMark测试例中的测试报告输出转为屏幕显示,调用连接即可直接实现STM32F769I-DISCO自身屏幕显示的CoreMark测试。
使用keil uVision v5.15, ARMcc编译器5.05 update 2build 169,
编译条件  -c --cpu Cortex-M7.fp.sp--fpu=FPv4-SP -D__MICROLIB -g -O3 -Otime --apcs=interwork --split_ldm--split_sections

  
主要程序代码:
  
int main(void)
  
{
  
   CPU_CACHE_Enable();
  SystemClock_Config();
  HAL_Init();
  LCD_Config();
  
  
BSP_LCD_Clear(LCD_COLOR_WHITE);   //绘制初始画面 
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
BSP_LCD_DisplayStringAtLine(4,  (uint8_t*)"  By okwh ");
BSP_LCD_DisplayStringAtLine(6,  (uint8_t*)"   https://home.eeworld.com.cn/space-uid-328390.html  ");
BSP_LCD_DisplayStringAtLine(10,  (uint8_t*)"  Wait Code Mark  Testing.....  ");
BSP_LCD_DrawRect(10,10,780,460);         // 两个长方形
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_DrawRect(20,20,760,440);     
BSP_LCD_SetTextColor(LCD_COLOR_RED);   //3 X 2  个同心园
BSP_LCD_DrawCircle(400,240,100);     
BSP_LCD_DrawCircle(400,240,30);
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_DrawCircle(200,240,100);  
BSP_LCD_DrawCircle(200,240,30);
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_DrawCircle(600,240,100);   
BSP_LCD_DrawCircle(600,240,30);
  
main00();  //计算并显示结果到屏幕 即原CoreMarkmain
  
……………原来转发到虚拟串口的,改为下面两句,写到屏幕
  
static char buffer[100];  字符串
static int lnn=1; 屏幕行
  
sprintf(&buffer[0],  "CoreMark Size    : %lu", (ee_u32)results[0].size);
BSP_LCD_DisplayStringAtLine(lnn++,  buffer) ;
  
…………………………..
  
测试失败的原因通常是 计数器没有合适初始化、没有正确得到计数值
  
CORE_TICKS get_time(void) {
         CORE_TICKS  elapsed = HAL_GetTick()- Tick ;    return elapsed;
}
  



测试结果: 883.52 CoreMark/216MHz = 4.09 CoreMark/MHz,低于别人IAR编译运行的结果。
  如果你主要进行嵌入控制,那么那个IO操作的快慢大致就足够表示你的需要了,通常可用主频降频后可用于IO管脚状态翻转的频率来表示,再加上通讯速度、代码大小、存储空间,就足以用于判断选择嵌入控制系统的单片机。需要一些实时计算的系统才需要M4以上提供的浮点计算能力。

  M7兼具 强大嵌入控制、强大DSP和浮点运算、强大图形加速、丰富接口的特点,CoreMark测试验证了其强大的计算能力,随板软件验证了其强大的图形显示和视频显示能力,丰富声频接口验证了其强大的声频能力,至于控制,当然嵌入控制器本来就是用于控制的,那是它的本能能力了。




本系列:



点击此处,查看STM32F769I开发板官方资源。
此帖出自stm32/stm8论坛

最新回复

楼主威武,正在学习中  详情 回复 发表于 2016-12-21 09:51
点赞 关注(1)
个人签名熙熙攘攘的世界,我们不懈前行......
 

回复
举报

1239

帖子

68

TA的资源

纯净的硅(中级)

沙发
 
此帖出自stm32/stm8论坛
 
 

回复

116

帖子

2

TA的资源

一粒金砂(中级)

板凳
 
此帖出自stm32/stm8论坛
 
个人签名熙熙攘攘的世界,我们不懈前行......
 

回复

935

帖子

1

TA的资源

禁止发言

4
 
楼主威武,正在学习中
此帖出自stm32/stm8论坛
 
个人签名存储芯片/MCU/SRAM/PSRAM/DDR/FLASH/MRAM。web.www.sramsun.com  QQ3161422826 TEL:13751192923
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表