完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
请教:
在当前基于C6678的大型项目开发中,在cache的维护上遇到了一些问题,为此希望建立一些基本的维护规则。在应用中,变量可以认为有以下3种:仅核自身用到的变量;多核共享的标志变量(用于核间传递信息);核与外设交互的数据。cache只使用L1D,L2不作cache用。 考虑采用下述原则: 1、核自身用到的变量,定义于L2上,并不作任何一致性维护; 2、多核交互变量,定义于共享内存,任何核写入后均立刻writeback,读出前Invalid;变量定义全部对齐到cache line大小(以避免对一个变量的回写和无效影响其它变量) 3、核与外设交互的数据,当其定义于L2或MSMC上时,分别参照第1条和第2条。 根据大家的开发经验,这些原则是否正确和全面?希望有开发经验的同学能分享经验。 |
|
相关推荐
11个回答
|
|
原则上没有问题,在C6678上请关闭MSMC的Prefetch,详见C6678 silicon errata Advisory 28.
如果在刷Cache时使用mfence指令,一个mfence是不可靠的,需要用连续两个,详见 Advisory 27. |
|
|
|
hdfsf 发表于 2018-6-21 11:00 Allen Yin 您好! 最近在C6678上遇到cache的问题,我使用DMA将数据从cache非使能区拷贝到cache使能区(先无效化cache),在cache使能区计算完毕后又把结果存放到cache非使能区(先回写cache),DMA操作遵循cache维护一致性,但是还是偶尔出现了cache导致的数据错误,请问跟你说的这两个勘误有关吗?(Advisory 27和Advisory 28) 另外,csl库里cache回写的函数最后会有一个mfence操作的语句,你的意思是这个函数是不可靠的?需要再加一个mfence语句?? |
|
|
|
0896086 发表于 2018-6-21 11:11 建议你使用keystone库里的writebackcache和invalidcache代码吧,CSL代码有些确实不可靠 |
|
|
|
0896086 发表于 2018-6-21 11:11 s是这样的,必须连续调用两次mfence才能有效,一个mfence可能会出问题。 |
|
|
|
好的,谢谢回复,我也的确看到一些例程里在cache操作的函数后又调用了如下语句:CSL_XMC_invalidatePrefetchBuffer();_mfence();_mfence();就是对应你说的那两个勘误信息。另外我想确认我如下做法是否正确可靠???????前提:L1cache 32k L2 cache 256k无效化cache调用CACHE_invL1d()以及上面三条语句+CACHE_invL2()以及上面三条语句回写cache同上 手机写的排版可能有些奇怪,请见谅,谢谢关注! |
|
|
|
0896086 发表于 2018-6-21 11:36 是的; cache回写应该调用writeback或者invalidatewriteback;invalidate只做无效化。 6678最好关闭MSMC的prefetch buffer防止数据错误,这一点就是在Advisory 28里提到的。 |
|
|
|
hdfsf 发表于 2018-6-21 11:47 好的,非常感谢! |
|
|
|
你好 ,请问多核共享的标志变量你是怎么做的,我现在也在用这个,但是不是很理解,你能具体说下吗,还有那些cache的函数在那个文件,谢谢
|
|
|
|
建议新开一个帖子提问题,把这个帖子的链接贴到新帖里提问。 多核共享标志变量就是把全局变量通过cmd文件指定到DDR或SL2中的特定位置,所有core都能访问该共享内存。cache的函数在csl_cacheAux.h |
|
|
|
dechun28448 发表于 2018-6-21 12:21 zhan xiang 你好!我觉得基于sys/bios的工程使用CMD比较麻烦,容易与CFG文件相冲突;请问针对基于sys/bios的工程如何去把全局变量定义到共享内存中呢?谢谢你 |
|
|
|
最近刚解决了这个问题,您可参考一下我的总结^_^
《TI6678 MSMC关闭Cache方法总结》 https://blog.csdn.net/weekman93/article/details/88806868 |
|
|
|
只有小组成员才能发言,加入小组>>
321 浏览 1 评论
523 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
762 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
643 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1119 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
16浏览 28评论
37浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
234浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
191浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
51浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 03:17 , Processed in 0.912242 second(s), Total 69, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号