单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第3章 ARM微处理器体系结构与指令集,第3章 ARM微处理器体系结构与指令集,1,主要内容,ARM体系结构的特点,ARM微处理器体系结构,ARM处理器的工作模式,ARM处理器的寄存器组织,流水线,ARM处理器的存储,ARM处理器的异常,ARM处理器的指令系统,ARM处理器的寻址方式,ARM指令集,Thumb指令集,主要内容ARM体系结构的特点,2,3.1 ARM体系结构的特点,RISC型处理器结构,Thumb指令集,多处理器状态模式,两种处理器工作状态,嵌入式在线仿真调试,灵活方便的接口,低电压功耗的设计,3.1 ARM体系结构的特点RISC型处理器结构,3,ARM微处理器的特点,采用RISC架构的ARM微处理器一般具有如下特点:,1、体积小、低功耗、低成本、高性能;,3、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;,3、大量使用寄存器,指令执行速度更快;,4、大多数数据操作都在寄存器中完成;,5、寻址方式灵活简单,执行效率高;,6、指令长度固定;,ARM微处理器的特点采用RISC架构的ARM微处理器一般具有,4,3.2 ARM处理器体系结构,3.2 ARM处理器体系结构,5,嵌入式处理器的基本结构(1),微处理器是整个系统的核心,通常由3大部分组成:控制单元、算术逻辑单元和寄存器。,算术逻辑单元,寄存器,控制单元,微处理器,存储器,输入,输出,嵌入式处理器的基本结构(1)微处理器是整个系统的核心,通常由,6,嵌入式处理器的基本结构(2),控制单元:主要负责取指、译码和取操作数等基本动作,并发送主要的控制指令。控制单元中包括两个重要的寄存器:程序计数器(PC)和指令寄存器(IR)。程序计数器用于记录下一条程序指令在内存中的位置,以便控制单元能到正确的内存位置取指;指令寄存器负责存放被控制单元所取的指令,通过译码,产生必要的控制信号送到算术逻辑单元进行相关的数据处理工作。,嵌入式处理器的基本结构(2)控制单元:主要负责取指、译码和取,7,嵌入式处理器的基本结构(2),算术逻辑单元:算术逻辑单元分为两部分,一部分是算术运算单元,主要处理数值型的数据,进行数学运算,如加、减、乘、除或数值的比较;另一部分是逻辑运算单元,主要处理逻辑运算工作,如AND、OR、XOR或NOT等运算。,嵌入式处理器的基本结构(2)算术逻辑单元:算术逻辑单元分为两,8,嵌入式处理器的基本结构(2),寄存器:用于存储暂时性的数据。主要是从存储器中所得到的数据(这些数据被送到算术逻辑单元中进行处理)和算术逻辑单元中处理好的数据(再进行算术逻辑运行或存入到存储器中。,嵌入式处理器的基本结构(2)寄存器:用于存储暂时性的数据。主,9,3.2.1 ARM处理器的工作状态,处理器有两种工作状态:,ARM:32位,执行字对准的ARM指令,Thumb:16位,执行半字对准的Thumb指令,ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容,3.2.1 ARM处理器的工作状态处理器有两种工作状态:,10,ARM微处理器:处理器工作状态,进入Thumb状态:,执行BX指令,并设置操作数寄存器的状态(位0)为1。,在Thumb状态进入异常(IRQ,FIQ,UNDEF,ABORT,SWI etc.),当异常处理返回时自动转换到Thumb状态,进入ARM状态:,执行BX指令,并设置操作数寄存器的状态(位0)为0。,进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可进入ARM状态,ARM微处理器:处理器工作状态进入Thumb状态:,11,3.2.2 寄存器组织,ARM处理器有37个寄存器,30个通用寄存器:堆栈及其他通用寄存器,6个状态寄存器,1个PC(程序计数器),这些寄存器不能同时看到,不同的处理器状态和工作模式确定哪些寄存器是对编程者是可见的,3.2.2 寄存器组织ARM处理器有37个寄存器,12,ARM微处理器:ARM State寄存器,ARM微处理器:ARM State寄存器,13,1.ARM状态下的通用寄存器,通用寄存器包括R0R15,可以分为三类:,未分组寄存器R0R7;,分组寄存器R8R14,程序计数器PC(R15),1.ARM状态下的通用寄存器通用寄存器包括R0R15,可以,14,未分组寄存器R0R7,所有模式下,R0-R7所对应的物理寄存器都是相同的,这八个寄存器是真正意义上的通用寄存器,ARM体系结构中对它们没有作任何特殊的假设,它们的功能都是等同的。,在中断或者异常处理程序中一般都需要对这几个寄存器进行保存。,未分组寄存器R0R7 所有模式下,R0-R7所对应的物理寄,15,分组寄存器R8R14,访问的物理寄存器取决于当前的处理器模式,若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。,R8-R13各有两组物理寄存器:一组为FIQ模式,另一组是除FIQ以外的其他模式。,R13-R14各有6个分组的物理寄存器,一个用于用户模式和系统模式,其他5个分别用于5种异常模式。,R13(也被称为SP指针)被用作,栈指针,,通常在系统初始化时需要对所有模式下的SP指针赋值,当CPU在不同的模式时栈指针会被自动切换成相应模式下的值。,R14有两个用途,一是在,调用子程序时用于保存调用返回地址,,二是在,发生异常时用于保存异常返回地址,。,分组寄存器R8R14访问的物理寄存器取决于当前的处理器模式,16,程序计数器PC(R15),用作程序计数器(PC),可以被读写,ARM state:bits 1:0为0,bits31:3即为 PC.,THUMB state:bit 0为0,bits31:1即为 PC,程序计数器PC(R15)用作程序计数器(PC),可以被读写,17,3.ARM状态下的状态寄存器R16,寄存器R16用作CPSR(Current Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。,每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。,由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。,3.ARM状态下的状态寄存器R16 寄存器R16用作CPSR,18,CPSR,CPSR(当前程序状态寄存器)在所有的模式下都是可以读写的,它主要包含:,条件标志,中断使能标志,当前处理器的模式,其它的一些状态和控制标志,CPSRCPSR(当前程序状态寄存器)在所有的模式下都是可以,19,ARM微处理器:程序状态寄存器,置0表示执行32bit的ARM指令,置1表示执行16bit的Thumb指令,Negative,Zero,Carry,Overflow,IRQ中断的响应:,置1:禁止响应,置0:允许响应,FIQ中断的响应:,置1:禁止响应,置0:允许响应,条件标志,模式控制位,ARM/Thumb控制标志,中断标志,ARM微处理器:程序状态寄存器置0表示执行32bit的ARM,20,ARM微处理器:程序状态寄存器,模式控制位M0-M4,ARM微处理器:程序状态寄存器模式控制位M0-M4,21,Thumb状态下的寄存器组织,Thumb状态下的寄存器组织,22,两种状态下的寄存器组织的关系,Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系:,Thumb状态下和ARM状态下的R0R7是相同的。,Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。,Thumb状态下的SP对应于ARM状态下的R13。,Thumb状态下的LR对应于ARM状态下的R14。,Thumb状态下的程序计数器对应于ARM状态下R15,两种状态下的寄存器组织的关系Thumb状态下的寄存器组织与A,23,嵌入式系统教学ppt课件:第3章-arm微处理器体系结构与指令集,24,3.2.3 ARM的工作模式,7种CPU模式,CPU模式的转变:,软件控制,异常,外部中断,3.2.3 ARM的工作模式7种CPU模式 CPU模式的转,25,ARM微处理器:CPU模式,User模式,程序不能访问有些受保护的资源,只能通过异常的形式来改变CPU的当前运行模式,特权模式,可以存取系统中的任何资源,System模式,与User模式的运行环境一样,但是它可以不受任何限制的访问任何资源,该模式主要用于运行系统中的一些,特权任务,FIQ模式,IRQ模式,Supervisor模式,Abort模式,Undefined模式,异常模式,:主要是在,外部中断,或者程序执行,非法操作,时会触发,ARM微处理器:CPU模式User模式程序不能访问有些受保护,26,3.2.4,流水线,3.2.4 流水线,27,1 流水线的概念与原理,处理器按照一系列步骤来执行每一条指令,典型的步骤如下:,(1)从存储器读取指令(fetch);,(3)译码以鉴别它是属于哪一条指令(decode);,(3)从指令中提取指令的操作数(这些操作数往往存在于寄存器中)(reg);,1 流水线的概念与原理 处理器按照一系列步骤来执行每,28,(4)将操作数进行组合以得到结果或存储器地址(ALU);,(5)如果需要,则访问存储器以存储数据(mem);,(6)将结果写回到寄存器堆(res)。,(4)将操作数进行组合以得到结果或存储器地址(ALU,29,2,流水线的分类,到ARM7为止的ARM处理器使用简单的3级流水线,它包括下列流水线级。,(1)取指令(fetch):从寄存器装载一条指令。,(3)译码(decode):识别被执行的指令,并为下一个周期准备数据通路的控制信号。在这一级,指令占有译码逻辑,不占用数据通路。,(3)执行(excute):处理指令并将结果写回寄存器。,1)3,级流水线ARM组织,2 流水线的分类 到ARM7为止的ARM处理器使用,30,在ARM9TDMI中使用了典型的5级流水线,5级流水线包括下面的流水线级。,(1)取指令(fetch):从存储器中取出指令,并将其放入指令流水线。,(3)译码(decode):指令被译码,从寄存器堆中读取寄存器操作数。在寄存器堆中有3个操作数读端口,因此,大多数ARM指令能在1个周期内读取其操作数。,2)5,级流水线ARM组织,在ARM9TDMI中使用了典型的5级流水线,5级流水,31,(3)执行(execute):将其中1个操作数移位,并在ALU中产生结果。如果指令是Load或Store指令,则在ALU中计算存储器的地址。,(4)缓冲/数据(buffer/data):如果需要则访问数据存储器,否则ALU只是简单地缓冲1个时钟周期。,(5)回写(write-back):将指令的结果回写到寄存器堆,包括任何从寄存器读出的数据。,(3)执行(execute):将其中1个操作数移位,,32,在ARM10中,将流水线的级数增加到6级,使系统的平均处理能力达到了1.3DMIPS/MHz。,3)6级流水线ARM组织,在ARM10中,将流水线的级数增加到6级,使系统的平,33,图3-4 6级流水线指令的执行过程,图3-4 6级流水线指令的执行过程,34,3.2.5 异常,当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。,ARM体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。,3.2.5 异常当正常的程序执行流程发生暂时的停止时,称之,35,1 ARM体系