新闻中心

EEPW首页>嵌入式系统>设计应用> ARM体系结构研究(一)

ARM体系结构研究(一)

作者: 时间:2016-11-28 来源:网络 收藏

Thumb指令的优点在于它可以在保留32位代码优势的同时,大大节省系统的存储空间,因为在Thumb指令集中的操作数仍然是32位的,指令地址也是32位的,只是指令编码变成了16位,而ARM指令则为32位,所以,相比之下,实现同样的功能,Thumb指令的条数要比ARM略多。图2.1是“Add Rd,#Constant”在Thumb状态和ARM状态下的指令比较:

图2.1 Thumb指令和ARM指令的比较

由上图我们可以清楚地看到Thumb指令的精简之处,所以Thumb的存储空间仅仅是ARM存储空间的60%~70%,但是Thumb的指令条数比ARM指令条数多30%~50%,如果使用32位的存储器,由于指令条数较少等原因,ARM指令会比Thumb指令快40%左右,而使用16位存储器时,Thumb指令则会快40%~50%。同时与ARM比较Thumb指令的功耗会降低约30%。但是Thumb指令也有其局限性。第一、偏移范围,在Thumb指令中条件转移偏移只有8位,也就是说只能在256Byte的范围内有条件地转移,在无条件转移中可以有16位的偏移,而这些在ARM指令中都是32位,大大提高了灵活性。同时,在Thumb指令中不支持乘法和累加,没有协处理器指令没有信号量指令也没有CPSR指令。

在面临二者的取舍的时候,同其它无数的案例一样,发挥各自的长处是最完美的解法。如果系统对性能要求较高,应采用32位的存储器和ARM指令集,而对功耗和成本要求较高,则应使用Thumb指令集。但是如果两者结合使用,让它们充分发挥各自的优点,则会取得更好的效果。

ARM指令的基本格式如下:

{ } {S} , {, }

其中<>号内的项是必须的,{}号内的项是可选的,opcode为指令助记符;cond是该动作的执行条件;S表示影响CPSR寄存器(程序状态寄存器)的值,如果不加则表示不影响CPSR的值;Rd表示运算结果的目标寄存器;Rn表示第1个操作数的寄存器;operand2表示第2个操作数,可选。

同时,ARM芯片还支持协处理器,在ARM指令集中有对协处理器的数据操作、数据读取、数据写入和CPU与协处理器的寄存器传送的相应指令。

ARM指令集详细介绍见附录A。

2.5构对运行平台的支持——Jazelle技术

运行Java虚拟机(JVM)解释Java字节码这种方式对大多数嵌入式应用来说占用空间过多,运行速度过慢。而系统发展的趋势及市场的需求决定了Java应用需要有更强的图形处理能力以及一个强大的Java虚拟机。于是催生出了Jazelle技术,从硬件上对Java虚拟机提供支持。

Jazelle DBX(Direct Bytecode eXecution)是一种硬件架构扩展技术,为ARM处理器引入了第三套指令集—Java字节码。新指令集建立了一种新的状态,处理器在此状态下处理Java字节码取指令、译码和维护Java操作数栈等任务。允许它们在某些架构的硬件上加速执行Java字节码,就如其他执行模式般,它能在现存的ARM与Thumb模式之间互相切换。为了降低芯片尺寸并提高性能,Jazelle DBX没有设计成传统形式的微引擎,而是融入流水线中的一个有限状态机。如图2.2所示



图2.2加入了Java硬件加速的ARM流水线示意图

Jazelle DBX技术增加了一条新的“Branch-to-Java”指令来进入Java状态。此指令支持条件执行,先检查条件标志,如果条件满足,处理器进入Java状态,跳转到指定目标地址,开始执行Java字节码。在Java状态下,PC寄存器仍是32位寻址Java字节代码。字节码的取指、译码分别在两个流水段完成(对应ARM/Thumb状态下为一个译码流水级)。32位的取指令操作一次性可以取4个Java字节码,性能优势十分明显,对于一个高度优化的商业Java虚拟机,运行评测程序或复杂的MIDP2.0应用,Jazelle DBX技术通常可带来约2~4倍的性能提升。Jazelle DBX技术允许所有的Java指令是“可重新开始”的。这样在执行Java指令过程中,即刻响应中断,从而减少中断延迟,确保实时性能。

  在ARM处理器的Java状态下,有若干个ARM寄存器可以功能复用(包括栈指针、栈顶四项(top4 elements of stack)、局部变量0等)。正是这些硬件复用设计,才使得只用了很少的额外逻辑(约一万两千门)就实现了一个Java机。把所有Jazelle DBX扩展所需的状态用ARM寄存器保存,也保证了和现有操作系统、中断处理程序和异常处理代码的兼容性。把栈顶四项保存在ARM寄存器中也能提高Java性能。大量的程序分析显示,大多数程序的栈深度是很小的,所以这项策略可以尽量减少内存访问,硬件也可自动处理栈溢出或下溢。

和Java协处理器或其它专用Java处理器设计不同的是,Jazelle DBX和主处理器共用缓存,这一方面能够降低功耗,而且还可以提高性能。另一个重要的设计考虑是确保Jazelle DBX技术不会影响实时中断性能,仍保持与操作系统中已有ARM异常处理代码的兼容。图2.3是在加入了Jazelle的ARM处理器中运行Java应用的垂直架构架图。

图2.3加入了Jazelle的ARM处理器上的Java应用垂直架构图


上一页 1 2 下一页

关键词:ARM体系结

评论


技术专区

关闭