当前位置: 首页 > news >正文

计算机科学导论(4)DMA传输原理

文章目录

      • DMA的工作原理
      • DMA的优势
      • DMA的类型
      • DMA的应用

DMA(Direct Memory Access)直接内存访问是一种允许某些硬件子系统在不通过中央处理单元(CPU)的情况下,直接从内存读取或向内存写入数据的技术。这种方式可以显著提高数据传输的效率,减轻CPU的负担,使CPU能够同时处理其他计算任务。

在没有 DMA 技术前,全程数据拷贝都需要CPU来做,严重消耗CPU。
在这里插入图片描述
在引入了DMA后:
在这里插入图片描述

DMA的工作原理

在这里插入图片描述

  • 当外部设备有DMA使用需求时,会向DMAC(DMA控制器)发出DMA请求信号(DREQ)
  • DMAC控制器接收到外部设备的请求信号后,会向CPU发出一个总线请求信号(HOLD)
  • CPU在接收到DMAC控制器发送过来的总线请求信号后,如果允许DMA传输,则会在总线空闲后,发出DMA响应信号(HLDA)。然后CPU会将控制总线、数据总线和地址总线置高阻态,即放弃对总线的控制权;另一方面,CPU会将有效的DMA响应信号发送给DMAC控制器,通知DMAC控制器CPU已经放弃了对总线的控制权
  • DMAC控制器收到总线发来的DMA响应信号(HLDA)后,会获得总线的控制权,并向外部设备发送应答信号DACK,通知外设可以进行DMA传输了
  • DMAC还会向存储器发送地址信号,向存储器和外设发出读/写控制信号,控制数据按设定的方向传输,实现外设与内存的数据传输
  • 数据全部传输结束后,DMAC向CPU发送HOLD信号,要求撤销DMAC控制器对总线的控制权,CPU收到该信号后,会使HLDA(DMA请求)信号无效,收回总线控制权。

概括而言有两组信号:

  • DRQ:外设向DMA控制器(DMAC,DMA Controller)提出的要进行DMA操作的申请信号。
  • DACK:DMA控制器向发出DRQ信号的外设的回应,表示收到请求和正在进行处理。
  • HRQ:DMA控制器向CPU发出的要求接管总线的请求信号。
  • HLDA:CPU向DMA控制器发出的允许接管总线的应答信号。

DMA的优势

  • 高效性:通过减少CPU参与数据传输的次数,DMA可以显著提高数据传输速度,尤其是在处理大量数据时。
  • 减轻CPU负担:DMA允许CPU在数据传输期间执行其他任务,从而提高了整个系统的效率和响应速度。

DMA的类型

  • 单块传输模式:在这种模式下,每次传输一块数据。每次传输完成后,DMA控制器都会发送中断信号给CPU。
  • 突发传输模式:允许DMA控制器一次性传输一整组数据块,直到数据传输完成,只在最后发送一个中断信号给CPU。这种模式进一步提高了数据传输效率。

DMA的应用

DMA广泛应用于需要高速数据传输的场景,如硬盘驱动器、固态驱动器、网络卡、声卡等外围设备与内存之间的数据传输。

总之,DMA是一种有效提高数据传输效率、减轻CPU负担的关键技术,对于现代计算机系统的高性能运行至关重要。

http://www.lryc.cn/news/295240.html

相关文章:

  • select、poll和epoll的区别
  • gpt今日最新新闻:gpts的广泛应用
  • 【进入游戏行业选游戏特效还是技术美术?】
  • (delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.3节(常量参数)
  • 事件在状态流程图中的工作方式
  • 幻兽帕鲁能在Mac上运行吗?幻兽帕鲁Palworld新手攻略
  • elementPlus实现动态表格单元格合并span-method方法总结
  • 视频上传 - 断点续传那点事
  • Scala 和 Java在继承机制方面的区别
  • spark sql上线前的调试工作实现
  • java -jar启动SpringBoot项目时配置文件加载位置与优先级
  • 每日一题 力扣LCP30.魔塔游戏
  • iPhone搞机记录
  • Linux中共享内存(mmap函数的使用)
  • Golang与Erlang有什么差异
  • cesium系列篇:Entity vs Primitive 源码解析(从Entity到Primitive)02
  • golang windows 环境搭建 环境配置
  • 【Git】06 常用场景
  • docker下nacos(1.2.0)的持久化
  • Win32 SDK Gui编程系列之--弹出式菜单
  • VisaulStudio2022下用VB.net实现socket与西门子PLC进行通讯案例(优化版)
  • npm安装命令
  • 【Git版本控制 01】基本操作
  • Spring 开发 pom.xml 配置文件(通用配置)
  • LabVIEW高精度主动模拟肺系统的开发与应用
  • 打包 iOS 的 IPA 文件
  • [Vulnhub靶机] DriftingBlues: 2
  • 鸿蒙 WiFi 扫描流程(1)
  • 基于YOLOv8的暗光低光环境下(ExDark数据集)检测,加入多种优化方式---DCNv4结合SPPF ,助力自动驾驶(一)
  • (十三)springboot实战——springboot前后端分离方式项目集成spring securtity安全框架