(番外二)Arm32 中虚拟地址机制分析(页表项属性分析)

本文深入分析了Arm32 MMU的页表项属性,探讨了内存种类如Normal、Device和Strongly-ordered的特性。讲解了XN、APX/AP和S属性对内存访问权限的控制,以及页表机制如何支持多任务操作系统,特别是TLB和页表基址寄存器在进程切换中的作用。
摘要由CSDN通过智能技术生成

Arm32 MMU 页表项属性

本篇文章接上一篇 (番外一)Arm32 中虚拟地址机制分析(Arm cortex-A系列 MMU工作机制分析) ,在上一篇文章中根据手册(《Arm Cortex-A Series Programmer’s Guide》)简单分析了Arm32中多级页表的简单原理,即 MMU 如何通过虚拟地址转换表将 CPU 发出的虚拟地址访问指令定位到具体的物理地址,本篇主要深入了解一下每一个页表项的属性对物理内存的访问的影响,首先贴出 Arm32 一级页表与二级页表结构图:

一级页表
在这里插入图片描述
二级页表
在这里插入图片描述
可以看到每个页表项中不仅包含了下级页表或者物理地址的映射地址(除了无效页表项),而且包含了诸如:TEX S SBZ AP 等属性位,这些属性位影响着 CPU 对内存的访问动作,下边先对 Arm32 对内存种类分配的定义进行简单分析,然后再引入 Arm32 如何通过属性来实现这些分类


Arm32 中内存的种类

借用手册中的话:早期的 Arm 架构允许开发人员通过简单的配置来指定 CPU 对内存页的访问动作,包括是否允许在某些内存地址上启用 cache 或者 写缓冲(write buffer)。但是对现如今越来越复杂的系统而言,这些简单的配置机制已经无法满足上层软件对硬件的要求,比如说存在多级缓存,多处理器共享内存等,所以在 Armv6开始,新的内存种类(memory type)定义被加入进来,并且在 Armv7中得到扩展。

在 Armv7 中,内存种类一共分为三种,如下所示,所有被映射到虚拟地址的内存页都应该被初始化为其中一种:

  • Strongly-orderd
  • Device
  • Normal
Normal

普通内存,也是系统中最常用的内存种类,没有特殊的映射机制,并且允许指令重排(处理器为了优化程序运行效率的一种机制,可以百度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值