2

除了 ASID 不同之外,是否可以映射具有相同虚拟地址和物理地址的两个条目?

4

1 回答 1

0

http://pages.cs.wisc.edu/~remzi/OSTEP/vm-tlbs.pdf

一个真正的 TLB 入口

最后,让我们简单看看一个真正的TLB。这个例子来自 MIPS R4000 [H93],一个使用软件管理的 TLB 的现代系统;在图 19.4 中可以看到一个稍微简化的 MIPS TLB 条目。

MIPS R4000 支持具有 4KB 页的 32 位地址空间。因此,我们期望在我们的典型虚拟地址中有 20 位 VPN 和 12 位偏移。但是,正如您在 TLB 中看到的,VPN 只有 19 位;事实证明,用户地址将仅来自地址空间的一半(其余部分为内核保留),因此只需要 19 位 VPN。VPN 最多可转换为 24 位物理帧号 (PFN),因此可以支持具有高达 64GB(物理)主内存(2^24 个 4KB 页)的系统。

MIPS TLB 中还有一些其他有趣的位。我们看到一个全局位 (G),它用于在进程之间全局共享的页面。因此,如果设置了全局位,则忽略 ASID。我们还看到了 8 位 ASID,操作系统可以使用它来区分地址空间(如上所述)。给你一个问题:如果一次运行超过 256 (2^8) 个进程,操作系统应该怎么做?最后,我们看到 3 个 Coherence (C) 位,它们决定了硬件如何缓存页面(有点超出了这些说明的范围);当页面被写入时标记的脏位(我们稍后会看到它的用法);一个有效位,它告诉硬件条目中是否存在有效的转换。还有一个页面掩码字段(未显示),支持多种页面大小;我们稍后会看到为什么拥有更大的页面可能有用。最后,一些 64 位未使用(图中的灰色阴影)。

是的,根据操作系统教科书(操作系统:三个简单的部分),对于某些 MIPS 系统(例如,MIPS R4000),他们确实有这种方案。例如,在 2 个进程之间共享的操作系统的全局页面符合您的描述。

于 2018-10-15T09:02:38.057 回答