This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DDR2开cacheability后与L2的效率比较



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

  • 1. Cache的本质也是一种DMA操作

    2. 如果解答了您的疑问,请勾选绿色按钮。。。谢谢

  •    不过能不能解释的具体点,在这种情况下(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