首页 > 其他分享 >DMA

DMA

时间:2023-10-29 09:00:10浏览次数:49  
标签:DMA 控制器 传输 内存 数据传输 中央处理器

基础概念

直接内存访问(Direct Memory Access, DMA)是计算机科学中的一种内存访问技术。它允许某些电脑内部的硬件子系统(电脑外设),可以独立地直接读写系统内存,而不需要中央处理器(CPU)介入处理。在同等程度的处理器负担下,DMA是一种快速的数据传送方式。很多硬件的系统会使用DMA,包含硬盘控制器、绘图显卡、网卡和声卡。

直接内存访问

DMA是所有现代电脑的重要特色,它允许不同速度的硬件设备来沟通,而不需要依于中央处理器的大量中断负载。否则,中央处理器需要从来源把每一片段的资料复制到寄存器,然后把它们再次写回到新的地方。在这个时间中,中央处理器对于其他的工作来说就无法使用。

DMA传输常使用在将一个内存区从一个设备复制到另外一个。当中央处理器初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区去。像是这样的操作并没有让处理器工作拖延,使其可以被重新调度去处理其他的工作。DMA传输对于高性能嵌入式系统算法和网络是很重要的。

举个例子,个人电脑的ISA DMA控制器拥有8个DMA通道,其中的7个通道是可以让计算机的中央处理器所利用。每一个DMA通道有一个16位地址寄存器和一个16位计数寄存器。要初始化资料传输时,设备驱动程序一起设置DMA通道的地址和计数寄存器,以及资料传输的方向,读取或写入。然后指示DMA硬件开始这个传输动作。当传输结束的时候,设备就会以中断的方式通知中央处理器。

这段话描述了个人电脑中的ISA(Industry Standard Architecture)DMA(Direct Memory Access)控制器的基本工作原理。ISA DMA控制器是早期计算机体系结构中用于协助设备与计算机内存之间进行数据传输的部分。这是一个较为底层的硬件控制器,用于提高数据传输的效率。

  1. ISA DMA控制器和通道:ISA DMA控制器是计算机中的一个硬件组件,用于管理数据传输。它有8个DMA通道,其中7个可以被计算机的中央处理器使用。这些通道允许外部设备(如硬盘驱动器或网络适配器)通过DMA来访问计算机内存,而不必通过CPU的直接干预来进行数据传输。

  2. 地址寄存器和计数寄存器:每个DMA通道都有两个重要的寄存器,一个用于存储内存地址(地址寄存器),另一个用于存储要传输的数据字节数(计数寄存器)。这些寄存器由设备驱动程序设置,以指定数据传输的源和目标地址,以及要传输的数据量。

  3. 数据传输方向:设备驱动程序还设置了数据传输的方向,即是从外部设备读取数据到内存(读取)还是从内存写入数据到外部设备(写入)。

  4. 开始传输动作:一旦设置好地址、计数和传输方向,设备驱动程序就指示DMA硬件开始执行数据传输动作。这意味着DMA控制器将控制数据传输,而不需要CPU的干预。这可以提高效率,因为CPU可以继续执行其他任务。

  5. 中断通知:当数据传输完成时,设备会以中断的方式通知计算机的中央处理器。这表示数据已成功传输并可以由CPU进一步处理。

    总之,ISA DMA控制器和通道允许外部设备通过硬件协助进行数据传输,而不需要CPU的持续干预。这有助于提高计算机系统的性能和效率,特别是在处理大量数据传输的情况下。

"分散-收集"(Scatter-gather)DMA允许在一次单一的DMA处理中传输资料到多个内存区域。相当于把多个简单的DMA要求串在一起。同样,这样做的目的是要减轻中央处理器的多次输出输入中断和资料复制任务。 DRQ意为DMA请求;DACK意为DMA确认。这些符号一般在有DMA功能的电脑系统硬件概要上可以看到。它们表示了介于中央处理器和DMA控制器之间的电子信号传输线路。

  1. "分散-收集"(Scatter-gather)DMA:这是一种DMA传输模式,允许在一次DMA传输操作中将数据分散存储到多个不连续的内存区域(分散),或从多个不连续的内存区域收集数据(收集)。这是有助于提高DMA传输效率和灵活性的传输模式。

  2. DRQ(DMA Request):DRQ表示DMA请求,是一个电子信号线,它通常由外部设备发出,以请求DMA控制器执行数据传输。当外部设备准备好进行DMA传输时,它会通过DRQ线向DMA控制器发出请求。

  3. DACK(DMA Acknowledge):DACK表示DMA确认,是另一个电子信号线,用于向外部设备发送确认信号,以指示DMA控制器已接受请求并可以执行DMA传输。

    这段话的主要目的是解释DMA传输中的一些术语和信号传输线路。DMA传输允许外部设备直接访问计算机内存,而无需CPU的干预。"分散-收集"DMA是一种高级的DMA传输模式,它允许一次传输操作处理多个不同的内存区域,这有助于减轻CPU的负担和提高数据传输效率。DRQ和DACK是用于协调DMA传输的信号线,它们在外部设备和DMA控制器之间传递请求和确认信号。这些概念通常在计算机系统的硬件规范和设计中出现。

