4. ARM异常处理

4.1 ARM异常处理

异常
概念:
处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生
这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件
异常事件处理完成之后再返回到被异常打断的点继续执行程序

异常处理机制
不同的处理器对异常的处理的流程大体相似,但是不同的处理器在具体实现的机制上有所不同;比如处理器遇到哪些事件认为是异常事件遇到异常事件之后处理器有哪些动作、处理器如何跳转到异常处理程序如何处理异常、处理完异常之后又如何返回到被打断的程序继续执行等我们将这些细节的实现称为处理器的异常处理机制

ARM异常源
概念:导致异常产生的事件称为异常源
ARM异常源

异常源 描述
FIQ 快速中断请求引脚有效
IRQ 外部中断请求引脚有效
Reset 复位电平有效
Software Interrupt 执行swi指令
Data Abort 数据终止
Prefetch Abort 指令预取终止
Undefined Instruction 遇到不能处理的指令

ARM异常模式
在ARM的基本工作模式中有5个属于异常模式,即ARM遇到异常后会切换成对应的异常模式

ARM异常响应

ARM产生异常后的动作
1.拷贝CPSR中的内容到对应异常模式下的SPSR_<mode>
2.修改CPSR的值2.1.修改中断禁止位禁止相应的中断2.2.修改模式位进入相应的异常模式     2.3.修改状态位进入ARM状态
3.保存返回地址到对应异常模式下的LR_<mode>
4.设置PC为相应的异常向量(异常向量表对应的地址)


CPSR寄存器


异常向量表
> 异常向量表的本质是内存中的一段代码
> 表中为每个异常源分配了四个字节的存储空间
> 遇到异常后处理器自动将PC修改为对应的地址
> 因为异常向量表空间有限一般我们不会再这里
写异常处理程序,而是在对应的位置写一条跳转指令使其跳转到指定的异常处理程序的入口
注:ARM的异常向量表的基地址默认在0x00地址 ,但可以通过配置协处理器来修改其地址

异常返回
ARM异常返回的动作
1.将SPSR_的值复制给CPSR使处理器恢复之前的状态
2.将LR_的值复制给PC,使程序跳转回被打断的地址继续执行

异常优先级

FIQ和IRQ比较
FIQ的响应速度比IRQ快
1. FIQ在异常向量表位于最末
可直接把异常处理写在异常向量表之后,省去跳转
FIQ模式有5个私有寄存器(R8-R12)
执行中断处理程序前无需压栈保存寄存器,可直接处理中断
FIQ的优先级高于IRQ
3.1 两个中断同时发生时先响应FIQ
3.2 FIQ可以打断RIQ,但RIQ不能打断FIQ

4.2 ARM微架构

流水线
指令重叠执行,高效的利用处理器。


指令流水线
ARM指令流水线
ARM7采用3级流水线
ARM9采用5级流水线
Cortex-A9采用8级流水线
注1:虽然流水线级数越来越多,但都是在三级流水线的基础上进行了细分

PC的作用(取指)
不管几级流水线,PC指向的永远是当前正在取指的指令,而当前正在执行
的指令的地址为PC-8

指令流水线机制的引入确实能够大大的提升指令执行的速度但在实际执行程序的过程中很多情况下流水线时是无法形成的比如芯片刚上电的前两个周期、执行跳转指令后的两个周期等所以指令流水线的引入以及优化只能使平均指令周期不断的接近1而不可能真正的达到1,且流水线级数越多芯片设计的复杂程度就越高,芯片的功耗就越高

多核处理器
多核处理器
即一个SOC中集成了多个CPU核
作用
不同的线程可以运行在不同的核心中,做到真正的并发
资源
多核处理器共用外设与接口资源

