目录

1.ARM处理器简介及RISC特点

1.1ARM处理器简介

1.2 RISC设计主要特点

2. Arm的基本数据类型

3. ARM处理器存储格式

4. 内核的工作模式

5. ARM9的5级流水线

5.1 流水线的执行顺序

5.2 影响流水线性能的因素

5.3 寄存器组织


1.ARM处理器简介及RISC特点

1.1ARM处理器简介

  ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下

的微处理器。ARM处理器广泛的使用在许多嵌入式系统。ARM处理器的特点有指令长度固定,执行效率高,低成本等。

1.2 RISC设计主要特点

(1)指令集——RISC减少了指令集的种类,通常一个周期一条指令,采用固定长度的指令格式,编译器或程序员通过几条指令完成一个复杂的操作。而CISC指令集的指令长度通常不固定;

  (2)流水线——RISC采用单周期指令,且指令长度固定,便于流水线操作执行;

  (3)寄存器——RISC的处理器拥有更多的通用寄存器,寄存器操作较多。例如ARM处理器具有37个寄存器;

  (4)Load/Store结构——使用加载/存储指令批量从内存中读写数据,提高数据的传输效率;

  (5)寻址方式简化,指令长度固定,指令格式和寻址方式种类减少。

2. Arm的基本数据类型

  双字节(DoubleWord):64位

  字(Word):在ARM体系结构中,字的长度为32位。

  半字(Half-Word):在ARM体系结构中,半字的长度为16位。

  字节(Byte):在ARM体系结构中,字节的长度为8位。

3. ARM处理器存储格式

  ARM体系结构将存储器看作是从0地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的

最大寻址空间为4GB。ARM体系结构可以用两种方法存储字数据,分别为大端模式和小端模式。

  大端模式(高地高低):字的高字节存储在低地址字节单元中,字的低字节存储在高地址字节单元中。

  小端模式(高高低低):字的高字节存储在高地址字节单元中,字的低字节存储在低地址字节单元中。

4. 内核的工作模式

  1、用户模式(user):正常程序执行模式;

  2、快速中断模式(FIQ):高优先级的中断产生会进入该种模式,用于高速通道传输;

  3、外部中断模式(IRQ):低优先级中断产生会进入该模式,用于普通的中断处理;

  4、特权模式(Supervisor):复位和软中断指令会进入该模式;

  5、数据访问中止模式(Abort):当存储异常时会进入该模式;

  6、未定义指令中止模式(Undefined):执行未定义指令会进入该模式;

  7、系统模式(System):用于运行特权级操作系统任务;

  8、监控模式(Monitor):可以在安全模式和非安全模式之间切换;

5. ARM9的5级流水线

5.1 流水线的执行顺序

取指令->译码->执行->缓冲/数据->回写

  (1)取指令(Fetch):从存储器读取指令;

  (2)译码(Decode):译码以鉴别它是属于哪一条指令;

  (3)执行(Execute):将操作数进行组合以得到结果或存储器地址;

  (4)缓冲/数据(Buffer/data):如果需要,则访问存储器以存储数据;

  (5)回写:(Write-back):将结果写回到寄存器组中;

5.2 影响流水线性能的因素

(1)互锁:

  不同的指令顺序也会造成时钟周期的不同,比如一条指令的执行需要前一条指令执行的结果,如果这时结果

  还没出来,那就需要等待,这就是流水线互锁:

LDR r1, [r2, #4] ADD r0, r0, r1  //r1的值需要等到LDR的结果

(2)跳转指令:

  跳转指令也会破坏流水线的行为,后续指令的取值步骤受到跳转目标的影响。

5.3 寄存器组织

(1)ARM Cortex-A8处理器有40个32位长的寄存器:

    a、32个通用寄存器

    b、7个状态寄存器:1个CPSR(当前程序状态寄存器)

            6个SPSR(备份程序状态寄存器)

    c、1个PC(程序计数器)

(2)每一种处理器模式有一组响应的寄存器组,如下对应方式:

(3)通用寄存器包括R0-R15,可以分为3类:

A、未分组寄存器R0 – R7:

  在所有运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途。因此在中断或异常

处理进行异常模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,所以可能造成寄存器中数据的破坏。

B、分组寄存器R8 – R14:

  对于分组寄存器,他们每次所访问的物理寄存器都与当前的处理器运行模式相关。

  R13常用作存放堆栈指针,用户也可以使用其他寄存器存放堆栈指针,称为SP;

  R14称为链接寄存器(LR),当执行子程序时,R14可得到R15(PC)的备份,执行完子程序后,又将R14的值

  复制回PC,即使用R14保存返回地址。

C、程序计数器PC(R15):

  寄存器R15用作程序计数器(PC),在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,

  位[31:1]用于保存PC。对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的

  地址值加8个字节。

(4)程序状态寄存器:

  CPSR(Current Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括

条件标志位、中断禁止位、当前处理器模式标志位以及其他一些相关的控制和状态位。包含以下内容:

ALU状态标志的备份;
当前的处理模式
中断使能标志;
设置处理的状态;
  每一种运行模式下都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序

状态寄存器),当异常发生时,SPSR用于保存当前CPSR的值,从异常退出时则可由SPSR来恢复CPSR。

由于用户模式和系统模式不属于异常模式,这两种状态下没有SPSR,因此在这两种状态下访问SPSR,结果是未知的。

ARM学习-ARM架构基本内容相关推荐

  1. ARM学习-ARM指令集详解

    目录 1. ARM 存储器访问指令 1.1 LDR 和STR 加载/存储字和无符号字节指令 1.2 LDM和STM 批量加载/存储指令 1.3 SWP 寄存器和存储器交换指令 2.  ARM 数据处理 ...

  2. ARM学习(12)基于arm架构的嵌入式操作系统理解

    ARM学习(12)基于arm架构的嵌入式操作系统理解 笔者来聊聊指令集的理解 这里写自定义目录标题 ARM学习(12)基于arm架构的嵌入式操作系统理解 symbol 符号表认识 symbol符号表的 ...

  3. 从A76到A78——在变化中学习ARM微架构

    一.引言 伴随智能手机的高速发展,移动处理器架构设计厂商ARM公司几乎每年都更新CPU的核心架构.从2018至2020年,ARM公司基于ARMv8架构推出了三代Cortex-A76.Cortex-A7 ...

  4. 【直播预告】从A76到 A78——在变化中学习ARM微架构

    伴随智能手机高速发展,处理器架构设计开发ARM公司几乎每年都更新CPU的核心架构.从2018年至2020年,ARM公司基于ARMv8架构推出了三代Cortex-A76.Cortex-A77.Corte ...

  5. 学习ARM架构,系统移植和驱动开发总结

    本次结束了对ARM架构,系统移植和驱动开发的学习,它们都是属于底层,难度想对都比较的难一点,但先学习arm架构之后去学习系统移植和驱动开发,会使自己对系统移植和驱动开发容易理解点. arm架构 arm ...

  6. ARM CORTEX-M3 内核架构理解归纳

    ARM CORTEX-M3 内核架构理解归纳 来源:网络 个人觉得对CM3架构归纳的非常不错,因此转载 基于<ARM-CORTEX M3 权威指南>做学习总结: 在我看来,Cotex-M3 ...

  7. 关于ARM的内核架构

    @TOC张凌001 关于ARM的内核架构 很多时候我们都会对M0,M0+,M3,M4,M7,arm7,arm9,CORTEX-A系列,或者说AVR,51,PIC等,一头雾水,只知道是架构,不知道具体是 ...

  8. 一起学点ARM的微架构?

    最近在看内核工匠的一篇文章,写的很赞,一起来学一下. 原文链接:https://mp.weixin.qq.com/s/aELd2q_eP5RthpwWI1Huvw 大家可以关注一下这两个: ARM精选 ...

  9. 嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总

    嵌入式工程师到底要不要学习ARM汇编指令? 网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言. 而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精.搞 ...

最新文章

  1. 惨淡!苏州楼市政策调控下,这些房企高调入驻,如今黯然离场?
  2. 基于微信的图片放大预览
  3. 产品定义到产品推广的思路
  4. TimeDistributed in LSTM
  5. Transaction rolled back because it has been marked as rollback-only
  6. 注重代码效率_如何提升质量:注重态度
  7. 参考文献的类型及标识
  8. 关于C++异常处理的一些思考
  9. 在ubuntu上安装Avant Window Navigator (AWN)
  10. mie散射理论方程_亚琛工业大学 计算化学方向 之OPT学习笔记第一部分第一节 静态光散射...
  11. 如何让 Mac 朗读提醒信息中的文本?
  12. tcs标准编写软件_tcs 2010软件下载
  13. wincc控件包下载_Simatic HMI WinCC V7.4 SP1 组态软件下载
  14. rMATs 分析可变剪切
  15. java hypot_java.lang.StrictMath.hypot()方法实例
  16. 单的axis java教程
  17. DoT/DoH/DoQ 之 CoreDNS配置
  18. TCP通信 、 UDP通信
  19. 项目团队效能的影响因素及其生成关系模型
  20. 5000词学英语——DAY10

热门文章

  1. C++ 析构函数的作用
  2. r7 3700u和i5 8250u的区别哪个好
  3. 上路新手自动挡友好驾驶总结
  4. 计算机专业中期答辩怎么说,中期答辩的一些注意事项和常见问题
  5. 8.4 自定义 Git - 使用强制策略的一个例子
  6. HashMap的hash碰撞
  7. Maven相关常见面试题
  8. 完美实现刮刮乐抽奖(该有的都有),html+css+jquery实现
  9. 外卖返利cps分销系统每日领卷美团优惠券红包流量小程序搭建源码
  10. 用 Python 制作“除夕夜倒计时”海报,新的一年你准备好了么?