ARM学习-ARM架构基本内容
目录
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架构基本内容相关推荐
- ARM学习-ARM指令集详解
目录 1. ARM 存储器访问指令 1.1 LDR 和STR 加载/存储字和无符号字节指令 1.2 LDM和STM 批量加载/存储指令 1.3 SWP 寄存器和存储器交换指令 2. ARM 数据处理 ...
- ARM学习(12)基于arm架构的嵌入式操作系统理解
ARM学习(12)基于arm架构的嵌入式操作系统理解 笔者来聊聊指令集的理解 这里写自定义目录标题 ARM学习(12)基于arm架构的嵌入式操作系统理解 symbol 符号表认识 symbol符号表的 ...
- 从A76到A78——在变化中学习ARM微架构
一.引言 伴随智能手机的高速发展,移动处理器架构设计厂商ARM公司几乎每年都更新CPU的核心架构.从2018至2020年,ARM公司基于ARMv8架构推出了三代Cortex-A76.Cortex-A7 ...
- 【直播预告】从A76到 A78——在变化中学习ARM微架构
伴随智能手机高速发展,处理器架构设计开发ARM公司几乎每年都更新CPU的核心架构.从2018年至2020年,ARM公司基于ARMv8架构推出了三代Cortex-A76.Cortex-A77.Corte ...
- 学习ARM架构,系统移植和驱动开发总结
本次结束了对ARM架构,系统移植和驱动开发的学习,它们都是属于底层,难度想对都比较的难一点,但先学习arm架构之后去学习系统移植和驱动开发,会使自己对系统移植和驱动开发容易理解点. arm架构 arm ...
- ARM CORTEX-M3 内核架构理解归纳
ARM CORTEX-M3 内核架构理解归纳 来源:网络 个人觉得对CM3架构归纳的非常不错,因此转载 基于<ARM-CORTEX M3 权威指南>做学习总结: 在我看来,Cotex-M3 ...
- 关于ARM的内核架构
@TOC张凌001 关于ARM的内核架构 很多时候我们都会对M0,M0+,M3,M4,M7,arm7,arm9,CORTEX-A系列,或者说AVR,51,PIC等,一头雾水,只知道是架构,不知道具体是 ...
- 一起学点ARM的微架构?
最近在看内核工匠的一篇文章,写的很赞,一起来学一下. 原文链接:https://mp.weixin.qq.com/s/aELd2q_eP5RthpwWI1Huvw 大家可以关注一下这两个: ARM精选 ...
- 嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总
嵌入式工程师到底要不要学习ARM汇编指令? 网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言. 而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精.搞 ...
最新文章
- 惨淡!苏州楼市政策调控下,这些房企高调入驻,如今黯然离场?
- 基于微信的图片放大预览
- 产品定义到产品推广的思路
- TimeDistributed in LSTM
- Transaction rolled back because it has been marked as rollback-only
- 注重代码效率_如何提升质量:注重态度
- 参考文献的类型及标识
- 关于C++异常处理的一些思考
- 在ubuntu上安装Avant Window Navigator (AWN)
- mie散射理论方程_亚琛工业大学 计算化学方向 之OPT学习笔记第一部分第一节 静态光散射...
- 如何让 Mac 朗读提醒信息中的文本?
- tcs标准编写软件_tcs 2010软件下载
- wincc控件包下载_Simatic HMI WinCC V7.4 SP1 组态软件下载
- rMATs 分析可变剪切
- java hypot_java.lang.StrictMath.hypot()方法实例
- 单的axis java教程
- DoT/DoH/DoQ 之 CoreDNS配置
- TCP通信 、 UDP通信
- 项目团队效能的影响因素及其生成关系模型
- 5000词学英语——DAY10