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

【ARM Cache 与 MMU 系列文章 7.7 – ARMv8/v9 MMU Table 表分配原理及其代码实现 1】


请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】
及【嵌入式开发学习必备专栏】


文章目录

    • MMU Table 表分配原理及其代码实现
      • 虚拟地址空间 Region的配置
      • 系统物理地址位宽获取
        • 汇编代码实现

MMU Table 表分配原理及其代码实现

假设当前系统中需要映射多个region,其中第一个要映射的region虚拟地址范围是0x0000_0000 -- 0x8000_0000 一共2G的大小。MMU默认最大支持48bit的虚拟地址,由前面文章可知 如果按照颗粒度为4K大小进行映射,且按照4级映射的方式进行映射(9bit-9bit-9bit-9bit-12bit),那么:

  • Level0 table 一个entry对应的大小为512G;
  • Level1 table 一个entry对应的大小为1G;
  • Level2 table 一个entry对应的大小为2M;
  • Level3 table 一个entry对应的大小为 4K

由于每个Level 又由9bit组成,所以每个Level 有 29 = 512 个entry。由于 Level0 的一个entry对应的地址范围是512G,所以通常用不到 Level0,虽然用不到Level0, 但是低级 table的地址

http://www.lryc.cn/news/368693.html

相关文章:

  • AIGC之MetaHuman:HeyGen(基于AI驱动的视频生成平台+数字人)的简介、安装和使用方法、案例应用之详细攻略
  • 6.7-6.10作业
  • 【Redis】Redis经典问题:缓存穿透、缓存击穿、缓存雪崩
  • 从GPU到ASIC,博通和Marvell成赢家
  • 【java问答小知识6】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知以及已经有经验的小伙伴的复习知识点
  • 数学建模笔记
  • shell编程(三)—— 控制语句
  • 反射学习记
  • 使用Python操作Redis
  • Vue-CountUp-V2 数字滚动动画库
  • C语言详解(文件操作)1
  • Python Requests库详解
  • Kafka 详解:全面解析分布式流处理平台
  • RabbitMQ系列-rabbitmq无法重新加入集群,启动失败的问题
  • postgresql之翻页优化
  • 小白学Linux | 日志排查
  • Spring6
  • 数字孪生概念、数字孪生技术架构、数字孪生应用场景,深度长文学习
  • 云服务对比:阿里云国际站和阿里云国内站有什么区别
  • 如何在npm上发布自己的包
  • SQL Chat:从SQL到SPEAKL的数据库操作新纪元
  • jmeter性能优化之mysql配置
  • VueRouter3学习笔记
  • 「前端+鸿蒙」鸿蒙应用开发-TS函数
  • python后端结合uniapp与uview组件tabs,实现自定义导航按钮与小标签颜色控制
  • mingw如何制作动态库附python调用
  • Vue学习|Vue快速入门、常用指令、生命周期、Ajax、Axios
  • Python基础教程(八):迭代器与生成器编程
  • Oracle10.2.0.1冷备迁移之_数据文件拷贝方式
  • 智能合约中外部调用漏洞