硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3794|回复: 23
收起左侧

[RTOS] RTX5性能加特之ARM Compiler 6编译器与ARM Compiler 5的比较,事隔五年后再次开启MDK各项性能研究

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107371
QQ
发表于 2018-3-18 00:33:45 | 显示全部楼层 |阅读模式
    MDK5在2013年刚发布的时候就开始不遗余力的研究MDK5的各种新特性,特别是RTE环境,花了不少时间去研究将我们自己的驱动包添加到RTE中。
25_58_6b456c1dc62436c.png

    后来再研究了一段时间后,发现MDK5存在的问题还是比较多,KEIL更新的也比较频繁,各种小版本不断发布出来。后来直接放弃了,我们的开发板例子全部是基于MDK4创建的。需要MDK5的话,可以直接打开转换成MDK5或者安装兼容包。

   最近开始直接使用最新的MDK5.25 pre2,的确是比以前好用了很多。MDK5迭代了这么多版本才做的像模像样些,也是不容易。借着搞i.MX RT的契机,全面研究下MDK5中的各种性能,特别是新版的RTX5及其中间件。相比硬件的研究,还是更喜欢研究软件,最开心还是将牛X的软件用到MCU上,不断的优化再优化直到性能被榨干。去年年底开源发布的二代示波器算是软件性能极致发挥的一个代表。


注:ARM Compiler 6 我们简称AC6,ARM Compiler 5简称AC5。

根据ARM官方的时间记录,AC6是在2015年发布的。推出到现在已经快三年了,各方面都有了比较大的发展。
1、首先是安全认证,编译器也是有安全认证的,下面是AC5和AC6的对比
QQ截图20180318010520.png

2、AC5和AC6的综合PK,根据这个比较,AC6的综合性能提升了14.9%。
    事实上,在一些大型工业和汽车代码体系中,性能比上一代增长超过30%。 这是针对复杂,真实的嵌入式代码进行全面优化的结果,而不是专注于某个芯片测试。
33.png

3、AC6,AC5和GCC生成代码量大小的比较
22.png

更详细些,下面是使用了常用的标准代码做测试比较,结果如下


下面这个是GCC使能优化库newlib-nano,ARM Compiler 6使能microlib对比:


对比可以看出ARM Compiler 6编译器的优化效果非常明显。

4、随着AC6的不断升级,性能也一代比一代强
QQ截图20180318012649.png


5、说了这么多,实际对比效果如何呢。
下面是官方之前做的一个简单比较。因为代码量太小,所以提升不明显,也就是说使用AC5三级优化加时间优化,性能也不差、特别是AC5的时间优化,优化效果超给力。不过下面是AC6.6版本,根据第4条,到了AC6.9,性能更加强了,特别是浮点的处理。
QQ截图20180318012853.png


总结
不断的追求学习新的技术,不断迎接新的挑战。后面将普及使用AC6.X作为工程模板。


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107371
QQ
 楼主| 发表于 2018-3-18 01:43:07 | 显示全部楼层
花了半个多小时才整理完
回复

使用道具 举报

17

主题

248

回帖

299

积分

高级会员

积分
299
发表于 2018-3-18 08:36:28 | 显示全部楼层
凌晨发布??辛苦了
回复

使用道具 举报

0

主题

154

回帖

154

积分

初级会员

积分
154
发表于 2018-3-18 09:14:40 | 显示全部楼层
貌似编译器从armcc切成了armclang,如果现成工程里用了armcc独有的编译选项,切成armclang后,会报一堆的编译错误
回复

使用道具 举报

1

主题

43

回帖

46

积分

新手上路

积分
46
发表于 2018-3-18 17:07:30 | 显示全部楼层
我感觉在同时支持多个编译器会有一些工作量, 因为以前写代码的人没能想到,armcc6.9是破坏性升级的。

如果是当成完全不同的编译器感觉会更好一些

点评

估计只能当成不同的编译器,NXP 的 SDK在armclang6.9上基本上全军覆没  发表于 2018-3-18 18:13
回复

使用道具 举报

3

主题

73

回帖

82

积分

初级会员

积分
82
发表于 2018-3-18 23:40:59 | 显示全部楼层
好像很牛的感觉!
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2018-3-19 08:46:58 | 显示全部楼层
硬汉,我觉得你们的例程最大的意义是教导用户如何掌握(开发板的)使用,在保证初学者容易理解的前提下将提高性能作为一种高级技巧,但不应该将压榨性能作为一个重要方向,那样会提高入门门槛。
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-3-19 08:52:23 | 显示全部楼层
期待新的模板,楼主辛苦啦
回复

使用道具 举报

14

主题

207

回帖

254

积分

高级会员

积分
254
发表于 2018-3-19 09:57:36 | 显示全部楼层
抱拳了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107371
QQ
 楼主| 发表于 2018-3-19 10:47:04 | 显示全部楼层
novice 发表于 2018-3-19 08:46
硬汉,我觉得你们的例程最大的意义是教导用户如何掌握(开发板的)使用,在保证初学者容易理解的前提下将提 ...

非常感谢建议

回复

使用道具 举报

1

主题

43

回帖

46

积分

新手上路

积分
46
发表于 2018-3-19 14:53:24 | 显示全部楼层
unknownuser 发表于 2018-3-18 09:14
貌似编译器从armcc切成了armclang,如果现成工程里用了armcc独有的编译选项,切成armclang后,会报一堆的编 ...

是的。所以我们这边现在还没开始做这个呢。不是简单适配一下就可以完成的。
回复

使用道具 举报

0

主题

154

回帖

154

积分

初级会员

积分
154
发表于 2018-3-19 22:29:26 | 显示全部楼层
本帖最后由 unknownuser 于 2018-3-19 22:30 编辑
tanek 发表于 2018-3-19 14:53
是的。所以我们这边现在还没开始做这个呢。不是简单适配一下就可以完成的。

据说armclang 的编译选项接近GCC,也许可以往GCC上靠一下试试,这件事情估计也要考虑了,因为到了cortex-m23/m33, 要支持TrustZone,只有armclang了,armcc不支持……。

回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2018-3-19 23:39:57 | 显示全部楼层
unknownuser 发表于 2018-3-19 22:29
据说armclang 的编译选项接近GCC,也许可以往GCC上靠一下试试,这件事情估计也要考虑了,因为到了cortex- ...

请教,TrustZone有什么特别的地方要挑编译器的?
回复

使用道具 举报

0

主题

154

回帖

154

积分

初级会员

积分
154
发表于 2018-3-20 08:53:19 | 显示全部楼层
novice 发表于 2018-3-19 23:39
请教,TrustZone有什么特别的地方要挑编译器的?

MDK/DS-5 只在armclang上支持了TrustZone, IAR似乎升级到8.X后就可以了。
回复

使用道具 举报

29

主题

181

回帖

268

积分

高级会员

积分
268
发表于 2018-3-20 09:33:02 | 显示全部楼层
感觉好高深,我还得继续突破
回复

使用道具 举报

1

主题

43

回帖

46

积分

新手上路

积分
46
发表于 2018-3-20 16:46:55 | 显示全部楼层
unknownuser 发表于 2018-3-19 22:29
据说armclang 的编译选项接近GCC,也许可以往GCC上靠一下试试,这件事情估计也要考虑了,因为到了cortex- ...

嗯,是啊。不能错过M23/M33啊。
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2018-3-20 21:56:31 | 显示全部楼层
unknownuser 发表于 2018-3-20 08:53
MDK/DS-5 只在armclang上支持了TrustZone, IAR似乎升级到8.X后就可以了。

还是不明白,难道TrustZone不能通过C语言访问?
回复

使用道具 举报

0

主题

154

回帖

154

积分

初级会员

积分
154
发表于 2018-3-20 21:59:51 | 显示全部楼层
novice 发表于 2018-3-20 21:56
还是不明白,难道TrustZone不能通过C语言访问?

有一些 CMSE 之类的扩展是需要编译器来做的
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2018-3-22 13:40:59 | 显示全部楼层
Keil MDK 5 编译的固件大小比Keil MDK 4要大不少
回复

使用道具 举报

1

主题

43

回帖

46

积分

新手上路

积分
46
发表于 2018-3-26 23:45:05 | 显示全部楼层
liuchangyin 发表于 2018-3-22 13:40
Keil MDK 5 编译的固件大小比Keil MDK 4要大不少

是不是优化等级,microlib这些配置不一样?
回复

使用道具 举报

56

主题

906

回帖

1074

积分

至尊会员

积分
1074
发表于 2018-3-27 19:30:50 | 显示全部楼层
cubemx 的开发人员又要抓狂了???
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107371
QQ
 楼主| 发表于 2018-3-28 00:40:44 | 显示全部楼层
roguebear 发表于 2018-3-27 19:30
cubemx 的开发人员又要抓狂了???

用词太准确了,一针见血,力透纸背
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2018-3-29 15:06:28 | 显示全部楼层
tanek 发表于 2018-3-26 23:45
是不是优化等级,microlib这些配置不一样?

完全一样
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-28 14:47 , Processed in 0.411047 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表