1. 前言

本文主要概括的介绍ARMV8体系结构定义了哪些内容,概括的说:

  • ARM体系结构定义了PE的行为,不会定义具体的实现
  • ARM体系结构也定义了debug体系结构和trace体系结构
  • ARM体系结构采用RISC指令集

(1)长度一致的寄存器;

(2)load/store架构,数据处理操作只能对寄存器内容进行处理,不会直接对内存的内容进行处理;

(3)简单寻址方式,load/store地址来源于寄存器或指令域(如立即数)

  • ARM体系结构定义了PE与存储系统的交互
  • ARMV8体系结构向后兼容,支持AArch64和AArch32,两种运行状态均支持SIMD和浮点指令

(1)       AArch32

SIMD指令,用来操作32 bit 通用寄存器;

Advanced SIMD指令操作SIMD&FP寄存器;

FP指令操作SIMD&FP寄存器

(2)       AArch64

Advanced SIMD指令操作SIMD&FP寄存器;

FP指令操作SIMD&FP寄存器

2. ARMV8按属性分类

属性

说明

A(Application profile)

基于MMU(内存管理单元)支持VMSA(虚拟内存系统架构);

支持A64/A32/T32指令集

R(Real-time profile)

基于MPU(内存保护单元)支持PMSA(受保护的内存系统架构);

支持A32/T32指令集;

M(Microcontroller profile)

实现了低延迟中断处理,硬件寄存器栈,支持高级语言写中断处理;

实现了PMSA的变种;

实现了T32指令集的变种

注:debug体系结构完全与ARM体系结构集成在一起,没有独立的版本,当前只实现了A-profile

表 ARMV8分类

3. ARMV8体系结构概念

  • Execution State

包括AArch64和AArch32两种运行状态;

两种运行状态的区别:

支持的寄存器宽度不同;

支持的指令集不同;

异常级别;

VMSA;

编程模型

  • 指令集

AArch64只支持A64指令集,固定长度为32bit;

AArch32支持A32和T32两种指令集,A32使用固定长度为32bit,T32使用可变16bit和32bit.

  • 系统寄存器

(1)控制处理器状态,并显示处理器状态;

(2)使用标准的命名格式<register_name>.<bit_field_name>来操作寄存器的某一位,也可以<register_name>[x:y]的格式描述;

(3)大部分寄存器有后缀来表示所能访问的最低异常级别:<register_name>_ELx, where x is 0, 1, 2, or 3.

(4)系统寄存器包括:

• General system control registers.

• Debug registers.

• Generic Timer registers.

• Optionally, Performance Monitor registers.

• Optionally, Trace registers.

• Optionally, Generic Interrupt Controller (GIC) CPU interface registers.

  • DEBUG

(1) Self-hosted debug

In this model, the PE generates debug exceptions. Debug exceptions are part of the ARMv8 Exception model.一般应用于应用开发

(2) External debug

In this model, debug events cause the PE to enter Debug state. In Debug state the PE is controlled by an external debugger.

一般用于硬件实现和OS系统

4. 支持的数据类型

数据类型

详细分类

长度

整形数据类型

Byte

8 bits.

Halfword.

16 bits

Word

32 bits.

Doubleword

64 bits.

Quadword

128 bits.

浮点数据类型

Half-precison

Single-precision

Double-precision

其他

Fixed-point interpretation of words and doublewords

Vectors

表 ARMV8支持的数据类型

ARMV8支持的数据类型和寄存器宽度具有如下表所示的关系:

excute state

寄存器宽度

说明

AArch32

32bit通用功能寄存器

两个32bit寄存器可以支持doubleword,支持vector数据类型

64bit SIMD&FP寄存器

两个64bit寄存器可以用作128bit寄存器使用不支持quardword integer或浮点数据类型

AArch64

64bit通用功能寄存器

很多指令可以访问64bit寄存器的32bit或64bit

128bit SIMD&FP寄存器

Quardword integer只能使用SIMD&FP寄存器;

浮点数据类型只能使用SIMD&FP寄存器;

根据A64指令编码不同,可以使用64bits或128bits长度

表 ARMV8支持的数据类型与寄存器宽度的关系

5. 浮点和Advanced SIMD支持

TODO

6. 加密扩展

TODO

7.ARM存储模型

  • ARM存储模型支持的特性

(1)非对齐的内存地址访问会产生异常

(2)限制Application访问特定的内存区域

(3)通过指令将虚拟地址转换为物理地址

(4)对多字节数据进行大小端转换

(5)控制访问内存的顺序

(6)控制caches和地址转换结构???

