ARMv8-AArch64简述

发布者:疯狂小马最新更新时间:2021-11-29 来源: eefocus关键字:ARMv8  AArch64  简述 手机看文章 扫描二维码
随时随地手机看文章

ARMv8是ARM版本升级以来最大的一次改变,ARMv8的架构继承以往ARMv7与之前处理器技术的基础,除了现有的16/32bit的Thumb2指令支持外,也向前兼容现有的A32(ARM 32bit)指令集,扩充了基于64bit的AArch64架构,除了新增A64(ARM 64bit)指令集外,也扩充了现有的A32(ARM 32bit)和T32(Thumb2 32bit)指令集;

这里写图片描述

ARMv8拥有两种执行模式(two execution modes):

AArch64 :64-bit registers and memory accesses, new instruction set;

AArch32 : backwards compatible with ARMv7-A;


(一)A64新的指令和寄存器


固定大小32位操作码,清除基于5位寄存器说明符的解码表;

可以拥有32位或者64位参数;

地址设定为64位,主要针对LP64和LLP64数据模型;

比AArch32拥有更少的条件指令,条件指令有:分支,比较,选择;

没有LDM/STM(用于批量从内存中读取或者写入数据)指令,添加LDP/STP指令来操作以降低复杂性及功耗;

支持先进的SIMD(Single-Instruction,Multiple-Data:单指令多数据)和(FP浮点);

支持加密技术;

可随时访问31个通用的64位寄存器 (X0-X30),没有banked(banked是指一个寄存器不同模式下会对应不同的物理地址)的通用寄存器堆栈指针(SP),PC不是通用寄存器,附加专用的零寄存器(Xzr);

AArch32状态是使用CPSR来存储当前process执行状态,AArch64定义了一组PSTATE寄存器用以保存PE(Processing Element)状态;

AArch64 – Unbanked Registers:

这里写图片描述

左边的通用寄存器用于:32位或者64位的整数运算或者64位的寻址,右边的用于浮点运算;


AArch64 Banked Registers:

这里写图片描述

AArch64不在根据之前通过不同模式来区别banked寄存器,而是通过exception level;


下图为AArch32和AArch64通用寄存器对应关系:

这里写图片描述

(二)AArch64 Exception Model


AArch64 Exception Model:

这里写图片描述

Exception model nomenclature:

这里写图片描述

总共分为4 exception levels: EL3-EL0,在这种特权模式下EL0位权限最低模式,也就是用户模式,Monitor(EL3)和Supervisor(EL2),分别用于security扩展和virtualization扩展;;低level向高level切换通过exception的方式转换,有如下exceptions:


Interrupts, page faults etc.

SVC for transition to EL1 (system calls)

HVC for transition to EL2 (hypervisor:超级监督者 calls)

SMC for transition to EL3 (secure monitor call)

Dedicated ELR register for the return address (banked at each EL);

而高level向低level则通过ERET指令;

低level的寄存器位宽不能大于高level:E.g. no 64-bit EL0 with 32-bit EL1;


对异常的处理:


1. Exception Link Register written on exception entry;

2. 异常有可能发生任何在exception level,EL1, EL2, and EL3有不同的向量表地址,之前的arm版本只有一个向量表地址;

3. 向量的区分是根据Exception type(synchronous, IRQ, FIQ or System Error)或者Exception origin (same or lower exception level) and register width;

4. Syndrome 寄存器提供了exceptions信息;


AArch32 and AArch64之间切换

这里写图片描述

AArch32和AArch64之间的切换只能通过发生异常或者系统Reset来实现,A32 -> T32之间是通过BX指令切换的;


不同level之间的组合:

这里写图片描述

AArch32 /AArch64 relationship:


Changes between AArch32 and AArch64 occur on exception/exception return only;

Allows AArch32 applications under AArch64 OS Kernel;

Allows AArch32 guest OS under AArch64 Hypervisor

Allows AArch32 Secure side with AArch64 Non-secure side


(二)AArch64 MMU Support


在ARMv8 64bit出现之前,我们用的都是32位寻址,每个地址单位对应内存一个字节单元(B),所以我们最大的寻址范围为2^32B = 4GB,但是实际当中,内存设备有可能远远大于4GB内存空间,以前是通过LPAE(大物理地址扩展)实现地址的扩展,可以支持最大2^40的地址寻址范围,ARMv8理论上最高可以提供提供了2^64个虚拟地址,但是超过16 Exabyte (2^4 * 2^60)意义并不大,所以选择跟x86一样,可以使用最大支持2^48虚拟地址的寻址范围就足够;


