ARMv8架构学习---Privilege, Security, Modes and Exception Levels

1、执行64位宽的寄存器,又兼容ARMv7架构的软件,即既支持32bit,又支持64bit,AArch64 & AArch32

2、分离了privilege和mode,ARMv7是一体的

在ARMv8中,安全状态下,有PL3、PL1、PL0,没有PL2,可以访问安全内存空间

非安全状态下,有PL2、PL1、PL0,没有PL3,不可访问安全内存空间

每一个PL级别, 决定一套指令和寄存器集。

3、Exception Levels(EL)

EL也有4级,EL0、EL1、EL2(仅在非安全状态下存在)、EL3(仅在安全状态下存在)

在AArch64下,EL决定PL,当前执行在ELx,PL也就为PLx。

EL的切换:发生一个异常or从一个异常返回

发生一个异常:EL >= 当前EL

从一个异常返回:EL <= 当前EL

EL的决定性:决定当前执行状态,如哪种寄存器,PL,寄存器位宽等

EL的级别:数字越大,级别越高,相当于权限越大。

一般应用程序使用EL0,OS内核使用EL1,Hypervisor使用EL2,Security Monitoe使用EL3

4、寄存器位宽

EL级别变大,寄存器位宽变大或者不变;EL级别变小,寄存器位宽变小或者不变。

EL0的寄存器位宽,由EL1中的HCR/SCR寄存器中某bit决定,只能通过从异常返回来设置

EL1的寄存器位宽,由EL2中的HCR寄存器或者EL3中的SCR寄存器中某bit决定,根据安全非安全状态决定是EL3还是EL2。

EL2、EL3的寄存器位宽, 由复位时的配置管脚设置

5、指令集

A32: 兼容ARMv7架构中的32bit ARM指令集

T32: 兼容ARMv7架构中的16bit & 32bit Thumb指令集

T32EE:兼容ARMv7架构中的16bit & 32bit ThumbEE指令集

A63:ARMv8新定义的64bit指令集

6、AArch32

如果最高级别的EL如EL2orEL3使用AArch32,则整个系统必须使用AArch32;

AArch32下,ARMv8下的执行就跟ARMv7一样,只是虚拟化扩展和大物理地址扩(LPAE)展有点改变

7、异常返回状态

AArch64下,异常返回状态由ELR(Exception Link Register)和SPSR(Saved Processor State Register)寄存器决定。

ELR中保存异常返回地址,SPSR保存处理器状态。

8、堆栈指针选择

EL0下,堆栈指针为SP_EL0,其他为SP_ELx。

9、安全模型

在ARMv7下,安全扩展引入了Monitor模式,该模式来实现安全和非安全状态的切换。

ARMv8下,当EL3使用AArch32,为了兼容ARMv7,在安全模式下不区分EL,只有一个EL3

Non-secure state             Secure State

EL0         Application

EL1         OS

EL2         Hypervisor

EL3                                               Secure Monitor ->Secure OS ->Secure Application

ARMv8下,当EL3使用AArch64,EL和安全是分离的

Non-secure state             Secure State

EL0         Application                       Secure Application

EL1         OS                                  Secure OS

EL2         Hypervisor

EL3                                               Secure Monitor

10、执行模式

ARMv7中的模式包括user、FIQ、IRQ、Supervisor、Monitor、Abort、Hyp、Undefined、System,混合了各种概念。

ARMv8在AArch64中的模式EL0t、EL1t & EL1h、EL2t & EL2h、EL3t & EL3h,后缀t表示SP_EL0堆栈指针,h表示SP_ELx堆栈指针

时间: 2024-10-02 00:06:06

ARMv8架构学习---Privilege, Security, Modes and Exception Levels的相关文章

ARMV8 datasheet学习笔记5:异常模型

1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架构下IRQ 和Data Abort 异常处理流程图对比. 3.1 IRQ 路由 3.1.1.   AArch32 IRQ 路由 图 AArch32 IRQ 路由 3.1.2.    AArch64 IRQ 路由 图 AArch64 IRQ路由 图 AArch64 IRQ向量查找 3.2.     D

MySQL Innodb 架构学习

一.MySQL后台线程   1.Master Thread 核心后台线程,主要负责将缓冲池的数据异步刷新到磁盘.例如脏页的刷新,插入缓冲的合并,undo 页的回收等. 1)每秒一次的操作: 日志缓冲刷新到磁盘,即使该事务还没有提交.该操作总是会发生,这个就是为了再大的事务,提交时间都很短. 当IO压力很小时(1s内发生的IO次数小于5% innodb_io_capacity)合并5% innodb_io_capacity 的插入缓冲. 当脏页比例大于 innodb_max_dirty_pages

【WPF学习笔记】之 System.Exception 对象名 &#39;XXXX&#39; 无效。

我在运行vs时候发现项目报错,如下图: 报Exception错误,对象名"XXXXXX"无效. 经过调查得知,因为连接数据库的库名写错了,如下: 对应正确数据库的库名: 把库名改正确,问题就解决了. [WPF学习笔记]之 System.Exception 对象名 'XXXX' 无效.

高可用软件Keepalived学习之Keepalived架构学习

最近在测试新游戏的部署方案,我们正在测试的一款手游后端代码部署采用HAProxy+Keepalived的方式进行部署,所以顺便研究下Keepalived的详细资料. Keepalived的官方地址是http://www.keepalived.org/index.html Keepalived是一个用C语言编写的路由软件,它的目的是为Linux系统或基于Linux系统的基础架构提供简单而强壮的负载均衡和高可用机制.负载均衡框架依赖于LVS的内核模块并提供四层负载均衡功能.它可以根据负载均衡器后端的

ABP架构学习系列

ABP实践学习系列 ABP Zero 本地化语言的初始化和扩展 ABP Zero 导航菜单之角色权限 ABP Zero示例项目问题总结 ABP后台服务之作业调度Quartz.NET ABP架构学习系列 ABP架构学习系列一 整体项目结构及目录 ABP架构学习系列二:ABP中配置的注册和初始化 ABP架构学习系列三:手工搭建ABP框架 IOC基础学习系列 .Net IOC框架入门之一 Unity .Net IOC框架入门之二 CastleWindsor 各大主流.Net的IOC框架性能测试比较(转

ARMv8 架构与指令集.学习笔记

目 录 第1章 ARMv8简介. 3 1.1基础认识. 3 1.2 相关专业名词解释. 3 第2章 Execution State 4 2.1 提供两种Execution State 4 2.2 决定Execution State的条件. 4 第3章 Exception Level 5 3.1 Exception Level 与Security 5 3.1.1 EL3使用AArch64.AArch32的对比. 5 3.2 ELx 和 Execution State 组合. 6 3.3路由控制. 

分布式架构学习之:015--ActiveMQ 的安装与使用(单节点)

ActiveMQ 的安装与使用(单节点) IP:192.168.4.101 环境:CentOS 6.6.JDK7 1. 安装 JDK 并配置环境变量(略) JAVA_HOME=/usr/local/java/jdk1.7.0_72 2. 下载 Linux 版的 ActiveMQ(当前最新版 apache-activemq-5.11.1-bin.tar.gz) $ wget http://apache.fayea.com/activemq/5.11.1/apache-activemq-5.11.1

ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(3)- 异常

1.前言 本文介绍异常相关内容,包括异常类型,异常进入,异常返回,异常层次结构,异常的路由等 2.  RESET ARMV8体系结构支持两种类型的RESET Cold reset:Reset PE所有的逻辑,包括集成的debug功能 Warm reset:Reset PE所有的逻辑,不包括集成的debug功能 注:ARMV8也支持外部debug reset Reset时pe进入最高的异常级别 运行状态 (1)Reset后最高异常级别可以选用任何一种运行状态 (2)cold reset由输入信号配

ABP架构学习系列三:手工搭建ABP框架

由于公司的项目才接触到ABP这个框架,当时就觉得高大上,什么IOC.AOP.ddd各种专业词汇让人激情 澎湃,但在使用过程中碰到了许多坑,可能也许是没有去看源码导致的,但工作确实没有那么多时间让人去慢慢研究.很久之前想手动搭建这个框架了,但是各种理由,你懂的.但是要在技术上得到大的提升就得静的下心去研究,学到大神的思想和精髓,运用到实际中去,才能去体验更开阔的天地. 本文以创建博客为思路,一步步构建整个项目,在摸索中进步,也希望能够帮助到有需要的人. 一.基础架构 第一部分主要是搭建好整个项目的