缓存一致性问题

DMA会导致缓存一致性问题。想象中央处理器带有缓存与外部内存的情况,DMA的运作则是去访问外部内存,当中央处理器访问外部内存某个地址的时候,暂时先将新的值写入缓存中,但并未将外部内存的资料更新,若在缓存中的资料尚未更新到外部内存前发生了DMA,则DMA过程将会读取到未更新的资料。

相同的,如果外部设备写入新的值到外部内存内,则中央处理器若访问缓存时则会访问到尚未更新的资料。

这些问题可以用两种方法来解决:

  1. 缓存回调系统(cache-coherent system):以硬件方法来完成,当外部设备写入内存时以一个信号来通知缓存控制器某内存地址的值以及过期或是应该更新资料。
  2. 非同调系统(Non-coherent system):以软件方法来完成,操作系统必须确认缓存读取时,DMA程序以及开始或是禁止DMA发生。

第二种方法会造成DMA的系统负担。

DMA引擎

除了与硬件交互相关外,DMA也可为内存耗费减负。如Intel I/O加速技术(IOAT)。IOAT的后续者是Xeon E5处理器的Data Direct I/O(DDIO)技术。

内容来自维基百科

标签:DMA,控制器,传输,内存,数据传输,中央处理器
From: https://www.cnblogs.com/lixiaomeng/p/17795432.html

相关文章

  • OSG开发笔记(二十九):OSG加载模型文件、加载3DMax三维型文件Demo
    前言  Osg深入之后需要打开模型文件,这些模型文件是已有的模型文件,加载入osg之后可以在常见中展示模型文件,该节点可以操作,多个逼真的模型的节点就实现了基本的场景构建。<br>Demo  <br>说明  三维模型文件一般是由专业的三维建模人员完成,可以去buy通用模型,但是定制模型......
  • podman/docker重启后自动运行容器
    背景今天发现云主机oom重启之后podman的容器没有自动运行,大概看了一下,是因为Podman不试用Daemon守护进城,所以podman启动后不自动启动容器。这里试用systemd进行自启动管理。方案可以使用podmangeneratesystemd生成并管理生成systemd文件#podmangenerate......
  • 论文阅读:Unifying Large Language Model and Knowledge Graph:A RoadMap
    1Introduction大模型和知识图谱结合的综述。简单介绍一下大模型和知识图谱的优缺点:如上所示。本文主要划分为三个模块,分别为:KG-enhancedLLMsLLM-augmentedKGsSynergizedLLM+KG2Background主要介绍了LLM和KG2.1LargeLanguageModel(LLMs)主要依靠transforme......
  • RoCE协议 RDMA技术
    RoCE的好处低CPU占用率:访问远程交换机或服务器的内存,无需消耗远程服务器上的CPU周期,从而可以充分利用可用带宽和更高的可伸缩性。零复制:向远程缓冲区发送数据和接收数据。高效:由于RoCE改善了延迟和吞吐量,网络性能得到了很大提高。节省成本:借助RoCE,无需购买新设备或更换以太网......
  • mindmanager下载安装电脑版汉化版 详细安装流程
    MindManager软件特色1、项目管理功能强大Mindmanager可以提高项目组的效率以及成员之间的和谐创作。MindManager将图形思维与软件本身很好地结合,作为一个组织资源和管理项目的方法,可从脑图的核心分枝派生出各种关联的想法和信息,而该目的可通过软件本身达成;2、便携性portableMindma......
  • MindManager中文版下载 思维导图软件 详细安装流程
    MindManager电脑版是一款专业、免费、易用的思维导图绘制软件,软件能够帮助用户更加轻松的制作思维导图,并且内置完善的绘制工具以及制作流程,它可以为用户带来各种思维导图的模板,如圆圈图、气泡图、双气泡图、树形图、括号图、流程图、多重流程图和桥状图,满足你的图像的所有设计需求......
  • mindmanager电脑版-mindmanager官方版下载 详细安装流程
    MindjetMindManager是一款全球流行的思维导图软件。MindjetMindManager能够为用户提供丰富的可视化工具以及和思维导图相关的绘制工具。有了这款工具,您就可以随意在MindjetMindManager的空白模板上将自己所有的想法和学习的内容思路全部转化成更容易理解的图形图像。软件地址:看......
  • KdMapper扩展实现之AVG(aswArPot.sys)
    1.背景  KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。 2.驱动信息 驱动名称aswArPot.sys 时间戳5FC......
  • 使用PasteSpider把你的代码升级到服务器的Docker/Podman上,K8S太庞大,PasteSpider极易上
    如果你的服务器的内存小于16GB,那么K8S就和你无缘了,但是你可以使用PasteSpider来实现发布你的项目到服务器上!PasteSpider是一个运维工具,使用NET编写的,部署于服务器的Docker/Podman上,他可以帮助你把你的项目发布到服务器上,支持源码模式,支持发布模式,支持一键发布!下面基于实际案例做......
  • 2023年10月10日 KdMapper扩展实现之SOKNO S.R.L(speedfan.sys)
    1.背景  KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。 2.驱动信息 驱动名称speedfan.sys 时间戳50DF5......