第2章 ARM处理器概述
2.1 ARM发展历程
ARM是一种嵌入式处理器的体系架构,它由ARM公司设计,但是ARM公司自己却不生产也不销售ARM芯片,它只出售芯片生产授权,只有得到ARM公司授权的公司才能生产ARM芯片。
ARM公司1990年成立于英国剑桥的一个谷仓里,当时只有12人。ARM公司于1991年开发出第一个嵌入式RISC内核——ARM6处理器,发展到今天,ARM公司的半导体合作伙伴所生产的基于ARM技术的处理器每年的出货量已近30亿个。
如今ARM公司已经成为全球最大的微处理器知识产权公司,ARM处理器产品线也覆盖了微处理器应用的每一个领域,从成本非常低的嵌入式微控制器,到要求非常高的网络、手机和消费娱乐应用的多核处理器,ARM处理器现在已经无处不在:包括LGViewty、诺基亚N95和索尼爱立信P1i智能手机、iPhone和iPod、Garmin、Navman和TomTom的便携式导航系统、柯达照相机、索尼摄像机、任天堂DS掌上游戏机、东芝高清数字电视、三星和希捷的硬盘驱动器、博世汽车刹车系统、惠普打印机、Linksys和Netgear的无线路由器等各种产品中都能看到ARM处理器的身影。
目前全世界几乎所有的半导体公司都通过授权获得了ARM处理器架构;这其中著名欧美半导体公司有:英特尔、德洲仪器、三星半导体、摩托罗拉、飞利浦半导体、意法半导体、亿恒半导体、科胜讯、ADI公司、安捷伦、高通公司、Atmel、Intersil、Alcatel、Altera、Cirrus Logic、Linkup、Parthus、LSI Logic、Micronas、Silicon Wave、Virata、Portalplayer inc.、NetSilicon、Parthus等。日本的许多著名半导体公司如东芝、三菱半导体、爱普生、富士通半导体、松下半导体等公司较早期都大力投入开发了自主的32位CPU结构,但现在都转向购买ARM公司的芯核进行新产品设计,但由于它们购买ARM版权较晚,现在还没有可销售的ARM芯片,而OKI、NEC、AKM、OAK、Sharp、Sanyo、Sony、Rohm等日本半导体公司目前都已经生产了ARM芯片。韩国的现代半导体公司也生产ARM芯片。另外,国外也有很多设备制造商采用ARM体系架构设计自己的专用芯片,如美国的IBM、3COM和新加坡的创新科技等。我国台湾地区可以提供ARM芯片的公司有台积电(TSMC)、台联电(UMC)、华邦电子等。大陆已购买ARM授权且正在设计自主版权专用芯片的公司有中兴通讯等。
2.2 ARM处理器特点
ARM处理器以低功耗、低成本、实用性强为特点,并以优异的产品性能著称于世,其主要特点包括以下几个方面:
1)体积小、低功耗、低成本、高性能;
2)支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件;
3)大量使用寄存器,指令执行速度快;
4)大多数数据操作都在寄存器中完成;
5)寻址方式灵活简单,执行效率高;
6)采用精简指令集(RISC),指令长度固定。
此外,ARM处理器还采用了一些特别的技术,在保证高性能的同时尽量减小芯片体积,降低芯片功耗,这些技术包括:
1)在同一条数据处理指令中包含算术逻辑处理单元处理和移位处理;
2)使用地址自动增量(增加或减少)来优化程序中循环处理;
3)Load/Store指令可以批量传输数据,从而提高数据传输的速率;
4)所有指令都可以根据前面指令的执行结果决定是否执行,以提高指令的执行效率。
2.3 ARM处理器应用
基于ARM处理器的优异性能,如今ARM处理器及技术的应用随处可见,几乎已经深入到各个领域,主要包括:
1)工业控制领域:作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
2)无线通信领域:目前已有超过85%的无线通信设备采用了ARM处理器及其技术,ARM处理器以其高性能和低成本,在该领域的地位日益巩固。
3)网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM处理器在语音及视频处理上进行了优化,并获得了广泛支持,所以ARM处理器及其技术对DSP的应用领域也提出了挑战。
4)消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到了广泛应用。
5)成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。
除此之外,ARM微处理器及技术还应用到许多其他领域,并将获得越来越广泛的应用。
2.4 ARM体系架构
至今,ARM体系架构共定义了6个版本,版本号分别为1~6,随着版本号的递增,ARM体系架构的指令集功能不断扩大,同时各种版本有一些变种,变种定义了该版本指令集中不同的功能。各种ARM处理器的生产厂家和实现技术各不相同,性能差别也很大,应用也不尽相同,但是只要它们属于相同的ARM体系架构版本,那么用于它们的应用软件就能兼容。
2.4.1 ARM体系架构版本
■ 版本1(ARMv1)
ARMv1在ARM1处理器中实现,但ARMv1并没有商业化。ARMv1的特点有:
1)只支持除乘法指令之外的其他基本数据处理指令;
2)支持字节、字、多字的读写指令(Load/Store);
3)支持包括bl的跳转指令;
4)支持用于操作系统的软中断指令swi。
■ 版本2(ARMv2)
ARMv2在ARMv1的基础上增加了以下指令:
1)乘法指令和乘加法指令;
2)协处理指令;
3)为FIQ模式增加了两个额外的备份寄存器;
4)swp指令和swpb指令。
■ 版本3(ARMv3)
ARMv3在以前版本基础上进行了比较大的改进,包括:
1)处理器地址空间扩展到了32位,但除了ARMv3G(ARMv3的一个变种)外都兼容以前版本的26位地址空间;
2)增加了当前程序状态寄存器CPSR(Current Program Status Register),将原来R15寄存器的功能移到了CPSR寄存器上;
3)增加了备份程序状态寄存器SPSR(Saved Program Status Register);
4)增加了中止(包括数据访问中止和指令预取中止)和未定义指令异常两种处理器模式;
5)增加了mrs和msr指令,用于访问CPSR和SPSR寄存器;
6)修改了原来的从异常中断返回指令。
■ 版本4(ARMv4)
ARMv4在ARMv3的基础上增加了以下指令:
1)半字读写指令;
2)读取(Load)带符号字节和半字数据指令;
3)增加了T变种,处理器可以切换到Thumb状态,执行16位Thumb指令;
4)增加处理器系统(System)模式;
5)明确定义了哪些指令会引起未定义指令异常;
6)不再强制要求与以前的26位地址空间兼容。
■ 版本5(ARMv5)
ARMv5在ARMv4的基础上增加和修改了以下指令:
1)提高了T变种中ARM/Thumb混合使用的效率;
2)对于T变种的指令和非T变种的指令使用相同的代码生成技术;
3)增加了前导零计数(Count Leading Zeros)指令,它使得整数除法和中断优先级排队操作更加有效;
4)增加了软件断电指令;
5)为协处理器设计提供了更多的可选择指令;
6)更加严格定义了乘法指令对条件标志位的影响。
■ 版本6(ARMv6)
ARMv6的主要特点是增加了SIMD功能扩展,它适用于用电池供电的高性能便携式设备。SIMD功能扩展为包括音/视频处理在内的应用系统提供了优化功能,它可以使音/视频处理性能提高4倍。
ARMv6体系架构版本首先在2002年春季发布的ARM11处理器中使用。
2.4.2 ARM体系架构变种(Variant)
■ T变种
T变种的处理器支持Thumb指令集。
T变种从ARMv4中引入,支持Thumb指令的ARM体系版本用字符T来表示。
■ M变种
M变种的处理器增加了两条用于长乘法操作的ARM指令,其中一条用于实现32位整数乘以32位整数生成64位整数的长乘法;另一条指令用于实现32位整数乘以32位整数然后再加上32位整数生成64位整数的长乘法。
M变种从ARMv3中引入,支持长乘法指令。ARM体系版本用字符M来表示。
■ E变种
E变种包含了一些附加指令,用于增强处理器对一些典型的DSP算法的处理性能,包括:
1)增加了几条新的实现16位数据乘法和乘加操作指令;
2)实现饱和带符号数的加减法操作指令。所谓的饱和带符号数的加减法操作是在加减法操作溢出时并不进行卷绕(wrapping around),而是使用最大的整数或最小的负数来表示;
3)进行双子数据操作的指令ldrd、strd、mcrr、mrrc;
4)cache预取指令pld。
■ J变种
J变种使ARM的Jazelle技术将Java的优势和先进的32位RISC芯片完美地结合在一起,与普通的Java虚拟机相比,Jazelle使Java代码运行速度提高了8倍,而功耗却降低了80%;
J变种首先在ARMv4TEJ中使用,用字符J表示。
■ SMID变种
SMID变种增加了媒体功能扩展,其主要特点是:
1)将音频、视频处理性能提高2~4倍;
2)可以同时进行两个16位操作数或者4个8位操作数的运算;
3)提供了小数算术运算;
4)用户可以定义饱和运算模式;
5)两套16位操作数的乘加/乘减运算;
6)32位乘以32位的小数MAC;
7)同时8位/16位选择操作。
SMID变种的主要应用领域包括:
1)互联网应用系统;
2)流媒体应用系统;
3)MPEG4编解码系统;
4)语音和手写输入识别;
5)FFT处理;
6)复杂的算术运算;
7)Viterbi处理。
2.4.3 ARM体系架构版本命名格式
ARM体系架构版本号一般命名方法如下:
ARMvN(x)B(x)B…
其中:
N:表示版本号,取值范围为1~6,如:ARMv6。
B:各种变种的代表字符,一个版本中可能存在多个变种,所以一个版本号中可以包含多个变种字符,ARMv5TE表示ARMv5版本中同时包含了T和E两个变种功能。
(x):如果变种字符前面加了x字符,那么表示该版本中不含该变种功能,如ARMv4xM表示ARMv4版本中不包含M变种的功能。
表2-1列出到目前为止有效的ARM体系架构版本名及其含义。
表2-1 有效的ARM体系架构版本名及其含义
2.5 ARM处理器
ARM处理器目前包括下面几个系列:
1)ARM7系列
2)ARM9系列
3)ARM9E系列
4)ARM10E系列
5)SecurCore系列
6)Intel的StrongARM
7)Intel的Xscale
其中,ARM7、ARM9、ARM9E和ARM10是4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求,而SecurCore系列专门为安全要求较高的应用设计。
下面我们介绍一下各种处理器的特点及其应用领域。
2.5.1 ARM7系列处理器
ARM7系列处理器是低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点:
1)具有嵌入式ICE-RT逻辑,调试开发方便;
2)极低的功耗,适合对功耗要求较高的应用,如便携式产品;
3)能够提供0.9MIPS/MHz的三级流水线结构;
4)代码密度高并兼容16位的Thumb指令集;
5)对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等;
6)指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代;
7)主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。
ARM7系列处理器的主要应用领域为:工业控制、互联网设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。
ARM7系列处理器包括如下几种类型:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是使用最广泛的32位嵌入式RISC处理器,属于低端ARM处理器。TDMI的基本含义为:
T:支持16位压缩指令集Thumb;
D:支持片上Debug;
M:内嵌硬件乘法器(Multiplier);
I:嵌入式ICE,支持片上断点和调试点。
ARM7TDMI芯片有:S3C44B0、S3C4510、AT40800等。
2.5.2 ARM9系列处理器
ARM9系列处理器在高性能和低功耗特性方面提供最佳的性能,具有以下特点:
1)5级整数流水线,指令执行效率更高;
2)提供1.1MIPS/MHz的哈佛结构;
3)支持32位ARM指令集和16位Thumb指令集;
4)支持32位的高速AMBA总线接口;
5)全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统;
6)MPU支持实时操作系统;
7)支持数据Cache和指令Cache,具有更高的指令和数据处理能力。
ARM9系列处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。
ARM9系列微处理器包括ARM920T、ARM922T和ARM940T三种类型。
2.5.3 ARM9E系列处理器
ARM9E系列处理器是综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大地减少了芯片的面积和系统的复杂程度。ARM9E系列处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。ARM9E系列处理器的主要特点如下:
1)支持DSP指令集,适合于需要高速数字信号处理的场合;
2)5级整数流水线,指令执行效率更高;
3)支持32位ARM指令集和16位Thumb指令集;
4)支持32位的高速AMBA总线接口;
5)支持VFP9浮点处理协处理器;
6)全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统;
7)MPU支持实时操作系统;
8)支持数据Cache和指令Cache,具有更高的指令和数据处理能力;
9)主频最高可达300MIPS。
ARM9系列处理器主要应用于无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。
ARM9E系列微处理器包括ARM926EJ-S、ARM946E-S和ARM966E-S三种类型。
2.5.4 ARM10E系列处理器
ARM10E系列处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50%,同时,ARM10E系列处理器采用了两种先进的节能方式,使其功耗极低。ARM10E系列处理器的主要特点如下:
1)支持DSP指令集,适合于需要高速数字信号处理的场合;
2)6级整数流水线,指令执行效率更高;
3)支持32位ARM指令集和16位Thumb指令集;
4)支持32位的高速AMBA总线接口;
5)支持VFP10浮点处理协处理器;
6)全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统;
7)支持数据Cache和指令Cache,具有更高的指令和数据处理能力;
8)主频最高可达400MIPS;
9)内嵌并行读/写操作部件。
ARM10E系列处理器主要应用于无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。
ARM10E系列微处理器包括ARM1020E、ARM1022E和ARM1026EJ-S三种类型。
2.5.5 SecurCore系列处理器
SecurCore系列微处理器专为安全产品设计,提供了完善的32位RISC技术的安全解决方案,SecurCore系列处理器除了具有ARM体系结构的低功耗、高性能的特点外,还具有其独特的优势,即提供了对安全解决方案的支持。SecurCore系列处理器除了具有ARM体系结构各种主要特点外,还在系统安全方面具有如下特点:
1)带有灵活的保护单元,以确保操作系统和应用数据的安全;
2)采用软内核技术,防止外部对其进行扫描探测;
3)可集成用户自己的安全特性和其他协处理器。
SecurCore系列微处理器主要应用于对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。
SecurCore系列微处理器包括SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210四种类型。
2.5.6 StrongARM处理器
Intel StrongARM SA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器,它融合了Intel公司的设计和处理技术以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。
Intel StrongARM处理器是便携式通信产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品中。
2.5.7 Xscale处理器
Xscale处理器是由Intel生产的基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器,它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个人数字助理(PDA)和网络产品等领域。