ARM(2)——ARMv7和ARMv8的区别

     ARMv8的架构继承以往ARMv7与之前处理器技术的基础,除了现有的16/32bit的Thumb2指令支持外,也向前兼容现有的A32(ARM 32bit)指令集,基于64bit的AArch64架构,除了新增A64(ARM 64bit)指令集外,也扩充了现有的A32(ARM 32bit)和T32(Thumb2 32bit)指令集,另外还新增加了CRYPTO(加密)模块支持。
    ARMv8新特点:支持64位
    以前的ARM:32位
详细区别参考:https://blog.csdn.net/forever_2015/article/details/50285865
以下只说重要变化:

1.ARMv7之前的实现

ARMv7之前的处理器可以工作在7种工作模式(称作processor mode)下,

        1、用户模式(Usr):用于正常执行程序;

        2、快速中断模式(FIQ):用于高速数据传输;

        3、外部中断模式(IRQ):用于通常的中断处理;

        4、管理模式(svc):操作系统使用的保护模式;

        5、数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储以及存储保护;

        6、系统模式(sys):运行具有特权的操作系统任务;

        7、未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件;

之所以存在不同的模式,主要有2个方面的考虑:

1)不同的处理器模式,有不同的硬件访问权限,称作privilege level。

主要有2个level,privilege和non-privilege。其中只有User模式属于non-privilege level,其它均是privilege level。

安全起见,大多数时候,软件都运行在User mode。一旦需要其它操作,则需要切换到相应的privilege模式下。这是最原始、最朴素的安全思想,当然,只防君子,不防小人。

2)这些处理器模式,除User模式外,其它模式基本上和各类异常一一对应。而不同的模式,都有一些自己独有的寄存器,例如R13(SP)、R14(LR)等等,可以使模式切换过程(也是异常处理过程)更为高效、便利。

2.ARMv7-a的实现

ARMv7-a基本保留了之前的设计,不同之处,将privilege level命名了,称作PL0和PL1(也许您猜到了,后来出现了PL2,用于虚拟化扩展(Virtualization Extension)。

另外,增加了一个模式:Monitor用于security扩展(为支持建立可信赖的执行环境(trust execution environment, TEE)而引入等扩展。)变成8种模式,即增加了Monitor。

还有一个功能:virtualization扩展。

3.ARMv8-a的实现

可能ARMv8-a的设计者觉得之前的设计有些啰嗦,就把processor mode的概念去掉(或者说淡化)了,取而代之的是4个固定的Exception level,简称EL0-EL3。同时,也淡化了privilege level的概念。Exception level本身就已经包好了privilege的信息,即ELn的privilege随着n的增大而增大。类似地,可以将EL0归属于non-privilege level,EL1/2/3属于privilege level。

EL0是user模式
EL1是内核(EL0的user和EL1是6种模式合起来是32位ARM的7种工作模式)
EL2是HYP(虚拟化扩展)
EL3是Monitor(用于安全/非安全世界的切换)

所有说以前的多种工作模式都变成了EL0~EL3

这些Exception level的现实意义是(如下图,先忽略Secure model有关的内容)
90b488a2378e7792f7cf5067541c0b2b20150707143059.gifuploading.4e448015.gif正在上传…重新上传取消aarch32_exception_levels

ARMv8-a Exception level有关的说明如下:

1)首先需要注意的是,AArch64中,已经没有User、SVC、ABT等处理器模式的概念,但ARMv8需要向前兼容,在AArch32中,就把这些处理器模式map到了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

4.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。

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ARM架构是一种广泛应用于嵌入式系统和移动设备的处理器架构。ARM架构参考手册armv8主要针对ARMv8-A体系结构配置,其目标是为开发者提供一个详尽的指南,以便设计和开发基于ARMv8-A架构的处理器。 ARMv8-A体系结构是ARMv8架构的一个子架构,它引入了一些新的特性和升级,旨在提供更高的性能和更强的安全性。该参考手册针对ARMv8-A架构的特定配置,详细介绍了处理器的功能、指令集、内存管理单元、异常处理、系统寄存器和处理器状态等方面。 参考手册提供了一种便于开发者理解ARM体系结构的方式,以及如何在ARMv8-A处理器上编写和优化软件的指导。它包含了许多实用的信息,例如指令的编码方式、操作数的类型、寄存器的用途和指令的执行顺序。开发者可以根据参考手册提供的信息编写高效的代码,并且利用处理器中的各种功能来实现更复杂的计算任务。 在参考手册中,还介绍了一些ARMv8-A处理器的性能优化功能,如预取和缓存机制。这些优化功能可以帮助开发者在应用程序中提高性能,并且减少功耗。此外,ARM架构在安全方面也做出了很多改进,参考手册对于处理器的安全特性和相关的软件编程指导进行了深入的讲解。 总的来说,ARM架构参考手册armv8针对ARMv8-A体系结构提供了全面详细的指南,帮助开发者设计和开发基于该架构的处理器。它是一本必备的参考资料,对于理解ARM处理器的特性和进行软件开发非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值