当前位置: 首页 > news >正文

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

快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈

  • 付费专栏-付费课程 【购买须知】:
  • ARMv8/ARMv9架构精选系列–目录 👈👈👈
  • ARMV8/ARMV9/Trustzone/TEE安全课程👈👈👈

目录

        • 权限索引
        • 翻译强化
        • 128 位转换表
        • 总结

权限索引

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位

相关文章:

  • 【JavaSE】之流程控制与方法
  • SpringCloud——网关1
  • 『Android基础入门』ViewPager+Fragment+BottomNavigationView实现底部导航
  • Regmap子系统:(寄存器映射)
  • 用通俗易懂的方式讲解:lightGBM 算法及案例(Python 代码)
  • TC8:TCP_CONTROL_FLAGS_05-08
  • 2022年华为杯研究生数学建模竞赛ABCDEF题思路资料汇总贴
  • JavaScript原生之垃圾回收原理、标记清理原理
  • python解CCF-CSP真题《202209-2 何以包邮?》
  • 【面试必刷TOP101】面试官:如何删除有序链表中重复的元素?
  • U3DVR向量点乘与叉乘概念及几何模型公式应用
  • stm32串口发送数据包进行解析,实现人机交互
  • 【Django框架】——02 Django虚拟环境搭建
  • 【从零带你玩转Linux】目录文件相关操作指令
  • k8s-资源管理
  • 【mysql】环境安装、服务启动、密码设置
  • EventListener原理
  • iOS编译提示和导航提示
  • JavaScript异步流程控制的前世今生
  • Java编程基础24——递归练习
  • java中具有继承关系的类及其对象初始化顺序
  • Laravel Mix运行时关于es2015报错解决方案
  • Linux后台研发超实用命令总结
  • PHP 小技巧
  • Redis在Web项目中的应用与实践
  • SQL 难点解决:记录的引用
  • SQLServer插入数据
  • Vue学习第二天
  • yii2中session跨域名的问题
  • 回顾2016
  • 经典排序算法及其 Java 实现
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 聊聊flink的TableFactory
  • 如何在GitHub上创建个人博客
  • 新书推荐|Windows黑客编程技术详解
  • - 转 Ext2.0 form使用实例
  • $ git push -u origin master 推送到远程库出错
  • (1)Nginx简介和安装教程
  • (42)STM32——LCD显示屏实验笔记
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C#)获取字符编码的类
  • (pojstep1.1.2)2654(直叙式模拟)
  • (pojstep1.3.1)1017(构造法模拟)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (一)为什么要选择C++
  • (正则)提取页面里的img标签
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • ::before和::after 常见的用法
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @Repository 注解