微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM Thumb Thumb-2指令集

ARM Thumb Thumb-2指令集

时间:11-10 来源:互联网 点击:

2748.6

-Os

-funroll-loops

-mthumb

-march=armv5te

-mtune=cortex-a8

48.8%

2747.4

-Os

-mthumb

-march=armv5te

-mtune=cortex-a9

48.8%

2743.7

-Os

-funroll-loops

-mthumb

-march=armv5te

-mtune=cortex-a9

48.7%

Bottom of Form

http://lion3875.blog.51cto.com/2911026/532719

http://www.cnx-software.com/2011/04/22/compile-with-arm-thumb2-reduce-memory-footprint-and-improve-performance/#ixzz1qTCwHRc4

https://wiki.linaro.org/MichaelHope/Sandbox/CoreMark1

http://blog.csdn.net/itismine/archive/2009/11/01/4753701.aspx

http://hi.baidu.com/yzx408/blog/item/a050741180944c1cb8127b79.html

http://houh-1984.blog.163.com/

32位RISC芯片ARM 体系结构支持两种指令集:32位的ARM指令集执行效率高,对ARM体系架构所有功能的完整支持;16位的Thumb指令集是ARM指令集的子集并以良好的代码密度著称。如果抛开预取指令时间不计,ARM指令相对Thumb指令将有更好的运行性能(预取指令时需要根据指令地址偏移量来取指, ARM支持更大的地址偏移量而比较耗时)。最近ARM公司推出的的Thumb-2/Thumb2指令集据称是上述两种特性的综合,是ARM指令集的性能和Thumb指令集的代码密度的折中。号称达到98%的ARM性能而又能降低代码密度达30%。在目前的大多数ARM应用中依然采用ARM + Thumb代码的混杂模式。ARM code对应的CPU(ARM处理器)工作状态称为ARM State,Thumb对应的称之为Thumb State,这两种状态的不同主要通过CPSR[bit 5]区别。CPSR(当前程序状态寄存器)保存了处理器的当前工作状态,[bit 5]也被称为T bit。对于所有带有J标志的处理器核,比如ARM926EJ-S和ARM1136J-S,J(Jazelle)代表ARM核中集成了Jazelle技 术。CPSR[bit24]则被成为J bit,如果这位为1,则代表当前CPU工作在Java State下而CPU的取指和解码都是直接操作Java操作数栈。当然要生成Jazelle支持的字节码需要特殊的Java编译器和JVM,一般由第三方 平台软件厂商提供,比如日本的Aplix公司。在ARM处理器的运行过程中,汇编指令BX以及BLX可以完成ARM State和Thumb State之间的切换(BXJ和BLXJ完成ARM/Thumb State和Java State之间的切换)。但如果程序有一部分工作在ARM工作状态下,一部分工作在Thumb工作状态下,而这两段代码却有交互调用,则在编译C/C++和汇编源文件时要 加上 -apcs /interwork选项。ARM公司的ADS(ARM Developer Suite,-apcs /interwork)和RealView的RVDS(RealView Developer Suite,--apcs /interwork) 都支持这样的编译选项,他们会在链接时自动检测函数之间的调用关系和工作状态提供粘合剂(Veneers)以便程序能够在不同的工作状态下切换。arm-linux-gcc编译器个别版本不支持这个选项,所以在开发ARM + Linux平台下使用的程序时应该注意到这个问题。最后比较了arm-linux-gcc编译器下ARM(armv7-a)、Thumb-1、Thumb-2指令集以及armv5te、Cortex-A9与Cortex-A8的tune选项效率性能和代码密度。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top