ARM体系结构(四)相关推荐

  1. 【华为云技术分享】ARM体系结构基础(2)

    上一节中我们学习了ARM汇编指令集的有关知识,这一节我们主要学习ARM架构寄存器的有关知识.在处理器中,寄存器用于保存需要被快速访问的数据,在操作系统中需要特别注意的寄存器主要有栈指针寄存器(SP). ...

  2. 【计算机系统结构】~ ROM/PROM/EPROM/E2PROM/FLASH、SOC 片上系统、总线、CPU 处理器、Cache、DDR、ARM 体系结构、虚拟内存、内核 kernel

    1. ROM/PROM/EPROM/E2PROM/FLASH ROM 指的是"只读存储器",即 Read-Only Memory.这是一种线路最简单半导体电路,通过掩模工艺, 一次 ...

  3. 深度剖析Linux内核(ARM体系结构)

    一.ARM处理器简介及RISC特点 1.ARM处理器简介: ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下 的微处理器 ...

  4. 最全ARM体系结构知识:汇编、架构、异常级别和安全状态

    关注.星标公众号,直达精彩内容 来源:智能软件研究中心 | 直接来源:华为开发者社区 作者:罗宇哲 01 ARM汇编指令 操作系统中硬件相关的部分集中体现在汇编指令和对寄存器的操作中,因此我们对ARM ...

  5. ARM体系结构的存储器格式

    ARM体系结构将存储器看作是从零地址开始的字节的线性组合.从零字节到三字节放置第一个 存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列.作为32位的微处 理器, ARM体系结构所 ...

  6. LV.9 ARM体系结构与接口技术

    1 计算机硬件基础 Day1-1 底层课程导学 课程回顾 1.编程基础 1.C语言基础 2.C高级及Linux 3.数据结构 2.应用开发 1.IO 2.进程 3.网络编程 3.底层开发 1.ARM ...

  7. 嵌入式:ARM体系结构详解

    文章目录 指令集与指令集架构 主要计算机指令集架构 PC及服务器领域 嵌入式领域 新生代 ARM体系结构的演变 ARM发展的历程 指令集与指令集架构 指令:就是指挥计算机工作的命令,程序就是一系列按一 ...

  8. ARM体系结构与编程模型

    内容转自:https://mp.weixin.qq.com/s/3HVRroBAwVUT13SXqGeocQ 1.ARM处理器简介及RISC特点 1.ARM处理器简介 ARM(Advanced RIS ...

  9. 东华理工大学arm试卷_《ARM体系结构》期末考试试卷含答案.doc

    <ARM体系结构>期末考试试卷含答案 东华理工大学长江学院 2011- 2012 学年第2学期补考试卷B 课程:嵌入式微处理器体系结构与编程 考试形式:闭卷 年级及专业:计算机科学与技术 ...

  10. 【华为云技术分享】ARM体系结构基础(1)

    鲲鹏处理器采用ARM架构,欧拉系统可以运行在鲲鹏架构的服务器上,想要了解欧拉操作系统对硬件的支持,首先需要了解一些ARM架构的基础知识.操作系统中硬件相关的部分集中体现在汇编指令和对寄存器的操作中,因 ...

最新文章

  1. 【内推】腾讯优图(深圳)实验室招计算机视觉算法实习生
  2. low逼三人组、nb二人组、归并、希尔排序----小结
  3. Linux下 memcached安装以及启动
  4. HDU_oj_2050 折线分割平面
  5. Vue2.0 Transition常见用法全解惑
  6. css实现文字在横线上居中
  7. BZOJ2326 [HNOI2011]数学作业 【矩阵快速幂】
  8. ubuntu软件安装 caffe相关软件安装 学习笔记
  9. 今日头条的 ByteSpider,怎么就成了小网站的“噩梦”?
  10. c++代码转为go_C++调用Go方法的字符串传递问题及解决方案
  11. AI 新基建怎么做,腾讯云正式公布全景布局
  12. node.js stream
  13. Quartus II 9.0正式版下载
  14. Office Timeline一款非常专业好用的PPT插件
  15. CentOS8设置网络安装源
  16. 64位Win7 服务器运行失败
  17. 前端总结·基础篇·CSS
  18. 用标号法求最短路径matlab,标号法求最短路径问题
  19. nvm安装与使用详解(Window11)
  20. LeetCode每日一题:744. 寻找比目标字母大的最小字母

热门文章

  1. 将kubernetes制作成一个3D射击游戏,好玩的停不下来,附源码
  2. Qt Creator Colliding Mice碰撞老鼠例程解析【1.5W字数长文!详细!】
  3. 小马哥 IOC学习笔记
  4. 推出“百亿生态”,拼多多“极限左移”
  5. WIN10安装SQL Server2017
  6. 计算机程序设计艺术读书笔记1
  7. 吉林大学计算机应用软件属于什么专业,吉林大学自学本科计算机应用软件主要应用程度要求(最新)...
  8. TencentOS-tiny官方开发板EVB_MX上手Demo
  9. 用java实现简易记事本功能
  10. 目标检测结果IOU不同取值的含义 IoU=0.50与IoU=0.50:0.95