armv8

1.前言

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

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

2. 背景

  • 从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)为了解决旧有架构遗留的问题,提供一种更加清晰的架构,同时考虑到将来的发展趋势,采用一种全新的架构来实现

3. ARMV8架构基本特性

  • 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. 内存管理单元

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

7.程序寄存器

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

8. DEBUG

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

9.生态系统演变

ARMV8体系结构简介的更多相关文章

  1. ARM体系结构简介

    ARM体系结构简介 新一代的ARM9处理器,能达到两倍ARM7的处理能力,它们的区别如下: ARM微处理器的工作状态(可切换): 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令 第二种为 ...

  2. oracle体系结构简介

    oracle体系结构简介 一.物理存储结构    1.数据文件       存放数据库数据,以dbf为扩展名.将数据放在多个数据文件中,       再将数据文件分放在不同的硬盘中,可以提高存取速度. ...

  3. Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide

    来自Java官方的文档,作备忘使用. 简介: Java平台非常强调安全性,包括语言安全,密码学,公钥基础设施,认证,安全通信和访问控制. JCA是平台的一个主要部分,包含一个“提供者”体系结构和一组用 ...

  4. Exchange 2016 体系结构简介

    一.Exchange 2016简介 现在,CPU计算能力的成本显著降低,不再成为约束因素.随着此约束因素的消失,Exchange2016的主要设计目标是简化扩展.提高硬件利用率和实现故障隔离:在Exc ...

  5. oracle 体系结构简介

    1.1.SGA(system global area) SGA是oracle Instance的基本组成部分,在示例启动是分配.是一组包含一个oracle实例的数据和控制信息的共享内存结构.主要用于存 ...

  6. TCP/IP协议体系结构简介

    1.TCP/IP协议栈 四层模型 TCP/IP这个协议遵守一个四层的模型概念:应用层.传输层.互联层和网络接口层. 网络接口层:模型的基层是网络接口层.负责数据帧的发送和接收,帧是独立的网络信息传输单 ...

  7. Spring Framework体系结构简介

    说明:以下转自Spring官方文档,用的版本为4.3.11版本. 一.引用官方文档 2.2.1核心集装箱 所述核心容器由以下部分组成spring-core, spring-beans,spring-c ...

  8. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(3)- 异常

    1.前言 本文介绍异常相关内容,包括异常类型,异常进入,异常返回,异常层次结构,异常的路由等 2.  RESET ARMV8体系结构支持两种类型的RESET Cold reset:Reset PE所有 ...

  9. ARMV8 datasheet学习笔记3:AArch64应用级体系结构

    1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...

随机推荐

  1. AI,如何影响你在看的影视剧和综艺?

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 转自 |  涵的硅谷成长笔记(公众号ID:HanGrowth) 作者 | Han涵 前段时间,作为奥斯 ...

  2. Flutter 即学即用系列博客——04 Flutter UI 初窥

    前面三篇可以算是一个小小的里程碑. 主要是介绍了 Flutter 环境的搭建.如何创建 Flutter 项目以及如何在旧有 Android 项目引入 Flutter. 这一篇我们来学习下 Flutte ...

  3. SQL Server 安装后部分选项初始化脚本

    SQL Server安装后,根据对应的业务场景,数据库实例的部分选项需要调整,例如实例的最大内存.tempdb 文件的增长量.Job执行记录数等等,但这一步经常被大家忽略掉. 其实很多选项初始化都可以 ...

  4. 二、使用docker-compose搭建AspNetCore开发环境

    1 使用docker-compose搭建开发环境 我们的目标很简单:使用docker-compose把若干个docker容器组合起来就成了. 首先使用Nginx代理所有的Web程序,这样只需要在主机上 ...

  5. js 一些工具函数

    1.js金钱转换类 这是一个远古时期的函数,拿来分享一下,它将输入的数字保留2位小数并补0 function formatAsMoney(mnt) { mnt -= 0; mnt = (Math.ro ...

  6. Python编程Day1——计算机组成与操作系统

    一..计算机基础 二.编程与编程的目的 1.什么是语言? 一种事物与另外一种事物沟通的介质 编程语言是程序员与计算机沟通的介质 2.什么是编程? 程序员把自己想要让计算机做的事用编程语言表达出来,编程 ...

  7. 推荐系统(Recommendation system )介绍

    前言 随着电子商务的发展,网络购物成为一种趋势,当你打开某个购物网站比如淘宝.京东的时候,会看到很多给你推荐的产品,你是否觉得这些推荐的产品都是你似曾相识或者正好需要的呢.这个就是现在电子商务里面的推 ...

  8. dev Gridcontrol控件属性部分

    XtraGrid的关键类就是:GridControl和GridView.GridControl本身不显示数据,数据都是显示在GridView/CardView/XXXXView中.GridContro ...

  9. Mybatis+mysql批量插入性能分析测试

    前言 今天在网上看到一篇文章(后文中的文章指的就是它) https://www.jianshu.com/p/cce617be9f9e 发现了一种有关于mybatis批量插入的新方法,而且看了文章发现我 ...

  10. 使用Atlas进行元数据管理之Type(类型)

    背景:笔者和团队的小伙伴近期在进行数据治理/元数据管理方向的探索, 在接下来的系列文章中, 会陆续与读者们进行分享在此过程中踩过的坑和收获. 元数据管理系列文章: [0] - 使用Atlas进行元数据 ...