lv11 嵌入式开发 ARM体系结构理论基础(异常、微架构)4

news/2024/6/18 21:28:29 标签: arm开发

1 异常概念

处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生

这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件    

异常事件处理完成之后再返回到被异常打断的点继续执行程序

2 异常处理机制

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

3 ARM异常源

概念    

导致异常产生的事件称为异常源  

ARM异常源    

  1. FIQ                快速中断请求引脚有效(速度最快的中断)             
  2. IRQ                外部中断请求引脚有效    
  3. Reset            复位电平有效    
  4. Software Interrupt    执行swi指令(软件中断)     
  5. Data Abort            数据终止(访问无效内存地址、数据损坏或其他类似问题导致)     
  6. Prefetch Abort        指令预取终止(无效的指令地址或类似的预取相关问题导致的异常)     
  7. Undefined Instruction    遇到不能处理的指令(取指令译码不认识)

4 ARM异常模式

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

注意:Arm模式5种与异常源7种,不要搞混

5 ARM异常响应

ARM产生异常后的动作(自动完成

1.拷贝CPSR中的内容到对应异常模式下的SPSR_<mode>    

2.修改CPSR的值     

        2.1.修改中断禁止位禁止相应的中断     

        2.2.修改模式位进入相应的异常模式                  

        2.3.修改状态位进入ARM状态    

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

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

不管之前是Thumb状态还是ARM状态,处理异常必须在ARM状态下。

因为异常处理程序是我们自己写的,地址是不确定的,那么系统自动跳转是找不到的,系统会跳转到固定的位置,异常向量表。

5 异常向量表

> 异常向量表的本质是内存中的一段代码    

> 表中为每个异常源分配了四个字节的存储空间    

> 遇到异常后处理器自动将PC修改为对应的地址    

> 因为异常向量表空间有限一般我们不会再这里,写异常处理程序,而是在对应的位置写一条跳 转指令使其跳转到指定的异常处理程序的入口    

注:ARM的异常向量表的基地址默认在0x00地址        

但可以通过配置协处理器来修改其地址

7 异常返回

ARM异常返回的动作(自己编写)

1.将SPSR_<mode>的值复制给CPSR      

        使处理器恢复之前的状态                     

2.将LR_<mode>的值复制给PC      

        使程序跳转回被打断的地址继续执行

8 IRQ异常举例

异常向量表中N是异常处理程序的跳转地址

M是用户程序的下个执行地址,lr保存。

整个过程CPSR保存的永远是当前程序运行状态    

SPSR只是异常时对原来的CPSR进行备份

9 异常优先级

多个异常同时产生时的服务顺序

10 FIQ和IRQ

 1. FIQ在异常向量表位于最末        

        可直接把异常处理写在异常向量表之后,省去跳转    

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

        执行中断处理程序前无需压栈保存寄存器,可直接处理中断    

3. FIQ的优先级高于IRQ     

        3.1 两个中断同时发生时先响应FIQ     

        3.2 FIQ可以打断RIQ,但RIQ不能打断FIQ

11 练习

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

1 保存当前状态:

spsr_<irq> = cpsr  保存(CPSR)等寄存器的值,保存lr_irq的值以便在处理完异常后能够恢复到中断发生前的状态。

2 跳转到IRQ异常处理模式:
irq模式切换、irq禁止(防止打断)、cpsr修改为arm状态。为了确保在处理IRQ异常时能够使用相关的寄存器和堆栈。
跳转至异常向量表,寻找irq的地址,地址中存在用户自己写的异常处理程序地址,执行异常处理程序。

3 模式恢复
包括恢复之前的执行模式、寄存器的值等。cpsr = spsr,程序PC指针指向lr_irq,继续执行原始的程序。

12 微架构

ARM指令流水线    

ARM7采用3级流水线    

ARM9采用5级流水线    

Cortex-A9采用8级流水线    

注1:虽然流水线级数越来越多,但都是在三级流水线的基础上进行了细分

PC的作用(取指)    

不管几级流水线,PC指向的永远是当前正在取指的指令,而当前正在执行的指令的地址为PC-8(PC地址减去2个4字节即取址)

指令流水线机制

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

多核处理器

多核处理器    

        即一个SOC中集成了多个CPU核  

作用    

        不同的线程可以运行在不同的核心中 ,做到真正的并发

资源    

        多核处理器共用外设与接口资源


http://www.niftyadmin.cn/n/5170825.html

相关文章

深入理解IO和NIO的原理和区别

在计算机编程领域&#xff0c;IO&#xff08;Input/Output&#xff09;和NIO&#xff08;Non-blocking Input/Output&#xff09;代表了两种截然不同的输入输出模型&#xff0c;它们在数据输入和输出方面采用不同的理念和机制。本文将深入剖析IO和NIO的原理&#xff0c;以及它们…

低代码信创开发核心技术(三):MDA模型驱动架构及元数据系统设计

前言 写最后一篇文章的时候&#xff0c;我本人其实犹豫了半年&#xff0c;在想是否发布出这篇文章&#xff0c;因为可能会动了很多人的利益。所以这篇文章既是整个低代码信创开发的高度总结&#xff0c;也是最为精华的一部分&#xff0c;它点明了低代码中最为核心的技术。虽然…

FPGA运算

算数运算中&#xff0c;输入输出的负数全用补码来表示&#xff0c;例如用三位小数位来表示的定点小数a-1.625和b-1.375。那么原码分别为a6b‘101101, b6b101011, 补码分别是a6’b110011&#xff0c;b6‘b110101&#xff1b; 如果想在fpga中实现a*b&#xff0c;则需要将a和b用补…

C语言编写链表的初始化、插入、删除、打印操作

文章目录 1-11题例题12例题12答案答案一答案二 1-11题 C语言基础例题1-3题-指针篇 C语言基础例题4-5题-二维数组篇 C语言基础例题6-7题-结构体篇 C语言基础例题8-9题-大作业篇 C语言基础例题10-11题-字符串、指针篇 例题12 编写一个 C 语言程序&#xff0c;实现一个简单的链…

JRebel热部署——效率提升100倍(程序员工具必备)

1. 下载JRebel 2.激活程序 这里推荐一个免费获取jrebel激活服务器地址和激活邮箱的地址:点击进入 进入网站之后就可以获取到激活链接和邮箱 点击进入激活 复制过去激活就可以 然后就可以看到激活成功了 3.如何使用 代码修改后&#xff0c;直接CtrlShitF9 即可重新启动 4…

合成数据加速机器视觉学习

虽然机器学习在基于视觉的自动化中的应用正在增长&#xff0c;但许多行业都面临着挑战&#xff0c;并难以在其计算机视觉应用中实施它。这在很大程度上是由于需要收集许多图像&#xff0c;以及与准确注释这些图像中的不同产品相关的挑战。 该领域的最新趋势之一是利用合成数据…

银河的c++课堂——[NOIP1999 普及组] 导弹拦截

目录 题目描述 输入格式 输出格式 输入输出样例 题目描述 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。某天&…

你的代码有bug

作为程序员&#xff0c;我们时常会收到这样的反馈&#xff1a;“你的代码有bug”。当面临这种情况时&#xff0c;我们可能会感到受伤和失落。然而&#xff0c;我们应该认识到&#xff0c;代码问题是一种常见现象&#xff0c;无论是谁都可能遇到。通过接受批评和建议&#xff0c…