ARM体系结构PPT学习教案_第1页
ARM体系结构PPT学习教案_第2页
ARM体系结构PPT学习教案_第3页
ARM体系结构PPT学习教案_第4页
ARM体系结构PPT学习教案_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

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

文档简介

1、会计学1 ARM体系结构体系结构PPT课件课件 3.1.1 ARM体系结构的特点 ARM即Advanced RISC Machines的缩写。ARM公司1990年 成立,是设计公司。ARM是知识产权(IP)供应商,本身不生 产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色 的芯片。 ARM处理器的三大特点是: 耗电少、成本低、功能强; 16位/32位双指令集; 全球众多合作伙伴保证供应。 第1页/共126页 ARMARM处理器为处理器为RISCRISC芯片,其简单的结构使芯片,其简单的结构使ARMARM 内核非常小,这使得器件的功耗也非常低。它具内核非常小,这使得器件的功耗也非常低。它具

2、有经典有经典RISCRISC的特点:的特点: 大的、统一的寄存器文件;大的、统一的寄存器文件; 装载装载/ /保存结构,数据处理保存结构,数据处理 操作只针对寄存操作只针对寄存 器的内容,而不直接对存储器进行操作;器的内容,而不直接对存储器进行操作; 简单的寻址模式简单的寻址模式; ; 统一和固定长度的指令域,简化了指令的译统一和固定长度的指令域,简化了指令的译 码,便于指令流水线设计。码,便于指令流水线设计。 3.1.1 ARM体系结构的特点 第2页/共126页 3.1.1 ARM体系结构的特点 ARMARM体系结构的特点:体系结构的特点: RISCRISC型处理器结构型处理器结构 ARM/

3、ThumbARM/Thumb指令集指令集 多处理器状态模式多处理器状态模式 嵌入式在线仿真调试嵌入式在线仿真调试 灵活和方便的接口灵活和方便的接口 ARMARM体系结构具有协处理器接口体系结构具有协处理器接口 ARMARM处理器核还具有片上总线处理器核还具有片上总线AMBA(AHB/ASB/APB) AMBA(AHB/ASB/APB) 低电压低功耗的设计低电压低功耗的设计 第3页/共126页 3.1.1 ARM体系结构的特点 ARMARM目前的产品系列:目前的产品系列: ARM7ARM7 ARM9ARM9 ARM9EARM9E ARM10ARM10 ARM11ARM11 SecurCoreSe

4、curCore 通用处理器系列通用处理器系列 专门为安全设备设专门为安全设备设 计的处理器系列计的处理器系列 第4页/共126页 3.1.2 ARM处理器结构 由32位ALU、31个32位通用寄存器及6位状态寄存器、328位乘法器、3232位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器组成。 第5页/共126页 v ALU 由两个操作数锁存器、加法器、逻辑功能、结果及零检测逻辑构成。 ALU的逻辑结构 第6页/共126页 v ALU 每一时钟周期由双相时钟组成。ALU的最小数据通路周期由以下组成: 寄存器读时间; 移位器延迟; ALU延迟; 寄存器写建立时间; 双相时钟间非

5、重叠时间。 ALU的数据通路时序 第7页/共126页 v 桶形移位寄存器 为了减少移位的延迟时间,ARM采用了3232位的桶形移位寄存器。这样,可以使左移/右移n位、环移n位和算术右移n位等都可以一次完成。 第8页/共126页 v 高速乘法器 ARM为了提高运算速度,采用两位乘法的方法。两位 乘法根据乘数的2位来实现“加-移位”运算。 乘数An-1An:00-原部分积S右移2位; 01-原部分积S加被乘数后右移2位; 10-原部分积S加2倍被乘数后,右移2位; 11-原部分积S加3倍被乘数后,右移2位。 2倍被乘数可通过将被乘数左乘1位来实现; 3倍可看作4-1(11100-1),故先减1倍被

6、乘数,再加4倍被乘数来实现。 4倍被乘数的操作实际上是在该2位乘数11的高1位乘数加“1”,且此“1”可暂存在Cout进位触发器中。 第9页/共126页 v 高速乘法器 ARM的高速乘法器采用328位的结构,内部结构如下 : 第10页/共126页 v 浮点部件 浮点部件是作为选件为ARM体系结构选用,FPA10浮点加速器以协处理器方式与ARM相连,并通过协处理器指令的解释来执行。 第11页/共126页 v 控制器 ARM的控制器采用硬接线的可编程逻辑阵列PLA。输入端14根,输出40根,分散控制Load/Store多路寄存器、乘法器、协处理器以及地址、寄存器、ALU和移位器的控制。 第12页/

7、共126页 v 寄存器 ARM内含37个寄存器,其中: 31个通用32位寄存器 6个状态寄存器 第13页/共126页 3.1.2 ARM处理器结构 ARM的体系结构 ARM的流水线结构 ARM存储器结构 ARM I/O结构 ARM AMBA接口 ARM协处理器接口 ARM JTAG 调试接口 第14页/共126页 v 指令执行的阶段 计算机中的1条指令的执行可以分若干个阶段: 取指,从存储器中取出指令(fetch); 译码,指令译码(dec): 取操作数,假定操作数从寄存器组中取(reg); 执行运算(ALU); 存储器访问,操作数与存储器有关(mem); 结果写回寄存器(res)。 第15页

