前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图说ARMv8架构特点

图说ARMv8架构特点

作者头像
安智客
发布于 2018-02-24 07:24:12
发布于 2018-02-24 07:24:12
3K0
举报
文章被收录于专栏:安智客安智客

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之间的关系如下下图:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安智客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
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。
安智客
2018/07/30
1.4K0
ARMv8架构特性总结
【ARM架构】armv8 系统安全概述
一个安全或可信的操作系统保护着系统中敏感的信息,例如,可以保护用户存储的密码,信用卡等认证信息免受攻击。
嵌入式与Linux那些事
2023/03/24
8620
【ARM架构】armv8 系统安全概述
[core]-ARMV7-A、ARMV8-A、ARMV9-A 架构简介「建议收藏」
Armv9-A 架构建立在 Armv8-A 架构的基础上并向前兼容。 Armv9-A 架构构成了 Arm 基础系统架构的基础——该规范概述了一种标准,可确保硬件和固件在系统级的广泛应用中具有兼容性。
全栈程序员站长
2022/07/31
2.3K0
Armv8架构虚拟化介绍
本文描述了Armv8-A AArch64的虚拟化支持。包括stage 2页表转换,虚拟异常,以及陷阱。本文介绍了一些基础的硬件辅助虚拟化理论以及一些Hypervisor如何利用这些虚拟化特性的例子。文本不会讲述某一具体的Hypervisor软件是如何工作的以及如何开发一款Hypervisor软件。通过阅读本文,你可以学到两种类型的Hypervisor以及它们是如何映射到Arm的异常级别。你将能解释陷阱是如何工作的以及其是如何被用来进行各种模拟操作。你将能描述Hypervisor可以产生什么虚拟异常以及产生这些虚拟异常的机制。理解本文内容需要一定基础,本文假定你熟悉ARMv8体系结构的异常模型和内存管理。
用户9732312
2022/05/13
8130
Armv8架构虚拟化介绍
ARMv8 异常处理简介
内核稳定性问题复杂多样,最常见的莫过于“kernel panic”,意为“内核恐慌,不知所措”。这种情况下系统自然无法正常运转,只能自我结束生命,留下死亡信息。诸如:
刘盼
2020/09/10
3.4K0
ARMv8 异常处理简介
ARMv8 寄存器
本文主要介绍 Armv8/v9 指令集架构中常用部分,详细的还是要看 Arm architecture reference manual.
233333
2024/03/17
3160
ARMv8 寄存器
【ARMv8】异常级别的定义EL0、EL1、EL2、EL3
Exception levels ARMv8-A系列定义了一系列的异常等级,从EL0到EL3,下面具体说明其含义:
233333
2024/03/15
1.3K0
ARMv8-A Exception Levels
在ARMv8中首次引入了Exception Level的概念,每个Exception Level代表了不同的特权级别。当然了ARMv7也存在同样的特权级别,只不过名字是用PL定义的。
DragonKingZhu
2020/03/24
1.9K0
ARMv8-A Exception Levels
ARMv8-A architecture overview
从今天起,正式学习ARMv8-A架构的知识,其中会涉及到ARMv7-A的一些知识,用来和ARMv8-A做对比使用。
DragonKingZhu
2020/03/24
1.3K0
ARMv8-A architecture overview
ARMv8-A TrustZone概述
TrustZone 是 Arm A-profile 架构中安全架构的名称。 在 Armv6K 中首次引入 TrustZone,在 Armv7-A 和 Armv8-A 中也得到支持。 Arm TrustZone是一种针对基于 ARM Cortex 处理器系统的嵌入式安全选项的系统范围方法。 ArmTrustZone也可以说是一种嵌入式安全技术,它从硬件级别开始,通过创建两个可以同时运行在单个核心上的环境:一个安全世界和一个正常世界。
知否知否应是绿肥红瘦
2025/02/19
1410
ARMv8-A TrustZone概述
Cortex-A53架构(记笔记的方法)
一颗芯片最主要的就是CPU核了,处理CPU Core之外,还存在很多其他IP,包括Graphical、Multimedia、Memory Controller、USB Controller等等。
全栈程序员站长
2022/07/28
5.5K0
Cortex-A53架构(记笔记的方法)
ARMv8-A vs ARMv7 Registers
ARM8v-A提供了31个通用寄存器,分别是X0-X30。每个寄存器是64bits,可以在任何Exception Level访问。
DragonKingZhu
2020/04/01
1.1K0
ARMv8-A vs ARMv7 Registers
Hypervisor Necromancy;恢复内核保护器(1)
--[ 0 - 简介 直到最近,为了在运行时攻击者破坏整个系统 发现并利用内核漏洞。这使他们能够执行 各种动作;在内核上下文中执行恶意代码, 修改内核数据结构以提升权限,访问受保护的数据, 等已经引入了各种缓解措施来防止此类 动作和管理程序也被使用,除了他们的 为实现这一目标而使用传统的虚拟化支持。在里面 ARM 虚拟化促进了 Android 生态系统 扩展,允许供应商/OEM 实施自己的保护 功能/逻辑。 另一方面,Android 设备已普遍成为主要的 PITA 由于引入的 OEM 和供应商种类繁多,
franket
2022/02/09
3K0
sparc v8架构的异常处理
对于研究芯片处理器架构,是件非常有意思的事情。刚开始的接触时候也是一头雾水,不知所云,看着厚厚的架构手册,不知道从哪里下手。比如《ARMv8-A Architecture reference manual》一共是6666页纯英文文档,如果没真正看过,估计一上来就开始打退堂鼓了。后面接触的芯片的体系架构多了,自然也明白很多东西其实是有一些共性的,虽然架构不同,但是指令集、流水线以及系统运行的模式也能猜测7到8分准确。本文主要介绍一下sparc v8体系架构下的异常处理,同时简单的对比一下armv8体系架构的异常。
bigmagic
2020/09/10
1K0
sparc v8架构的异常处理
aarch64 和 ARMV8 的区别
aarch64 和 ARMv8 是紧密相关但涵义不同的术语,在解释他们的区别之前,让我们先简单理解它们各自的含义: ARMv8: ARMv8 是指 ARM 架构的第八个版本,这是由 ARM Holdings 设计的一种处理器架构(也称为 ARMv8-A)。这个版本首次引入了对 64 位处理器的支持,它被设计来提供增强的性能,更好的电能效率,以及对现代计算需求的支持,比如高级多媒体和安全性能等。ARMv8 架构同时支持 64 位(AArch64)和 32 位(AArch32)指令集。 AArch64: AArch64 是 ARMv8 架构中用来描述 64 位的处理器状态和对应的指令集的术语。当处理器运行在这个状态下时,它可以执行 64 位的指令集并访问 64 位的寄存器。AArch64通常被用来指代64位的ARM处理器和操作系统。 总而言之,ARMv8 指的是处理器架构的一个版本,这个版本包括了 64 位处理能力。而 aarch64 指的是 ARMv8 架构中的 64 位指令集。也就是说,aarch64 是 ARMv8 的一部分。所有运行在 aarch64 模式下的ARM处理器都基于 ARMv8 架构,但 ARMv8 架构也包括对之前架构如 ARMv7 的兼容支持(例如,在 32 位模式下运行)。
233333
2023/12/12
2.9K0
ARMv8虚拟化基础知识
本文描述了ARMv8-64的虚拟化支持。讨论主题包括stage-2地址转换、虚拟异常和陷入。
Tupelo
2022/08/15
2.6K0
ARMv8虚拟化基础知识
深入理解Aarch64的内存管理
本文介绍了AAR64内存管理中最重要的内容--内存转换,解释了虚拟地址是如何翻译为物理地址的,翻译表的格式,以及如何管理TLBS。
嵌入式与Linux那些事
2022/09/23
1.6K0
深入理解Aarch64的内存管理
ARMv8-A Exception Handling
当设备正在愉快的执行时候,此时发生了一个异常,处理器就必须暂停当前的任务,转而去处理发生的异常。当异常处理完毕后,处理就会发回到被打断的程序继续执行。
DragonKingZhu
2020/04/09
2.4K0
aarch64系统级体系架构之异常级别
系统的异常级别对于arm芯片来说非常的重要,对于操作系统层面上来说,理解芯片的体系架构,将很容易的进入状态,随心所欲的去玩转芯片,对于做应用来说,熟悉芯片的体系架构,可以解决非常棘手的问题,比如系统的安全还有就是实时性响应问题。比如我们的手机指纹加密数据,实际上是在安全模式下的,此时对于运行在非安全模式下的操作系统,其实是获取不到指纹的数据的,只是处理安全模式下发送过来的结果,类似的还有支付安全。
bigmagic
2020/05/07
1.9K0
aarch64指令集_AArch64应用程序级编程模型
根据实现选择,体系结构支持多级执行特权,由从EL0到EL3的不同异常级别表示。EL0对应于最低的特权级别,通常被描述为无特权。应用层程序员模型是在EL0上执行软件的程序员模型。
全栈程序员站长
2022/11/03
8480
相关推荐
ARMv8架构特性总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档