L12D4 ARM体系结构理论基础

L12D4 ARM体系结构理论基础本文详细介绍了 ARM 处理器的异常处理流程 包括异常概念 异常源 异常模式 异常处理流程 如保存 CPSR 修改模式 设置异常向量 以及流水线和多核处理器的相关内容

大家好,欢迎来到IT知识分享网。

一、ARM异常处理(一)

(一)注意事项

学习处理器的两大方面:指令集和异常处理。

(二)异常的概念

L12D4 ARM体系结构理论基础

处理器在正常执行过程中遇到一些不正常的事,中断程序处理异常,返回断点继续执行。类似于应用层的信号机制。

处理异常的过程也是执行程序,执行异常处理程序。

异常处理程序也是程序员自己写的。

(三)异常处理机制

所有处理器都有异常处理,流程相似,异常事件不同,细节不同,不同CPU如何处理异常称为异常处理机制。

L12D4 ARM体系结构理论基础

(四)异常源

L12D4 ARM体系结构理论基础

1、FIQ/IRQ

一般是由外部硬件产生,比如按键。FIQ响应速度更快,优先级更高。

2、Reset

复位电平有效。

3、Software Interrupt

软中断,由软件或指令,自中断。

4、Data Abort

数据终止,读取内存出现问题,内存地址出错等。

5、Prefetch Abort

指令预取终止,指令地址不对,指令为空等。

6、Undefined Instruction

译码过程遇到不能处理的指令,译码器执行不了或者不认识

注意区分ARM的8个模式和7个异常源

处理器遇到异常源会进入异常模式

7、异常源和异常模式的对应

L12D4 ARM体系结构理论基础

二、ARM异常处理(二)

(一)ARM异常处理流程

L12D4 ARM体系结构理论基础

1、保存CPSR(处理异常前,备份当前状态)到对应异常模式的SPSR_<mode>

2、修改CPSR(修改成异常模式)

1)修改中断禁止位禁止相应的中断(异常处理过程中阻塞其他中断)

例:IRQ中断时

L12D4 ARM体系结构理论基础

但是高优先级可以打断低优先级,如果进入IRQ,会阻塞其他IRQ,但可以被FIQ中断,处理完FIQ,返回处理IRQ,处理完,退出异常模式,回到刚刚执行的程序。

FIQ会同时阻塞FIQ和IRQ。

2)修改模式位进入相应的异常模式

L12D4 ARM体系结构理论基础

3)修改状态位进入ARM模式

L12D4 ARM体系结构理论基础

T = 0 ARM模式

T = 1 Thumb模式

处理异常只能在ARM模式下

3、保存返回地址到对应异常模式下的LR_<mode>

LR在发生异常时自动保存正在执行的程序的下一条指令地址,不同异常模式对应不同的LR

4、设置PC为相应的异常向量(异常向量表对应的地址)

修改PC为异常处理程序的地址,但是异常处理程序的存储位置不知道,所以PC实际上跳转的位置是异常向量表

(二)异常向量表

L12D4 ARM体系结构理论基础

32字节 异常向量表中存放的是跳转指令,跳转到指定的异常处理程序的入口

Cortex-A处理器异常向量表可以通过配置协处理器修改地址,修改基地址,再通过偏移量找到对应的异常模式

L12D4 ARM体系结构理论基础

(三)异常返回

L12D4 ARM体系结构理论基础

(四)IRQ异常举例

L12D4 ARM体系结构理论基础

三、ARM异常处理(三)

(一)异常优先级

L12D4 ARM体系结构理论基础

(二)FIQ和RIQ

L12D4 ARM体系结构理论基础

FIQ响应速度比IRQ快

1、FIQ位于异常向量表的末端,可以把异常处理程序写在异常向量表之后,省去跳转

2、FIQ模式有5个私有寄存器(R8-R12)

省去了等待公用寄存器的时间,不需要压栈出栈

L12D4 ARM体系结构理论基础

3、FIQ可以打断IRQ

四、ARM微架构

(一)流水线

L12D4 ARM体系结构理论基础

(二)指令流水线

L12D4 ARM体系结构理论基础

1、取址:PC,IR

2、译码:译码器

3、执行:运算器

L12D4 ARM体系结构理论基础

处理器越高级,流水线越细

L12D4 ARM体系结构理论基础

PC指向的永远是正在取址的指令,而当前正在执行的指令是PC-8,正在译码的指令是PC-4

L12D4 ARM体系结构理论基础

流水线级数越多,芯片越复杂,功耗越大

复杂指令集,指令越多,电路越复杂,体积越大,功耗越低

三级流水线不是一级的三倍,跳转指令时,三级流水线会被打断,有译码后的指令浪费

(三)多核处理器

L12D4 ARM体系结构理论基础

多核CPU同时工作,多核一般是多核多线程,不同的线程放入不同核,真正实现并发,单核只能分时。

多核也是共享外设与接口资源。

五、注意事项

1、流水线级数越多,芯片越复杂,功耗越大

复杂指令集,指令越多,电路越复杂,体积越大,功耗越低

2、三级流水线不是一级的三倍,跳转指令时,三级流水线会被打断,有译码后的指令浪费

以IRQ为例,简述ARM处理器在正常执行程序过程中如果遇到IRQ异常会自动完成哪些动作以及处理完异常后如何返回到正常程序:

异常处理:
1、保存CPSR(处理异常前,备份当前状态)到对应异常模式的SPSR_irq。
2、修改CPSR(修改成异常模式)
1)修改中断禁止位禁止相应的中断(异常处理过程中阻塞其他中断)。
2)修改模式位进入相应的异常模式。
3)修改状态位进入ARM模式。
3、保存返回地址到对应异常模式下的LR_irq。
(LR在发生异常时自动保存正在执行的程序的下一条指令地址,不同异常模式对应不同的LR)
4、设置PC为相应的异常向量(异常向量表对应的地址)。
异常返回:
1、将SPSR_irq的值复制给CPSR使处理器恢复之前的状态
2、将LR_irq的值复制给PC使程序跳转回被打断的地址继续执行。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/145187.html

(0)
上一篇 2025-04-21 17:15
下一篇 2025-04-21 17:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信