arm体系结构概述和编程模型

1、arm体系结构的版本

1、arm1~6

2、arm体系的变种

1、T 系列:Thumb指令集,可以支持Thumb指令集

2、M系列:支持长乘法,32位*32位生成64位数据,长乘加指令,再加上32位数据

3、E系列:增强型DSP指令,增强一些典型的DSP算法的性能

4、J系列:java加速器,java代码运行速度提高了8倍,功耗降低了80%

5、SIMD系列:流媒体的处理性能提高了4倍,主要应用于流媒体

3、arm体系版本的命名方式

ARMv+指令集版本号(1~6)+变种系列字符+xP(排除某种指令的支持)

4、ARM9系列特点

 

5、ARM的处理器模式

1、用户模式User:正常执行程序的模式

2、快速中断模式FIQ:用于高速数据传输和通道处理

3、外部中断模式IRQ:用于通常的中断处理

4、特权模式SVE:供操作系统使用的一种保护模式

5、数据访问中止模式Abort:用于虚拟存储以及存储保护

6、未定义指令中止模式underfined:用于支持通过软件方针硬件的协处理器

7、系统模式System:用于运行特权级的操作系统任务

除用户模式外,其他都为特权模式,可以任意的进行模式切换,访问系统资源。除系统模式之外,都被称为异常模式。

应用程序进行模式切换时是不能直接切换的,需要产生异常处理才可以切换异常模式,在异常处理中进行模式切换.

每组异常模式都有一组寄存器,以保证进入异常模式时用户模式下的寄存器不被破坏.

系统模式不是通过异常处理进入的,时可以直接切换的.

arm拥有37个寄存器,包括31个通用寄存器(32位),6个状态寄存器(32位,但是目前只使用了12位).

 

R0~R14 + PC :16个通用寄存器

R0~R7未备份寄存器:所有模式下都共用一个,所以切换模式时数据容易被破坏

R8~R14 备份寄存器:

R8~R12,每个寄存器对应两个寄存器,一种是快速中断的,一种是其他的。这样在响应快速中断时就不需要保存现场和恢复现场,从而使中断响应快速

R13~R14,每个寄存器对应6个不同的寄存器,其中用户模式和系统模式时共用的,

R13:一般来说R13都作为栈指针,但是不强制。进入异常模式时,将需要使用的寄存器保存在R13所知的栈中,退出异常程序时,再进行出栈操作。

R14:被称为连接寄存器LR,有两种作用:1、存放子程序的返回地址,调用子程序将PC保存,返回时将寄存器赋值给PC 2、异常模式产生时,将PC入栈,异常模式返回时,将寄存器地址赋给PC

PC 程序计数器:又被称为R15,因为arm使用的是流水线机制,所以正确的读取PC的值一般都是下两个指令的地址,即当前正在执行的指令加8个字节。即三级流水线

arm指令时按字对齐的,所以写入PC的值第0位和第1位应该是0。知道为啥吗?因为可以被4整除,而4就是100

CPSR寄存器:程序状态寄存器,可以在任何模式下被访问,在异常模式下都有一个SPSR物理状态寄存器,用来在异常发生时,存储CPSR的值。从异常返回时,恢复SPSR的值。

 

Q标志位,表示增强型DSP指令是否发生溢出。

I F 中断禁止位,I表示禁止(1)IRQ中断,F标志禁止(1)FIQ中断

T表示执行的是ARM指令(0)还是Thumb指令(1)

M表示处理器模式

6.arm体系中的中断

 

异常中断:

 

异常中断的响应过程:1、保存处理器当前状态,中断屏蔽位、以及各条件标志CPSR——》SPSR。

 2、设置当前CPSR中的相应的位,包括设置模式,禁止中断等。

 3、设置LR的值为返回地址

4、将PC设置为异常中断的中断向量地址。从而跳转到相应的地方去执行

异常中断程序的返回:1、SPSR-》CPSR

2、将LR(R14)->PC

 

7、存储系统

Arm32位的系统地址空间大小最大为232个字节,但是因为寻址是4字节对齐,所以只能寻址为2e30个单元,每个单元4个字节,也可以看作为2e31个2字节单元

在字单元中,这4个字节,哪一个时高位地址,哪一个时低位地址,则有两种不同的格式:大端(高位低地址)和小端(高位高地址)

 

如果访问地址单元没有按照字对齐原则,即4字节对齐,则被称为非对齐的存储访问操作

如果访问的是指令,则结果要么不可预知,要么指令地址的低两位被忽略,但是这全靠系统,如果系统存在非对齐访问时的处理,则会忽略

对于非对齐的数据访问:1、执行结果不可预知

    2、忽略字单元地址的低两位的值

指令预取:CPU执行当前指令时,可以从存储器预取其后的若干条指令,具体多少,看arm的实现

自修改代码:代码在执行过程中可能会修改自身(主存中的),这是预取则显得不可靠

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值