欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《嵌入式系统技术》ppt课件第3章ARM体系结构.ppt

    • 资源ID:3965492       资源大小:3.10MB        全文页数:193页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《嵌入式系统技术》ppt课件第3章ARM体系结构.ppt

    第3章 ARM体系结构,主要内容,1,3,2,4,ARM体系结构概述,编程模型,ARM基本寻址方式,ARM指令集,5,ARM9TDMI内核,6,ARM9与ARM7的比较,ARM920T核,7,3.1.1 ARM体系结构的特点,ARM即Advanced RISC Machines的缩写。ARM公司1990年成立,是设计公司。ARM是知识产权(IP)供应商,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。ARM处理器的3大特点是:耗电少、成本低、功能强;16位/32位双指令集;全球众多合作伙伴保证供应。,ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点:,3.1.1 ARM体系结构的特点,3.1.1 ARM体系结构的特点,ARM体系结构的特点:,RISC型处理器结构ARM/Thumb指令集多处理器状态模式嵌入式在线仿真调试灵活和方便的接口ARM体系结构具有协处理器接口 ARM处理器核还具有片上总线AMBA(AHB/ASB/APB)低电压低功耗的设计,3.1.1 ARM体系结构的特点,ARM目前的产品系列:,ARM7ARM9ARM9EARM10SecurCore,通用处理器系列,专门为安全设备设计的处理器系列,3.1.2 ARM处理器结构,1,3,2,4,ARM的体系结构,ARM的流水线结构,ARM存储器结构,ARM I/O结构,5,ARM AMBA接口,6,ARM协处理器接口,ARM JTAG 调试接口,7,1.ARM的体系机构,由32位ALU、31个32位通用寄存器及6位状态寄存器、328位乘法器、3232位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器组成。,ALU,由两个操作数锁存器、加法器、逻辑功能、结果及零检测逻辑构成。,ALU的逻辑结构,ALU,每一时钟周期由双相时钟组成。ALU的最小数据通路周期由以下组成:寄存器读时间;移位器延迟;ALU延迟;寄存器写建立时间;双相时钟间非重叠时间。,ALU的数据通路时序,桶形移位寄存器,为了减少移位的延迟时间,ARM采用了3232位的桶形移位寄存器。这样,可以使左移/右移n位、环移n位和算术右移n位等都可以一次完成。,高速乘法器,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倍被乘数,再加4倍被乘数来实现。4倍被乘数的操作实际上是在该2位乘数11的高1位乘数加“1”,且此“1”可暂存在Cout进位触发器中。,高速乘法器,ARM的高速乘法器采用328位的结构,内部结构如下:,浮点部件,浮点部件是作为选件为ARM体系结构选用,FPA10浮点加速器以协处理器方式与ARM相连,并通过协处理器指令的解释来执行。,控制器,ARM的控制器采用硬接线的可编程逻辑阵列PLA。输入端14根,输出40根,分散控制Load/Store多路、乘法器、协处理器以及地址、寄存器、ALU和移位器的控制。,寄存器,ARM内含37个寄存器,其中:31个通用32位寄存器6个状态寄存器,3.1.2 ARM处理器结构,1,3,2,4,ARM的体系结构,ARM的流水线结构,ARM存储器结构,ARM I/O结构,5,ARM AMBA接口,6,ARM协处理器接口,ARM JTAG 调试接口,7,指令执行的阶段,计算机中的1条指令的执行可以分若干个阶段:取指,从存储器中取出指令(fetch);译码,指令译码(dec):取操作数,假定操作数从寄存器组中取(reg);执行运算(ALU);存储器访问,操作数与存储器有关(mem);结果写回寄存器(res)。,指令执行的阶段,流水线的停顿,相邻指令执行的数据相关性会产生指令执行的停顿。,指令执行的阶段,碰到分支类指令,则会使后面紧接该条指令的几条指令的执行都无效。,遇到分支指令,ARM体系结构的3级流水线,ARM7体系结构采用了3级流水线,分为取指,译码和执行。下图是单周期3级流水线的操作示意图。,ARM体系结构的3级流水线,由于取指的存储器访问和执行的数据通路占用都是不可同时共享的资源,因此对多周期指令来说,会产生流水线阻塞。如图3-12所示下图的影印框周期都是与存储器访问有关的。因此在流水线设计中不允许重叠。,ARM体系结构的5级流水线,5级流水线把存储器的取指与数据存取分开,增加了I-Cache和D-Cache以提高存储器存取的效率,增加了数据写回的专门通路和寄存器,以减少数据通路冲突。这样,5级流水线分为:取指、指令译码、执行、数据缓存和写回。,3.1.2 ARM处理器结构,1,3,2,4,ARM的体系结构,ARM的流水线结构,ARM存储器结构,ARM I/O结构,5,ARM AMBA接口,6,ARM协处理器接口,ARM JTAG 调试接口,7,ARM存储器结构,ARM架构的处理器,有的带有指令Cache和数据Cache,但片内不带有片内RAM和片内ROM,系统所需的RAM和ROM须通过总线外接,如下图。,3.1.2 ARM处理器结构,1,3,2,4,ARM的体系结构,ARM的流水线结构,ARM存储器结构,ARM I/O结构,5,ARM AMBA接口,6,ARM协处理器接口,ARM JTAG 调试接口,7,ARM I/O结构,ARM架构中的处理器核和处理器内核一般都没有I/O的部件和模块,构成ARM架构的处理器中的I/O可通过AMBA总线来扩充。,(1)存储器映像I/O ARM采用存储器映像I/O的方式,即把I/O端口地址作为特殊的存储器地址。不过I/O的输入/输出与真正的存储器读/写仍然有所不同:存储器的单元重复读多次的值是一致的;而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。,3.1.2 ARM处理器结构,1,3,2,4,ARM的体系结构,ARM的流水线结构,ARM存储器结构,ARM I/O结构,5,ARM AMBA接口,6,ARM协处理器接口,ARM JTAG 调试接口,7,ARM协处理器接口,ARM为了便于片上系统SOC的设计,处理器内核尽可能精简,要增加系统的功能,可以通过协处理器来实现。在逻辑上,ARM可以扩展16个协处理器,每个协处理器可有16个寄存器。,例如,MMU和保护单元的系统控制都采用CP15协处理器;JTAG调试中的协处理器为CP14,即调试通信通道DCC(Debug Communication Channel)。,3.1.2 ARM处理器结构,1,3,2,4,ARM的体系结构,ARM的流水线结构,ARM存储器结构,ARM I/O结构,5,ARM AMBA接口,6,ARM协处理器接口,ARM JTAG 调试接口,7,ARM AMBA接口,ARM处理器也可以通过先进微控制器总线架构AMBA(Advanced Microcontroller Bus Architecture)来扩展不同体系架构的宏单元及I/O部件。AMBA事实上已成为片上总线OCB(On Chip Bus)标准。,AMBA包括以下三类总线:先进高性能总线AHB先进系统总线ASB先进外围总线APB,3.1.2 ARM处理器结构,1,3,2,4,ARM的体系结构,ARM的流水线结构,ARM存储器结构,ARM I/O结构,5,ARM AMBA接口,6,ARM协处理器接口,ARM JTAG 调试接口,7,JTAG调试接口的结构,由测试访问端口TAP(Test Access Port)控制器、旁路(Bypass)寄存器、指令寄存器、数据寄存器以及与JTAG接口兼容的ARM架构处理器组成。,JTAG的控制寄存器,测试访问端口TAP控制器 对嵌入在ARM处理器核内部的测试功能电路进行访问控制,是一个同步状态机。通过测试模式选择TMS和时钟信号TCK来控制其状态机。指令寄存器 是串行移位寄存器,通过它可以串行输入执行各种操作的指令。数据寄存器组 是一组串行移位寄存器。操作指令被串行装入由当前指令所选择的数据寄存器,随着操作的进行,测试结果被串行移出。其中:器件ID寄存器:读出在芯片内固化的ID号。旁路寄存器:1位移位寄存器,用1个时钟的延迟把TDI连至TDO,使测试者在同一电路板测试循环内访问其他器件。边界扫描寄存器(扫描链):截取ARM处理器核与芯片引脚之间所有信号,组成专用的寄存器位。,JTAG测试信号,TRST:测试复位输入信号,测试接口初始化。TCK:测试时钟,在TCK时钟的同步作用下,通过TDI和TDO引脚串行移入/移出数据或指令,同时也为测试访问端口TAP控制器的状态机提供时钟。TMS:测试模式选择信号,控制测试接口状态机的操作。TDI,测试数据输入线,其串行输入数据送至边界扫描寄存器或指令寄存器(由TAP控制器的当前状态及已保存在指令寄存器中的指令来控制)。TDO:测试数据输出线,把从边界扫描链采样的数据传播至串行测试电路中的下一个芯片。,TAP状态机,测试访问端口TAP控制器是一个16状态的有限状态机,为JTAG提供控制逻辑。状态转移图如右图:,JTAG接口控制指令,控制指令用于控制JTAG接口各种操作,控制指令包括公用(Public)指令和私有(Private)指令。最基本的公用指令有:BYPASS:旁路片上系统逻辑指令,用于未被测试的芯片,即把TDI与TPO旁路(1个时钟延迟)。EXTEST:片外电路测试指令,用于测试电路板上芯片之间的互连。IDCODE:读芯片ID码指令,用于识别电路板上的芯片。此时,ID寄存器在TDI与TDO引脚之间,在capture DR状态中,芯片的ID复制至该寄存器,然后在shift DR状态中移出。INTEST:片内测试指令,边界扫描寄存器位于TDI与TDO引脚之间,处理器核逻辑输入和输出状态被该寄存器捕获和控制。,3.1.3 ARM处理器内核,ARM体系结构的处理器内核有:ARM7TDMI、ARM8、ARM9TDMI、ARM10TDMI及ARM11TDMI等。,ARM7TDMI,ARM7TDMI名字原义如下:ARM7 ARM6 32位整数核的3V兼容的版本;T 16位压缩指令集Thumb;D 在片调试(Debug)支持,允许处理器响应调 试请求暂停;M 增强型乘法器(Multiplier),与以前处理器 相比性能更高,产生全64位结果;I 嵌入式ICE硬件提供片上断点和调试点支持。,ARM7TDMI,体系结构图,ARM7TDMI,引脚图,采用了3级流水线结构,指令执行分为取指、译码和执行等3个阶段;运算器能实现32位整数运算;采用了高效的乘法器,用328位乘法器实现3232位乘法(结果为64位)。采用v4T版指令,支持16位Thumb指令集;嵌入式ICE(Embedded-ICE)模块为ARM7TDMI提供了片内调试功能。同时通过JTAG接口可以很方便地用PC主机对ARM7TDMI进行开发和调试。还提供了存储器接口、MMU接口、协处理器接口和调试接口,以及时钟与总线等控制信号。,ARM7TDMI,主要特点,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)。,ARM9TDMI,主要性能指标,工艺:025m(0.18m);金属布线:3层;电压:2.5V(1.2V);管子数:11 100只;核芯片面积:2.1mm2;时钟:0200MHz;MIPS:220;功耗:150mW;MIPS/W:1 500。,ARM9TDMI,流水线结构,ARM9TDMI处理器内核采用了5级流水线。,ARM9TDMI,主要特点,采用指令和数据分离访问的方式,即采用了指令Cache和数据Cache。用专门硬件来直接完成ARM与Thumb指令的译码。ARM9TDMI也有协处理器接口,允许在芯片增加浮点、数字信号处理或其他专用的协处理器。ARM9TDMI也提供相应的软核。ARM9E-S是具有DSP功能的能执行v5TE版ARM指令的ARM9TDMI软核,当然其芯片面积要增加30。在ARM9流水线设计中,增加专用流水段用于存储器访问和将结果写回到寄存器组。而且,寄存器读也移到译码段。这些改变通过减少在单一时钟周期内操作最大的逻辑数目,允许更高的时钟频率。,ARM10TDMI,ARM10TDMI在系统结构上主要采用增加时钟速率和减少每条指令平均时钟周期数CPI(Clock Per Instruction)两大措施,以同样的工艺,同样的芯片面积,在性能上2倍于ARM9TDMI。,ARM10TDMI采用提高时钟速率、6级流水线、分支预测逻辑、64位存储器和无阻塞的存/取逻辑等措施,使ARM10TDMI的性能得到很大提高,是目前高档ARM体系结构的处理器内核。,流水线结构,3.1.4 ARM处理器核,在最基本的ARM处理器内核基础上,可增加Cache、存储器管理单元MMU、协处理器CP15、AMBA接口以及EMT宏单元等,构成ARM处理器核。以ARM7TDMI处理器内核为基础的有:ARM720T处理器核 ARM740T处理器核 以ARM9TDMI处理器内核为基础的有:ARM920T处理器核 ARM940T处理器核,ARM720T,ARM720T处理器核是在ARM7TDMI处理器内核基础上,增加8KB的数据与指令Cache,支持段式和页式存储的MMU、写缓冲器及AMBA接口构成。,ARM740T,ARM740T处理器核与ARM720T处理器核相比,结构基本相同,但ARM740处理器核没有存储器管理单元MMU,不支持虚拟存储器寻址;而是用存储器保护单元来提供基本保护和Cache的控制。这为低价格低功耗的嵌入式应用提供了合适的处理器核。由于在嵌入式应用中运行固定软件,也不需要进行地址变换,所以可以省去地址变换后备缓冲器TLB。,ARM920T,ARM920T处理器核是在ARM9TDMI处理器内核基础上,增加了分离式的指令Cache和数据Cache,并带有相应的存储器管理单元I-MMU和D-MMU、写缓冲器及AMBA接口等。,ARM920T处理器核特性:工艺:0.25m;金属布线:4层;电压:2.5V;管子数:2 500 000只;核芯片面积:2325 mm2;时钟:0200MHz;MIPS:220;功耗:560mW;MIPS/W:390。,ARM920T,特性,ARM940T,ARM940T处理器核与ARM740T处理器核相似,采用了ARM9TDMI处理器内核,是ARM920T处理器核的简化。没有存储器管理单元MMU,不支持虚拟存储器寻址,而是用有储器保护单元来提供存储保护和Cache控制。ARM940T的存储保护单元结构与ARM740T的基本相同。,主要内容,1,3,2,4,ARM体系结构概述,编程模型,ARM基本寻址方式,ARM指令集,5,ARM9TDMI内核,6,ARM9与ARM7的比较,ARM920T核,7,3.2.1 数据类型,ARM处理器支持下列数据类型:Byte 字节,8位;Halfword 半字,16位(半字必须与2字节边界对准);Word 字,32 位(字必须与4字节边界对准)。,3.2.2 处理器模式,ARM体系结构支持7种处理器模式。,处理器模式分类,处理器模式,用户模式,特权模式,异常模式,系统模式,FIQIRQ管理中止未定义,3.2.3 处理器工作状态,ARM处理器有两种工作状态:ARM:32位,这种状态下执行字对准的ARM指令;Thumb:16位,这种状态下执行半字对准的Thumb指令。,ARM处理器在两种工作状态之间可以切换。ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。(1)进入Thumb状态。当操作数寄存器的状态位(位0)为1时,执行BX指令进入Thumb状态。如果处理器在Thumb状态进入异常,则当异常处理(IRQFIQUndefAbort和 SWI)返回时,自动转换到Thumb状态。(2)进入ARM状态。当操作数寄存器的状态位(位0)为0时,执行BX指令进入ARM状态。处理器进行异常处理(IRQFIQResetUndef Abort和SWI)。在此情况下,把PC放入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM状态。,3.2.4 寄存器组织,ARM处理器总共有37个寄存器:31个通用寄存器,包括程序计数器(PC)。这些寄存器是32位的。6个状态寄存器。这些寄存器也是32位的,但只使用了其中的12位。,通用寄存器,通用寄存器(R0R15)可分成3类:不分组寄存器R0R7:在所有的处理器模式下,它们每一个都访问一样的32位物理寄存器。分组寄存器R8R14:它们每一个访问的物理寄存器取决于当前的处理器模式。每种处理器模式有专用的分组寄存器用于快速异常处理。寄存器R13通常用作堆栈指针,称作SP。寄存器R14用作子程序链接寄存器,也称为链接寄存器LR。寄存器R8R12各有两组物理寄存器。一组为FIQ模式,另一组为除FIQ以外的其它模式。寄存器R13、R14各有6个分组的物理寄存器。1个用于用户模式和系统模式,而其它5个分别用于5种异常模式。程序计数器R15:在ARM状态,位1:0为,位31:2 保存PC在Thumb状态,位0为0,位31:1保存 PC。,程序状态寄存器,在所有处理器模式下都可以访问当前程序状态寄存器CPSR(Current Program Status Register)。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR(Saved Program Status Register)。当异常出现时,SPSR用于保留CPSR的状态。CPSR和SPSR格式如下:,程序状态寄存器,条件码标志,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置1;否则置0。-减法,包括比较指令CMP。产生借位则C置0;否则置1。-对于结合移位操作的非加/减法指令,C置为移出值的最后1位。V:对于加法或减法指令,当发生带符号溢出时,V置1。,程序状态寄存器,控制位,程序状态寄存器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是模式位。这些位决定处理器的工作模式。,Thumb状态的寄存器集,Thumb 状态下的寄存器集是ARM状态下的寄存器集的子集。程序员可以直接访问8个通用寄存器(R0R7)、PC、SP、LR和CPSR。每一种特权模式都有一组SP、LR和SPSR。,Thumb状态的寄存器集,Thumb状态寄存器与ARM状态寄存器的关系,注意:在Thumb 状态下,寄存器R8-R15(高寄存器)并不是标准寄存器集的一部分。,3.2.5 异常,异常由内部或外部源产生并引起处理器处理一个事件,例如外部中断或试图执行未定义指令都会引起异常。ARM支持7种类型的异常。,当异常出现时,异常模式分组的R14和SPSR用于保存状态。当处理异常返回时,把SPSR传送到CPSR,R14传送到PC。这可用两种方法自动完成,即使用带“S”的数据处理指令,将PC作为目的寄存器;使用带恢复CPSR的多加载指令。,3.2.5 异常,异常优先级,3.2.6 存储器和存储器映射I/O,地址空间,ARM体系结构使用232个8位字节的单一、线性地址空间。将字节地址做为无符号数看待,范围为0232-1。,存储器格式,3.2.6 存储器和存储器映射I/O,非对准的存储器访问,存储器映射I/O,若在ARM态执行期间,将没有字对准的地址写到R15中,结果通常不可预知或者地址的位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次加载的返回值。,主要内容,1,3,2,4,ARM体系结构概述,编程模型,ARM基本寻址方式,ARM指令集,5,ARM9TDMI内核,6,ARM9与ARM7的比较,ARM920T核,7,寻址方式是根据指令中给出的地址码字段来寻找真实操作数地址的方式。ARM处理器支持的基本寻址方式有:,3.3 ARM基本寻址方式,寄存器寻址立即寻址寄存器移位寻址寄存器间接寻址变址寻址多寄存器寻址堆栈寻址块复制寻址相对寻址,寄存器寻址,所需要的值在寄存器中,指令中地址码给出的是寄存器编号,即寄存器的内容为操作数。例如指令:ADD R0,R1,R2;R0R1+R2这条指令将2个寄存器(R1和R2)的内容相加,结果放入第3个寄存器R0中。必须注意写操作数的顺序,第1个是结果寄存器,然后是第一操作数寄存器,最后是第二操作数寄存器。,立即寻址,立即寻址是一种特殊的寻址方式,指令中在操作码字段后面的地址码部分不是通常意义上的操作数地址,而是操作数本身。这样的数称为立即数。例如指令:ADD R3,R3,#1;R3R3+1AND R8,R7,#0 xff;R8R77:0第2个源操作数为一个立即数,以“#”为前缀,十六进制值以在“#”后加“0 x”或“&”表示。第1条指令完成寄存器R3的内容加1,结果放回R3中。第2条指令完成R7的32位值与0FFH相“与”,结果为将R7的低位送到R8中。,寄存器移位寻址,这种寻址方式是ARM指令集特有的。第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。例如指令:ADD R3,R2,R1,LSL#3;R3R2+8R1寄存器R1的内容逻辑左移3位,再与寄存器R2内容相加,结果放入R3中。,可以采取的移位操作如有:,LSL:逻辑左移(Logical Shift Left)。寄存器中字的低端空出的位补0。,LSR:逻辑右移(Logical Shift Right)。寄存器中字的高端空出的位补0。,可以采取的移位操作如有:,寄存器移位寻址,ASR:算术右移(Arithmetic Shift Right)。算术移位的对象是带符号数,若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。,RRX:扩展为1的循环右移(Rotate Right eXtended by 1 place)。操作数右移一位,空位(位31)用原C标志值填充。,ROR:循环右移(ROtate Right)。从字的最低端移出的位填入字的高端空出的位。,寄存器间接寻址,指令中的地址码给出某一通用寄存器的编号。在被指定的寄存器中存放操作数的有效地址,而操作数则存放在存储单元中,即寄存器为地址指针。例如指令:LDR R0,R1;R0R1STR R0,R1;R0R1 寄存器间接寻址使用一个寄存器(基址寄存器)的值作为存储器的地址。第1条指令将寄存器R1指向的地址单元的内容加载到寄存器R0中。第2条指令将寄存器R0存入寄存器R1指向的地址单元。,变址寻址,变址寻址就是将基址寄存器的内容与指令中给出的位移量相加,形成操作数有效地址。变址寻址用于访问基址附近的存储单元,包括基址加偏移和基址加索引寻址。寄存器间接寻址是偏移量为0的基址加偏移寻址。,基址加偏移寻址,基址加索引寻址,前索引寻址方式:基址需加(或减)最大4KB的偏移来计算访问的地址。例如:LDR R0,R1,#4;R0R1+4后索引寻址方式:基址不带偏移作为传送的地址,传送后自动索引。例如:LDR R0,R1,#4;R0R1;R1R1+4,指令指定一个基址寄存器,再指定另一个寄存器(索引),其值作为位移加到基址上形成存储器地址。例如:LDR R0,R1,R2;R0R1+R2,多寄存器寻址,一次可以传送几个寄存器的值。允许一条指令传送16个寄存器的任何子集(或所有16个寄存器)。例如指令:LDMIA R1,R0,R2,R5;R0R1;R2R1+4;R5R1+8 由于传送的数据项总是32位的字,基址R1应该字对准。这条指令将R1指向的连续存储单元的内容送到寄存器R0、R2和R5。,堆栈寻址,堆栈是按“先进后出”(FILO)的特定顺序进行存取的存储区。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储器区域(堆栈)。栈指针所指定的存储单元就是堆栈的栈顶。根据增长方向,堆栈可分为:向上生长:即向高地址方向生长,称为递增堆栈(Ascending Stack)。向下生长:即向低地址方向生长,称为递减堆栈(Descending Stack)。根据栈指针的指向位置,堆栈可分为:满堆栈:堆栈指针指向最后压入堆栈的有效数据项空堆栈:堆栈指针指向下一个数据项放入的空位置,,这样就有4种类型的堆栈表示递增和递减的满和空堆栈的各种组合。ARM处理器支持所有这4种类型的堆栈。满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空位置。满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空位置。,堆栈寻址,块复制寻址,ARM支持两种不同角度的寻址机制:堆栈角度和块复制角度,两者都映射到相同的基本指令。堆栈和块拷贝角度的多寄存器加载和存储指令映射如下图。,块复制角度的寻址举例,执行指令之前的基址寄存器值是R9,自动寻址之后的基址寄存器是R9。,块复制寻址,相对寻址,相对寻址是变址寻址的一种变通,由程序计数器PC提供基地址。指令中的地址码字段作为位移量,两者相加后得到操作数的有效地址。位移量指出的是操作数与现行指令之间的相对位置。例如指令:BL SUBR;转移到SUBR;返回到此SUBR;子程序入口地址MOV PC,R14;返回,主要内容,1,3,2,4,ARM体系结构概述,编程模型,ARM基本寻址方式,ARM指令集,5,ARM9TDMI内核,6,ARM9与ARM7的比较,ARM920T核,7,3.4.1 条件执行,几乎所有的ARM指令均可包含一个可选的条件码,句法说明中以cond表示,只有在CPSR中的条件码标志满足指定的条件时,带条件码的指令才能执行。并使用后缀“S”来区分是否根据执行结果修改条件码标志。,3.4.2 指令分类说明,32位ARM指令集由13种基本指令类型组成,分成4大类:3种类型的存储器访问指令:控制存储器和寄存器之间的数据传送。一种类型用于优化的灵活寻址;另一种类型用于快速上下文切换;第三种类型用于交换数据。3种类型的数据处理指令:使用片内ALU、桶形移位器和乘法器针对31个寄存器完成高速数据处理操作。4种类型的分支指令:控制程序执行流程、指令优先级以及ARM代码和Thumb代码的切换。3种类型的协处理器指令:专用于控制外部协处理器。这些指令以开放和统一的方式扩展了指令集的片外功能。,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!程序相对偏移:程序相对偏移是前索引形式的另一种版本。汇编器由PC计算偏移量,并将PC作为Rn生成前索引指令。不能使用后缀“!”。句法:op cond B Rd,label 后索引偏移:Rn的值用做传送数据的存储器地址。在数据传送后,将偏移量加到Rn中。结果写回到Rn。Rn不允许是R15。句法:op cond B T Rd,Rn,Flexoffset,ARM存储器访问指令,(1)LDR和STR字和无符号字节,例 子LDRR8,R10;R8R0LDRNE R2,R5,#960!;(有条件地)R2R5+960,R5R5+960STRR2,R9,#consta-struc;consta-struc是常量的表达式,该;常量值的范围为04 095STRB R0,R3,-R8,ASR#2;R0R3-R8/4,存储R0的最低有效;字节,R3和R8不变STR R5,R7,#-8;R5R7,R1R7-8LDR R0,localdata;加载一个字,该字位于标号lacaldata所在地址,(2)LDR和STR半字和带符号字节,ARM存储器访问指令,这些指令有4种可能的形式:零偏移、前索引偏移、程序相对偏移和后索引偏移。以同样的顺序,4种形式的句法为op cond type Rd,Rnop cond type Rd,Rn,offset!op cond type Rd,labelop cond type Rd,Rn,offset其中:type 必须是以下所列的其中之一:SH 对带符号半字(仅LDR);H 对无符号半字;SB 对带符号字节(仅LDR)。label 程序相对偏移表达式。label必须是在当前指令的255字节范围内。offset 加在Rn上的偏移量。,ARM存储器访问指令,(2)LDR和STR半字和带符号字节,例 子LDREQSH R11,R6;(有条件地)R11R6,加载16位半字,;带符号扩展到32位LDRH R1,R0,#22;R1R0+22,加载16位半字,零扩展到32位STRH R4,R0,R1!;R4R0+R1,存储最低的有效半字到R0+R1;地址开始的两个字节,地址写回到R0LDRSB R6,constf;加载位于标号constf地址中的字节,带符号扩展,(3)LDR和STR双字,ARM存储器访问指令,加载两个相邻的寄存器和存储两个相邻的寄存器,64位双字。这些指令有4种可能的形式:零偏移、前索引偏移、程序相对偏移、后索引偏移。以同样的顺序,4种形式的句法为op cond D Rd,Rnop cond D Rd,Rn,offset!op cond D Rd,labelop cond D Rd,Rn,offset,例 子LDRDR6,R11LDRMIDR4,R7,R2STRD R4,R9,#24STRDR0,R9,-R2!LDREQD R8,abc4,(4)LDM和STM,ARM存储器访问指令,加载多个寄存器(LDM)和存储多个寄存器(STM)。可以传送R0-R15的任何组合。句法:op cond mode Rn!,reglist其中:mode 是IA/IB/DA/DB/FD/ED/FA/EA中的一个.Rn 基址寄存器,装有传送数据的初始地址。Rn不允许是R15。!可选后缀。若有“!”,则最后的地址写回到Rn。reglist 加载或存储的寄存器列表,包含在括号中。可选后缀,不允许在用户模式或系统模式下使用。若op是LDM且reglist中包含PC(R15),那么除了正常的多寄存器传送外,将SPSR也拷贝到CPSR中。这用于从异常处理返回,仅在异常模式下使用。数据传入或传出的是用户模式的寄存器,而不是当前模式的寄存器。,ARM存储器访问指令,(4)LDM和STM,例 子LDMIA R8,R0,R2,R9STMDB R1!,R3-R6,R11,R12STMFD R13!,R0,R4-R7,LR;寄存器进栈LDMFD R13!,R0,R4-R7,PC;寄存器出栈,从子程序返回,(5)PLD,ARM存储器访问指令,Cache预加载。使用PLD(PreLoaD)提示存储系统从后面几条新指令所指定的存储器地址加载。存储系统可使用这种方法加速以后的存储器访问。句法:PLD RnFlexoffset例 子PLD R2PLD R15,#280PLD R9,#-2481PLD R0,#av*4;av*4必须在汇编时求值,范围为-4095-4095PLD R0,R2PLD R5,R8,LSL#2,(6)SWP,ARM存储器访问指令,在寄存器和存储器之间进行数据交换。使用SWP来实现信号量。句法:SWP cond B Rd,Rm,Rn其中:B 可选后缀。若有B,则交换字节;否则,交换32位字。Rd ARM寄存器。数据从存储器加载到Rd。Rm ARM寄存器。Rm的内容存储到存储器。Rm可以与Rd相同。在这种情况下,寄存器的内容与存储器的内容进行交换。Rn ARM寄存器。Rn的内容指定要进行数据交换的存储器的 地址。Rn必须与Rd和Rm不同。,ARM数据处理指令,数据处理类指令格式:S Rd,Rn,opcode:操作码,如ADD、SUB、ORRcond:条件码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,ARM数据处理指令,算术/逻辑运算指令,ARM数据处理指令,乘法指令,MUL指令将Rm和Rs中的值相乘,并将最低有效的32位结果放到Rd中。句法:MUL cond S Rd,Rm,RsMLA指令将Rm和Rs中值相乘,再加上Rn的值,并将最低有效的32位结果放到Rd中。句法:MLA cond S Rd,Rm,Rs,RnUMULL指令将Rm和Rs中的值解释为无符号整数。该指令将这两个整数相乘,并将结果的最低有效32位放在RdLo中,最高有效32位放在RdHi中。UMLAL指令将Rm和Rs中的值解释为无符号整数。该指令将这两个整数相乘,并将64位结果加到RdHi和RdLo中的64位无符号整数上。SMULL指令将Rm和Rs中的值解释为带符号的补码整数。该指令将这两个整数相乘,并将结果的最低有效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。句法:

    注意事项

    本文(《嵌入式系统技术》ppt课件第3章ARM体系结构.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开