[电脑基础知识]ARM9体系结构

上传人:wux****ua 文档编号:16325254 上传时间:2020-09-26 格式:PPT 页数:103 大小:1.58MB
收藏 版权申诉 举报 下载
[电脑基础知识]ARM9体系结构_第1页
第1页 / 共103页
[电脑基础知识]ARM9体系结构_第2页
第2页 / 共103页
[电脑基础知识]ARM9体系结构_第3页
第3页 / 共103页
资源描述:

《[电脑基础知识]ARM9体系结构》由会员分享,可在线阅读,更多相关《[电脑基础知识]ARM9体系结构(103页珍藏版)》请在装配图网上搜索。

1、嵌入式系统讲义第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位嵌入式RIS

2、C微处理器解决方案供应商。 ARM公司是知识产权(IP)公司,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。 目前,全世界有几十家著名的半导体公司都使用ARM公司的授权,其中包括MOTOROLA、IBM、Intel、 LG、 SONY、NEC、ATMEL等,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM处理器核的设计可以很快投入市场。ARM公司已成为移动通信、手持设备、多媒体数字消费嵌入式解决方案的RISC标准。,2.1.2 ARM体系结构的特点,总体思想:在不牺牲性能的同时,尽量简化处理器。同时从体系结构的层面上灵活支持处理器扩展。这种简化和开放的

3、思路使得ARM处理器采用了很简单的结构来实现。 ARM处理器是最先进的:目前,ARM32位体系结构被公认为业界领先的32位嵌入式RISC微处理器核,所有ARM处理器都共享这一体系结构。,2.1.2 ARM体系结构的特点(2),一、RISC型处理器结构 ARM采用RISC结构,在简化处理器结构,减少复杂功能指令的同时,提高了处理器的速度。 考虑到处理器与存储器打交道的指令执行时间远远大于在寄存器内操作的指令执行时间,RISC型处理器采用了Load/Store(加载/存储)结构,即只有Load/Store指令可与存储器打交道,其余指令都不允许进行存储器操作。 同时,为了进一步提高指令和数据的存取速

4、度,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体系结构定义了

5、7种处理器模式:用户、 快中断、中断、管理、终止、未定义和系统模式,大大提高了ARM处理器的效率。 四、两种处理器工作状态(执行32位ARM指令) ARM状态和Thumb状态。(执行16位Thumb指令),2.1.2 ARM体系结构的特点(5),五、嵌入式在线仿真调试 ARM体系结构的处理器芯片都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试芯片,省去了价格昂贵的在线仿真器。 六、灵活方便的接口 ARM体系结构具有协处理器接口,允许接16个协处理器。既可以使基本的ARM处理器内核尽可能小,方便地扩充ARM指令集,也可以通过未定义指令来支持协处理器的软件仿真。 七、低电压功耗的设计

6、考虑到ARM处理器主要用于手持式嵌入式系统中,在设计中就十分注意功耗的设计。,2.1.3 ARM指令系统版本,ARM公司从最初的开发到现在,ARM指令集结构有了巨大的改进,并在不断完善和发展。为了清楚地表达每个ARM内核所使用的指令集,ARM公司定义了一系列的指令集体系结构版本,以vx表示某种版本。下面对版本v1v5做一介绍。 一、版本1(v1) v1在ARM1中使用,但从未商业化。 26位寻址空间,其指令主要有: 基本的数据处理指令(无乘法指令) 字、字节和半字存储器访问指令 分支指令(包括带链接的分支指令) 软件中断指令,2.1.3 ARM指令系统版本(2),二、版本2(v2) 仍是26位

