arm嵌入式原理技术及应用ch2_第1页
arm嵌入式原理技术及应用ch2_第2页
arm嵌入式原理技术及应用ch2_第3页
arm嵌入式原理技术及应用ch2_第4页
arm嵌入式原理技术及应用ch2_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2010.12陈赜ARM嵌入式技术原理与应用

4/5/20231第二章ARM体系结构及编程模型4/5/20232◆了解ARM技术的应用领域◆熟悉ARM微处理器系列的基本类型和主要特点◆理解ARM微处理器的工作状态和工作模式◆掌握ARM微处理器的存储器系统和寄存器组织以及异常中断的应用。

4/5/202332.1ARM微处理器的特点ARM(AdvancedRISCMachines,ARM)既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。4/5/20234ARM公司于1990年11月在英国剑桥成立,前身为Acorn计算机公司。ARM公司是全球领先的16/32位嵌入式RISC微处理器解决方案供应商。ARM公司是知识产权(IP)公司,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。

4/5/20235 目前,全世界有几十家著名的半导体公司都使用ARM公司的授权,其中包括MOTOROLA、IBM、Intel、LG、SONY、NEC、ATMEL等,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM处理器核的设计可以很快投入市场。

ARM公司已成为移动通信、手持设备、多媒体数字消费嵌入式解决方案的RISC标准。4/5/20236采用RISC指令集低功耗、低成本、高性能使用大量的寄存器ARM/THUMB指令支持三/五级流水线ARM微处理器特点:4/5/20237采用RISC架构的ARM处理器一般具有如下特点:固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种;使用单周期指令,便于流水线操作执行;大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。4/5/20238ARM处理器共有37个寄存器,被分为若干个组,这些寄存器包括:31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器;6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位。4/5/20239ARM微处理器支持两种指令集ARM指令集和Thumb指令集ARM指令为32位的长度,Thumb指令为16位长度Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。4/5/202310除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗。所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。可用加载/存储指令批量传输数据,以提高数据的传输效率。可在一条数据处理指令中同时完成逻辑处理和移位处理。在循环处理中使用地址的自动增减来提高运行效率。4/5/2023112.2ARM微处理器系列介绍1.ARM7系列ARM7采用冯·诺依曼(Von-Neumann)结构,数据存储器和程序存储器使用同一存储空间,用相同的指令访问。此结构也被大多数计算机所采用。ARM7为三级流水线结构(取指,译码,执行),平均功耗为0.6mW/MHz,时钟速度为66MHz,每条指令平均执行1.9个时钟周期。4/5/202312

ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为(对其它系列也适用):

T:支持16为压缩指令集Thumb,称为T变种

D:支持片上Debug,称为D变种

M:内嵌硬件乘法器Multiplier,称为M变种

I:嵌入式ICE,支持片上断点和调试,称为I变种4/5/202313表2-1ARM7系列产品项目型号Cache(Ins/Data)MemoryMgtBusThumbDSPJazelle指令版本ARM7TDMINoNoAHBYesNoNov4TARM7TDMI-SNoNoAHBYesNoNov4TARM720T8KBMMUAHBYesNoNov4TARM7EJNoNoAHBYesYesYesv5TEJ4/5/2023142.ARM9系列ARM7采用的冯·诺依曼VonNeumann结构,取指令和取操作数都是通过一条总线分时进行,这样,在高速运算时,不但不能同时取指令和取操作数,而且还会造成传输通道上的瓶颈现象。ARM9采用哈佛(Harvard)结构,程序存储器与数据存储器分开,提供了较大的存储器带宽。同时,大多数DSP都采用此结构。

4/5/202315

ARM9为五级流水(取指,译码,执行,缓冲/数据,回写),平均功耗为0.7mW/MHz。时钟速度为120MHz-200MHz,每条指令平均执行1.5个时钟周期。ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,主要应用在手持产品、视频电话、PDA、数字消费产品、机顶盒、家用网关等方面。4/5/202316表2-2ARM9系列产品项目型号Cache(Ins/Data)MemoryMgtBusThumbDSPJazelle指令版本ARM920T16KB/16KBMMUASBYesNoNov4TARM922T8KB/8KBMMUASBYesNoNov4TARM940T4KB/4KBMMUASBYesNoNov4T4/5/2023173.ARM9E系列ARM9E系列微处理器包括如下4种类型的核:ARM926EJ-S、ARM946E-S和ARM966E-S,见表2-3。