8、/共126页 v 指令执行的阶段 流水线的停顿相邻指令执行的数据相关性会产生指令执行的停顿。 第16页/共126页 v 指令执行的阶段 碰到分支类指令,则会使后面紧接该条指令的几条指令的执行都无效。 遇到分支指令 第17页/共126页 v ARM7 体系结构的3级流水线 ARM7体系结构采用了3级流水线,分为取指,译码和执 行。下图是单周期3级流水线的操作示意图。 第18页/共126页 v ARM7体系结构的3级流水线 由于取指的存储器访问和执行的数据通路占用都是不可同时共享的资源,因此对多周期指令来说,会产生流水线阻塞。如图3-12所示下图的影印框周期都是与存储器访问有关的。因此在流水线设计

9、中不允许重叠 。 第19页/共126页 v ARM9体系结构的5级流水线 5级流水线把存储器的取指与数据存取分开,增加了I-Cache和D-Cache以提高存储器存取的效率,增加了数据写回的专门通路和寄存器,以减少数据通路冲突。 这样,5级流水线分为:取指、指令译码、执行、数据缓存和写回。 第20页/共126页 3.1.2 ARM处理器结构 ARM的体系结构 ARM的流水线结构 ARM存储器结构 ARM I/O结构 ARM AMBA接口 ARM协处理器接口 ARM JTAG 调试接口 第21页/共126页 v ARM存储器结构 ARM架构的处理器,有的带有指令Cache和数据Cache,但片内

10、不带有片内RAM和片内ROM,系统所需的RAM和ROM须通过总线外接,如下图。 第22页/共126页 3.1.2 ARM处理器结构 ARM的体系结构 ARM的流水线结构 ARM存储器结构 ARM I/O结构 ARM AMBA接口 ARM协处理器接口 ARM JTAG 调试接口 第23页/共126页 v ARM I/O结构 ARM架构中的处理器核和处理器内核一般都没有I/O的部件 和模块,构成ARM架构的处理器中的I/O可通过AMBA总线来扩充 。 (1)存储器映像I/O ARM采用存储器映像I/O的方式,即把I/O端口地址作为特殊的存储器地址。不过I/O的输入/输出与真正的存储器读/写仍然有所

11、不同:存储器的单元重复读多次的值是一致的;而I/O设备的连续2次输入,其输入值可能会有所不同。 (2)直接存储器存取DMA 在I/O的数据流量比较大,中断处理比较频繁的场合,会明显影响系统的性能。因此,许多系统就采用了直接存储器存取DMA,这样,I/O的数据块传送至存储器的缓冲器区域就不需要处理器介入。而中断也仅仅出现在出现出错时或缓冲器满时。 (3)中断IRQ和快速中断FIQ 一般的ARM没有DMA的功能,为了提高I/O处理的能力,对于一些要求I/O处理速率比较高的事件,系统安排快速中断FIQ(Fast Interrupt),而对其余的I/O源仍安排一般中断IRQ。 第24页/共126页 3

12、.1.2 ARM处理器结构 ARM的体系结构 ARM的流水线结构 ARM存储器结构 ARM I/O结构 ARM AMBA接口 ARM协处理器接口 ARM JTAG 调试接口 第25页/共126页 v ARM协处理器接口 ARM为了便于片上系统SOC的设计,处理器内核尽可能精简,要增加系统的功能,可以通过协处理器来实现。在逻辑上,ARM可以扩展16个协处理器,每个协处理器可有16个寄存器。 协处理器号功 能 15系统控制 14调试控制器 138保留 74用户 30保留 例如,MMU和保护单元的系统控制都采用CP15协处理器; JTAG调试中的协处理器为CP14,即调试通信通道DCC(Debug

13、Communication Channel) 。 第26页/共126页 3.1.2 ARM处理器结构 ARM的体系结构 ARM的流水线结构 ARM存储器结构 ARM I/O结构 ARM AMBA接口 ARM协处理器接口 ARM JTAG 调试接口 第27页/共126页 v ARM AMBA接口 ARM处理器也可以通过先进微控制器总线架构AMBA(Advanced Microcontroller Bus Architecture)来扩展不同体系架构的宏单元及I/O部件。AMBA事实上已成为片上总线OCB(On Chip Bus)标准。 AMBA包括以下三类总线: 先进高性能总线AHB 先进系统总

14、线ASB 先进外围总线APB 第28页/共126页 3.1.2 ARM处理器结构 ARM的体系结构 ARM的流水线结构 ARM存储器结构 ARM I/O结构 ARM AMBA接口 ARM协处理器接口 ARM JTAG 调试接口 第29页/共126页 v JTAG调试接口的结构 由测试访问端口TAP(Test Access Port)控制器、旁路(Bypass)寄存器、指令寄存器、数据寄存器以及与JTAG接口兼容的ARM架构处理器组成。 第30页/共126页 v JTAG的控制寄存器 测试访问端口TAP控制器 对嵌入在ARM处理器核内部的测试功能电路进行访问控制,是一个同步状态机。通过测试模式选

15、择TMS和时钟信号TCK来控制其状态机。 指令寄存器 是串行移位寄存器,通过它可以串行输入执行各种操作的指令。 数据寄存器组 是一组串行移位寄存器。操作指令被串行装入由当前指令所选择的数据寄存器,随着操作的进行,测试结果被串行移出。其中: 器件ID寄存器:读出在芯片内固化的ID号。 旁路寄存器:1位移位寄存器,用1个时钟的延迟把TDI连至TDO,使测试者在同一电路板测试循环内访问其他器件。 边界扫描寄存器(扫描链):截取ARM处理器核与芯片引脚之间所有信号,组成专用的寄存器位。 第31页/共126页 v JTAG测试信号 TRST:测试复位输入信号,测试接口初始化。 TCK:测试时钟,在TCK

16、时钟的同步作用下,通过TDI和TDO 引脚串行移入/移出数据或指令,同时也为测试访问端口TAP 控制器的状态机提供时钟。 TMS:测试模式选择信号,控制测试接口状态机的操作。 TDI,测试数据输入线,其串行输入数据送至边界扫描寄 存器或指令寄存器(由TAP控制器的当前状态及已保存在指令 寄存器中的指令来控制)。 TDO:测试数据输出线,把从边界扫描链采样的数据传播 至串行测试电路中的下一个芯片。 第32页/共126页 v TAP状态机 测试访问端口TAP控制器是一个16状态的有限状态机,为JTAG提供控制逻辑。状态转移图如右图: 第33页/共126页 v JTAG接口控制指令 控制指令用于控制

17、JTAG接口各种操作,控制指令包括公用(Public)指令和私有(Private)指令。最基本的公用指令有: BYPASS:旁路片上系统逻辑指令,用于未被测试的芯片,即把TDI与TPO旁路(1个时钟延迟)。 EXTEST:片外电路测试指令,用于测试电路板上芯片之间的互连。 IDCODE:读芯片ID码指令,用于识别电路板上的芯片。此时,ID寄存器在TDI与TDO引脚之间,在capture DR状态中,芯片的ID复制至该寄存器,然后在shift DR状态中移出。 INTEST:片内测试指令,边界扫描寄存器位于TDI与TDO引脚之间,处理器核逻辑输入和输出状态被该寄存器捕获和控制。 第34页/共12

18、6页 3.1.3 ARM处理器内核 ARM体系结构的处理器内核有:ARM7TDMI、ARM8、 ARM9TDMI、ARM10TDMI及ARM11TDMI等。 第35页/共126页 v ARM7TDMI ARM7TDMI名字原义如下: ARM7 ARM6 32位整数核的3V兼容的版本; T 16位压缩指令集Thumb; D 在片调试(Debug)支持,允许处理器响应 调 试请求暂停; M 增强型乘法器(Multiplier),与以前处理 器 相比性能更高,产生全64位结果; I 嵌入式ICE硬件提供片上断点和调试点支持 。 第36页/共126页 v ARM7TDMI 体系结构图体系结构图 第37

19、页/共126页 v ARM7TDMI 引脚图引脚图 第38页/共126页 采用了3级流水线结构,指令执行分为取指、译码和执行等3个阶段; 运算器能实现32位整数运算; 采用了高效的乘法器,用328位乘法器实现3232位乘法(结果为64位)。 采用v4T版指令,支持16位Thumb指令集; 嵌入式ICE(Embedded-ICE)模块为ARM7TDMI提供了片内调试功能。同时通过JTAG接口可以很方便地用PC主机对ARM7TDMI进行开发和调试。 还提供了存储器接口、MMU接口、协处理器接口和调试接口,以及时钟与总线等控制信号。 v ARM7TDMI 主要特点主要特点 第39页/共126页 v

20、ARM7TDMI 主要性能指标主要性能指标 工艺:0.35m(新近采用0.25m); 金属布线:3层; 电压:3.3V(新近采用1.2V、0.9V); 管子数:74209只; 内核芯片面积:2.1mm2; 时钟:066MHz; MIPS:66; 功耗:87mW; MIPS/W:690(采用0.25m工艺,0.9V电压,可达1 200MIPS/W)。 第40页/共126页 v ARM9TDMI 主要性能指标主要性能指标 工艺:025m(0.18m); 金属布线:3层; 电压:2.5V(1.2V); 管子数:11 100只; 核芯片面积:2.1mm2; 时钟:0 200MHz; MIPS:220;

21、 功耗:150mW; MIPS/W:1 500。 第41页/共126页 v ARM9TDMI 流水线结构流水线结构 ARM9TDMI处理器内核采用了5级流水线。 第42页/共126页 v ARM9TDMI 主要特点主要特点 采用指令和数据分离访问的方式,即采用了指令Cache和数据Cache。 用专门硬件来直接完成ARM与Thumb指令的译码。 ARM9TDMI也有协处理器接口,允许在芯片增加浮点、数字信号处理或其他专用的协处理器。ARM9TDMI也提供相应的软核。ARM9E-S是具有DSP功能的能执行v5TE版ARM指令的ARM9TDMI软核,当然其芯片面积要增加30。 在ARM9流水线设计

22、中,增加专用流水段用于存储器访问和将结果写回到寄存器组。而且,寄存器读也移到译码段。这些改变通过减少在单一时钟周期内操作最大的逻辑数目,允许更高的时钟频率。 第43页/共126页 v ARM10TDMI ARM10TDMI在系统结构上主要采用增加时钟速率和减少每条指令平均时钟周期数CPI(Clock Per Instruction)两大措施,以同样的工艺,同样的芯片面积,在性能上2倍于ARM9TDMI。 ARM10TDMI采用提高时钟速率、6级流水线、分支预测逻辑、64位存储器和无阻塞的存/取逻辑等措施,使ARM10TDMI的性能得到很大提高,是目前高档ARM体系结构的处理器内核。 流水线结构

