14天学习训练营导师课程:周贺贺《ARMv8/ARMv9架构-快速入门》

1. MMU(Memory Management Unit)

内存管理单元,MMU的意义在于将软件程序的虚拟地址转换为真实的物理地址。

2. MMU种类

  1. Secure EL1&0 translation regime, when EL2 is disabled
  2. Non-secure EL1&0 translation regime, when EL2 is disabled
  3. SECURE EL1&0 translation regime, when EL2 is enabled
  4. Non-secure EL1&0 translation regime, when EL2 is enabled
  5. Secure EL2&0 translation regime
  6. Non-secure EL2&0 translation regime
  7. Secure EL2 translation regime
  8. Non-secure EL2 translation regime
  9. Secure EL3 translation regime

3. 如何开启MMU

  1. 设置页表基地址TTBR
  2. 初始化MAIR_EL3
  3. 配置TCR_EL3
  4. 创建页表
  5. 使能MMU

4. MMU模型

5. 页表属性


PBHA, bits[62:59] : for FEAT_HPDS2
XN or UXN, bit[54] : Execute-never or Unprivileged execute-never
PXN, bit[53] : Privileged execute-never
Contiguous, bit[51] : translation table entry 是连续的,可以存在一个TLB Entry中
DBM, bit[51] : Dirty Bit Modifier
GP, bit[50] : for FEAT_BTI
nT, bit[16] : for FEAT_BBM
nG, bit[11] : 缓存在TLB中的翻译,是否使用ASID标识
AF, bit[10] : Access flag, AF=0后,第一次访问该页面时,会将该标志置为1
SH, bits[9:8] : shareable属性
AP[2:1], bit[7:6] : Data Access Permissions bits
NS, bit[5] : Non-secure bit
Attrlndx[2:0], bits[4:2]

6. 内存属性


R or W Meaning
0b0 No Allocate
0b1 Allocate
dd Meaning
0b00 Device-nGnRnE memory
0b01 Device-nGnRE memory
0b10 Device-nGRE memory
0b11 Device-GRE memory

ARM-A架构入门基础(三)MMU相关推荐

  1. linux+系统优化基础,Linux入门基础(三):Linux用户及权限基础

    用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...

  2. linux脚本编写思想,Linux脚本编写入门基础(三)

    1.1.2 注释在进行shell编程时,以#开头的句子表示注释,直到这一行的结束.我们真诚地建议您在程序中使用注释.如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚 ...

  3. mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析

    阅读目录 一:SqlMapConfig.xml配置文件的内容和配置顺序如下 二:properties属性 三:settings全局参数配置 四:typeAiases(别名)--重点掌握 五:typeH ...

  4. python入门基础三之流程控制

    流程控制(if while for) 一.if 为什么要有if判断 判断事物的对错,真假,是否可行 想让计算机像人一样去工作,那么计算机也应该有对事物的对错,真假,是否可行的判断能力 从而做出不同的响 ...

  5. python 入门基础(三)-Python入门基础(第3天):基本数据类型

    一.基本数据类型 1.数字 通常的int, long,float,long等等都被支持.而且会看你的具体数字来定义变量的类型. #int 类型#bit_length() 返回一个数的二进制长度 2.字 ...

  6. python语言入门m-Python入门基础三-函数

    什么是函数 定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要执行这个函数,只需调用函数名即可. 特性:1.减少重复代码 2.使程序变得可扩展 3.使程序变得易于维护 调用函数 要调用一 ...

  7. OpenCV入门(三)快速学会OpenCV2图像处理基础(一)

    OpenCV入门(三)快速学会OpenCV2图像处理基础(一) 作者:Xiou 1.颜色变换cvtColor imgproc的模块名称是由image(图像)和process(处理)两个单词的缩写组合而 ...

  8. CPU_X86架构和ARM架构入门篇

    文章目录 脑图 视频解读 CPU的组成 指令集架构: 复杂指令集 (CISC) VS 精简指令集 (RISC) X86架构 ARM架构 X86架构 VS ARM架构 制程工艺 64位计算 异构计算 功 ...

  9. linux目录结构来源6,Linux入门基础 #6 Linux系统目录架构

    Linux入门基础 #6 Linux系统目录架构 /bin 即binary,用于保存各种(二进制)可执行文件. 在CLI中输入执行的命令都保存在这里. 此目录下的所有命令都是普通权限用户也可执行的. ...

最新文章

  1. 局部变量和static变量
  2. python分割数字_对python数据切割归并算法的实例讲解
  3. Useful code snippet to parse the key value pairs in URL
  4. python---字符编码
  5. 收藏10个2012年最新发布的jQuery插件
  6. 关于使用墙外安卓应用
  7. 数据结构 【实验 串的基本操作】
  8. 查询服务器硬件配置的命令
  9. caffe学习日记--lesson8:站在巨人的肩膀上, denny的学习专栏——徐其华——caffe
  10. 好用的eclipse快捷键
  11. php 数独求解,高效算法求解数独(示例代码)
  12. Java 编码规范8(编程规约-注释规约与其它)
  13. 在Excel中快速选择数据
  14. 计算机全键在线使用说明书,笔记本电脑键盘介绍图,笔记本键盘全部按键功能介绍说明-系统城...
  15. 不错的javascript极品日历
  16. C#语言实例源码系列-设置系统时间
  17. 成都拓嘉辰丰:拼多多子账号建立的方法?
  18. 17 scala case class object
  19. 大白话理解德摩根定律(De Morgan‘s Laws)
  20. html盒模型中border的写法,【前端】盒子模型的边框样式属性和应用技巧讲解

热门文章

  1. YYKit-YYAsyncLayer分析
  2. Linuxwindows时间服务器搭建定时同步设置详细讲解
  3. 问题 E: 大小写转换
  4. DSP的程序加载与运行方式
  5. 对对碰c语言程序设计,C语言对对碰游戏源码分享
  6. 软件测试缺陷分析方法简介
  7. JAVA常见异常类汇总
  8. R与RStudio的安装教程
  9. 【附源码】计算机毕业设计SSM-小区停车场信息系统
  10. 【CV】SiamFC:用于目标跟踪的全卷积孪生网络