7、寻址空间,在v1的基础上增加的内容有: 乘法和乘法加指令 支持协处理器 快速中断模式中的分组寄存器 交换式加载/存储指令。 三、版本3(v3) 将寻址范围扩展到32位,但兼容26位寻址。在v2的基础上增加的内容有: 设置了专用的当前程序状态寄存器CPSR、增加了程序状态保存寄存器 增加了中止异常和未定义指令异常两种处理器模式 增加了访问CPSR、SPSR的指令MRS和MSR 修改了异常返回指令的功能,2.1.3 ARM指令系统版本(3),四、版本4(v4) 32位寻址方式,但不再兼容26位寻址,在v3的基础上增加的内容有: 半字加载/存储指令 在T变量中转换到Thumb状态的指令 增加了在使用

8、用户模式寄存器的特权处理器模式 五、版本5(v5) 对v4指令做了必要的修改和扩展,并且增加了指令,具体变化为: 改进在T变量中ARM/Thumb状态之间的切换效率 对于T和非T变量使用相同的代码生成技术 增加了计数前导零指令 增加了软件断点指令 对乘法指令设置标志做了严格定义。 将流水线的级数从3级(如ARM7TDMI使用的)增加到5级; 并改变存储器接口来使用分开的指令与数据存储器。,2.1.3 ARM指令系统版本(4),六、版本6 (v6) 对v5指令做了必要的修改和扩展,并且增加了指令, 2001年发布,首先在ARM11处理器中使用(2002年春季发布),具体变化为: ARM体系版本6

9、的新架构在降低耗电量的同时,还强化了图形处理性能。 增加了多媒体处理功能:通过追加有效进行多媒体处理的SIMD功能,将语音及图像的处理功能提高到了原机型的4倍。 V6版本还支持多微处理器内核。,2.1.3 ARM指令系统版本(5),2.1.4 ARM 体系结构的演变,一、Thumb指令集(T变种) 支持Thumb指令的ARM体系版本,一般加字符T来表示(如V4T)。 目前Thumb指令集有以下两个版本:Thumb 指令集版本1,此版本作为ARM体系版本4的T变种;Thumb指令集版本2,此版本作为ARM体系版本5的T变种。 与版本1相比,Thumb指令集的版本2具有以下特点: 通过增加新的指令

10、和对已有指令的修改,来提高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算法处理能力的附加

11、指令 : 几条新的完成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变种) ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物。 Jazelle技术使得Java代码的运行速度比普

12、通的Java虚拟机提高了8倍,这是因为Jazelle技术提供了Java加速功能,大幅的提高了机器的运行性能,而功耗反而降低了80%。 Jazelle技术使得在一个单独的处理器上同时运行Java应用程序、已经建立好的操作系统和中间件以及其他的应用程序成为可能。 Jazelle技术的诞生使得一些必须用到协处理器和双处理器的场合可以用单处理器代替,这样,既保证了机器的性能,又降低了功耗和成本。 ARM体系版本4TEJ是最早包含了J变种。用字符J表示J变种,2.1.4 ARM 体系结构的演变(5),五、ARM媒体功能扩展(SIMD变种) ARM的SIMD媒体功能扩展为这些应用系统提供了解决方案。它为包

13、括音频视频处理在内的应用系统提供了优化功能。其主要特点如下: 使处理器的音频视频处理的性能提高了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

14、、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、

15、 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系列产品,2.1.4 ARM系列处理器简介(4),二、ARM9系列 ARM7采用的Neumann结构,取指令和取操作数都是通过一条总线分时进行,这样,在高速运算时,不但不能同时取指令和取

16、操作数,而且还会造成传输通道上的瓶颈现象。 ARM9采用哈佛(Harvard)结构,程序存储器与数据存储器分开,提供了较大的存储器带宽。同时,大多数DSP都采用此结构。 ARM9为五级流水(取指,译码,执行,缓冲/数据,回写),平均功耗为0.7mW/MHz。时钟速度为120MHz-200MHz,每条指令平均执行1.5个时钟周期。 ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,主要应用在手持产品、视频电话、PDA、数字消费产品、机顶盒、家用网关等方面。,2.1.4 ARM系列处理器简介(5),表2-2 ARM9系列产品,2.1.4 ARM系列处理器简介(6),三