23、流水线结构 第44页/共126页 3.1.4 ARM处理器核 在最基本的ARM处理器内核基础上,可增加Cache、存 储器管理单元MMU、协处理器CP15、AMBA接口以及EMT宏单 元等,构成ARM处理器核。 以ARM7TDMI处理器内核为基础的有: ARM720T处理器核 ARM740T处理器核 以ARM9TDMI处理器内核为基础的有: ARM920T处理器核 ARM940T处理器核 第45页/共126页 v ARM720T ARM720T处理器核是在ARM7TDMI处理器内核基础上,增加8KB的数据与指令Cache,支持段式和页式存储的MMU、写缓冲器及AMBA接口构成。 第46页/共1

24、26页 v ARM740T ARM740T处理器核与ARM720T处理器核相比,结构基本 相同,但ARM740处理器核没有存储器管理单元MMU,不支 持虚拟存储器寻址;而是用存储器保护单元来提供基本保 护和Cache的控制。这为低价格低功耗的嵌入式应用提供 了合适的处理器核。由于在嵌入式应用中运行固定软件, 也不需要进行地址变换,所以可以省去地址变换后备缓冲 器TLB。 第47页/共126页 v ARM920T ARM920T处理器核是在ARM9TDMI处理器内核基础上,增加了分离式的指令Cache和数据Cache,并带有相应的存储器管理单元I-MMU和D-MMU、写缓冲器及AMBA接口等。

25、第48页/共126页 ARM920T处理器核特性: 工艺:0.25m; 金属布线:4层; 电压:2.5V; 管子数:2 500 000只; 核芯片面积:2325 mm2; 时钟:0200MHz; MIPS:220; 功耗:560mW; MIPS/W:390。 v ARM920T 特性特性 第49页/共126页 v ARM940T ARM940T处理器核与ARM740T处理器核相似,采用了 ARM9TDMI处理器内核,是ARM920T处理器核的简化。没有存 储器管理单元MMU,不支持虚拟存储器寻址,而是用有储器 保护单元来提供存储保护和Cache控制。ARM940T的存储保 护单元结构与ARM7

26、40T的基本相同。 第50页/共126页 主要内容 ARM体系结构概述 编程模型 ARM基本寻址方式 ARM指令集 ARM9TDMI内核 ARM9与ARM7的比较 ARM920T核 第51页/共126页 3.2.1 数据类型 ARM处理器支持下列数据类型: Byte 字节, 8位; Halfword 半字, 16位(半字必须与2字节边界对准) ; Word 字,32 位(字必须与4字节边界对准)。 第52页/共126页 3.2.2 处理器模式 ARM体系结构支持7种处理器模式。 处理器模 式说 明 用户usr正常程序执行模式 FIQfiq支持高速数据传送或通道处理 IRQirq用于通用中断处理

27、 管理svc操作系统保护模式 中止abt实现虚拟存储器和/或存储器保护 未定义und支持硬件协处理器的软件仿真 系统sys运行特权操作系统任务 第53页/共126页 v 处理器模式分类 处理器模式 用户模式 特权模式 异常模式 系统模式 FIQ IRQ 管理 中止 未定义 第54页/共126页 3.2.3 处理器工作状态 ARM处理器有两种工作状态: ARM: 32位,这种状态下执行字对准的ARM指令; Thumb:16位,这种状态下执行半字对准的Thumb指令。 ARM处理器在两种工作状态之间可以切换。ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。 (1)进入Thumb状

28、态。当操作数寄存器的状态位(位0)为1时,执行BX指令进入Thumb状态。如果处理器在Thumb状态进入异常,则当异常处理(IRQFIQUndefAbort和 SWI)返回时,自动转换到Thumb状态。 (2)进入ARM状态。当操作数寄存器的状态位(位0)为0时,执行BX指令进入ARM状态。处理器进行异常处理(IRQFIQResetUndef Abort和SWI)。在此情况下,把PC放入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM状态。 第55页/共126页 3.2.4 寄存器组织 ARM处理器总共有37个寄存器: 31个通用寄存器,包括程序计数器(PC)。这些寄存器是32位的

29、。 6个状态寄存器。这些寄存器也是32位的,但只使用了其中的12位。 第56页/共126页 v 通用寄存器 通用寄存器(R0-R15)可分成3类: 不分组寄存器R0-R7: 在所有的处理器模式下,它们每一个都访问一样的32位物理寄存器。 分组寄存器R8-R14: 它们每一个访问的物理寄存器取决于当前的处理器模式。每种处理器模式有专用的分组寄存器用于快速异常处理。寄存器R13通常用作堆栈指针,称作SP。 寄存器R14用作子程序链接寄存器,也称为链接寄存器LR。 寄存器R8-R12各有两组物理寄存器。一组为FIQ模式,另一组为除FIQ以外的其它模式。 寄存器R13、R14各有6个分组的物理寄存器。

30、1个用于用户模式和系统模式,而其它5个分别用于5种异常模式。 程序计数器R15: 在ARM状态,位1:0为,位31:2 保存PC 在Thumb状态,位0为0,位31:1保存 PC。 第57页/共126页 v 程序状态寄存器 在所有处理器模式下都可以访问当前程序状态寄存器CPSR(Current Program Status Register)。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR(Saved Program Status Register)。当异常出现时,SPSR用于保留CPSR的状态。 CPSR和SPSR格式

31、如下: 第58页/共126页 v 程序状态寄存器 条件码标志 N、Z、C、V(Negative、Zero、Carry、oVerflow)位称作条件码标志(Condition Code Flags)。通常条件码标志通过执行下述指令进行修改,即 比较指令(CMN、CMP、TEQ、TST); 一些算术运算、逻辑运算和传送指令,它们的目的寄存器不是R15。这些指令通过在指令助记符后加上字符“S” 进行标志设置。 条件码标志的含义 N:如果结果是带符号二进制补码,若结果为负数,则N=1;若结果为正数或0,则N=0。 Z:若指令的结果为0,则置1,否则置0。 C:- 加法,包括比较指令CMN。产生进位则C

32、置1;否则置0。 - 减法,包括比较指令CMP。产生借位则C置0;否则置1。 - 对于结合移位操作的非加/减法指令,C置为移出值的最后1位。 V:对于加法或减法指令,当发生带符号溢出时,V置1。 第59页/共126页 v 程序状态寄存器 控制位 程序状态寄存器PSR(Program Status Register)的最低8位I、F、T和M4:0用作控制位。 中断禁止位 I 置1则禁止IRQ中断; F 置1则禁止FIQ中断。 T位 T=0 指示ARM执行; T=1 指示Thumb执行。 模式位 M0、M1、M2、M3和M4是模式位。这些位决定处理器的工作模式。 M4:0模式可访问的寄存器 100

33、00 用户PC、R14R0、CPSR 10001 FIQPC、R14_fiqR8_fiq、R7R0、CPSR、SPSR_fiq 10010 IRQPC、R14_irq、R13_irq、R12R0、CPSR、SPSR_irq 10011 管理PC、R14_svc、R13_svc、R12R0、CPSR、SPSR_svc 10111 中止PC、R14_abt、R13_abt、R12R0、CPSR、SPSR_abt 11011 未定义PC、R14_und、R13_und、R12R0、CPSR、 SPSR_und 11111 系统PC、R14R0、CPSR 第60页/共126页 v Thumb状态的寄存

34、器集 Thumb 状态下的寄存器集是ARM状态下的寄存器集的子集。程序员可以直接访问8个 通用寄存器(R0R7)、PC、SP、LR和CPSR。每一种特权模式都有一组SP、LR和SPSR 。 第61页/共126页 v Thumb状态的寄存器集 Thumb状态寄存器与ARM状态寄存器的关系 注意:在Thumb 状态下,寄存器R8-R15(高寄存器)并不是标准寄存器集的一部分。 第62页/共126页 3.2.5 异常 异常由内部或外部源产生并引起处理器处理一个事件,例如外部中断或试图执行未定义指令都会引起异常。 ARM支持7种类型的异常。 异常类型模 式正常地址高向量地址 复位管理0 x000000

35、000 xFFFF0000 未定义指令 未定义0 x000000040 xFFFF0004 软件中断(SWI)管理0 x000000080 xFFFF0008 预取中止(取指令存储器中止)中止0 x0000000C0 xFFFF000C 数据中止(数据访问存储器中止) 中止 0 x000000100 xFFFF0010 IRQ(中断)IRQ0 x000000180 xFFFF0018 FIQ(快速中断)FIQ0 x0000001C0 xFFFF001C 当异常出现时,异常模式分组的R14和SPSR用于保存状态。 当处理异常返回时,把SPSR传送到CPSR,R14传送到PC。这可用两种方法自动完

36、成,即 使用带“S”的数据处理指令,将PC作为目的寄存器; 使用带恢复CPSR的多加载指令。 第63页/共126页 优先级异 常 1(最高)复位 2数据中止 3FIQ 4IRQ 5预取中止 6(最低) 未定义指令、SWI 3.2.5 异常 异常优先级 第64页/共126页 3.2.6 存储器和存储器映射I/O 地址空间 ARM体系结构使用232个字节的单一、线性地址空间。将字节地址做为无符号数看待,范围为0 232-1。 存储器格式 第65页/共126页 3.2.6 存储器和存储器映射I/O 非对准的存储器访问 存储器映射I/O 若在ARM态执行期间,将没有字对准的地址写到R15中,结果通常不

37、可预知或者地址的位1:0被忽略。 若在Thumb态执行期间,将没有半字对准的地址写到R15中,则地址的位0通常忽略。 当执行无效代码时,从R15读值的结果对ARM状态来说总是位1:0为0,对Thumb状态来说总是位0为0。 ARM系统完成I/O功能的标准方法是使用存储器映射I/O。从存储器映射I/O地址加载用于输入,向存储器映射I/O地址存储用于输出。 存储器映射I/O位置的行为通常不同于对一个正常存储器位置所期望的行为。例如,对于存储器映射I/O位置,第2次加载的返回值可以不同于第1次加载的返回值。 第66页/共126页 主要内容 ARM体系结构概述 编程模型 ARM基本寻址方式 ARM指令

