程序应该始终回读它之前写的内容,即使是最放松的一致性。假设一个程序在core1上运行,并且在写入和后续读取之间移动另一个core2,操作系统和内存子系统的职责是什么,以确保读取返回先前写入的内容?
答案 0 :(得分:2)
操作系统必须确保在上下文切换时正确保存并恢复程序可见的所有CPU状态。
所以理论上L1必须刷新
但实际上,这取决于平台,例如x86架构使用cache coherency强制执行MESI,因此每个CPU在其缓存中共享内存的连贯映像,并且不刷新L1缓存。
但是,必须刷新其他类型的缓存,例如TLBs。