您好:问题简单描述如下:
多核编程,所有段放在DDR里面,L1、LL2全都作为cache,采用主从模式 ,定义全局变量i=0,core0调用函数实现i++,然后通过notify一次通知core1-core7,也调用该函数实现i++,最后实验显示,core0-core7打印结果都是i=1。
请问这是什么原因,不是应该core0打印i=1,core1打印i=2………我cache没有进行一致性维护,不知道是不是这个原因?
谢谢!
Shine:
全局变量放在DDR的地方是否是cacheable的?如果是cacheable,需要维护一致性。否则某一个core不能获得其他core更新的数据,你可以把memory设置为noncacheable,这样就不需要手动维护cache一致性
qq z:
回复 Shine:
您好:
全局变量是放在数据段的,数据段放在DDR里面,我并没有让DDR作为Cacheable,按照您的说法,每个核访问的数据段的数据都是最新的?
Shine:
回复 qq z:
是的。
qq z:
回复 Shine:
您好:
但是上面实验的结果为什么是不正确的呢?