STM32学习笔记(4)之DMA(原理篇)

本文介绍了DMA技术的诞生背景,特别是IBM和Intel在发展中的作用,详细阐述了DMA的工作过程,包括配置、请求、控制权转移、数据传输和中断处理。DMA控制器(DMAC)作为关键组件,通过直接内存访问提高数据传输速度和CPU效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.youkuaiyun.com/weixin_51244852
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处


DMA的诞生背景

DMA(Direct Memory Access,直接内存访问)的概念和技术是在计算机发展的早期阶段产生的。它的发明可以追溯到上世纪70年代。
在早期的计算机系统中,数据的传输通常是通过CPU介入进行的。当外部设备(如硬盘、网络接口等)需要将数据传输到内存或从内存读取数据时,CPU需要花费大量的时间和资源来处理这些操作。这导致了系统性能的瓶颈,尤其是对于需要高速数据传输的应用。
为了解决这个问题,研究人员开始尝试设计一种机制,使外部设备能够直接和内存进行数据传输,而不需要CPU的干预。这就是DMA技术的核心思想。
🙉 IBM是最早引入DMA的计算机制造商之一。1970年,IBM发布了IBM System/370系列计算机,其中一些机型引入了DMA技术,实现了高速数据传输。随着时间的推移,DMA技术逐渐在其他计算机系统中得到广泛采用。
🙉DMA的发明和发展使得数据传输可以在CPU的控制下进行,从而显著提高了系统的性能和效率。它为高速数据传输提供了重要的基础,使得计算机能够更好地处理需要大量数据处理的任务。在今天的计算机系统中,DMA技术仍然扮演着重要的角色。

在这里插入图片描述
在这里插入图片描述

DMA最早是哪家公司发明的?

DMA(Direct Memory Access,直接内存访问)的概念和技术最早由英特尔(Intel)公司在上世纪70年代初发明和推广。
在1970年代初,英特尔开发了一系列微处理器,其中包括8080和8086等型号。随着计算机系统的发展,数据传输的效率成为一个重要问题。为了解决这个问题,英特尔的工程师们引入了DMA技术,以实现外设设备和内存之间的直接数据传输,减轻了CPU的负担。
1975年,英特尔推出了一款名为8257的芯片,即DMA Controller(DMA控制器),用于实现DMA功能。这是英特尔在商业市场上首次推出的DMA解决方案。随后,英特尔继续在后续的处理器和芯片组中加入了对DMA技术的支持,使其成为计算机系统中的标准功能。
英特尔的DMA技术对于计算机系统的发展具有重要意义,它提高了数据传输效率,降低了CPU的负担,使系统能够更好地处理需要高速数据传输的任务。到今天,DMA技术仍然是现代计算机体系结构的重要组成部分,并被广泛应用于各种计算设备和领域。

DMA工作过程

DMA(Direct Memory Access,直接内存访问)是一种数据传输技术,其工作过程如下:
1. 配置DMA:首先,CPU通过访问DMA控制器的配置寄存器来设置DMA传输的相关参数,包括传输方向(读取或写入)、数据长度、源设备地址和目标内存地址等。
2. 外设设备请求:当外设设备需要进行数据传输时,它发送一个DMA请求信号给DMA控制器。DMA请求信号可以是硬件触发的,例如外设完成一次数据读取或写入操作后触发;也可以通过软件控制,通过编程触发DMA请求信号。
3. DMA控制权转移:DMA控制器接收到DMA请求信号后,它会获取对总线的控制权,暂时剥夺CPU对总线的访问权限。DMA控制器会代表外设设备和内存进行数据传输,并控制总线的访问。
4. 内存地址传输:DMA控制器通过源设备地址寄存器和目标内存地址寄存器来确定数据传输的起始位置和目标位置。它会使用内存地址来读取或写入数据。
5. 数据传输:DMA控制器根据配置的参数进行数据传输。它可以按字节、字、块等单位进行数据传输。数据可以从外设设备读取到内存,或者从内存写入到外设设备。DMA控制器可以通过主存储器和外设设备之间的直接内存访问来传输数据,而无需CPU的干预。
6. DMA传输完成中断:当DMA传输完成后,DMA控制器可以生成一个中断信号,通知CPU传输已经完成。CPU可以通过处理该中断信号来进行后续操作,例如处理数据或更新状态。
通过使用DMA技术,外设设备能够直接与内存进行数据交换,大大减轻了CPU的负担,并提高了数据传输的速度和效率。DMA在各种应用中被广泛使用,特别适用于高速数据传输、大量数据处理和实时数据流等场景。

在这里插入图片描述

DMA控制器(DMAC)

要实现DMA控制的方式需要DMA控制器,注意区分,前者是控制方式吗,后者是硬件,也就是说DMA控制方式需要专门的控制器。
在这里插入图片描述

传送前:

(1)接受外设发出的DMA请求,并向CPU发出总线请求。
(2)线控制权,进入DMA操作周期。

传送时:

(3)确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
(4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。 数据、地址都是通过总线进行传输的。
(5)向CPU报告DMA操作的结束。

DMAC的组成

在这里插入图片描述

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望闻问嵌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值