微机应用新技术第四部分第三章--ARM体系结构与指令集.ppt_第1页
微机应用新技术第四部分第三章--ARM体系结构与指令集.ppt_第2页
微机应用新技术第四部分第三章--ARM体系结构与指令集.ppt_第3页
微机应用新技术第四部分第三章--ARM体系结构与指令集.ppt_第4页
微机应用新技术第四部分第三章--ARM体系结构与指令集.ppt_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

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

文档简介

ARM体系结构与ARM指令集 ARM体系结构与ARM指令集 ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构 ARMLtd 成立于1990年11月前身为Acorn计算机公司AdvanceRISCMachine ARM 主要设计ARM系列RISC处理器内核授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片IP IntelligenceProperty 另外也提供基于ARM架构的开发设计技术软件工具 评估板 调试工具 应用软件 总线架构 外围设备单元 等等 ARMOfficesWorldwide 800 雇员全球 EnglandCambridge Maidenhead Sheffield BlackburnGermanyMunichFranceParis SophiaAntipolisKoreaSeoul USSeattle LosGatos WalnutCreek Austin Boston SanDiegoChinaTaiwanandShanghaiJapanShin Yokohama Tokyo ARMPartnershipModel ARM即AdvancedRISCMachines的缩写 1985年4月26日 第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生 由美国加州SanJoseVLSI技术公司制造 20世纪80年代后期 ARM很快开发成Acorn的台式机产品 形成英国的计算机教育基础 1990年成立了AdvancedRISCMachinesLimited 20世纪90年代 ARM32位嵌人式RISC ReducedInstructionSetComputer 处理器扩展到世界范围 占据了低功耗 低成本和高性能的嵌入式系统应用领域的领先地位 ARM的发展历程 1 32位RISC处理器受到青睐 领先的是ARM嵌入式微处理器系列 ARM公司虽然只成立10多年 但在1999年因移动电话火爆市场 其32位RISC处理器占市场份额超过了50 2001年初 ARM公司的32位RISC处理器市场占有率超过了75 ARM公司是知识产权供应商 是设计公司 由合作伙伴公司来生产各具特色的芯片 ARM的发展历程 1 ARM的发展历程 1 ARM公司商业模式的强大之处在于其价格合理 全世界范围有超过100个合作伙伴 包括半导体工业的著名公司 ARM公司专注于设计 其内核耗电少 成本低 功能强 特有16 32位双指令集 ARM已成为移动通信 手持计算 多媒体数字消费等嵌入式解决方案的RISC标准 在所有ARM处理器系列中 ARM7处理器系列应用最广 采用ARM7处理器作为内核生产芯片的公司最多 ARM的发展历程 2 1991 ARM推出第一款RISC嵌入式微处理器核ARM61993 ARM推出ARM7核1995 ARM的Thumb扩展指令集结构为16位系统增加了32位的性能 提供业界领先的代码密度 ARM的发展历程 3 ARM处理器的3大特点如下 小体积 低功耗 成本低 高性能 16位 32位双指令集 全球众多的合作伙伴 当前ARM体系结构的扩充包括 Thumb 16位指令集 用以改善代码密度 DSP 用于DSP应用的算术运算指令集 Jazeller 允许直接执行Java代码的扩充 ARM处理器系列提供的解决方案包括 在无线 消费电子和图像应用方面的开放平台 存储 自动化 工业和网络应用的嵌入式实时系统 智能卡和SIM卡的安全应用 ARM处理器的特点 ARM Partner OEMCustomer ARM的业务模型 ARM发展 SA 110 ARM7TDMI 4T 1 支持Halfword和signedhalfword byte和Systemmode 支持Thumb指令集 2 4 ARM9TDMI SA 1110 ARM720T ARM940T 改良的ARM Thumb交互作用以及CLZ指令 5TE SaturatedmathsDSPmultiply accumulateinstructions XScale ARM1020E ARM9E S ARM966E S 3 早期的ARMs ARM9EJ S 5TEJ ARM7EJ S ARM926EJ S Jazelle支持Java字节码 6 ARM11 SIMD SISIMDMD S SIMD ARM微处理器 微处理器核 ARM6 ARM7 ARM9 ARM10 ARM11扩展 Thumb DSP SIMD Jazelleetc 其它IP核 UART GPIO memorycontrollers etc ARM核命名的含义 ARMCore ARM核 处理器核 整数核 ProcessorCore IntegerCore ARM7TDMI ARM9TDMI ARM9E S ARM10TDMI ARM10E等 ARMCPU核 ARMCPUCores ARM710T 720T 740T ARM920T 940T ARM946E S ARM966E S ARM1020E等 基于ARMCoreCPU的应用处理器 比如 Intel的pxa25x Philip的lpc22xx系列 Samsung的S3C44B0等 ARM7T和ARM7EFamily ARM7系列的升级 ARM9Family ARM9系列的升级 ARM体系结构版本 1 Version1 obsolete 基本数据处理字节 字以及多字load store软件中断26bit地址总线Version2 obsolete Multiply Multiply accumulate支持协处理器支持线程同步26bit地址总线 ARM体系结构版本 2 V3版本推出32位寻址能力 结构扩展变化为T 16位压缩指令集M 增强型乘法器 产生全64位结果 32X32 64or32X32 64 64 V4版本增加了半字load和store指令V5版本改进了ARM和Thumb之间的交互 结构扩展变化为 E 增强型DSP指令集 包括全部算法操作和16位乘法操作J 支持新的JAVA 提供字节代码执行的硬件和优化软件加速功能 ARM体系结构更新 体系结构变化 1 THUMB指令集 T THUMB指令集 32位ARM指令集的子集 按16位指令重新编码代码尺寸小 upto40 compression 简化设计 体系结构变化 2 长乘法指令 M 32x32 64bit 提供全64位结果增强DSP指令集 E 可附加在ARM中的DSP指令64bit转换在v5版本中第一次推出处理器内核的变化D 在片调试 处理器可响应调试暂停请求I EmbeddedICE 支持片上断点调试 体系结构变化 3 ARMDSP指令集对于音频DSP应用提供高达70 的处理速度Jazelle提供比基于软件的JAVA虚拟机 JVM 更高的性能与非JAVA加速核相比 提供8倍JAVA加速性能和降低80 的功耗139字节码直接在硬件上执行 88个字节码在软件上执行 ARM体系结构与ARM指令集 ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构 指令流水线 为增加处理器指令流的速度 ARM7系列使用3级流水线 允许多个操作同时处理 比逐条指令执行要快 PC指向正被取指的指令 而非正在执行的指令 Fetch Decode Execute 从存储器中读取指令 解码指令 寄存器读 从寄存器Bank 移位及ALU操作寄存器写 到寄存器Bank PCPC PC 4PC 2 PC 8PC 4 ARMThumb 处理器的工作状态 ARM7TDMI处理器有两种工作状态 ARM 32 bit 按字排列的ARM指令集Thumb 16 bit 按半字排列的Thumb指令集ARM7TDMI核的操作状态可能通过BX指令 分支和交换指令 在ARM状态和Thumb状态之间切换 例 从ARM状态切换到Thumb状态 LDRR0 Label 1BXR0从Thumb状态切换到ARM状态 LDRR0 LabelBXR0 存储器模式 大端模式字数据的高位字节存储在低地址中字数据的低字节则存放在高地址中小端模式低地址中存放字数据的低字节高地址中存放字数据的高字节 TheARM可以用little bigendian格式存取数据 r0 0 x11223344 STRr0 r1 LDRBr2 r1 r1 0 x100 Memory 3210 0123 ByteLane 31 24 23 16 15 8 7 0 11 22 33 44 31 24 23 16 15 8 7 0 11 22 33 44 31 24 23 16 15 8 7 0 11 22 33 44 31 24 23 16 15 8 7 0 00 00 00 44 31 24 23 16 15 8 7 0 00 00 00 11 Littleendian Bigendian R2 0 x44 R2 0 x11 Formoreinformation see ApplicationNote61 BigandLittleEndianByteAddressing 数据和指令类型 ARM采用的是32位架构 ARM约定 Byte 8bitsHalfword 16bits 2byte Word 32bits 4byte 大部分ARMcore提供 ARM指令集 32 bit Thumb指令集 T变种 16 bit Jazellecores支持Javabytecode J变种 4TEJ 处理器工作模式 ARM有7个基本工作模式 1 User 非特权模式 大部分任务执行在这种模式正常程序执行的模式2 FIQ 当一个高优先级 fast 中断产生时将会进入这种模式高速数据传输和通道处理3 IRQ 当一个低优先级 normal 中断产生时将会进入这种模式通常的中断处理4 Supervisor 当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式5 Abort 当存取异常时将会进入这种模式虚拟存储及存储保护6 Undef 当执行未定义指令时会进入这种模式软件仿真硬件协处理器7 System 使用和User模式相同寄存器集的特权模式特权级的操作系统任务 寄存器组织 1 寄存器 2 37寄存器31个通用32位寄存器 包括程序计数器PC未分组寄器R0 R7分组寄存器R8 R14程序计数器PC R15 6个状态寄存器15通用寄存器 R0toR14 以及1或者2个状态寄存器和程序计数器在任何时候都是可以访问的可访问的寄存器取决于处理器的模式其它寄存器 thebankedregisters 的状态在支持IRQ FIQ 管理员 中止和未定义模式处理时被切换 寄存器 3 R0到R15可以直接访问R0到R14是通用寄存器R13 堆栈指针 sp 通常 每种处理器模式都有单独的堆栈R14 链接寄存器 lr R15包含程序计数器 PC CPSR 当前程序状态寄存器 包括代码标志状态和当前模式位5个SPSRs 程序状态保存寄存器 当异常发生时保存CPSR状态 程序状态寄存器 1 ARM7TDMI包含当前程序状态寄存器 CPSR 加上5个程序状态保存寄存器SPSR 当异常发生时 用于保存CPSR的状态这些寄存器的功能是 保存ALU当前操作信息控制允许和禁止中断设置处理器操作模式 程序状态寄存器格式 程序状态寄存器 条件位 N 1 结果为负 0 结果为正或0Z 1 结果为0 0 结果不为0C 1 进位 0 借位V 1 结果溢出 0结果没溢出Q位 仅ARM5TE J架构支持指示增强型DSP指令是否溢出J位仅ARM5TE J架构支持J 1 处理器处于Jazelle状态 中断禁止位 I 1 禁止IRQ F 1 禁止FIQ TBit仅ARMxT架构支持T 0 处理器处于ARM状态T 1 处理器处于Thumb状态Mode位 处理器模式位 0b10000User0b10001FIQ0b10010IRQ0b10011Supervisor0b10111Abort0b11011Undefined0b11111System 程序状态寄存器PSR的模式位 Thumb状态下的寄存器组织 当处理器执行在ARM状态 所有指令32bits宽所有指令必须word对齐所以pc值由bits 31 2 决定 bits 1 0 未定义 所以指令不能halfword byte对齐 当处理器执行在Thumb状态 所有指令16bits宽所有指令必须halfword对齐所以pc值由bits 31 1 决定 bits 0 未定义 所以指令不能byte对齐 当处理器执行在Jazelle状态 所有指令8bits宽处理器执行word存取一次取4条指令 程序指针PC r15 异常 1 异常 内部或外部中断源产生并引起处理器处理一个事件 如外部中断或试图执行未定义指令都会引起异常 处理异常之前必须保留处理器的状态异常类型FIQIRQ InterruptReQuest 未定义指令预取中止数据中止复位软件中断Softwareinterrupt通过软件中断产生进行管理员模式中获得通常要求特殊的管理功能 如操作系统支持 异常 2 异常类型未定义的指令陷井当ARM接受到一条不能处理的指令 ARM把这条指令提供给任何一个协处理器执行如果协处理器可以执行这条指令但此时协处理器忙 ARM将等待直到协处理器准备好或中断发生如果没有协处理器处理这条指令 那么ARM将处理未定义的指令陷井异常优先级 1 Reset highestpriority 2 Dataabort 3 FIQ 4 IRQ 5 Prefetchabort 6 未定义指令 Softwareinterrupt 最低优先级 异常 3 只要产生异常就会导致正常和程序流程被临时停止 例如外围中断服务程序在异常被处理前 当前的处理器状态必须被保存 以便处理程序完成后 最后的程序可以被恢复 异常向量 VectorTable 异常处理 当异常产生时 ARMcore 拷贝CPSR到SPSR 设置适当的CPSR位 改变处理器状态进入ARM态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断 如需要 保存返回地址到LR 设置PC为相应的异常向量返回时 异常处理需要 从SPSR 恢复CPSR从LR 恢复PCNote 这些操作只能在ARM态执行 Vectortablecanbeat0 xFFFF0000onARM720TandonARM9 10familydevices FIQ IRQ Reserved DataAbort PrefetchAbort SoftwareInterrupt UndefinedInstruction Reset 进入异常的操作 2 R14 ReturnLinkSPSR CPSRCPSR 4 0 ExceptionModeNumberCPSR 5 0 当运行于ARM状态时IF ResetorFIQthen 当响应FIQ异常时 禁止新的FIQ异常CPSR 6 1 CPSR 7 1 PC ExceptionVectorAddress 例子 用户模式到FIQ模式 r14 fiq r13 fiq r12 fiq r10 fiq r11 fiq r9 fiq r8 fiq 用户模式CPSR复制到FIQ模式SPSR 返回一个从用户模式计算的地址 PC值存储在FIQ模式 用户模式 FIQ模式 进入 退出异常概述 ARM体系结构与ARM指令集 ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构 ARM指令集 Load store结构 在通用寄存器中操作load store 从存储器中读某个值 操作完后再将其放回存储器中指令分类数据处理指令 使用和改变寄存器的值数据传送指令 把存储器的值拷贝到寄存器中 load or把寄存器中的值拷贝到存储器中 store 控制流指令分支分支和链接 保存返回的地址 以恢复最先的次序陷入系统代码 ARM指令的寻址方式 立即寻址寄存器寻址寄存器间接寻址基址变址寻址多寄存器寻址相对寻址堆栈寻址 指令格式 指令格式3地址指令格式在ARM状态中使用2地址指令格式在ARM和THUMB状态下使用 ARM指令编码格式 说明 Cond指令执行的条件编码Opcode指令操作符编码S决定指令的操作是否影响CPSR的值Rd操作目标寄存器编码Rn包含第一操作数的寄存器编码Shifter operand表示第二操作数 312827252421201916151211870 跳转指令数据处理指令 数据交换指令 移位指令 操作 乘法指令与乘加指令 程序状态寄存器访问指令加载 存储指令 批量数据加载 存储指令 协处理器指令异常产生指令 ARM指令集 共六大类指令 ARM指令的条件执行 所有的ARM指令可包含一个可选的条件码 只有在cpsr中的条件标志位满足指定的条件时 指令才会被执行 不符合条件的代码依然占用一个时钟周期 相当于一个NOP指令 ARM指令的条件域 EQ NE 等于 不等于 equal notHS LO 无符号数高于或等于 无符号数小于 higherorsame lower HI LS 无符号数高于 无符号数低于或等于 higher lowerorsame GE LT 有符号数大于或等于 有符号数小于 greaterorequal lessthan GT LE 有符号数大于 有符号数小于或等于 greaterthan lessorequal MI PL 负 非负VS VC 溢出 不溢出 overflowset overflowclear CS CC 进位 无进位 carryset carryclear ARM指令的条件码 1 4 2ARM指令的条件码 续 注 AL是默认的 NV不建议使用 数据处理指令 1 数据处理指令的类别算术操作按位逻辑操作寄存器移位操作比较操作操作数 32 bits宽 有3种指定操作数的方式来自寄存器第二操作数可以是常数 立即数 移位寄存器操作数结果 32 bits宽 放在寄存器中长乘法产生64位结果 数据处理指令 2 数据处理指令 3 数据处理指令 4 算术操作 按位逻辑操作 寄存器移位 比较操作 数据处理指令 5 立即数操作 立即数操作 0 255 x22n 0 n 12移位寄存器操作数第二个操作数在与第一个操作数合成之前 是服从于移位操作的 数据处理指令 6 移位操作在任何数据处理指令中 第二个寄存器操作数可以有应用该操作数的移位操作 逻辑移位LSL 逻辑左移字的最小位空位清零LSR 逻辑右移字的最大位空位清零 数据处理指令 7 移位操作 cont d 算术移位ASR LSRASL 算术左移循环移位 ROR RRX 条件码标志 任何数据处理指令都可以设置条件码 N Z V andC 适用于除比较操作外的所有数据处理指令特殊的请求必须在汇编语言中实现 这种请求是通过把 S 增加到选择代码中指定的算术操作设置所有的标志位 N Z C andV 逻辑和移位操作设置NandZ当无移位操作时 保存V和V 或根据移位操作设置 乘法指令集 在寄存器产生32位值 乘法 例子 乘法 乘法累加器 注意最低32 bits置于结果寄存器中 其余被忽略不支持第二立即操作数结果寄存器与源寄存器必须不同if S bitissettheVispreservedandtheCisrenderedmeaningless 数据传送指令 1 单指令传送 LDR STR 单字 32bit 半字 16bit 以及字节 8bit 传送寻址寄存器偏移地址 基址 寄存器偏移立即数偏移地址 基址 立即数常数后变址Post indexing modifyaddressafteruse前变址Pre indexing modifyaddressbeforeuse回写如果可能 更新基址寄存器 数据传送指令 2 多数据传送指令 LDM STM load LDM 或store STM 当前可访问寄存器的任意子集使用堆栈 maintainingfulloremptystackswhichcangrowupordownmemory上下文切换 保存或重新存储工作寄存器块拷贝 在主存储器中移动大数据块寻址Pre PostindexingAutoincrementordecrement回写到基址寄存器Writebackthebaseregister 数据传送指令 3 单数据交换 SWAP 在寄存器和外部存储器之间交换字节或字读存储器和写存储器是是放在一起的原子指令执行时不能中断当 LOCK 信号输出操作时 外部存储器管理单元被锁定 当多线程操作时使程序同步 OS支持 锁定信号量 数据传送指令 4 Note r1keepsawordaddress 2LSBsare0 寄存器间接寻址 基址 偏移量寻址 offsetofupto4Kbytes 自动变址寻址 后变址寻址 Note norestrictionsforr1 单寄存器loadandstore 数据传送指令 5 数据传送指令 6 块拷贝数据被存贮在基本寄存器的上面地址或下面地址地址增加或减少是在存贮第一个值之前或之后开始的 Note 寄存器的部分或全部都可以用单指令传送Note 在表中的寄存器顺序并不重要Note 在表中包括r15i将造成控制流的改变 多寄存器数据传送 IncrementAfter IA IncrementAfter 传送后地址加1IB IncrementBefore 传送前地址加1DA 传送前地址减1DB 传送前地址减1 多寄存器传送寻址模式 控制流指令 条件执行 条件执行避免使用分支指令Example 使用条件执行 Note add2 letterconditionafterthe3 letteropcode 控制和分支指令 控制指令分支和分支连接跳到希望的指令中保存当前的PC并返回 with L bit 分支和交换跳到期望的指令中与指令集交换Rm 0 1 Subsequentinst areTHUMB Rm 0 0 Subsequentinst areARM PSR指令 程序状态寄存器访问指令 MRS MSR MRS程序状态寄存器到通用寄存器的数据传送指令MSR通用寄存器到程序状态寄存器的数据传送指令 Thumb指令 为兼容数据总线宽度为16位的应用系统 ARM体系结构除了支持执行效率很高的32位ARM指令集以外 同时支持16的Thumb指令集 Thumb指令集是ARM指令集的一个子集 允许指令编码为16位的长度 与等价的32位代码相比较 Thumb指令集在保留32代码优势的同时 大大的节省了系统的存储空间 Thumb指令 ARM指令的时间效率和空间效率关系为 Thumb代码所需的存储空间约为ARM代码的60 70 Thumb代码使用的指令数比ARM代码多约30 40 若使用32位的存储器 ARM代码比Thumb代码快约40 若使用16位的存储器 Thumb代码比ARM代码快约40 50 与ARM代码相比较 使用Thumb代码 存储器的功耗会降低约30 ARM系统初始化过程简介 包括 中断向量表初始化存储器系统初始化堆栈初始化有特殊要求的端口 设备初始化应用程序执行环境改变处理器模式CALL主应用程序 初始化程序的下载执行 目标机 宿主机 1 通过编程器将可执行目标文件烧写到BootROM ROM EPROM FLASH 等 2 通过串行口和网口下载执行目标文件 要求宿主机系统上有数据传输工具程序 目标机装载器 嵌入式监视器或目标机系统上的调试代理 3 通过JTAG或BDM接口下载 嵌入式系统的初始化过程 嵌入式系统的初始化过程 硬件初始化阶段 1 复位向量ENTRYbResetHandler fordebugbHandlerUndef handlerUndefbHandlerSWI SWIinterrupthandlerbHandlerPabort handlerPAbortbHandlerDabort handlerDAbortb handlerReservedbHandlerIRQbHandlerFIQ 嵌入式系统的初始化过程 2 硬件初始化阶段 2 最小硬件初始化 1 设置适当的寄存器 使嵌入式处理器处于一个已知的状态 获得CPU的类型 获得或设置CPU的时钟频率 2 禁止中断和高速缓存3 初始化内存控制器 内存芯片和高速缓存单元 包括 得到内存的开始地址 得到内存的大小 如果有要求 则还需要进行主存测试 嵌入式系统的初始化过程 3 硬件初始化阶段 3 其余硬件初始化 1 引导代码调用合适的函数对目标机系统上的全部硬件部件进行初始化 包括 建立执行处理程序初始化中断处理程序初始化总线接口初始化板级外设得到内存的开始地址 嵌入式系统的初始化过程 4 RTOS初始化阶段 4 RTOS初始化 1 RTOS初始化2 RTOS对象和服务初始化任务信号量定时器中断内存管理3 RTOS任务堆栈初始化4 RTOS扩展部件初始化5 启动RTOS

温馨提示

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

评论

0/150

提交评论