新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > stm32 DMA性能资料

stm32 DMA性能资料

作者: 时间:2016-11-25 来源:网络 收藏
为了快速传送一个数据块,使用 DMA 传送程序(Mem to Mem 16bits) 测量了一下传送的时间,128个16b数据大约用了12us (72Mhz 时钟)。 换句话来说,STM32 DMA 性能为10M/s


又使用memcpy 来比对一下,用时约4us ,显然memcpy 要快很多。

btw, 在ST的手册里面未见对DMA性能的表述。

本文引用地址:https://www.eepw.com.cn/article/201611/321188.htm

----------------------------------

DMA传送数据的速度不会比CPU直接传送数据快,因为总

线频率没有变。

当CPU也在运行执行指令时,DMA传送数据的速度会比CPU直接传送数据慢,这是因为DMA与CPU分时使用同一条总线的缘故。

----------------------------------

有一个专门讲DMA性能的手册的,你可以在官网上找到的
里面对DMA的性能描述得很清楚
AN2548 Using the STM32F101xx and STM32F103xx DMA controller

----------------------------------------

这个说法有点问题
DMA数据传送是memory->memory
memcpy是memory -> cpu_internal_register -> memory

memcpy快应该是因为1. memcpy采用了ldm/stm指令,这个对提高速度很有帮助 2. 总线仲裁偏袒cpu core

---------------------------------------

恩............ DMA控制器并不在memory之内?我想你的意思是指MASTER DMA吧,像PCI那样。但即使是legacy dma,由dma controller通过硬件的方式存取memory在通常情况下也应该比cpu快,因为不需要取指/解码/执行这样的流程。不过stm32的 controller不支持bust mode确实对其速度有很大影响,而ldm/stm指令实际上起到了bust mode的作用,可以在一次取指/解码/执行过程中操作多个数据。如果controller支持burst,相信就可以超越memcpy的速度了。目前来看stm32 dma的速度确实不如memcpy,其最大的好处在于cpu可以不参与其过程。

-----------------------------------

非常同意byeyear 的解释,顺便问一句,其他品牌的M3的DMA是否也不支持 burst 模式?

------------------------------------

DMA并不一定快,只是提高了有效代码的运行效率。



关键词: stm32DMA性能资

评论


技术专区

关闭