广告

MCU软件基准测试实用技巧:编译器优化能力评测指引

2021-12-14 14:54:54 IAR Systems 阅读:
本文以在MCU领域内广泛使用的IAR Embedded Workbench开发工具套件为例,来分享MCU软件基准测试应该注意的项目和以下技巧,从而帮助读者能够去生成业内最高效和最完备的代码。

在MCU开发和应用中,工程师都需要进行MCU的能力测试,通用的做法是用Benchmark(基准)程序来测试。然而,在做基准测试时,编译器的优化能力也在测试结果中有较为明显的影响,同一套硬件平台,选用不同的编译器和不同的优化选项,可能得出的结果相差较大。Idaednc

为了最大程度释放MCU的性能,在基准测试中取得最理想的结果,往往需要工程师不仅对自身的硬件比较了解,更需要深入了解编译器的优化原理,并灵活应用,才能在基准测试中发挥出MCU的全部性能。IAR Systems作为全球知名的嵌入式工具厂商,其编译器在优化能力上有独特的优势,MCU配合IAR的编译器往往能够得出较好的基准测试结果。Idaednc

本文以已在MCU领域内广泛使用的IAR Embedded Workbench开发工具套件为例,来分享MCU软件基准测试应该注意的项目和以下技巧,从而帮助读者能够去生成业内最高效和最完备的代码。利用以下项目和设置,工程师可以精准调整优化等级,最大限度地进行测试和提升所开发和应用代码的性能。Idaednc

Idaednc

选择代码尺寸还是执行速度

利用IAR Embedded Workbench等开发工具套件,工程师可以对整个工程范围或对单个文件设定优化级别和类型。在源代码中,甚至可以对单个函数使用 #pragma optimize 指令来完成此操作。Idaednc

优化的目的是减少代码尺寸和提高执行速度。如果只能满足其中一个目标,编译器会根据用户指定的设置进行优先处理。因此,在实际的软件基准测试中,工程师可以尝试各种设置来获得最佳效果。举个例子,由于函数内联更侧重于执行速度的优化,相较于采用通用代码尺寸优化设置,采用函数内联与通用代码执行速度优化设置将获得更小的程序代码。Idaednc

Idaednc

选择小型内存模型

为了能够充分地发挥MCU器件的性能和减少应用中的问题,软件开发必须充分考虑MCU器件的内存等资源限制,因此需要为目标器件和项目选择尽可能小的内存模型。小型内存模型的优点包括:Idaednc

  • 更小尺寸的地址
  • 更小尺寸的指令
  • 更小尺寸的指针
  • 效率更高
  • 代码更少

诸如IAR Embedded Workbench这样的成熟的开发工具套件也集成了相关评估功能,可以对内存模型进行多方面评估,从而帮助工程师去测试软件的规模和优化设计。Idaednc

选择合适的运行时

默认情况下,运行时库是以最高代码尺寸优化级别进行编译的。如果您想要对速度进行优化,请考虑重新编译生成这些库。可以通过配置选项来设置某些标准库功能(如语言环境、文件描述符和多字节)最适合的级别。Idaednc

根据具体需求,在库选项中选择 scanf 输入和 printf 的格式。默认选项并非最小格式。Idaednc

Idaednc

Idaednc

使用正确的数据类型

数据类型与代码尺寸或者执行速度息息相关,因此需要利用开发工具来对数据类型进行观察和分析,以便找到适合硬件资源的类型。在IAR Embedded Workbench开发工具套件中,开发人员可以从以下几个方面着手进行测试和优化:Idaednc

  • 选择最适合您应用程序的的数据类型尺寸
  • 尽量使用无符号字符型,这样就能执行位操作而不是算术操作

Idaednc

检查目标特定选项

检查能提高性能的目标特定选项,这在日常的MCU设计和应用开发中往往需要工程师具有相当的经验,但是通过使用诸如IAR Embedded Workbench这类成熟的开发工具套件则可以快速而完善地完成必要的性能检查:Idaednc

  • 高效的寻址模式——可实现高效的内存访问
  • 使用特定的寄存器来处理常量/变量——代码在寄存器上的操作效率比在内存上更高
  • 偶对齐函数入口——偶对齐指令可以提高速度
  • 字节对齐对象——更小的存储空间需求,但可能生成更大的代码尺寸

使用基准测试相关代码

所有的MCU开发工具都应该提供基准测试相关代码,但是成熟的通用开发工具的代码库都是这些提供商在相关领域经验的浓缩,因此更为全面和高效。其中的重要经验包括:Idaednc

  • 嵌入式系统的基准测试应该针对嵌入式程序的特点来设计。
  • 实际的应用程序通常也适用于基准测试,但需要确保代码的可执行性。链接器会删除未引用的代码和变量,但并非所有的链接器都具备这种功能。
  • 确保测试代码不受测试工具(测试相关函数)的影响。以下示例其实是对 printf() (测试相关函数)进行了基准测试。

