2013-04-08 50 views

回答

2

当存储指令将一个字写入直写式(WT)高速缓存时,它也会发送到存储器层次结构的以下级别(see cache entry at wikipedia)。因此,WT高速缓存中的高速缓存块是干净的,即与下一级的副本相一致,并且不需要写回。

WT废票可以直接内存访问非常(DMA),使高速缓存内容陈旧,但是,时被要求据我所知,这些没有手动操作,但操作系统或硬件驱动。

相关手动冲洗,例如,根据英特尔架构软件开发人员手册(第2卷,指令集):

WBINVD - 写回和无效高速缓存该指令写回的所有修改的缓存线处理器的内部缓存到主内存并使内部缓存无效(刷新)。

所以我认为,在WT高速缓存的情况下,该指令刚才的所有高速缓存行无效。

+1

谢谢你。如果高速缓存行的后备存储是易失性(DMA),那么缓存理想不会使其无效而不是刷新它? – San 2013-04-09 02:55:35

+0

你说得对。我编辑了我的答案,使其更加准确。 – chus 2013-04-09 12:27:34

+0

是的。现在,由于WT缓存行条目始终是干净的,因此缓存行的显式刷新不应该导致写入实际内存不是吗? CPU应该放弃flush指令。 – San 2013-04-09 15:48:21