1.前言

本文的主要内容来源于ARMV8白皮书v5,对ARMV8做一个概述。包含如下的内容:

  • 首先从背景谈起,讲述ARM的发展历程;
  • 之后介绍ARMV8体系结构的基本特征;
  • 介绍A64指令集
  • 介绍异常级别
  • 介绍内存管理单元
  • 介绍编程寄存器
  • 介绍DEBUG相关
  • ARMV8生态系统的演化

2. 背景

图 ARMV7之前体系结构与手机发展历程

  • 从1995年,ARMV4(主要对应ARM7 family)开始到现在ARM RISC体系结构到现在已经演化了20多年。从设计一开始ARM就关注到了低功耗
  • 到2011年,所有的ARM-Cotex family都被设计成使用ARMV7架构。

ARM7:采用ARMV4架构

ARM9:ARMV4的变体

ARM11:ARMV4的变体

Cotex-A8:为了匹配不同的市场,ARMV7从Cotex-A8开始被划分为三种属性:Application-Profile、RealTime-Profile、Microcontroller-Profile

Cotex-A9:引入了多核

Cotex-A5:引入低功耗、低成本的网络互联

Cotex-A7:引入了出色的能效管理,可以延长手机的续航时间

Cotex-A15:引入了很多可选的扩展,如LPAE、虚拟化、

  • 为何要引入ARMV8?

(1)考虑到ARMV7被市场广泛接受,以及形成的成熟的生态,因此后续的体系结构升级需要做到向后兼容;

(2)另外要让厂商能够愿意将软件系统迁移到新的体系结构,新的体系结构一定要有原体系结构不具有的优势

(3)为了解决旧有架构遗留的问题,提供一种更加清晰的架构,同时考虑到将来的发展趋势,采用一种全新的架构来实现

基于如上三点,确立了ARMV8的关键功能属性

3. ARMV8架构基本特性

图 不同ARM体系结构版本的演化

  • ARMV8目前只定义了Application profile
  • ARMV8定义了48bit符号虚拟地址和达到48bit物理地址
  • ARMV8采用了新的指令集A64
  • ARMV8兼容ARMV7的指令
  • A32和A64的转换只能发生在异常级别转换时

4. A64指令集

  • A64下的每条指令被定义为固定32bit
  • A32和A64分别解码,这样可以简化解码表,单独的解码表可以允许更多更先进的分支预测技术
  • 通用目的寄存器增加到31个
  • A64删除了LDM/STM指令,因为LDM/STM实现比较复杂
  • 更少的条件指令,因为实现复杂,并且没有明显的好处
  • 浮点单元硬件支持
  • SIMD支持,针对A64做了专门修订,引入了双精度浮点支持

5.异常级别

图 异常级别

  • A32和A64之间的转换有一个严格的规则集合
  • 异常级别增加,可以保持A32或升级到A64
  • A64引入了专门的寄存器ELR,用于记录异常返回地址,在所有的异常入口会进行设置
  • 在异常入口,中断mask会自动置位
  • 每个异常级别都有自己的向量基址寄存器,每个向量被按照类型区分:synchronous,IRQ,FIQ或Error
  • 关于异常的详细细节在syndrome register

6. 内存管理单元

图 ARMV8虚拟地址空间

  • 支持48bit虚拟地址和物理地址,这样可以简化硬件,可以只支持到4级页表;
  • 支持4K和64K页
  • 提供了两种基地址,分别是内核空间和用户空间
  • 用户空间虚拟地址到物理地址的转换需要经过两个阶段,分别是VA->IPA,IPA->PA

7.程序寄存器

表 ARMV8程序寄存存起A64与A32的映射

  • 30个通用寄存器(X0-X30),每个寄存器使64bits,其中X30是LR寄存器
  • 只有一个SP寄存器和ELR寄存器
  • SPSR
  • Pstate

8.DEBUG

  • 可以通过debugger调试器直接发送指令,处理器可以提取
  • 两种类型的debug:self-host和halt mode debug

9.生态系统演变

TODO

10.参考文档

[1]http://www.arm.com/zh/files/downloads/ARMv8_white_paper_v5.pdf

转载于:https://www.cnblogs.com/smartjourneys/p/6829726.html

