【发布时间】:2013-04-08 09:55:27
【问题描述】:
如果将 CPU 缓存实现为直写缓存,手动刷新 CPU 缓存是否有意义?
【问题讨论】:
标签: cpu-cache
如果将 CPU 缓存实现为直写缓存,手动刷新 CPU 缓存是否有意义?
【问题讨论】:
标签: cpu-cache
当一个字通过存储指令写入直写 (WT) 高速缓存时,它也会被发送到内存层次结构的下一层 (see cache entry at wikipedia)。因此,WT 缓存中的缓存块是干净的,也就是说,与它们在下一级的副本保持一致,并且不需要回写。
在导致缓存内容陈旧的直接内存访问 (DMA) 的情况下,可能需要 WT 失效,但据我所知,这些不是手动操作,而是操作系统或硬件驱动的。
与手动刷新有关,例如根据英特尔架构软件开发人员手册(第 2 卷,指令集参考):
WBINVD — 写回并使缓存无效 该指令将处理器内部缓存中所有已修改的缓存行写回主内存,并使内部缓存无效(刷新)。
所以我认为,在 WT 缓存的情况下,这条指令只会使所有缓存行无效。