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.

dsp6678在运算数据时,每个核都可以直接对DDR3中的数据进行读写,为什么还需要DMA在不同存储器中进行数据搬运?

如题,想知道这个只是为了加快运算速度,还是必须要将DDR3数据搬运到L1,L2存储器中再进行读写,dsp内核可以直接往DDR3中读写数据吗?

  • 用edma是为了加快速度,因为EDMA是硬件上搬移数据,不需要CPU,CPU可以做其他事情。
  • 感谢回复,我不明白的地方是 我在代码里直接往DDR3的地址里写数据,就代表我直接用CPU在读写DDR3的数据,对吗,那其实您的意思是可以让DMA将DDR3的数据搬运到L2,然后代码里直接往L2里读写数据,与此同时,DMA还在搬运,但是搬运会覆盖L2的数据,但代码里还在对L2的数据进行读写,这两者不会发生冲突吗?
  • "我在代码里直接往DDR3的地址里写数据,就代表我直接用CPU在读写DDR3的数据",您的理解是对的。

    “可以让DMA将DDR3的数据搬运到L2,然后代码里直接往L2里读写数据,与此同时,DMA还在搬运,但是搬运会覆盖L2的数据,但代码里还在对L2的数据进行读写,这两者不会发生冲突吗?” CPU和EDMA同时访问内存,会有内部仲裁机制,通常是CPU对L2读写好后,启动EDMA搬移数据,或者EDMA搬好数据后,通知CPU去读写。