4/5/202318表2-3ARM9E系列产品项目型号Cache(Ins/Data)MemoryMgtBusThumbDSPJazelle指令版本ARM926EJ-S可变MMU2*AHBYesYesYesv5TEJARM946E-S可变MPUAHBYesYesNov5TEARM966E-S无--AHBYesYesNov5TEARM968E-S无DMAAHBYesYesNov5TE4/5/202319ARM9E系列是一种包含有微控制器、DSP、Java功能的综合处理器,强化了数字信号处理能力,适用于需要DSP和微控制器结合使用的情况,并且把Thumb技术和DSP都扩展到了ARM指令中,并且具有EmbededICE-RT逻辑,更好地适应了实时系统开发的需要。同时ARM9E使用了Jazelle增强技术,该技术支持一种新的Java操作状态,在硬件中执行Java字节码。4/5/2023204.ARM10系列

ARM10系列微处理器包括:ARM1020E和ARM1022E等型号,见表2-4。ARM10系列采用了新的体系结构,其核心为使用了向量浮点单元,有强大的浮点运算能力,并且增加了Cache容量和总线宽度,并且具有低功耗的特点。ARM10系列微处理器主要应用于下一代无线设备、视频消费品等。4/5/202321表2-4ARM10系列产品项目型号Cache(Ins/Data)MemoryMgtBusThumbDSPJazelle指令版本ARM1020E32KB/32KBMMU2*AHBYesYesNov5TEARM1022E16KB/16KBMMU2*AHBYesYesNov5TEARM1022E可变

MMU2*AHBYesYesYesv5TEJ4/5/202322

5.ARMStrong/Xscale系列StrongARM是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Intrl公司的设计技术,以及ARM体系结构的电源效率,其体系结构在软件上兼容ARMv4,同时又具有Intel技术优点。

4/5/202323

StrongARM是Intrl公司为手持消费类电子和移动计算与通信设备生产的嵌入式处理器。采用StrongARM架构的处理器有:SA-1、SA-110、SA-1100、SA1110和IXP1200。Xscale是基于ARMv5体系结构的解决方案,是一款性能全、性价比高、功耗低的处理器,支持16位的Thumb和DSP指令集,主要应用于数字移动电话、个人数字助理和网络产品等。Xscale架构的处理器有:PXA250、PXA255和PXA270等。4/5/202324

6.ARM11系列ARM11系列微处理器内核最新内核:ARM1156T2-S内核、ARM1156T2F-S内核、ARM1176JZ-S内核和ARM11JZF-S内核。4/5/202325

7.SecurCore系列

SecurCore系列微处理器除了具有ARM体系结构各种主要特点外,还在系统安全方面具有如下的特点:(1)带有灵活的保护单元,确保操作系统和应用数据的安全;(2)采用软内核技术,防止外部对其进行扫描探测;(3)可集成用户自己的安全特性和其他协处理器。4/5/202326

8.ARMCortex系列ARMCortex发布于2005年,ARMCortex系列的三款产品全都集成了Thumb®-2指令集,可满足各种不同的日益增长的市场需求。ARMCortex系列的三款处理器:1)ARMCortex-A系列:针对复杂操作系统以及用户应用设计的应用处理器;2)ARMCortex-R系列:实时系统专用嵌入式处理器;3)ARMCortex-M系列:针对微控制器和低成本应用专门优化的深嵌入式处理器。4/5/202327

9.基于32位ARM核微处理器基于32位ARM核微处理器的主要公司有:1)ST(意法半导体)公司32位ARM核微处理器。主要有:STR7、STR9和STM32系列。2)Freescale公司32位微控制器与处理器,主要是MCF52xx系列。3)OKI公司32位ARM7DMI核微处理器,主要是ML67xx系列。4)ATMEL公司微控制器,主要是AT91FR、AT91M、AT91RM、AT91SAM等系列。

4/5/2023285)PHILIPS飞利浦/NXP恩智浦ARM单片机,主要是LPC21xx,LPC22xx等系列。6)Intel公司的StrongARM系列和XScale系列。7)SamSung公司的ARM系列,主要有S3C44B0X、S3C2410X、S3C2440X、S3C5410X等系列。8)TI公司的ARM处理器主要是OMAP、C5470/C5471等系列。9)CirrusLogic公司的ARM处理器系列,主要是EP9xxx等系列。

