Answers:
是的,可能会发生这种情况(两个缓存都缓存相同的内存区域),实际上这是一个在实践中经常发生的问题。有多种解决方案,例如:
这个问题称为缓存一致性。有关该主题的Wikipedia文章对问题和可能的解决方案进行了很好的概述。
要回答标题中的问题,这取决于什么是缓存协议。如果是回写,则仅当缓存控制器别无选择,只能将新的缓存块放在已占用的空间中时,才将缓存刷新回主内存。先前占用该空间的块被删除,其值被写回到主存储器。
另一种协议是直写。在这种情况下,无论何时将缓存块写入第n级,都会更新第(n + 1)级上的相应块。(从概念上讲,这类似于在表单下填充复写纸;您在顶部写的内容都会复制到下面的表上。)这速度较慢,因为它显然涉及更多的写操作,但缓存之间的值更一致。在回写方案中,只有最高级别的高速缓存具有特定存储块的最新值。