TI论坛
直播中

徐伟

7年用户 906经验值
私信 关注
[问答]

请问MSM的cache一致性维护需要注意些什么?

专家您好:
       最近在调试过程中发现:通过Pcie传送来的数据数据大到一定范围cache inv操作就不起作用了。导致程序运行错误。
      1. csl库中的cache操作分两种,一种直接对L1、L2进行inv和writebak操作,一种是对内存地址依照大小进行cache维护操作,测试时发现有些csl中的cache语句
没有起到相应的作用。对内存地址进行cache操作超过一定范围就会失效。
      请问:
      1.对于用共享接受外设数据的cache维护有何需要注意的地方,比如地址128byte字节对齐,大小128byte字节对齐。cache维护有无大小限制?
      2.如果更新的数据量比较大,对整个L1cache无效和依照内存地址进行cache无效有何区别?
      3.csl库的cache维护代码,需不需要其他相关配置,为何有些语句不起作用?
      4.观察memery brower发现MSM中的数据可能出现在L2cache中,但是L2的cache大小设置为0?

谢谢!!!

回帖(10)

王英

2019-1-10 11:34:48
1. 无大小限制,应与cache line大小对齐;
2. L1最大32K,也就是最多缓存32K的数据,写不下的就先回写原来的;
3. 不需要,可能是回写还没有完成,需加上两次_mfence()语句保证回写完成;
4.不可能,0x0C000000开始的SL2内容不会出现在L2 cache,一定是别的地方搞错了。
举报

徐伟

2019-1-10 11:45:32
引用: hdfsf 发表于 2019-1-10 15:04
1. 无大小限制,应与cache line大小对齐;
2. L1最大32K,也就是最多缓存32K的数据,写不下的就先回写原来的;
3. 不需要,可能是回写还没有完成,需加上两次_mfence()语句保证回写完成;

谢谢您的回答:

       单独测试时没出现inv32k不起作用的情况,我们现在依照地址8k byte大小inv cache数据大了也起作用了,问题可能不在清cache本身。
举报

张燕

2019-1-10 11:55:06
引用: hdfsf 发表于 2019-1-10 15:04
1. 无大小限制,应与cache line大小对齐;
2. L1最大32K,也就是最多缓存32K的数据,写不下的就先回写原来的;
3. 不需要,可能是回写还没有完成,需加上两次_mfence()语句保证回写完成;

  如果需要将48K的处理数据writeback写回L2内存中,即调用cache的writeback语句可以实现48K的写回么?
谢谢!
举报

杨娟

2019-1-10 12:13:45
引用: werywer 发表于 2019-1-10 15:24
<blockquote class="quote"/>  如果需要将48K的处理数据writeback写回L2内存中,即调用cache的writeback语句可以实现48K的写回么?
谢谢!

外部memory地址与cache是有映射对应关系,超过cache大小,会进行cache替换,将之前的数据回写后再重新映射读入cache,软件回写只需向cache寄存器写入基地址及长度48k即可,或者调用csl cache函数即可。可以参考cache、corepac user guide关于cache的映射及一致性维护。
                                                                          

举报

更多回帖

发帖
×
20
完善资料,
赚取积分