ARM体系结构与编程-1-ARM_TDMI.ppt_第1页
ARM体系结构与编程-1-ARM_TDMI.ppt_第2页
ARM体系结构与编程-1-ARM_TDMI.ppt_第3页
ARM体系结构与编程-1-ARM_TDMI.ppt_第4页
ARM体系结构与编程-1-ARM_TDMI.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

ARM体系结构与编程 ARM处理器 指令集 CISC 复杂指令集 ComplexInstructionSetComputer 具有大量的指令和寻址方式 指令长度可变8 2原则 80 的程序只使用20 的指令大多数程序只使用少量的指令就能够运行 RISC 精简指令集 ReducedInstructionSetComputer 只包含最有用的指令 指令长度固定确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单 CISC的背景和特点 背景 存储资源紧缺 强调编译优化 增强指令功能 设置一些功能复杂的指令 把一些原来由软件实现的 常用的功能改用硬件的 微程序 指令系统来实现 为节省存储空间 强调高代码密度 指令格式不固定 指令可长可短 操作数可多可少 寻址方式复杂多样 操作数可来自寄存器 也可来自存储器 采用微程序控制 执行每条指令均需完成一个微指令序列 CPI 指令越复杂 CPI越大 CISC的主要缺点 指令使用频度不均衡 高频度使用的指令占据了绝大部分的执行时间 扩充的复杂指令往往是低频度指令 大量复杂指令的控制逻辑不规整 不适于VLSI工艺VLSI的出现 使单芯片处理机希望采用规整的硬联逻辑实现 而不希望用微程序 因为微程序的使用反而制约了速度提高 微码的存控速度比CPU慢5 10倍 软硬功能分配复杂指令增加硬件的复杂度 使指令执行周期大大加长 直接访存次数增多 数据重复利用率低 不利于先进指令级并行技术的采用流水线技术 RISC基本设计思想 减小CPI CPUtime Instr Count CPI Clock cycle 精简指令集 保留最基本的 去掉复杂 使用频度不高的指令 采用Load Store结构 有助于减少指令格式 统一存储器访问方式 采用硬接线控制代替微程序控制 RISC 减少指令平均执行周期数 CPUtime Instr Count CPI Clock cycleICRISC ICCISC 30 40 CCRISC CCCISCCPIRISC CPICISC 20 超标量 超流水线 VLIW等系统结构 目标在于减小CPI 可使CPI 1 RISC的提出与发展 Load Store结构提出 CDC6600 1963 CRAY1 1976 RISC思想最早在IBM公司提出 但不叫RISC IBM801处理器是公认体现RISC思想的机器 1980年 Berkeley的Patterson和Dizel提出RISC名词 并研制了RISC 实验样机 1981年Stenford的Hennessy研制MIPS芯片 85年后推出商品化RISC MIPS1 1986 和SPARCV1 1987 典型的高性能RISC处理器 SUN公司的SPARC 1987 MIPS公司的SGI MIPS 1986 HP公司的PA RISC IBM Motorola公司的PowerPCDEC Compac公司的AlphaAXPIBM的RS6000 1990 第一台SuperscalarRISC机 CISC与RISC的对比 ARM发展 ARM处理器工作模式 ARM有7个基本工作模式 User 非特权模式 大部分任务执行在这种模式正常程序执行的模式FIQ 当一个高优先级 fast 中断产生时将会进入这种模式高速数据传输和通道处理IRQ 当一个低优先级 normal 中断产生时将会进入这种模式通常的中断处理Supervisor 当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式Abort 当存取异常时将会进入这种模式虚拟存储及存储保护Undef 当执行未定义指令时会进入这种模式软件仿真硬件协处理器System 使用和User模式相同寄存器集的特权模式特权级的操作系统任务 About工作模式 除用户模式外其它6种处理器模式称为特权模式 PriviegedModes 这些模式下程序可以访问所有的系统资源 也可以任意的进行处理器模式切换 其中的5种又称之为特权模式 分别为 FIQ FastInterruptreQuest IRQ Interruptrequest 管理 Supervisor 中止 Abort 未定义 Undefined ARM寄存器组织 ARM处理器有37个32位长的寄存器1个用作PC programCounter 1个用作CPSR CurrentProgramStatusRegister 5个用作SPSR SavedProgramstatusRegisters 30个用作通用寄存器 注 其中1个CPSR和5个SPSR通称为状态寄存器 虽然这些寄存器是32位的 但目前只使用了其中的12位 寄存器组织 寄存器组织 注 当前处理器的模式决定着哪组寄存器可操作用户模式和系统模式使用相同的寄存器 通用寄存器 通用寄存器根据其分组与否和使用目的可分为以下3类 未分组寄存器 Theunbankedregisters 包括R0 R7 分组寄存器 Thebankedregister 包括R8 R14 程序计数器 ProgramCounter 即R15 分组寄存器 R8 R14是分组寄存器 它们每个访问的物理寄存器取决于当前的处理器模式 对于R8 R12 一组用于FIQ模式 一组用于FIQ以外的模式 不同模式下寄存器的使用 要使用寄存器名后缀加以区分 如 FIQ r8 fiq r9 fiqUSER r8 user r9 user 分组寄存器 对于分组寄存器R13和R14来说 每个寄存器对应于6个不同的物理寄存器 用户模式和系统模式公用 另外5个对应于5种异常模式 访问时需指定它们的模式 r13 r14 其中可以是以下之一 usr svc abt und irp和fiq 分组寄存器 r13寄存器在ARM中常用作堆栈指针 称为SPr14又被称为连接寄存器 LinkRegister LR 每种处理模式用自己的r14存放当前子程序的返回地址典型用法 1 MOVPCLRBXLR2 在子程序入口处使用STMFDSP LR 子程序返回时LDMFDSP PC 程序计数器r15 程序计数器也称PC 用于两种特殊目的 读程序计数器SUBR1 PC 4 r1中存放STR指令地址STRPC R0 将PC STRLDRR0 R0 SUBR0 R0 R1 offset PC STR地址写程序计数器 程序状态寄存器 当前程序状态寄存器CPSR CurrentProgramStatusRegister 可以在任何处理器模式下被访问 它包括下列内容 ALU ArithmeticLogicUnit 状态标志的备份 当前的处理器模式 中断使能标志 设置处理器的状态 程序状态寄存器 SPSR SavedProgramStatusRegister 当特定的异常中断发生时 这个物理寄存器负责存放当前程序状态寄存器的内容 当异常处理程序返回时 再将其内容恢复到当前程序状态寄存器 在User模式和System模式下没有SPSR 状态寄存器模式位含义 ARM存储体系 ARM体系结构将存储器看作是从零地址开始的字节的线性组合 从第0字节到第3字节放置第一个存储的字数据 从第4个字节到第7个字节放置第二个存储的字数据 依次排列 作为32位的微处理器 ARM体系结构所支持的最大寻址空间为4GB 32位 ARM体系结构可以用两种方法存储字数据 称之为大端格式和小端格式 ARM存储体系 ARM微处理器的指令系统 ARM微处理器的指令集是加载 存储型的 也即指令集仅能处理寄存器中的数据 而且处理结果都要放回寄存器中 而对系统存储器的访问则需要通过专门的加载 存储指令来完成 ARM微处理器的指令集可以分为六大类 跳转指令数据处理指令程序状态寄存器 PSR 处理指令加载 存储指令协处理器指令和异常产生指令 ARM微处理器指令表 1 ARM微处理器指令表 2 ARM微处理器指令表 3 ARM微处理器指令表 4 ARM微处理器指令表 5 ARM指令概述 ARM指令的寻址方式 ARM指令系统支持如下几种常见的寻址方式 立即寻址寄存器寻址寄存器间接寻址基址变址寻址多寄存器寻址相对寻址堆栈寻址 立即寻址 立即寻址也叫立即数寻址 这是一种特殊的寻址方式 操作数本身就在指令中给出 只要取出指令也就取到了操作数 这个操作数被称为立即数 对应的寻址方式也就叫做立即寻址 例如以下指令 ADDR0 R0 1 R0 R0 1 ADDR0 R0 0 x3f R0 R0 0 x3f 在以上两条指令中 第二个源操作数即为立即数 要求以 为前缀 对于以十六进制表示的立即数 还要求在 后加上 0 x 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数 这种寻址方式是各类微处理器经常采用的一种方式 也是一种执行效率较高的寻址方式 以下指令 ADDR0 R1 R2 R0 R1 R2 该指令的执行效果是将寄存器R1和R2的内容相加 其结果存放在寄存器R0中 寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址 而操作数本身存放在存储器中 例如以下指令 LDRR0 R1 R0 R1 STRR0 R1 R1 R0 在第一条指令中 以寄存器R2的值作为操作数的地址 在存储器中取得一个操作数后与R1相加 结果存入寄存器R0中 第二条指令将以R1的值为地址的存储器中的数据传送到R0中第三条指令将R0的值传送到以R1的值为地址的存储器中 基址变址寻址 基址变址寻址就是将寄存器 该寄存器一般称作基址寄存器 的内容与指令中给出的地址偏移量相加 从而得到一个操作数的有效地址 变址寻址方式常用于访问某基地址附近的地址单元 采用变址寻址方式的指令常见有以下几种形式 如下所示 LDRR0 R1 4 R0 R1 4 LDRR0 R1 4 R0 R1 4 R1 R1 4LDRR0 R1 4 R0 R1 R1 R1 4LDRR0 R1 R2 R0 R1 R2 在第一条指令中 将寄存器R1的内容加上4形成操作数的有效地址 从而取得操作数存入寄存器R0中 在第二条指令中 将寄存器R1的内容加上4形成操作数的有效地址 从而取得操作数存入寄存器R0中 然后 R1的内容自增4个字节 在第三条指令中 以寄存器R1的内容作为操作数的有效地址 从而取得操作数存入寄存器R0中 然后 R1的内容自增4个字节 在第四条指令中 将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址 从而取得操作数存入寄存器R0中 多寄存器寻址 采用多寄存器寻址方式 一条指令可以完成多个寄存器值的传送 这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值 以下指令 LDMIAR0 R1 R2 R3 R4 R1 R0 R2 R0 4 R3 R0 8 R4 R0 12 该指令的后缀IA表示在每次执行完加载 存储操作后 R0按字长度增加 因此 指令可将连续存储单元的值传送到R1 R4 相对寻址 与基址变址寻址方式相类似 相对寻址以程序计数器PC的当前值为基地址 指令中的地址标号作为偏移量 将两者相加之后得到操作数的有效地址 以下程序段完成子程序的调用和返回 跳转指令BL采用了相对寻址方式 BLNEXT 跳转到子程序NEXT处执行 NEXT MOVPC LR 从子程序返回 堆栈寻址 堆栈是一种数据结构 按先进后出 FirstInLastOut FILO 的方式工作 使用一个称作堆栈指针的专用寄存器指示当前的操作位置 堆栈指针总是指向栈顶 当堆栈指针指向最后压入堆栈的数据时 称为满堆栈 FullStack 而当堆栈指针指向下一个将要放入数据的空位置时 称为空堆栈 EmptyStack 堆栈寻址 根据堆栈的生成方式 又可以分为递增堆栈 AscendingStack 和递减堆栈 DecendingStack 当堆栈由低地址向高地址生成时 称为递增堆栈 当堆栈由高地址向低地址生成时 称为递减堆栈 这样就有四种类型的堆栈工作方式满递增堆栈 堆栈指针指向最后压入的数据 且由低地址向高地址生成 满递减堆栈 堆栈指针指向最后压入的数据 且由高地址向低地址生成 空递增堆栈 堆栈指针指向下一个将要放入数据的空位置 且由低地址向高地址生成 空递减堆栈 堆栈指针指向下一个将要放入数据的空位置 且由高地址向低地址生成 ARM体系结构与编程 ARM处理器内核 简要定义 固化宏单元 硬核 ARM920TARM7TDMIARM720TARM1022E 可综合内核 软核 ARM926EJ SARM7TDMI SARM1026EJ S 测试芯片ARM10200E ARM处理器内核 ARM7TDMI处理器内核系列ARM9TDMI处理器内核系列ARM10E处理器内核系列其他处理器 什么是ARM7TDMI ARM7TDMI是基于ARM7内核3级流水线 0 9MIPS MHz冯 诺依曼架构CPI CyclePerInstruction 约为1 9T Thumb架构扩展 提供两个独立的指令集 ARM指令 均为32位Thumb指令 均为16位两种运行状态 用来选择哪个指令集被执行D 内核具有Debug扩展结构M 增强乘法器 32x8 支持64位结果 I EmbeddedICE RT逻辑 提供片上断点和调试点支持 ARM7TDMI内核信号 ARM7TDMI方框图 ARM7TDM内核 TAP控制器 JTAG接口 数据总线 控制信号 D 31 0 地址总线 A 31 0 DIN 31 0 DOUT 31 0 BUSSplitter EmbeddedICE逻辑 ARM7TDMI内核 外部地址产生 指令流水线 为增加处理器指令流的速度 ARM7系列使用3级流水线 允许多个操作同时处理 比逐条指令执行要快 PC指向正被取指的指令 而非正在执行的指令 最佳流水线 该例中用6个时钟周期执行了6条指令所有的操作都在寄存器中 单周期执行 指令周期数 CPI 1 操作 周期 123456 Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Decode Execute Fetch Decode Fetch Fetch LDR流水线举例 该例中 用6周期执行了4条指令指令周期数 CPI 1 5 分支流水线举例 流水线被阻断注意 内核运行在ARM状态 周期 12345 地址操作 Fetch Decode Execute Fetch Decode Execute Fetch Decode Fetch Fetch Decode Execute Linkret Adjust Fetch Decode Fetch 中断流水线举例 周期 12345678 IRQ IRQ中断的反应时间最小 7周期 地址操作 F D E Linkret Adjust F F DecodeIRQ Linkret ExecuteIRQ Adjust F D E F D F F D E F D F F 超标量执行 超标量 Superscalar 执行 超标量CPU采用多条流水线结构 对齐 存储器访问必须始终适当地保持地址对齐非对齐地址将产生不可预测的 未定义的结果用 DataAbort 异常来检测无效的非对齐数据存取扩展逻辑要求 或使用MMU在720T 920T 926E S 1020E谨防指令读取时出现非对齐非对齐数据存取能够完成 但不是用LDR使用LDRB STRB传递字节 或使用LDM加移位 屏蔽 T标志位的作用 16 16 32 bitdata 16 A 1 Mux Thumb指令解码 Mux Mux T标志 ARM指令解码 阶段1 阶段2 D 31 0 0 1 1 0 Fetch Decode Execute 带Cache的ARM7TDMI ARM710T8K统一的cache完整的内存管理单元 mmu 支持虚拟地址和存储器保护写缓冲 ARM720T同ARM710T 但支持WinCEARM740T8K统一的cache内存管理单元写缓冲 ARM7TDMI内核 地址 地址 数据读 AMBA接口 写缓冲 MMU 数据写 数据 ARM7xxT 控制逻辑 Cache AMBA总线接口 JTAG和非AMBA信号 CP15 ARM7TDMI S ARM7TDMI S是ARM7TDMI的完全可综合版本指令集和周期与ARM7TDMI固化版本兼容完全可综合的RTL使用了纲要设计构件的组件ALU寄存器组单时钟设计 上升沿 单一总线接口 SecurCoreSC100 第一个适合安全应用的32位RISC处理器 可用于smart卡和其他有安全性要求的嵌入式领域 基于ARM7内核的专为安全解决方案设计完全可综合的 全静态设计提供安全的存储器保护单元Thumb指令支持 提高代码密度和系统性能特殊的 独一无二的防伪造设计小尺寸 1mm2典型的0 25 工艺 低功耗 0 7mW MHzat2 5V 小测验 1 一条简单的算术操作 如 ADD 要占用几个周期 2 ARM7TDMI指令流水线有几个阶段 3 ARM7TDMI是否使用ALU计算地址 4 ARM在存储器里 可寻址几种类型的数据 5 试举一非顺序周期的例子 6 数据总线的哪一半可被内核用作Thumb指令 ARM处理器内核 ARM7TDMI处理器内核系列ARM9TDMI处理器内核系列ARM10E处理器内核系列其他处理器 ARM9TDMI Harvard架构增加了可用的存储器宽度指令存储器接口数据存储器接口可以实现对指令和数据存储器的同时访问5级流水线实现了以下改进 改进CPI到 1 5提高了最大时钟频率 ARM9TDMI流水线的变化 InstructionFetch Shift ALU MemoryAccess RegWrite RegRead RegDecode FETCH DECODE EXECUTE MEMORY WRITE ARM9TDMI ARMorThumbInstDecode RegSelect RegRead Shift ALU RegWrite Thumb ARMdecompress ARMdecode InstructionFetch FETCH DECODE EXECUTE ARM7TDMI ARM9TDMI数据通道 1 寄存器Bank ALU C B A DINFWD 结果 DA DD 数据递增 向量 指令递增 IA 字节旋转 符号扩展 MU逻辑 双向缓冲器 字节 半字复制 MU逻辑单元包含有 多路复用器 乘法器和桶形移位器 数据总线 地址总线 字节 半字 指令地址总线 ARM9TDMI数据通道 2 寄存器Bank PSR 乘法器 移位器 ALU B A Imm DINFWD BDATA ADATA 锁存 锁存 MU逻辑 至IA生成逻辑 结果 周期 操作 ADDR1 R1 R2 SUBR3 R4 R1 ORRR8 R3 R4 ANDR6 R3 R1 EORR3 R1 R2 1 2 3 4 5 6 7 8 LDRR4 R7 9 F D E F D E W F D E W F D E W F D W E F D E W F 取指 Fetch D 解码 Decode E 执行 Execute I 互锁 Interlock M 存储器 Memory W 写回 Writeback I LDR互锁 本例中 用了7个时钟周期执行6条指令 CPI 1 2 LDR指令之后立即跟一条数据操作指令 由于使用了相同的寄存器 将会导致互锁 W I M 周期 操作 ADDR1 R1 R2 SUBR3 R4 R1 ORRR8 R3 R4 ANDR6 R3 R1 EORR3 R1 R2 LDRR4 R7 最佳流水线 本例中 用了6个时钟周期执行6条指令 CPI 1 LDR指令没有引起流水线互锁 LDM互锁 1 本例中 用了8个时钟周期执行5条指令 CPI 1 6在LDM期间 有并行的存储器访问和回写周期 LDM互锁 2 本例中 用了9个时钟周期执行5条指令 CPI 1 8此处SUB使用了R3 增加了一个额外的互锁周期来完成该寄存器数据的获取这种情况对任何LDM指令 像带IA DB FD 等 都会发生 ARM9TDMI系统举例 注意 数据接口必须能够读取指令存储器中的数据 为调试方便 建议数据接口能够读写指令存储器 带Cache的ARM9TDMI ARM9TDMI DCache ICache MMU GLUE 外部存储器 ARM920T2x16KcachesMMU支持虚拟地址和内存保护写缓冲 ARM940T2x4KcachesMPU写缓冲 ARM9xxT ARM9E S系列概述 ARM9E基于ARM9TDMI内核 有以下扩展和增强 单周期32x16乘法器EmbeddedICE逻辑RT改进的ARM Thumb交互操作新的32x16和16x16乘法指令新的计数到零指令新的饱和算术指令ARM946E SARM9E S内核指令和数据cache 大小可选择指令和数据RAM 大小可选择保护单元AHB总线接口ARM966E S与ARM946E S相似 但无cache v5TE架构 ARM926EJ S概述 Jazelle状态允许直接执行Java8位码ARM926EJ SARM9E S内核可配置的cacheTCMTCM Terminal to ComputerMultiplexer终端设备至计算机多路转接器 内存管理单元双重32位AHB总线接口 多层 小测验 1 Harvard结构带来了哪些优势 2 ARM9TDMI流水线有几级 3 在流水线的哪一个阶段读寄存器 4 寄存器bank由几个读或写端口 5 什么条件下会出现互锁 ARM处理器内核 ARM7TDMI处理器内核系列ARM9TDMI处理器内核系列ARM10E处理器内核系列其他处理器 ARM10E系列概述 ARM1020Ev5TE架构CPI 1 36级流水线静态分支预测32kB指令cache和32kB数据cache支持 Hitundermiss 非阻塞的执行单元每周期64位的LDM STM操作EmbeddedICE逻辑 RT II支持新的VFPv1结构ARM1022E同上 除了cache大小为16kB对SUDL singleuserdesignlicense 有效 ARM10与ARM9的流水线对比 指令取指 移位 ALU 寄存器写 寄存器读 寄存器译码 FETCH DECODE EXECUTE MEMORY WRITE ARM9TDMI ARM或Thumb指令解码 ARM10 指令地址生成 移位 ALU 数据Cache接口 寄存器写 FETCH DECODE EXE

温馨提示

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

评论

0/150

提交评论