当页面换出磁盘时,页面的缓存行会发生什么变化?

时间:2015-03-26 12:16:52

标签: caching operating-system paging computer-architecture

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

为了解释为什么需要这样做,我们假设有一个过程A& B和A在起始物理地址X处访问物理页面P1.P1的某些内容必须已缓存在不同级别的高速缓存中。现在,页面P1被换出,进程B的页面P2被引入相同的地址X.因此,如果属于页面P1的高速缓存行没有被无效,那么进程B可能会在最初属于那些行的那些行上获得高速缓存。第P1页的进程A(因为物理标记匹配)。

这种情况有效吗?如果缓存是VIPT或PIPT会有什么不同吗?

如果能引用它在现代OS /处理器中的处理方式,那就太棒了。

1 个答案:

答案 0 :(得分:1)

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

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

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