38、集 ARM9TDMI内核 ARM9与ARM7的比较 ARM920T核 第67页/共126页 寻址方式是根据指令中给出的地址码字段来寻找真实操 作数地址的方式。ARM处理器支持的基本寻址方式有: 3.3 ARM基本寻址方式 寄存器寻址 立即寻址 寄存器移位寻址 寄存器间接寻址 变址寻址 多寄存器寻址 堆栈寻址 块复制寻址 相对寻址 第68页/共126页 v 寄存器寻址 所需要的值在寄存器中,指令中地址码给出的是寄存器编号,即寄存器的内容为操作数。例如指令: ADD R0,R1,R2 ; R0R1+R2 这条指令将2个寄存器(R1和R2)的内容相加,结果放入第3个寄存器R0中。必须注意写操作数的顺

39、序,第1个是结果寄存器,然后是第一操作数寄存器,最后是第二操作数寄存器。 第69页/共126页 v 立即寻址 立即寻址是一种特殊的寻址方式,指令中在操作码字段后面的地址码部分不是通常意义上的操作数地址,而是操作数本身。这样的数称为立即数。例如指令: ADD R3,R3,#1 ; R3R3+1 AND R8,R7,#0 xff ; R8R77:0 第2个源操作数为一个立即数,以“#”为前缀,十六进制值以在“#”后加“0 x”或“ R3R2+8R1 寄存器R1的内容逻辑左移3位,再与寄存器R2内容相加,结果放入R3中。 可以采取的移位操作如有: LSL:逻辑左移(Logical Shift Lef

40、t)。寄存器中字的低端空出的位补0。 0 LSR:逻辑右移(Logical Shift Right)。寄存器中字的高端空出的位补0。 0 第71页/共126页 可以采取的移位操作如有: v寄存器移位寻址 ASR:算术右移(Arithmetic Shift Right)。算术移位的对象是带符号数,若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。 RRX:扩展为1的循环右移(Rotate Right eXtended by 1 place)。操作数右移一位,空位(位31)用原C标志值填充。 ROR:循环右移(ROtate Right)。从字的最低端移出的位填入字

41、的高端空出的位。 C 第72页/共126页 v寄存器间接寻址 指令中的地址码给出某一通用寄存器的编号。在被指定的寄存器中存放操作数的有效地址,而操作数则存放在存储单元中,即寄存器为地址指针。例如指令: LDR R0,R1 ; R0R1 STR R0,R1 ; R0R1 寄存器间接寻址使用一个寄存器(基址寄存器)的值作为存储器的地址。第1条指令将寄存器R1指向的地址单元的内容加载到寄存器R0中。第2条指令将寄存器R0存入寄存器R1指向的地址单元。 第73页/共126页 v 变址寻址 变址寻址就是将基址寄存器的内容与指令中给出的位移量相加,形成操作数有效地址。变址寻址用于访问基址附近的存储单元,包

42、括基址加偏移和基址加索引寻址。寄存器间接寻址是偏移量为0的基址加偏移寻址。 基址加偏移寻址 基址加索引寻址 前索引寻址方式:基址需加(或减)最大4KB的偏移来计算访问的地址。 例如:LDR R0,R1,#4 ; R0R1+4 后索引寻址方式:基址不带偏移作为传送的地址,传送后自动索引。 例如:LDR R0,R1,#4 ; R0R1 ; R1R1+4 指令指定一个基址寄存器,再指定另一个寄存器(索引),其值作为位移加到基址上形成存储器地址。 例如:LDR R0,R1,R2 ; R0R1+R2 第74页/共126页 v 多寄存器寻址 一次可以传送几个寄存器的值。允许一条指令传送16个寄存器的任何子

43、集(或所有16个寄存器)。例如指令: LDMIA R1,R0,R2,R5 ; R0R1 ; R2R1+4 ; R5R1+8 由于传送的数据项总是32位的字,基址R1应该字对准。这条指令将R1指向的连续存储单元的内容送到寄存器R0、R2和R5。 第75页/共126页 v 堆栈寻址 堆栈是按“先进后出”(FILO)的特定顺序进行存取的存储区。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储器区域(堆栈)。栈指针所指定的存储单元就是堆栈的栈顶。 根据增长方向,堆栈可分为: 向上生长:即向高地址方向生长,称为递增堆栈(Ascending Stack)。 向下生长:即向低地址方向生长,称

44、为递减堆栈(Descending Stack)。 根据栈指针的指向位置,堆栈可分为: 满堆栈:堆栈指针指向最后压入堆栈的有效数据项 空堆栈:堆栈指针指向下一个数据项放入的空位置 , 第76页/共126页 这样就有4种类型的堆栈表示递增和递减的满和空堆栈的各种组合。ARM处理器支持所有这4种类型的堆栈。 满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。 空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空位置。 满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。 空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向

45、堆栈下的第一个空位置。 v 堆栈寻址 第77页/共126页 v 块复制寻址 ARM支持两种不同角度的寻址机制:堆栈角度和块复制角度,两者都映射到相同的基本指令。堆栈和块拷贝角度的多寄存器加载和存储指令映射如下图。 第78页/共126页 块复制角度的寻址举例,执行指令之前的基址寄存器值是R9,自动寻址之后的基址寄存器是R9。 v 块复制寻址 第79页/共126页 v 相对寻址 相对寻址是变址寻址的一种变通,由程序计数器PC提供基地址。指令中的地址码字段作为位移量,两者相加后得到操作数的有效地址。位移量指出的是操作数与现行指令之间的相对位置。例如指令: BL SUBR ; 转移到SUBR ; 返回

