TI中文支持网
TI专业的中文技术问题搜集分享网站

Cache的一致性操作问题,怎么知道wbInv操作有效?

07核做完算法操作,共享区地址0X0C2973A4数据是0x123456,进了L1Dcache,然后进行wbInv操作,在cache窗口里看到数据确实是not valid。 此时,06核对地址0X0C2973A4清零。然后在07核看到地址0x0C2973A4里的数是0,然后读该地址的数,读的却是之前wbInv的数据0x123456.(理论上读的应该是0)。引起该问题的原因是什么呢?可能是L1D的内存保护机制吗?

Adam Yao94020:

CorePaC的XMC接口上对于MSMC中带有prefetch的功能,MSMC中的数据在实际访问之间可能实际已经在prefetch buffer当中了。

建议不要依赖WbInv这样的指令去排空cache line,在访问实际的数据之前做Inv会更加安全一点。

user4393958:

回复 Adam Yao94020:

试过Inv操作,实际效果也不行。但是唯独该地址后的几个line会出现脏数据。

user4393958:

回复 user4393958:

把MSMC的预取关闭之后就能正常读数了,果然还是预取缓冲的问题。得多看看这块。

赞(0)
未经允许不得转载:TI中文支持网 » Cache的一致性操作问题,怎么知道wbInv操作有效?
分享到: 更多 (0)