ARMV8体系结构简介相关推荐

  1. ARMv8体系结构基础01:ARMv8体系结构简介

    目录 1 ARMv8体系结构特性 2 ARMv8体系结构基本概念 2.1 处理机(Processing Element, PE) 2.2 异常等级(Exception Level) 2.2.1 异常等 ...

  2. ARMV8体系结构简介:概述

    1. 前言 本文主要概括的介绍ARMV8体系结构定义了哪些内容,概括的说: ARM体系结构定义了PE的行为,不会定义具体的实现 ARM体系结构也定义了debug体系结构和trace体系结构 ARM体系 ...

  3. ARMV8体系结构简介:预备知识

    1. 前言 ARMv8的架构继承以往ARMv7与之前处理器技术的基础; 除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集. 基于64bit的AAr ...

  4. ARMV8体系结构简介:AArch64系统级体系结构之Self-hosted debug

    1. 前言 2. 关于self-hosted debug Debugger调试器 是操作系统或系统软件的一部分,它会处理debug exception或修改debug system register, ...

  5. ARMV8体系结构简介:exclusive monitor

    为了支持exclusive操作,硬件会增加exclusive monitor来支持. 一.exclusive monitor exclusive monitor分为2类: local monitor: ...

  6. ARMV8体系结构简介:exclusive操作例子

    之前,提到了为什么要引入exclusive操作.ARM对于exclusive操作,新增了exclusive指令. 下面以一个例子,来说明下,这个是如何工作的. 以以下代码进行说明,标准的抢锁代码: 线 ...

  7. ARMV8体系结构简介:AArch64应用级体系结构之Atomicity

    1.前言 Atomicity是内存访问的一个属性,描述为原子性访问,包括single-copy atomicity和multi-copy atomicity 2.基本概念 observer 可以发起对 ...

  8. ARMv8体系结构基础03:加载和存储指令

    目录 1 A64指令集概述 1.1 A64指令集特征 1.1.1 指令定长 1.1.2 可使用64位指针 1.1.3 使用一致的编码结构(consistent encoding scheme) 1.1 ...

  9. ARM V8A体系结构-第五章 ARMv8指令集简介

    概述 ARMv8体系结构中引入的最重要的变化之一是添加了64位指令集.该指令集补充了现有的32位指令集体系结构.此新增提供了对64位宽整数寄存器和数据操作的访问,以及使用64位大小的内存指针的能力.新 ...

最新文章

  1. VINS-Mono关键知识点总结——前端详解
  2. vue 项目抛出警告
  3. 最简方式 表格编辑 基于 el-table
  4. 【期望】彩色圆环(金牌导航 期望-5)
  5. VBScript:登录辅助脚本
  6. 解决gvim中php函数提示php_funclist.dict无法生效的问题
  7. C#关键字详解第一节
  8. 2020-11-11
  9. shiro多Realm分别授权
  10. 计算机文化基础第二次答案,中国石油大学2020年秋计算机文化基础第二次在线作业答案...
  11. 将多个txt文件中的内容写在一个txt中的方法
  12. uniapp对接极光推送
  13. 和君商学院A6选拔赛
  14. 分析Windows二进制文件和嵌入式资源
  15. 夜神模拟器Nox.exe支持命令行参数列表
  16. 浩哥的Linux学习笔记之touch命令
  17. 双色F3.75LED点阵屏中保护电路74HC04的作用
  18. 斗鱼实时计算平台的演进
  19. Mysql分表:Merge
  20. 【CUDA】安装CUDA

热门文章

  1. 深度学习之 epoch batch iteration
  2. websocket server client 编写
  3. u盘iso安装服务器系统怎么安装win7系统安装方法,win7 iso,手把手教你U盘如何安装win7系统...
  4. nodejs实践录:基于koa的简单web服务器
  5. 以太网的phy寄存器分析
  6. python如何搜索关键字_Python遍历目录和搜索文件中的关键字
  7. 【Flink】Flink 报错 Initial AbstractPagedOutputView Segment may not be null
  8. 95-910-172-源码-FlinkSQL-Flink SQL提升吞吐的利器 MicroBatch
  9. 【flink】Flink 使用IntelliJ IDEA 进行远程调试代码
  10. 【java】Java实现单向链表反转