“全局页面”有什么用处?(英特尔 x86 处理器)

“全局页面”有什么用处?(英特尔 x86 处理器)

在英特尔软件开发人员手册(英特尔 64 和 IA-32 架构软件开发人员手册,2023 年 6 月编辑版)第 3A 卷第 4.10.2.4 节中,在解释 TLB 时,对“全局页面”有如下描述:

当 CR4 中的 PGE 标志(位 7)为 1 时,Intel-64 和 IA-32 架构也允许全局页面。如果映射页面的分页结构条目(PTE 或 PS 标志为 1 的分页结构条目)中的 G 标志(位 8)为 1,则使用该分页结构条目为线性地址缓存的任何 TLB 条目都被视为全局的。由于 G 标志仅用于映射页面的分页结构条目,并且此类条目的信息未缓存在分页结构缓存中,因此全局页面功能不会影响分页结构缓存的行为。
逻辑处理器可以使用全局 TLB 条目来转换线性地址,即使 TLB 条目与当前 PCID 不同的 PCID 相关联。

我理解当页面非全局的,给定页面的地址映射是特定 PCID 本地的,并且当页面全局,地址映射适用于所有 PCID
我不明白的是软件什么时候会使用这个功能。起初我以为它可能用于共享相同 CR3 值的线程组(这样它们基本上位于相同的虚拟地址空间中),或者可能用于虚拟地址空间fork在写入时被复制并以其他方式共享的情况。

然而,这没有意义,因为全球页面似乎实际上需要适用于所有流程,而不仅仅是某些流程。现在我最好的猜测是它用于内核虚拟地址转换,因为(我不是 100% 确定但)内核使用的虚拟地址空间中有一些固定区域,对于所有进程都有相同的转换。

因此,我的问题是,我是否正确理解了全局页面,如果正确,那么操作系统何时会使用此功能?

提前致谢。

相关内容