论Arm v7 thumb-2的性能介绍(2)
作者:佚名; 更新时间:2014-12-05
新的Thumb-2技术可以带来很多好处:
可以实现ARM指令的所有功能
增加了12条新指令,可以改进代码性能和代码密度之间的平衡
代码性能达到了纯ARM代码性能的98%
相对ARM代码,Thumb-2代码的大小仅有其74%
代码密度比现有的Thumb指令集更高:
代码大小平均降低5%
代码速度平均提高2-3%
在Thumb-2技术之前,开发者会因为如何选择使用ARM/Thumb指令而感到困惑。Thumb-2的出现使开发者只需要使用一套唯一的指令集,不再需要在不同指令之间反复切换了。Thumb-2技术可以极大的简化开发流程,尤其是在性能、代码密度和功耗之间的关系并不清楚直接的情况下。并且,在Thumb-2技术下也不再像以往那样需要在ARM/Thumb两套指令之间切换。对于之前在ARM处理器上已经有长时间开发经验的开发者来说,使用Thumb-2技术是非常简单的。开发者只需要关注对整体性能影响最大的那部分代码,其他的部分可以使用缺省的编译配置就可以了。这样在享有高性能、高代码密度的优势的时候,可以很快的更新设计并迅速将产品推向市场。Thumb-2技术使得开发者可以更快的完成产品最优化设计。
通过分析ARM/Thumb编译器产生的代码,ARM公司有针对性的在Thumb-2指令集中增加了一些新的指令。通过分析这些新的指令, 我们可以看到Thumb-2指令是如何提升代码性能和代码密度的。
为了提高处理压缩数据结构的效率,新的ARM架构为Thumb-2指令集和ARM指令集增加了一些新的指令来实现比特位的插入和抽取。这样,开发者进行比特位的插入和抽取所需的指令数目就可以明显减少,使用压缩的数据结构也会更加方便,而代码对存储器的需求也会降低。
三、16-bit常数
为了增加处理常数的灵活性,新架构中为Thumb-2指令集和ARM指令集增加了两条新的指令。MOVW可以把一个16-bit常数加载到寄存器中,并用0填充高比特位;另一条指令MOVT可以把一个16-bit常数加载到寄存器高16比特中。这两条指令组合使用就可以把一个32-bit常数加载到寄存器中。通常在访问外设寄存器之前会把外设的基址加载到寄存器中,这时就会需要把32-bit常数加载到寄存器中。在之前的架构中需要通过literal pools来完成这样的操作,对32位常量的访问一般通过PC相对寻址来实现。Literal pools可以保存常量并简化访问这些常量的代码,信捷职称论文写作发表网,但是,在Harvard架构的处理器中会引起额外的开销。这些开销来自于需要额外的时钟周期来使数据端口能够对指令流进行访问;这种访问可能是需要把指令流加载的数据缓存中,或者从数据端口直接访问指令存储器。将32位常量分成16比特的两个部分保存在两条指令中,意味着数据直接在指令流中,不再需要通过数据端口来访问了。相对于literal pool方式,这种解决办法可以消除通过数据端口访问指令流的额外开销,进而提高性能,降低功耗。
上一篇:浅谈局域网的性能优化
热门论文