【CPU】页表项和叶子表项(个人草稿)

页表项与叶子表项的区别

在你提供的两段话中,页表项(Page Table Entry, PTE)叶子表项(Leaf Page Table Entry) 是相关但不同的概念。为了更好地理解它们之间的关系,我们首先需要明确它们的定义和作用。


1. 页表项(Page Table Entry, PTE)

页表项 是指页表中的每个条目,它包含了一个虚拟页面号(VPN)到物理帧号(PFN)的映射信息,以及一些页面属性(如权限、缓存属性等)。页表项是页表的基本构成单位,用于实现虚拟地址到物理地址的转换。

  • 组成

    • 物理页号(Physical Frame Number, PFN):表示该虚拟页对应的物理内存中的帧号。
    • 页面属性:包括访问权限(读、写、执行)、缓存属性(是否可缓存)、脏位(Dirty Bit)、访问位(Accessed Bit)等。
  • 大小

    • 在 RISC-V SV39 标准下,每个页表项占用 64 位 的空间。
  • 作用

    • 页表项用于将虚拟地址中的 虚拟页号(VPN) 映射到物理地址中的 物理页号(PFN),从而完成地址翻译。

2. 叶子表项(Leaf Page Table Entry)

叶子表项 是一种特殊的页表项,它表示的是最终的、可以直接用于地址翻译的页表项。换句话说,叶子表项是页表层次结构中的最后一级表项,它包含了完整的物理地址信息和页面属性,可以直接用于将虚拟地址转换为物理地址。

  • 特点

    • 最终映射:叶子表项是页表层次结构中的最后一级表项,它包含了最终的物理页号(PFN)和页面属性,可以直接用于地址翻译。
    • 不再指向其他页表:与非叶子表项不同,叶子表项不再指向其他页表,而是直接提供物理地址和权限信息。
  • 作用

    • 叶子表项是地址翻译的终点,当 MMU 找到一个叶子表项时,它就可以直接使用该表项中的物理页号(PFN)来完成地址翻译,而不需要继续查找其他页表。

3. 页表项 vs. 叶子表项的关系

  • 页表项 是页表中的通用术语,指的是页表中的任意一个条目。它可以是中间层级的表项(即非叶子表项),也可以是最终的叶子表项。

  • 叶子表项 是页表项的一种特殊形式,它是页表层次结构中的最后一级表项,直接提供了虚拟地址到物理地址的映射。叶子表项是地址翻译的终点,MMU 找到叶子表项后可以直接完成地址翻译。

  • 非叶子表项 是指那些不包含最终物理地址信息的页表项,它们通常指向更下一级的页表。例如,在三级页表中,顶级页表和二级页表中的表项是非叶子表项,它们只包含指向下一级页表的基地址,而不包含最终的物理页号。


4. 玄铁C910的页表结构

根据你提供的信息,玄铁C910 使用的是 RISC-V SV39 虚拟内存模型,支持 39 位虚拟地址空间40 位物理地址空间。SV39 采用的是 三级页表结构,虚拟地址被划分为三个部分:

  • 虚拟页面号(VPN):39 位虚拟地址中的前 27 位被划分为三个 9 位的部分,分别用于索引三级页表。

    • VPN[2](9 位):用于索引顶级页表(Page Directory Pointer Table, PDPT)。
    • VPN[1](9 位):用于索引二级页表(Page Directory, PD)。
    • VPN[0](9 位):用于索引三级页表(Page Table, PT)。
  • 页内偏移(Offset):虚拟地址的最后 12 位用于确定页内的具体位置。

页表项的结构:
  • 每个页表项占用 64 位,其中一部分用于存储 物理页号(PFN),另一部分用于存储 页面属性(如权限、缓存属性等)。
叶子表项的特点:
  • 在三级页表结构中,只有 三级页表(PT) 中的表项可以是 叶子表项。当 MMU 找到一个三级页表中的表项,并且该表项包含有效的物理页号(PFN)时,它就是一个叶子表项。
  • 叶子表项的内容(即虚拟地址转换得到的物理地址和相应的权限属性)会被缓存到 TLB 中,以加速后续的地址翻译。

5. 总结

  • 页表项 是页表中的通用术语,指的是页表中的任意一个条目,它可以是中间层级的表项(非叶子表项),也可以是最终的叶子表项。
  • 叶子表项 是页表项的一种特殊形式,它是页表层次结构中的最后一级表项,直接提供了虚拟地址到物理地址的映射。叶子表项是地址翻译的终点,MMU 找到叶子表项后可以直接完成地址翻译。
  • 在玄铁C910的 SV39 页表结构中,只有三级页表中的表项可以是叶子表项,而顶级页表和二级页表中的表项是非叶子表项,它们只包含指向下一级页表的基地址。

因此,页表项叶子表项 不是同一种东西,但叶子表项是页表项的一种特殊形式,代表了页表层次结构中的最终映射。

希望这个解释能帮助你更好地理解页表项和叶子表项的区别。如果你有更多问题或需要进一步的解释,欢迎继续提问! 😊

补充图示

为了更直观地理解页表项和叶子表项的区别,我们可以用图示来说明:

三级页表结构
虚拟地址(39位):
| VPN[2] (9 bits) | VPN[1] (9 bits) | VPN[0] (9 bits) | Offset (12 bits) |页表结构:
| 顶级页表 (PDPT) | 二级页表 (PD) | 三级页表 (PT) |
|-----------------|---------------|---------------|
|   基地址        |    基地址     |    基地址     |
|   非叶子表项    |  非叶子表项   |  叶子表项     |
|   ...           |   ...         |   ...         |页表项(64位):
| 物理页号 (PFN) | 页面属性(权限、缓存等) |
|----------------|--------------------------|
|  40位          |  24位                    |
  • 顶级页表(PDPT)二级页表(PD) 中的表项是非叶子表项,它们只包含指向下一级页表的基地址。
  • 三级页表(PT) 中的表项可以是 叶子表项,它们包含最终的物理页号(PFN)和页面属性,可以直接用于地址翻译。
TLB 缓存叶子表项
TLB(Translation Lookaside Buffer):
| 虚拟页号 (VPN) | 物理页号 (PFN) | 页面属性 |
|----------------|----------------|----------|
|  27位          |  40位          |  24位    |叶子表项内容:
| 虚拟页号 (VPN) | 物理页号 (PFN) | 页面属性 |
|----------------|----------------|----------|
|  27位          |  40位          |  24位    |

在 TLB 中,缓存的是 叶子表项 的内容,即虚拟地址转换得到的物理地址和相应的权限属性。这使得后续的地址翻译可以直接通过 TLB 完成,而不需要逐级查找页表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503410.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1/7 C++

练习&#xff1a;要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩&#xff0c;分别完成空间的申请、成绩的录入、升序排序、成绩输出函数&#xff0c;并在主程序中完成测试 要求使用new #include <iostream>using namespace std; double *addr_new() {double …

[文献精汇]使用PyCaret预测 Apple 股价

介绍 开发一个机器学习模型来尝试通过线性回归分析来预测 Apple 股票的价格会很有趣。PyCaret 的库&#xff0c;这是一个开源的 Python 低代码机器学习库&#xff0c;可以自动化机器学习工作流程&#xff0c;非常适合像我这样的机器学习初学者。 线性回归分析 线性回归分析用…

【51单片机】02LED流水灯实验

点亮你的LED 一、点亮第一个LED1.GPIO介绍2.P1、P2、P3端口 二、LED实验2.尝试点亮LED3.LED流水灯 一、点亮第一个LED 1.GPIO介绍 这块内容这里可以做简单的了解&#xff0c;与数电知识强相关。后续可以再回过头来学习 GPIO (general purpose input output) 通用输入输出端口…

「Mac畅玩鸿蒙与硬件53」UI互动应用篇30 - 打卡提醒小应用

本篇教程将实现一个打卡提醒小应用&#xff0c;通过用户输入时间进行提醒设置&#xff0c;并展示实时提醒状态&#xff0c;实现提醒设置和取消等功能。 关键词 打卡提醒状态管理定时任务输入校验UI交互 一、功能说明 打卡提醒小应用包含以下功能&#xff1a; 提醒时间输入与…

Python递归(汉诺塔问题)

递归分析 递归&#xff1a;通过自我调用来解决问题的函数 递归通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。 递归要注意&#xff1a; 1.递归出口 2.当前问题如何变成子问题 利用递归写一个阶乘函数&#xff0c;F(n)&#xff0c;求n的阶乘…

VS2022 C#创建Com组件和调用

生成一个类库项目 这里创建了一个.net 4.8的项目&#xff0c;添加了一个ComAIFaceTest类 如下图&#xff1a; ComAIFaceTest代码如下&#xff1a; [ComVisible(true)][Guid("12345678-ABCD-1234-EF00-0123456789AB")][ClassInterface(ClassInterfaceType.AutoDual)…

【GOOD】A Survey of Deep Graph Learning under Distribution Shifts

深度图学习在分布偏移下的综述&#xff1a;从图的分布外泛化到自适应 Northwestern University, USA Repository Abstract 图上的分布变化——训练和使用图机器学习模型之间的数据分布差异——在现实世界中普遍存在&#xff0c;并且通常不可避免。这些变化可能会严重恶化模…

ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代

2024年11月30日&#xff0c;ARM正式发布了其最新的Armv9.5架构&#xff0c;这是Arm技术发展的又一重要里程碑。从表中信息来看&#xff0c;Armv9.5架构的发布标志着该公司的架构系列在性能、灵活性和可扩展性方面取得了进一步突破。本次发布不仅是技术上的提升&#xff0c;更是…

RAFT:随机退火森林

RAFT:随机退火森林 RAFT(Randomized Annealed Forests)是一种机器学习算法,主要用于分类和回归任务。以下是对它的介绍及原理举例说明: 一、RAFT简介 RAFT是一种基于随机森林的集成学习方法,它结合了随机森林的优点和退火算法的思想。随机森林通过构建多个决策树并综…

“AI智慧语言训练系统:让语言学习变得更简单有趣

大家好&#xff0c;我是你们的老朋友&#xff0c;一个热衷于探讨科技与教育结合的产品经理。今天&#xff0c;我想和大家聊聊一个让语言学习变得不再头疼的话题——AI智慧语言训练系统。这个系统可是我们语言学习者的福音&#xff0c;让我们一起来揭开它的神秘面纱吧&#xff0…

自动驾驶相关知识学习笔记

一、概要 因为想知道SIL、HIL是什么仿真工具&#xff0c;故而浏览了自动驾驶相关的知识。 资料来源《自动驾驶——人工智能理论与实践》胡波 林青 陈强 著&#xff1b;出版时间&#xff1a;2023年3月 二、图像的分类、分割与检测任务区别 如图所示&#xff0c;这些更高阶的…

1/7距离放假一周加1

要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩&#xff0c;分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数&#xff0c;并在主程序中完成测试 要求使用new和delete完成 #include <iostream> #include<algorithm> using nam…

解锁编程智慧:23种设计模式案例分享

为什么要学习设计模式&#xff1f;你可以把设计模式想象成一些做饭的菜谱。当我们需要做一道菜&#xff08;开发一个功能&#xff09;时&#xff0c;如果按照自己的想法随意添加调料&#xff08;编写代码&#xff09;&#xff0c;很可能做出的菜味道不好&#xff08;功能不稳定…

UWB实操:用信号分析仪(频谱分析仪)抓取UWB频域的图像

连接好UWB设备和信号分析仪&#xff08;频谱分析仪&#xff09;&#xff0c;让UWB设备持续发送信号。我来演示如何一步一步获得下面的图像&#xff1a; 设置频率&#xff0c;FREQ&#xff0c;Center Freq 7987.2MHz 设置X轴&#xff0c;宽度&#xff0c;SPAN 2GHz设置Y轴&…

Kali系统(Debian 10.3) 遇到的问题

目录 问题一&#xff1a;非问题 kali 基础官网与安装 问题二&#xff1a; 问题三&#xff1a; Kali系统 MySQL问题Cant connect to local MySQL server through socket /run/mysqld/mysqld.sock (2) 问题四&#xff1a;重新安装MySQL 也就是MariaDB(MariaDB 含 MySQL相关…

2025最新版Visual Studio Code安装使用指南

2025最新版Visual Studio Code安装使用指南 Installation and Usage Guide for the Latest Visual Studio Code in 2024 By JacksonML 2025-1-7 1. Visual Studio Code背景 早在二十年前&#xff0c;通用的集成开发环境&#xff08;Integrated Deveopment Environment, 简称…

opencv 学习(1)

文章目录 opencv导学部分opencv的作用ffmpeg和 opencv的关系opencv的未来 计算机视觉是什么&#xff1f; opencv导学部分 opencv的作用 1 : 目标识别 人脸识别 车辆识别 2 : 自动驾驶技术 – 计算机视觉 进行车道的检测 3 : 医学图像分析 通过分析光片 来分析人到底得了什么病…

C/C++编程安全标准GJB-8114解读——初始化类

软件测试实验室在申请CMA测试认证时&#xff0c;需要根据相应的标准确定检测方法。GJB-8114是一部嵌入式软件安全测试相关的国家标准&#xff0c;本系列文章我们针对GJB-8114《C/C语言编程安全子集》的具体内容进行解读。GJB-8114标准规则中一共有124条强制性规则&#xff0c; …

Excel 做数据分析的好与不好

日常工作中&#xff0c;涉及到数据的计算分析&#xff0c;Excel 一定是使用最多的。但是也有不少小伙伴困惑于 Excel 的深入学习难度大&#xff0c;复杂问题不好做&#xff0c;相同问题重复烦&#xff0c;大数据跑不了等问题。这里我们就来聊一聊 Excel 做数据分的好与不好&…

ollama安装及本地部署开源大模型

Ollama官网&#xff1a;https://ollama.com/&#xff0c;官方网站的介绍就一句话&#xff1a;Get up and running with large language models. &#xff08;开始使用大语言模型。&#xff09; Ollama是一个开源的 LLM&#xff08;大型语言模型&#xff09;服务工具&#xff0c…