ARM 32bits下会用TTBR0存储User-Space行程所在的Page Table (也就是0xC0000000以下的存储空间),并用TTBR1存储Kernel Space所在的Page Table (也就是0xC0000000以上的存储空间).

这里写图片描述

在ARMv8 64bits架构下,会通过EL1的TTBR0 (ttbr0_el1, in /arch/arm64/mm/proc).存储User-Space行程所在的Page Table,与EL1的TTBR1存储Kernel Space所在的Page Table,并会依据Page Size与32/64bits行程而有不同的存储空间配置. 參考如下圖所示:

这里写图片描述

由于ARM 64bit Kernel分页大小为4kb和64kb两种,通过设置TASK_SIZE_64 (/arch/arm64/include/asm/memory.h)来设定,当分页大小为4KB的时候,决定TASK_SIZE_64大小的VA_BITS会等于39,也就是2^39大小的Task空间(=512GB),若分页大小为64KB时,则TASK_SIZE_64对应的VA_BITS等于 42,也就是2^42大小的Task空间(=4TB).

这里写图片描述

同时kernel空间也根据分页大小来划分内核空间,可以参考下面的图来区分:

这里写图片描述

参考资料:


ARM(V8) Architecture Reference Manual.pdf


ARMv8 Technology Preview.pdf


www.arm.com -cotex-A57介绍


Linux Support for ARM LPAE 分析


ARMv8 与 linux 的新手笔记


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

关键字:ARMv8  AArch64  简述 引用地址:ARMv8-AArch64简述

上一篇:ARM基础学习-协处理器CP15
下一篇:【汇编优化】之ARM32与AARCH64指令集优化总结

推荐阅读最新更新时间:2024-11-17 03:51

MCS-51单片机汇编指令格式简述
简述MCS-51汇编指令格式。 答: MCS-51汇编语言指令由四部分组成,其一般格式如下: 操作码 格式中的方括号意为可以没有相应部分,可以没有标号、操作数和注释,至少要有操作码。其操作数部分最多可以是两项:
[单片机]
简述兆欧表的使用方法和注意事项
1、兆欧表放置平稳牢固,被测物表面擦干净,以保证测量正确。 2、正确接线:兆欧表有三个接线柱:线路(L)、接地(E)、屏蔽(G)。根据不同测量对象,进行相应接线,如图1、图2所示。测量线路对地绝缘电阻时,E端接地,L端接于被测线路上;测量电机或设备绝缘电阻时,E端接电机或设备外壳,L端接被测绕组的一端;测量电机或变压器绕组间绝缘电阻时先拆除绕组间的连接线,将E、L端分别接于被测的两相绕组上;测量电缆绝缘电阻时E端接电缆外表皮(铅套)上,L端接线芯,G端接芯线最外层绝缘层上。 3、由慢到快摇动手柄,直到转速达120r/min左右,保持手柄的转速均匀、稳定,一般转动1min,待指针稳定后读数。 4、测量完毕,待兆欧表停止转动和被测
[测试测量]
<font color='red'>简述</font>兆欧表的使用方法和注意事项
简述真空压力表的分类及注意事项
真空压力表用于测量对钢,铜及铜合金无腐蚀作用,无爆炸危险的不结晶,不凝固的液体,气体或蒸汽介质的压力或负压。耐震真空压力表表用于振动和压力有波动下,测量无腐蚀,无结晶的介质的负压。电接点压力真空表和电接点真空表用于对铜及铜合金无腐蚀作用,无爆炸危险的非结晶、不凝固的液体,气体等介质的(压力)和负压的测量,当压力达到预定值时,借助接点装置,能接通或断开控制电路,同时发出电信号。 真空压力表的分类: 真空压力表是以大气压力为基准,用于测量大于和小于大气压力的仪表。真空压力表用于测量对钢,铜及铜合金无腐蚀作用,无爆炸危险的不结晶,不凝固的液体,气体或蒸汽介质的压力或负压。 耐震真空压力表作为耐震压力表的一个分类,用于振动和压力有波动
[测试测量]
简述实时测试的演变
  测控技术是一门新型的技术科学,也是一门边缘科学。早在一千多年以前,我国就先后发明了铜壶滴漏计时器、指南针以及天文仪器等多种自动测控装置,这些发明促进了当时社会经济的发展。即使从 1788 年瓦特( J.Watt )发明蒸汽机飞球 调速器 算起,测控工程也已有了二百多年的历史。然而,测控工程作为一门学科,它的形成并迅速发展却是最近五六十年的事。纵观控制工程发展历程,它是与控制理论、计算机技术、现代应用数学的发展息息相关的。目前,控制理论正在与模糊数学、分形几何、混沌理论、灰色理论、人工智能、神经网络、遗传基因等学科的交叉、渗透和结合中不断发展。先进技术的发展日新月异,测试技术应该适应这种发展。根据先进制造技术发展的要求以及测试技术
