ARMv8-A笔记二 ARMv8基本功能

**

一、执行级别

**
在ARMv8架构中,有4个执行级别。在AArch64中,这四个级别决定了执行的特权,armv7中也有类似的特权级别。
ELn,n越大特权越高。软件执行在不同的级别,从而实现了不同域的保护。
EL0 应用程序;
EL1 操作系统
EL2 hypervisor虚拟机
EL3 底层固件,包括secure monitor

通常情况下,各程序执行级别如下,也有例外,比如KVM,会跨EL2和EL1操作
在这里插入图片描述

ARMv8-A 有两个安全状态, Secure 和Non-secure。如图,Non-secure指normal world, 这样能使一个OS和一个受信任的OS一起运行在同一个硬件上,并且提供确定的软件/硬件攻击保护。ARM TrustZone 技术将整个系统分为Normal和Secure worlds。 和ARMv7一样, Secure monitor 扮演一个Normal和Secure worlds之间的网关角色。
在这里插入图片描述

如上图,ARMv8-A提供虚拟技术hypervisor,其仅在Normal world。hypervisor, 即虚拟机管理(VMM) 代码可以在系统中运行并且可以主持多个guest OS.每个guest OS运行在一个虚拟机上,并无意识地和其他guest OS 共享时间。
Normal world(Non-secure)有特权的组件
1、Guest OS kernel. 当在hypervisor下运行时,这些OS可以作为guest 还是 host取决于hypervisor model.(这个host是什么意思现在还不理解,川哥给的回复:先不纠结吧,可能hypervisor有多个mode,Wind River的hypervisor用的是GOS的形式)
2、hypervisor, hypervisor始终在Non-secure,当其被enable后,为其他OS提供虚拟服务
Secure world 有特权的组件:
1、Secure firmware: firmware 是第一个被执行的boot程序.它提供几个服务,包括平台初始化, trusted OS的安装, secure monitor的路由
2、trusted OS: 它为normal world提供安全服务, 为安全或者信任的应用程序提供运行环境。

ARMv8的 Secure monitor不属于Normal world 和 Secure world,它单独处于一个更高级别EL3

AArch64 和 AArch32, 决定使用64位宽的通用寄存器还是32位宽的通用寄存器。
AArch64使用A64指令集
AArch32使用A32指令集合T32(Thumb)指令集

AArch64 指令集中,Trusted OS在secure EL1, 但是在AArch32中,它在EL3执行
在这里插入图片描述

**

二、ELn级别的改变

**
在armV7中,由对应特权软件控制或者异常产生时进入另外一个特权级,core保存当前执行状态和返回地址,进入需要的特权模式并且可能关闭硬件中断。
ELn对应PLn:
在这里插入图片描述
在这里插入图片描述映射关系如下:
在这里插入图片描述

ELn之间的转换规则;
1、当转为更高权级表明软件执行特权变高,如EL0----> EL1
2、一个异常不可能导致更低的权级
3、在EL0中没有异常处理函数,异常处理函数必须在更高级别中去处理
4、异常会改变程序执行流程,执行异常处理从高于EL0的异常向量表开始。异常:
中断,如IRQ FIQ
系统调用。。。。。。。。。
5、异常处理结尾返回上一个特权级别的指令:ERET
6、从一个异常返回时可以保持同一个特权级或者进入一个更低的级。不能进入更高的级别。

三、改变执行状态

如果你运行一个64位的OS,在EL0想跑一个32位的应用程序时,系统必须改变为AArch32状态,当应用程序执行完成或者执行返回到OS,需要变回AArch64. 一个AArch32的OS不能跑一个AArch64的应用程序。改变执行状态只能通过改变执行权级实现。在EL3的code不能进入到更高的特权级中,所以EL3中不能改变执行状态,除非重启。
回到AArch32执行状态是通过更高的ELn到底的ELn,这是通过ERET指令退出异常处理的结果。
回到AArch64执行状态是通过更低的ELn到高的ELn
ARMv8在AArch32下的异常处理类似于armV7的异常处理,AArch64下的异常处理有AArch64 Exception Handling
一个AArch64的hypervisor可以host AArch32和AArch64的guest OS, 一个AArch64的 OS可以host AArch32 和AArch64 的应用程序,反之则不行。
如下图:
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值