TI论坛
直播中

闫雪花

7年用户 260经验值
私信 关注
[问答]

请问cache_inv,cache_wb以及cache_wbinv都有什么区别?

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

回帖(3)

张博

2018-7-24 07:56:56
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 无效。
举报

闫雪花

2018-7-24 08:05:26
引用: 听你喜欢的歌 发表于 2018-7-24 07:56
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,就 ...

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

张红梅

2018-7-24 08:12:50
引用: bbwerq 发表于 2018-7-24 08:05
谢谢您的解释!但是我还是有些不懂的地方:cache为什么要inv,什么时候需要inv,这个buffer可以使任何的内存么,比如msmc和ddr,怎么判断一个cache line是不是dirty,还有一个buffer怎么cache,是cache到L2还是L1D?
     问题比较多,还请多多赐教,十分感谢!  ...

我理解inv是读操作的时候使用,wbinv是写操作的时候使用,针对场景不同
我这样理解对么?
但是我也有一个问题:当我写cache的时候,如果core自动更新cache里面的数据,core会自己有wb操作么?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分