0
点赞
收藏
分享

微信扫一扫

ARM 体系架构

未定义变量 2023-09-21 阅读 55

简介

定义:

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体系结构与编程模型

ARM 体系架构_闪存

程序状态保持寄存器:

ARM 体系架构_v8_02

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 也可以用来代替大小端

ARM 体系架构_v8_03


NOR与NAND

NOR闪存和NAND闪存是两种不同类型的非易失性存储器。NOR闪存与常规的ROM类似,可实现随机访问,读速度较快,因此常用于需要快速读取程序代码执行的应用中,如BIOS。NOR闪存还可以用作系统引导设备,在开机时直接从中读取引导程序。而NAND闪存则更适用于需要大容量数据存储的应用,如USB闪存驱动器、固态硬盘等。由于其内部结构和访问方式不同,NAND闪存只能通过页(page)进行读写操作,因此写入速度相比较慢,但具有更高的存储密度和更低的成本。总之,NOR闪存适合小容量且需要快速读取的应用,NAND闪存则适合大容量、数据密集型的应用。


参考

ARM——体系架构_arm架构_Wang20122013的博客-CSDN博客

ARM体系架构总结_总结arm公司近几年研发并推出的架构,并分析这些结构的不同,以及分别擅长应用于什_frank_zyp的博客-CSDN博客

举报

相关推荐

0 条评论