baron · 3月19日 · 四川

armv8/armv9页表属性(page descriptor)的详细介绍

快速连接

👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈


 title=

1、stage1的页表属性

(Attribute fields in stage 1 VMSAv8-64 Block and Page descriptors)
在这里插入图片描述

  • 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[52] : 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], bits[7:6] :Data Access Permissions bits,
  • NS, bit[5] :Non-secure bit
  • AttrIndx[2:0], bits[4:2] :

2、stage2的页表属性

(Attribute fields in stage 2 VMSAv8-64 Block and Page descriptors)
在这里插入图片描述

  • PBHA[3:1], bits[62:60] :for FEAT_HPDS2
  • PBHA[0], bit[59] :for FEAT_HPDS2
  • XN[1:0], bits[54:53] :Execute-never
  • Contiguous, bit[52] :translation table entry 是连续的,可以存在一个TLB Entry中
  • DBM, bit[51] :Dirty Bit Modifier
  • nT, bit[16] :for FEAT_BBM
  • FnXS, bit[11] :for FEAT_XS
  • AF, bit[10] :Access flag
  • SH, bits[9:8] :shareable属性
  • S2AP, bits[7:6] :Stage 2 data Access Permissions
  • MemAttr, bits[5:2] :

3、各标志位的详细介绍

3.1、MemAttr

在这里插入图片描述

3.1、NS

Non-secure比特 表示转换后的物理地址是secure的还是non-secure的。
在REE(linux)和TEE(optee)双系统的环境下,可同时开启两个系统的MMU.
在secure和non-secure中使用不同的页表.secure的页表可以映射non-secure的内存,而non-secure的页表不能去映射secure的内存,否则在转换时会发生错误
在这里插入图片描述

3.1、AP

Data access permissions 数据访问权限
在这里插入图片描述

3.1、SH

shareable属性
在这里插入图片描述

3.1、AF

Access flag, AF=0后,第一次访问该页面时,会将该标志置为1. 即暗示第一次访问

3.1、nG

对于 EL0/EL1 虚拟地址空间,Page Descriptor属性字段中的 nG 位将转换标记为Gloabl(G) 或non-Gloabl(nG)。例如,内核映射是Gloabl(G)翻译,应用程序映射是non-Gloabl翻译。Gloabl翻译适用于当前正在运的任何应用程序。非全局翻译仅适用于特定应用程序

non-Gloabl映射在 TLB 中使用 ASID进行标记。在 TLB 查找时,将 TLB 条目中的 ASID 与当前选择的 ASID 进行比较。如果它们不匹配,则不使用TLB 条目。下图显示了内核空间中没有 ASID 标记的全局映射和用户空间中具有 ASID 标记的非全局映射
在这里插入图片描述

3.1、DBM

TODO

3.1、Contiguous

TODO

3.1、XN or UXN

特权和非特权不可从该memory-region中执行指令的标志位:
Execute-never
Unprivileged execute-never


关注"Arm精选"公众号,备注进ARM交流讨论区。
图片1.png

推荐阅读
关注数
9462
内容数
207
以易懂、渐进、有序的方式,深入探讨ARMv8/ARMv9架构的核心概念。我们将从基础知识开始,逐步深入,覆盖最新的架构,不再纠缠于过时技术。本系列内容包含但不限于ARM基础、SOC芯片基础、Trustzone、gic、异常和中断、AMBA、Cache、MMU等内容,并将持续更新。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息