文档详情

嵌入式处理器体系结构课.doc

发布:2017-03-26约4.18千字共12页下载文档
文本预览下载声明
第二章 嵌入式处理器体系结构 讲授内容:ARM处理器的编程模型 目 录: 一.处理器内核中数据的移动过程 ARM内核是数据(此处的数据包括指令和数据)总线连接的各个功能单元的集合: 1.数据经总线进入处理器核,其中的指令在执行前被指令译码器翻译; 2.ARM采用load/store体系结构将要使用的数据加载或移出,数据处理只能在寄存器里进行; 3.数据存储在寄存器文件里(一组32位的寄存器存储体),大部分指令认为寄存器中保存的是32位有符号/无符号数,故数据从存储器加载至寄存器前符号扩展硬件会把8/16位数转换为32位; 4.典型的ARM指令通常有2个源寄存器(Rm和Rn)和1个目的寄存器(Rd),源操作数分别通过内部总线A和B从寄存器文件中读出(ARM的一个重要特征是寄存器Rm可以选择进入ALU之前是否先经过桶形移位器预处理,从而计算较大范围的表达式和地址); 5.ALU和MAC(乘累加单元)通过A和B得到值计算出结果并将其写到寄存器文件中,ALU还会产生一个地址,该地址被保存到地址寄存器并发送到地址总线上协助数据的传输(地址加法器自动更新地址寄存器); 6.处理器连续执行指令直至异常或中断改变正常的执行流。 二.ARM处理器的工作状态和工作模式 1. 处理器的工作状态 ARM处理器内核支持3种工作状态:ARM状态(32位字对齐的指令)、Thumb状态(16位半字对齐的指令)和Jazelle状态(8位指令集,用来加速Java字节码的执行),某一时刻处理器只能处于其中的一种状态中。由于Jazelle指令集使用范围专一,故一般情况下只讨论ARM和Thumb两种指令集。 两种指令集各具特色,使用的场合也不同,同一个程序可以同时包含上述两种指令集,因此涉及到二者相互转换的问题。程序执行过程中,处理器可通过软件或异常处理在两种状态之间切换: ? 使用切换指令在ARM和Thumb指令集之间切换(处理器总是从ARM状态开始执行代码) a. 执行BX指令时,如果操作数寄存器的状态位bit[0]=1,处理器切换到Thumb状态; b. 执行BX指令时,如果操作数寄存器的状态位bit[0]=0,处理器切换到ARM状态。 ? 所有异常处理均在ARM状态执行 2. 处理器的工作模式 a.概述 ? ARM的体系结构支持7种工作模式(好似每个人都有几套不同风格的衣服来配合不同的场合); ? 每种工作模式的功能各异、所能访问的寄存器资源有所不同(特权模式允许对CPSR的完全读/写,非特权模式只允许读但允许对条件标志的写); ? 区分开不同的工作模式并赋于它们不同的硬件资源为的是不同的情况采用不同的资源来进行处理,从而避免资源的相互竞争。 b.工作模式一览表 ? 用户模式(USR)—ARM处理器正常的程序执行状态 ? 系统模式(SYS)—相当于一种可以使用操作系统的特权用户模式 ? 快速中断模式(FIQ)—用于支持特殊的高速数据传输与通道处理 ? 外部中断模式(IRQ)—用于通用的中断处理 ? 管理模式(SVC)—操作系统使用的保护模式 ? 中止模式(ABT)—数据或指令预取中止时进入的模式 ? 未定义模式(UND)—执行未定义指令时进入的模式 c.相关寄存器CPSR 处理器具体工作在何种工作模式下是由ARM内核的cpsr寄存器的特定位控制的(它还有一个备份寄存器)。 d.工作模式的切换 ARM处理器的工作模式在一定的条件下是可以相互转换的,转换方式有两种: ? 硬件方式(内核响应异常或中断, CPSR的内容要复制到SPSR中) ? 软件方式(在特权模式下修改CPSR的模式控制位,不复制) 三.处理器的寄存器组 1. 概述 ? ARM处理器采用Load/Store体系结构,这意味着没有直接操作存储器的指令,数据处理只能在寄存器中进行,结果被写回到存储器中。 ? ARM处理器共有37个32位的寄存器,其中31个为通用寄存器,6个为状态寄存器。这些寄存器不能同时被访问,处理器的每种工作状态及其工作模式都对应一组可编程访问的寄存器组。 2. 详述 a.通用寄存器 通用寄存器包括R0-R15,主要用于保存数据、地址值和PC的当前值,共分为3类: ? 未分组寄存器(R0-R7) ? 分组寄存器(R8-R14) ? 程序计数器PC(R15) a-1. 未分组寄存器 对于任何工作模式,R0-R7都指向同一个物理寄存器。由于不同的工作模式使用相同
显示全部
相似文档