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

C6678 cache一致性问题

在应用时遇到cache一致性问题:

1,我定义的全局变量放在L2内存中,在程序运行时更新L2内存中数据,L1D  cache中数据并未更新。TI资料说明L1D cache和L2 MEM的cache一致性是硬件维护的,但我测试时发现并没有。

2,下图是我在memory browser中观察到的数据,我勾选L1D cache选项发现L2中的数据在变化,以此判断数据是否一致,不知道这种方式对不对。 

      a:L2中的数据(红色数据)

b:勾选L1D cache选项时红色的数据在变化

Shine:

请问L1, L2 cache使能了么?

Ming LEO:

回复 Shine:

使能了,L1D_cache=32k,L2_cache=128k

Ryan BL:

是这样的,木有问题,这样的显示可用于分析cache覆盖等问题。
你能看到L2与L1中的数据不一致,实际上无论你使用CORE访问还是外设访问L2 SRAM中的值,都能正确访问到的。
这也是ti哥经常推荐的将高速数据放置于L2SRAM可以提高速度的同时免除cache一致性的维护。这个一致性会在真实的地址访问的时候由硬件做一致性维护;
除非你故意使用cache的freeze冻结了cache而后在LL2 SRAM里面对已cache的内容做了修改,才可能导致不一致的情况发生,这也是经常的验证SRAM的ECC特性是否正确开启的验证手段。
另外就是真的发生了SRAM的内存错误,ECC就会被触发,这期间的访问可能得到错误的数据,所以也建议开启EDC功能。

Ming LEO:

回复 Ryan BL:

非常感谢你的回复

Ryan BL:

回复 Ming LEO:

不客气。

赞(0)
未经允许不得转载:TI中文支持网 » C6678 cache一致性问题
分享到: 更多 (0)