当前位置: 首页 > 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的地址

相关文章:

  • 什么叫防御式编程
  • 写入文件内容
  • 软件架构x86 、 x86_64、 arm64、aarch64
  • 【MySQL数据库】my.ini文件参数中文注释
  • 大疆智图_空三二维重建成果传输
  • Java finally catch try关键字
  • 反转链表 (oj题)
  • C++中的sizeof和strlen详解
  • 【玩转C语言】第三讲---> scanf 和 printf 函数详解(非常重要)!
  • Redisson知识
  • 斯坦福天才少女创5亿独角兽!Pika获8000万融资,金牌团队首曝光
  • 小主机折腾记24
  • 计算机基础(8)——音频数字化(模电与数电)
  • WPF中读取Excel文件的内容
  • 利用keepalived对zabbix-server做高可用,部署安装keepalived
  • egg(89)--egg之redis的发布和订阅
  • iOS | NSProxy
  • JavaScript设计模式系列一:工厂模式
  • JS字符串转数字方法总结
  • Kibana配置logstash,报表一体化
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Redis学习笔记 - pipline(流水线、管道)
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 七牛云假注销小指南
  • 巧用 TypeScript (一)
  • 如何优雅地使用 Sublime Text
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 小李飞刀:SQL题目刷起来!
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • # Redis 入门到精通(一)数据类型(4)
  • #define与typedef区别
  • #pragma pack(1)
  • (06)Hive——正则表达式
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (zhuan) 一些RL的文献(及笔记)
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (三) diretfbrc详解
  • (十三)MipMap
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)VC++中ondraw在什么时候调用的
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Core 版本不支持的问题
  • .Net 执行Linux下多行shell命令方法
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .netcore 获取appsettings
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET委托:一个关于C#的睡前故事
  • /bin、/sbin、/usr/bin、/usr/sbin