SV39多级页表的硬件机制

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 【10月更文挑战第26天】SV39多级页表机制包括三级页表结构,每个页表项64位,通过SATP寄存器控制地址转换。地址转换过程涉及三级页表查找,最终生成物理地址。页表项包含有效位和访问权限位等标志,用于内存管理和访问控制。物理页帧的分配和回收确保内存的有效利用。

SV39 多级页表的硬件机制主要包括以下方面:


  1. 页表结构与地址划分1
  • 页表层级:SV39 采用三级页表结构。将 39 位的虚拟地址划分为多个部分,用于在不同层级的页表中进行索引。其中,虚拟页号共 27 位,第 26 - 18 位为一级页索引(vpn0),第 17 - 9 位为二级页索引(vpn1),第 8 - 0 位为三级页索引(vpn2)。每个页表都使用 9 位索引,这样每个页表有 个页表项。
  • 页表项大小与页表尺寸:每个页表项为 64 位(8 字节),所以每个页表的大小为 (因为每页的起始位置按 4KB 对齐),刚好可以被放到一个物理页框中。
  • 物理地址空间:物理地址通常具有更高的位数,比如 56 位,以便能够访问更大的内存范围,但在 SV39 机制下,主要关注与虚拟地址转换相关的部分物理地址信息。
  1. 寄存器的作用
  • SATP 寄存器:SATP(Supervisor Address Translation and Protection)寄存器是控制地址转换的关键寄存器。其结构中的 “mode” 字段用于控制 CPU 使用的页表模式,当 mode 设置为 8(b1000)时,分页机制被开启且选用 SV39 分页机制;“asid”(Address Space Identifier)目前暂不涉及进程概念可暂不关注;“ppn” 字段存放的是根页表所在的物理页号,CPU 以此为基础开始地址转换2
  1. 地址转换过程1
  • 一级页表查找:首先,根据 SATP 寄存器中记录的根页表的物理页号,CPU 将虚拟地址中的一级页索引(vpn0)作为偏移,在一级页表的物理页中查找对应的页表项。该页表项中包含了二级页表的物理页号信息。
  • 二级页表查找:接着,使用虚拟地址中的二级页索引(vpn1)作为偏移,在二级页表的物理页中找到对应的页表项,该页表项中包含了三级页表的物理页号信息。
  • 三级页表查找:然后,把虚拟地址中的三级页索引(vpn2)作为偏移,在三级页表的物理页中找到最终的页表项,这个页表项中包含了要访问的虚拟地址对应的物理页号以及相关的标志位(如访问权限、是否有效等)。
  • 物理地址生成:最后,将得到的物理页号左移 12 位(因为每页大小为 4KB,偏移量占 12 位),再加上虚拟地址中的偏移量(offset)部分,就得到了虚拟地址对应的物理地址,CPU 便可以通过该物理地址访问实际的物理内存。
  1. 页表项的标志位
  • 有效位(V 位):页表项中的有效位用于表示该页表项是否合法。只有当 V 位为 1 时,页表项才是有效的,CPU 才能根据该页表项进行地址转换;若 V 位为 0,则表示该页表项对应的虚拟地址范围是无效的,此时如果 CPU 访问该虚拟地址,会引发地址转换异常。
  • 访问权限位(R/W/X、U 位等):R/W/X 位分别控制索引到这个页表项的对应虚拟页面是否允许读、写、取指操作;U 位控制索引到这个页表项的对应虚拟页面是否在 CPU 处于用户特权级(U 特权级)的情况下被允许访问。A 位(accessed)记录自从该位被清零之后,页表项的对应虚拟页面是否被访问过;D 位(dirty)则记录自从该位被清零之后,页表项的对应虚拟页面是否被修改过。这些标志位对于内存的访问控制和管理非常重要。
  1. 物理页帧的管理
  • 物理页帧的分配:物理内存被划分为多个物理页帧,当需要建立新的页表或者存储应用程序的数据时,系统需要分配物理页帧。例如,在创建页表的过程中,如果某个级别的页表不存在,系统会申请一个物理页框,并在其中创建相应的页表。
  • 物理页帧的回收:当应用程序结束或出现错误时,系统需要回收该应用程序所占用的物理页帧,以便重新分配给其他应用程序或页表使用。这涉及到对物理页帧的跟踪和管理,确保内存的有效利用和资源的正确释放。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
