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

关于TMS320C6678使用MSM时,cache一致性维护的问题

我看到技术文档上说,MSM默认状态时cache enable的,而且在MSM上cache一致性的工作需要用户完成。

基于以上两点,我举个例子,假如core0向0x0c000000地址写入一个数据,随后core1读取这个地址的数据,此时这个地址应该映射到core1的L1D中,然后我再次在core0中改变这个地址的数据,在core1上是无法表现出来的,因为core1只会在L1D cache中获取之前已经缓存了的数据。

为了避免上述现象发生,是不是表示要在core1使用MSM中的数据之前,先用cache_inv使L1D cache中这个地址的数据无效?

如果这样做的话,在使用这个数据的时候,L1D cache会重新刷新这个地址位的数据,这样不是就达不到cache高速数据吞吐的目的了么?

Andy Yin1:

对的,MSM需要应用程序维护cache一致性,写端进行cache flush,读端进行cache invalid。

如果每次处理时都是cache invalid会导致cache miss确实会影响效率,所以如果是大量的数据建议把数据通过EDMA或Navigator等直接存到LL2处理,LL2的cache一致性是由硬件维护。

yun xu:

回复 Andy Yin1:

L2是通过snoop命令维护cache一致性的,请问snoop命令会带来额外的时间开销么

yun xu:

回复 Andy Yin1:

谢谢

赞(0)
未经允许不得转载:TI中文支持网 » 关于TMS320C6678使用MSM时,cache一致性维护的问题
分享到: 更多 (0)