ARMv8架构特性总结

ARMv8架构,引入了Execution State、Exception Level、Security State等新特性,是目前ARM架构变动最大的一次,具体来说: 1,A64:对于Large memory的需求也可通过Large Physical Address Extensions (LPAE) 技术,虽然可以支持高达40bits的物理地址空间,但受限于32-bit的指令集,虚拟地址空间依旧只有32bits(4G),定义64-bit的指令集(A64)。向前兼容32-bit指令集(A32和T32)。 2,安全:在ARMv7 security extension的基础上,兼容TrustZone架构,新增security model。它不同于privilege level等软件逻辑上的保护,而是一种物理上的区隔,即不同security状态下,可以访问的物理内存是不同的。在Security状态下,处理器可以访问所有的Secure physical address space以及Non-secure physical address space;在Non-security状态下,只能访问Non-secure physical address space。

3,虚拟化:在ARMv7 virtualization extension的基础上,提供完整的virtualization框架,从硬件上支持虚拟化。包括指令集虚拟化、异常处理虚拟化、MMU虚拟化、IO虚拟化。

4,EL:定义AArch64和AArch32两套运行环境(称作Execution state),分别执行64-bit和32-bit指令集。使用exception level,替代了processor mode、privilege level等概念。

ARMv8 定义了4 个 Exception level,简称 EL0-EL3。同时Exception level 包含了 privilege 概念。

AArch64中,已经没有User、SVC、ABT等处理器模式的概念,由于向前兼容,在AArch32中,就把这些处理器模式映射到了4个Exception level。如上图所示。

当异常发生时,有两种选择,停留在当前的EL,或者跳转到更高的EL,EL不能降级。同样,异常处理返回时,也有两种选择,停留在当前EL,或者调到更低的EL。应用位于特权等级最低的EL0,Guest OS(Linux kernel等)位于EL1,提供虚拟化支持的Hypervisor位于EL2(可以不实现),提供Security支持的Seurity Monitor位于EL3。这里面体现了安全防御的思想,即出现异常事件必须由逐级由上一级EL处理。

(ARM32、Thumb、ARM64位指令集之间的关系如上图)

原文发布于微信公众号 - 安智客(china_safer)

原文发表时间:2018-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端大白专栏

基于mpvue开发微信小程序(项目已开源)

30360
来自专栏程序员互动联盟

Android上学习ARM指令集系列第一篇

打算为入门ARM指令集写点初级文章,没什么远大理想,写到哪里算哪里,权当娱乐罢了。工作中经常碰到crash的问题,如果是debug版本,那还好, 调...

36280
来自专栏杨建荣的学习笔记

shell脚本心得(r2笔记58天)

零零星星的接触到写一些shell也有一些日子了,发现自己已经犯了不少的错误,自我总结下。 选择合适的shell shell本身有很多种,大体有如下的几种。 /...

31480
来自专栏云计算教程系列

如何在Ubuntu 14.04上为IRC安装Lita Chat Bot

许多现代DevOps团队在聊天室周围建立了越来越多的基础设施。有很多聊天室,从商业选项(如HipChat和Slack)到DIY选项(如IRC或Jabber / ...

9510
来自专栏沈唁志

写给PHP开发者的五个建议

18140
来自专栏FreeBuf

微信也被监控:HackingTeam语音监控代码分析

在HackingTeam泄漏的文件,我们发现了有针对主流聊天软件中的语音进行监控的代码,其中包括国内常用的微信。下面就以微信为例,来分析一下HackingTea...

32080
来自专栏芋道源码1024

告诉你 Redis 是一个牛逼货

Redis 是一个 Key-Value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、 list...

14700
来自专栏前端大白专栏

基于mpvue开发微信小程序(项目已开源)

花了两周时间,我的微信小程序终于开发完了(平时上班,基本上都是业余时间开发的). 下面来介绍一下项目的功能以及结构. 用到的技术栈 vue2+weui+es6;...

56890
来自专栏Android 开发者

开发者也是用户 — 第一部分:构建更具可用性的 UI 与 API 的 5 个方针

20120
来自专栏阿杜的世界

【译】Go语言编程模式

在2016年伦敦举办的QCon大会上,Peter Bourgon做了《六年Go语言设计经验》的报告,重点探讨了在使用Go进行开发时的编程模式和反模式。在这里,我...

12030

扫码关注云+社区

领取腾讯云代金券