17、、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系列产品,2.1.4 ARM系列

18、处理器简介(8),四、ARM10系列 ARM10系列微处理器包括:ARM1020E和ARM1022E等型号,见表2-4。 ARM10系列采用了新的体系结构,其核心为使用了向量浮点单元,有强大的浮点运算能力,并且增加了Cache容量和总线宽度,并且具有低功耗的特点。 ARM10系列微处理器主要应用于下一代无线设备、视频消费品等。,表2-4 ARM10系列产品,2.1.4 ARM系列处理器简介(9),五、ARMStrong/Xscale系列 StrongARM是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Intrl公司的设计技术,以及ARM体系结构的电源效率,其体系结构在软件上兼容

19、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架

20、构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术, ARM以其高性能和低成本,在该领域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。ADSL(非对称数字用户线路) 4、消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛

21、采用。 5、成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。,ARM系列产品命名规则,2.2 ARM9体系结构,2.2.1ARM9体系结构框图 对于ARM9系列,其基本内核是ARM9TDMI,下页图给出了ARM9TDMI结构框图。主要有7部分构成。 比较最常用的是ARM920T内核,后页图给出了ARM920T结构框图。 ARM920T结构主要部分有:ARM9TDMI内核CPU、MMU、Cache、协处理器接口、运行跟踪信息接口(ETM)、JTAG调试接口、总线接口等7部分构成。,一、ARM9TDMI体系结构框图,二、ARM920

22、T体系结构框图,二、ARM920T体系结构框图,ARM9TDMI核性能,0.25微米的ARM9TDMI核在执行32位ARM代码时的特性综述于下表3。核的版图示于下页图。,2.2.2 ARM流水线结构,一、流水线技术概述 流水线方式:是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。 由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。 处理器按照一系列步骤来执行每一条指令。典型的步骤为: 1)从存储器读取指令(fetch) 2)译码以鉴别它是哪一类指令(dec) 3)从寄存器组取得所需的操作数(reg) 4)将操作数进行组合以得到结果或存储器地址

23、(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流水线

24、结构(3),优秀的流水线结构,Operation,Cycle,1 2 3 45 6,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.2 ARM流水线结构(4),多周期指令的3级流水线操作,1 2 3 4 5 6 7 8,1 ADD,

25、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流水线结构(

26、7),四、ARM7和ARM9流水线比较 5级流水线的ARM9内核是哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以在同一周期进行; 3级流水的ARM7内核是指令和数据总线复用的冯.诺依曼架构,指令和数据的读取不能在同一周期进行; 5级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中, 每一级流水的操作简洁,提升了处理器的主频。,2.2.2 ARM流水线结构(8),2.2.2 ARM流水线结构(9),随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了处理器的性能; 负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的

27、周期来填充流水线; 流水线级数的增加也意味着在某些段之间会产生数据相关。,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):用于连接高性

28、能系统模块,它支持突发数据传输模式。 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。即地址末位为0 x0, 0 x4, 0 x8, 0 xc。 半

29、字对齐:半字单元地址的最低位 A0=0b0 (地址末位为0 x0,0 x2,0 x4,0 x6,0 x8,0 xa,0 xc,0 xe)。,2.3 ARM存储结构,对于指令,ARM指令系统分为32位ARM指令集和16位的Thumb指令集,在存储时分别以32位和16位的两种不同长度存储。 对于数据,ARM支持对32位字数据,16位半字数据,8位字节数据操作。因此数据存储器可以存储32位,16位,8位三种不同长度数据。 在ARM内部,所有操作都面向32位的操作数,只有数据传送指令支持较短的字节和半字的数据类型。当从存储器读入一个字节或半字时,根据其数据类型将其扩展到32位。,2.3 ARM存储结构

30、(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),