(7)同步多个PE访问的共享内存

  • 虚拟地址支持的特性

(1)AArch64

支持64bit虚拟地址,Translation Control Register决定支持的VA范围.

EL0和EL1支持两种独立的虚拟地址范围,有各自独立的转换控制逻辑

(2)AArch32

支持32bit虚拟地址,Translation Control Register决定支持的VA范围.

EL0和EL1,系统软件可以将VA分割成两个独立的子范围???,有各自独立的转换控制逻辑

(3)无论是AArch32还是AArch64,VMSA都可以将VA转换为物理地址空间的block或page

8. 参考文档

[1] DDI0487A_k_armv8_arm_iss10775.pdf

ARMV8 datasheet学习笔记2:概述的更多相关文章

  1. ARMV8 datasheet学习笔记5:异常模型

    1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架 ...

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

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

  3. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之VMSA

    1. 前言 2. VMSA概述 2.1 ARMv8 VMSA naming VMSAv8 整个转换机中,地址转换有一个或两个stage VMSAv8-32 由运行AArch32的异常级别来管理 VMS ...

  4. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之存储模型

    1.前言 关于存储系统体系架构,可以概述如下: 存储系统体系结构的形式 VMSA 存储属性   2. 存储系统体系结构 2.1.    地址空间 指令地址空间溢出 指令地址计算((address_of ...

  5. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST

    1.前言 ARMV8系统级编程模型主要包括异常级别.运行状态.安全状态.同步异常.异步异常.DEBUG 本文主要对系统级编程模型做一个概要介绍 2. 异常级别 2.1 Exception level概 ...

  6. ARMV8 datasheet学习笔记1:预备知识

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

  7. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之Generic timer

    1.前言 2.generate timer 2.1 概述 提供了一个系统计数器,用来实时测量流逝的时间: 提供了一个虚拟计数器,用来测量某个虚拟机上流逝的虚拟时间: 定时器,每隔一段时间会触发事件,支 ...

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

    1. 前言 2.可配置的指令使能/禁用控制和trap控制 指令使能/禁用 当指令被禁用,则这条指令就会变成未定义 指令Trap控制 控制某条或某些指令在运行时进入陷阱,进入陷阱的指令会产生trap异常 ...

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

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

随机推荐

  1. 自学工业控制网络之路1.4-典型的现场总线介绍CAN

    返回 自学工业控制网络之路 自学工业控制网络之路1.4-典型的现场总线介绍CAN 1991年3月,发布了CAN技术贵干v2.0,包含了A.B两部分.CAN2.0A给出报文标准格式,CAN2.0B给出了 ...

  2. 【转】STC51单片机下载程序的时候不要在VCC端接DHT11

    今天使用51单片机学习板调试DHT11湿度传感器,下载程序的时候把DHT11烧掉了. 一开始我使用杜邦线把DHT11的VCC引脚接到学习板上的VCC端,GND接GND,数据端口接51单片机的P0.0. ...

  3. Hadoop HDFS命令

    hadoop fs -mkdir  创建HDFS目录 # hadoop fs -mkdir /data Hadoop fs -ls  列出HDFS目录 # hadoop fs -ls /data ha ...

  4. 跟我一起使用electron搭建一个文件浏览器应用吧(四)

    在软件的世界里面,创建一个新项目很容易,但是坚持将他们开发完成并发布却并非易事.分发软件就是一个分水岭, 分水岭的一边是那些完成的被全世界用户在用的软件,而另外一边则是启动了无数项目却没有一个完成的. ...

  5. Faster RCNN代码理解(Python)

    转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...

  6. eclipse安装Spring Tool Suite 各个版本的方法

    有时候spring官网上找不到与我们当前eclipse对应的spring插件,用URL的方式安装费时又费力,那么如何下载对应的spring插件呢? 先到插件页面,然后点击“原先的插件版本” 显示出这个 ...

  7. HDU2072 tri树/map/set/字符串hash

    lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题 水题 就是用来试试字符串算法的 tri树 ...

  8. HTTP协议和SOCKS5协议

    HTTP协议和SOCKS5协议 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们平时上网的时候基本上是离不开浏览器的,尤其是搜索资料的时候,那么这个浏览器是如何工作的呢?用的又是 ...

  9. java抽象类与接口回顾

    1.抽象类中可以包括成员变量,方法,构造器,初始化块,内部类(接口/枚举)五种成分.2.让A类中包含B方法,又不提供B方法的实现,即抽象方法只有方法签名,没有方法体.3.有抽象方法的类只能被定义成抽象 ...

  10. 转--python之正则入门

    原文地址 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法 ...