ARM微处理器体系结构及其发展趋势
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ARM微处理器体系结构及其发展趋势
摘要:嵌入式微处理器是体系结构研究领域的一个热点。本文从微处理器设计者的角度出发,对在嵌入式系统当中应用广泛的32位ARM微处理器系列的体系结构作了研究和探讨,同时分析了其发展趋势。
关键词: ARM;体系结构;嵌入式微处理器;发展趋势
1. 概述
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般具备以下4个特点:(1)对实时多任务有很强的支持功能,能完成多任务并且有较短的中断时间;(2)具有功能较强的存储区保护功能;(3)可扩展的处理器结构,以能最迅速地开发出满足应用的各种性能的嵌入式微处器;(4)功耗很低。
嵌入式处理器的基础是通用计算机中的CPU。但在工作温度、抗电磁干扰、可靠性等方面一般都作了各种增强。具有体积小、重量轻、成本低、可靠性高的优点,芯片中往往包括少量ROM和RAM甚至一定容量的FLASH,一般还包括总线接口、常用设备的控制器、各种外设等器件,从而极大的减少了构成系统的复杂性,因此又称之为片上系统(SystemOnchip,SOC)。
ARM(AdvancedRISCMachine)是英国ARM公司设计开发的通用32位RISC微处理器体系结构,其主要优势在于简单的设计和高效的指令集。ARM的设计目标是微型化、低功耗、高性能的微处理器实现。目前,ARM微处理器家族在嵌入式系统、掌上电脑、智能卡和GSM中断控制器等领域获得了广泛地应用,几乎占据了嵌入式处理器的半壁江山。
2. ARM体系结构
作为一种RISC体系结构的微处理器,ARM微处理器具有RISC体系结构的典型特征。还具有以下特点:
(1)在每条数据处理器指令当中,都控制算术逻辑单元(ALU)和移位器,以使ALU 和移位器获得最大的利用率;
(2)自动递增和自动递减的寻址模式,以优化程序中的循环;
(3)同时Load和Store多条指令,以增加数据吞吐率;
(4)所有指令都条件执行,以增大执行吞吐量。
这些是对基本RISC体系结构的增强,使得ARM处理器可以在高性能、小代码尺寸、低功耗和小芯片面积之间获得好的平衡。
作为一种RISC微处理器,ARM指令集的效率比基于CISC的系统高得多。指令集由11个基本指令类型组成,两种用于片上ALU、环形移位器和乘法器,3种用于控制存储器和寄存器之间的数据传送,另外3种控制执行的数据流和特权级别。最后3种指令用于控制外部协处理器,这使得指令集的功能可以在片外得到扩展。对于一些高级语言的编译器来说,ARM 的指令集是比较理想的。而且汇编器的编码也非常简单。ARM指令集的另一个特征是所有的
指令都支持条件执行。高效的指令集和简答的设计的结合,使ARM成为一种低功耗、小规模(近30万晶体管)、低价位和相对来说高性能的处理器。
(1)数据表示 ARM体系结构的字长为32位,它们都支持8位、16位、32位3种数据类型。
(2)处理器模式 ARM处理器支持7种处理器模式,如表1。
表1 处理器模式表
大部分应用程序都在User模式下运行。当处理器处于User模式下时,执行的程序无法访问一些被保护的系统资源,也不能改变模式,否则就会导致一次异常。对系统资源的使用由操作系统来控制。
User模式之外的其它几种模式也称为特权模式,它们可以完全访问系统资源,可以自由地改变模式。其中的FIQ、IRQ、Supervisor、Abort、Undefined 5种模式也被称为异常模式。在处理特定的异常时,系统进入这几种模式。这5种异常模式都有各自的额外的寄存器,用于避免在发生异常的时候与用户模式下的程序发生冲突。
还有一种模式是System模式,任何异常都不会导致进入这一模式,而且它使用的寄存器和User模式下基本相同。它是一种特权模式,用于有访问系统资源请求而又需要避免使用额外的寄存器的操作系统任务。
(3)寄存器结构 ARM处理器有37个寄存器,其中31个是32位的通用寄存器,包括一个程序计数器(ProgramCounter,PC)。在任何一种处理器模式下,其中的16个通用寄存器都是可见的。其它的寄存器用来加速异常处理。ARM指令当中指定的所有寄存器都可以从这16个可见的寄存器中寻址。
31个通用寄存器分为几个相互重叠的组,每一组寄存器用于一种特定的处理器状态。通常,一种状态下可见的寄存器为15个通用寄存器(R0~R14)、一个或两个状态寄存器和程序计数器PC。其中,R0~R7被称之为 unbanked register,表示在所有处理器模式中,它们都代表相同的32位物理寄存器。它们没有特殊的功用,仅当作通用寄存器使用。而寄存器R8~R14被称作banked register,它们实际代表的32位物理寄存器与当前的处理器状态有关。它们可以在指令中用作通用寄存器,同时,ARM体系结构还为它们中的一部分赋予了特殊的作用:R13用作堆栈指针SP,R14用作链接寄存器LR。另外6个寄存器是程序状态寄存器,它们也是32位宽的寄存器,但是只用到了32位中的12位。这6个寄存器也被称为程序状态寄存器。当前程序状态寄存器(CPSR)在所有的处理器模式下都可以访问。它包含了条件码、中断屏蔽码、当前处理器模式和其他的状态、控制信息。除此之外,每种异常模式都有一个保留程序状态寄存器(SPSR) ,用于在发生中断的时候保存CPSR的值。
(4)指令集 ARM指令集中的指令可以分为6个大类:分支指令、数据处理指令、状态寄存器转移指令、Load/Store指令、协处理器指令和异常产生指令。大部分数据处理指令和一部分协处理器指令在执行完毕之后需要根据指令执行的结果来更新程序状态寄存器当中的4个条件标志位(Negative,Zero,Carry,Overflow)。
ARM指令集的一个显著的特征是:几乎所有的ARM指令都包含一个4位的条件域。这个域的取值规定了指令的条件执行。如果条件域给出的相应条件位为真,则该条指令正常执行。否则就不执行该指令。条件域主要测试以下3个方面的内容:相等、不等关系;小于、小于等于、大于、大于等于种不等关系;单独测试程序状态寄存器中的每4种条件。ARM指令集的编码把所有指令分为11种格式,如表2。
表2 指令的11种格式
其中:1是数据处理指令、PSR传输指令;2是乘法指令;3是单数据交换指令;4是单数据传输指令;5是未定义;6是块数据传输指令;7是分支指令;8是协处理器数据传输指令;9是协处理器数据操作指令;10是协处理器寄存器传输指令;11是软中断指令。
和其他的RISC微处理器相比较,ARM指令集的编码格式相对来说较为复杂。这是为了在指令集的简单性、规整性和高效性以及对高级语言编译器的支持之间取得平衡。
3. ARM微处理器系列的发展
首个ARM芯片是在1985年由Acorn计算机公司设计的,采用的是典型32位RISC体系结构。其指令拥有4位的寄存器地址域,可以访问R0 R15这16个寄存器。使用了标准的、固定长度的32位指令格式,所有的ARM指令都使用了4位的条件码来决定该指令是否执行,这种方式可以解决一些条件分支问题。但是,首个嵌入式RISC核心———ARM6TM系列微处理器还只有26位的地址空间。
3.3.1 ARM7系列
两年后,通过引入ARM7,ARM公司将ARM TM体系结构完全扩展到32位,主频提升到40M,ARM7系列具有三级流水线和冯·诺依曼结构。另外还集成了一个8KCache。ARM7可以支持一种可以称为“Thumb”的模式,可以运行新的16位指令。该系列包括①ARM7TDMI:用于低端的、应用最广泛的ARM微处理器;②可以综合的ARM7TDMI- S:ARM7TDMI的综合版本,最适用于可移植性和灵活性为关键的现代设计;③ARM7EJ – S:支持DSP和Jazelle,DSP 用于DSP应用的算术运算指令集,Jazell 允许直接执行Java字节码的扩充;④ARM720T:具有MMU、安全性能,最适用于低功耗和小体积为关键的应用。基于ARM7TDMI核的控制器主要有ATMEL公司推出的AT91系列微控制器,Samsung公司推出的S3C3X系列、S3C4X系列,