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.

EDMA 和 Cache 优化

hi,everyone:

经常看到网上说,EDMA算法优化,在片上L2SRAM 中开辟内存,将片外数据从DDR或

SDRAM 利用EDMA搬运到L2SRAM中。但是, 我有两点疑惑:

1.

我觉得这种方法并不是任何使用都有效,如果DDR 或SDRAM 已经开启了CACHE 功能,

就意味着DDR或SDRAM数据可以自动被cache到L2中。那么这时,cpu就可以在L2cache

中获得DDR中的数据,而不必到外存获取。所以,这种情况下,我的觉用不用EDMA搬运,

性能都一样了,数据已经可以从片上L2中获取了,换句话说,你用了EDAM搬运到L2SRAM

,性能也不会显著提升。同意我的看法么?

2。

在上面1的情况中,是不是把数据直接从SDRAM或者DDR搬运到L1DSRAM 会比简单的DDR

开启cache获得更好的性能呢?

  • DDR开启cache后,可以在第一次访问DDR数据时,将一个cache line的数据一次性地读入片内,以后再用到该cache line内的数据时,就不用再访问DDR了。但是,将数据从DDR一次性读入片内是需要时间的,并且在这段时间,DSP核是在等待的。如果能够利用EDMA提前把需要处理的数据搬到DSP片内L2上,就可以省去这段等待的时间。

    L1D一般都作为cache使用,除非数据空间很小,L1D能放得下。在L1D作为cache后,一般L2也开启cache功能,那么DDR的数据会先进入L2,再进入L1 cache。你也可以不把L1D都用作cache,但是因为它很小,并且只有将EDMA搬运到L1D和DSP核处理pipeline起来才能提高效率,这就意味着很多很多的EDMA搬运,不光非常复杂,多数情况下是不可能实现的。

x 出现错误。请重试或与管理员联系。