目录
一、ARM寄存器组织
1.寄存器
六星云课堂:C语言的4种存储类型,入门C语言必看! - 哔哩哔哩
C语言_了解一下C语言中的四种存储类别_51CTO博客_c语言存储类型
概念
寄存器是处理器内部的存储器,没有地址
作用
一般用于暂时存放参与运算的数据和运算结果
分类
包括通用寄存器、专用寄存器、控制寄存器
注意:全局变量不允许使用寄存器。
2.ARM寄存器
ARM基础--ARM寄存器_liefyuan的博客-CSDN博客_arm寄存器
由于我在学习的是A9所以它有40个因为它多了个监控模式图中最后一列。
3.专用寄存器
R15(PC,Program Counter)
程序计数器,用于存储当前取址指令的地址
R14(LR,Link Register)
链接寄存器,一般有以下两种用途:
> 执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址
程序需要返回时将LR的值复制到PC即可实现(子程序跳转-主动)
> 产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下
一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回(中断-被动)
R13(SP,Stack Pointer)
栈指针,用于存储当前模式下的栈顶地址
4.CPSR寄存器
CPSR(Current Program Status Register),当前程序状态寄存器
[10000]User [10001]FIQ [10010]IRQ [10011]SVC
[10111]Abort [11011]Undef [11111]System [10110]Monitor
[0]ARM状态 [1]Thumb状态
[0]开启FIQ [1]禁止FIQ
[0]开启IRQ [1]禁止IRQ
> 当运算器中进行加法运算且产生符号位进位时该位自动置1,否则为0
> 当运算器中进行减法运算且产生符号位借位时该位自动置0,否则为1
> 当运算器中进行加法运算且产生进位时该位自动置1,否则为0
> 当运算器中进行减法运算且产生借位时该位自动置0,否则为1
当运算器中产生了0的结果该位自动置1,否则为0
当运算器中产生了负数的结果该位自动置1,否则为0
CPSR寄存器_qq_42948708的博客-CSDN博客_cpsr寄存器
二、ARM异常处理
0.中断和异常
具体是怎么回事现在不是很确定,知道的同学或前辈欢迎评论留言讨论。
1.异常
处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生
这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件
异常事件处理完成之后再返回到被异常打断的点继续执行程序
2.异常处理机制
不同的处理器对异常的处理的流程大体相似,但是不同的处理器在具体实现的机制上有所不同;比如处理器遇到哪些事件认为是异常事件遇到异常事件之后处理器有哪些动作、处理器如何跳转到异常处理程序如何处理异常、处理完异常之后又如何返回到被打断的程序继续执行等我们将这些细节的实现称为处理器的异常处理机制
3.ARM异常源
概念
导致异常产生的事件称为异常源
ARM异常源
FIQ 快速中断请求引脚有效
IRQ 外部中断请求引脚有效
Reset 复位电平有效
Software Interrupt 执行swi指令
Data Abort 数据终止
Prefetch Abort 指令预取终止
Undefined Instruction 遇到不能处理的指令
4.ARM异常模式
在ARM的基本工作模式中有5个属于异常模式,即ARM遇到异常后会切
换成对应的异常模式
5.ARM异常响应
1.拷贝CPSR中的内容到对应异常模式下的SPSR_<mode>
2.修改CPSR的值
2.1.修改中断禁止位禁止相应的中断
2.2.修改模式位进入相应的异常模式
2.3.修改状态位进入ARM状态
3.保存返回地址到对应异常模式下的LR_<mode>
4.设置PC为相应的异常向量(异常向量表对应的地址)
和32差不多,大部分设备处理异常大概都是这个流程。
6.异常向量表
> 异常向量表的本质是内存中的一段代码。
> 表中为每个异常源分配了四个字节的存储空间。
> 遇到异常后处理器自动将PC修改为对应的地址。
> 因为异常向量表空间有限一般我们不会再这里写异常处理程序,而是在对应的位置写一条跳
转指令使其跳转到指定的异常处理程序的入口。
注:ARM的异常向量表的基地址默认在0x00地址 ,但可以通过配置协处理器来修改其地址
7.异常返回
1.将SPSR_<mode>的值复制给CPSR使处理器恢复之前的状态
2.将LR_<mode>的值复制给PC使程序跳转回被打断的地址继续执行
8.IRQ异常举例
注意:整个过程CPSR保存的永远是当前程序运行状态SPSR只是异常时对原来的CPSR进行备份
9.异常优先级
10.FIQ和IRQ
2. FIQ模式有5个私有寄存器(R8-R12)执行中断处理程序前无需压栈保存寄存器,可直接处理中断
3. FIQ的优先级高于IRQ
3.1 两个中断同时发生时先响应FIQ
3.2 FIQ可以打断RIQ,但RIQ不能打断FIQ
三、ARM微架构
1.流水线
2.指令流水线
ARM指令流水线
ARM7采用3级流水线
ARM9采用5级流水线
Cortex-A9采用8级流水线
注1:虽然流水线级数越来越多,但都是在三级流水线的基础上进行了细分
PC的作用(取指)
不管几级流水线,PC指向的永远是当前正在取指的指令,而当前正在执行 的指令的地址为PC-8,当前正在译码的指令地址是PC-4.
3.多核处理器
多核处理器
即一个SOC中集成了多个CPU核
作用
不同的线程可以运行在不同的核心中做到真正的并发
资源
多核处理器共用外设与接口资源
----------------------------------------------------------吐槽-----------------------------------------------------------------
爱恋是陪伴,是回应,是相互作用的力。是击掌,是石子落下水面泛起的涟漪,是不趁虚而入,是不借助吊桥效应的追求,是没有胜负的长跑,是等待……
------------------------------------------------------------------------------------------------------------------------------
一个人写的东西可以反应他的心境,昨天,今早,现在完全不一样。放假11天只学了4节课还全是介绍性的东西,虽然课设耽误了些时间,但这都是在自欺欺人。安逸太久都快忘了自己要做什么。另外在感情上每次好好的暧昧对象最后都处成兄弟了。希望一年后的我不再迷茫。