新聞中心

stm32 DMA性能資料

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


又使用memcpy 來比對(duì)一下,用時(shí)約4us ,顯然memcpy 要快很多。

btw, 在ST的手冊(cè)里面未見對(duì)DMA性能的表述。

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

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

DMA傳送數(shù)據(jù)的速度不會(huì)比CPU直接傳送數(shù)據(jù)快,因?yàn)榭?/p>

線頻率沒有變。

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

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

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

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

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

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

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

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

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

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

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

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



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

評(píng)論


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

關(guān)閉