Caching 在什么情况下,单处理器系统会使其失效';s缓存?

Caching 在什么情况下,单处理器系统会使其失效';s缓存?,caching,operating-system,hardware,cpu-architecture,Caching,Operating System,Hardware,Cpu Architecture,是否存在单处理器(或单核)系统会使其缓存线失效的情况 因为不需要一致性,所以不可能从其他核心中失效 是否有硬件支持缓存线的计时器失效 当程序退出时,与其相关的缓存线如何失效?我假设操作系统不知道缓存实现,这样它就不会失效。我能想到一些情况 如果缓存为“写旁路”,则写操作只会使缓存线无效并更新主内存 内存映射I/O,因此缓存的内存位置可以由I/O设备修改。这类似于简化的缓存一致性系统 此外,当交换分页时,TLB中的虚拟到物理转换无效,因此条目被标记为无效。因此,由于物理地址不再与缓存项对应,缓存项

是否存在单处理器(或单核)系统会使其缓存线失效的情况

因为不需要一致性,所以不可能从其他核心中失效

是否有硬件支持缓存线的计时器失效


当程序退出时,与其相关的缓存线如何失效?我假设操作系统不知道缓存实现,这样它就不会失效。

我能想到一些情况

  • 如果缓存为“写旁路”,则写操作只会使缓存线无效并更新主内存

  • 内存映射I/O,因此缓存的内存位置可以由I/O设备修改。这类似于简化的缓存一致性系统

  • 此外,当交换分页时,TLB中的虚拟到物理转换无效,因此条目被标记为无效。因此,由于物理地址不再与缓存项对应,缓存项将变得无效

  • 现有的程序类似于交换页面,所以我想3点回答了这个问题


    顺便说一句,没有定时失效,尽管您可以在指令流中稍后发出失效指令。

    我可以想到一些情况

  • 如果缓存为“写旁路”,则写操作只会使缓存线无效并更新主内存

  • 内存映射I/O,因此缓存的内存位置可以由I/O设备修改。这类似于简化的缓存一致性系统

  • 此外,当交换分页时,TLB中的虚拟到物理转换无效,因此条目被标记为无效。因此,由于物理地址不再与缓存项对应,缓存项将变得无效

  • 现有的程序类似于交换页面,所以我想3点回答了这个问题


    好的,没有定时失效,尽管您可以在指令流中稍后发出一条失效指令。

    此外,Isuru的回答-有时用户希望使某行的所有副本失效,通常是为了容错(有时这可能涉及写入一些非易失性内存,但缓存可能仍会丢失,因此需要确保没有新数据保留在那里)。 我还可以考虑一些安全目的(其他进程的缓存嗅探)


    但是,我认为最常见的原因是CPU的一些断电/休眠状态,可能会使某些组件(包括一些缓存)处于休眠状态,例如,在等待某个外部事件时。

    此外,Isuru的回答-有时用户希望使某行的所有副本无效,通常是为了容错(有时这可能涉及写入一些非易失性内存,但缓存可能仍会丢失,因此需要确保没有新数据保留在那里)。 我还可以考虑一些安全目的(其他进程的缓存嗅探)


    但是,我认为最常见的原因是CPU的某些断电/休眠状态,可能会使某些组件(包括某些缓存)进入休眠状态,例如在等待某个外部事件时。

    多个内核只是导致缓存失效的一个原因。DMA(或更一般的,每个写入内存的硬件)是另一个。多核只是缓存失效的一个原因。DMA(或者更一般地说,每个写内存的硬件)是另一个。听起来不错。正如@mfro提到的,DMA属于第2点。是的,DMA和内存映射I/O是不同的,但就问题而言,它们具有相同的效果,即在没有CPU(缓存)的情况下修改内存了解它。听起来不错。正如@mfro所提到的,DMA属于第2点。是的,DMA和内存映射I/O是不同的,但就问题而言,它们具有相同的效果,即在CPU(缓存)不知道的情况下修改内存。