TI论坛
直播中

张桂芝

7年用户 165经验值
私信 关注

DDR2开cacheability后与L2的效率比较,请问谁能解释下这个没有大幅的效率提升可能是什么原因?

本帖最后由 一只耳朵怪 于 2018-6-22 10:34 编辑

测试了在不开DDR2 cacheability、不开cacheability、L2中三种情况下计算效率。开了cacheability的计算效率是明显的,大概是不开的6-8倍。但是将数据全部放在L2中计算的效率只是开了DDR2 cacheability的1.3倍左右,另外我将大块的数据EDMA到L2中计算其效率是开DDR2 cacheability的1.2倍(比全部在L2中多了EDMA启动开销)左右,感觉这个提升幅度有低。理想情况EDMA搬移数据到L2中计算,其效率应该是在开启DDR2 cacheability的效率的几倍?谁能解释下这个没有大幅的效率提升可能是什么原因。

回帖(3)

袁媛

2018-6-22 07:56:23

最佳答案

1. Cache的本质也是一种DMA操作
2. 如果解答了您的疑问,请勾选绿色按钮。。。谢谢
举报

张桂芝

2018-6-22 08:30:52
引用: rwd2016 发表于 2018-6-22 08:12
1. Cache的本质也是一种DMA操作
2. 如果解答了您的疑问,请勾选绿色按钮。。。谢谢

   不过能不能解释的具体点,在这种情况下(DDR2 cacheability), 使用EDMA (pingpong结构)有没交大的效率提升,另外DDR2的cacheability开多大的片区为好呢,开多了有没什么影响。
举报

袁媛

2018-6-22 08:46:05
引用: wenxueshu 发表于 2018-6-22 08:30
   不过能不能解释的具体点,在这种情况下(DDR2 cacheability), 使用EDMA (pingpong结构)有没交大的效率提升,另外DDR2的cacheability开多大的片区为好呢,开多了有没什么影响。

1. Cache的机制就是把外存的数据Buf到片内RAM,这个操作的过程就是DMA控制器完成的,如果CPU用到的数据在Cache里,叫Hit,不在,则CPU还需要对外存进行访问,叫Miss,不同的CPU的Cache有本身的工作机制,譬如4-Set(发射)什么的,不需要代码去干预,指令Cache会自动预测下一条指令的位置,从而进行预取,这样流水线工作效率才会高,这也就是为什么不要在while或者循环里用goto的原因,这样会清空指令Cache流水线,重新Buf指令数据;对于数据Cache,理论是一样的;
2. DDR2里如果有你的Codec使用的数据或者是非ARM/Linux系统使用到的内存区域,这些区域要设置成不可Cache
举报

更多回帖

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