gpt4 book ai didi

memory-management - Intel x86-64 CPU 访问多少页表来转换虚拟内存?

转载 作者:行者123 更新时间:2023-12-04 23:42:27 25 4
gpt4 key购买 nike

在将虚拟地址转换为物理地址时,我试图了解查找的表的数量。英特尔手册似乎说明了许多方案:

http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-system-programming-manual-325384.pdf

(第 4 节)

而 Ulrich Drepper 的论文说通常有 4 个:

http://www.akkadia.org/drepper/cpumemory.pdf

(第 38 页)

而我似乎在网上找到了很多图表,只显示了两个:

enter image description here

有人能解释一下在 Intel CPU 上通常访问多少页表,或者它是否取决于操作系统配置(如巨大的内存页等)?

最佳答案

简答

x86-64 系统上最常用的页表数是 4。这是假设 64 位操作系统使用 Intel 称为 IA-32e 分页模式和 4 KB 页。其他一些模式需要更少的页表(如英特尔文档中所述)。

详细解答

图4-1来自Intel 64 and IA-32 Architectures Software Developer’s Manual显示可能的配置。要关注的列是两个地址宽度列和页面大小列。您看到这么多不同选项的原因是因为这些不同的组合中的每一个都改变了页表的使用方式以及需要多少页表。

Properties of Different Paging Modes

当今 x86-64 系统上最常用的配置是 IA-32e 分页模式,具有 4 KB 页面,其工作原理的详细信息如图 4-8 所示。

Linear-Address Translation to a 4-KByte Page using IA-32e Paging

寄存器中的值 CR3指向分页结构的根。有一个 48 位的线性地址(程序的虚拟地址)需要转换为物理地址(最多 52 位)。 4 KB 页的页偏移量是 12 位,因此在线性地址中留下 36 位以索引到页表中。用于索引每个表结构的位越多,该表就需要越大。 Intel所做的就是把页表分成4层,每一层用9个索引位访问。

如果您使用 2 MB 页面,那么您有 21 位可以偏移到页面中。因此可以删除转换步骤中使用的表之一,同时保持其他表的大小相同(如图 4-9 所示)。

Linear-Address Translation to a 2-MByte Page using IA-32e Paging

其他配置遵循相同的模式,如有必要,您可以查看英特尔手册以获取更多详细信息。

我怀疑您在网上看到只有两个级别的图表的原因是因为它提供了足够的细节来解释分页中使用的整体概念。附加级别只是相同概念的扩展,但针对体系结构想要支持的特定地址大小和页表大小进行了调整。

关于memory-management - Intel x86-64 CPU 访问多少页表来转换虚拟内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com