QQ624353765 发表于 2023-1-14 20:20:55

结构体传输速率问题




在没有DMA之前都是用结构体=结构体来交换结构体中的数据



从汇编可以看出是使用COPY函数




使用DMA拷贝需要中间变量,交换两个结构体需要拷贝三次


请问这两个方法哪个更快,为什么。最好做个实验结果看下

梁工 发表于 2023-1-14 21:35:14

肯定DMA更快,硬件完成的。

LAOXU 发表于 2023-1-15 06:05:07

数据长度大约 多少字节?

数据量少, 肯定直接赋值快, 数据量大, DMA快,

LAOXU 发表于 2023-1-15 22:07:18

我想测试一下, 楼主的问题, 到底数据长度大于多少时, DMA传输比纯软件快.

结果大跌眼睛......

请看测试结果, 简单的用定时器0, 作传输计时器(定时器0未设置, 12分频)




LAOXU 发表于 2023-1-15 22:16:48

以上测试, 数据长度为 STC8HDMA传输充许的最大值(256字节),

可以计算出,数据交换:501/322 =1.56倍, 即 DMA对两组长度为 256字节的 XRAM数据, 进行交换, 比用纯软件方式, 执行速度慢 1.56倍,

数据移动: 165/151 =1.1倍, 即 DMA 将一组长度为 256字节的 XRAM数据, 移到另一组, 比用纯软件方式, 执行速度慢 1.1倍.

LAOXU 发表于 2023-1-15 22:17:39

具体测试程序


LAOXU 发表于 2023-1-15 22:18:28

继上.



LAOXU 发表于 2023-1-15 22:22:12

DMA 的传输速度, 竟然干不过纯软件.

想不到啊......

也想不通......

QQ624353765 发表于 2023-1-16 09:35:52

LAOXU 发表于 2023-1-15 22:18
继上.

我想不通的是DMA是硬件,你是如何用KEIL模拟的

LAOXU 发表于 2023-1-16 11:07:52

QQ624353765 发表于 2023-1-16 09:35
我想不通的是DMA是硬件,你是如何用KEIL模拟的

用 STC8H 芯片仿真, 数据处理 用 DMA传输 和 纯软件模拟传输 两种方法, 然后计时, 对比执行时间, 得出传输速度和效率.
页: [1] 2 3
查看完整版本: 结构体传输速率问题