1. 前言

2. VMSA概述

2.1 ARMv8 VMSA naming

VMSAv8

整个转换机中,地址转换有一个或两个stage

VMSAv8-32

由运行AArch32的异常级别来管理

VMSAv8-64

由运行AArch64的异常级别来管理

2.2 某些异常级别使用AArch32的ARMv8 VMSA

  1. EL3运行AArch32时的地址转换stages和转换regimes;
  2. EL3运行AArch64时任何运行AArch32的异常级别的的地址转换stages和转换regimes;
  3. 当EL0运行AArch32,EL1运行AArch64,PE使用VMSAv8-64 EL1&EL0转换regimes

2.3 VMSA地址类型和地址空间

  • 地址类型

Virtral address(VA)

虚拟地址主要用在指令中作为数据或指令地址,在PC/LR/SP/ELR中得都是虚拟地址

Intermediate physical address(IPA)

(1)对支持两个stages地址转换的regimes,IPA是:

第一转换stage的输出地址;

第二转换stage的输入地址

(2)对于支持一个stage地址转换的regime,IPA与PA相同,可以假定IPA不存在

Physical Address(PA)

(1)物理地址是PE输出给内存系统的输出地址;

(2)EL3和secure EL1针对secure 和 non-secrue提供了单独的PA地址空间:

Secure状态下访问VA可以转换为secure或non-secure的PA;

Non-secure状态下访问VA只能转换为non-secure的PA

  • VA space

最大地址宽度为48bit,256TB,支持两种VA ranges:

(1)转换stage有一个VA range(0x0000000000000000 to 0x0000FFFFFFFFFFFF.);

(2)转换stage有两个VA ranges,一个在64bit的底部(0x0000000000000000 to 0x0000FFFFFFFFFFFF.),一个在64bit的顶部(0xFFFF000000000000 to 0xFFFFFFFFFFFFFFFF)

2.4 AArch64运行状态的地址tagging

高8位地址将被忽略的情况

  1. 当地址转换系统使能时,检查地址是否超出范围并引发translation fault时;
  2. 当地址转换系统未使能时,检查地址是否超出范围并引发address size fault时;
  3. 当运行TLB无效指令时,是否需要无效地址???

地址tag的控制

1. 对于支持2个VA范围,使用1 stage的地址

(1)VA[55]==0: 决定由TCR_ELx.TBI0来决定是否使用地址tag,同时如果stgage 1 tanslation 使能,决定由TTBR0_ELx还是来保存translation table的base address

(2)VA[55]==1: 决定由TCR_ELx.TBI1来决定是否使用地址tag,同时如果stgage 1 tanslation 使能,决定由TTBR1_ELx还是来保存translation table的base address

(3)如果TBIn为1,则load到PC的地址的VA[63~56]按VA[55]做符号扩展

2. 对于支持1个VA范围,使用1 stage的地址

(1)TCR_ELx.TBI决定是否使用地址tag;

(2)同时如果stgage 1 tanslation 使能,决定由TTBR0_ELx还是来保存translation table的base address

(3)如果TBIn为1,则load到PC的地址的VA[63~56]强制为0

地址tag使能位对PC值的影响???

  1. 在受控的异常级别的分支或过程返回;
  2. 传递异常到受控的异常级别;
  3. 异常返回到受控的异常级别;
  4. 从debug状态退出到受控的异常级别

Relaxation of the tagged address handling requirements on an Illegal exception return

3.  VMSAv8-64 地址转换系统

3.1 术语说明

MMU

控制地址转换、存储访问权限、存储属性的检测和检查

MMU模型

  1. 返回一个输出地址OA和地址的属性;
  2. 如果由于某个原因不能进行地址转换会引发MMU fault,系统寄存器可报告各种MMU fault;

转换粒度

  1. 地址转换的页大小,页是最小的内存block;
  2. 转换表的大小

Translation tables

将地址转换及相关联的内存属性放在一个映射表中,这个映射表就叫tanslation tables

Levels of lookup

一个tanslation table lookup只涉及一部分VA bits,因此一次VA查找需要经过多级查找才能最终得到PA

TLB

Translation talbe的项可以放到Translation Lookaside Buffer,TLB也就成为了tanslation table的cache

Translation entry

定义了下面的一些属性:

  1. 对于来自安全状态的访问,地址要映射到安全还是非安全区域;
  2. 内存访问权限;
  3. 内存区域属性

AArch64转换机制

  1. 1 stage地址转换:VA->PA
  2. 2 stage地址转换:VA->IPA->PA

实例:

地址转换与IA范围

  1. 对于支持2个IA范围,会有两组translation tables;
  2. 对于支持1个IA范围,只会有一组translation tables;

VMSAv8-64转换表格式

  1. 达到4级地址查找;
  2. IA达到48bits;
  3. OA达到48bits;
  4. 转换粒度大小可以是4Kb,16kb,64kb.

3.2 控制地址转换stage

地址转换stage

一个寄存器bit使能地址转换的stage

一个寄存器bit决定了tanslation table lookup的端

Translation control regsister控制了地址转换的stage

(Translation table base register)TTBR指明了translation table的基地址

和MMU操作相关的系统寄存器

 

地址大小配置

PA大小

OA大小

IA大小

IPA大小

Atomicity of register changes on changing virtual machine

Use of out-of-context translation regimes

当从一个异常级别切换到另一个异常级别,则之前的异常级别下的内存访问,在当前的异常级别下都不会被观察到.