[测试测量]
<font color='red'>简述</font>实时测试的演变
变频电动钻机控制系统简述
变频电动钻机电器控制系统由发电系统(发电机、控制柜)、交流传动系统(变频柜、制动柜、)控制网络(PLC柜、司钻操作台、工控机、远程计算机、AS-i总线系统)、交流电机控制中心组成。 1) 动力发电系统 该控制装置共有4个发电控制柜组成,其主要功能是:控制柴油机的转速与发电机的励磁电流,得到600V、50HZ稳频、稳压电流,作为全井场的动力电源;发电机控制柜内还设有并网控制电路,控制多台发电机的并网以达到同期合闸操作。发电机可按工况需要,全部或任意两台以上在线运行时,负荷都能均衡分配,负荷转移平稳,能承受钻机的负荷特性和电动机起动时的冲击。发电机控制装置还具有功率限制、自起动电源电路、接地检测相序保护、过流保护、过压保护、欠压保护
[嵌入式]
简述氧化锆氧量分析仪的工作原理和内容分析
氧化锆氧量分析仪主要用于测量燃烧过程中烟气的含氧浓度,同样也适用于非燃烧气体氧浓度测量。它又被称为氧化锆氧量分析仪,氧化锆分析仪/氧化锆氧量计/氧化锆氧量表.在传感器内温度恒定的电化学电池(氧浓差电池,也简称锆头)产生一个毫伏电势,这个电势直接反应出烟气中含氧浓度值。氧传感器的关键部件是氧化锆,在氧化锆元件的内外两侧涂上多孔性铂电极制成氧浓度差电池。它位于传感器的顶端。为了使电池保持额定的工作温度,在传感器中设置了加热器。用氧分析仪内的温度控制器控制氧化锆温度恒定。氧化锆氧量分析仪的构成是由氧传感器(又称氧探头、氧检测器)、氧分析仪(又称变送器、变送单元、转换器、分析仪)以及它们之间的连接电缆等组成。 氧化锆探头是利用氧化锆浓差电
[测试测量]
简述stm32的usart的功能特点
关于STM32的启动流程,网上有的资料在讨论几种boot模式,有的在回答启动文件的内容,在查阅了很多资料后,本文给出一个比较全面的总结和回答。 1. 根据boot引脚决定三种启动模式 复位后,在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。BOOT0 为专用引脚,而 BOOT1 则与 GPIO 引脚共用。一旦完成对 BOOT1 的采样,相应 GPIO 引脚即进入空闲状态,可用于其它用途。BOOT0与BOOT1引脚的不同值指向了三种启动方式: 从主Flash启动。主Flash指的是STM32的内置Flash。选择该启动模式后,内置Flash的起始地址将被重映射到0x00000000地址,代码将在该处开始执行。一般我
[单片机]
<font color='red'>简述</font>stm32的usart的功能特点
简述示波器进行电源纹波分析及测试
一、什么叫纹波? 纹波(ripple)的定义是指在直流电压或电流中,叠加在直流稳定量上的交流分量。 它主要有以下害处: 1.1.容易在用电器上产生谐波,而谐波会产生更多的危害; 1.2.降低了电源的效率; 1.3.较强的纹波会造成浪涌电压或电流的产生,导致烧毁用电器; 1.4.会干扰数字电路的逻辑关系,影响其正常工作; 1.5.会带来噪音干扰,使图像设备、音响设备不能正常工作 二、纹波、纹波系数的表示方法 可以用有效值或峰值来表示,或者用绝对量、相对量来表示; 单位通常为:mV 例如: 一个电源工作在稳压状态,其输出为12V5A,测得纹波的有效值为10mV, 这10mV就是纹波的绝对量,而相对量,即纹波系数=纹波电压/输出电压
[测试测量]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved