ARM体系结构清华实用教案

上传人:s9****2 文档编号:571049998 上传时间:2024-08-08 格式:PPT 页数:84 大小:3.35MB
返回 下载 相关 举报
ARM体系结构清华实用教案_第1页
第1页 / 共84页
ARM体系结构清华实用教案_第2页
第2页 / 共84页
ARM体系结构清华实用教案_第3页
第3页 / 共84页
ARM体系结构清华实用教案_第4页
第4页 / 共84页
ARM体系结构清华实用教案_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《ARM体系结构清华实用教案》由会员分享,可在线阅读,更多相关《ARM体系结构清华实用教案(84页珍藏版)》请在金锄头文库上搜索。

1、11.1ARM技术(jsh)的应用领域及其特点ARM技术的IP核在下列(xili)领域已经取得或正在取得很大的成功。无线设备蓝牙技术联网消费电子汽车海量存储设备成像安全产品第1页/共83页第一页,共84页。2将技术授权给其它(qt)芯片厂商形成(xngchng)各具特色的ARM芯片. . .第2页/共83页第二页,共84页。31.1ARM技术(jsh)的应用领域及其特点ARM芯片具有RISC体系的一般特点,如:具有大量的寄存器。绝大多数操作都在寄存器中进行,通过Load/Store的体系结构在内存和寄存器之间传递数据。寻址方式简单。采用固定长度的指令格式。除此之外,ARM体系采用了一些特别的技

2、术,在保证高性能的同时尽量减小芯片体积,减低芯片的功耗。这些技术包括:在同一条数据处理指令中包含算术逻辑处理单元处理和移位处理。使用(shyng)地址自动增加(减少)来优化程序中循环处理。Load/Store指令可以批量传输数据,从而提高数据传输的效率。所有指令都可以根据前面指令执行结果,决定是否执行,以提高指令执行的效率。第3页/共83页第三页,共84页。41.2ARM体系结构的版本及命名(mngmng)方法ARM体系结构共定义了6个版本,版本号分别为16。从版本1到版本6,ARM体系的指令集功能不断扩大。同时(tngsh),各版本中还有一些变种,这些变种定义了该版本指令集中不同的功能。AR

3、M处理器系列中的各种处理器,其采用的实现技术各不相同,性能差别很大,应用场合也有所不同,但是只要它们支持相同的ARM体系版本,基于它们的应用软件将是兼容的。本节介绍ARM体系结构不同版本指令集的特点,以及各版本包含的一些变种的特点。第4页/共83页第四页,共84页。51.2.1ARM体系结构的版本(bnbn)ARM体系结构的6个版本(bnbn)的特点如下。1.版本(bnbn)12.版本(bnbn)23.版本(bnbn)34.版本(bnbn)45.版本(bnbn)56.版本(bnbn)6第5页/共83页第五页,共84页。61.版本1本版本在ARM1中实现,但没有在商业产品中使用。它包括下列指令:

4、处理乘法指令之外的基本( jbn)数据处理指令。基于字节、字和多字的读取和写入指令(Load/Store)。包括子程序调用指令BL在内的跳转指令。供操作系统使用的软件中断指令SWI。本版本中地址空间是26位,目前已经不再使用。第6页/共83页第六页,共84页。72.版本2与版本1相比,版本2增加了下列指令:乘法指令和乘加法指令。支持协处理器的指令。对于FIQ模式,提供(tgng)了额外的两个备份寄存器。SWP指令及SWPB指令。本版本中地址空间是26位,目前已经不再使用。第7页/共83页第七页,共84页。83.版本3版本3较以前的版本发生了比较大的变化(binhu)。主要改进部分如下:处理器的

5、地址空间扩展到了32位,但除了版本3G(版本3的一个变种)外的其他版本是向前兼容的,支持26位的地址空间。当前程序状态信息从原来的R15寄存器移到一个新的寄存器中,新寄存器名为CPSR。增加了SPSR用于在程序异常中断程序时,保存被中断的程序的程序状态。增加了指令MRS和指令MSR,用于访问CPSR寄存器和SPSR寄存器。增加了两种处理器模式(数据访问中止模式、未定义指令模式),使操作系统代码可以方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。修改了原来的从异常中返回的指令。第8页/共83页第八页,共84页。94.版本4与版本3相比,版本4增加了下列指令:半字的读取和写入指令。读

6、取(Load)带符号的字节和半字数据的指令。增加了T变种,可以使处理器状态切换到Thumb状态,在该状态下指令集是16位的Thumb指令集。增加了处理器的特权模式。在该模式下,使用的是用户模式下的寄存器。另外(lnwi),在版本4中明确定义了哪些指令会引起未定义指令异常。版本4不再强制要求与以前的26位地址空间兼容。第9页/共83页第九页,共84页。105.版本5与版本4相比,版本5增加或者修改(xigi)了下列指令:提高了T变种中ARM/Thumb混合使用的效率。对于T变种的指令和非T变种的指令使用相同的代码生成技术。同时,版本5还具有以下的特点。增加了前导零计数(countleadingz

7、eros)指令,该指令可以使整数除法和中断优先级排队操作更为有效。增加了软件断点指令。为协处理器设计提供了更多的可选择的指令。更加严格地定义了乘法指令对条件标志位的影响。第10页/共83页第十页,共84页。116.版本6ARM体系版本6是2001年发布的。其主要特点是增加了SIMD功能扩展。它适合使用电池供电的高性能的便携式设备(shbi)。这些设备(shbi)一方面需要处理器提供高性能,另一方面又需要功耗很低。SIMD功能扩展为包括音频/视频处理在内的应用系统提供了优化功能。它可以使音频/视频处理性能提高4倍。ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。第11页/共83

8、页第十一页,共84页。131.2.2ARM体系(tx)的变种这里将某些特定功能称为ARM体系的某种变种(variant),例如支持Thumb指令集,称为T变种。目前ARM定义(dngy)了一些变种。1.Thumb指令集(T变种)2.长乘法指令(M变种)3.增强型DSP指令(E变种)4.Java加速器Jazelle(J变种)5.ARM媒体功能扩展(SIMD变种)第13页/共83页第十三页,共84页。141.2.3ARM/Thumb体系版本(bnbn)的命名格式表示ARM/Thumb体系版本(bnbn)的字符串是由下面几部分组成的:字符串ARMv。ARM指令集版本(bnbn)号。目前是16的数字字

9、符。表示变种的字符。由于在ARM体系版本(bnbn)4以后,M变种成为系统的标准功能,字符M通常不需要列出来。使用字符x表示排除某种写功能。比如,xM、ExP。第14页/共83页第十四页,共84页。151.3ARM处理器系列(xli)ARM处理器目前(mqin)包括下面几个系列的处理器产品以及其他厂商实现的基于ARM体系结构的处理器。ARM7系列。ARM9系列。ARM9E系列。ARM10E系列。SecurCore系列。Intel的Xscale。Intel的StrongARM。第15页/共83页第十五页,共84页。16预取(Fetch)译码(Decode)执行(Execute)预取(Fetch)

10、译码(Decode)执行(Execute)访存(Memory)写入(Write)预取(Fetch)译码(Decode)发送(Issue)预取(Fetch)预取(Fetch)执行(Execute)访存(Memory)写入(Write)译码(Decode)发送(Issue)执行(Execute)转换(Snny)访存(Memory)写入(Write)ARM7ARM9ARM10ARM11第16页/共83页第十六页,共84页。17项目项目ARM7ARM9ARM10ARM11流水线流水线3568典型频率(典型频率(MHz)80150260335功耗功耗(mW/MHz)0.060.19(+cache)0.5

11、(+cache)0.4(+cache)性能性能MIPS*/MHz0.971.11.31.2架构架构冯冯 诺伊曼诺伊曼哈佛哈佛哈佛哈佛哈佛哈佛第17页/共83页第十七页,共84页。181.3.1ARM7系列(xli)ARM7系列包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T4种类型,主要用于适应(shyng)不同的市场需求。ARM7系列处理器具体应用于以下场合:个人音频设备(MP3播放器、WMA播放器、AAC播放器)。接入级的无线无线设备。喷墨打印机。数字照相机。PDA。第18页/共83页第十八页,共84页。191.3.1ARM7系列(xli)ARM7系列处理器具有

12、以下主要特点:成熟的大批量的32位RICS芯片。最高主频达到130MIPS。功耗很低。代码密度很高,兼容16位的微处理器。得到广泛的操作系统和实时操作系统支持,包括(boku)WindowCE、PalmOS、SymbianOS、Linux以及业界领先的实时操作系统。众多的开发工具。EDA仿真模型。优秀的调试机制。业界众多领先的IC制造商生产这类芯片。提供0.25m、0.18m及0.13m的生产工艺。代码于ARM9系列、ARM9E、ARM10E兼容。第19页/共83页第十九页,共84页。201.3.2ARM9系列(xli)ARM9系列包括ARM920T、ARM922T和ARM940T3种类型,主

13、要(zhyo)用于适应不同的市场需求。ARM9系列处理器的具体应用于以下场合:下一代的无线设备,包括视频电话和PDA等。数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。成像设备,包括打印机、数字照相机和数字摄像机等。汽车、通信和信息系统。第20页/共83页第二十页,共84页。211.3.2ARM9系列(xli)ARM9系列处理器具有以下(yxi)主要特点:支持32位ARM指令集和16位Thumb指令集的32位RISC处理器。五级整数流水线。单一的32位AMBA总线接口。MMU支持WindowCE、PalmOS、SymbianOS、Linux等。MPU支持实时操作系统,包括V

14、xworks。统一的数据cache和指令cache。提供0.18m、0.15m及0.13m的生产工艺。第21页/共83页第二十一页,共84页。221.3.3ARM9E系列(xli)ARM9E系列包括ARM926EJ-S、ARM946E-S和ARM966E-S3种类型,用于适应不同(btn)的市场需求。ARM9E系列处理器具体应用在以下场合:下一代的无线设备,包括视频电话和PDA等。数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。成像设备,包括打印机、数字照相机和数字摄像机等。存储设备,包括DVD域HDD等。工业控制,包括马达控制和能量控制等。汽车,通信和信息系统的ABS和车

15、体控制等。网络设备,包括VoIP、WirelessLAN、xDSL等。第22页/共83页第二十二页,共84页。231.3.3ARM9E系列(xli)ARM9E系列处理器具有以下主要特点:支持(zhch)32位的ARM指令集和16位的Thumb指令集的32位RISC处理器。包括了DSP指令集。五级整数流水线。在典型的0.13m工艺下,主频可以达到300MIPS的性能。集成的实时跟踪和调试功能。单一的32位AMBA总线接口。可选的VFP9浮点处理协处理器。在实时控制和三维图像处理时主频可达到215MFLOPS。高性能的AHB系统。MMU支持(zhch)WindowCE、PalmOS、Symbian

16、OS、Linux等。MPU支持(zhch)实时操作系统,包括Vxworks。统一的数据cache和指令cache。提供0.18m、0.15m及0.13m的生产工艺。第23页/共83页第二十三页,共84页。241.3.4ARM10E系列(xli)ARM10E系列包括ARM1020E、ARM1022E和ARM1026EJ-S3种类型,主要用于适应不同的市场需求。ARM10E系列处理器具体应用于以下场合:下一代的无线设备,包括视频电话、PDA、笔记本电脑和Internet设备等。数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。成像设备,包括激光打印机、数字照相机和数字摄像机等。工

17、业控制,包括马达控制和能量控制等。汽车(qch),通信和信息系统等。第24页/共83页第二十四页,共84页。251.3.4ARM10E系列(xli)ARM10E系列处理器具有以下主要特点:支持32位的ARM指令集和16位的Thumb指令集的32位RISC处理器。包括了DSP指令集。六级整数流水线。在典型的0.13m工艺下,主频可以达到400MIPS的性能。单一的32位AMBA总线接口。可选的VFP10浮点处理协处理器。在实时控制和三维图像处理时主频可达到650MFLOPS。高性能的AHB系统。MMU支持WindowCE、PalmOS、SymbianOS、Linux等。统一的数据cache和指令

18、cache。提供(tgng)0.18m、0.15m及0.13m的生产工艺。并行读取/写入(load/store)部件。第25页/共83页第二十五页,共84页。261.3.5SecurCore系列(xli)SecurCore系列处理器除了具有体积小、功耗低、代码密度大和性能高等特点外,还具有它自己的特别优势,即提供(tgng)了安全解决方案的支持。SecurCore系列处理器具有以下特点:支持ARM指令集和Thumb指令集,以提高代码密度和系统性能。采用软内核技术,以提供(tgng)最大限度的灵活性,以及防止外部对其进行扫描探测。提供(tgng)了安全特性,抵制攻击。提供(tgng)面向智能卡的

19、和低成本的存储保护单元(MPU)。可以集成用户自己的安全特性和其他的协处理器。第26页/共83页第二十六页,共84页。271.3.5SecurCore系列(xli)SecurCore系列包括SecurCoreSC100、SecurCoreSC110、SecurCoreSC200和SecurCoreSC2104种类型,主要用于适应不同的市场需求。SecurCore系列处理器主要应用于一些安全产品及应用系统,包括电子商务、电子银行业务、网络(wnglu)、移动媒体和认证系统等。本章简单介绍ARM体系编程模型的一些基本概念,相关的知识在本书后面还有详细的介绍。第27页/共83页第二十七页,共84页。

20、281.4ARM处理器模式(msh)ARM处理器共有(nyu)7种运行模式,如表1.3所示。处理器模式说明备注 用户 (usr)正常程序执行模式不能直接切换到其它模式 系统 (sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 /特权 (svc) 操作系统使用的一种保护模式系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真

21、未定义指令异常响应时进入此模式第28页/共83页第二十八页,共84页。29特权(tqun)模式处理器模式处理器模式说明说明备注备注 用户用户 (usr)正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特权用于支持操作系统的特权任务等任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通道支持高速数据传输及通道处理处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时

22、进入此模式异常响应时进入此模式 管理管理 (svc)操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软件支持硬件协处理器的软件仿真仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换(qi hun)处理器模式,而用户模

23、式不能直接切换(qi hun)到别的模式。 未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断中断 (irq) 快中断快中断 (fiq) 系统系统 (sys)第29页/共83页第二十九页,共84页。30异常(ychng)模式处理器模式处理器模式说明说明备注备注 用户用户 (usr)正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特权用于支持操作系统的特权任务等任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传

24、输及通道支持高速数据传输及通道处理处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc)操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软件支持硬件协处理器的软件仿真仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 未定义未定义 (und) 中止

25、中止 (abt) 管理管理 (svc) 中断中断 (irq) 快中断快中断 (fiq) 这五种模式称为异常(ychng)模式。它们除了可以通过程序切换进入外,也可以由特定的异常(ychng)进入。当特定的异常(ychng)出现时,处理器进入相应的模式。每种异常(ychng)模式都有一些独立的寄存器,以避免异常(ychng)退出时用户模式的状态不可靠。第30页/共83页第三十页,共84页。31用户(yngh)和系统模式处理器模式处理器模式说明说明备注备注 用户用户 (usr)正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特权用

26、于支持操作系统的特权任务等任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通道支持高速数据传输及通道处理处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc)操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用