4/5/202329ARM系列产品命名规则ARM926EJ-SFamilynumber7:ARM79:ARM910:ARM1011:ARM11Memorysystem

2:Cache,MMU,ProcessID4:Cache,MPU6:Writebuffer,nocacheMemorysize0:Cachesize(4-128KB)2:Reducedcachesize6:TCMSynthesizableExtensions

E:DSPextensionJ:Jazelleextension

T:Thumbsupport…4/5/2023301.ARM体系结构的特点总体思想在不牺牲性能的同时,尽量简化处理器。同时从体系结构的层面上灵活支持处理器扩展。这种简化和开放的思路使得ARM处理器采用了很简单的结构来实现。2.3ARM体系结构4/5/202331

ARM处理器是最先进的目前,ARM32位体系结构被公认为业界领先的32位嵌入式RISC微处理器核,所有ARM处理器都共享这一体系结构。4/5/202332

1)RISC型处理器结构

ARM采用RISC结构,在简化处理器结构,减少复杂功能指令的同时,提高了处理器的速度。 考虑到处理器与存储器打交道的指令执行时间远远大于在寄存器内操作的指令执行时间,RISC型处理器采用了Load/Store(加载/存储)结构,即只有Load/Store指令可与存储器打交道,其余指令都不允许进行存储器操作。

4/5/202333 为了进一步提高指令和数据的存取速度,RISC型处理器增加了指令高速缓冲I-Cache和数据高速缓冲D-Cache及多处理器结构,使指令的操作尽可能在寄存器之间进行。4/5/202334只能对寄存器执行算术和逻辑操作,Load/Store体系结构4/5/202335

2)Thumb指令集

虽然ARM处理器本身是32位设计,但考虑到RISC型处理器的指令功能相对较弱,新型的ARM体系结构中定义了16位的Thumb指令集。 Thumb指令集比通常的8/16位CISC/RISC处理器有更好的代码密度,而芯片面积只增加6%,却可以使程序存储器更小。

4/5/202336

3)多处理器状态模式 ARM体系结构定义了7种处理器模式:用户、快中断、中断、管理、终止、未定义和系统模式,大大提高了ARM处理器的效率。

4)两种处理器工作状态 ARM状态(执行32位ARM指令)Thumb状态。(执行16位Thumb指令)4/5/202337

5)嵌入式在线仿真调试 ARM体系结构的处理器芯片都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试芯片,省去了价格昂贵的在线仿真器。

4/5/202338

6)灵活方便的接口 ARM体系结构具有协处理器接口,允许接16个协处理器。既可以使基本的ARM处理器内核尽可能小,方便地扩充ARM指令集,也可以通过未定义指令来支持协处理器的软件仿真。

7)低电压功耗的设计 考虑到ARM处理器主要用于手持式嵌入式系统中,在设计中就十分注意功耗的设计。4/5/202339ARM核体系结构ARM1V1ARM2V2ARM2aS,ARM3V2aARM6,ARM600,ARM610V3ARM7,ARM700,ARM710V3ARM7TDMI,ARM710T,ARM720TARM740TV4TStrongARM,ARM8,ARM810V4ARM9TDMI,ARM920T,ARM940TV4TARM9E-SV5TEARM10TDMI,ARM1020EV5TEARM11,ARM1156T2-S,ARM1156T2F-S,ARM1176JZ-S,ARM11JZF-SV64/5/2023402.ARM9体系结构 比较最常用的是ARM920T内核,ARM920T结构主要部分有7部分构成:ARM9TDMI内核CPUMMUCache协处理器接口运行跟踪信息接口(ETM)JTAG调试接口总线接口4/5/202341ARM9TDMI体系结构框图ARM9TDMICPU指令接口数据地址接口跟踪接口数据接口JTAG接口指令地址接口ARM9TDMI结构框图4/5/202342ARM920T体系结构框图4/5/202343ARM920T体系结构框图4/5/202344ARM9TDMI核性能 0.25微米的ARM9TDMI核在执行32位ARM代码时的特性综述于下表3。核的版图示于下页图。4/5/2023452.4ARM流水线结构

1.流水线技术概述

流水线方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。4/5/202346

