卢骏 · 2020年06月24日

ARMv8架构简介

ARM结构,一直都在升级,到目前,已经升级到了ARMv8。
1.png

ARMv8,提出了很多新的概念。

一、两种执行状态

在ARMv8中,引入了两种执行状态:
◾ AArch32
◾ARMv7的升级版
◾ A32(ARM)和T32(thumb),两种指令集
ARMv8架构中,增加了一些指令
◾传统ARM的特权模式
◾通用寄存器位宽是32bit
◾ 使用单一CPSR保存PE状态
◾使用32bit的虚拟地址
◾支持协处理器
◾ AArch64
◾ 通用寄存器位宽是64bit
◾ 提供64bit PC,SP 和 ELR(exception-link-register)
◾新的指令集-A64,固定32bit的指令集
◾新的特权模式
◾使用一组PSTATE保存PE状态
◾不支持协处理器
◾使用64bit虚拟地址

AArch32(简称A32),兼容以前的arm指令,包括ARM和thumb指令,而AArch64,是全新的指令集,不兼容以前的arm指令。对于A64,使用64bit的虚拟地址,因此支持操作更大的memory空间。而pc也是64bit,因此可以在更大的memory空间上取指令执行。

可以认为AArch64(简称A64),是全新的ARM指令,和以前ARM指令完全不一样,因此区别也是比较大的。推出全新的指令集,是为了设计出更高性能的CPU。

二、特权模式与安全状态
1、特权模式

A64中,提出了全新的特权模式,不再使用A32中所使用的7种复杂的特权模式。

A64提出了简单的4种特权模式EL(exception level),分别是EL0,EL1,EL2,EL3。
2.png

EL0 : 运行应用程序

EL1 : 运行操作系统

EL2 : 运行虚拟机

EL3 : 运行安全管理

其中EL3的运行权限最高,EL0的运行权限最低。运行权限,会影响资源的访问。

ARMv8虽然定义了EL2和EL3,但是这两个EL不是一定要实现的。可以根据自己的需求,进行裁剪,或者都实现,或者都不实现,或者只实现一个。但EL0和EL1肯定是要实现的。

对于A32,还是兼容之前的特权模式。而每个特权模式,其实和A64的EL是有对应关系的。
3.png

对于A32:

◾ user特权模式,对应于A64的EL0。

◾ supervisor, abort, undef, system, irq, fiq六种特权模式,对应于A64的EL1。

◾ hyp对应于A64的EL2,运行虚拟机。

◾ mon对应于A64的EL3,运行安全管理。

同理,hyp和mon不是一定要实现的。但7种特权模式,肯定是要实现的。

2、安全状态

ARMv8中,引入了两种安全状态:

◾ secure state

◾non-secure state

这里的安全状态,主要是影响资源的访问,比如memory,系统寄存器等。

对于memory,有时候需要做数据隔离,用于保护数据的安全性。因此就可以将memory分成两个区域,secure区域和non-secure区域。对于secure的memory区域,只允许secure状态去访问,而对于non-secure的memory区域,允许secure状态和non-secure状态都可访问。这样可以保护数据的安全。

对于系统寄存器,有些系统寄存器限制了最低EL的访问,这样可以有效的保护系统。不让低EL运行的程序,误操作这些系统寄存器而使整个系统崩溃掉。

对于EL1和EL0,可以是non-secure状态,也可以是secure状态。

对于EL2,只能是non-secure状态。据说最新的ARMv8.4,EL2可以是secure状态。

对于EL3,只能是secure状态。

secure和non-secure状态的切换,只能通过EL3进行切换,也就是如果想从non-secure的EL0切换到secure的EL0,首先要先从non-secure的EL0,通过异常切换到EL3,然后再通过异常,返回到secure的EL0。

三、A64与A32的切换

对于A32来说,ARM和thumb的切换,通过bx指令即可切换。但是对于A64和A32两种执行状态,只能通过异常,进行切换。
4.png

ARMv8对EL切换,进行了以下的限定:

◾切换到低EL,执行状态要么保持,要么切换到A32

◾ 切换到高EL,执行状态要么保持,要么切换到A64

也就是如果当前执行状态是A32,切换到低EL,那么执行状态只能是A32。如果当前执行状态是A64,切换到高EL,那么执行状态只能是A64。

如下图所示,在A64的操作系统中,可以运行A32的应用程序,但是在A32的操作系统中,不能运行A64的应用程序。

5.png

如果EL3是A32,那么所有的EL都是A32了。

系列其他篇

原文首发于骏的世界博客
作者:卢骏.
更多Arm技术相关的文章请关注Arm技术博客极术专栏,每日更新。
推荐阅读
关注数
23390
内容数
895
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息