ARM和英特尔还有一场“硬仗”要打!
(1) ARM处理器支持的指令集
ARM处理器可以支持3种指令集--ARM,Thumb和Jazelle。采用那种指令集,由cspr中的标志位来决定。大体说来:
ARM指令集可以是32位长的ARM指令,也可以是16位长的Thumb指令,这主要是为了兼容数据总线为16位的应用系统。所有的Thumb指令都有对应的ARM指令,Thumb只是ARM的一个真子集,而且Thumb指令舍弃了ARM指令集的一些特性,如大多数Thumb指令都是无条件执行的,而几乎所有的ARM指令都是有条件执行的,又如大多数的Thumb指令由于长度有限,目的寄存器是源寄存器中的一个,这跟x86的汇编指令集相似。
Thumb指令的优点在于它可以在保留32位代码优势的同时,大大节省系统的存储空间,因为在Thumb指令集中的操作数仍然是32位的,指令地址也是32位的,只是指令编码变成了16位,而ARM指令则为32位,所以,相比之下,实现同样的功能,Thumb指令的条数要比ARM略多。
下面以一个实例,对Thumb状态和ARM状态进行比较。
指令: Add Rd,#Constant
Thumb指令和ARM指令的比较
下面来看一下关于Jazelle 指令。
Jazelle DBX(Direct Bytecode eXecution)是一种硬件架构扩展技术,为ARM处理器引入了第三套指令集-Java字节码。新指令集建立了一种新的状态,处理器在此状态下处理Java字节码取指令、译码和维护Java操作数栈等任务。允许它们在某些架构的硬件上加速执行Java字节码,就如其他执行模式般,它能在现存的 ARM与Thumb模式之间互相切换。为了降低芯片尺寸并提高性能,Jazelle DBX没有设计成传统形式的微引擎,而是融入流水线中的一个有限状态机。如下图所示。
加入了Java硬件加速的ARM流水线示意图
Jazelle DBX技术增加了一条新的"Branch-to-Java"指令来进入Java状态。在ARM处理器的Java状态下,有若干个ARM寄存器可以功能复用 。正是这些硬件复用设计,才使得只用了很少的额外逻辑(约一万两千门)就实现了一个Java机。
(2) ARM指令与x86指令的比较
整个ARM指令集由数据处理指令、分支指令、Load-Store指令、程序中断指令和一些系统控制指令构成,除了Load-Store指令外,其他部分和x86指令集是比较类似的。
但和x86相比,ARM指令最显著的特点它们都是32-bit 定长的。
另外,由于ARM是基于RISC指令集的,所以CPU只处理在寄存器中的数据并通过独立的load-store指令在内存和寄存器之间进行数据的传递。
在使用方面,ARM指令的格式也要比Intel的复杂些。一般说来,一条ARM指令有如下的形式:
{S} [Rd], [Rn], [Rm],其中:
{S}:加上这个后缀的指令会更新cpsr 寄存器;
[Rd]:目的寄存器;
[Rn]/[Rm]:源寄存器。
一般来说,ARM 指令有3个操作数,其中Rm寄存器在执行指令前可以进入桶形移位器进行移位操作,而Rn则会直接进入ALU 单元。如果一条ARM 指令只有2 个操作数,那么源寄存器按照Rm 来处理。例如,一条加法指令:
add r0,r1, #1
就会把r1+1的结果存放到r0中。
在熟悉了基本的汇编格式后,读者就可以自行去查询基本的ARM汇编指令了,下面简单介绍一下ARM中比较有特色部分--Load-Store指令结构,由于ARM CPU并不直接处理内存中的数据,这个指令体系就担起了在寄存器和内存之间交换数据的重要媒介。
ARM的访存采用的都是LOAD-STORE结构,虽然它要比x86 的内存访问机制复杂一些,但是有个最大的好处,就是可以把每条指令的执行时间都平均化,有助于高效的流水线的实现,采用这种结构也就同时意味着指令都要在寄存器间进行操作,所以ARM体系中有大量的寄存器(不少于32个)。
由于篇幅的原因,关于LOAD-STORE体系结构,在这里不再赘述,有兴趣的读者可以查阅相关的资料。
7.ARM的未来
众所周知,ARM几乎垄断了手机和嵌入式芯片市场,不过进入2010年以来,关于手机芯片巨头ARM公司要进军服务器领域的消息多了起来,其中有捕风捉影、绘声绘色的传闻,也有正儿八经的新闻发布。
传闻也好,新闻也罢,消息一出,引发的却是行业的大讨论:
一个在手机领域占了90%以上份额的芯片,为什么突然对服务器感兴趣?
是不务正业,还是用意高远?
ARM公司及其用户拿什么去从Intel们、IBM们的嘴里夺食?是不自量力,还是另有高招?
ARM芯片在手机和嵌入式市场取得成功,是否意味着在用户需求和生态系统都更加复杂的服务器领域也能获得一席之地呢?
- 第一款处理器之谜(01-29)
- 处理器的春秋战国时代:8位处理器的恩怨与纷争(上)(02-18)
- 处理器的春秋战国时代:8位处理器的恩怨与纷争(下)(02-25)
- 处理器的三国时代:苹果搅动MCU江湖(03-01)
- 处理器的三国时代:DR公司盛气凌人,IBM转身成就微软(03-06)
- 32位处理器的攻“芯”计:英特尔如何称霸PC江湖?(03-15)