处理器按照一系列步骤来执行每一条指令。典型的步骤为:1)从存储器读取指令(fetch)2)译码以鉴别它是哪一类指令(dec)3)从寄存器组取得所需的操作数(reg)4)将操作数进行组合以得到结果或存储器地址(exe)5)如果需要,则访问存储器存取数据(mem)6)将结果回写到寄存器组(res)4/5/2023472.ARM7的三级流水线1取指:从程序存储器中取指令,放入指令流水线。(占用存储器访问操作)2译码:指令译码。(占用译码逻辑)3执行:执行指令/读写REG。(占用ALU及数据路径)4/5/202348下图为3个单周期指令在流水线上的情况。一条指令有3个时钟周期的执行时间,但吞吐量是每个周期1条指令。取指译码执行取指译码执行取指译码执行t123PC值如何计算?PC指向处于读取级的指令地址,而不是处于执行级的指令地址PC=当前执行指令地址+8ARM单周期指令的3级流水线操作4/5/202349

优秀的流水线结构

OperationCycle 1 23 4 56ADDSUBMOVANDORREORCMPRSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch4/5/2023503.ARM9TDMI的五级流水线ARM7TDMI与ARM9TDMI流水线比较4/5/2023514.ARM7和ARM9流水线比较

5级流水线的ARM9内核是哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以在同一周期进行;3级流水的ARM7内核是指令和数据总线复用的冯.诺依曼架构,指令和数据的读取不能在同一周期进行;5级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中,每一级流水的操作简洁,提升了处理器的主频。4/5/202352随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了处理器的性能;负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线;流水线级数的增加也意味着在某些段之间会产生数据相关。4/5/202353

ARM处理器性能比较4/5/2023542.5ARM总线结构ARM微控制器使用的是AMBA总线体系结构AMBA(AdvancedMicrocontrollerBusArchitecture)是ARM公司公布的总线标准,先进的AMBA规范定义了三种总线:4/5/202355AHB总线(AdvancedHigh-performanceBus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿。ASB总线(AdvancedSystemBus):用于连接高性能系统模块,它支持突发数据传输模式。APB总线(AdvancePeripheralBus):是一个简单接口支持低性能的外围接口。4/5/202356从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:ARM状态,此时处理器执行32位的字对齐的ARM指令;Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。ARM处理器有两种工作状态和7种工作模式。2.6ARM微处理器的工作状态与模式1.ARM处理器的两种工作状态4/5/202357THUMB指令是ARM指令的子集可以相互调用,只要遵循一定的调用规则Thumb指令与ARM指令的时间效率和空间效率关系为:存储空间约为ARM代码的60%~70%指令数比ARM代码多约30%~40%存储器为32位时ARM代码比Thumb代码快约40%存储器为16位时Thumb比ARM代码快约40~50%使用Thumb代码,存储器的功耗会降低约30%4/5/202358ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,在开始执行代码时,应该处于ARM状态。状态切换方法两种状态可以切换程序执行过程中,通过执行带状态切换的分支指令BX,随时在两种工作状态之间进行切换。并且,处理器工作状态的转变,并不影响处理器的工作模式和相应寄存器中的内容。4/5/202359进入Thumb状态当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。此为主动切换。当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。此为自动切换。4/5/202360切换到ARM状态

在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。有两种情况ARM处理器自动切换到Thumb状态。(1)执行BX指令,当操作数寄存器的位[0]为0时,则微处理器从Thumb状态切换到ARM状态。(2)当处理器在Thumb状态时发生异常(如IRQ、FIQ、Undef等),则处理器从Thumb状态自动切换到ARM状态进行异常处理4/5/202361

例:状态切换程序;从ARM状态切换到Thumb状态 LDR R0, =Lable+1 BX R0;从Thumb状态切换到ARM状态 LDR R0, =Lable BX R0

注意:ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。ARM处理器在开始执行代码时,只能处于ARM状态。4/5/2023621)处理器模式用户模式(usr):ARM处理器正常的程序执行状态,大部分任务执行在这种模式。快速中断模式(fiq):当一个高优先级(fast)中断产生时将会进入这种模式,用于高速数据传输或通道处理外部中断模式(irq):当一个低优先级(normal)中断产生时将会进入这种模式。用于通用的中断处理2.ARM处理器的工作模式4/5/202363管理模式(svc):当复位或软中断指令执行时将会进入这种模式,供操作系统使用的一种保护模式。中止模式(abt):当存取异常时将会进入这种模式,用于虚拟存储及存储保护。系统模式(sys):供需要访问系统资源的操作系统任务使用,运行具有特权的操作系统任务未定义模式(und):当执行未定义指令时会进入这种模式,软件仿真硬件协处理器。4/5/2023642)模式特点

(1)用户模式特点:应用程序不能够访问受操作系统保护的系统资源。应用程序不能进行处理器模式的切换。(2)系统模式特点:

不属于异常模式,不是通过异常进入的。系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行模式的切换。它主要供操作系统使用。4/5/202365

(3)特权模式及其特点: 特权模式:除用户模式之外的工作模式又称为特权模式 特点: 应用程序可以访问所有的系统资源 可以任意地进行处理器模式的切换4/5/202366

(4)异常模式及其特点:

异常模式: 除用户模式、系统模式之外的五种模式称为异常模式。 特点:以各自的中断或异常方式进入,并且处理各自的中断或异常。4/5/202367

对管理模式(svc)进入方式和处理内容有:

①系统上电复位后进入管理模式,运行系统初始化程序,如中断允许/禁止,主时钟设置,SDRAM配置,各个功能模块初始化等。

②当执行软件中断指令SWI时,进入管理模式。4/5/2023683)模式切换处理器模式可以通过软件进行切换,也可以通过外部中断或者异常处理过程进行切换。当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式下都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏。4/5/202369处理器模式的切换方式:软件控制进行切换。通过外部中断和异常进行切换处理器启动时的模式转换图管理模式(Supervisor)多种特权模式变化用户程序的运行模式复位后的缺省模式主要完成各模式的堆栈设置,注意不要进入用户模式一般为用户模式User4/5/202370系统模式并不是通过异常进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。4/5/202371系统模式它主要供操作系统任务使用通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。4/5/2023722.7ARM体系结构的存储器格式1.ARM处理器支持以下6种数据类型:8位有符号和无符号字节(Byte)。16位有符号和无符号半字(Halfword)它们必须以两字节的边界对齐(半字对齐)。32位有符号和无符号字(word)它们必须以4字节的边界对齐(字对齐)。4/5/202373

字对齐:字单元地址的低两位A1A0=0b00。即地址末位为0x0,0x4,0x8,0xc。半字对齐:半字单元地址的最低位A0=0b0(地址末位为0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe)。4/5/202374◆对于指令,ARM指令系统分为32位ARM指令集和16位的Thumb指令集,在存储时分别以32位和16位的两种不同长度存储。◆对于数据,ARM支持对32位字数据,16位半字数据,8位字节数据操作。因此数据存储器可以存储32位,16位,8位三种不同长度数据。

4/5/202375

在ARM内部,所有操作都面向32位的操作数,只有数据传送指令支持较短的字节和半字的数据类型。当从存储器读入一个字节或半字时,根据其数据类型将其扩展到32位。4/5/2023762.ARM存储器组织

ARM存储器以8位为一个单元存储数据(一个字节),每个存储单元分配一个存储地址。ARM将存储器看作是从零地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。

4/5/202377

从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。32位的字数据要使用4个地址单元,16位半数据要使用2个地址单元。这样,就存在一个所存储的字或半字数据的排列顺序问题。ARM体系结构可以用两种方法存储字数据,称为大端格式和小端格式

。4/5/202378大端格式(big-endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

小端格式(low-endian):与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。缺省设置为小端格式。2.7ARM存储器格式4/5/2023793.ARM存储器层次

微处理器希望存储器容量大、速度快。但容量大者速度慢;速度快者容量小。解决方法是构建一个由多级存储器组成的复合存储器系统。

两级存储器方案一般包括: 一个容量小但速度快的从存储器

一个容量大但速度慢的主存储器

宏观上看这个存储器系统像一个即大又快的存储器。这个容量小但速度快的元件是Cache,它自动地保存处理器经常用到的指令和数据的拷贝。4/5/202380多级存储器系统寄存器组

——访问时间约为几个ns。片上RAM

——与片外RAM比速度快、功耗小、容量小。读写时间约为几个ns。片上Cache

——8—32KB,访问时间约为十几个ns。主存储器

——一般为几兆字节—1GB的动态存储器,访问时间约50ns。CPU寄存器组片上RAM片上Cache主存储器硬盘4/5/2023812.8寄存器组织

ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。

4/5/2023821.ARM状态下的寄存器组织通用寄存器:通用寄存器包括R0~R15,可以分为三类:未分组寄存器R0~R7分组寄存器R8~R14程序计数器PC(R15)4/5/202383ARM状态下的寄存器组织4/5/202384未分组寄存器R0~R7在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。4/5/202385分组寄存器R8~R12每次所访问的物理寄存器与处理器当前的运行模式有关R8~R12:每个寄存器对应两个不同的物理寄存器当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。4/5/202386分组寄存器R13~R14R13、R14:每个寄存器对应6个不同的物理寄存器其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式采用以下的记号来区分不同的物理寄存器:R13_<mode>R14_<mode>mode为以下几种之一:usr、fiq、irq、svc、abt、und。4/5/202387堆栈指针—R13R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初始化部分,都要初始化每种模式下的R13,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。4/5/202388子程序连接寄存器—R14R14也称作子程序连接寄存器或连接寄存器LR。当执行BL子程序调用指令时,可以从R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。 BL SUB1 …… SUB1: STMFD SP!,{<regs>,LR}/*将R14存入堆栈*/ …… LDMFD SP!,{<regs>,PC}/*完成子程序返回*/4/5/202389程序计数器PC(R15)ARM状态下,位[1:0]为0,位[31:2]用于保存PC;Thumb状态下,位[0]为0,位[31:1]用于保存PC;R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。4/5/202390程序状态寄存器(CPSR/SPSR)寄存器R16用作CPSR(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(备份的程序状态寄存器),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。4/5/202391由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。4/5/202392Thumb状态下的寄存器组织

Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同样,每一种特权模式下都有一组SP、LR和SPSR。

4/5/202393Thumb状态下的寄存器组织图4/5/202394Thumb状态下的寄存器与ARM状态下的寄存器关系Thumb状态下和ARM状态下的R0~R7是相同的。Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。Thumb状态下的SP对应于ARM状态下的R13。Thumb状态下的LR对应于ARM状态下的R14。Thumb状态下的程序计数器对应于ARM状态下R15。4/5/202395Thumb状态下的寄存器与ARM状态下的寄存器关系图4/5/202396访问THUMB状态下的高位寄存器(Hi-registers)

在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。使用带特殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。4/5/202397程序状态寄存器作用

ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs)(1)当前程序状态寄存器CPSR(CurrentProgramStatusRegister)---用来保存当前程序状态的寄存器。---所有处理器模式下都可以访问当前程序状态寄存器CPSR。仅一个CPSR。4/5/202398(2)保存程序状态寄存器SPSR_mode

(SavedProgramStatusRegister)SPSR_mode用来进行异常处理,其功能包括: ─保存ALU中的当前操作信息当异常发生时,用来保存CPSR的值,从异常返回时,将SPSR_mode复制到CPSR中,恢复CPSR的值。 ─控制允许和禁止中断 修改SPSR的值 ─设置处理器的运行模式 修改SPSR的值

4/5/202399程序状态寄存器的每一位的安排

4/5/2023100程序状态寄存器的条件码标志

N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。

4/5/2023101影响标志位的指令标志位含

义N当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零;ZZ=1表示运算的结果为零;Z=0表示运算的结果为非零;C加法运算结果进位时,C=1,减法运算借位时,C=0;移位操作的非加/减运算指令,C为移出的最后一位;其他的非加/减运算指令,C的值通常不改变。V加/减法运算指令,V=1表示符号位溢出。对于其他的非加/减运算指令,C的值通常不改变。Q在ARMv5及以上版本的E系列处理器中,Q标志指示DSP运算指令是否溢出。在其他版本中,Q标志位无定义。4/5/2023102程序状态寄存器的控制位

状态寄存器的低8位(I、F、T和M[4:0])称为控制位,发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。中断禁止位I、F:I=1禁止IRQ中断;I=0允许IRQ中断F=1禁止FIQ中断;F=0允许FIQ中断T标志位:该位反映处理器的运行状态T=1时,程序运行于Thumb状态T=0时,程序运行于ARM状态

运行模式位M[4:0]是模式位,决定处理器的运行模式

4/5/2023103处理器运行模式及可以访问的寄存器M[4:0]处理器模式可访问的寄存器0b10000用户模式PC,CPSR,R0-R140b10001FIQ模式PC,CPSR,SPSR_fiq,R14_fiq-R8_fiq,R7~R00b10010IRQ模式PC,CPSR,SPSR_irq,R14_irq,R13_irq,R12~R00b10011管理模式PC,CPSR,SPSR_svc,R14_svc,R13_svc,R12~R0,0b10111中止模式PC,CPSR,SPSR_abt,R14_abt,R13_abt,R12~R0,0b11011未定义模式PC,CPSR,SPSR_und,R14_und,R13_und,R12~R0,0b11111系统模式PC,CPSR(ARMv4及以上版本),R14~R04/5/2023104

1.中断和异常的概念

1)中断

当CPU正在执行程序时,系统发生了一件急需处理的事件,CPU暂时停下正在执行的程序,转去处理相应的事件,事件处理完后,CPU再返回执行原来的程序,这种情况称为中断。

2.9异常

4/5/2023105

中断事件:引起CPU产生中断、并且与CPU当前所执行的程序无关的、由外部硬件产生的事件,也叫中断源。中断事件也常称为外中断。

中断是计算机系统基本的功能利用中断,外设可以与CPU并行工作,当外设需要传输数据或控制时,向CPU发出中断请求信号。CPU响应其请求进行处理。因此,使用中断既可以实现CPU与外设并行工作,又可以实时处理各种紧急事件。4/5/20231062.异常

是指CPU在执行指令时出现的错误,即不正常的情况。异常是与当前所执行的程序有关的。如存取数据或指令错误、计算结果溢出等。

异常的处理:也用中断的方式进行处理。 计算机通常是用中断来处理外中断和异常,因此下面将二者均称为异常。

4/5/2023107对异常的说明当系统运行时,异常可能会随时发生,为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。

4/5/2023108

当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。 我们需要处理所有的异常,尽管我们可以简单的在某些异常处理程序处放置死循环。4/5/20231093.ARM的异常

ARM有7种异常(1)复位处理器上一旦有复位输入,ARM处理器立刻停止执行当前指令。复位后,ARM处理器在禁止中断的管理模式下,从地址0x00000000或0xFFFF0000开始执行指令。

4/5/2023110

(2)未定义指令异常当ARM处理器执行协处理器指令时,它必须等待任一外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,就会出现未定义指令异常。未定义指令异常可用于在没有物理协处理器(硬件)的系统上,对协处理器进行软件仿真,或在软件仿真时进行指令扩展。4/5/20231113)软件中断异常该异常由执行SWI指令产生,可使用此机制进行软件仿真。4)预取中止(取指令存储器中止)若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。5)数据中止(访问数据存储器中止)若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。4/5/20231126)IRQ异常当处理器的外部中断请求引脚有效,且CPSR中的I=0,产生IRQ异常。系统的外设可通过该异常请求中断服务。7)FIQ异常当处理器的外部中断请求引脚有效,且CPSR中的F=0,产生FIQ异常。FIQ支持数据传送和通道处理,并有足够的私有寄存器,从而在应用中可避免对寄存器保存的需求,减少了开销。4/5/20231134.ARM异常中断响应过程当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的程序去处理异常。ARM处理器对异常中断的响应过程如下:

4/5/2023114

(1)保存返回地址 将引起异常指令的下一条指令的地址保存到新的异常模式x下的R14,即R14-<mode>中,使异常处理程序执行完后能正确返回原程序。

(2)保存当前状态寄存器CPSR的内容 将CPSR的内容保存到将要执行的异常中断对应的SPSR中,便于中断返回时恢复处理器当前的状态位、中断屏蔽位以及各条件标志位。4/5/2023115(3)设置当前状态寄存器CPSR中的相应位设置CPSR模式控制位CPSR[4:0],使处理器进入相应的执行模式;设置中断标志位(CPSR[6]=1),禁止IRQ中断;设置中断标志位(CPSR[7]=1)禁止FIQ中断,当进入Reset或FIQ模式时。

4/5/2023116

(4)转去执行中断处理程序 取相应的中断向量给程序计数器PC,使程序开始执行中断处理程序。

一般地说,矢量地址处将包含一条指向相应程序的转移指令,从而可跳转到相应的异常中断处理程序处执行异常中断处理程序。4/5/2023117 R14_<Exception_Mode>=ReturnLink SPSR_<Exception_Mode>=CPSR CPSR[4:0]=ExceptionModeNumber CPSR[5]=0 If<Exception_Mode>==ResetorFIQthen CPSR[6]=1 CPSR[7]=1 PC=ExceptionVe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论