baron · 2022年12月20日 · 江苏

ARMv9新特性:虚拟内存系统架构 (VMSA) 的增强功能

 title=

权限索引

2022 ARM引入了一种新的控制内存权限方法。 不再是直接在转换表条目 (TTE) 中编码权限,而是使用 TTE 中的字段来索引寄存器中指定的权限数组。这种间接提供了更大的灵活性、编码密度并支持更多新权限。

每个 TTE 可以选择两个值,一个base permission和一个overlay。base permission表示块或页面拥有的最大权限集。overlay用于权限的进一步限制。
如下图所示:
 title=

对于操作系统,该架构提供了单独的 EL1 和 EL0 overlay 寄存器。这可以允许操作系统为分配给应用程序的页面设置最大权限,然后允许应用程序在这些约束内进一步管理权限。例如,操作系统为 JIT 分配一个可写或可执行的页面。然后,JIT 可以使用 Overlays 控制页面当前是可写的还是可执行的。这样做的好处是减少了系统调用和 TLB 无效的次数。

权限索引在多个master共享相同的表时也有好处。例如,一组表可能同时被 Arm 处理器和 SMMU使用。我们想要应用于软件访问的权限可能与我们想要应用于 SMMU 的权限不同。通过权限索引,处理器和 SMMU 可以使用相同的表,但对权限的解释可以不同。

翻译强化

2022 扩展引入了一系列功能,通过减少可用的攻击面来强化 MMU 表遍历过程。这些功能包括:

  • A new stage 1 attribute – Protected.
  • A new stage 2 permission – Mostly read-only.
  • A new instruction, RCW (Read-Compare-Write), for updating translation table entries.

Protected 属性控制允许更改 TTE 中的哪些字段。当新指令用于修改 TTE 时,它将自动检查 Protected 属性,如果设置,则仅更新允许的字段。
 title=

new stage 2 “最多只读”(MRO) 权限使软件能够限制可以写入页面的内容。标记为 MRO 的页面允许访问标志、脏页的硬件更新、 RCW 指令的更新。其他形式的存储,例如 STR(存储)指令,将因权限错误而失败。

 title=

Stage 1 的受保护属性和Stage 2 的 MRO 权限一起提供了针对多种类型攻击的强大保护。MRO 属性防止存储,不允许来自非RCW 指令的存储更改映射。受保护的属性和 RCW 指令限制了 TTE 中可以更新的字段。

该功能还引入了stage 2属性 AssuredOnly,可用于确保只有受保护的表才能指向某个页面。这是为了帮助防止别名攻击。

128 位转换表

作为 2022 扩展的一部分,Arm 正在向 Armv9-A 添加新的转换表格式。翻译格式遵循与现有格式相同的原则,但将每个描述符的大小增加到 128 位。新格式支持更大的输出地址和新属性字段的范围。

总结

ARMv9最新的VMSA有哪些变化或增强?

  • 对于每一个page或block,使用新的权限控制方式。以往权限控制是直接编码在页表entry的属性位中的,现在变成索引指向权限控制寄存器的方式。
  • 页表的属性位的权限控制,并更改引入新的修改属性位的指令
  • 页表entry从原来的64位增值128位

image.png

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