46、到此 SUBR ;子程序入口地址 MOV PC,R14 ;返回 第80页/共126页 主要内容 ARM体系结构概述 编程模型 ARM基本寻址方式 ARM指令集 ARM9TDMI内核 ARM9与ARM7的比较 ARM920T核 第81页/共126页 3.4.1 条件执行 几乎所有的ARM指令均可包含一个可选的条件码,句法说明中以cond表示,只有在CPSR中的条件码标志满足指定的条件时,带条件码的指令才能执行。并使用后缀“S”来区分是否根据执行结果修改条件码标志。 操作码31:28助记符后缀标 志含 义 0000EQZ置位相等 0001NEZ清零不等 0010CS/HSC置位大于或等于(无符号=

47、 ) 0011CC/LOC清零小于(无符号) 1001LSC清零或Z置位小于或等于(无符号= 1011LTN和V不同带符号 1101LEZ置位或N和V不同带符号= 1110AL任何总是(通常省略) 第82页/共126页 3.4.2 指令分类说明 32位ARM指令集由13种基本指令类型组成,分成4大类: 3种类型的存储器访问指令:控制存储器和寄存器之间 的数据传送。一种类型用于优化的灵活寻址;另一种类型 用于快速上下文切换;第三种类型用于交换数据。 3种类型的数据处理指令:使用片内ALU、桶形移位器和 乘法器针对31个寄存器完成高速数据处理操作。 4种类型的分支指令:控制程序执行流程、指令优先级

48、 以及ARM代码和Thumb代码的切换。 3种类型的协处理器指令:专用于控制外部协处理器。 这些指令以开放和统一的方式扩展了指令集的片外功能。 第83页/共126页 v ARM存储器访问指令 (1)LDR和STR字和无符号字节 字节加载是用“0”扩展到32位。LDR和STR都有如下4种可能的形式: 零偏移:Rn的值作为传送数据的地址。 句法: op cond B T Rd, Rn 前索引偏移:在数据传送之前,将偏移量加到Rn中。其结果作为传送数据的存储器地址。若使用后缀“!”,则结果写回到Rn中,且Rn不允许是R15。 句法: op cond B Rd, Rn, Flexoffset ! 程序

49、相对偏移:程序相对偏移是前索引形式的另一种版本。汇编器由PC计算偏移量,并将PC作为Rn生成前索引指令。不能使用后缀“!”。 句法:op cond B Rd, label 后索引偏移:Rn的值用做传送数据的存储器地址。在数据传送后,将偏移量加到Rn中。结果写回到Rn。Rn不允许是R15。 句法:op cond B T Rd, Rn, Flexoffset 第84页/共126页 v ARM存储器访问指令 (1)LDR和STR字和无符号字节 例 子 LDRR8,R10 ; R8R10 LDRNE R2,R5,#960! ;(有条件地)R2R5+960,R5R5+960 STRR2,R9,#cons

50、ta-struc ;consta-struc是常量的表达式,该 ;常量值的范围为0-4095 STRB R0,R3, -R8,ASR #2 ;R0R3-R8/4,存储R0的最低有效 ;字节,R3和R8不变 STR R5,R7, #-8 ;R5R7,R7R7-8 LDR R0,localdata ;加载一个字,该字位于标号lacaldata所在地址 第85页/共126页 (2)LDR和STR半字和带符号字节 v ARM存储器访问指令 这些指令有4种可能的形式:零偏移、前索引偏移、程序相对偏移和后索引偏移。以同样的顺序,4种形式的句法为 op cond type Rd, Rn op cond ty

51、pe Rd, Rn, offset ! op cond type Rd, label op cond type Rd, Rn, offset 其中:type 必须是以下所列的其中之一: SH 对带符号半字(仅LDR); H 对无符号半字; SB 对带符号字节(仅LDR)。 label 程序相对偏移表达式。 label必须是在当前指令的255字节范围内。 offset 加在Rn上的偏移量。 第86页/共126页 v ARM存储器访问指令 (2)LDR和STR半字和带符号字节 例 子 LDREQSH R11,R6 ;(有条件地)R11R6,加载16位半字, ;带符号扩展到32位 LDRH R1,R

52、0,#22 ;R1R0+22,加载16位半字,零扩展到32位 STRH R4,R0,R1! ;R4R0+R1,存储最低的有效半字到R0+R1 ;地址开始的两个字节,地址写回到R0 LDRSB R6,constf ;加载位于标号constf地址中的字节,带符号扩展 第87页/共126页 (3)LDR和STR双字 v ARM存储器访问指令 加载两个相邻的寄存器和存储两个相邻的寄存器,64位双字。这些指令有4种可能的形式:零偏移、前索引偏移、程序相对偏移、后索引偏移。以同样的顺序,4种形式的句法为 op cond D Rd, Rn op cond D Rd, Rn, offset ! op cond

53、 D Rd, label op cond D Rd, Rn, offset 例 子 LDRD R6, R11 ;R6R11,R7 R11+4, LDRMID R4, R7, R2 STRD R4, R9, #24 ; R4R9+24, R5R9+28, STRD R0, R9, -R2! LDREQD R8, abc4 第88页/共126页 (4)LDM和STM v ARM存储器访问指令 加载多个寄存器(LDM)和存储多个寄存器(STM)。可以传送R0-R15的任何组合。 句法: op cond mode Rn!,reglist 其中:mode 是IA/IB/DA/DB/FD/ED/FA/EA

54、中的一个. Rn 基址寄存器,装有传送数据的初始地址。Rn不允许是R15。 ! 可选后缀。若有“!”,则最后的地址写回到Rn。 reglist 加载或存储的寄存器列表,包含在括号中。 可选后缀,不允许在用户模式或系统模式下使用。 若op是LDM且reglist中包含PC(R15),那么除了正常的多寄存器传送外,将SPSR也拷贝到CPSR中。这用于从异常处理返回,仅在异常模式下使用。 数据传入或传出的是用户模式的寄存器,而不是当前模式的寄存器。 第89页/共126页 v ARM存储器访问指令 (4)LDM和STM 例 子 LDMIA R8,R0,R2,R9 ;R0R8, R2R8+4, R9R8

55、+8 STMDB R1!,R3-R6,R11,R12 ; R1-4R3-R6, R1-8 R11, R1-12 R12 ; 地址写回R1 STMFD R13!,R0,R4-R7,LR ;寄存器进栈 LDMFD R13!,R0,R4-R7,PC ;寄存器出栈,从子程序返回 第90页/共126页 (5)PLD v ARM存储器访问指令 Cache预加载。使用PLD(PreLoaD)提示存储系统从后面几条新指令所指定的存储器地址加载。存储系统可使用这种方法加速以后的存储器访问。 句法: PLD RnFlexoffset 例 子 PLD R2 PLD R15,#280 PLD R9,#-2481 PL

56、D R0,#av*4 ;av*4必须在汇编时求值,范围为-4095-4095 PLD R0,R2 PLD R5,R8,LSL #2 第91页/共126页 (6)SWP v ARM存储器访问指令 在寄存器和存储器之间进行数据交换。使用SWP来实现信号量。 句法: SWP cond B Rd, Rm, Rn 其中:B 可选后缀。若有B,则交换字节;否则,交换32位字。 Rd ARM寄存器。数据从存储器加载到Rd。 Rm ARM寄存器。Rm的内容存储到存储器。Rm可以与Rd相同。 在这种情况下,寄存器的内容与存储器的内容进行交换。 Rn ARM寄存器。Rn的内容指定要进行数据交换的存储器的 地址。R

57、n必须与Rd和Rm不同。 第92页/共126页 v ARM数据处理指令 数据处理类指令格式: S Rd, Rn, opcode:操作码,如ADD、SUB、ORR cond:条件码 S:本指令是否更新CPSR中的状态标志位 Rd:目标寄存器 Rn:第一个源寄存器 shifter_operand:复合的源操作数,其格式: 立即数ADD R1,R2,#0 x35 寄存器SUBS R3,R2,R1 寄存器移位ADDEQS R9,R5,R5, LSL #3 SUB R3,R2, R1,ROR R7 第93页/共126页 v ARM数据处理指令 算术/逻辑运算指令 第94页/共126页 v ARM数据处理

58、指令 乘法指令 MUL指令将Rm和Rs中的值相乘,并将最低有效的32位结果放到Rd中。 句法:MUL cond S Rd,Rm,Rs MLA指令将Rm和Rs中值相乘,再加上Rn的值,并将最低有效的32位结果放到Rd中。 句法:MLA cond S Rd,Rm,Rs,Rn UMULL指令将Rm和Rs中的值解释为无符号整数。该指令将这两个整数相乘,并将结果 的最低有效32位放在RdLo中,最高有效32位放在RdHi中。 UMLAL指令将Rm和Rs中的值解释为无符号整数。该指令将这两个整数相乘,并将64位 结果加到RdHi和RdLo中的64位无符号整数上。 SMULL指令将Rm和Rs中的值解释为带符

59、号的补码整数。该指令将这两个整数相乘,并 将结果的最低有效32位放在RdLo中,将最高有效32位放在RdHi中。 SMLAL指令将Rm和Rs中的值解释为带符号的补码整数。该指令将这两个整数相乘,并 将64位结果加到RdHi和RdLo中的64位带符号补码整数上。 句法:op cond S RdLo,RdHi,Rm,Rs 前导零计数 CLZ指令对Rm中值的前导零的个数进行计数,结果放到Rd中。若 源寄存器全为0,则结果为32。若位31为1,则结果为0 。 句法:CLZ cond Rd, Rm 第95页/共126页 v ARM转移指令 (1)B和BL B(Branch)指令引起处理器转移到label

60、。 句法: B cond label BL(Branch and Link)指令将下一条指令的地址拷贝到R14(LR,链接寄存器),并引起转移到label。 句法: BL cond label (2)BX :引起处理器转移到Rm中的地址。若Rm的位0为1,则指令集变换到Thumb。 句法: BX cond Rm (3)BLX:带链接转移并可选地交换指令集。 句法: BLX cond Rm BLX label 第96页/共126页 v ARM协处理器指令 (1)CDP,协处理器数据操作指令 句法:CDP cond coproc,opcode1,CRd,CRn,CRm,opcode2 其中:cop

温馨提示

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

评论

0/150

提交评论