31、大端格式(big-endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小端格式(low-endian):与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。缺省设置为小端格式。,2.3.3 ARM存储器层次 微处理器希望存储器容量大、速度快。但容量大者速度慢;速度快者容量小。解决方法是构建一个由多级存储器组成的复合存储器系统。 两级存储器方案 一般包括: 一个容量小但速度快的从存储器 一个容量大但速度慢的主存储器 宏观上看这个存储器系统像一个即大又快的存储器。这个容量小但速度快的元件是Cache,它自动地保存处理器经常用到的指令和数据

32、的拷贝。,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指令

33、; Thumb状态:处理器执行16位的半字对齐的Thumb指令。 两种状态可以切换。程序执行过程中,通过执行带状态切换的分支指令BX,随时在两种工作状态之间进行切换。并且,处理器工作状态的转变,并不影响处理器的工作模式和相应寄存器中的内容。,2.4 ARM处理器的工作状态和模式(2),从ARM状态切换到Thumb状态 有两种情况ARM处理器自动切换到Thumb状态。 (1)执行BX指令,当操作数寄存器的位0为1时,则微处理器从ARM状态切换到Thumb状态。此为主动切换。 (2)当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef等),处理完异常后,在异常处理返回时,自动切换到T

34、humb状态。此为自动切换。 从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之间状态的切换不

35、影响处理器的模式或寄存器的内容。 ARM处理器在开始执行代码时,只能处于ARM状态。,2.4.2 ARM处理器的工作模式,一、 ARM9的7种工作模式 1、用户模式(usr):非特权模式,大部分任务执行在这种模式。正常程序执行的模式 2、快速中断模式(fiq):当一个高优先级(fast)中断产生时将会进入这种模式。高速数据传输或通道处理 3、外部中断模式(irq):当一个低优先级(normal)中断产生时将会进入这种模式。 通常的中断处理 4、管理模式(svc):当复位或软中断指令执行时将会进入这种模式。 供操作系统使用的一种保护模式,2.4.2 ARM处理器的工作模式(2),5、中止模式(a

36、bt):当存取异常时将会进入这种模式 虚拟存储及存储保护 6、未定义模式(und):当执行未定义指令时会进入这种模式 软件仿真硬件协处理器 7、系统模式(sys):供需要访问系统资源的操作系统任务使用 特权级的操作系统任务,2.4.2 ARM处理器的工作模式(2),二、模式分类及特点 七种模式可以划分成四类 1、用户模式特点: 应用程序不能够访问受操作系统保护的系统资源。 应用程序不能进行处理器模式的切换。 2、系统模式特点: 不属于异常模式,不是通过异常进入的。系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行模式的切换。它主要供操作系统使用。 3、特权模式及其特点: 特权模式:除

37、用户模式之外的工作模式又称为特权模式 特点: 应用程序可以访问所有的系统资源 可以任意地进行处理器模式的切换,2.4.2 ARM处理器的工作模式(3),4、异常模式及其特点: 异常模式:除用户模式、系统模式之外的五种模式称为异常模式。 特点:以各自的中断或异常方式进入,并且处理各自的中断或异常。对管理模式 (svc)进入方式和处理内容有: 系统上电复位后进入管理模式,运行系统初始化程序,如中断允许/禁止,主时钟设置,SDRAM配置,各个功能模块初始化等。 当执行软件中断指令SWI时,进入管理模式。,2.4.2 ARM处理器的工作模式(4),处理器模式的切换方式: 软件控制进行切换。 通过外部中

38、断和异常进行切换 处理器启动时的模式转换图,管理模式 (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; R

39、13_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),2.5 ARM寄存器(4),2.5.2 ARM的通用寄存器 通用寄存器包括R0R15,可以分为三类: 未分组寄存器

