gpt4 book ai didi

cpu-architecture - 访问内存时,是否会在缓存命中情况下设置页表访问/脏位?

转载 作者:行者123 更新时间:2023-12-03 20:32:24 24 4
gpt4 key购买 nike

据我所知,CPU的一次内存访问涉及到CPU缓存和MMU。 CPU 将尝试在缓存中找到它的目标,如果发生缓存未命中,CPU 将转向 MMU。在 MMU 访问期间,对应页表项的访问/脏位将由硬件设置。

然而,据我所知,除非出现缓存未命中,否则大多数 CPU 设计都不会触发 MMU,这里我的问题是,是否仍会在缓存命中时设置页表条目的访问/脏位?还是跟架构有关?

最佳答案

我认为您可以假设这些位缓存在 TLB 中,如果与 TLB 中的值和内核完成的访问存在任何不一致,将采用微码辅助并更新这些位。例如,如果 A1 或 D 位为零并且发生访问或存储,则将检测到这种情况并设置适当的位。

您还可以假设 TLB 命中的快速路径无法进入内存并查看缓存的 TLB 位是否与 RAM 中的 PTE 一致。此外,在 x86 上,对 PTE 的更改不会通过硬件推送到 TLB,缓存无效样式;即 TLB is not coherent .

这意味着如果位在某些方面不同步,它们可能不会被正确更新。例如,如果 TLB 中的 A(相应 D)位被设置,并且发生了访问(相应的存储),那么即使 A(相应 D)位在 PTE 中实际上未设置,也不会发生任何事情。对位进行更改的实体负责刷新 TLB,以便将来正确更新位。

1 有一个带有 A == 0 的 TLB 条目很奇怪:由于访问,您希望条目在那里,因此拥有 A从一开始就设置了位。也许在某些情况下可能会发生这种情况,例如由推测访问或预取引入的页面。

关于cpu-architecture - 访问内存时,是否会在缓存命中情况下设置页表访问/脏位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43280712/

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