SGDMA与普通DMA:原理与应用
创作时间:
作者:
@小白创作中心
SGDMA与普通DMA:原理与应用
引用
1
来源
1.
https://www.cnblogs.com/yucloud/p/18170056/SGDMA_DMA
DMA(Direct Memory Access,直接内存访问)是一种让硬件设备能够直接读写主内存的技术,可以显著提高数据传输效率。本文将介绍两种常见的DMA实现方式:Block DMA和Scatter-Gather DMA(SGDMA),并探讨它们在不同硬件平台上的应用。
Block DMA与SGDMA的区别
Block DMA(普通DMA)每次只能传输一块物理上连续的数据,传输完成后会向CPU发出中断请求,CPU收到中断后才会安排下一次数据传输。这种方式在处理大量非连续数据时效率较低,因为需要频繁的CPU干预。
而SGDMA则通过使用链表来描述物理上不连续的存储空间。在传输过程中,DMA控制器会根据链表自动处理下一个数据块的传输,直到所有数据传输完成才向CPU发出中断请求。这种方式大大减少了CPU的干预次数,提高了数据传输效率。
Linux应用层Vectored I/O写法
在Linux系统中,Vectored I/O可以通过writev函数实现,代码示例如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/uio.h>
int main(int argc, char *argv[])
{
const char buf1[] = "Hello, ";
const char buf2[] = "Wikipedia ";
const char buf3[] = "Community!\n";
struct iovec bufs[] = {
{ .iov_base = (void *)buf1, .iov_len = strlen(buf1) },
{ .iov_base = (void *)buf2, .iov_len = strlen(buf2) },
{ .iov_base = (void *)buf3, .iov_len = strlen(buf3) },
};
if (writev(STDOUT_FILENO, bufs, sizeof(bufs) / sizeof(bufs[0])) == -1)
{
perror("writev()");
exit(EXIT_FAILURE);
}
return EXIT_SUCCESS;
}
嵌入式平台上的DMA实现
STM32的DMA控制器
STM32的DMA控制器支持内存到内存、外设到内存和内存到外设等多种传输模式。其配置参数包括数据流/通道、优先级、源和目标地址、传输模式、数据量大小等。下图展示了STM32的DMA矩阵结构:
FPGA中的DMA实现
在FPGA设计中,SGDMA通过增加专门的AXI4 Scatter Gather Master接口来实现。例如,Xilinx的AXI CDMA IP支持普通DMA和SGDMA两种模式。SGDMA引擎提供了内部描述符队列,支持预读取和并行处理,可以显著减轻CPU的负担。
总结
SGDMA通过链表机制实现了对非连续数据的高效传输,相比Block DMA具有更高的数据传输效率和更低的CPU占用率。在现代嵌入式系统和高性能计算领域,SGDMA已经成为主流的DMA实现方式。
热门推荐
AI聊天机器人:你的24小时情感小助手
广西南宁人文介绍
研究发现:中国人要长寿,这几种食物得吃够!
潜江市老年人如何安全骑电动车?
术后营养品选择指南:如何选对产品以促进快速康复?
趣味数学思维:从逆向到创新的解题艺术
赤峰小米:八千年文明滋养的全球农业文化遗产
世界小米大会见证敖汉小米崛起:从“八千年文明传承”到“百亿品牌价值”
“世界小米之乡”敖汉旗:产业振兴助推乡村振兴
南昌祖孙五人蘑菇中毒致1死:这些急救知识你必须知道
小心!墨汁鬼伞竟是剧毒蘑菇
秋季警惕!东北剧毒蘑菇辨识指南
福建122岁老人林蛇母去世!六代同堂一口气吃7个饺子,曝长寿原因
【健康科普】甘油三酯:你的健康密码,你知道吗?
【健康科普】甘油三酯:你的健康密码,你知道吗?
盘点湖人队史十大传奇球员:科比五冠领衔,奥尼尔、魔术师争辉
湖人冠军数——17座总冠军
盘点湖人史上最强小前锋,勒布朗-詹姆斯仅位列第四
美媒评NBA最具影响力6大球星:库里排第二,榜首无悬念
金州勇士队史十大里程碑事件与辉煌瞬间
孙逸仙博士纪念碑:见证中国近代医学发源地
中山大学孙逸仙纪念医院两项创新成果获广东省科学技术奖
如何确定浓缩咖啡用多少粉,调整浓缩咖啡的用粉量
这六个老年口腔问题,你了解几个?收藏本文找对应对方法!
南京冬日摄影打卡指南:中山陵、明孝陵、夫子庙
探秘南京:美龄宫与中山陵深度游
规律饮食带来什么好处
湖人冠军年份一览表
NBA各球队夺冠次数大盘点:凯尔特人18冠领跑,这些球队仍在为首冠而战
NBA哪些球队至今没有拿过总冠军?保罗去过三个