27、处 未定义未定义 (und)支持硬件协处理器的软件支持硬件协处理器的软件仿真仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 这两种模式(msh)都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式(msh)是特权模式(msh),不受用户模式(msh)的限制。操作系统在该模式(msh)下访问用户模式(msh)的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式(msh)访问一些受控的资源。 系统系统 (sys) 用户用户 (usr)第31页/共83页第三十一页,共84页。321.5ARM寄存器介绍(jisho)ARM处理器共有37个寄存器。其中包括(boku)

28、:31个通用寄存器,包括(boku)程序计数器(PC)在内。这些寄存器都是32位寄存器。6个状态寄存器。这些寄存器都是32位寄存器,但目前只使用了其中12位。ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。任意时刻(也就是任意的处理器模式下),可见的寄存器包括(boku)15个通用寄存器(R0R14)、一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有一些寄存器是各模式自己拥有的独立的物理寄存器。第32页/共83页第三十二页,共84页。33寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问

29、的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器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)R14R1

30、4_svc * R14_abt * R14_und * R14_irq *R14_fiq *R15(PC)R15状态寄存状态寄存器器R16(CPSR)CPSRSPSR无无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiq第33页/共83页第三十三页,共84页。34寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5

31、(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_abt SPSR_und SPSR_irqSPSR_fiqSPSR_fiqSPSR_irqSPSR_un

32、dSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成(fn chn)两大类:31个通用32位寄存器;6个状态寄存器。第34页/共83页第三十四页,共84页。35寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定

33、义未定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器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状态寄存状态寄存器器CP

34、SRCPSRSPSR无无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiq无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R

35、11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断第35页/共83页第三十五页,共84页。36寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器R

36、0(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_abt SPSR_un

37、d SPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用(tngyng)寄存器。它们是完全通用(tngyng)的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用(tngyng)寄存器的指令。第36页/共83页第三十六页,共84页。37寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系

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状

39、态寄存状态寄存器器CPSRCPSRSPSR无无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7为未分组的寄存器,也就是说对于任何处理器模式(msh),这些寄存器都对应于相同的32位物理寄存器。第37页/共83页第三十七页,共84页。38寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄

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_

41、irqR14_fiqR15(PC)R15状态寄存状态寄存器器CPSRCPSRSPSR无无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们(t men)所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器第38页/共83页第三十八页,共84页

42、。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_ir

43、qR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存状态寄存器器CPSRCPSRSPSR无无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以(ky)加速FIQ的处理速度。第39页/共83页第三十九页,共84页。40寄存器类寄存器类别别寄存器在汇编寄存器在

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_s

45、vcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存状态寄存器器CPSRCPSRSPSR无无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiq 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户(yngh)和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13第40页/共83页第四十页,共84页。41寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问

46、的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器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_undR1

47、4_irqR14_fiqR15(PC)R15状态寄存状态寄存器器CPSRCPSRSPSR无无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiq堆栈(duzhn)指针寄存器R13(SP) 寄存器R13常作为(zuwi)堆栈指针(SP),通常R13应当被初始化成指向异常模式分配的堆栈。在入口,异常处理程序将用到的其他寄存器的值保持到堆栈中。返回时,重新将这些值加载到寄存器。第41页/共83页第四十一页,共84页。42寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未

48、定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器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状态寄存状态寄存器器CPSR

49、CPSRSPSR无无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiq链接(lin ji)寄存器R14(LR) R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应(duyng)的异常模式版本设置为异常返回地址。第42页/共83页第四十二页,共84页。43Lable程序A程序BR14R14(LR)寄存器与子程序调用(dioyng)BL Lable地址A?MOV PC,LRR14(地址(dzh)A)Lable。1.程序(chngx)A执行过程中调用程序(chngx)B;操作流程

50、2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14(LR);3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;第43页/共83页第四十三页,共84页。44R14寄存器与异常(ychng)发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用(dioyng)类似,都是由硬件完成的。 第44页/共83页第四十四页,共84页。45R14寄存器注意(zhy)要点 当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许(ynx)在IRQ

51、模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。第45页/共83页第四十五页,共84页。46R14寄存器注意(zhy)要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB.XA地址(dzh)A1.执行(zhxng)用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容存入PC,返回之前被中断的程序;未被破坏R14_irq地址A第46页/共83页第

52、四十六页,共84页。47R14寄存器注意(zhy)要点R14R14_irq用户模式下的程序IRQ模式下的程序AaB.XA地址A地址(dzh)A1.执行用户(yngh)模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;5. 硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造

53、成错误;R14_irq 被破坏6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。第47页/共83页第四十七页,共84页。48寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R

54、4R5(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_abt SPSR_und SPSR_irqSPSR_fiq 寄存器R15为程序计数器(PC),它指

55、向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些(zhxi)限制,那么结果将是不可预测的。第48页/共83页第四十八页,共84页。49寄存器类寄存器类别别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6

56、)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_abt SPSR_und SPSR_irqSPSR_fiq 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR

57、,在进入异常时它保存CPSR的当前值,异常退出(tuch)时可通过它恢复CPSR。第49页/共83页第四十九页,共84页。501.5.1通用寄存器通用寄存器可以分为下面(ximian)3类:未备份寄存器(Theunbankedregisters),包括R0R7。备份寄存器(Thebankedregisters),包括R8R14。程序计数器PC,即R15。第50页/共83页第五十页,共84页。对于备份寄存器R8R12来说,每个寄存器对应两个不同的物理寄存器。对于备份寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器,采用下面的记号来区分各个物理寄存器:Rn_(其中(qzhng),可以是

58、下面几种模式之一:usr、sys、svc、abt、und、irq及fiq。)第51页/共83页第五十一页,共84页。R13寄存器R13在ARM中常用作栈指针。在ARM指令集中,这只是一种习惯的用法,并没有任何指令强制性的使用R13作为栈指针,用户也可以使用其他的寄存器作为栈指针;而在Thumb指令集中,有一些指令强制性地使用R13作为栈指针。每一种异常模式拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理程序不会破坏(phu

59、i)被其中断程序的运行现场。第52页/共83页第五十二页,共84页。R14寄存器R14又被称为连接寄存器(LinkRegister,LR),在ARM体系中具有下面两种特殊的作用:每一种处理器模式自己的物理R14中存放在当前子程序的返回地址(dzh)。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址(dzh)。在子程序中,当把R14的值复制到程序计数器PC中时,子程序即返回。可以通过下面两种方式实现这种子程序的返回操作。当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址(dzh),对于有些异常模式,R14的值可能与将返回的地址(dzh)有一个常数的偏

60、移量。R14寄存器也可以作为通用寄存器使用。第53页/共83页第五十三页,共84页。R15程序计数器R15又被记作PC。当成功地向R15中写入一个地址数值时,程序将跳转到该地址执行。由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址值加8个字节。也就是说,对于ARM指令集来说,PC指向(zhxin)当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第1位总为0。第54页/共83页第五十四页,共84页。R15指令MOVPC,PC将程序跳转到当前指令下面第2条指令处执行。因为指令中,第2个PC寄存器读出的值为当前指令的地址(dzh)值加8,这样对ARM指令而

61、言写入PC寄存器的是当前指令下面第2条指令的地址(dzh)。类似的指令还有ADDPC,PC,#0。第55页/共83页第五十五页,共84页。561.5.3程序(chngx)状态寄存器CPSR(当前程序状态(zhungti)寄存器)可以在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态(zhungti)位。每一种处理器模式下都有一个专用的物理状态(zhungti)寄存器,称为SPSR(备份程序状态(zhungti)寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态(zhungti)寄存器的内容。在异常中断程序退出时,可以用SPSR中保

62、存的值来恢复CPSR。第56页/共83页第五十六页,共84页。CPSR的格式如下(rxi)所示。SPSR格式与CPSR格式相同。1.条件标志位2.Q标志位3.CPSR中的控制位4.CPSR中的其他位第57页/共83页第五十七页,共84页。1.条件标志位N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位来选择性地执行。通常如果(rgu)指令带S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。第58页/共83页第五十八页,共84页。各标志位的含义如下:N运算结果的最

63、高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z指令结果为0时Z=1,否则Z=0;对于CMP指令,Z=1表示进行比较的两个数大小相等C当进行加法运算,并且最高位产生进位时C=1,否则C=0。当进行减法运算,并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常(tngchng)不变;V当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常(tngchng)不变。第59页/共83页第五十九页,共84页。2.Q标志位在ARMv5的E系列处理器中,CPSR的bit27称为Q标志

64、位,主要用于指示增强的DSP指令是否发生了溢出。在ARMv5以前(yqin)的版本及ARMv5的非E系列的处理器中,Q标志位没有被定义。CPSR的bit27属于DNM(RAZ)。第60页/共83页第六十页,共84页。3.CPSR中的控制位CPSR的低8位I、F、T及M40统称为控制位。当异常中断发生时这些(zhxi)位发生变化。在特权级的处理器模式下,软件可以修改这些(zhxi)控制位。中断禁止位当I=1时禁止IRQ中断。当F=1时禁止FIQ中断。第61页/共83页第六十一页,共84页。T控制(kngzh)位T控制(kngzh)位用于控制(kngzh)指令执行的状态对于ARMv3以及更低的版本

65、和ARMv4的非T系列版本的处理器,没有ARM状态和Thumb状态切换,T控制(kngzh)位应为0。对于ARMv4以及更高的版本的T系列的ARM处理器,T控制(kngzh)位含义如下:T=0表示执行ARM指令。T=1表示执行Thumb指令。第62页/共83页第六十二页,共84页。M控制位控制位M40控制处理器模式不是所有模式位的组合都定义了有效的处理器模式,如果(rgu)使用了错误的设置,将引起一个无法恢复的错误。第64页/共83页第六十四页,共84页。4.CPSR中的其他位CPSR中的其他位用于将来ARM版本的扩展。应用软件不要操作这些(zhxi)位,以免与ARM将来版本的扩展冲突。第65

66、页/共83页第六十五页,共84页。661.6ARM体系(tx)的异常中断只要正常的程序(chngx)流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM内核保存当前的处理器状态(CPSR-SPSR,压栈用到的寄存器),这样当处理程序(chngx)结束时可以恢复执行原来的程序(chngx)(SPSR-CPSR,恢复之前使用过的寄存器)。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常,如:“异常优先级”。第66页/共83页第六十六页,共84页。67在ARM体系中通常有以下3种方式控制程序的执行流程:在正常程序执行过程中,每执行一条ARM指令,程序计数器

67、寄存器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器(PC)的值加两个字节。整个过程是按顺序执行。通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。当异常中断发生时,系统执行完当前(dngqin)指令后,将跳转到相应的异常中断处理程序处执行。第67页/共83页第六十七页,共84页。681.6.1ARM中异常中断种类(zhngli)ARM体系(tx)中的异常中断如表1.7所示。异常中断名称含 义复位(Reset)当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面几种情况下:系统加电时系统

68、复位时跳转到复位中断向量处执行,称为软复位未定义的指令(undefined instruction)当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断。软件中断(software interrupt SWI)这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统(RTOS)中可以通过该机制实现系统功能调用指令预取中止(Prefech Abort)如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当该被预取的指令执行时,处理器产生指令预取中止异常中断数据访问中止(Data Abort)如果数据访问指令的目标地址不存在,或

69、者该地址不允许当前指令访问,处理器产生数据访问中止异常中断外部中断请求(IRQ)当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断请求(IRQ)异常中断。系统中各外设通常通过该异常中断请求处理器服务快速中断请求(FIQ)当处理器的外部快速中断请求引脚有效,而且CPSR寄存器的F控制位被清除时,处理器产生外部中断请求(FIQ)异常中断第68页/共83页第六十八页,共84页。691.6.2ARM处理器对异常中断的响应(xingyng)过程ARM处理器对异常中断的响应过程如下所述。保存处理器状态、中断屏蔽位以及各条件标志(biozh)位到相应异常对应的SPSR_

70、mode中。设置当前程序状态寄存器CPSR中相应的位(M位、I、F等)。将寄存器lr_mode设置成返回地址。将程序计数器值(PC),设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行。第69页/共83页第六十九页,共84页。701.6.3从异常中断处理程序中返回(fnhu)从异常中断处理程序中返回包括以下两个基本操作:恢复被中断的程序的处理器状态,即将SPSR_mode寄存器内容复制到CPSR中。返回到发生(fshng)异常中断的指令的下一条指令处执行,即将lr_mode寄存器的内容复制到程序计数器PC中。复位异常中断处理程序不需要返回。在复位异常中断处理程序开始整个用户

71、程序的执行,因而它不需要返回。第70页/共83页第七十页,共84页。注意:ARM内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。异常总是在ARM状态中进行处理(chl)。当处理(chl)器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。第71页/共83页第七十一页,共84页。程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示进入(jnr)异常过程1. 程序在系统模式(msh)下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;2. 用户(yngh)程序运行时发生IRQ中断,硬件完成以下动作:LR_sysSPSR_irqLR

72、_irqLRPCCPSRSPSRSYS1?0. . .? ? ? ?MODTFI. . .N Z C V置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器模式至IRQ模式将下一条指令的地址存入IRQ模式的LR寄存器将CPSR寄存器内容存入IRQ模式的SPSR寄存器将跳转地址存入PC,实现跳转IRQ0?1. . .? ? ? ?BackAddrJumpAddrJumpSYS1?0. . .?“?”表示对该位不关心第72页/共83页第七十二页,共84页。在异常处理结束(jish)后,异常处理程序完成以下动作:程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示退出(tu

73、ch)异常过程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0. . .? ? ? ?MODTFI. . .N Z C V将SPSR寄存器的值复制(fzh)回CPSR寄存器;将LR寄存的值复制到PC寄存器,跳转到被中断的用户程序。IRQ0?1. . .? ? ? ?BackAddrJumpAddrreturnSYS1?0. . .?SYS1?0. . .? ? ? ?BackAddr-4Jump“?”表示对该位不关心第73页/共83页第七十三页,共84页。741.7ARM体系(tx)中存储系统关于ARM体系(tx)的存储系统在第5章有详细的介绍。这里仅仅介绍ARM编

74、程模型中与存储系统相关的一些概念。第74页/共83页第七十四页,共84页。体系结构直接(zhji)支持的数据类型体系结构直接体系结构直接(zhji)支持的数据类型支持的数据类型ARM处理器支持下列(xili)数据类型:字节 8位半字 16位(必须分配为占用两个字节)字 32位(必须分配为占用4各字节)1112342第75页/共83页第七十五页,共84页。761.7.1ARM体系(tx)中的存储空间ARM体系使用单一的平板地址空间。该地址空间的大小为232个8位字节。这些字节单元的地址是一个无符号的32位数值,其取值范围为0到232-1。ARM的地址空间也可以看作是230个32位的字单元。这些字

75、单元的地址可以被4整除,也就是说该地址的低两位为0b00。地址为A的字数据包括地址为A、A+1、A+2、A+34个字节单元的内容。在ARM版本4及以上(yshng)的版本中,ARM的地址空间也可以看作是231个16位的半字单元。这些半字单元的地址可以被2整除,也就是说该地址的最低位为0b0。地址为A的半字数据包括地址为A、A+1两个字节单元的内容。第76页/共83页第七十六页,共84页。771.7.2ARM存储器格式(gshi)在ARM体系中,每个字单元中包含4个字节单元或者两个半字单元;1个半字单元中包含两个字节单元。但是(dnsh)在字单元中,4个字节哪一个是高位字节,哪一个是低位字节则有

76、两种不同的格式:big-endian格式和little-endian格式。在big-endian格式中,存储器格式如图1.1所示。第77页/共83页第七十七页,共84页。781.7.2ARM存储器格式(gshi)在little-endian格式(gshi)中,存储器格式(gshi)如图1.2所示。第78页/共83页第七十八页,共84页。存储器系统有两种映射机制(jzh):小端存储器系统: 在小端格式中,高字节存放在高地址中,低字节存放在低地址中。大端存储器系统: 在大端格式中,低字节存放在高地址中,高字节存放在低地址中。思考:0x12345678字数据的大小端存储方式0x12345678字数据

77、的大小端存储方式0x12高位地址低位地址0x340x560x78大端模式0x78高位地址低位地址0x560x340x12小端模式第79页/共83页第七十九页,共84页。801.7.3非对齐的存储(cnch)访问操作在ARM中,通常希望字单元的地址是字对齐的(地址的低两位为0b00),半字单元的地址是半字对齐的(地址的最低位为0b0)。在存储访问操作中,如果存储单元的地址没有遵守(znshu)上述的对齐规则,则称为非对齐(unaligned)的存储访问操作。1.非对齐的指令预取操作2.非对齐的数据访问操作第80页/共83页第八十页,共84页。1.非对齐的指令预取操作ARM状态下,写入PC中的值非

78、字对齐的(低两位不为0b00);Thumb状态下,写入PC中的值是非半字对齐的(最低位不为0b0),则要么指令执行的结果不可预知,要么地址(dzh)值中最低位被忽略。2.非对齐的数据访问操作对于Load/Store操作,如果是非对齐的数据访问操作,系统定义了下面3种可能的结果。执行的结果不可预知。忽略字单元地址(dzh)的低两位的值,即访问地址(dzh)为(addressAND0XFFFFFFC)的字单元;忽略半字单元地址(dzh)的最低位的值,即访问地址(dzh)为(addressAND0XFFFFFFE)的半字单元。由存储系统实现这种“忽略”。也就是说,这时该地址(dzh)值原封不动地送到

79、存储系统。第81页/共83页第八十一页,共84页。821.7.4指令预取和自修改(xigi)代码在ARM中允许指令预取。在CPU执行当前指令的同时,可以从存储器中预取其后若干条指令,具体预取多少条指令,不同的ARM实现中有不同的数值。预取的指令并不一定能够得到执行。自修改代码指的是代码在执行过程中可能修改自身。对于支持指令预取的ARM系统(xtng),自修改代码可能带来潜在的问题。当指令被预取后,在该指令被执行前,如果有数据访问指令修改了位于主存中的该指令,这时被预取的指令和主存中对应的指令不同,从而可能使执行的结果发生错误。第82页/共83页第八十二页,共84页。83感谢您的观赏(gunshng)!第83页/共83页第八十三页,共84页。内容(nirng)总结1。ARM体系结构共定义了6个版本,版本号分别为16。这些设备一方面需要处理器提供高性能,另一方面又需要功耗很低。SIMD功能扩展为包括音频/视频处理在内的应用系统提供了优化功能。性能MIPS*/MHz。接入级的无线无线设备。提供0.25m、0.18m及0.13m的生产工艺。统一(tngy)的数据cache和指令cache。成像设备,包括激光打印机、数字照相机和数字摄像机等。控制位M40控制处理器模式第八十四页,共84页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号