40、R0R7 分组寄存器R8R14 程序计数器PC(R15) 一、未分组寄存器R0R7 在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,是真正的通用寄存器。 因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。,2.5 ARM寄存器(5),二、分组的寄存器R8R14 对于R8R12,每一次所访问的物理寄存器,与处理器当前的工作模式有关。 1、R8R12 当处理器工作于fiq模式时,访问的寄存器为R8_fiqR12_fiq; 除fiq模式以外的其他模式,访问的寄存

41、器为R8_usrR12_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

42、 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时有一些特殊

43、限制,若不注意,执行的结果将是不可预料的。所以,一般不这么使用。 关于PC的值:由于ARM采用多级流水线技术,所以PC总是指向正在取指的指令,而不是正在执行的指令。也即PC总是指向当前指令的下两条指令的地址。因此,对于ARM指令集而言,PC的值为当前指令的地址值加8个字节。,2.5 ARM寄存器(8),2.5.3 ARM的状态寄存器 一、两种程序状态寄存器 在ARM微处理器中,有CPSR和SPSR两种程序状态寄存器。 1、当前程序状态寄存器 CPSR (Current Program Status Register) 用来保存当前程序状态的寄存器。 所有处理器模式下都可以访问当前程序状态寄存器

44、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表

45、示:负数/小于 Z:零标志位 0表示:结果不为零;1表示:结果为零 C:进位/借位/移出位 0表示:未进位/借位/移出0;1表示:进位/未借位/移出1 V:溢出标志位 0表示:结果未溢出;1表示:结果溢出,2.5.3 ARM9的状态寄存器(3),2、控制位 I、F中断控制位控制允许和禁止中断 I1 禁止IRQ中断I0 允许IRQ中断 F1 禁止FIQ中断F0 允许FIQ中断 T控制(标志)位反映处理器的运行状态 T=1时,程序运行于Thumb状态 T=0时,程序运行于ARM状态 M控制位决定了处理器的运行模式 当发生异常时这些位被改变。 如果处理器运行在特权模式,这些位也可以由程序修改。,2.

46、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 中断和异

47、常的概念 1、中断 当CPU正在执行程序时,系统发生了一件急需处理的事件,CPU暂时停下正在执行的程序,转去处理相应的事件,事件处理完后,CPU再返回执行原来的程序,这种情况称为中断。这是中断的本来意义。 中断事件:引起CPU产生中断、并且与CPU当前所执行的程序无关的、由外部硬件产生的事件,也叫中断源。中断事件也常称为外中断。 常说的中断:有时指的是中断的本意,有时指的是外部中断事件,即外中断。 中断是计算机系统基本的功能 利用中断,外设可以与CPU并行工作,当外设需要传输数据或控制时,向CPU发出中断请求信号。CPU响应其请求进行处理。因此,使用中断既可以实现CPU与外设并行工作,又可以实

48、时处理各种紧急事件。,2.6 ARM异常,2、异常 是指CPU在执行指令时出现的错误,即不正常的情况。异常是与当前所执行的程序有关的。如存取数据或指令错误、计算结果溢出等。 异常的处理:也用中断的方式进行处理。 计算机通常是用中断来处理外中断和异常,因此下面将二者均称为异常。 3、ARM程序的三种执行流程 顺序流程:每执行一条ARM指令,程序计数器 (PC)的值加4;每执行一条Thumb指令,程序计数器寄存器(PC)的值加2,整个过程是按顺序执行。,对异常的说明 当系统运行时,异常可能会随时发生,为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方

49、式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序,当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。 我们需要处理所有的异常,尽管我们可以简单的在某些异常处理程序处放置死循环。,2.6 ARM异常,2.6 ARM异常,跳转流程:程序执行了跳转指令,则要跳转到特定的地址标号处执行,包括跳转到子程序。例如,跳转指令,B、BL、BLX和BX。 中断流程:当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在当异常中断处理程序执行完成后,程序返回到发生中断的指令的下条指令处执

