




已阅读5页,还剩97页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统讲义第2章ARM9体系结构 2013 3 第2章ARM9体系结构 主要内容2 1ARM处理器简介2 2ARM9结构2 3ARM数据类型和存储格式2 4处理器状态和工作模式2 5ARM寄存器2 6ARM异常2 7ARM调试接口 2 1ARM处理器简介 2 1 1ARM公司简介ARM是AdvanceRISCMachine的缩写 既可以认为是一个公司的名字 也可以认为是对一类微处理器的通称 还可以认为是一种技术的名字 ARM公司于1990年11月在英国剑桥成立 前身为Acorn计算机公司 ARM公司是全球领先的16 32位嵌入式RISC微处理器解决方案供应商 ARM公司是知识产权 IP 公司 本身不生产芯片 靠转让设计许可 由合作伙伴公司来生产各具特色的芯片 目前 全世界有几十家著名的半导体公司都使用ARM公司的授权 其中包括MOTOROLA IBM Intel LG SONY NEC ATMEL等 从而保证了大量的开发工具和丰富的第三方资源 它们共同保证了基于ARM处理器核的设计可以很快投入市场 ARM公司已成为移动通信 手持设备 多媒体数字消费嵌入式解决方案的RISC标准 2 1 2ARM体系结构的特点 总体思想 在不牺牲性能的同时 尽量简化处理器 同时从体系结构的层面上灵活支持处理器扩展 这种简化和开放的思路使得ARM处理器采用了很简单的结构来实现 ARM处理器是最先进的 目前 ARM32位体系结构被公认为业界领先的32位嵌入式RISC微处理器核 所有ARM处理器都共享这一体系结构 2 1 2ARM体系结构的特点 2 一 RISC型处理器结构ARM采用RISC结构 在简化处理器结构 减少复杂功能指令的同时 提高了处理器的速度 考虑到处理器与存储器打交道的指令执行时间远远大于在寄存器内操作的指令执行时间 RISC型处理器采用了Load Store 加载 存储 结构 即只有Load Store指令可与存储器打交道 其余指令都不允许进行存储器操作 同时 为了进一步提高指令和数据的存取速度 RISC型处理器增加了指令高速缓冲I Cache和数据高速缓冲D Cache及多处理器结构 使指令的操作尽可能在寄存器之间进行 2 1 2ARM体系结构的特点 3 只能对寄存器执行算术和逻辑操作 Load Store体系结构 2 1 2ARM体系结构的特点 4 二 Thumb指令集虽然ARM处理器本身是32位设计 但考虑到RISC型处理器的指令功能相对较弱 新型的ARM体系结构中定义了16位的Thumb指令集 Thumb指令集比通常的8 16位CISC RISC处理器有更好的代码密度 而芯片面积只增加6 却可以使程序存储器更小 三 多处理器状态模式ARM体系结构定义了7种处理器模式 用户 快中断 中断 管理 终止 未定义和系统模式 大大提高了ARM处理器的效率 四 两种处理器工作状态 执行32位ARM指令 ARM状态和Thumb状态 执行16位Thumb指令 2 1 2ARM体系结构的特点 5 五 嵌入式在线仿真调试ARM体系结构的处理器芯片都嵌入了在线仿真ICE RT逻辑 便于通过JTAG来仿真调试芯片 省去了价格昂贵的在线仿真器 六 灵活方便的接口ARM体系结构具有协处理器接口 允许接16个协处理器 既可以使基本的ARM处理器内核尽可能小 方便地扩充ARM指令集 也可以通过未定义指令来支持协处理器的软件仿真 七 低电压功耗的设计考虑到ARM处理器主要用于手持式嵌入式系统中 在设计中就十分注意功耗的设计 2 1 3ARM指令系统版本 ARM公司从最初的开发到现在 ARM指令集结构有了巨大的改进 并在不断完善和发展 为了清楚地表达每个ARM内核所使用的指令集 ARM公司定义了一系列的指令集体系结构版本 以vx表示某种版本 下面对版本v1 v5做一介绍 一 版本1 v1 v1在ARM1中使用 但从未商业化 26位寻址空间 其指令主要有 基本的数据处理指令 无乘法指令 字 字节和半字存储器访问指令分支指令 包括带链接的分支指令 软件中断指令 2 1 3ARM指令系统版本 2 二 版本2 v2 仍是26位寻址空间 在v1的基础上增加的内容有 乘法和乘法加指令支持协处理器快速中断模式中的分组寄存器交换式加载 存储指令 三 版本3 v3 将寻址范围扩展到32位 但兼容26位寻址 在v2的基础上增加的内容有 设置了专用的当前程序状态寄存器CPSR 增加了程序状态保存寄存器增加了中止异常和未定义指令异常两种处理器模式增加了访问CPSR SPSR的指令MRS和MSR修改了异常返回指令的功能 2 1 3ARM指令系统版本 3 四 版本4 v4 32位寻址方式 但不再兼容26位寻址 在v3的基础上增加的内容有 半字加载 存储指令在T变量中转换到Thumb状态的指令增加了在使用用户模式寄存器的特权处理器模式五 版本5 v5 对v4指令做了必要的修改和扩展 并且增加了指令 具体变化为 改进在T变量中ARM Thumb状态之间的切换效率对于T和非T变量使用相同的代码生成技术增加了计数前导零指令增加了软件断点指令对乘法指令设置标志做了严格定义 将流水线的级数从3级 如ARM7TDMI使用的 增加到5级 并改变存储器接口来使用分开的指令与数据存储器 2 1 3ARM指令系统版本 4 六 版本6 v6 对v5指令做了必要的修改和扩展 并且增加了指令 2001年发布 首先在ARM11处理器中使用 2002年春季发布 具体变化为 ARM体系版本6的新架构在降低耗电量的同时 还强化了图形处理性能 增加了多媒体处理功能 通过追加有效进行多媒体处理的SIMD功能 将语音及图像的处理功能提高到了原机型的4倍 V6版本还支持多微处理器内核 2 1 3ARM指令系统版本 5 2 1 4ARM体系结构的演变 一 Thumb指令集 T变种 支持Thumb指令的ARM体系版本 一般加字符T来表示 如V4T 目前Thumb指令集有以下两个版本 Thumb指令集版本1 此版本作为ARM体系版本4的T变种 Thumb指令集版本2 此版本作为ARM体系版本5的T变种 与版本1相比 Thumb指令集的版本2具有以下特点 通过增加新的指令和对已有指令的修改 来提高ARM指令和Thumb指令混合使用时的效率 增加了软件断点 BKPT 指令和更严格地定义了Thumb乘法指令对条件码标志位的影响 2 1 4ARM体系结构的演变 2 二 长乘指令 M变种 M变种增加了两条这样的长乘指令 其中一条指令完成32位整数乘以32位整数 生成64位整数的长乘操作 另一条指令完成32位整数乘以32位整数 然后在加上一个32位整数 生成64位整数的长乘加操作 这种长乘的应用场合M变种很适合 2 1 4ARM体系结构的演变 3 三 增强型DSP指令 E变种 E变种的ARM体系增加了一些增强处理器对典型DSP算法处理能力的附加指令 几条新的完成16位数据乘法和乘加操作的指令 实现饱和的带符号数的加减法操作的指令 Cache预取指令PLD E变种首先在ARM体系版本5T中使用 用字符E表示 在早期的一些E变种中 未包含双字读取指令LDRD 双字写入指令STRD 协处理器的寄存器传输指令MCRR MRRC以及Cache预取指令PLD 这种E变种记作ExP 其中x表示缺少 P代表上述的几种指令 2 1 4ARM体系结构的演变 4 四 Java加速器Jazelle J变种 ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物 Jazelle技术使得Java代码的运行速度比普通的Java虚拟机提高了8倍 这是因为Jazelle技术提供了Java加速功能 大幅的提高了机器的运行性能 而功耗反而降低了80 Jazelle技术使得在一个单独的处理器上同时运行Java应用程序 已经建立好的操作系统和中间件以及其他的应用程序成为可能 Jazelle技术的诞生使得一些必须用到协处理器和双处理器的场合可以用单处理器代替 这样 既保证了机器的性能 又降低了功耗和成本 ARM体系版本4TEJ是最早包含了J变种 用字符J表示J变种 2 1 4ARM体系结构的演变 5 五 ARM媒体功能扩展 SIMD变种 ARM的SIMD媒体功能扩展为这些应用系统提供了解决方案 它为包括音频 视频处理在内的应用系统提供了优化功能 其主要特点如下 使处理器的音频 视频处理的性能提高了2 4倍 可同时进行两个16位操作数或者4个8位操作数的运算 用户可以自定义饱和运算的模式 可进行两个16位操作数的乘加 乘减运算及32位乘以32位的小数乘加运算 同时8位 16位选择操作 2 1 4ARM体系结构的演变 6 2 1 4ARM系列处理器简介 ARM有以下系列处理器 ARM7系列ARM9系列ARM9E系列ARM10系列ARM11系列SecurCore系列Inter的StrongARM和Xscale系列其中 ARM7 ARM9 ARM9E ARM10和ARM11为5个通用处理器系列 每一个系列提供一套相对独特的性能来满足不同应用领域的需求 SecurCore系列专门为安全要求较高的应用而设计 2 1 4ARM系列处理器简介 2 一 ARM7系列ARM7采用冯 诺依曼 Von Neumann 结构 数据存储器和程序存储器使用同一存储空间 用相同的指令访问 此结构也被大多数计算机所采用 ARM7为三级流水线结构 取指 译码 执行 平均功耗为0 6mW MHz 时钟速度为66MHz 每条指令平均执行1 9个时钟周期 ARM7系列微处理器包括如下几种类型的核 ARM7TDMI ARM7TDMI S ARM720T ARM7EJ ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器 属低端ARM处理器核 TDMI的基本含义为 对其它系列也适用 T 支持16为压缩指令集Thumb 称为T变种D 支持片上Debug 称为D变种M 内嵌硬件乘法器Multiplier 称为M变种I 嵌入式ICE 支持片上断点和调试 称为I变种 2 1 4ARM系列处理器简介 3 表2 1ARM7系列产品 2 1 4ARM系列处理器简介 4 二 ARM9系列ARM7采用的Neumann结构 取指令和取操作数都是通过一条总线分时进行 这样 在高速运算时 不但不能同时取指令和取操作数 而且还会造成传输通道上的瓶颈现象 ARM9采用哈佛 Harvard 结构 程序存储器与数据存储器分开 提供了较大的存储器带宽 同时 大多数DSP都采用此结构 ARM9为五级流水 取指 译码 执行 缓冲 数据 回写 平均功耗为0 7mW MHz 时钟速度为120MHz 200MHz 每条指令平均执行1 5个时钟周期 ARM9系列微处理器包含ARM920T ARM922T和ARM940T三种类型 主要应用在手持产品 视频电话 PDA 数字消费产品 机顶盒 家用网关等方面 2 1 4ARM系列处理器简介 5 表2 2ARM9系列产品 2 1 4ARM系列处理器简介 6 三 ARM9E系列ARM9E系列微处理器包括如下4种类型的核 ARM926EJ S ARM946E S和ARM966E S 见表2 3 ARM9E系列是一种包含有微控制器 DSP Java功能的综合处理器 强化了数字信号处理能力 适用于需要DSP和微控制器结合使用的情况 并且把Thumb技术和DSP都扩展到了ARM指令中 并且具有EmbededICE RT逻辑 更好地适应了实时系统开发的需要 同时ARM9E使用了Jazelle增强技术 该技术支持一种新的Java操作状态 在硬件中执行Java字节码 2 1 4ARM系列处理器简介 7 表2 3ARM9E系列产品 2 1 4ARM系列处理器简介 8 四 ARM10系列ARM10系列微处理器包括 ARM1020E和ARM1022E等型号 见表2 4 ARM10系列采用了新的体系结构 其核心为使用了向量浮点单元 有强大的浮点运算能力 并且增加了Cache容量和总线宽度 并且具有低功耗的特点 ARM10系列微处理器主要应用于下一代无线设备 视频消费品等 表2 4ARM10系列产品 2 1 4ARM系列处理器简介 9 五 ARMStrong Xscale系列StrongARM是采用ARM体系结构高度集成的32位RISC微处理器 它融合了Intrl公司的设计技术 以及ARM体系结构的电源效率 其体系结构在软件上兼容ARMv4 同时又具有Intel技术优点 StrongARM是Intrl公司为手持消费类电子和移动计算与通信设备生产的嵌入式处理器 采用StrongARM架构的处理器有 SA 1 SA 110 SA 1100 SA1110和IXP1200 Xscale是基于ARMv5体系结构的解决方案 是一款性能全 性价比高 功耗低的处理器 支持16位的Thumb和DSP指令集 主要应用于数字移动电话 个人数字助理和网络产品等 Xscale架构的处理器有 PXA250 PXA255和PXA270等 2 1 4ARM系列处理器简介 10 六 ARM微处理器应用1 工业控制领域 作为32的RISC架构 基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额 同时也逐渐向低端微控制器应用领域扩展 ARM微控制器的低功耗 高性价比 向传统的8位 16位微控制器提出了挑战 2 无线通讯领域 目前已有超过85 的无线通讯设备采用了ARM技术 ARM以其高性能和低成本 在该领域的地位日益巩固 3 网络应用 随着宽带技术的推广 采用ARM技术的ADSL芯片正逐步获得竞争优势 此外 ARM在语音及视频处理上进行了优化 并获得广泛支持 也对DSP的应用领域提出了挑战 ADSL 非对称数字用户线路 4 消费类电子产品 ARM技术在目前流行的数字音频播放器 数字机顶盒和游戏机中得到广泛采用 5 成像和安全产品 现在流行的数码相机和打印机中绝大部分采用ARM技术 手机中的32位SIM智能卡也采用了ARM技术 ARM系列产品命名规则 2 2ARM9体系结构 2 2 1ARM9体系结构框图对于ARM9系列 其基本内核是ARM9TDMI 下页图给出了ARM9TDMI结构框图 主要有7部分构成 比较最常用的是ARM920T内核 后页图给出了ARM920T结构框图 ARM920T结构主要部分有 ARM9TDMI内核CPU MMU Cache 协处理器接口 运行跟踪信息接口 ETM JTAG调试接口 总线接口等7部分构成 一 ARM9TDMI体系结构框图 二 ARM920T体系结构框图 二 ARM920T体系结构框图 ARM9TDMI核性能 0 25微米的ARM9TDMI核在执行32位ARM代码时的特性综述于下表3 核的版图示于下页图 2 2 2ARM流水线结构 一 流水线技术概述流水线方式 是把一个重复的过程分解为若干个子过程 每个子过程可以与其他子过程同时进行 由于这种工作方式与工厂中的生产流水线十分相似 因此 把它称为流水线工作方式 处理器按照一系列步骤来执行每一条指令 典型的步骤为 1 从存储器读取指令2 译码以鉴别它是哪一类指令3 从寄存器组取得所需的操作数4 将操作数进行组合以得到结果或存储器地址5 如果需要 则访问存储器存取数据6 将结果回写到寄存器组 二 ARM7的三级流水线1取指 从程序存储器中取指令 放入指令流水线 占用存储器访问操作 2译码 指令译码 占用译码逻辑 3执行 执行指令 读写REG 占用ALU及数据路径 2 2 2ARM流水线结构 2 下图为3个单周期指令在流水线上的情况 一条指令有3个时钟周期的执行时间 但吞吐量是每个周期1条指令 t 123 PC值如何计算 PC指向处于读取级的指令地址 而不是处于执行级的指令地址PC 当前执行指令地址 8 ARM单周期指令的3级流水线操作 2 2 2ARM流水线结构 3 流水线 利用执行指令所需要的操作之间的并行性 实现多条指令重叠执行的一种技术 吞吐量 汽车装配线上 每小时的汽车产量 CPU 每个周期执行的指令数 每条指令在在流水线上的平均时间 周期数 即CPI CyclePerInstruction 理想情况 非流水线机器一条指令的执行时间 周期数 即CPI 流水线机器段数流水线的执行 经典的五段流水线RISC处理器每条指令经过五个时钟周期执行完成 在每个时钟周期内 硬件将启动一条新的指令并执行五条不同指令的每个阶段 取指令周期 IF 指令译码 读寄存器周期 ID 执行 有效地址周期 EX 访问寄存器 MEN 写回周期 WB 优秀的流水线结构 Operation Cycle 123456 Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Decode Execute Fetch Decode Fetch Fetch 本例中6个时钟周期内一共完成了 条指令全部对寄存器进行操作 单周期执行 指令周期数 CPI 1 2 2 2ARM流水线结构 4 多周期指令的3级流水线操作 12345678 1ADD 2STB 3ADD 4ADD 5ADD 指令流水线出现了中断 2 2 2ARM流水线结构 5 T4周期 指令2地址计算产生下一周期数据路径需要的控制信号 指令3译码产生下一周期数据路径需要的控制信号 二者都产生下一周期数据路径控制信号 数据路径控制冲突 因此断流 T5周期 指令2STB访问数据存储器 指令5取指访问程序存储器二者都访问存储器 造成访问存储器冲突 在此断流 指令3译码 指令4的译码则不得不推迟一个周期 2 2 2ARM流水线结构 6 三 ARM9TDMI的五级流水线 ARM7TDMI与ARM9TDMI流水线比较 2 2 2ARM流水线结构 7 四 ARM7和ARM9流水线比较5级流水线的ARM9内核是哈佛架构 拥有独立的指令和数据总线 指令和数据的读取可以在同一周期进行 3级流水的ARM7内核是指令和数据总线复用的冯 诺依曼架构 指令和数据的读取不能在同一周期进行 5级流水线设计把寄存器读取 逻辑运算 结果回写分散在不同的流水当中 每一级流水的操作简洁 提升了处理器的主频 2 2 2ARM流水线结构 8 2 2 2ARM流水线结构 9 随着流水线深度 级数 的增加 每一段的工作量被削减了 这使得处理器可以工作在更高的频率 同时改进了处理器的性能 负面作用是增加了系统的延时 即内核在执行一条指令前 需要更多的周期来填充流水线 流水线级数的增加也意味着在某些段之间会产生数据相关 2 2 2ARM流水线结构 10 ARM处理器性能比较 2 2 3ARM总线结构 ARM微控制器使用的是AMBA总线体系结构AMBA AdvancedMicrocontrollerBusArchitecture 是ARM公司公布的总线标准 先进的AMBA规范定义了三种总线 AHB总线 AdvancedHigh performanceBus 用于连接高性能系统模块 它支持突发数据传输方式 两设备之间不间断的连续数据传送 块方式 及单个数据传输方式 所有时序参考同一个时钟沿 ASB总线 AdvancedSystemBus 用于连接高性能系统模块 它支持突发数据传输模式 APB总线 AdvancePeripheralBus 是一个简单接口支持低性能的外围接口 突发传送Bursts突发传送是两设备之间不间断的连续数据传送 微处理器如Intel80486 Motorola68030允许用突发方式将成组数据传送到内存和板上的高速缓存 IBM公司的微通道 MicroChannel 总线提供突发传送方式 总线上的适配器能够用突发方式控制总线发送多个成组数据 在汇聚和传送来自几个源节点数据的多路复用总线设备或数据通信信道上 在突发传输模式下 多个数据单元当做一个单元 相当一个数据块 来传送 从而提高了传输效率 突发方式将整个信道专用于传送一个源节点的数据 具有突发方式功能的设备常常为成组方式操作提供最大吞吐率 例如 基于Intel芯片的PC机扩展工业标准体系结构 EISA 总线具有速率为33Mbps的突发方式 在突发传送时 一次数据移动只要一个时钟周期 而不是通常的两个时钟周期 本节主要内容1 数据类型2 存储器组织3 存储器层次 2 3ARM存储结构 2 3 1ARM存储数据类型ARM处理器支持以下6种数据类型 8位有符号和无符号字节 Byte 16位有符号和无符号半字 Halfword 它们必须以两字节的边界对齐 半字对齐 32位有符号和无符号字 word 它们必须以4字节的边界对齐 字对齐 字对齐 字单元地址的低两位A1A0 0b00 即地址末位为0 x0 0 x4 0 x8 0 xc 半字对齐 半字单元地址的最低位A0 0b0 地址末位为0 x0 0 x2 0 x4 0 x6 0 x8 0 xa 0 xc 0 xe 2 3ARM存储结构 对于指令 ARM指令系统分为32位ARM指令集和16位的Thumb指令集 在存储时分别以32位和16位的两种不同长度存储 对于数据 ARM支持对32位字数据 16位半字数据 8位字节数据操作 因此数据存储器可以存储32位 16位 8位三种不同长度数据 在ARM内部 所有操作都面向32位的操作数 只有数据传送指令支持较短的字节和半字的数据类型 当从存储器读入一个字节或半字时 根据其数据类型将其扩展到32位 2 3ARM存储结构 2 2 3 2ARM存储器组织ARM存储器以8位为一个单元存储数据 一个字节 每个存储单元分配一个存储地址 ARM将存储器看作是从零地址开始的字节的线性组合 作为32位的微处理器 ARM体系结构所支持的最大寻址空间为4GB 232字节 从零字节到三字节放置第一个存储的字数据 从第四个字节到第七个字节放置第二个存储的字数据 依次排列 32位的字数据要使用4个地址单元 16位半数据要使用2个地址单元 这样 就存在一个所存储的字或半字数据的排列顺序问题 ARM体系结构可以用两种方法存储字数据 称为大端格式和小端格式 2 3ARM存储结构 3 2 3ARM存储结构 4 大端格式 big endian 字数据的高字节存储在低地址中 而字数据的低字节则存放在高地址中 小端格式 low endian 与大端存储格式相反 低地址中存放的是字数据的低字节 高地址存放的是字数据的高字节 缺省设置为小端格式 2 3 3ARM存储器层次微处理器希望存储器容量大 速度快 但容量大者速度慢 速度快者容量小 解决方法是构建一个由多级存储器组成的复合存储器系统 两级存储器方案一般包括 一个容量小但速度快的从存储器一个容量大但速度慢的主存储器宏观上看这个存储器系统像一个即大又快的存储器 这个容量小但速度快的元件是Cache 它自动地保存处理器经常用到的指令和数据的拷贝 2 3ARM存储结构 5 多级存储器系统 寄存器组 访问时间约为几个ns 片上RAM 与片外RAM比速度快 功耗小 容量小 读写时间约为几个ns 片上Cache 8 32KB 访问时间约为十几个ns 主存储器 一般为几兆字节 1GB的动态存储器 访问时间约50ns 2 3ARM存储结构 6 CPU 寄存器组 片上RAM 片上Cache 主存储器 硬盘 2 4ARM处理器的工作状态和模式 为了能够体现ARM的特点和性能 ARM处理器有两种工作状态和7种工作模式 2 4 1ARM处理器的工作状态有两种工作状态 ARM状态 处理器执行32位的字对齐的ARM指令 Thumb状态 处理器执行16位的半字对齐的Thumb指令 两种状态可以切换 程序执行过程中 通过执行带状态切换的分支指令BX 随时在两种工作状态之间进行切换 并且 处理器工作状态的转变 并不影响处理器的工作模式和相应寄存器中的内容 2 4ARM处理器的工作状态和模式 2 从ARM状态切换到Thumb状态有两种情况ARM处理器自动切换到Thumb状态 1 执行BX指令 当操作数寄存器的位 0 为1时 则微处理器从ARM状态切换到Thumb状态 此为主动切换 2 当处理器处于Thumb状态时发生异常 如IRQ FIQ Undef等 处理完异常后 在异常处理返回时 自动切换到Thumb状态 此为自动切换 从Thumb状态切换到ARM状态有两种情况ARM处理器自动切换到Thumb状态 1 执行BX指令 当操作数寄存器的位 0 为0时 则微处理器从Thumb状态切换到ARM状态 2 当处理器在Thumb状态时发生异常 如IRQ FIQ Undef等 则处理器从Thumb状态自动切换到ARM状态进行异常处理 2 4ARM处理器的工作状态和模式 3 例3 1状态切换程序 从ARM状态切换到Thumb状态LDRR0 Lable 1 将Lable 1该地址中内容存入到R0中 BXR0 从Thumb状态切换到ARM状态LDRR0 LableBXR0注意 ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容 ARM处理器在开始执行代码时 只能处于ARM状态 2 4 2ARM处理器的工作模式 一 ARM9的7种工作模式1 用户模式 usr 非特权模式 大部分任务执行在这种模式 正常程序执行的模式2 快速中断模式 fiq 当一个高优先级 fast 中断产生时将会进入这种模式 高速数据传输或通道处理3 外部中断模式 irq 当一个低优先级 normal 中断产生时将会进入这种模式 通常的中断处理4 管理模式 svc 当复位或软中断指令执行时将会进入这种模式 供操作系统使用的一种保护模式 2 4 2ARM处理器的工作模式 2 5 中止模式 abt 当存取异常时将会进入这种模式虚拟存储及存储保护6 未定义模式 und 当执行未定义指令时会进入这种模式软件仿真硬件协处理器7 系统模式 sys 供需要访问系统资源的操作系统任务使用特权级的操作系统任务 2 4 2ARM处理器的工作模式 2 二 模式分类及特点七种模式可以划分成四类1 用户模式特点 应用程序不能够访问受操作系统保护的系统资源 应用程序不能进行处理器模式的切换 2 系统模式特点 不属于异常模式 不是通过异常进入的 系统模式属于特权模式 可以访问所有的系统资源 也可以直接进行模式的切换 它主要供操作系统使用 3 特权模式及其特点 特权模式 除用户模式之外的工作模式又称为特权模式特点 应用程序可以访问所有的系统资源可以任意地进行处理器模式的切换 2 4 2ARM处理器的工作模式 3 4 异常模式及其特点 异常模式 除用户模式 系统模式之外的五种模式称为异常模式 特点 以各自的中断或异常方式进入 并且处理各自的中断或异常 对管理模式 svc 进入方式和处理内容有 系统上电复位后进入管理模式 运行系统初始化程序 如中断允许 禁止 主时钟设置 SDRAM配置 各个功能模块初始化等 当执行软件中断指令SWI时 进入管理模式 2 4 2ARM处理器的工作模式 4 处理器模式的切换方式 软件控制进行切换 通过外部中断和异常进行切换处理器启动时的模式转换图 管理模式 Supervisor 多种特权模式变化 用户程序的运行模式 复位后的缺省模式 主要完成各模式的堆栈设置 注意不要进入用户模式 一般为用户模式User 2 5ARM9寄存器 本节主要内容1 ARM寄存器概述2 ARM通用寄存器3 ARM状态寄存器 2 5ARM9寄存器 2 5 1 ARM寄存器概述ARM处理器v4及以上版本有37个32位的寄存器其中31个为通用寄存器 6个为状态寄存器 31个通用寄存器R0 R15 R13 svc R14 svc R13 abt R14 abt R13 und R14 und R13 irq R14 irq R8 fiq R14 fiq6个状态寄存器CPSRSPSR svc SPSR abt SPSR und SPSR irq和SPSR fiq 2 5ARM9寄存器 2 每一类处理器模式都有一组相应的寄存器组 在任意的处理器模式下 可见的寄存器包括15个通用寄存器 R0 R14 1个或2个状态寄存器和程序寄存器 带灰色底纹的单元格表示 用户模式或系统模式使用的一般寄存器 已被异常模式特定的另一寄存器所替代 2 5ARM9寄存器 3 2 5ARM寄存器 4 2 5 2ARM的通用寄存器通用寄存器包括R0 R15 可以分为三类 未分组寄存器R0 R7 分组寄存器R8 R14 程序计数器PC R15 一 未分组寄存器R0 R7在所有的运行模式下 未分组寄存器都指向同一个物理寄存器 他们未被系统用作特殊的用途 是真正的通用寄存器 因此 在中断或异常处理进行运行模式转换时 由于不同的处理器运行模式均使用相同的物理寄存器 可能会造成寄存器中数据的破坏 这一点在进行程序设计时应引起注意 2 5ARM寄存器 5 二 分组的寄存器R8 R14对于R8 R12 每一次所访问的物理寄存器 与处理器当前的工作模式有关 1 R8 R12当处理器工作于fiq模式时 访问的寄存器为R8 fiq R12 fiq 除fiq模式以外的其他模式 访问的寄存器为R8 usr R12 usr 2 R13和R14 每个寄存器对应6个不同的物理寄存器 其中的一个是用户模式与系统模式共用 另外5个物理寄存器 对应于其他5种不同的异常模式 采用以下的记号来区分不同的物理寄存器 R13 R14 其中 mode为以下几种模式之一 usr fiq irq svc abt und 2 5ARM寄存器 6 R13 寄存器R13在ARM指令中常用作堆栈指针SP 但这只是一种习惯用法 用户也可使用其他的寄存器作为堆栈指针 而在Thumb指令集中 某些指令强制性的要求使用R13作为堆栈指针 R14 寄存器R14也称作子程序链接寄存器 SubroutineLinkRegister 或链接寄存器LR 当执行BL子程序调用指令时 R14中得到R15 程序计数器PC 的备份 其他情况下 R14用作通用寄存器 与之类似 当发生中断或异常时 对应的分组寄存器R14 svc R14 irq R14 fiq R14 abt和R14 und用来保存R15的返回值 2 5ARM寄存器 7 三 程序计数器PC R15 寄存器R15用作程序计数器 PC 在ARM状态下 位 1 0 为0 位 31 2 用于保存PC 在Thumb状态下 位 0 为0 位 31 1 用于保存PC 使用R15时注意 虽然R15可以用作通用寄存器 但是有一些指令在使用R15时有一些特殊限制 若不注意 执行的结果将是不可预料的 所以 一般不这么使用 关于PC的值 由于ARM采用多级流水线技术 所以PC总是指向正在取指的指令 而不是正在执行的指令 也即PC总是指向当前指令的下两条指令的地址 因此 对于ARM指令集而言 PC的值为当前指令的地址值加8个字节 2 5ARM寄存器 8 2 5 3ARM的状态寄存器一 两种程序状态寄存器在ARM微处理器中 有CPSR和SPSR两种程序状态寄存器 1 当前程序状态寄存器CPSR CurrentProgramStatusRegister 用来保存当前程序状态的寄存器 所有处理器模式下都可以访问当前程序状态寄存器CPSR 仅一个CPSR 2 保存程序状态寄存器SPSR mode SavedProgramStatusRegister SPSR mode用来进行异常处理 其功能包括 保存ALU中的当前操作信息当异常发生时 用来保存CPSR的值 从异常返回时 将SPSR mode复制到CPSR中 恢复CPSR的值 控制允许和禁止中断修改SPSR的值 设置处理器的运行模式修改SPSR的值问题 一共有多少个SPSR 为什么 2 5 3ARM的状态寄存器 2 二 ARM状态寄存器的格式1 条件码标志位 保存ALU中的当前操作信息 N 正负号 大小标志位0表示 正数 大于 1表示 负数 小于Z 零标志位0表示 结果不为零 1表示 结果为零C 进位 借位 移出位0表示 未进位 借位 移出0 1表示 进位 未借位 移出1V 溢出标志位0表示 结果未溢出 1表示 结果溢出 2 5 3ARM9的状态寄存器 3 2 控制位I F中断控制位 控制允许和禁止中断I 1禁止IRQ中断I 0允许IRQ中断F 1禁止FIQ中断F 0允许FIQ中断T控制 标志 位 反映处理器的运行状态T 1时 程序运行于Thumb状态T 0时 程序运行于ARM状态M控制位 决定了处理器的运行模式当发生异常时这些位被改变 如果处理器运行在特权模式 这些位也可以由程序修改 2 5 3ARM9的状态寄存器 4 3 保留位CPSR中的其余位为保留位 当改变CPSR中的条件码标志位或者控制位时 保留位不要改变 在程序中也不要使用保留位来存储数据 保留位将用于ARM版本的扩展 2 5 4Thumb状态下的寄存器组织Thumb状态下的寄存器集是ARM状态下寄存器集的子集 程序员可以直接访问8个通用的寄存器 R0 R7 程序计数器PC 堆栈指针SP 链接寄存器LR和当前状态寄存器CPSP seeP38 图2 7 本节主要内容1 中断和异常的概念2 ARM的异常中断介绍3 ARM的异常中断响应过程4 中断向量和中断优先级 2 6ARM异常 2 6ARM异常 2 6 1中断和异常的概念1 中断当CPU正在执行程序时 系统发生了一件急需处理的事件 CPU暂时停下正在执行的程序 转去处理相应的事件 事件处理完后 CPU再返回执行原来的程序 这种情况称为中断 这是中断的本来意义 中断事件 引起CPU产生中断 并且与CPU当前所执行的程序无关的 由外部硬件产生的事件 也叫中断源 中断事件也常称为外中断 常说的中断 有时指的是中断的本意 有时指的是外部中断事件 即外中断 中断是计算机系统基本的功能利用中断 外设可以与CPU并行工作 当外设需要传输数据或控制时 向CPU发出中断请求信号 CPU响应其请求进行处理 因此 使用中断既可以实现CPU与外设并行工作 又可以实时处理各种紧急事件 2 6ARM异常 2 异常是指CPU在执行指令时出现的错误 即不正常的情况 异常是与当前所执行的程序有关的 如存取数据或指令错误 计算结果溢出等 异常的处理 也用中断的方式进行处理 计算机通常是用中断来处理外中断和异常 因此下面将二者均称为异常 3 ARM程序的三种执行流程顺序流程 每执行一条ARM指令 程序计数器 PC 的值加4 每执行一条Thumb指令 程序计数器寄存器 PC 的值加2 整个过程是按顺序执行 对异常的说明当系统运行时 异常可能会随时发生 为保证在ARM处理器发生异常时不至于处于未知状态 在应用程序的设计中 首先要进行异常处理 采用的方式是在异常向量表中的特定位置放置一条跳转指令 跳转到异常处理程序 当ARM处理器发生异常时 程序计数器PC会被强制设置为对应的异常向量 从而跳转到异常处理程序 当异常处理完成以后 返回到主程序继续执行 2 6ARM异常 2 6ARM异常 跳转流程 程序执行了跳转指令 则要跳转到特定的地址标号处执行 包括跳转到子程序 例如 跳转指令 B BL BLX和BX 中断流程 当异常中断发生时 系统执行完当前指令后 将跳转到相应的异常中断处理程序处执行 在当异常中断处理程序执行完成后 程序返回到发生中断的指令的下条指令处执行 在进行异常中断处理程序时 要保存被中断的程序的执行现场 在从异常中断处理程序退出时 要恢复被中断的程序的执行现场 中断处理与子程序调用的区别 中断是随机的 并且与正在执行的程序无关 子程序调用是程序的主动行为 并且与正在执行的程序密切相关 2 6 2ARM的异常ARM有7种异常1 复位处理器上一旦有复位输入 ARM处理器立刻停止执行当前指令 复位后 ARM处理器在禁止中断的管理模式下 从地址0 x00000000或0 xFFFF0000开始执行指令 2 未定义指令异常当ARM处理器执行协处理器指令时 它必须等待任一外部协处理器应答后 才能真正执行这条指令 若协处理器没有响应 就会出现未定义指令异常 未定义指令异常可用于在没有物理协处理器 硬件 的系统上 对协处理器进行软件仿真 或在软件仿真时进行指令扩展 2 6ARM异常 3 软件中断异常该异常由执行SWI指令产生 可使用此机制进行软件仿真 4 预取中止 取指令存储器中止 若处理器预取指令的地址不存在 或该地址不允许当前指令访问 存储器会向处理器发出中止信号 但当预取的指令被执行时 才会产生指令预取中止异常 5 数据中止 访问数据存储器中止 若处理器数据访问指令的地址不存在 或该地址不允许当前指令访问时 产生数据中止异常 2 6ARM异常 6 IRQ异常当处理器的外部中断请求引脚有效 且CPSR中的I 0 产生IRQ异常 系统的外设可通过该异常请求中断服务 7 FIQ异常当处理器的外部中断请求引脚有效 且CPSR中的F 0 产生FIQ异常 FIQ支持数据传送和通道处理 并有足够的私有寄存器 从而在应用中可避免对寄存器保存的需求 减少了开销 2 6ARM异常 2 6 3ARM异常中断响应过程一 进入异常当发生异常时 除了复位异常立即中止当前指令外 处理器尽量完成当前指令 然后脱离当前的程序去处理异常 ARM处理器对异常中断的响应过程如下 1 保存返回地址将引起异常指令的下一条指令的地址保存到新的异常模式x下的R14 即R14 中 使异常处理程序执行完后能正确返回原程序 2 保存当前状态寄存器CPSR的内容将CPSR的内容保存到将要执行的异常中断对应的SPSR中 便于中断返回时恢复处理器当前的状态位 中断屏蔽位以及各条件标志位 2 6ARM异常 3 设置当前状态寄存器CPSR中的相应位设置CPSR模式控制位CPSR 4 0 使处理器进入相应的执行模式 设置中断标志位 CPSR 6 1 禁止IRQ中断 设置中断标志位 CPSR 7 1 禁止FIQ中断 当进入Reset或FIQ模式时 4 转去执行中断处理程序取相应的中断向量给程序计数器PC 使程序开始执行中断处理程序 一般地说 矢量地址处将包含一条指向相应程序的转移指令 从而可跳转到相应的异常中断处理程序处执行异常中断处理程序 2 6ARM异常 2 6ARM异常 ARM处理器对异常的响应过程可以用伪代码描述如下 R14 returnlinkSPSR CPSRCPSR 4 0 exceptionmodenumber M位 CPSR 5 0 当运行于ARM状态时 T位 CPSR 6 1 禁止新的IRQ中断 F位 if ResetorFIQthenCPSR 7 1 当Reset或FIQ异常中断时 禁止新的FIQ中断 I位 PC exceptionvectoraddress 注意使用异常模式下的特有寄存器每个异常模式对应有两个寄存器R13 R14 分别保存相应模式下的堆栈指针 返回地址 堆栈指针可用来定义一个存储区域保存其它用户寄存器 在程序初始化时应该对各种模式堆栈设置 便于随时使用 FIQ模式还有额外的专用寄存器R8 fiq R12 fiq 使用这些寄存器可以加快快速中断的处理速度 2 6ARM异常 二 异常返回1 异常返回应执行的操作异常处理完毕之后 ARM微处理器会执行以下几步操作从异常返回 将返回地址装入PC把连接寄存器LR的值减去相应的偏移量 然后送到PC中 恢复CPSR的值将SPSR复制回CPSR中 清除中断屏蔽位若在进入异常处理时设置了中断禁止位 要在此清除 可以认为应用程序总是从复位异常处理程序开始执行的 因此复位异常处理程序不需要返回 2 6ARM异常 2 各种异常返回方法FIQ中断返回不管是在ARM状态还是在Thumb状态下进入FIQ模式 FIQ处理程序均可以执行以下指令从FIQ模式返回 SUBSPC R14 fiq 4指令预取中止 Abort 异常返回当指令预取访问存储器失败时 存储器系统向ARM处理器发出存储器中止 Abort 信号 预取的指令被记为无效 但只有当处理器试图执行无效指令时 指令预取中止异常才会发生 如果指令未被执行 例如在指令流水线中发生了跳转 则预取指令中止不会发生 如果发生了指令预取中止异常 无论是在ARM状态还是Thumb状态 其返回指令为 SUBSPC R14 abt 4 重新执行被中止的指令 2 6ARM异常 数据中止 Abort 异常返回如果发生了数据中止异常 无论是在ARM状态还是Thumb状态 其返回指令为 SUBSPC R14 abt 8重新执行被中止的指令软件中断指令 SWI 异常返回用于进入管理模式 常用于请求执行特定的管理功能 软件中断处理程序执行以下指令可以从SWI模式返回 无论是在ARM状态还是Thumb状态 MOVSPC R14 svc以上指令恢复PC 从R14 svc 和CPSR 从SPSR svc 的值 并返回到SWI的下一条指令 2 6ARM异常 未定义指令异常返回当ARM处理器遇到不能处理的指令时 会产生未定义指令异常 采用这种机制 可以通过软件仿真扩展ARM或Thumb指令集 处理器执行以下程序返回 无论是在ARM状态还是Thumb状态 MOVSPC R14 und以上指令恢复PC 从R14 und 和CPSR 从SPSR und 的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB61T 1255-2019 地理标志产品 周至山茱萸
- 三年级科技知识竞赛试题及答案
- 2025年中级会展设计师考试模拟试题及备考策略
- DB61T 1142.18-2018 西瓜 西抗4号规范
- 2025年中国无人机航拍摄影师认证考试模拟题及答案详解
- 2025年信息技术安全等级保护测评考试模拟题及答案解析
- 2025年中国香道数字嗅觉技术趋势分析与应用模拟题集
- pp共混体系课件
- 2025年乡村文创设计初级考试答题技巧与注意事项解析
- 2025年中国基金业协会招聘面试常见问题解析及应对策略
- 2025年成人高考政治试题及答案
- 《老年人生活能力康复训练》养老服务与管理专业全套教学课件
- 2025-2030中国间二硝基苯行业现状态势及前景趋势预测报告
- (完整版)保安培训课件
- 人类行为与社会环境全套课件
- (全国通用)三甲人民医院诊断证明书请假条模板(广东佛山)
- 部编版一年级上册语文研课标说教材课件
- 纳米材料ppt课件精品课件
- 最新VTE指南解读(静脉血栓栓塞症的临床护理指南解读)
- 旅行社计调实务课件完整版电子教案
- 乌有先生传(原文+注释+译文)精编版
评论
0/150
提交评论