ARMv8是ARM重点发展的一个架构。有一些年头了!我们来了解下!
本文介绍了ARMv8-a中的一些概念!
从ARMv7开始,ARM公司面向三个市场:应用、实时、控制,分别推出A、R、M系列处理器。ARM公司目前正在往服务器、企业设备方向进军。因此对于内存、虚拟化、安全需求迫切。在此背景下,ARMv8推出。
我们从5个方面描述:
1,AArch64,A64指令集,这里有一个误解是,64bit的指令集是指通用寄存器是64位宽的,而不是指32位的指令集编码变成64位的。ARMv7的LPAE技术可以解决4G的物理地址寻址限制。它主要解决虚拟地址寻址。
2,作为一家IP公司,ARM的设计必须保证向上兼容,因此定义了两套运行环境(ES:Execution state)。
3,AArch64摒弃了之前的处理器模式、优先级级别等传统概念。提出了EL(Exception level)。
4,在ARMv7 security extension的基础上,新增security model,支持安全相关的应用需求。
5,在ARMv7 virtualization extension的基础上,提供完整的virtualization框架,从硬件上支持虚拟化。
ARMv7之前,关键字处理器模式和privilege level:
处理器工作模式有:User、FIQ、IRQ、Abort、Undefined、System等,
不同的处理器模式有不同的权限privilege level。主要有主要有2个level,privilege和non-privilege。其中只有User模式属于non-privilege level,其它均是privilege level。大多数时候,软件都运行在User mode。一旦需要其它操作,则需要切换到相应的privilege模式下。这些处理器模式,除User模式外,其它模式基本上和各类异常一一对应。而不同的模式,都有一些自己独有的寄存器,例如R13(SP)、R14(LR)等等,可以使模式切换过程(也是异常处理过程)更为高效、便利。
类似于LINUX的用户需要root操作权限一样。这是等级权限的安全观,不同权限做不同的事。
ARMv7-a,扩展privilege level为PL0和PL1、PL2(用于虚拟化扩展Virtualization Extension)
增加了两个模式:Monitor和Supervisor,分别用于security扩展和virtualization扩展。
ARMv8-a,放弃处理器模式概念。形成Exception level,简称EL0-EL3。
放弃privilege level的概念。形成Exception level,可以将EL0归属于non-privilege level,EL1/2/3属于privilege level。
这些Exception level的现实意义是:
ARMv8-a Exception level有关的说明如下:
1)AArch64中,已经没有User、SVC、ABT等处理器模式的概念,为了兼容,在AArch32中,就把这些处理器模式映射到了4个Exception level。
2)Application位于特权等级最低的EL0,Guest OS(Linux kernel、window等)位于EL1,提供虚拟化支持的Hypervisor位于EL2(可以不实现),提供Security支持的Seurity Monitor位于EL3(可以不实现)。
3)只有在异常发生时(或者异常处理返回时),才能切换Exception level(这也是Exception level的命名原因,为了处理异常)。当异常发生时,有两种选择,停留在当前的EL,或者跳转到更高的EL,EL不能降级。同样,异常处理返回时,也有两种选择,停留在当前EL,或者调到更低的EL。
security model
ARMv8-a的security模型基本沿用了ARMv7 security extension的思路,主要目的保护一些安全应用的数据。它不同于privilege level等软件逻辑上的保护,而是一种物理上的区隔,即不同security状态下,可以访问的物理内存是不同的。
ARMv8-a架构有两个security state,Security和non-Security。主要的功效是物理地址的区隔,以及一些system control寄存器的访问控制:
在Security状态下,处理器可以访问所有的Secure physical address space以及Non-secure physical address space;
在Non-security状态下,只能访问Non-secure physical address space,且不能访问Secure system control resources。
virtualization
硬件虚拟化包括指令集虚拟化、异常处理虚拟化、MMU虚拟化、IO虚拟化等。
参考:
ARMv8_white_paper_v5.pdf
Fundamentals of ARMv8-A.pdf
附:TEEOS与EL之间的关系如下下图: