当前位置: 首页 > news >正文

ARMv8 MMU和translation stages、translation regimes和相关寄存器

当EL3使用AArch64时,ARMv8 architecture定义了如下translation stages和translation regimes:

VMSAv8 AArch64 translation regimes, translation stages, and associated controls

 上图是在implementation包含了所有exception levels情况下的translation regimes和translation stage。

如果某一implementation不包含所有的exception levels,那么具体的address translation scheme也会跟着变化的。ARM architecture里规定:

—— 如果implementation不包含EL3,那么它将只有一个security state,其中MMU控制等价于secure state下的MMU控制。

—— 如果实现不包含EL2,那么分两种情况分析:1.如果也不包含EL3,MMU只简单提供一个EL1&0 stage 1 translation regimes。2.如果包含EL3,那么MMU会在每个security state下提供一个EL1&0 stage 1 translation regimes。

下表列出了支持的translation stages如何依赖于implementation实现的Exception levels,并且在某些情况下,依赖于最高实现的Exception level的execution state是AArch64还是AArch32.

对于每个支持的address translation stages,在AArch64 state下的相关控制有:

—— System register控制是否使能对应的address translation stage: SCTLR_ELx.M or HCR_EL2.VM。

—— System register控制translation table lookup的endianness:SCTLR_ELx.EE。

—— Translation Control Register(TCR_ELx)控制对应的translation address stage。对于stage 1来说,TCR_ELx控制。对于stage 2来说,VTCR_EL2、VSTCR_LE2和HCR_EL2控制。VTCR_EL2和HCR_EL2作用于secure或non-secure stage 2,VSTCR_LE2作用于secure stage 2。

—— 如果一个address translation stage支持两个VA ranges的话,那么对于这个stage会有两个TTBR_ELx,各自分别对应一个VA range。TTBR0_ELx指向以0x0000000000000000为起始地址的address range。TTBR1_ELx指向以0xFFFFFFFFFFFFFFFF为终点的address range。支持两个VA ranges的translation stage只有EL1&0 stage 1和EL2&0 stage 1,其它的stage1或stage2都是只支持1个VA ranges。对于支持1个VA range的stage 1,只有TTBR0_ELx指向以0x0000000000000000为起始地址的address range。对于stage 2只支持1个VA range,因此只有VTTBR_EL2, VSTTBR_EL2指向以0x0000000000000000为起始地址的address range。VTTBR_EL2用于secure或non-secure stage 2,VSTTBR_EL2只用于secure stage 2。

对于这些registers和translation stage,以及Exception level的关系如下表:

the AArch64 translation stages

Abbreviations for System registers

下面用图画的形式列出这些translation regime和registers/register fields的关系,并且按功能给它们归类。一共有9个translation stage:Non-secure EL1&0 stage 1,Secure EL1&0 stage 1,Non-secure EL1&0 stage 2,Secure EL1&0 stage 2,Non-secure EL2&0 stage 1,Secure EL2&0 stage 1,Non-secure EL2 stage 1,Secure EL2 stage 1,Secure EL3 stage 1。具体如下:

EL1&0 stage 1

EL1&0 stage 2

EL2 stage 1

EL2&0 stage 1

EL3 stage 1

 关于这些MMU相关寄存器按如下分类列出:

相关文章:

  • Linux入门之配置以太网连接
  • 小时3.0报表某个型号数据比天数据多问题复盘
  • 深度学习 FairMOT多目标跟踪(PANDA)
  • 深度学习图像分割U-Net和FCN讲解
  • MySQL语句(二)
  • MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的作用及生成时机
  • python-读写Excel(三)-xlwt格式设置
  • 主从复制Slave_IO_Running: NO Slave_SQL_Running: NO 解决办法
  • 14对象的方法
  • 神经网络原理与实例精解,神经网络案例讲解范文
  • 【dfs爆搜】poj 1129 Channel Allocation
  • 244页14万字XX智能交通系统设计方案
  • 9月24日计算机视觉基础学习笔记——经典机器学习_02
  • Java编程之语法结构
  • springboot-webFlux的webclient详细使用介绍,细节拉满
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • canvas 五子棋游戏
  • ES6 学习笔记(一)let,const和解构赋值
  • Fabric架构演变之路
  • Java读取Properties文件的六种方法
  • Java多态
  • leetcode98. Validate Binary Search Tree
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python3爬取英雄联盟英雄皮肤大图
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 闭包--闭包作用之保存(一)
  • 对象管理器(defineProperty)学习笔记
  • 基于Android乐音识别(2)
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据仓库的几种建模方法
  • 我建了一个叫Hello World的项目
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​【已解决】npm install​卡主不动的情况
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (二)pulsar安装在独立的docker中,python测试
  • (一)为什么要选择C++
  • (转)Sql Server 保留几位小数的两种做法
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .gitattributes 文件
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net CF下精确的计时器
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 中让 Task 支持带超时的异步等待
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET值类型变量“活”在哪?
  • .net中的Queue和Stack
  • // an array of int
  • @Autowired注解的实现原理
  • @RequestBody详解:用于获取请求体中的Json格式参数