看了些论坛上关于cache一致性问题,还有些不明白的。cache和prefetch是不同的吧。prefetch有自己的buffer来存取某个开启预取功能地址的值?在Mar寄存器中如果cache和prefetch都打开的话,cpu会先读取cache中的值,如果没命中,再读取prefetch中的值?不知道这样理解对不?还有如果L1与L2同时同时开启cache功能,那么会存在L1和L2会同时缓存某个地址的值么?如果是的话,那么某个核访问这个地址时,是不是得写个函数CACHE_invL1d和CACHE_invL2?,如果此地址开启预取功能,是不是还要无效掉prefetchbuffer?
Andy Yin1:
对的,你的理解是正确的。