ARM体系及原理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1ARM体系结构概述

2.1指令集体系结构

1. 一条ARM指令的最高四位bit[31:28]为条件域(condition field),根据其值的不同来确定当前指令对CPSR中的N、Z、C和V标志的设置与否。

2. ARM指令集支持一个向前或向后32M范围内跳转的Branch指令。如果是Branch and Link指令,则除了支持向前或向后的32M范围跳转外,还能将跳转指令的下一条指令地址(返回地址)压入R14(LR)。而在ARMv4以上支持T的版本中,还有Branch and Exchange指令,此指令可以拷贝通用寄存器Rm的值到PC中,而若其bit[0]为0,则进行ARM至Thumb的切换。

3. ARM指令集中包含了状态寄存器获取指令MSR和MRS用来对CPSR和SPSR进行操作。同时ARM指令集还提供了对协处理器的操作指令MCR和MRC。

4. SWI提供了软件中断的功能,此指令的bit[23:0]为一个立即数,ARM处理器会忽略这个立即数,但这个立即数可以提供异常处理程序使用。

2.2寄存器

通用寄存器(r0-r15):

不分组寄存器r0-r7:

可以工作在所有的处理模式下,没有隐含的特殊用途

分组寄存器r8-r14:

分组寄存器的使用取决于当前的处理器模式,每种模式有专用的分组寄存器用于快速异常处理。

寄存器R13通常用作堆栈指针,称作sp。每种异常模式都有自己的R13。通常R13被初始化为指向异常模式分配的堆栈。在入口处,异常处理程序将用到的其他寄存器的值保存到堆栈中,返回时,重新将这些值加载到寄存器中。

寄存器R14用作子程序链接寄存器lr。当指令BL指令时,得到R15(PC)寄存器的备份。

程序寄存器R15:

ARM状态下,PC位[1:0]为0(字对齐)。

Thumb状态下,位[0]为0(半字对齐)。

由于流水线特性,PC总是指向当前执行指令的下两条指令地址。

程序状态寄存器:

所有处理器模式下都访问相同的CPSR,CPSR包含条件码标志。中断禁止位,当前处理器模式以及其他状态和控制信息。

每种异常模式下都有一个程序状态保存寄存器,发生异常时,SPSR用来保存CPSR的状态。

2.3工作模式和特权等级

ARM工作模式:

ARM工作状态:从编程的角度看有两种并可以切换 ARM状态:执行32位字对齐的ARM指令 THunb状态:执行 16位的半字对齐 thumb指令注意:ARM 状态下只能执行ARM指令 thumb也是

存储器格式:0-3第一个字 4-7第二个………………. 因此 ARM最大寻址是 4GB

大端格式:高字节存放在低地址空间

小端空间:高字节放高地址,低地址存放低字节 ARM绝大多数时候使用小端格式

指令长度: ARM支持字节,半字,字三种数据类型其中字需要4字节对齐(地址的低两位是0) 半字需要2字节对齐(地址最低位0)

工作模式:

1:用户模式 usr:正常执行程序

2:快速中断模式FIQ: 用于高速数据的传送 3:外部中断模式IRQ: 用于通常的中断处理

4:管理模式svc: super verzer 超级模式,操作系统使用的保护模式

5:数据访问终止模式abt:当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护 6:系统模式sys: 运行具有特权的操作系统任务

7:未定义指令终止模式und: 当未定义的指令执行时进入该模式,可用于支持硬件除用户模式外,其它称为非用户模式,或者是特权模式除去用户模式和系统模式, 其它称为异常模式.

2.4存储器和映射

1.多数的系统需要通过以下的一些方式来初始化和控制存储系统设备:

1)使能Cache,以保证Cache执行所能获得的效益最大化

2)为虚拟存储系统建立虚拟到物理存储的映射

3)为不同的存储区域建立约束规则

4)保证在正确的时间,以正确的方式对存储映射I/O的获取

2.存储系统应该按以下的方式配置:

1)主存储区(RAM)应该被配置成cachable和bufferable;

2)ROM存储区通常只配置成cachable和只读,因此bufferable属性不会被设置。

3.一些ARM实现中包含了一种契入式的write buffer,将多次对同一位置的写操作归并成对主存储区的一次操作。此外一些write buffer还支持写操作

的重排序,那样会使处理器提交的写操作顺序与实际的写操作提交给存储区的顺序存在差异。因此,对I/O区域尽量不要配置成bufferable,以保证对I/O设置的写操作能以一个正确的顺序执行。

4. 所有存储和系统相关的特性都由协处理器15(CP15)来控制,因此CP15也被称为系统控制协处理器。其包含共计16个32位的主寄存器。此外,由于寄存器获取指令中可以包含额外的位来辨识特定的寄存器版本和(或者)对寄存器特定的获取方式,所以实际CP15种的32bit物理寄存器可以超过16个。CP15的属性可以是只读、只写或者可读可写。

5. ARM仅仅定义了一类对CP15操作的指令,即MCR和MRC,其中MCR用来将一个ARM寄存器的值写入CP15,而MRC指令可以将一个CP15寄存器的值读入ARM寄存器中。MRC和MCR指令只有在各个特权模式下才能正常执行,如果是在用户模式下执行这两条指令,则会导致一个未定义指令的异常发生。

CP15 Register 1中各个位的含义如下:

M(bit[0]) MMU或保护单元使能位

A(bit[1]) 对齐错误校验使能位

C(bit[2]) Cache使能位(如果是统一cache架构,则标识统一cache使能,如果是独立cache架构,则标识数据cache使能)

W(bit[3]) Write buffer使能位

P(bit[4]) 异常处理模式选择位,可选择进入26-bit模式或32-bit模式

D(bit[5]) 26-bit地址异常校验使能位

L(bit[6]) Abort模式版本选择位

B(bit[7]) 大端或小端配置位

S(bit[8]) 系统保护位(在基于MMU的存储系统中使用)

相关文档
最新文档