存储 算法 Java
操作系统之存储管理——FIFO算法和LRU算法
存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
873 0
操作系统之存储管理——FIFO算法和LRU算法
|
8月前
|
消息中间件 调度 数据安全/隐私保护
xenomai内核解析--任务同步互斥机制(一)--优先级倒置
本文是关于Xenomai实时操作系统中资源管理和优先级倒置问题的概述。Xenomai使用`xnobject`和`xnregistry`管理任务间的同步互斥资源,如信号量、互斥锁等。资源管理涉及访问控制和资源保存,确保共享资源的正确调度。文章还介绍了优先级倒置现象,即高优先级任务因低优先级任务持有资源而被阻塞。为解决此问题,Xenomai采用了优先级继承策略,临时提升低优先级任务的优先级,以防止持续的优先级反转。文章后续将深入分析`xnsynch`模块和优先级倒置解决方案。
171 1
xenomai内核解析--任务同步互斥机制(一)--优先级倒置
|
8月前
|
存储 算法 Linux
【Linux】线程的内核级理解&&详谈页表以及虚拟地址到物理地址之间的转化
【Linux】线程的内核级理解&&详谈页表以及虚拟地址到物理地址之间的转化
|
8月前
|
缓存 Java 知识图谱
1.什么是CPU多级缓存模型?
1.什么是CPU多级缓存模型?
92 0
1.什么是CPU多级缓存模型?
驱动开发:内核解析内存四级页表
当今操作系统普遍采用64位架构,CPU最大寻址能力虽然达到了64位,但其实仅仅只是用到了48位进行寻址,其内存管理采用了`9-9-9-9-12`的分页模式,`9-9-9-9-12`分页表示物理地址拥有四级页表,微软将这四级依次命名为PXE、PPE、PDE、PTE这四项。关于内存管理和分页模式,不同的操作系统和体系结构可能会有略微不同的实现方式。9-9-9-9-12的分页模式是一种常见的分页方案,其中物理地址被分成四级页表:PXE(Page Directory Pointer Table Entry)、PPE(Page Directory Entry)、PDE(Page Table Entry)
|
算法
【操作系统】第三章:计算机体系结构及内存分层体系(Part2:连续物理内存分配)
【操作系统】第三章:计算机体系结构及内存分层体系(Part2:连续物理内存分配)
251 0
驱动开发:内核读写内存多级偏移
让我们继续在`《内核读写内存浮点数》`的基础之上做一个简单的延申,如何实现多级偏移读写,其实很简单,读写函数无需改变,只是在读写之前提前做好计算工作,以此来得到一个内存偏移值,并通过调用内存写入原函数实现写出数据的目的。以读取偏移内存为例,如下代码同样来源于本人的`LyMemory`读写驱动项目,其中核心函数为`WIN10_ReadDeviationIntMemory()`该函数的主要作用是通过用户传入的基地址与偏移值,动态计算出当前的动态地址。
|
数据库 数据安全/隐私保护 索引
【操作系统】第四章:非连续内存分配(Part1:基于分页-分段的物理/逻辑地址转换)
【操作系统】第四章:非连续内存分配(Part1:基于分页-分段的物理/逻辑地址转换)
192 0
|
存储 缓存 索引
【操作系统】第四章:非连续内存分配(Part2:页表)
【操作系统】第四章:非连续内存分配(Part2:页表)
336 0
|
存储 缓存 Java
「计算机原理」| CPU 缓存 & 缓存一致性 & 伪共享
「计算机原理」| CPU 缓存 & 缓存一致性 & 伪共享
639 0
「计算机原理」| CPU 缓存 & 缓存一致性 & 伪共享