简介
定义:
Arm architecture
Arm 架构是世界上最流行的处理器架构之一。ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下的微处理器。ARM处理器广泛的使用在许多嵌入式系统。ARM处理器的特点有指令长度固定,执行效率高,低成本等。
A-Profile (Applications) | R-Profile (Real-Time) | M-Profile (Microcontroller) |
高性能场景 | 实时系统 | 小型,高能效设备 |
用于运行复杂的操作系统,如Linux,Windows | 网络和嵌入式设备 | 物联网设备 |
RISC设计主要特点
- 指令集——RISC减少了指令集的种类,通常一个周期一条指令,采用固定长度的指令格式,编译器或程序员通过几条指令完成一个复杂的操作。而CISC指令集的指令长度通常不固定;
- 流水线——RISC采用单周期指令,且指令长度固定,便于流水线操作执行;
- 寄存器——RISC的处理器拥有更多的通用寄存器,寄存器操作较多。例如ARM处理器具有37个寄存器;
- Load/Store结构——使用加载/存储指令批量从内存中读写数据,提高数据的传输效率;
- 寻址方式简化,指令长度固定,指令格式和寻址方式种类减少。
Arm的基本数据类型
- 双字节(DoubleWord):64位
- 字(Word):在ARM体系结构中,字的长度为32位。
- 半字(Half-Word):在ARM体系结构中,半字的长度为16位。
- 字节(Byte):在ARM体系结构中,字节的长度为8位。
Arm处理器存储格式
ARM体系结构将存储器看作是从0地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的
最大寻址空间为4GB。ARM体系结构可以用两种方法存储字数据,分别为大端模式和小端模式。
大端模式(高低高低):字的高字节存储在低地址字节单元中,字的低字节存储在高地址字节单元中。
小端模式(高高低低):字的高字节存储在高地址字节单元中,字的低字节存储在低地址字节单元中。
内核的工作模式
1、用户模式(user):正常程序执行模式;
2、快速中断模式(FIQ):高优先级的中断产生会进入该种模式,用于高速通道传输;
3、外部中断模式(IRQ):低优先级中断产生会进入该模式,用于普通的中断处理;
4、特权模式(Supervisor):复位和软中断指令会进入该模式;
5、数据访问中止模式(Abort):当存储异常时会进入该模式;
6、未定义指令中止模式(Undefined):执行未定义指令会进入该模式;
7、系统模式(System):用于运行特权级操作系统任务;
8、监控模式(Monitor):可以在安全模式和非安全模式之间切换;
ARM的5级流水线
流水线的执行顺序:取指令->译码->执行->缓冲/数据->回写
(1)取指令(Fetch):从存储器读取指令;
(2)译码(Decode):译码以鉴别它是属于哪一条指令;
(3)执行(Execute):将操作数进行组合以得到结果或存储器地址;
(4)缓冲/数据(Buffer/data):如果需要,则访问存储器以存储数据;
(5)回写:(Write-back):将结果写回到寄存器组中;
架构:
当我们使用术语架构时,我们指的是功能规范。在 Arm 架构下,我们指的是处理器的功能规范。架构指定了处理器的行为方式,例如它有什么指令以及指令做什么。可以将架构视为硬件和软件之间的契约。架构描述了软件可以依赖硬件来提供哪些功能。正如我们在架构和微架构中解释的那样,一些功能是可选的。
ARM 架构规定:
- | 说明 |
指令集 | 每条指令的功能 指令在内存中如何存储(编码方式) |
寄存器 | 有多少寄存器 寄存器有多少位 寄存器的功能 寄存器初始态 |
异常模型 Exception model | 不同等级的权限 不同异常的类型 发生条件和返回条件 |
存储模型 Memory model | 什么内存可以乱序 cache的行为,软件如何管理 |
Debug trace | 如何设置并触发断点 trace工具能获得什么信息 |
发展:
Arm 架构随着时间的推移而发展,每个版本都建立在之前的基础上。
通常会看到被称为以下内容的架构:Armv8-A:这意味着架构版本是8,A-Profile。或者,简而言之:v8-A
Armv8-A:Armv8-A 于 2011 年发布,是 Arm 架构的第一个 64 位版本。基于 Armv8-A 的设备已部署在从手机到超级计算机的所有领域。
Armv9-A:Armv9-A 是 Arm Architecture for A-profile 的最新版本。Armv9-A 建立在 Armv8-A 之上并添加了新功能,包括:
Scalable Vector Extension, version 2 (SVE2)
Transactional Memory Extension (TME)
Branch Record Buffer Extension (BRBE)
Embedded Trace Extension (ETE)
Trace Buffer Extension (TRBE)
此外,Armv8-A 中的一些可选功能在 Armv9-A 中是必须的。
Arm 发布架构年度更新,增加新的指令和功能。Armv9.0-A 与 Armv8.5-A 对齐,继承 Armv8.5-A 的所有功能并增加新功能。Armv9-A 初始发布后,Armv8-A 和 Armv9-A 一起更新。Arm 将发布 Armv9-A 的新功能,并将继续更新和维护 Armv8-A。
ARM体系结构与编程模型
程序状态保持寄存器:
AArch64下各bit的含义:
N 负数标志位,如果结果为负数,则N=1;如果结果为非负数,则N=0。
Z 零标志位,如果结果为零,Z=1,否则Z=0。
C 进位标志位
V 溢出标志位
SS 软件步进标志位,表示当一个异常发生时,软件步进是否开启
IL 非法执行状态位
D 程序状态调试掩码,在异常发生时的异常级别下,来自监视点、断点和软件单步调试事件中的调试异常是否被屏蔽。
A SError(系统错误)掩码位
I IRQ掩码位
F FIQ掩码位
M[4] 异常发生时的执行状态,0表示AArch64
M[3:0] 异常发生时的mode或异常级别
AArch64 异常处理:
严格来说,中断是软件执行流程的东西,但是,ARM术语中,统称为异常,异常是需要通过特权软件(异常处理程序)执行某些操作以确保系统顺利运行的条件或者系统事件。下面介绍了几种异常:
Interrupt:
包括irq 和 fiq : fiq 的优先级高于irq,这两种异常通常都与内核对的输入引脚相关。由于irq、fiq中断的发生在任何时间,与内核正在执行的软件没有任何关系,称为异步异常。
irq:正常优先级中断
fiq:快速中断
Aborts(终止):"Aborts" 通常指进程或操作的过早终止,通常是由于错误或意外事件引起的。
Reset:"Reset" 通常指将某个系统、设备或应用程序恢复到出厂设置或默认状态。这可以通过软件或硬件手段来实现。
字节序:
查看字节有两种基本方式:
大端(BE):内存中对象中高字节存储在低地址(即接近于零的地址)
小端(LE):低字节存储在低地址
术语:byte-ordering 也可以用来代替大小端
NOR与NAND
NOR闪存和NAND闪存是两种不同类型的非易失性存储器。NOR闪存与常规的ROM类似,可实现随机访问,读速度较快,因此常用于需要快速读取程序代码执行的应用中,如BIOS。NOR闪存还可以用作系统引导设备,在开机时直接从中读取引导程序。而NAND闪存则更适用于需要大容量数据存储的应用,如USB闪存驱动器、固态硬盘等。由于其内部结构和访问方式不同,NAND闪存只能通过页(page)进行读写操作,因此写入速度相比较慢,但具有更高的存储密度和更低的成本。总之,NOR闪存适合小容量且需要快速读取的应用,NAND闪存则适合大容量、数据密集型的应用。
参考
ARM——体系架构_arm架构_Wang20122013的博客-CSDN博客
ARM体系架构总结_总结arm公司近几年研发并推出的架构,并分析这些结构的不同,以及分别擅长应用于什_frank_zyp的博客-CSDN博客