虚拟地址大于有效地址有什么意义?

rcp*_*lus 5 powerpc cpu-architecture virtual-memory

我熟悉虚拟内存以及虚拟地址与物理地址的概念。我也熟悉多级页面翻译方案。我新遇到的一件事是“有效”地址的想法。仔细一看,它用于索引分段地址空间,需要将其转换为线性化地址空间中的虚拟地址。表面上这对我来说很有意义,但后来我发现了一个这样的图表:


在此输入图像描述

来源


我真的不明白从 64 位 EAddr 到 80 位 VAddr 的意义是什么。由于 ESID 是 36 位,因此您可以拥有 2^36 个唯一的 VSID。与 2^16 个不同的页面索引值相结合意味着您实际上只能访问 2^52 个不同的虚拟页码,而不是像您期望的 80 位 VAddr 那样的 2^68 个。

那么为什么这个系统要费心去做这些事情呢?当您只使用 60 位时,移动大约 80 位听起来像是浪费布线。我有什么遗漏的吗?我是否误解了分段的工作原理?

小智 4

这里的“虚拟地址”具有与虚拟/物理意义上通常理解的不同的含义。

它特定于 PowerPC 用于地址转换的哈希页表 (HPT) MMU。全局使用单个哈希表结构来转换地址。不同的内存上下文(例如进程)使用单独的段表,因此它们将生成唯一的虚拟地址。虚拟地址用作共享哈希页表中查找转换的关键字。虚拟地址需要大于有效地址范围,以便不同的上下文可以在哈希表中具有唯一的翻译。

有关更多详细信息,请查看POWER ISA。特别是第三册:第五章存储控制。