您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第3章ARM体系结构
第3章ARM体系结构2第3章ARM体系结构3.1ARM微处理器基础3.2ARM的内核系列3.3ARM微处理器的指令系统3.4ARM内存管理单元33.1ARM微处理器基础ARM的运行模式ARM的工作状态ARM的寄存器组织ARM的异常ARM的存储器格式ARM的特点和优势4ARM的运行模式ARM微处理器支持7种运行模式,分别为:用户模式(usr):ARM处理器正常的程序执行状态快速中断模式(fiq):用于高速数据传输或通道处理中断模式(irq):用于通用的中断处理管理模式(svc):操作系统使用的保护模式终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。系统模式(sys):运行具有特权的操作系统任务。未定义模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。5ARM的工作状态ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:ARM状态,此时处理器执行32位的字对齐的ARM指令Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令6ARM的寄存器组织ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问。在某种时刻,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。7ARM的寄存器组织R0R1R2R3R4R5R6R7R9R8R10R11R12R13R14R15(PC)R0R1R2R3R4R5R6R7R9R8R10R11R12R13_svcR14_svcR15(PC)R0R1R2R3R4R5R6R7R9_fiqR10_fiqR11_fiqR12_fiqR13_fiqR14_fiqR15(PC)R8_fiqR0R1R2R3R4R5R6R7R9R8R10R11R12R13_abtR14_abtR15(PC)R0R1R2R3R4R5R6R7R9R8R10R11R12R13_irqR14_irqR15(PC)R0R1R2R3R4R5R6R7R9R8R10R11R12R13_undR14_undR15(PC)ARM状态通用寄存器和程序计数器ARM状态程序状态寄存器CPSRCPSRSPSR_fiqCPSRSPSR_irqCPSRSPSR_undCPSRSPSR_abtCPSRSPSR_svc系统和用户FIQ管理IRQ终止未定义8ARM的寄存器组织R0R1R2R3R4R5R6R7LRSPPC系统和用户FIQ管理IRQ终止未定义Thumb状态通用寄存器和程序计数器Thumb状态程序状态寄存器CPSRCPSRSPSR_fiqCPSRSPSR_svcCPSRSPSR_abtCPSRSPSR_irqCPSRSPSR_undLR_fiqR0R1R2R3R4R5R6R7SP_fiqPCLR_svcR0R1R2R3R4R5R6R7SP_svcPCLR_undR0R1R2R3R4R5R6R7SP_undPCLR_fiqR0R1R2R3R4R5R6R7SP_fiqPCLR_abtR0R1R2R3R4R5R6R7SP_abtPC9ARM的寄存器组织R0R1R2R3R4R5R6R7StackPointer(SP)Linkregister(LR)ProgramCounter(PC)CPSRSPSRR0R1R2R3R4R5R6R7R9R8R10R11R12StackPointer(R13)Linkregister(R14)ProgramCounter(R15)CPSRSPSRTHUMB状态ARM状态低寄存器高寄存器10ARM的寄存器组织~~31条件标志溢出NZCVIFTM4M3M2M1M03029272826252423876543210(保留)控制位进位/借位/扩展为零负/小于模式位状态位FIQ禁止IRQ禁止~~PSR寄存器的各个位:中断禁止位I、FThumb标志位运行模式位M[4:0]11ARM的寄存器组织M[4:0]处理器模式0b10000用户模式0b10001FIQ0b10010IRQ0b10011管理模式0b10111终止模式0b11011未定义模式0b11111系统模式状态寄存器模式位的含义12ARM的异常异常类型具体含义复位(Reset)当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。未定义指令(Undefined)当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真。软件中断(SWI)该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用。指令预取终止(PrefetchAbort)若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出终止信号,但当预取的指令被执行时,才会产生指令预取终止异常。数据终止(DataAbort)若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据终止异常。外部中断请求(IRQ)当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可通过该异常请求中断服务。快速中断请求(FIQ)当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。13ARM的异常返回指令以前的状态ARMThumbBLMOVPC,R14PC+4PC+2SWIMOVSPC,R14_svcPC+4PC+2UDEFMOVSPC,R14_undPC+4PC+2FIQSUBSPC,R14_fiq,#4PC+4PC+4IRQSUBSPC,R14_irq,#4PC+4PC+4PABTSUBSPC,R14_abt,#4PC+4PC+4DABTSUBSPC,R14_abt,#8PC+8PC+814ARM的异常1(最高)复位2数据终止3FIQ4IRQ5预取指令终止6(最低)未定义指令、SWIARM异常的优先级15ARM的存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从第0字节到第3字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(32位)。ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。16ARM的存储器格式大端格式31238701个字(word)241516低地址11字节10字节9字节8字节7字节6字节5字节4字节3字节2字节1字节0字节内存高地址低位高位17ARM的存储器格式小端格式。31238701个字(word)241516低地址11字节10字节9字节8字节7字节6字节5字节4字节3字节2字节1字节0字节内存高地址低位高位18ARM的特点和优势1.内核编程体系多种模式的切换众多的通用寄存器32位地址/数据操作指令集中的特殊功能高效的C和C++编译器硬件乘法器Thumb指令集E增强DSP指令Jazzle技术2.协处理器MMUMPUVFP3.AMBA(先进控制器总线体系)4.嵌入式ICE、低功耗、小体积193.2ARM的内核系列ARM内核分类与系列ARM体系结构版本20ARM内核分类与系列ARM内核系列ARM7系列ARM9系列ARM9E系列ARM10E系列SecurCore系列StrongARM/XscaleARM11系列Cortex21ARM内核分类与系列199419961998200020022004ARM926EJARM10EJARM9EARM10XscaleARM1022EARMv6coresARM920TStrongARMARM720TARM7TDMIARMv6ARMv5ARMv41994-2004年发布的ARM内核22ARM内核分类与系列处理器内核内核分类ARM7ARM7DMI(-S)ARM720TARM7EJ-SARM9ARM920TARM922TARM9EARM926EJ-SARM946E-SARM966E-SARM968E-SARM10EARM1020EARM1022EARM1026EJ-S处理器内核内核分类ARM11ARM1136J(F)-SARM1156T2(F)-SARM1176JZ(F)-SSecurCoreSC100SC110SC200SC210StrongARMXscale23ARM7内核ARM7TDMIARM7TDMI-SARM720TARM7EJ-S24ARM9内核ARM920TARM922T25ARM9E内核ARM926EJ-SARM946E-SARM966E-SARM968E-S26ARM10E内核ARM1020EARM1026EJ-S27ARM11内核ARM1136J(F)-SARM1156T2(F)-SARM1176JZ(F)-S28SecurCore内核SC100/SC110SC200/SC21029其他ARM内核StrongARMIntelXScaleCortexARMCortexA(应用内核)ARMCortexR(实时内核)ARMCortexM(微控制器)30ARM体系结构版本ARMV1体系是最初的版本,只有26位的寻址空间,没有乘法指令,最终也没有商业化。ARMV2体系与V1体系同为26位寻址空间具有乘法和乘加指令,支持协处理器。ARMV3体系的寻址范围扩展到32位,具有乘法和乘加指令,支持协处理器。ARMV4体系增加了半字存储操作,对调试的支持以及支持嵌入的ICE。ARMV5体系增加了DSP指令支持和对Java指令的支持。ARMV6体系增加了媒体指令,ARMv6指令集合中加入了超过60条SIMD单指令多数据指令。ARMV7体系定义了三种独立的内核型--A(应用领域),R(实时领域),M(控制领域)。313.2ARM微处理器的指令系统ARM指令系统的概述ARM的寻址模式ARM的指令集Thumb的指令集32ARM指令系统的概述ARM微处理器指令是加载/存储型的,即指令集仅能处理寄存器中的数据,处理结果都要放回寄存器中,对系统存储器的访问则需要专门的加载/存储指令来完成ARM指令集分为六类:1.跳转指令2.数据处理指令3.程序状态寄存器(PSR)处理指令4.加载/存储指令5.协处理器指令6.异常产生指令33ARM指令系统的概述助记符指令功能描述ADC带进位加法指令ADD加法指令AND逻辑与指令B跳转指令BIC位清零指令BL带返回的跳转指令BLX带返回和状态切换的跳转指令BX带状态切换的跳转指令CDP协处理器数据操作指令CMN比较反值指令CMP比较指令EOR异或指令LDC存储器到协处理器的数据传输指令LDM加载多个寄存器指令LDR存储器到寄存器的数据传输指令MCR从ARMMLA乘加运算指令MOV数据传送指令助记符指令功能描述MRC从协处理器寄存器到ARMMRS传送CPSRMSR传送通用寄存器到CPSRMUL32MLA32MVN数据取反传送指令ORR逻辑或指令RSB逆向减法指令RSC带借位的逆向减法指令SBC带借位减法指令STC协处理器寄存器写入存储器指令STM批量内存字写入指令STR寄存器到存储器的数据传输指令SUB减法指令SWI软件中断指令SWP交换指令TEQ相等测试指令TST位测试指令34ARM指令的格式一条典型的ARM指令编码格式为:Cond001OpcodeSRnRdOperand2011121516192021242527283178一条典型的ARM指令语法格式为:Opcode{cond}{s}Rd,Rn{,Operand2}Opcode:指令操作码。cond:指令的条件码。S:决定指令的操作是否影响cpsr的值。Rd:目标寄存器编码。Rn:包含第一个操作数的寄存器编码。Operand2:第2操作数。35条件执行每条ARM指令包含4位条件码域cond,它占用指令编码的最高四位[31:28]。条件编码共24=16种,其中,15种用于指令的条件码。每种条件码用2个英文缩写字
本文标题:第3章ARM体系结构
链接地址:https://www.777doc.com/doc-29357 .html