




已阅读5页,还剩106页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统讲义 第2章 arm9体系结构 周国运 2007.3 第2章 arm9体系结构 主要内容 2.1 arm处理器简介 2.2 arm9结构 2.3 arm数据类型和存储格 式 2.4 处理器状态和工作模式 2.5 arm寄存器 2.6 arm异常 2.7 arm调试接口 2.1 arm处理器简介 2.1.1 arm公司简介 arm是advance risc machine 的缩写,既可以认为是 一个公司的名字,也可以认为是对一类微处理器的通称 ,还可以认为是一种技术的名字。 arm公司于1990年11月在英国剑桥成立,前身为 acorn计算机公司。 arm公司是全球领先的16/32位嵌入式risc微处理器 解决方案供应商。 arm公司是知识产权(ip)公司,本身不生产芯片, 靠转让设计许可,由合作伙伴公司来生产各具特色的芯 片。 目前,全世界有几十家著名的半导体公司都使用arm 公司的授权,其中包括motorola、ibm、intel、 lg 、 sony、nec、atmel等,从而保证了大量的开发工 具和丰富的第三方资源,它们共同保证了基于arm处理 器核的设计可以很快投入市场。arm公司已成为移动通信、手持设备、多媒体数字消费嵌入式解 决方案的risc标准。 2.1.2 arm体系结构的特点 总体思想:在不牺牲性能的同时,尽量 简化处理器。同时从体系结构的层面上 灵活支持处理器扩展。这种简化和开放 的思路使得arm处理器采用了很简单 的结构来实现。 arm处理器是最先进的:目前, arm32位体系结构被公认为业界领先 的32位嵌入式risc微处理器核,所有 arm处理器都共享这一体系结构。 2.1.2 arm体系结构的特点(2) 一、risc型处理器结构 arm采用risc结构,在简化处理器结构,减少 复杂功能指令的同时,提高了处理器的速度。 考虑到处理器与存储器打交道的指令执行时间远 远大于在寄存器内操作的指令执行时间,risc型 处理器采用了load/store(加载/存储)结构,即 只有load/store指令可与存储器打交道,其余指 令都不允许进行存储器操作。 同时,为了进一步提高指令和数据的存取速度, risc型处理器增加了指令高速缓冲i-cache和数 据高速缓冲d-cache及多处理器结构,使指令的 操作尽可能在寄存器之间进行。 2.1.2 arm体系结构的特点(3) 只能对寄存器执行算术和逻辑 操作,load/store体系结构 2.1.2 arm体系结构的特点(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.2 arm体系结构的特点(5) 五、嵌入式在线仿真调试 arm体系结构的处理器芯片都嵌入了在线仿真ice- rt逻辑,便于通过jtag来仿真调试芯片,省去了 价格昂贵的在线仿真器。 六、灵活方便的接口 arm体系结构具有协处理器接口,允许接16个协处 理器。既可以使基本的arm处理器内核尽可能小, 方便地扩充arm指令集,也可以通过未定义指令来 支持协处理器的软件仿真。 七、低电压功耗的设计 考虑到arm处理器主要用于手持式嵌入式系统中, 在设计中就十分注意功耗的设计。 2.1.3 arm指令系统版本 arm公司从最初的开发到现在,arm指令集结构有 了巨大的改进,并在不断完善和发展。为了清楚地表 达每个arm内核所使用的指令集,arm公司定义了 一系列的指令集体系结构版本,以vx表示某种版本。 下面对版本v1v5做一介绍。 一、版本1(v1) v1在arm1中使用,但从未商业化。 26位寻址空间 ,其指令主要有: 基本的数据处理指令(无乘法指令) 字、字节和半字存储器访问指令 分支指令(包括带链接的分支指令) 软件中断指令 2.1.3 arm指令系统版本(2) 二、版本2(v2) 仍是26位寻址空间,在v1的基础上增加的内容有: 乘法和乘法加指令 支持协处理器 快速中断模式中的分组寄存器 交换式加载/存储指令。 三、版本3(v3) 将寻址范围扩展到32位,但兼容26位寻址。在v2的基础 上增加的内容有: 设置了专用的当前程序状态寄存器cpsr、增加了程序状 态保存寄存器 增加了中止异常和未定义指令异常两种处理器模式 增加了访问cpsr、spsr的指令mrs和msr 修改了异常返回指令的功能 2.1.3 arm指令系统版本(3) 四、版本4(v4) 32位寻址方式,但不再兼容26位寻址,在v3的基础上增加的 内容有: 半字加载/存储指令 在t变量中转换到thumb状态的指令 增加了在使用用户模式寄存器的特权处理器模式 五、版本5(v5) 对v4指令做了必要的修改和扩展,并且增加了指令,具体 变化为: 改进在t变量中arm/thumb状态之间的切换效率 对于t和非t变量使用相同的代码生成技术 增加了计数前导零指令 增加了软件断点指令 对乘法指令设置标志做了严格定义。 将流水线的级数从3级(如arm7tdmi使用的)增加到5级 ; 并改变存储器接口来使用分开的指令与数据存储器。 2.1.3 arm指令系统版本(4) 六、版本6 (v6) 对v5指令做了必要的修改和扩展,并且增加了 指令, 2001年发布,首先在arm11处理器中使用 (2002年春季发布),具体变化为: farm体系版本6的新架构在降低耗电量的同时, 还强化了图形处理性能。 f增加了多媒体处理功能:通过追加有效进行多媒 体处理的simd功能,将语音及图像的处理功能提 高到了原机型的4倍。 fv6版本还支持多微处理器内核。 2.1.3 arm指令系统版本(5) arm核体系结结构 arm1v1 arm2v2 arm2as,arm3v2a arm6,arm600,arm610v3 arm7,arm700,arm710v3 arm7tdmi,arm710t,arm720t arm740t v4t strong arm,arm8,arm810v4 arm9tdmi,arm920t,arm940tv4t arm9e-sv5te arm10tdmi,arm1020ev5te arm11,arm1156t2-s,arm1156t2f-s, arm1176jz-s,arm11jzf-s v6 2.1.4 arm 体系结构的演变 一、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.4 arm 体系结构的演变(2) 二、长乘指令(m变种) m变种增加了两条这样的长乘指令: 其中一条指令完成32位整数乘以32位整数,生成64位整 数的长乘操作; 另一条指令完成32位整数乘以32位整数,然后在加上一 个32位整数,生成64位整数的长乘加操作。这种长乘的 应用场合m变种很适合。 2.1.4 arm 体系结构的演变(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.4 arm 体系结构的演变(4) 四、java加速器jazelle(j变种) farm的jazelle技术是java语言和先进的32位risc芯片完 美结合的产物。 fjazelle技术使得java代码的运行速度比普通的java虚拟机 提高了8倍,这是因为jazelle技术提供了java加速功能,大 幅的提高了机器的运行性能,而功耗反而降低了80%。 fjazelle技术使得在一个单独的处理器上同时运行java应用 程序、已经建立好的操作系统和中间件以及其他的应用程 序成为可能。 fjazelle技术的诞生使得一些必须用到协处理器和双处理器 的场合可以用单处理器代替,这样,既保证了机器的性能 ,又降低了功耗和成本。 farm体系版本4tej是最早包含了j变种。用字符j表示j变 种 2.1.4 arm 体系结构的演变(5) 五、arm媒体功能扩展(simd变种) f arm的simd媒体功能扩展为这些应用系统 提供了解决方案。它为包括音频视频处理在 内的应用系统提供了优化功能。其主要特点如 下: 使处理器的音频视频处理的性能提高了24倍 。 可同时进行两个16位操作数或者4个8位操作数的 运算。 用户可以自定义饱和运算的模式。 可进行两个16位操作数的乘加乘减运算及32位 乘以32位的小数乘加运算。 同时8位/16位选择操作。 2.1.4 arm 体系结构的演变(6) 2.1.4 arm 体系结构的演变(7) 2.1.4 arm系列处理器简介 arm有以下系列处理器: arm7系列 arm9系列 arm9e系列 arm10系列 arm11系列 securcore系列 inter的strongarm和xscale系列 其中,arm7、arm9、arm9e、arm10和arm11为5个 通用处理器系列,每一个系列提供一套相对独特的性能来 满足不同应用领域的需求。securcore系列专门为安全要求 较高的应用而设计。 2.1.4 arm系列处理器简介(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.4 arm系列处理器简介(3) 表2-1 arm7系列产 品 项项目 型号 cache (ins/data) memory mgt busthumb dspjazelle 指令 版本 arm7tdmi nonoahbyesnonov4t arm7tdmi-s nonoahbyesnonov4t arm720t 8kbmmuahbyesnonov4t arm7ej nonoahbyesyesyes v5tej 2.1.4 arm系列处理器简介(4) 二、arm9系列 arm7采用的neumann结构,取指令和取操作数都是通 过一条总线分时进行,这样,在高速运算时,不但不能 同时取指令和取操作数,而且还会造成传输通道上的瓶 颈现象。 arm9采用哈佛(harvard)结构,程序存储器与数据存 储器分开,提供了较大的存储器带宽。同时,大多数dsp 都采用此结构。 arm9为五级流水(取指,译码,执行,缓冲/数据,回 写),平均功耗为0.7mw/mhz。时钟速度为120mhz- 200mhz,每条指令平均执行1.5个时钟周期。 arm9系列微处理器包含arm920t、arm922t和 arm940t三种类型,主要应用在手持产品、视频电话、 pda、数字消费产品、机顶盒、家用网关等方面。 2.1.4 arm系列处理器简介(5) 表2-2 arm9系列产 品 项项目 型号 cache (ins/data) memory mgt busthumb dspjazelle 指令 版本 arm920t16kb/16kb mmuasbyesnonov4t arm922t 8kb/8kbmmuasbyesnonov4t arm940t 4kb/4kbmmuasbyesnonov4t 2.1.4 arm系列处理器简介(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.4 arm系列处理器简介(7) 表2-3 arm9e系列产 品 项项目 型号 cache (ins/data) memory mgt busthumb dsp jazelle 指令 版本 arm926ej-s 可变mmu 2*ahb yesyesyes v5tej arm946e-s 可变mpuahbyesyesnov5te arm966e-s 无-ahbyesyesnov5te arm968e-s 无dmaahbyesyesnov5te 2.1.4 arm系列处理器简介(8) 四、arm10系列 arm10系列微处理器包括:arm1020e和arm1022e 等型号,见表2-4。 arm10系列采用了新的体系结构,其核心为使用了向 量浮点单元,有强大的浮点运算能力,并且增加了cache 容量和总线宽度,并且具有低功耗的特点。 arm10系列 微处理器主要应用于下一代无线设备、视频消费品等。 表2-4 arm10系列产品 项项目 型号 cache (ins/data) memory mgt busthumb dspjazelle 指令 版本 arm1020e32kb/32kb mmu 2*ahbyesyesnov5te arm1022e 16kb/16kbmmu 2*ahbyesyesnov5te arm1022e 可变mpu mmu2*ahbyesyesyesv5tej 2.1.4 arm系列处理器简介(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.4 arm系列处理器简介(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系列产品命名规则 arm 926ej-sarm 926ej-s family number 7: arm7 9: arm9 10: arm10 11: arm11 memory system 2: cache, mmu, process id 4: cache, mpu 6: write buffer, no cache memory size 0: cache size (4-128kb) 2: reduced cache size 6: tcm synthesizable extensions e: dsp extension j: jazelle extension t: thumb support 2.2 arm9体系结构 2.2.1arm9体系结构框图 对于arm9系列,其基本内核是arm9tdmi,下 页图给出了arm9tdmi结构框图。主要有7部分 构成。 比较最常用的是arm920t内核,后页图给出了 arm920t结构框图。 arm920t结构主要部分有:arm9tdmi内核 cpu、mmu、cache、协处理器接口、运行跟踪 信息接口(etm)、jtag调试接口、总线接口等7 部分构成。 一、arm9tdmi体系结构框图 arm9tdmi cpu 指令接口 数据地址接 口 跟踪接口 数据接口jtag 接口 指令地址 接口 arm9tdmi结构 框图 二、arm920t体系结构框图 二、arm920t体系结构框图 arm9tdmi核性能 0.250.25微米的微米的arm9tdmiarm9tdmi核在执行核在执行3232位位 armarm代码时的特性综述于下表代码时的特性综述于下表3 3。核的版图。核的版图 示于下页图。示于下页图。 2.2.2 arm流水线结构 一、流水线技术概述 流水线方式:是把一个重复的过程分解为若干 个子过程,每个子过程可以与其他子过程同时进 行。 由于这种工作方式与工厂中的生产流水 线十分相似,因此,把它称为流水线工作方式。 处理器按照一系列步骤来执行每一条指令。典 型的步骤为: 1)从存储器读取指令(fetch) 2)译码以鉴别它是哪一类指令(dec) 3)从寄存器组取得所需的操作数(reg) 4)将操作数进行组合以得到结果或存储器地 址(exe) 5)如果需要,则访问存储器存取数据(mem ) 6)将结果回写到寄存器组(res) 二、arm7的三级流水线 1取指:从程序存储器中取指令,放入指令流水线 。(占用存储器访问操作) 2译码:指令译码。(占用译码逻辑) 3执行:执行指令/读写reg。(占用alu及数据路 径) 2.2.2 arm流水线结构(2) 下图为3个单周期指令在流水线上的情况。一条指令有3 个时钟周期的执行时间,但吞吐量是每个周期1条指令。 取指译码译码执执行取指译码译码执执行 取指译码译码执执行 t 1 2 3 pc值如何计算? pc 指向处于读取级的指令地址,而不是处于执行级的指令地址 pc=当前执行指令地址+8 arm单周期指令的3级流水线操作 2.2.2 arm流水线结构(3) 优秀的流水线结构 operation cycle 1 2 3 45 6 add sub mov and orr eor cmp rsb fetchdecodeexecute fetchdecodeexecute fetchdecodeexecute fetchdecodeexecute fetchdecodeexecute decodeexecute fetchdecode fetch fetch 本例中 6 个时钟周期内一共完成了 ? 条指令 全部对寄存器进行操作 (单周期执行) 指令周期数 (cpi) = 1 2.2.2 arm流水线结构(4) 多周期指令的3级流水线操作 取指 译译 码码 执执行 取指译译 码码 地址 计计算 数据 传传送 取指 取指译译 码码 执执行 译译 码码 执执行 取指 译译 码码 执执行 1 2 3 4 5 6 7 8 1 add 2 stb 3 add 4 add 5 add 指令流水线出现了中断 2.2.2 arm流水线结构(5) t4周期: 指令2地址计算产生下一周期数据路 径需要的控制信号。 指令3译码产生下一周期数据路径需要 的控制信号。 二者都产生下一周期数据路径控制信号,数据路径控 制冲突,因此断流。 t5周期: 指令2 stb访问数据存储器 指令5取指访问程序存储器 二者都访问存储器,造成访问存储器冲突,在此断流。 指令3译码 指令4的译码则不得不推迟一个周期。 2.2.2 arm流水线结构(6) 三、arm9tdmi的五级流水线 arm7tdmi与arm9tdmi流水线比较 2.2.2 arm流水线结构(7) 四、arm7和arm9流水线比较 5级流水线的arm9内核是哈佛架构,拥 有独立的指令和数据总线;指令和数据的读 取可以在同一周期进行; 3级流水的arm7内核是指令和数据总线 复用的冯.诺依曼架构,指令和数据的读取 不能在同一周期进行; 5级流水线设计把寄存器读取、逻辑运算 、结果回写分散在不同的流水当中, 每一 级流水的操作简洁,提升了处理器的主频。 2.2.2 arm流水线结构(8) 2.2.2 arm流水线结构(9) 随着流水线深度(级数)的增加,每一段 的工作量被削减了,这使得处理器可以工 作在更高的频率,同时改进了处理器的性 能; 负面作用是增加了系统的延时,即内核在 执行一条指令前,需要更多的周期来填充 流水线; 流水线级数的增加也意味着在某些段之间 会产生数据相关。 2.2.2 arm流水线结构(10) arm处理器性能比较 2.2.3 arm总线结构 arm微控制器使用的是amba总线体系结构 amba(advanced microcontroller bus architecture)是arm公司公布的总线标准,先 进的amba规范定义了三种总线: ahb总线(advanced high-performance bus ):用于连接高性能系统模块。它支持突发数据 传输方式及单个数据传输方式,所有时序 参考同 一个时钟沿。 asb总线(advanced system bus):用于连 接高性能系统模块,它支持突发数据传输模式。 apb总线(advance peripheral bus):是一 个简单接口支持低性能的外围接口。 本节主要内容 1、数据类型 2、存储器组织 3、存储器层次 2.3 arm存储结构 2.3.1 arm存储数据类型 arm处理器支持以下6种数据类型: 8位有符号和无符号字节(byte)。 16位有符号和无符号半字(halfword) 它们必须以两字节的边界对齐(半字对齐 )。 32位有符号和无符号字(word) 它们必须以4字节的边界对齐(字对齐)。 字对齐:字单元地址的低两位 a1a0=0b00。即地址末位为0x0, 0x4, 0x8, 0xc。 半字对齐:半字单元地址的最低位 a0=0b0 (地址末位为 0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe)。 2.3 arm存储结构 对于指令,arm指令系统分为32位arm指令集 和16位的thumb指令集,在存储时分别以32位和 16位的两种不同长度存储。 对于数据,arm支持对32位字数据,16位半字 数据,8位字节数据操作。因此数据存储器可以存 储32位,16位,8位三种不同长度数据。 在arm内部,所有操作都面向32位的操作数, 只有数据传送指令支持较短的字节和半字的数据 类型。当从存储器读入一个字节或半字时,根据 其数据类型将其扩展到32位。 2.3 arm存储结构(2) 2.3.2 arm存储器组织 arm存储器以8位为一个单元存储数据(一个字节),每 个存储单元分配一个存储地址。 arm将存储器看作是从零地址开始的字节的线性组合 。作为32位的微处理器,arm体系结构所支持的最大寻址 空间为4gb(232字节)。 从零字节到三字节放置第一个存储的字数据,从第四个 字节到第七个字节放置第二个存储的字数据,依次排列。 32位的字数据要使用4个地址单元,16位半数据要使用2个 地址单元。 这样,就存在一个所存储的字或半字数据的排列顺序问 题。arm体系结构可以用两种方法存储字数据,称为大端 格式和小端格式 。 2.3 arm存储结构(3) 2.3 arm存储结构(4) 大端格式(big-endian):字数据的高字节存储在低地址 中,而字数据的低字节则存放在高地址中。 小端格式(low-endian):与大端存储格式相反。低地址 中存放的是字数据的低字节,高地址存放的是字数据的 高字节。缺省设置为小端格式。 2.3.3 arm存储器层次 微处理器希望存储器容量大、速度快。但容 量大者速度慢;速度快者容量小。解决方法是构 建一个由多级存储器组成的复合存储器系统。 两级存储器方案 一般包括: 一个容量小但速度快的从存储器 一个容量大但速度慢的主存储器 宏观上看这个存储器系统像一个即大又快的存储 器。这个容量小但速度快的元件是cache,它自动 地保存处理器经常用到的指令和数据的拷贝。 2.3 arm存储结构(5) 多级存储器系统 寄存器组 访问时间约为几个ns。 片上ram 与片外ram比速度快、功耗小、 容量小。读写时间约为几个ns。 片上cache 832kb,访问时间约为十几个ns。 主存储器 一般为几兆字节1gb 的动态存 储器,访问时间约 50ns。 2.3 arm存储结构(6) cpu 寄存器组 片上ram 片上cache 主存储器 硬盘 2.4 arm处理器的工作状态和模式 为了能够体现arm的特点和性能,arm处理器 有两种工作状态和7种工作模式。 2.4.1 arm处理器的工作状态 有两种工作状态: arm状态:处理器执行32位的字对齐的arm 指令; thumb状态:处理器执行16位的半字对齐的 thumb指令。 两种状态可以切换。程序执行过程中,通过执 行带状态切换的分支指令bx,随时在两种工作 状态之间进行切换。并且,处理器工作状态的转 变,并不影响处理器的工作模式和相应寄存器中 的内容。 2.4 arm处理器的工作状态和模式(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.4 arm处理器的工作状态和模式 (3) 例3.1 状态切换程序 ;从arm状态切换到thumb状态 ldrr0,=lable+1 bxr0 ;从thumb状态切换到arm状态 ldrr0,=lable bxr0 注意: arm和thumb之间状态的切换不影响处理器 的模式或寄存器的内容。 arm处理器在开始执行代码时,只能处于 arm状态。 2.4.2 arm处理器的工作模式 一、 arm9的7种工作模式 1、用户模式(usr):非特权模式,大部分任务执 行在这种模式。正常程序执行的模式 2、快速中断模式(fiq):当一个高优先级(fast)中 断产生时将会进入这种模式。 高速数据传输或通 道处理 3、外部中断模式(irq):当一个低优先级 (normal)中断产生时将会进入这种模式。 通常的中 断处理 4、管理模式(svc):当复位或软中断指令执行时 将会进入这种模式。 供操作系统使用的一种保护模 式 2.4.2 arm处理器的工作模式(2) 5、中止模式(abt):当存取异常时将会进入这 种模式 虚拟存储及存储保护 6、未定义模式(und):当执行未定义指令时会 进入这种模式 软件仿真硬件协处理器 7、系统模式(sys):供需要访问系统资源的操 作系统任务使用 特权级的操作系统任务 2.4.2 arm处理器的工作模式(2) 二、模式分类及特点 七种模式可以划分成四类 1、用户模式特点: 应用程序不能够访问受操作系统保护的系统 资源。 应用程序不能进行处理器模式的切换。 2、系统模式特点: 不属于异常模式,不是通过异常进入的。系统模式属 于特权模式,可以访问所有的系统资源,也可以直接进 行模式的切换。它主要供操作系统使用。 3、特权模式及其特点: 特权模式:除用户模式之外的工作模式又称为特权模式 特点: 应用程序可以访问所有的系统资 源 可以任意地进行处理器模式的切 换 2.4.2 arm处理器的工作模式(3) 4、异常模式及其特点: 异常模式:除用户模式、系统模式之 外的五种模式称为异常模式。 特点:以各自的中断或异常方式进入,并 且处理各自的中断或异常。对管理模式 (svc)进入方式和处理内容有: 系统上电复位后进入管理模式,运行系统初始化 程序,如中断允许/禁止,主时钟设置,sdram配置 ,各个功能模块初始化等。 当执行软件中断指令swi时,进入管理模式。 2.4.2 arm处理器的工作模式(4) 处理器模式的切换方式: 软件控制进行切换。 通过外部中断和异常进行切换 处理器启动时的模式转换图 管理模式 (supervisor) 多种特权 模式变化 用户程序的 运行模式 复位后的缺省 模式 主要完成各模式的 堆栈设置,注意不 要进入用户模式 一般为用户模式 user 2.5 arm9寄存器 本节主要内容 1、arm寄存器概述 2、arm通用寄存器 3、arm状态寄存器 2.5 arm9寄存器 2.5.1、arm寄存器概述 arm处理器v4及以上版本有37个32位的寄存器 其中31个为通用寄存器;6个为状态寄存器。 31个通用寄存器 r0r15; r13_svc、r14_svc; r13_abt、r14_abt; r13_und、r14_und; r13_irq、r14_irq; r8_fiq-r14_fiq 6 个状态寄存器 cpsr spsr_svc、spsr_abt、spsr_und、spsr_irq 和spsr_fiq 2.5 arm9寄存器(2) 每一类处理器 模式都有一组相 应的寄存器组; 在任意的处理 器模式下,可见 的寄存器包括15 个通用寄存器( r0r14)、1 个或2个状态寄 存器和程序寄存 器。 带灰色底纹的 单元格表示,用 户模式或系统模 式使用的一般寄 存器,已被异常 模式特定的另一 寄存器所替代。 2.5 arm9寄存器(3) user/sysfiqsvcabtirqund 2.5 arm寄存器(4) 2.5.2 arm的通用寄存器 通用寄存器包括r0r15,可以分为三类: 未分组寄存器r0r7 分组寄存器r8r14 程序计数器pc(r15) 一、未分组寄存器r0r7 在所有的运行模式下,未分组寄存器都指向同一个物理 寄存器,他们未被系统用作特殊的用途,是真正的通用 寄存器。 因此,在中断或异常处理进行运行模式转换时,由于不 同的处理器运行模式均使用相同的物理寄存器,可能会 造成寄存器中数据的破坏,这一点在进行程序设计时应 引起注意。 2.5 arm寄存器(5) 二、分组的寄存器r8r14 对于r8r12,每一次所访问的物理寄存器,与处理器 当前的工作模式有关。 1、r8r12 当处理器工作于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.5 arm寄存器(6) r13:寄存器r13在arm指令中常用作堆栈指 针sp。但这只是一种习惯用法,用户也可使用其他的寄 存器作为堆栈指针。而在thumb指令集中,某些指令强 制性的要求使用r13作为堆栈指针。 r14:寄存器r14也称作子程序链接寄存器( subroutine link register)或链接寄存器lr。 当执行bl子程序调用指令时,r14中得到r15(程序计 数器pc)的备份。其他情况下,r14用作通用寄存器。 与之类似,当发生中断或异常时,对应的分组寄存器 r14_svc、r14_irq、r14_fiq、r14_abt和r14_und用来 保存r15的返回值。 2.5 arm寄存器(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.5 arm寄存器(8) 2.5.3 arm的状态寄存器 一、两种程序状态寄存器 在arm微处理器中,有cpsr和spsr两种程序状态寄存器 。 1、当前程序状态寄存器 cpsr (current program status register) 用来保存当前程序状态的寄存器。 所有处理器模式下都可以访问当前程序状态寄存器cpsr 。仅一个cpsr。 2、保存程序状态寄存器spsr_mode (saved program status register) spsr_mode用来进行异常处理,其功能包括: 保存alu中的当前操作信息 当异常发生时, 用来保存cpsr的值,从异常返回时,将 spsr_mode复制到cpsr中,恢复cpsr的值。 控制允许和禁止中断修改spsr的值 设置处理器的运行模式修改spsr的值 问题:一共有多少个spsr?为什么? 2.5.3 arm的状态寄存器(2) 二、arm状态寄存器的格式 1、条件码标志位(保存alu中的当前操作信息) n:正负号/大小 标志位 0表示:正数/大于;1表示:负数/小于 z:零标志位 0表示:结果不为零;1表示:结果为零 c:进位/借位/移出位 0表示:未进位/借位/移出0;1表示:进位/未借位/ 移出1 v:溢出标志位 0表示:结果未溢出;1表示:结果溢出 31 30 29 2827 876543210 nzcv (保留) ift m4 m3 m2 m1 m0 2.5.3 arm9的状态寄存器(3) 2、控制位 i、f中断控制位控制允许 和禁止中断 i1 禁止irq中断i0 允许irq中断 f1 禁止fiq中断f0 允 许fiq中断 t控制(标志)位反映处理器 的运行状态 t=1时,程序运行于thumb状 态 t=0时,程序运行于arm状态 m控制位决定了处理器的 运行模式 当发生异常时这些位被改变。 如果处理器运行在特权模式, 这些位也可以由程序修改。 m4:0 10000 10001 10010 10011 10111 11011 11111 模式 用户 快中断 中断 管理 中止 未定义 系统 2.5.3 arm9的状态寄存器(4) 3、保留位 cpsr中的其余位为保留位,当改变cpsr中的 条件码标志位或者控制位时,保留位不要改变, 在程序中也不要使用保留位来存储数据。保留位 将用于arm版本的扩展。 2.5.4 thumb状态下的寄存器组织 thumb状态下的寄存器集是arm状态下寄存器 集的子集。程序员可以直接访问8个通用的寄存 器(r0r7),程序计数器pc、堆栈指针sp、 链接寄存器lr和当前状态寄存器cpsp。 本节主要内容 1、中断和异常的概念 2、arm的异常中断介绍 3、arm的异常中断响应过程 4、中断向量和中断优先级 2.6 arm异常 2.6 arm异常 2.6.1 中断和异常的概念 1、中断 当cpu正在执行程序时,系统发生了一件急需 处理的事件,cpu暂时停下正在执行的程序,转去处理相应 的事件,事件处理完后,cpu再返回执行原来的程序,这种 情况称为中断。这是中断的本来意义。 中断事件:引起cpu产生中断、并且与cpu当前所执行的 程序无关的、由外部硬件产生的事件,也叫中断源。中断事 件也常称为外中断。 常说的中断:有时指的是中断的本意,有时指的是外部中断 事件,即外中断。 中断是计算机系统基本的功能 利用中断,外设可以与cpu 并行工作,当外设需要传输数据或控制时,向cpu发出中断 请求信号。cpu响应其请求进行处理。因此,使用中断既可 以实现cpu与外设并行工作,又可以实时处理各种紧急事件 。 2.6 arm异常 2、异常 是指cpu在执行指令时出现的错误,即不正常的 情况。异常是与当前所执行的程序有关的。如存取 数据或指令错误、计算结果溢出等。 异常的处理:也用中断的方式进行处理。 计算机通常是用中断来处理外中断和异常,因此下 面将二者均称为异常。 3、arm程序的三种执行流程 顺序流程:每执行一条arm指令,程序计数器 (pc)的值加4;每执行一条thumb指令,程序计 数器寄存器(pc)的值加2,整个过程是按顺序执 行。 对异常的说明 当系统运行时,异常可能会随时发生,为保证 在arm处理器发生异常时不至于处于未知状态 ,在应用程序的设计中,首先要进行异常处理 ,采用的方式是在异常向量表中的特定位置放 置一条跳转指令,跳转到异常处理程序,当 arm处理器发生异常时,程序计数器pc会被强 制设置为对应的异常向量,从而跳转到异常处 理程序,当异常处理完成以后,返回到主程序 继续执行。 我们需要处理所有的异常,尽管我们可以简单 的在某些异常处理程序处放置死循环。 2.6 arm异常 2.6 arm异常 跳转流程:程序执行了跳转指令,则要跳转到特 定的地址标号处执行,包括跳转到子程序。例如, 跳转指令,b、bl、blx和bx。 中断流程:当异常中断发生时,系统执行完当前 指令后,将跳转到相应的异常中断处理程序处执行 。在当异常中断处理程序执行完成后,程序返回到 发生中断的指令的下条指令处执行。 在进行异常中断处理程序时,要保存被中断的程序的执行现 场,在从异常中断处理程序退出时,要恢复被中断的程序的 执行现场。 中断处理与子程序调用的区别:中断是随机的,并且与正 在执行的程序无关;子程序调用是程序的主动行为,并且与 正在执行的程序密切相关。 2.6.2 arm的异常 arm有7种异常 1、复位 处理器上一旦有复位输入,arm处理器立刻停 止执行当前指令。复位后,arm处理器在禁止中断的管 理模式下,从地址0x00000000或0xffff0000开始执行指 令。 2、未定义指令异常 当arm处理器执行协处理器指令时,它必须 等待任一外部协处理器应答后,才能真正执行这条指令。 若协处理器没有响应,就会出现未定义指令异常。 未定义指令异常可用于在没有物理协处理器( 硬件)的系统上,对协处理器进行软件仿真,或在软件仿 真时进行指令扩展。 2.6 arm异常 3、软件中断异常 该异常由执行swi指令产生,可使用此机制 进行软件仿真。 4、预取中止(取指令存储器中止) 若处理器预取指令的地址不存在,或该地址 不允许当前指令访问,存储器会向处理器发出中止信号 ,但当预取的指令被执行时,才会产生指令预取中止异 常。 5、数据中止(访问数据存储器中止) 若处理器数据访问指令的地址不存在,或该 地址不允许当前指令访问时,产生数据中止异常。 2.6 arm异常 6、irq异常 当处理器的外部中断请求引脚有效,且 cpsr中的i=0,产生irq异常。 系统的外设可通过该异常请求中断服务。 7、fiq异常 当处理器的外部中断请求引脚有效,且 cpsr中的f=0,产生fiq异常。 fiq支持数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 松岗街道宝安山庄老旧小区改造工程可行性研究报告
- 2025个人消费贷款项目借款合同范本
- 校园饮用水污染突发安全事件应急预案
- 互联网企业数据安全保密承诺书
- 住宅小区车位使用权购置与物业管理合同
- 餐饮连锁品牌区域保护合同样本
- 智能制造车间租赁服务合同
- 餐饮行业合伙企业品牌加盟入伙协议
- 房地产项目的媒体传播策略
- 2025挖掘机械租赁合同范本
- (完整版)高考必备3500词
- GB/T 14832-2008标准弹性体材料与液压液体的相容性试验
- GB/T 1185-2006光学零件表面疵病
- GB 29415-2013耐火电缆槽盒
- 熊浩演讲稿全
- 2022年宁夏中考物理真题(含答案)
- 怎样当好副职干部课件
- 新疆维吾尔自治区竣工验收备案表格模板
- 边坡巡检记录表完整优秀版
- 《创新与创业基础》课程思政优秀教学案例(一等奖)
- 原子荧光分析(汞)原始记录2
评论
0/150
提交评论