cortex-a9,把一段尺寸为512K的内存lock 到L2中,然后访问它,用cp15,0,r0,c9,c13,2可以看到,能够 cache hit
然后执行L2flush,再访问,用cp15,0,r0,c9,c13,2,发现 cache miss。
why?
你所说的Flush指的是clean and invalidate吗。如果是的话,其中invalidate部分就清除了cache line的valid位。这样肯定是会miss的。 L2 cache controller TRM DDI0246C (http://infocenter.arm.com/help/topic/com.arm.doc.ddi0246c/DDI0246C_l2cc_pl310_r2p0_trm.pdf )173页对invalidate的解释力提到了flush,并且说flush之后所有的cache line都是invalidate的。
如此的话,只会miss一次啊,可我看到的是,只要flush一次,以后就永远miss了,就像L2cache没有了。
如果不lock,就只miss一次。