50、行。 在进行异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。 中断处理与子程序调用的区别:中断是随机的,并且与正在执行的程序无关;子程序调用是程序的主动行为,并且与正在执行的程序密切相关。,2.6.2 ARM的异常 ARM有7种异常 1、复位 处理器上一旦有复位输入,ARM处理器立刻停止执行当前指令。复位后,ARM处理器在禁止中断的管理模式下,从地址0 x00000000或0 xFFFF0000开始执行指令。 2、未定义指令异常 当ARM处理器执行协处理器指令时,它必须等待任一外部协处理器应答后,才能真正执行这条指令。若协处理器没有响

51、应,就会出现未定义指令异常。 未定义指令异常可用于在没有物理协处理器(硬件)的系统上,对协处理器进行软件仿真,或在软件仿真时进行指令扩展。,2.6 ARM异常,3、软件中断异常 该异常由执行SWI指令产生,可使用此机制进行软件仿真。 4、预取中止(取指令存储器中止) 若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。 5、数据中止(访问数据存储器中止) 若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。,2.6 ARM异常,6、IRQ异常 当处理器的外部中断请求引脚有效,且C

52、PSR中的I=0,产生IRQ异常。 系统的外设可通过该异常请求中断服务。 7、FIQ异常 当处理器的外部中断请求引脚有效,且CPSR中的F=0,产生FIQ异常。 FIQ支持数据传送和通道处理,并有足够的私有寄存器,从而在应用中可避免对寄存器保存的需求,减少了开销。,2.6 ARM异常,2.6.3 ARM异常中断响应过程 一、进入异常 当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的程序去处理异常。ARM处理器对异常中断的响应过程如下 : 1、保存返回地址 将引起异常指令的下一条指令的地址保存到新的异常模式x下的R14,即R14-中,使异常处理程序执行完后能正

53、确返回原程序。 2、保存当前状态寄存器CPSR的内容 将CPSR的内容保存到将要执行的异常中断对应的SPSR中,便于中断返回时恢复处理器当前的状态位、中断屏蔽位以及各条件标志位。,2.6 ARM异常,3、设置当前状态寄存器CPSR中的相应位 设置CPSR模式控制位CPSR4:0,使处理器进入相应的执行模式; 设置中断标志位(CPSR6=1),禁止IRQ中断; 设置中断标志位(CPSR7=1)禁止FIQ中断,当进入Reset或FIQ模式时。 4、转去执行中断处理程序 取相应的中断向量给程序计数器PC,使程序开始执行中断处理程序。 一般地说,矢量地址处将包含一条指向相应程序的转移指令,从而可跳转到

54、相应的异常中断处理程序处执行异常中断处理程序 。,2.6 ARM异常,2.6 ARM异常,ARM处理器对异常的响应过程可以用伪代码描述如下 : R14_=return link SPSR_=CPSR CPSR4:0=exception mode number CPSR5=0 /*当运行于ARM状态时*/ CPSR6=1 /*禁止新的IRQ中断*/ if =Reset or FIQ then CPSR7=1 /*当Reset 或FIQ异常中断时*/ /*禁止新 的FIQ中断*/ PC=exception vector address,注意使用异常模式下的特有寄存器 每个异常模式对应有两个寄存器R

55、13_、R14_分别保存相应模式下的堆栈指针、返回地址;堆栈指针可用来定义一个存储区域保存其它用户寄存器,在程序初始化时应该对各种模式堆栈设置,便于随时使用。 FIQ模式还有额外的专用寄存器R8_fiqR12_fiq,使用这些寄存器可以加快快速中断的处理速度。,2.6 ARM异常,二、异常返回 1、异常返回应执行的操作 异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回: 将返回地址装入PC 把连接寄存器LR的值减去相应的偏移量,然后送到PC中。 恢复CPSR的值 将SPSR复制回CPSR中。 清除中断屏蔽位 若在进入异常处理时设置了中断禁止位,要在此清除。 可以认为应用程序总是从复

