ARM体系结构

目录

预备知识 

 ARMcpu:

 关于异常的总结

异常处理流程:

异常优先级:

fiq 快速中断  与irq中断

流水线 


预备知识 

计算机系统基本组成部件
输入部件鼠标、键盘、麦克风等
输出部件显示器,喇叭,打印机等
存储器(用于存储数据的设备)易失性存储器(掉电丢失,速度快,成本高)寄存器
高速缓存(cache)
内存(RAM)
非易失性存储器(掉电不丢失,速度慢,容量大)(外部存储器)硬盘,机械硬盘,固态硬盘,光盘,U盘等
运算器算数、逻辑、位运算
控制器控制中心,控制整个 运行流程  
总线数据的传输通道, 负责各个部件之间的数据传输单总线模型( 结构简单  成本低   传输效率不高)
多总线模型(各个部件 使用一条或多条独立的 总线 进行数据传递, 效率更高)

ARM生态链:

  • ARM公司:设计了一种CPU架构——ARM架构,该架构的CPU功耗低 ,体积小,硬件结构简单,成本低,带动嵌入式发展;

  • ARM芯片公司:例如三星、飞思索尔、意法半导体STM32…

使用ARM架构:设计、生产芯片,使用芯片;

  • 芯片应用公司:使用芯片 制作开发板,使用开发板完成特定应用;

cortex系列:

cortex-A   A8 A9 A53   高端高性能产品 ,图形图像 多用于多媒体应用

cortex-R   R4 R4F      中端产品, 追求实时性  多用于工业控制

cortex-M   M3 M1 M0    低端产品 ,单片机  多用于stm32  

低速设备  ARM7 ARM9  ARM11 ...

ARM架构的发展:

 ARMcpu:

其中 R0-R12  是 13个通用寄存器;

特殊功能寄存器:

R13  SP  :栈指针寄存器   专门用于存储栈指针的 寄存器

R14  LR  :链接寄存器     专门用于存储返回地址的

R15  PC  :程序计数器

        用于 记录 以及 控制  程序运行的位置 , 表示 下一条即将执行的(取址的)指令的位置,         程序的跳转由该寄存器完成

spsr  : 程序状态寄存器 备份寄存器  仅异常模式有 用于备份异常发生前的 cpsr寄存器  以便于在异常恢复时 恢复cpsr

cpsr  : 程序状态寄存器 ,用于存储 以及 控制 程序在运行过程中产生的 一些状态

 寄存器详解:

 

nzcv: 条件位:

n: 运算结果为负数  则N = 1

z: 运算结果为 0      z = 1

c: 进位或借位标志 

v: 符号位发生变化

i位和f位:

中断禁止位,中断表示能够暂时的暂停当前程序的执行,转而去处理突发的随机事件,而禁止中断是组织这样的动作或行为

T位: 状态标志位

0: ARM状态    该状态下 执行ARM指令集     4字节宽度

1: thumb状态  该状态下 执行thumb指令集   2字节宽度

[0-4] 模式位

10000 user模式用户模式用户的应用程序
10001 fiq模式快速中断模式紧急的硬件中断
10011svc模式  管理员模式 操作系统 运行在该模式
10111abort模式终止模式出现内存或数据 异常
11011undefined模式 未定义指令模式出现一个不识别的指令
11111  system模式系统模式  操作系统 使用
10010 irq模式 中断模式当硬件出现中断事件需要打断CPU
10110monitor模式安全模式  cortex-A架构有使用

ARMcpu 的模式:   7  +1 种模式(最后一个在cortex-A架构有使用),每一种模式 都有一套 寄存器  R0-R15 CPSR  SPSR

模式分:

        特权模式   除usr模式外的其它模式

        异常模式: 除sys模式外

        非异常模式:  sys模式

        非特权模式 usr

其中,异常模式指发生了 某种特定情况(异常)  才会进入的模式 

注意:

1.usr模式与 SYS模式 共用一套寄存器  R0-R15  CPSR  没有spsr

2.异常模式的 R13(SP) R14(LR)  SPSR 都是独立的

        隔离异常模式 :其各个模式的栈区独立 ;目的:为了安全。

        SPSR:备份异常发生前的cpsr寄存器

总结:

ARMCPU 一共有 多少个寄存器?

答:37+3个   

一共有多少个模式?

答:7+1  8种模式

一共有多少状态?

答:2种状态  ARM状态/thumb状态

 关于异常的总结

异常名  对应的模式 对应入口地址
复位异常 svc 0x0000 0000
未定义指令异常undefined模式 0x0000 0004
软中断异常(swi) svc   0x0000 0008
指令预取异常 abort模式   (虚拟内存)0x0000 000c
数据异常  abort模式   (a / 0 ) 0x0000 0010
(该位置保留) 0x0000 0014
中断异常 irq模式 0x0000 0018
快速中断异常  fiq模式  0x0000 001c

异常处理流程:

硬件处理: 当触发异常时,CPU自动执行的动作,不需要软件参与

1 备份 cpsr 到 对应模式 的spsr

2 设置适当的 CPSR 位

        (1) 设置CPU为ARM状态

        (2) 设置模式位 为对应的模式

        (3) 禁止中断, 若有必要  高于中断优先级的异常

3 保存 pc-4 到 对应模式的 lr中

4 设置PC 为 对应异常的 入口地址   称:异常向量表

软件处理: 处理异常本身

1) 保存现场   将公有寄存器 入栈保存 

2) 处理异常

3) 恢复现场   将公有寄存器 弹栈恢复  恢复cpsr 恢复LR到pc

异常优先级:

1、Reset

2、Data Abort

3、FIQ

4、IRQ

5、Prefetch Abort

6、SWI

7、Undefined instruction

fiq 快速中断  与irq中断

问 fiq 为什么比irq快?

1) fiq 独立寄存器多 入栈保存的公有寄存器少 

2) fiq 优先级高于irq

3) fiq 异常入口 位于异常向量表的最后, 不用跳转直接处理异常

流水线 

为了提高程序执行效率, 通过流水线的方式 实现一条指令 至少有3个动作:

取址: 从内存中 读取指令 

译码: 解锁指令中需要的寄存器

执行: 指令执行

多级流水线:         

  ARM7  三级流水线

  ARM9  五级流水线

  ARM10/ARM11 七级流水线

  cortex-A9 13级流水线

流水线的建立 需要时间,所以不是流水线越多越好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y_寒酥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值