3.1 ARM体系结构概述
体系结构最为重要的就是处理器所提供的指令系统和寄存器组。指令系统分为CISC(Complex Instruction Set Computer,复杂指令集计算机)和RISC(Reduced Instruction Set Computer,精简指令集计算机)。其中,嵌入式系统中的CPU往往是RISC结构的。ARM核就是RISC结构,由于其在嵌入式系统中占的比重比较大,所以,ARM几乎成为RISC的代名词了。
在体系结构中,还有存储器结构。现在有两种:冯·诺依曼结构和哈佛结构。传统的计算机采用冯·诺依曼结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。该结构的主要特点:程序和数据共用一个存储空间;程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置;采用单一的地址及数据总线;程序指令和数据的宽度相同。这样,处理器在执行指令时,必须从存储器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费几个甚至几十个周期,那么,在高速运算时,在传输通道上会
出现瓶颈效应。哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,哈佛结构是一种并行体系结构,主要特点是:程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统中的4套总线:程序的数据总线和地址总线,数据的数据总线和地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字和操作数,从而提高了执行速度,使数据的吞吐量提高了1倍。
3.1.1 ARM体系结构简介
ARM(Advanced RISC Machines)公司是专门从事基于RISC技术芯片设计开发的公司,主要设计ARM系列RISC处理器内核,是授权ARM内核给生产和销售半导体的合作伙伴。另外也提供基于ARM架构的开发设计技术,如软件工具、评估板、调试工具、应用软件、总线架构和外围设备单元等。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,使得ARM技术获得了更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场,更具有竞争力。
(1)ARM微处理器的特点
采用RISC架构的ARM微处理器一般具有如下特点:
■ 支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件。Thumb指令集比通常的8位和16位CISC/RISC处理器具有更好的代码密度。
■ 指令执行采用3级流水线/5级流水线技术。
■ 带有指令Cache和数据Cache,大量使用寄存器,指令执行速度更快。大多数数据操作都在寄存器中完成。寻址方式灵活简单,执行效率高。指令长度固定。
■ 支持大端格式和小端格式两种方法存储字数据。
■ 支持字节(8位)、半字(16位)和字(32位)3种数据类型。
■ 支持用户、快中断、中断、管理、中止、系统和未定义7种处理器模式,除了用户模式外,其余的均为特权模式。
■ 处理器芯片上都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试ARM体系结构芯片,可以避免使用昂贵的在线仿真器。另外,在处理器核中还可以嵌入跟踪宏单元ETM,用于监控内部总线,实时跟踪指令和数据的执行。
■ 具有片上总线AMBA。
■ 采用存储器映像I/O的方式,即把I/O接口地址作为特殊的存储器地址。
■ 具有协处理器接口。ARM允许接16个协处理器,如CP15用于系统控制,CP14用于调试控制器。
■ 采用了降低电源电压,可工作在3.0V以下;减少门的翻转次数,当某个功能电路不需要时禁止门翻转;减少门的数目,即降低芯片的集成度;降低时钟频率等一些措施降低功耗。
■ 体积小、低成本、高性能。
■ ARM微处理器包括ARM7、ARM9、ARM9E、ARM10E、SecurCore及Intel的StrongARM、XScale和其他厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。
(2)ARM体系结构组成
典型的ARM体系结构如图3-1所示,包含有32位ALU、31个32位通用寄存器及6位状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器等。
图3-1 ARM体系结构图
1)ALU
ARM体系结构的ALU与常用的ALU逻辑结构基本相同,由两个操作数锁存器、加法器、逻辑功能、结果及零检测逻辑构成。ALU的最小数据通路周期包含寄存器读时间、移位器延迟、ALU延迟、寄存器写建立时间、双相时钟间非重叠时间等几个部分。
2)桶形移位寄存器
ARM采用了32×32位桶形移位寄存器,左移/右移n位、环移n位和算术右移n位等都可以一次完成,可以有效的减少移位的延迟时间。在桶形移位寄存器中,所有的输入端通过交叉开关(Crossbar)与所有的输出端相连。交叉开关采用NMOS晶体管来实现。
3)高速乘法器
ARM为了提高运算速度,采用两位乘法的方法,两位乘法可根据乘数的两位来实现“加-移位”运算。ARM的高速乘法器采用32×8位的结构,完成32×2位乘法也只需5个时钟周期。
4)浮点部件
在ARM体系结构中,浮点部件作为选件可根据需要选用,FPA10浮点加速器以协处理器方式与ARM相连,并通过协处理器指令的解释来执行。
浮点的Load/Store指令使用频度要达到67%,故FPA10内部也采用Load/Store结构,有8个80位浮点寄存器组,指令执行采用流水线结构。
5)控制器
ARM的控制器采用硬接线的可编程逻辑阵列PLA,其输入端有14根、输出端有40根,分散控制Load/Store多路、乘法器、协处理器及地址、寄存器ALU和移位器。
6)寄存器
ARM内含37个寄存器,包括31个通用32位寄存器和6个状态寄存器。
3.1.2 ARM体系结构的技术特征
ARM处理器是第一个为商业用途而开发的RISC微处理器。ARM所采用的体系结构,对于当时的RISC体系结构既有继承,又有抛弃,即完全根据实际设计的需要进行研究。ARM的体系结构中采用了若干Berkeley RISC处理器设计的特征,但也放弃了其他若干特征。该体系采用的特征如下:
■ Load/Store体系结构。
■ 固定的32位指令。
■ 地址指令格式。
在Berkeley RISC设计采用的特征中被ARM设计者放弃的RISC的技术特征如下:
■ 寄存器窗口
Berkeley RISC处理器的寄存器堆中使用寄存器窗口,使得任何时候总有32个寄存器是可见的。进程进入和退出都访问新的一组寄存器,因此,减少了因寄存器保存和恢复导致的处理器和存储器之间的数据拥塞和时间开销,这是拥有寄存器窗口的优点。但是寄存器窗口的存在以大量寄存器占用较多的芯片资源为代价,使得芯片成本增加,因此,在ARM处理器设计时未采用寄存器窗口。
■ 延迟转移
多数RISC处理器采用延迟转移来改善这一问题,即在后续指令执行后才进行转移。并没有采用在原来的ARM中延迟转移,因为它使异常处理过程更加复杂。
■ 所有指令单周期执行
ARM被设计为使用最少的时钟周期来访问存储器,但并不是所有指令都单周期执行。数据和指令占有同一总线,使用同一存储器时,即使最简单的Load和Store指令也最少需要访问两次存储器。当访问存储器需要超过一个周期时,就多用一个周期。因此,并不是所有ARM指令都是在单一时钟周期内执行的,少数指令需要多个时钟周期。高性能的ARM使用分开的数据和指令寄存器,才有可能把Load和Store指令的指令存储器和数据访问存储器操作单周期执行。
3.1.3 CISC的体系结构
为满足实际应用的需要,同时涉及兼容性、系列机、支持高级语言等诸多因素,微处理器的功能越来越强大,结构越来越复杂,这就是传统的CISC技术。CISC技术的发展使微处理器的功能更加完善,支持高级语言的能力越来越强,处理特殊问题的效率也越来越高,程序与指令之间的距离越来越近。但是硬件更加复杂,冗余设计逐渐增加,不但浪费资源,而且使得系统复杂化。
目前的CISC技术具有以下特点:
■ 指令系统复杂
随着机器的更新换代,指令条数不断增加,指令种类不断丰富,寻址方式不断扩充,特殊指令越来越多,这就使指令系统越来越复杂。
■ 指令结构复杂
随着指令条数的增加,使指令的结构形式越来越长,包括的内容越来越多。
■ 指令的执行时间长
指令结构复杂,就需要更多的时间分析解释,更多的机器周期完成规定的功能。
■ CPU结构复杂
指令复杂,功能强大,使CPU需要有更多的电路部件支持相应的功能,更快更完善地完成指令规定的任务。
■ 微程序控制
指令条数多,形式复杂,硬件译码难以实现。
3.1.4 RISC的体系结构
RISC是一种CPU,它把微处理器能执行的指令数目减少到最低限度,以提高处理速度。RISC体系结构的思想是把指令减少到不能再减少的地步,突出并优化最常使用的指令,以达到尽可能快的执行速度。RISC处理器比同等的CISC处理器要快50%~75%,且RISC处理器容易设计和纠错。
RISC技术的主要特点如下:
■ 精心选择指令,优化指令系统
确定指令系统时,为做到精简,选取使用频度最高的一些简单指令,以及用处大又不复杂的指令。同时,采用简单的指令格式、固定的指令字长和简单的寻址方式,让指令的执行尽可能安排在一个周期内完成。
■ 采用加载(load)、存储(store)结构
只允许加载、存储指令执行存储器操作,其余指令均对寄存器操作。大大增加通用寄存器的数量以提高速度。由于内存的速度较慢,CPU需要等待指令载入到寄存器,如上所述,不允许CPU出现空闲,因此,提早载入指令也是增加运算速度的一种方法。至于储存结果时,CPU可以同时载入下一条要执行的指令。
■ 不用微码技术
由于RISC的设计采用简单、合理的指令系统和简化的寻址方式,所以排除了微代码设计技术,也即不采用微码只读存储器,而是直接在硬件中执行指令,这意味着省去了将机器指令转化为原始微码这一中间步骤,也就减少了执行一条指令所需的机器周期个数,节省了芯片的空间,使得可以利用省下来的芯片空间扩展微处理器功能。
■ 大寄存器堆
RISC微处理器中大量的计算都在ALU高速寄存器中执行,由编译器产生、分配和优化寄存器的使用,从而简化了流水线结构,并使指令周期降到最小,同时又不访问内存,允许调用的嵌套执行,但这也增加了ALU周期中的寄存器存取时间和一些选址机构,因此,在任务变换中需要较高的开销。
■ 采用高速缓存结构
采用高速缓存结构,可保证指令不间断地传送给CPU运算器,采用硬连线控制,在CPU内设置了一定大小的cache,以扩展存储器的带宽,满足CPU频繁取指需求,一般有两个独立cache,分别存放“指令+数据”,即指令高速缓存和数据高速缓存。因此,可将存储器存取周期插入到使用高速缓存和工作寄存器的流水线存取操作中。
■ 高效的流水线操作
目前,不论什么结构的微处理器都毫无例外地采用了流水线技术,以达到高速执行指令的能力。CISC微处理器执行指令时效率低,有时甚至会使执行过程处于短暂的停滞状态。例如,当处理器遇到一条执行时间比预定时间长的指令时,它必须延长这个指令的操作,这样就阻止其他指令在流水线中正常执行流水操作,直到这条指令完成,这种状态除了降低了执行指令效率外,还迫使设计者将微处理器的微结构在硬件设计上设计得更加复杂,以便对付这些问题。而在RISC微处理器设计中,它具有对指令执行时间的预测能力,因此,它能使流水线在高效率状态下运行。
■ 延迟转移
由于数据从存储器到寄存器存在速度差,转移指令要进行入口地址的计算,这使CPU执行速度大大受限,因此,RISC技术为保证流水线高速运行,在它们之间允许加一条不相关的可立即执行的指令,以提高速度。
■ 硬连线控制
采用少量、简单、固定的硬连线控制逻辑替代微码以实现减少指令系统,保证短周期、单周期执行指令,但不能处理复杂指令,除在特定状态机或使用垂直微码外,不能处理多个LOAD/STORE指令。
■ 采用寄存器窗口技术
为了简单有效地支持高级语言,RSIC设计者把大寄存器堆分成多个重叠寄存器窗口,用于在执行高级语言中的过程调用和返回子程序的直接转换参数,这样就减少了调用和返回访问主存所消耗的计算时间。在RISC机器中,复杂指令是用子程序来实现的,因此,RISC程序的调用数量必然大大超过CISC程序中的调用数量。采用重叠寄存器窗口技术可以大大减少调用和返回子程序访问的次数。
■ 优化编译程序
编译程序能够分析数据流和控制流,并在这个基础上调整指令的执行顺序,巧妙安排寄存器的用法。在RISC的设计中,内存访问和条件转移都可能出现与流水线相关的问题,而优化编译器可以替代用复杂、昂贵的硬件来解决的难题,例如,在访问内存时引起的时间延迟,可以通过合理利用寄存器使之达到最小影响程度;当一个寄存器的内容要为随后的运算所利用,而又无需从内存取时,优化编译程序可以识别出这种状态来;当遇到这样一条指令,访问内存不可回避时,编译程序能够重新排列这些指令,使得微处理器在等待把数据调入寄存器的这个时间里,其他有效工作照常执行,并不需要等待取数据时间。类似地,一个优化编译程序也可以通过“延迟转移”的方法来处理无法预测的条件转移。
3.1.5 RISC系统和CISC系统的比较
虽然RISC在一定程度上弥补了CISC的不足,但是它并不完善,存在许多问题,还需要不断的改进。在目前这种情况下可以采取一些折中的方案,如在RISC处理器的内部装一个将CISC指令代码转换成RISC指令代码的部件,使其能执行CISC复杂的指令。
RISC系统和CISC系统的不同之处在于以下这些方面:
1)指令系统。RISC指令等长,指令执行周期数大多为l。没有了CISC中的复杂的寻址模式,提高了取指令和译码的效率。RISC对不常用的功能,通过组合指令来完成。虽然执行效率较低,但可以通过流水线等技术来弥补这方面的不足。而CISC计算机的指令系统复杂,指令执行周期数平均为4,有专用的指令来完成特定的工作。
2)程序设计。RISC程序设计复杂,需要多条指令支持,不易设计;而CISC则程序设计简单,效率较高。
3)RISC处理器的集成规模相对CISC处理器较小。RISC微处理器结构简单,布局紧凑,包含较少的单元电路,面积小、功耗低;而CISC微处理器电路单元复杂,功能强大,因此面积大、功耗大。
4)RISC技术能更好地支持现代处理器技术,如并行处理,虽然RISC有这些优点,但它至今还未完全取代CISC。
与CISC相比较,RISC有三大优势:
1)基于RISC体系结构设计的处理器管芯面积小。处理器的简单使得需要的晶体管减少和实现的硅片面积减小,节省了更大面积可集成更多的功能部件,并且也使以RISC CPU为核心的SOC上实现一个应用系统的基本功能成为可能。
2)开发时间短,开发成本低。处理器组织、结构的简单使设计人员减少、设计费用降低。
3)容易实现高性能。RISC体系结构具有简单性、有效性,能很容易设计出低成本、高性能的处理器。
RISC系统和CISC系统的比较参见表3-1。
表3-1 RISC系统和CISC系统的比较