56、位异常处理程序开始执行的,因此复位异常处理程序不需要返回。,2.6 ARM异常,2、各种异常返回方法 FIQ中断返回 不管是在ARM状态还是在Thumb状态下进入FIQ模式,FIQ处理程序均可以执行以下指令从FIQ模式返回: SUBS PC,R14-fiq ,#4 ? 指令预取中止( Abort )异常返回 当指令预取访问存储器失败时,存储器系统向ARM处理器发出存储器中止(Abort)信号,预取的指令被记为无效,但只有当处理器试图执行无效指令时,指令预取中止异常才会发生,如果指令未被执行,例如在指令流水线中发生了跳转,则预取指令中止不会发生。 如果发生了指令预取中止异常,无论是在ARM状态还

57、是Thumb状态,其返回指令为: SUBS PC, R14_abt, #4;重新执行被中止的指令,2.6 ARM异常,数据中止( Abort )异常返回 如果发生了数据中止异常,无论是在ARM状态还是Thumb状态,其返回指令为: SUBS PC, R14_abt, #8 重新执行被中止的指令 软件中断指令(SWI)异常返回 用于进入管理模式,常用于请求执行特定的管理功能。软件中断处理程序执行以下指令可以从SWI模式返回,无论是在ARM状态还是Thumb状态: MOVS PC , R14_svc 以上指令恢复PC(从R14_svc)和CPSR(从SPSR_svc)的值,并返回到SWI的下一条指

58、令。,2.6 ARM异常,未定义指令异常返回 当ARM处理器遇到不能处理的指令时,会产生未定义指令异常。采用这种机制,可以通过软件仿真扩展ARM或Thumb指令集。 处理器执行以下程序返回,无论是在ARM状态还是Thumb状态: MOVS PC, R14_und 以上指令恢复PC(从R14_und)和CPSR(从SPSR_und)的值,并返回到未定义指令后的下一条指令。 ?,2.6 ARM异常,ARM中断向量,2.6.4 ARM中断向量和优先级,异常中断向量表,2.6 ARM的异常,异常中断向量表说明: 存储器的前8个字中除了地址0 x00000014之外,全部被用作异常矢量地址。 这是因为在

59、早期的26位地址空间的ARM处理器中,曾使用地址0 x00000014来捕获落在地址空间之外的load和store存储器地址。这些陷阱称为“地址异常”,因为32位的ARM不会产生落在它的32位地址空间之外的地址,所以地址异常在当前的体系结构中没有作用,0 x00000014的矢量地址也就不再使用了。,2.6 ARM的异常,ARM中断的优先级,2.6 ARM异常,2.7 ARM系统调试接口,2.7.1 系统信号和调试工具状况 传统调试工具及调试方法 传统的工具和方法存在过分依赖芯片引脚的特点,不能在处理器高速运行下正常工作,并且占用系统资源、不能实时跟踪和设置硬件断点、价格过于昂贵等弊端。 So

60、C信号特点 目前高度集成的嵌入式SoC的普遍使用,有很多动作都从不在芯片的外部I/O上体现,一些内部模块的控制、存储器的总线信号也并不完全体现在芯片的外部I/O引脚上。 需要新的调试技术和工具 这种深度嵌入、软件越来越复杂的发展趋势给传统的调试工具带来了极大的挑战,调试经常是一个很大的难题,也给嵌入式开发工作带来了不便,这就需要更先进的调试技术和调试工具相配套。,2.7.2 JTAG接口及应用 1、JTAG(Joint Test Action Group 联合测试行动组)接口 定义了一种用于在线测试集成电路器件的边界扫描体系结构,简称为JTAG接口。 2、JTAG仿真器 也称为JTAG的在线调

