This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cache 问题

总是弄不明白cache_inv,cache_wb以及cache_wbinv都有什么区别,请专家指教!

  • cache_inv是清除cache line的valid 比特,使cache line中缓存的buffer无效,在inv以后,如果core再访问这个buffer, cache就会再次从memory把它刷进来。
    cache_wb是把cache中的dirty line回写到memory
    如果一个cache line是dirty的说明这个buffer的内容已经被core修改,只做invalidate就会使新的内容丢失,所以要有wbinv,就是先把dirty的cache line回写到memory再使这个cache line 无效。

  • 谢谢您的解释!但是我还是有些不懂的地方:cache为什么要inv,什么时候需要inv,这个buffer可以使任何的内存么,比如msmc和ddr,怎么判断一个cache line是不是dirty,还有一个buffer怎么cache,是cache到L2还是L1D?

         问题比较多,还请多多赐教,十分感谢! 

  • 我理解inv是读操作的时候使用,wbinv是写操作的时候使用,针对场景不同

    我这样理解对么?

    但是我也有一个问题:当我写cache的时候,如果core自动更新cache里面的数据,core会自己有wb操作么?