您的位置 首页 分销

根据ARM处理器的软件优化规划

引言随着嵌入式系统在工业控制、汽车系统、家庭网络、医疗卫生、无线技术等领域内的大量应用,嵌入式系统开发者必须面对务种复杂的挑战,其

导言

跟着嵌入式体系在工业操控、轿车体系、家庭网络、医疗卫生、无线技能等领域内的很多运用,嵌入式体系开发者有必要面临务种杂乱的应战,其中就包含如安在代码功用和体系本钱之间进行平衡。在这方面,ARM处理器能够供给给开发者业界抢先的技能计划ARMCortex系列供给了一个规范的体系结构来满意各种技能的不同功用要求,是专门针对功耗和本钱灵敏的嵌入式运用领域完结高功用而规划的,它大大简化了编程的杂乱性,其老练的技能使ARM架构成为各种运用的上佳挑选。

ARM Cortex处理器的一致技能是Thumb-2技能,它以现有的ARM技能为根底,归纳了ARM指令和Thumb指令的优势,对优化嵌人式软件规划具有独特的优势,供给了最佳的代码密度,能更合理地运用存储器,关于接近处理器内核的高速存储器至关重要,即便只节约小部分内存,也将大大进步体系的功用,大幅下降功耗。

1 Thumb-2 指令简介

并非一切的运算都能够映射到Thumb指令集,有时需求多条Thumb指令来模仿一条32位指令的使命。并且Thumb指令不能拜访协处理器,不能运用异常中断指令,不支持媒体功用,当运用中有这些需求并且对存储器窄问要求较高时,有必要混合运用ARM指令和Thumb指令,处理器内核根据需求切换到Thumb状况以获取高代码密度或切换到ARM状况以获取超卓的功用。在开发阶段,为r充分利用存储器,需求重复调整哪些代码运用ARM指令、哪些代码运用Thumb指令。往往只要比及软件和硬件完结后,才干终究决议ARM/Thumb指令的运用办法,这些要素会使开发流程变得十分杂乱。

Thumb-2技能足对ARM架构的十分重要的扩展,它能够改进Thumb指令集的功用。Thumb-2指令集在现有的Thumb指令的根底上做了如下的扩大:

· 增加了一些新的16位Thumb指令来改进程序的履行流程

· 增加了一些新的32位Thumb指令以完结一些ARM指令的专有功用。

· 扩大原有的ARM指令,增加了一些新的指令来改进代码功用和数据处理的功率。

运用Thumb-2指令就不需求在ARM/Thumb状况之间重复切换了,代码密度和功用得到的显着的进步。

2 运用Thumb-2指令优化规划

关于已经有ARM处理器开发经历的嵌入式开发工程师析言,运用Thumb-2技能是十分简略的,由于Thumb-2技能是在ARM和Thumb根底上经过立异后发展起来的,它承继了原有的根本编程办法,一起具有ARM/Thumb不行比较的优越性。开发人员在规划嵌入式软件时,只需求要点重视对全体功用影响最大的那部分代码规划,就能够平衡好功用、代码密度和功耗之间的联系。

2.1 减小汉名(Hamming)间隔

表1汉名间隔改变比照

如表1所示,两组代码都是用于核算表达式(x1+x2)x(x3-x4)的值,别离运用3条指令束完结。每条指令先成的功用、字书数、寄存器的运用数目、操作码都彻底相同,不同之处便是各寄存器操作数的二进制编码不同。

Rd代表方针寄存器,Rn和Rm代表源操作数寄存器。履行原代码时,Rd的比特位改变4次,Rn和Rm别离改变3次和5次,操作数总的比特位改变12次。履行优化后的代码时,操作数总的比特位改变为6次,仅为原代码的一半,能有效地下降指令履行时的功耗。

2.2擅用16位常数指令

Thumb-2指令会集增加了2条关于16位常数的新指令。MOVW能够把一个16位常数加载到寄存器中,并用0填充寄存器的高16位;另一条指令MOVT能够把一个16位常数加载到寄存器的高16位中。这两条指令组合运用就能够把一个32位常数加载到寄存器中。

操作32位当即数或是拜访外设,都需求把32位常数加载到寄存器中。关于本来的ARM/Thumb指令体系,因指令编码位数约束.最多只能运用12位常数,且其有效位数只要8位,别的4位用于移位。对恣意一个32位的当即数或许一个地址值读取到寄存器需求运用到LDR伪指令,编泽器把该32位数据放在数据缓冲区中,一起用根据PC的LDR指令读取该数据,程序履行时,会在处理器中引起额定的开支,这些开支来自于需求额定的时钟周期使数据端口能够对指令流进行拜访。

用两条指令把32位常数分红两个16位常数分两次加载到寄存器中,意味着数据直接在指令流内部,不再需求经过数据端口来拜访。相关于LDR伪指令办法,这种解决办法能够消除经过数据端口拜访指令流的额定开支,从而进步功用,下降功耗。

2.3灵敏运用位操作指令

嵌入式软件开发者经常会碰到位操作方面的问题,如需求对某个变量中的某几位赋值或复位。提取寄存器的部分数据位信息,寄存器中刺进固定比特信息等,开发人员往往选用逻辑运算指令和移位操作指令的组合来完结。如表2所尔,两组代码完结的功用相同,把寄存器R1和寄存器R2的有用信息会集紧缩到寄存器R0中,以节约寄存器。R1的有用信息为R1[15:0],R2的有用信息为R2[24:8]。关于原代码,由于需求屏蔽寄存器R1和R2的16位数据,需求16位常数参加,所以运用MOVW指令把16位常数引进,完结程序功用共用了4条指令,还额定运用寄存器R3来寄存中心变量。优化后的代码只需求一条指令即可完结,并且不需求额定的寄存器参加核算。

表2位操作指令比照

除PKHBT指令外。Thumb-2技能还供给PKHTB、BFC、BFI、SBFX、UBFX等位操作指令。这样,开发者进行比特位的刺进和抽取所需的指令数目就能够显着削减,运用紧缩的数据结构也会愈加便利。而代码对寄存器的需求也会下降。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/254420.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部