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

快速链接:

权限索引

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

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

对于操作系统,该架构提供了单独的 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 属性,如果设置,则仅更新允许的字段。
在这里插入图片描述

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

在这里插入图片描述

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位

添加vx : arm_2023,备注进ARM交流讨论区
image.png

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值