(1)       当运行在EL3,EL2或secure EL1,PE不能使用non-secure EL1和non-secure EL0的translation机制进行内存的随机访问;

(2)       当运行在EL3或secure EL1,PE不能使用EL2的translation机制进行内存的随机访问;

(3)       当运行在EL3,EL2或non-secure EL1,PE不能使用secure EL1的translation机制进行内存的随机访问;

3.3 内存translation粒度size

Translation 粒度

(1)Translation table的大小;

(2)Page的大小

粒度大小对转换过程的影响(以4k页为例)

(1)       VA[n~0]

page offset,对4k page,则n=12;

(2)       VA[n-3]

表示一级tanslation table的bits。由于一个translation table大小一般是一个page,每个translation talbe entry用8个字节表示,则有PAGE_SIZE/8个tranlation table entry,需要用n-3个bit来表示

以4k页为例,则4k/8=512,因此需要9个bit,也就是12-3

粒度大小对Translation table addressing和indexing的影响

减少的IA宽度的影响

(1)       第一级Translation talbe size减小;

(2)       需要更多的TTBR位来存放更多的base address

Concatenated translation tables

(1)       增加第一级Translation talbe size;

(2)       需要更少的TTBR位来存放更少的base address

3.4  Translation table和translation过程

Translation table walks

  1. Translation table walks:由一个或多个translation table lookups组成,是用来转换VA->PA;
  2. Translation table walk成功将返回如下信息:

(1)       PA,如果是在secure状态下访问,将返回访问的是secure PA space还是non-secure PA space;

(2)       目标存储区域的属性;

(3)       目标存储区域的权限

  1. Translation talbe walk从读取一个translation table开始,TTBR里有translation talbe base地址,每次translation talbe lookup返回一个描述符:

(1)       如果是walk的最后一项,则包含OA;

(2)       如果还有下一级的lookup,则返回下一级lookup的基地址;

(3)       如果描述符是无效的,内存将返回一个translation fault.

访问translation table walks内存的顺序

  1. 执行写translation talbe后任何观察者都可以观察到,但只能保证执行写的PE在执行完DSB指令才可以;
  2. 按代码顺序,在执行写translation table指令之前,任何写入translation table都不会被看到

Translation table walks的安全状态

  1. Non-secure转换机制,所有的translation table lookups输出的是non-secure物理地址;
  2. secure转换机制,所有的translation table lookups输出的是secure物理地址;

Translation table walks的控制

对于支持2个 ranges的1 stage的translation,TCR_ELx. {EPD0, EPD1}位决定stage使用的translation tables是否是合法有效的

3.5  VMSA-v8-64地址转换stage 概览

VMSAv8-64地址转换概览(4K粒度)

  1. 1 stage转换

  1. 2 stage转换

4.参考文档

[1] DDI0487A_k_armv8_arm_iss10775.pdf

ARMV8 datasheet学习笔记4:AArch64系统级体系结构之VMSA的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(2)- 寄存器

    1. 前言 2. 指令运行与异常处理寄存器 ARM体系结构的寄存器分为两类: (1)系统控制和状态报告寄存器 (2)指令处理寄存器,如累加.异常处理 本部分将主要介绍如上第(2)部分的寄存器,分为AA ...

随机推荐

  1. 实现 60fps 的网易云音乐首页

    网易云音乐是一款很优秀的音乐软件,我也是它的忠实用户.最近在研究如何更好的开发TableView,接着我写了一个Model驱动的小框架 - MDTable.为了去验证框架的可用性,我选择了网易云音乐的 ...

  2. 自学Linux Shell6.1-环境变量概念

    点击返回 自学Linux命令行与Shell脚本之路 6.1-环境变量概念 环境变量 在Linux中,很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息: bash shell使用环境变 ...

  3. 架构师成长之路4.4-多维监控体系_zabbix

    点击返回架构师成长之路 点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 架构师成长之路4.4-多维监控体系_zabbix 自学Zabbix之路[第 ...

  4. luogu4267 TamingtheHerd (dp)

    设f[i][j]为让前i天发生j次暴动需要改变的最少的值 则f[i][j]=min{f[k][j-1]+(x[k+1]!=0)+(x[k+2]!=1)+...+(x[i]!=(i-k-1))} $O( ...

  5. http和https的作用与区别

    PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密.防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名.另外是加密,加密需要一个密钥交换算法, ...

  6. mod(%)之规律(除数与被除数的正负分析)

    首先注意“-9 % 4”,根据运算符优先级,负号运算符优先级大于余数(取模),所以执行的是“(-9) % 4”. 其次 % = mod ,只是在不同地方表示方法不同而已. 被除数无论是正数和负数结果都 ...

  7. 质量不合格_区分excel两列不同的值

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  8. jenkins master-slave配置

    如果要想自动化构建,需要slave主机能够从源码库上拉代码,并打包构建 选取指定的slave进行构建 jenkins + docker 实现slave的动态构建和销毁 https://www.cnbl ...

  9. centos7环境下安装mysql5.6-----解压安装包的方法

    参考连接:https://blog.csdn.net/qq_17776287/article/details/53536761 linux下有很多服务,如何查看服务是否启动,以mysql为例子 使用命 ...

  10. JAVA实现二叉树(简易版--实现了二叉树的各种遍历)

    1,个人感觉二叉树的实现主要还是如何构造一颗二叉树.构造二叉树函数的设计方法多种多样,本例采用 addNode 方法实现.以下程序通过定义内部类来表示二叉树的结点,然后再实现了二叉树这种数据结构的一些 ...