ARM体系结构清华课件

上传人:阳*** 文档编号:92176303 上传时间:2022-05-18 格式:PPT 页数:84 大小:1.09MB
返回 下载 相关 举报
ARM体系结构清华课件_第1页
第1页 / 共84页
ARM体系结构清华课件_第2页
第2页 / 共84页
ARM体系结构清华课件_第3页
第3页 / 共84页
点击查看更多>>
资源描述
2第1章 ARM概述及其基本编程模型目前,基于目前,基于ARM技术的处理器已经占据了技术的处理器已经占据了32位位RISC芯片芯片75%的市场份额。可以说,的市场份额。可以说,ARM技术几乎无处不在。技术几乎无处不在。1990年年11月月ARM公司在英国剑桥的一个谷仓里成立,最初只公司在英国剑桥的一个谷仓里成立,最初只有有12人。经过人。经过11年多的发展,年多的发展,ARM公司已经拥有公司已经拥有700多名员工,多名员工,其中其中60以上都从事研发工作。以上都从事研发工作。 ARM拥有广泛的全球技术合作伙伴,这其中包括领先的半导体拥有广泛的全球技术合作伙伴,这其中包括领先的半导体系统厂商、实时操作系统系统厂商、实时操作系统(RTOS)开发商、电子设计自动化和工开发商、电子设计自动化和工具供应商、应用软件公司、芯片制造商和设计中心。具供应商、应用软件公司、芯片制造商和设计中心。ARM合作伙伴包括了许多世界顶级的半导体公司。合作伙伴包括了许多世界顶级的半导体公司。 ARM技术具有很高的性能和功效,因而容易被厂商接受。同时,技术具有很高的性能和功效,因而容易被厂商接受。同时,合作伙伴的增多,可获得更多的第三方工具、制造和软件支持,合作伙伴的增多,可获得更多的第三方工具、制造和软件支持,又使整个系统成本降低,使产品进入市场的时间加快,从而具又使整个系统成本降低,使产品进入市场的时间加快,从而具有更大的竞争优势。有更大的竞争优势。31.1 ARM技术的应用领域及其特点ARM技术的技术的IP核在下列领域已经取得或正在取核在下列领域已经取得或正在取得很大的成功。得很大的成功。无线设备蓝牙技术联网消费电子汽车海量存储设备成像安全产品4将技术授权给其它芯片厂商形成各具特色的ARM芯片. . .51.1 ARM技术的应用领域及其特点ARM芯片具有芯片具有RISC体系的一般特点,如:体系的一般特点,如:具有大量的寄存器。绝大多数操作都在寄存器中进行,通过Load/Store的体系结构在内存和寄存器之间传递数据。寻址方式简单。采用固定长度的指令格式。除此之外,除此之外,ARM体系采用了一些特别的技术,在保证高性能的体系采用了一些特别的技术,在保证高性能的同时尽量减小芯片体积,减低芯片的功耗。这些技术包括:同时尽量减小芯片体积,减低芯片的功耗。这些技术包括:在同一条数据处理指令中包含算术逻辑处理单元处理和移位处理。使用地址自动增加(减少)来优化程序中循环处理。Load/Store指令可以批量传输数据,从而提高数据传输的效率。所有指令都可以根据前面指令执行结果,决定是否执行,以提高指令执行的效率。61.2 ARM体系结构的版本及命名方法ARM体系结构共定义了体系结构共定义了6个版本,版本号分别个版本,版本号分别为为16。从版本。从版本1到版本到版本6,ARM体系的指令集体系的指令集功能不断扩大。同时,各版本中还有一些变种,功能不断扩大。同时,各版本中还有一些变种,这些变种定义了该版本指令集中不同的功能。这些变种定义了该版本指令集中不同的功能。ARM处理器系列中的各种处理器,其采用的实处理器系列中的各种处理器,其采用的实现技术各不相同,性能差别很大,应用场合也现技术各不相同,性能差别很大,应用场合也有所不同,但是只要它们支持相同的有所不同,但是只要它们支持相同的ARM体系体系版本,基于它们的应用软件将是兼容的。版本,基于它们的应用软件将是兼容的。本节介绍本节介绍ARM体系结构不同版本指令集的特点,体系结构不同版本指令集的特点,以及各版本包含的一些变种的特点。以及各版本包含的一些变种的特点。71.2.1 ARM体系结构的版本ARM体系结构的体系结构的6个版本的特点如下。个版本的特点如下。1. 版本版本12. 版本版本23. 版本版本34. 版本版本45. 版本版本56. 版本版本681. 版本1本版本在ARM1中实现,但没有在商业产品中使用。它包括下列指令:处理乘法指令之外的基本数据处理指令。基于字节、字和多字的读取和写入指令(Load/Store)。包括子程序调用指令BL在内的跳转指令。供操作系统使用的软件中断指令SWI。本版本中地址空间是26位,目前已经不再使用。92. 版本2与版本与版本1相比,版本相比,版本2增加了下列指令:增加了下列指令:乘法指令和乘加法指令。乘法指令和乘加法指令。支持协处理器的指令。支持协处理器的指令。对于对于FIQ模式,提供了额外的两个备份寄存器。模式,提供了额外的两个备份寄存器。SWP指令及指令及SWPB指令。指令。本版本中地址空间是本版本中地址空间是26位,目前已经不再使用。位,目前已经不再使用。103. 版本3版本3较以前的版本发生了比较大的变化。主要改进部分如下:处理器的地址空间扩展到了32位,但除了版本3G(版本3的一个变种)外的其他版本是向前兼容的,支持26位的地址空间。当前程序状态信息从原来的R15寄存器移到一个新的寄存器中,新寄存器名为CPSR。增加了SPSR用于在程序异常中断程序时,保存被中断的程序的程序状态。增加了指令MRS和指令MSR,用于访问CPSR寄存器和SPSR寄存器。增加了两种处理器模式(数据访问中止模式、未定义指令模式),使操作系统代码可以方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。修改了原来的从异常中返回的指令。114. 版本4与版本3相比,版本4增加了下列指令:半字的读取和写入指令。读取(Load)带符号的字节和半字数据的指令。增加了T变种,可以使处理器状态切换到Thumb状态,在该状态下指令集是16位的Thumb指令集。增加了处理器的特权模式。在该模式下,使用的是用户模式下的寄存器。另外,在版本4中明确定义了哪些指令会引起未定义指令异常。版本4不再强制要求与以前的26位地址空间兼容。125. 版本5与版本4相比,版本5增加或者修改了下列指令:提高了T变种中ARM/Thumb混合使用的效率。对于T变种的指令和非T变种的指令使用相同的代码生成技术。同时,版本5还具有以下的特点。增加了前导零计数(count leading zeros)指令,该指令可以使整数除法和中断优先级排队操作更为有效。增加了软件断点指令。为协处理器设计提供了更多的可选择的指令。更加严格地定义了乘法指令对条件标志位的影响。136. 版本6ARM体系版本6是2001年发布的。其主要特点是增加了SIMD功能扩展。它适合使用电池供电的高性能的便携式设备。这些设备一方面需要处理器提供高性能,另一方面又需要功耗很低。SIMD功能扩展为包括音频/视频处理在内的应用系统提供了优化功能。它可以使音频/视频处理性能提高4倍。ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。14SIMD在性能上的优势:在性能上的优势: 以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。 151.2.2 ARM体系的变种这里将某些特定功能称为这里将某些特定功能称为ARM体系的某种变种体系的某种变种(variant),例如支持,例如支持Thumb指令集,称为指令集,称为T变变种。目前种。目前ARM定义了一些变种。定义了一些变种。1. Thumb指令集指令集(T变种变种)2. 长乘法指令长乘法指令(M变种变种)3. 增强型增强型DSP指令指令(E变种变种)4. Java加速器加速器Jazelle(J变种变种)5. ARM媒体功能扩展媒体功能扩展(SIMD变种变种)161.2.3 ARM/Thumb体系版本的命名格式表示表示ARM/Thumb体系版本的字符串是由下面体系版本的字符串是由下面几部分组成的:几部分组成的:字符串ARMv。ARM指令集版本号。目前是16的数字字符。表示变种的字符。由于在ARM体系版本4以后,M变种成为系统的标准功能,字符M通常不需要列出来。使用字符x表示排除某种写功能。比如,xM、ExP。171.3 ARM处理器系列ARM处理器目前包括下面几个系列的处理器产处理器目前包括下面几个系列的处理器产品以及其他厂商实现的基于品以及其他厂商实现的基于ARM体系结构的处体系结构的处理器。理器。ARM7系列。ARM9系列。ARM9E系列。ARM10E系列。SecurCore系列。Intel的Xscale。Intel的StrongARM。18预取(Fetch)译码(Decode)执行(Execute)预取(Fetch)译码(Decode)执行(Execute)访存(Memory)写入(Write)预取(Fetch)译码(Decode)发送(Issue)预取(Fetch)预取(Fetch)执行(Execute)访存(Memory)写入(Write)译码(Decode)发送(Issue)执行(Execute)转换(Snny)访存(Memory)写入(Write)ARM7ARM9ARM10ARM11 19项目项目ARM7ARM9ARM10ARM11流水线流水线3568典型频率(典型频率(MHz)80150260335功耗(功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能性能MIPS*/MHz0.971.11.31.2架构架构冯冯 诺伊曼诺伊曼哈佛哈佛哈佛哈佛哈佛哈佛 201.3.1 ARM7系列ARM7系列包括系列包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和和ARM720T 4种类型,主要用于适种类型,主要用于适应不同的市场需求。应不同的市场需求。ARM7系列处理器具体应用于以下场合:系列处理器具体应用于以下场合:个人音频设备(MP3播放器、WMA播放器、AAC播放器)。接入级的无线无线设备。喷墨打印机。数字照相机。PDA。211.3.1 ARM7系列ARM7系列处理器具有以下主要特点:系列处理器具有以下主要特点:成熟的大批量的32位RICS芯片。最高主频达到130 MIPS。功耗很低。代码密度很高,兼容16位的微处理器。得到广泛的操作系统和实时操作系统支持,包括Window CE、Palm OS、 Symbian OS、Linux以及业界领先的实时操作系统。众多的开发工具。EDA仿真模型。优秀的调试机制。业界众多领先的IC制造商生产这类芯片。提供0.25m、0.18m及0.13m的生产工艺。代码于ARM9系列、ARM9E、ARM10E兼容。 221.3.2 ARM9系列ARM9系列包括系列包括ARM920T、ARM922T和和ARM940T 3种类型,主要用于适应不同的市场种类型,主要用于适应不同的市场需求。需求。ARM9系列处理器的具体应用于以下场合:系列处理器的具体应用于以下场合:下一代的无线设备,包括视频电话和PDA等。数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。成像设备,包括打印机、数字照相机和数字摄像机等。汽车、通信和信息系统。231.3.2 ARM9系列ARM9系列处理器具有以下主要特点:系列处理器具有以下主要特点:支持32位ARM指令集和16位Thumb指令集的32位RISC处理器。五级整数流水线。单一的32位AMBA总线接口。MMU支持Window CE、Palm OS、Symbian OS、Linux等。MPU支持实时操作系统,包括Vxworks。统一的数据cache和指令cache。提供0.18m、0.15m 及 0.13m的生产工艺。241.3.3 ARM9E系列ARM9E系列包括系列包括ARM926EJ-S、ARM946E-S和和ARM966E-S 3种类型,用于适应不同的市场需求。种类型,用于适应不同的市场需求。ARM9E系列处理器具体应用在以下场合:系列处理器具体应用在以下场合:下一代的无线设备,包括视频电话和PDA等。数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。成像设备,包括打印机、数字照相机和数字摄像机等。存储设备,包括DVD域HDD等。工业控制,包括马达控制和能量控制等。汽车,通信和信息系统的ABS和车体控制等。网络设备,包括VoIP、WirelessLAN、xDSL等。251.3.3 ARM9E系列ARM9E系列处理器具有以下主要特点:系列处理器具有以下主要特点:支持32位的ARM指令集和16位的Thumb指令集的32位RISC处理器。包括了DSP指令集。五级整数流水线。在典型的0.13m工艺下,主频可以达到300 MIPS的性能。集成的实时跟踪和调试功能。单一的32位AMBA总线接口。可选的VFP9浮点处理协处理器。在实时控制和三维图像处理时主频可达到215 MFLOPS。高性能的AHB系统。MMU支持Window CE、Palm OS、Symbian OS、Linux等。MPU支持实时操作系统,包括Vxworks。统一的数据cache和指令cache。提供0.18m、0.15m 及 0.13m的生产工艺。261.3.4 ARM10E系列ARM10E系列包括系列包括ARM1020E、ARM1022E和和ARM1026EJ-S 3种类型,主要用于适应不同的种类型,主要用于适应不同的市场需求。市场需求。ARM10E系列处理器具体应用于以下场合:系列处理器具体应用于以下场合:下一代的无线设备,包括视频电话、PDA、笔记本电脑和Internet设备等。数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。成像设备,包括激光打印机、数字照相机和数字摄像机等。工业控制,包括马达控制和能量控制等。汽车,通信和信息系统等。271.3.4 ARM10E系列ARM10E系列处理器具有以下主要特点:系列处理器具有以下主要特点:支持32位的ARM指令集和16位的Thumb指令集的32位RISC处理器。包括了DSP指令集。六级整数流水线。在典型的0.13m工艺下,主频可以达到400 MIPS的性能。单一的32位AMBA总线接口。可选的VFP10浮点处理协处理器。在实时控制和三维图像处理时主频可达到650 MFLOPS。高性能的AHB系统。MMU支持Window CE、Palm OS、Symbian OS、Linux等。统一的数据cache和指令cache。提供0.18m、0.15m 及 0.13m的生产工艺。并行读取/写入(load/store)部件。281.3.5 SecurCore系列SecurCore系列处理器除了具有体积小、功耗系列处理器除了具有体积小、功耗低、代码密度大和性能高等特点外,还具有它低、代码密度大和性能高等特点外,还具有它自己的特别优势,即自己的特别优势,即提供了安全解决方案的支提供了安全解决方案的支持持。SecurCore系列处理器具有以下特点:系列处理器具有以下特点:支持ARM指令集和Thumb指令集,以提高代码密度和系统性能。采用软内核技术,以提供最大限度的灵活性,以及防止外部对其进行扫描探测。提供了安全特性,抵制攻击。提供面向智能卡的和低成本的存储保护单元(MPU)。可以集成用户自己的安全特性和其他的协处理器。291.3.5 SecurCore系列SecurCore系列包括系列包括SecurCore SC100、SecurCore SC110、SecurCore SC200和和SecurCore SC210 4种类型,主要用于适应不种类型,主要用于适应不同的市场需求。同的市场需求。SecurCore系列处理器主要应用于一些安全产系列处理器主要应用于一些安全产品及应用系统,包括电子商务、电子银行业务、品及应用系统,包括电子商务、电子银行业务、网络、移动媒体和认证系统等。网络、移动媒体和认证系统等。本章简单介绍本章简单介绍ARM体系编程模型的一些基本概体系编程模型的一些基本概念,相关的知识在本书后面还有详细的介绍。念,相关的知识在本书后面还有详细的介绍。301.4 ARM处理器模式ARM处理器共有处理器共有7种运行模式,如表种运行模式,如表1.3所示。所示。 处理器模式说明备注 用户 (usr)正常程序执行模式不能直接切换到其它模式 系统 (sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 /特权 (svc) 操作系统使用的一种保护模式系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式31特权模式特权模式处理器模式处理器模式说明说明备注备注 用户用户 (usr) 正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特用于支持操作系统的特权任务等权任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通支持高速数据传输及通道处理道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc) 操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软支持硬件协处理器的软件仿真件仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。 未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断中断 (irq) 快中断快中断 (fiq) 系统系统 (sys)32异常模式异常模式处理器模式处理器模式说明说明备注备注 用户用户 (usr) 正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特用于支持操作系统的特权任务等权任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通支持高速数据传输及通道处理道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc) 操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软支持硬件协处理器的软件仿真件仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断中断 (irq) 快中断快中断 (fiq) 这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。33用户和系统模式用户和系统模式处理器模式处理器模式说明说明备注备注 用户用户 (usr) 正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特用于支持操作系统的特权任务等权任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通支持高速数据传输及通道处理道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc) 操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软支持硬件协处理器的软件仿真件仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。 系统系统 (sys) 用户用户 (usr)341.5 ARM寄存器介绍ARM处理器共有处理器共有37个寄存器。其中包括:个寄存器。其中包括:31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。6个状态寄存器。这些寄存器都是32位寄存器,但目前只使用了其中12位。ARM处理器共有处理器共有7种不同的处理器模式,在每一种处种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。任意时刻理器模式中有一组相应的寄存器组。任意时刻(也就是也就是任意的处理器模式下任意的处理器模式下),可见的寄存器包括,可见的寄存器包括15个通用寄个通用寄存器存器(R0R14)、一个或两个状态寄存器及程序计数、一个或两个状态寄存器及程序计数器器(PC)。在所有的寄存器中,有些是各模式共用的同。在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有一些寄存器是各模式自己拥有的一个物理寄存器;有一些寄存器是各模式自己拥有的独立的物理寄存器。独立的物理寄存器。 35寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq *R9(SB,v6)R9R9_fiq *R10(SL,v7)R10R10_fiq *R11(FP,v8)R11R11_fiq *R12(IP)R12R12_fiq *R13(SP)R13R13_svc* R13_abt * R13_und * R13_irq *R13_fiq *R14(LR)R14R14_svc * R14_abt * R14_und * R14_irq *R14_fiq *R15(PC)R15状态寄状态寄存器存器R16(CPSR)CPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq36寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiqSPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。37寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断38寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。39寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。40寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器41寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。42寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR1343寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSRSPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq堆栈指针寄存器R13(SP) 寄存器R13常作为堆栈指针(SP),通常R13应当被初始化成指向异常模式分配的堆栈。在入口,异常处理程序将用到的其他寄存器的值保持到堆栈中。返回时,重新将这些值加载到寄存器。44寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSRSPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq链接寄存器R14(LR) R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址。45Lable程序A程序BR14 R14(LR)寄存器与子程序调用)寄存器与子程序调用BL Lable地址A?MOV PC,LRR14(地址A)Lable。1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14(LR);3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;46 R14寄存器与异常发生寄存器与异常发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。 47 R14寄存器注意要点寄存器注意要点 当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。48 R14寄存器注意要点寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB.XA地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容存入PC,返回之前被中断的程序;未被破坏R14_irq地址A49 R14寄存器注意要点寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AaB.XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;5. 硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;R14_irq 被破坏6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。50寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq 寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。51寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。521.5.1 通用寄存器通用寄存器可以分为下面通用寄存器可以分为下面3类:类:未备份寄存器(The unbanked registers),包括R0R7。备份寄存器(The banked registers),包括R8R14。程序计数器PC,即R15。对于备份寄存器对于备份寄存器R8R12来说,每个寄存器对应两个不同的物来说,每个寄存器对应两个不同的物理寄存器。理寄存器。 对于备份寄存器对于备份寄存器R13和和R14来说,每个寄存器对应来说,每个寄存器对应6个不同的物个不同的物理寄存器,理寄存器,采用下面的记号来区分各个物理寄存器:采用下面的记号来区分各个物理寄存器:Rn_(其中,其中,可以是下面几种模式之一:可以是下面几种模式之一:usr、sys、svc、abt、und、irq及及fiq。)R13寄存器寄存器R13在在ARM中常用作栈指针。在中常用作栈指针。在ARM指令集中指令集中,这只是一种习惯的用法,并没有任何指令强制性的,这只是一种习惯的用法,并没有任何指令强制性的使用使用R13作为栈指针,用户也可以使用其他的寄存器作为栈指针,用户也可以使用其他的寄存器作为栈指针;而在作为栈指针;而在Thumb指令集中,有一些指令强制指令集中,有一些指令强制性地使用性地使用R13作为栈指针。作为栈指针。每一种异常模式拥有自己的物理的每一种异常模式拥有自己的物理的R13。应用程序初。应用程序初始化该始化该R13,使其指向该异常模式专用的栈地址。当,使其指向该异常模式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;当退出异常处理程序时,将保存在所指的栈中;当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理所指的栈中的寄存器值弹出。这样就使异常处理程序不会破坏被其中断程序的运行现场。程序不会破坏被其中断程序的运行现场。R14寄存器寄存器R14又被称为连接寄存器又被称为连接寄存器(Link Register,LR),在,在ARM体系中具有下面两种特殊的作用:体系中具有下面两种特殊的作用:每一种处理器模式自己的物理R14中存放在当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,子程序即返回。可以通过下面两种方式实现这种子程序的返回操作。当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。R14寄存器也可以作为通用寄存器使用。寄存器也可以作为通用寄存器使用。R15程序计数器程序计数器R15又被记作又被记作PC。当成功地向。当成功地向R15中写入一个地址数值时,程序将跳转到该地址中写入一个地址数值时,程序将跳转到该地址执行。执行。 由于由于ARM采用了流水线机制,当正确读取了采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址值加的值时,该值为当前指令地址值加8个字节个字节。也就是说,对于。也就是说,对于ARM指令集来说,指令集来说,PC指向指向当前指令的下两条指令的地址。当前指令的下两条指令的地址。由于由于ARM指令是字对齐的,指令是字对齐的,PC值的第值的第0位和第位和第1位总为位总为0。R15指令指令 MOV PC,PC 将程序跳转到当前指令下面第2条指令处执行。因为指令中,第2个PC寄存器读出的值为当前指令的地址值加8,这样对ARM指令而言写入PC寄存器的是当前指令下面第2条指令的地址。类似的指令还有ADD PC,PC,#0。581.5.3 程序状态寄存器CPSR(当前程序状态寄存器当前程序状态寄存器)可以在任何处理器可以在任何处理器模式下被访问。它包含了条件标志位、中断禁模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控止位、当前处理器模式标志以及其他的一些控制和状态位。制和状态位。每一种处理器模式下都有一个专用的物理状态每一种处理器模式下都有一个专用的物理状态寄存器,称为寄存器,称为SPSR(备份程序状态寄存器备份程序状态寄存器)。当。当特定的异常中断发生时,这个寄存器用于存放特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断程序当前程序状态寄存器的内容。在异常中断程序退出时,可以用退出时,可以用SPSR中保存的值来恢复中保存的值来恢复CPSR。CPSR的格式如下所示。的格式如下所示。SPSR格式与格式与CPSR格格式相同。式相同。1. 条件标志位条件标志位2. Q标志位标志位3. CPSR中的控制位中的控制位4. CPSR中的其他位中的其他位1. 条件标志位N (Negative)、Z (Zero)、C (Carry) 及V (oVerflow)统称为条件标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位来选择性地执行。通常如果指令带S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。 各标志位的含义如下:N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z 指令结果为0时Z=1,否则Z=0;对于CMP指令,Z=1表示进行比较的两个数大小相等 C 当进行加法运算,并且最高位产生进位时C=1,否则C=0。当进行减法运算,并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变; V 当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。2. Q标志位在ARM v5的E系列处理器中,CPSR的bit27称为Q标志位,主要用于指示增强的DSP指令是否发生了溢出。在ARM v5以前的版本及ARM v5的非E系列的处理器中,Q标志位没有被定义。CPSR的bit27属于DNM(RAZ)。3. CPSR中的控制位CPSR的低8位I、F、T及M4 0统称为控制位。当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。中断禁止位中断禁止位当I=1时禁止IRQ中断。当F=1时禁止FIQ中断。T控制位控制位T控制位用于控制指令执行的状态对于ARM v3以及更低的版本和ARM v4的非T系列版本的处理器,没有ARM状态和Thumb状态切换,T控制位应为0。对于ARM v
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!