61、试器ICD(In-Circuit Debugger),是通过ARM芯片的JTAG边界扫描口进行调试的设备。 JTAG仿真器连接比较方便,实现价格比较便宜,是通过现有的JTAG边界扫描口与ARM CPU核通信,实现了完全非插入式调试,连接比较方便,不使用片上资源,无需目标存储器,不占用目标系统的任何端口 基于JTAG仿真器的调试是目前ARM开发中采用最多的一种方式。大多数ARM设计采用了片上JTAG接口,并将它作为其测试和调试方法的重要组成。,2.7 ARM系统调试接口(2),3、JTAG仿真器的功能 JTAG仿真器与计算机的连接 是通过ARM处理器特有的JTAG边界扫描接口与目标机通信进行调试

62、,并可以通过并口或串口、USB口等与宿主机PC通信。 JTAG仿真器的功能 基于JTAG的ARM的内核调试通道,具有典型的ICE(In-Circuit Emulator)功能,通过配置,支持: 设置断点、观察点调试运行 察处理器状态、系统状态访问 下载固化程序,2.7 ARM系统调试接口(3),2.7.3 ETM接口 1、ETM(Embedded Trace Macrocell)嵌入式跟踪宏单元 是连接到ARM处理器内部,能够实现对执行代码的实时跟踪,并将跟踪信息压缩,通过一个窄带的名叫“跟踪端口” 输出。 2、ETM调试工具 利用外部跟踪端口分析仪(一个连接计算机和ARM跟踪引脚的设备),在

63、软件调试器的控制下捕获跟踪信息。 3、ETM接口的应用 通过跟踪宏单元ETM(Embedded Trace Macrocell)、外部跟踪端口分析仪、安装在计算机上的调试和分析软件,通过嵌入式实时跟踪,实时观察其操作过程,使得对应用程序的调试将更加全面、客观和真实。,2.7 ARM系统调试接口(4),新型调试技术、工具的意义 ARM开发者通过EmbeddedICE和ETM获得了传统意义的在线仿真器(ICE)工具能够提供的各种功能。 通过这些技术能够全面观察应用代码的实时行为,并且能够设置断点、检查并修改处理器寄存器和存储器单元,还总是能够严格地反链接到高级语言源代码,构成ARM完整的调试、实时

64、跟踪的完整解决方案并降低了开发成本。,2.7 ARM系统调试接口(5),习 题,1、ARM的含义是什么? 2、在ARM微处理器系列中,ARM9TDMI、ARM920T、ARM926EJ-S中后半部分各个字母是什么含义? 3、ARM7、ARM9各采用几级流水线?各采用什么样的存储器结构? 4 、ARM处理器支持的数据类型有哪些? 5、ARM使用哪些工作状态和工作模式? 6、ARM使用哪些工作模式?哪些是特权模式?哪些是异常模式? 7、哪个寄存器用做PC?哪个用做SP?哪个用做LR? 8、CPSR各位的意义是什么?,习 题,9、中断向量表位于存储器的什么位置? 10、IRQ或FIQ异常的返回指令是

65、什么? 11、什么类型的中断优先级最高? 12、什么指令可以放在中断向量表? 13、FIQ的什么特点使得它处理的速度比IRQ快? 14、什么是JTAG接口? 15、什么是ETM接口?,TAP信息,这些信号用来支持对JTAP系统增加更多的扫描链,关于边境扫描扩展信号在下面详述。 tapsm3:0指示TAP控制器所处的状态;ir3:0给出TAP指令寄存器的内容;screg3:0是TAP控制器当前所选择的扫描寄存器的地址;tck1和tck2形成一对非重迭时钟来控制扩展扫描链,指示何时在tdo有串行数据输出。 边界扫描扩展 ARM7TDMI单元包含全部的JTAG TAP 控制器,以支持EmbeddedICE功能,这个TAP控制器能够支持任何通过JTAG端口访问的片上扫描电路。因此提供了接口信号drivebs、ecapclkbs、icapclkbs、pclkbs、rstclkbs、sdinbs、sdoutbs、shclkbs、和shclk2bs,使任意的扫描路径都可加

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!