为了增强arm架构的安全性,aarch64一共实现了secure和non-secure两种安全状态。通过一系列硬件扩展,在cpu执行状态、总线、内存、外设、中断、tlb、cache等方面都实现了两种状态之间的隔离。
在这种机制下,secure空间的程序可以访问所有secure和non-secure的资源,而non-secure空间的程序只能访问non-secure资源,却不能访问secure资源。从而可以将一些安全关键的资源放到secure空间,以增强其安全性。
为此aarch64实现了4个异常等级,其中EL3工作在secure空间,而EL0 – EL2既可以工作于secure空间,又可以工作于non-secure空间。不同异常等级及不同secure状态的模式下可运行不同类型软件。
如secure EL1和El0用于运行trust os内核及其用户态程序,non-secure EL1和El0用于运行普通操作系统内核(如linux)及其用户态程序,EL2用于运行虚拟机的hypervisor。
而EL3运行secure monitor程序(通常为bl31),其功能为执行secure和non
secure状态切换、消息转发以及提供类似psci等secure空间服务。
以下为其示意图:
psci是工作于non secure EL1(linux内核)和EL3(bl31)之间的一组电源管理接口,其目的是让linux实现具体的电源管理策略,而由bl31管理底层硬件相关的操作。从而将cpu电源控制这种影响系统安全的控制权限放到安全等级更高的层级中,从而提升系统的整体安全性。
那么psci如何从EL1调用EL3的服务呢?其实它和系统调用是类似的,只是系统调用是用户态程序陷入操作系统内核,而psci是从操作系统内核陷入secure monitor。armv8提供了一条smc异常指令,内核只需要提供合适的参数后,触发该指令即可通过异常的方式进入secure monitor。
-
电源
+关注
关注
185文章
18439浏览量
257511 -
ARM
+关注
关注
134文章
9395浏览量
379951 -
cpu
+关注
关注
68文章
11118浏览量
218342 -
SMP
+关注
关注
0文章
78浏览量
20367
发布评论请先 登录
ARMv8架构资料分享
ARMv8架构概述
Armv7和Armv8系统中跟踪的高级视图详解
ARMv8-A TrustZone软件对实施SVE的系统的影响
ARM推新品:ARMv8首次支援64位元指令集
64位ARMv8架构交易敲定 ARM助力Cavium进军新领域
TRACE32支持ARMv8架构
从软件开发的角度概述ARMv8处理器架构中的虚拟化操作

ARMv8处理器体系结构中的虚拟化功能

Armv8架构及虚拟化介绍
rk3588是armv8吗?rk3588硬件资料
ARMv8工作模式有哪些

armv8 u-boot的启动介绍

评论