• ARMV8体系结构简介


    armv8

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

    3. ARMV8架构基本特性

    image

    • 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.异常级别

    image

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

    6. 内存管理单元

    image

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

    7.程序寄存器

    image

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

    8. DEBUG

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

    9.生态系统演变

  • 相关阅读:
    Idea中创建maven项目
    安装axios
    配置路由
    安装Mock.js
    安装SCSS
    Incorrect username or password ( access token )
    Navicat使用笔记06Navicat Premium 12的安装、激活
    dump.rdb file All In One
    如何把闲置的 Mac mini 搭建成一个局域网中的 Web 服务器 All In One
    VSCode walkthroughs All In One
  • 原文地址:https://www.cnblogs.com/linhaostudy/p/10643443.html
Copyright © 2020-2023  润新知