【问题标题】:What happens to the cache-lines for a page when the page is swapped out to the disk?当页面被换出到磁盘时,页面的缓存行会发生什么?
【发布时间】:2015-03-26 12:16:51
【问题描述】:

当一个页面被换出到磁盘时,它的一些内容可能存在于缓存中(我相信这将是一种非常罕见的情况,因为如果页面长时间没有被访问,很可能是缓存到那时,包含其内容的 -lines 也将被逐出。)当页面被换出时,这些缓存行会发生什么。他们需要立即失效吗?如果线路脏或干净,有什么区别吗?谁控制这个进程、操作系统或硬件,或两者兼而有之?

为了解释为什么需要注意这一点,我们假设有进程 A 和 B 并且 A 正在访问起始物理地址 X 处的物理页 P1。P1 的某些内容必须已经缓存在不同级别的缓存中。现在页面 P1 被换出,进程 B 的页面 P2 被引入到相同的地址 X。因此,如果属于页面 P1 的缓存行没有失效,那么进程 B 可能会在最初属于的那些行上命中缓存页面 P1 的进程 A(因为物理标签会匹配)。

这种情况有效吗?缓存是VIPT还是PIPT有区别吗?

如果您能引用现代操作系统/处理器中的处理方式,那就太好了。

【问题讨论】:

    标签: caching operating-system paging computer-architecture


    【解决方案1】:

    如果 DMA(在 I/O 设备和内存之间复制数据以进行大量传输的首选方法)是缓存一致的(即 DMA 代理检查缓存),那么硬件将确保在以下情况下读取任何脏缓存行分页,任何旧的缓存行都将失效(或被覆盖——某些系统支持将 I/O 设备存储到缓存)。对于非连贯 DMA,操作系统必须将被调出的页面刷新到内存中。

    DMA 是否一致取决于 ISA 和实现。例如,this blog post 提到 x86 保证一致性,但 Itanium 和 ARM 没有。 (请注意,ISA 的实现可以提供更强的保证。)

    缓存是否被虚拟索引不会影响所需的操作,因为操作系统会根据虚拟地址刷新,并且别名问题已经在硬件或软件中处理(例如,通过页面着色)。

    【讨论】:

    • 非常感谢@paul-a-clayton。你的回答有帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-09-19
    • 2011-09-13
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 2013-07-23
    • 2015-02-13
    相关资源
    最近更新 更多