新聞中心

stm32 DMA性能資料

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
為了快速傳送一個數(shù)據(jù)塊,使用 DMA 傳送程序(Mem to Mem 16bits) 測量了一下傳送的時間,128個16b數(shù)據(jù)大約用了12us (72Mhz 時鐘)。 換句話來說,STM32 DMA 性能為10M/s


又使用memcpy 來比對一下,用時約4us ,顯然memcpy 要快很多。

btw, 在ST的手冊里面未見對DMA性能的表述。

本文引用地址:http://m.butianyuan.cn/article/201611/321188.htm

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

DMA傳送數(shù)據(jù)的速度不會比CPU直接傳送數(shù)據(jù)快,因為總

線頻率沒有變。

當(dāng)CPU也在運行執(zhí)行指令時,DMA傳送數(shù)據(jù)的速度會比CPU直接傳送數(shù)據(jù)慢,這是因為DMA與CPU分時使用同一條總線的緣故。

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

有一個專門講DMA性能的手冊的,你可以在官網(wǎng)上找到的
里面對DMA的性能描述得很清楚
AN2548 Using the STM32F101xx and STM32F103xx DMA controller

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

這個說法有點問題
DMA數(shù)據(jù)傳送是memory->memory
memcpy是memory -> cpu_internal_register -> memory

memcpy快應(yīng)該是因為1. memcpy采用了ldm/stm指令,這個對提高速度很有幫助 2. 總線仲裁偏袒cpu core

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

恩............ DMA控制器并不在memory之內(nèi)?我想你的意思是指MASTER DMA吧,像PCI那樣。但即使是legacy dma,由dma controller通過硬件的方式存取memory在通常情況下也應(yīng)該比cpu快,因為不需要取指/解碼/執(zhí)行這樣的流程。不過stm32的 controller不支持bust mode確實對其速度有很大影響,而ldm/stm指令實際上起到了bust mode的作用,可以在一次取指/解碼/執(zhí)行過程中操作多個數(shù)據(jù)。如果controller支持burst,相信就可以超越memcpy的速度了。目前來看stm32 dma的速度確實不如memcpy,其最大的好處在于cpu可以不參與其過程。

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

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

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

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



關(guān)鍵詞: stm32DMA性能資

評論


技術(shù)專區(qū)

關(guān)閉