Idaednc

  • 比较链接后生成的代码。一款编译器可能会采用内联代码,而另一款编译器可能会调用库。
  • 充分了解用于执行基准测试的应用代码!

总结

通过使用诸如IAR Embedded Workbench这类成熟的开发工具套件,发挥其在几十年全球性应用中行汇聚和迭代出的知识,MCU设计和应用开发工程师可以快速完成上述这些必要的性能测试,同时也可以进一步有针对性地发挥MCU的性能,从而实现目标器件最优化的、软硬件合一的功能。Idaednc

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • 大联大世平集团推出基于Artery产品的USB耳机方案 大联大控股宣布,其旗下世平推出基于雅特力(Artery)AT32F403A MCU的USB耳机方案。
  • 瑞萨电子为基于Arm Cortex-M23和-M33内核的RA MCU推 用于RA产品家族的SIL3认证自检软件扩展了整个功能安全解决方案组合
  • 英特尔、AMD、Arm等九大企业宣布UCIe开放标准,推动Chip 英特尔、AMD、Arm 和所有领先的代工厂商齐聚一堂,包括高通、三星、台积电、日月光,以及Google Cloud、Meta、微软,宣布他们正在为小芯片互连制定一个新的开放标准Universal Chiplet Interconnect Express (UCIe),希望以UCIe 1.0规范建立芯片互连、兼容运作,让更多业者能依照此标准打造新款处理器,并且能配合不同微芯片建构差异化设计。
  • 瑞萨电子汽车级半导体被Honda用于其ADAS系统 瑞萨R-Car SoC和RH850 MCU将被用于Honda SENSING系统
  • “中国IC设计成就奖”提名产品简介:IVCR1401 35V 4A Si IVCR1401是一款4A单通道高速智能栅极驱动器,能够高效,安全地驱动SiC MOSFET和IGBT, 对比传统的栅极驱动,8引脚设计更简洁,使用更方便,能大大节约开发时间成本。
  • “中国IC设计成就奖”提名产品简介:显示触控一体化驱动 集创北方研发的显示触控一体化驱动芯片(TDDI)突破了CDMA抗干扰技术、驱动控制与触控侦测分时复用全驱动技术、减光罩、低功耗等前沿技术,形成了TDDI特有的显示横纹 (Hline)解决方案
  • “中国IC设计成就奖”提名产品简介:高可靠性隔离式双通 纳芯微NSi6602-Q1是国内首款车规级高压隔离半桥驱动芯片,该芯片集高隔离耐压、高可靠性、高集成度、低延时、灵活封装配置等特性于一体,可应用在车载电源OBC/DCDC、车载电驱、充电桩、光伏储能、数字电源等泛能源重点发展领域。
  • 用TinyML开始设计——开发评估套件 本文中展示的开发套件和评估板得到一些流行的机器学习库和用于 TinyML 工作流程资源的支持,包括用于微控制器的 Google TensorFlow Lite 和 Edge Impulse,因而它们能够成为您第一个项目的理想起点。
  • “中国IC设计成就奖”提名产品简介:数字隔离器Pai122M3 荣湃数字隔离器产品采用自主知识产权的智能分压技术开发设计而成,相比同类隔离产品,该专利技术可以实现更低的功耗,更高的速率和更优的时序特性。智能分压技术相比传统隔离传输技术,采用更简洁的电路架构实现更优的隔离传输性能,采用智能分压锁存放大模块电路,替代传统架构中的高频发生电路,高频调制电路和高频解调三部分电路,因此芯片面积只有传统架构芯片面积的1/2~1/3。
  • “中国IC设计成就奖”提名产品简介:集成隔离电源的隔离 CA-IS3062W是川土微电子在2020年12月推出的一款隔离式控制区域网络(CAN)物理层收发器,同时内部集成隔离式DC-DC转换器。符合ISO11898-2标准的技术规范。此器件采用片上二氧化硅(SiO2)电容作为隔离层,在CAN协议控制器和物理层总线之间创建一个完全隔离的接口,配合内部集成的隔离式DC-DC,可隔绝噪声和干扰并防止损坏敏感电路。
  • 自耦变压器SPICE建模 自耦变压器又称为单绕组变压器,可分升压变压器及降压变压器;它是一种只有一组线圈的变压器,其中一个线圈作为另一线圈的一部份...
  • “中国IC设计成就奖”提名产品简介:KungFu内核32位车规 KF32A156采用了ChipON自主研发的KungFu32内核架构处理器,该处理器采用3级流水线,16位/32位混合指令集,KF32A156最高主频为120Mhz,Flash达到512KB。KF32A156使用自主内核处理器,不存在芯片IP授权问题,也没有被禁用的风险。同时,ChipON还自主研发了开发工具,包括集成开发环境、C编译器和仿真器。真正意义上实现了从芯片到工具链的全自主。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了