1第2章ARM体系结构参考书:《ARM嵌入式处理器结构与应用基础》马忠梅,马广云,徐英慧,等北京航空航天大学出版社22.1ARM体系结构概述2.1.1ARM体系结构的特点0、概述:ARM公司ARM即AdvancedRISCMachines的缩写。ARM公司是知识产权(IP)供应商,成立于1990。ARM公司本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。ARM作为32位嵌入式RISC微处理器业界的领先供应商,商业模式的强大之处在于它在世界范围有超过100个合作伙伴——包括半导体工业的著名公司,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM处理器核的设计可以很快投入市场。3ARM处理器的3大特点是:耗电少,成本低,功能强;16/32位双指令集;全球众多合作伙伴保证供应。ARM体系结构基于精简指令集计算机(RISC)原理。传统的CISC指令集计算机随着计算机的发展引入了各种各样的复杂指令,使得指令集和为实现这些指令的计算机体系结构越来越复杂,已经不堪重负。经过大量的研究和分析,发现在CISC的指令集中,各种指令的使用频度相差悬殊。•大概有20%的指令被反复使用,使用量约占整个程序的80%;•而有80%左右的指令则很少使用,其使用量约占整个程序的20%。这就是所谓的20%—80%规律。4RISC指令集和相关的译码机制比复杂指令集计算机(CISC)的设计更简单。这种简单性得到了:高指令吞吐率;出色的实时中断响应;体积小、性价比高的处理器宏单元。16位Thumb指令集,允许软件16位编码使占用的存储器空间节省高达35%,然而保留了32位系统所有的优势。5ARM还提供了两个前沿特性——嵌入式ICE—RT逻辑和嵌入式跟踪宏核系列,用于辅助嵌入式处理器核的、高集成的SoC器件的调试。允许在代码的任何部分——甚至在ROM中设置断点。ARM当前有5个产品系列:ARM7、ARM9、ARM9E、ARM10和SecurCore。进一步的产品来自于合作伙伴,例如IntelXScale微体系结构和StrongARM产品。61.ARM的RISC型处理器结构中央控制器没有采用微程序的方式。采用了硬接线PLA的方式。减少复杂功能的指令,选用使用频度最高的指令;简化处理器的结构,减少处理器的集成度;采用32位定长指令。除了单机器周期执行1条指令外,每条指令具有多种操作功能,提高了指令使用效率。采用流水线结构,使每一条指令平均在一个机器周期内完成,以提高处理器的速度。采用多寄存器的结构,使指令的操作尽可能在寄存器之间进行。采用Load/Store结构,即只有Load/Store(加载/存储)指令可与存储器打交道,减少访问存储器的频度,节约指令执行时间。为了进一步提高指令和数据的存/取速度,有的还增加指令快存I—Cache和数据快存D—Cache;72.Thumb指令集新型ARM体系结构在32位指令集的基础上又定义了16位的Thumb指令集,可以使程序存储器更小。Thumb指令集比通常的8位和16位CISC/RISC处理器具有更好的代码密度,而芯片面积只增加6%。83.多处理器状态模式ARM可以支持7种处理器模式:用户模式快中断模式中断模式管理模式中止模式系统模式未定义模式除了用户模式外,其余的均为特权模式。这是ARM的特色之一。多处理器模式可以大大提高ARM处理器的效率,并方便操作系统的设计。94.嵌入式在线仿真调试ARM体系结构的处理器芯片都嵌入了在线仿真ICE—RT逻辑由于ICE—RT逻辑的支持,便于通过JTAG来仿真调试ARM体系结构芯片,从而可以省去价格昂贵的在线仿真器。在处理器核中还集成了嵌入式跟踪宏单元(ETM),ETM可以用于监控内部总线,实时跟踪指令和数据的执行。105.灵活和方便的接口ARM体系结构具有协处理器接口,这样,既可以使基本的ARM处理器内核尽可能小,又可以方便地扩充各种功能。ARM允许接16个协处理器。ARM处理器核具有片上总线AMBA(AdvancedMicrocontrollerBusArchitecture)。AMBA定义了3组总线:先进高性能总线AHB(AdvancedHighperformanceBus);先进系统总线ASB(AdvancedSystemBus);先进外围总线APB(AdvancedPeripheralBus)。通过AMBA可以方便地扩充各种处理器及I/O,这样,可以把DSP、其他处理器和I/O接口(如UART、定时器和接口等)都集成在一块芯片中。116、低电压低功耗的设计由于ARM体系结构的处理器主要用于手持式嵌入式系统之中,ARM体系结构在设计中十分注意低功耗问题。CMOS电路的功耗关系:Pc=(1/2)·f·VDD2·∑Ag·CLg式中,f为时钟频率;VDD为工作电源电压;Ag是逻辑门在1个时钟周期内翻转的次数(通常为2);CLg为门的负载电容。因此,ARM体系结构的设计采用了以下措施:降低电源电压,可工作在3.0V以下。减少门的翻转次数,当某个功能电路不需要时,禁止门翻转。减少门的数目,即降低芯片的集成度。降低时钟频率(但也会损失系统的性能)。122.1.2ARM处理器结构1.ARM体系结构是ARM体系结构:32位ALU;31个32位通用寄存器6个状态寄存器32×8位乘法器32×32位桶形移位寄存器指令译码及控制逻辑指令流水线数据/地址寄存器。如图4—1所示13FIG4-1142.ARM的流水线结构计算机中的1条指令的执行可以分若干个阶段:①取指,从存储器中取出指令(fetch);②译码,指令译码(dec);③取操作数,假定从寄存器组中取操作数(reg);④执行运算(ALU);⑤存储器访问,操作数与存储器有关(mem);⑥结果写回寄存器(res)。各个阶段的操作相对都是独立的。因此,采用流水线的重叠技术可以大大提高系统性能。15ARM体系结构的单周期3级流水线图4—5ARM单周期3级流水线取指译码执行取指译码执行取指译码执行时间123163.ARM存储器结构•ARM架构的处理器,有的带有指令Cache和数据Cache,但片内不带有片内RAM和片内ROM,因此,系统所需的RAM和ROM须通过总线外接。•系统所需的RAM和ROM(包括Flash)都通过总线连接,由于系统的地址范围较大(232=4GB),有的片内还带有存储器管理单元MMU。•图4—8ARM外接RAM和ROM17图4—8ARM外接RAM和ROMROMoeRAMoeRAMwe3RAMwe2RAMwe1RAMwe0A1、A0没有接入片内地址线,他们是确定RAMwe3~RAMwe0的依据。184.ARMI/O结构ARM架构中的处理器核和处理器内核一般都没有I/O部件和模块,ARM架构处理器的I/O可通过AMBA(先进微控制总线架构)总线来扩充。ARM架构中的I/O直接存储器存取DMA中断结构。19(1)存储器映射I/O一般的I/O(如串行接口)有若干个寄存器:发送数据寄存器(只写);数据接收寄存器(只读);控制寄存器、状态寄存器(只读);中断允许寄存器;等。这些寄存器都需要相应的I/O端口地址。ARM采用了存储器映射I/O的方式,即把I/O端口地址作为特殊的存储器地址。20(2)直接存储器存取DMAARM架构的处理器一般都没有DMA部件,只有在一些高档的ARM架构处理器中具有DMA的功能。(3)中断IRQ和快速中断FIQ一般的ARM没有DMA功能,为了能提高I/O处理能力,系统安排了快速中断FIQ(FastInterrupt),而对普通I/O的中断源仍安排了一般中断IRQ。要提高中断响应的速度,在设计中可以采用以下办法:提供大量后备寄存器,在中断响应及返回时,作为保护现场和恢复现场的上下文切换(ContextSwitching)之用。采用片内RAM结构,这样可以加速异常处理(包括中断)的进入时间。Cache和地址变换后备缓冲器TLB(TranslationLookasideBuffer)采用锁住(Lockeddown)方式以确保临界代码段不受“不命中”所产生的影响。215.ARM协处理器接口ARM可以通过增加协处理器来支持一个通用的指令集的扩充;也可以通过未定义指令陷阱(Trap)来支持协处理器的软件仿真。22ARM可以扩展16个协处理器,每个协处理器可有16个寄存器。MMU和保护单元的系统控制都采用CPl5协处理器;JTAG调试中的协处理器为CPl4,即调试通信通道DCC(DebugCommunicationChannel)协处理器号功能15系统控制14调试控制器13~8保留7~4用户3~0保留236.ARM的AMBA接口ARM处理器内核可通过内部总线扩充Cache等部件,或通过协处理器接口扩充各种协处理器;也可以通过先进微控制器总线架构AMBA(AdvancedMicrocontrollerBusArehitecture)来扩展不同体系架构的宏单元及I/O部件。AMBA事实上已成为片上总线OCB(OnChipBus)标准。AMBA有如下3类总线:先进高性能总线AHB(AdvancedHigh-performanceBus);先进系统总线ASB(AdvancedSystemBus)先进外围总线APB(AdvancedPeripheralBus)。AMBA结构如图4—9所示。24257.ARM的JTAG调试接口JTAG的基本知识什么是JTAG?JTAG是JointTestActionGroup的缩写,基于IEEE1149.1标准。使用JTAG的优点•JTAG的建立使得集成电路固定在PCB上,只通过边扫描便可以通过测试。•在ARM7TDMI处理器中,可以通过JTAG直接控制ARM的内部总线,I/O口等信息,从而达到调试的目的。26JTAG调试接口的结构如图4—10所示。测试访问端口TAP(TestAccessPort)控制器;旁路(Bypass)寄存器;指令寄存器;数据寄存器;与JTAG接口兼容的ARM架构处理器。27处理器的每个引脚都有一个移位寄存单元,称为边界扫描单元BSC(BoundaryScanCell):BSC将JTAG电路与处理器核逻辑电路联系起来,同时,隔离了处理器核逻辑电路与芯片引脚;所有边界扫描单元的串联构成了边界扫描寄存器BSR;BSR寄存器电路仅在进行JTAG测试时有效,在处理器核正常工作时无效(直通)。28芯核逻辑BSCBSCBSCBSCBSCBSC29(1)JTAG的控制寄存器测试访问端口TAP控制器:对嵌入在ARM处理器核内部的测试功能电路进行访问控制,它是一个同步状态机。通过测试模式选择TMS和时钟信号TCK来控制状态的转换,实现IEEEll49.1标准所确定的测试逻辑电路的工作时序。指令寄存器:它是串行移位寄存器,通过它可以串行输入执行各种操作指令。数据寄存器组:它是一组串行移位寄存器。操作指令被串行装入由当前指令所选择的数据寄存器,随着操作的进行,测试结果被串行移出。其中:器件ID寄存器:读出在芯片内固化的ID号。旁路寄存器:1位移位寄存器,用1个时钟的延迟把TDI连至TDO,使测试者在同一电路板测试循环内访问其他器件。边界扫描寄存器(扫描链):截取ARM处理器核与芯片引脚之间所有信号,组成专用的寄存器链。30(2)JTAG测试信号TRST测试复位输入信号,测试接口初始化。TCK测试时钟,在TCK时钟的同步作用下,通过TDI和TDO引脚串行移入/移出数据或指令,同时也为测试访问端口TAP控制器的状态机提供时钟。TMS测试模式选择信号,在TCK同步下控制测试接口状态机的操作。TDI测试数据输入线,其串行输入数据送至边界扫描寄存器或指令寄存器(由TAP控制器的当前状态及已保存在指令寄存器中的指令来控制)。TDO测试数据输出线,把从边界扫描链采样的数