再上一篇:18.4 C 源程序
上一篇:18.5 预编译的目标文件
主页
下一篇:第19章
再下一篇:19.2 获取 GNU 工具链
文章列表

18.6 优化

《Cortex-M3 权威指南》,嵌入式处理器开发教程。

CM3中有许多新特性,加以利用的话常常可以大大提高程序的性能,或者降低对存储器的使用。 对于积极向上的我们,一定要挖掘这些特性:

 使用32位 Thumb-2指令:对于下列的场合:先使用一条 16位 thumb指令把数据从一个寄 存器传送到另一个,再对该数据执行数据处理。有时能使用一条 Thumb-2指令来完成(这主要
是因为 16位 Thumb指令不能使用“高寄存器”——译者注),从而使所需的处理时间缩短。
 位带操作:如果外设寄存器位于位带区,则可以通过对位带别名区的访问,大大地化简对寄 存器位的操作。
 乘法与除法:CM3的一个重大革新就是支持除法指令和部分支持 64位乘法指令。请善用它们
(尤其是除法),可以成十上百倍地提高程序的执行速度。
 立即数:有些 Thumb-2 指令支持长达 12 位的立即数,因此可以把以前 Thumb 指令无法加载 的立即数使用一条 Thumb-2来加载。
 跳转:过去单条 Thumb指令无法执行的远程跳转,现在可以使用 Thumb-2指令实现了。
 布尔数据:对于“BOOL”型的变量,可以强制把它们定址到内存的位带别名区。相比于过去
使用字来实现 BOOL变量,现在只需使用以前 1/32的内存空间。
 IT 指令块:有些短距跳转可以使用 IT 指令取代,这样做消灭了因流水线清洗而引入的等待 周期,从而提高了性能。
 ARM/Thumb 状态切换:在大多情况下,可以把大部分代码以 Thumb 指令编码,一小部分以

ARM指令编码。这主要是为了在平时提高代码密度,而在紧急关头下提高性能。在 CM3下有了 Thumb-2代码,可以在同一模式下解决时间与空间的权衡。这就可以去掉这些状态转换及其所 带来的额外负担(overhead),也简化了对工程的管理。