DMA(Direct Memory Access)
直接内存访问,是一种无需CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。DMA方式的数据传输由DMA控制器(DMAC)控制,在传输期间,CPU可以并发的执行其他任务。当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,由CPU执行相应的中断服务程序进行后续处理。
 

与CPU copy的区别
当程序或者操作者对CPU发出指令,这些指令和数据暂存在内存里,在CPU空闲时传送给CPU,CPU处理后把结果输出到输出设备上,输出设备就是显示器,打印机等。在没有显示完之前,这些数据也保存在内存里,如果内存不足,那么系统自动从硬盘上划分一部分空间作为虚拟内存来用。但写入和读取的速度 跟物理内存差的很远很远,所以,在内存不足的时候,会感到机器反应很慢,硬盘一直在响。CPU对数据进行判断以及逻辑处理,本身不能存储数据,这时cpu从内存取数据进行逻辑计算,如果内存没有数据,才会从硬盘读取数据。要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。
但是采用中断传送有它的缺点,对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。
  通常系统的总线是由CPU管理的。在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态–高阻状态,而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。DMA控制器必须有以下功能:
  1. 能向CPU发出系统保持(HOLD)信号,提出总线接管请求;
  2. 当CPU发出允许接管信号后,负责对总线的控制,进入DMA方式;
  3. 能对存储器寻址及能修改地址指针,实现对内存的读写操作;
  4. 能决定本次DMA传送的字节数,判断DMA传送是否结束 ;
  5. 发出DMA结束信号,使CPU恢复正常工作状态。

DMA copy和CPU copy相关推荐

  1. dma工作时cpu工不工作_CPU如何工作?

    dma工作时cpu工不工作 CPU, also known as the microprocessor is the heart and/or brain of a computer. Lets De ...

  2. SAP WMSD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery and PGI

    SAP WM&SD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery and PGI 本文继续DEMO SAP WM ...

  3. SAP WMSD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery

    SAP WM&SD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery SAP WM模块与SAP其它模块是有集成的.本 ...

  4. XenServer中Fast Copy与Full Copy的区别

    详细跟踪了一下LVM-Based VDI与File-Based VDI的复制与链接过程,我们可以发现,Fast Copy与Full Copy有很大的区别,不同的形式对虚机VBD的性能具有一定的影响. ...

  5. 【ObjectC—浅copy和深copy】

    一.OC设计copy的目的 为了能够从源对象copy一个新的对象副本,改变新对象(副本)的时候,不会影响到原来的对象. 二.实现copy协议 OC提供了两种copy方法:copy和mutableCop ...

  6. 【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别

    Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定关系.对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象.copy 模块提供了通用的浅层复 ...

  7. python 深copy_python中的深copy和浅copy

    bytes Python bytes/str bytes 在Python3中作为一种单独的数据类型,不能拼接,不能拼接,不能拼接 >>> '€20'.encode('utf-8') ...

  8. .NET深入学习笔记(4):深拷贝与浅拷贝(Deep Copy and Shallow Copy)

    今天继续利用准备WSE安全开发文章的空闲时间,完善<.NET深入学习笔记>系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么.为什么.和怎么实现).想必很多人也接触过这两个概念 ...

  9. stl中copy()函数_std :: copy()函数以及C ++ STL中的示例

    stl中copy()函数 C ++ STL std :: copy()函数 (C++ STL std::copy() function) copy() function is a library fu ...

  10. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片合并分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示 ...

最新文章

  1. IDEA----破解
  2. string类assign方法
  3. openwrt转载--openwrt框架分析
  4. 互联网分布式架构技术概述
  5. php 判断字符串中是否包含另一个字符串 strpos
  6. python __setattr__
  7. 2018软件工程第九次作业(团队四)
  8. maven跳过单元测试
  9. android recyclerview item自适应高度_web前端学习:高度自适应知识点
  10. msdev.exe 应用程序错误 的解决办法
  11. 军用软件开发周期和文档
  12. 毕业论文格式|自制word模板 |.domt | word格式模版
  13. 对InputStream,OutputStream,Reader,Writer的详解
  14. 计算机主机接电视机,电脑主机连接电视方法介绍 电脑主机连接电视注意事项...
  15. 网吧web电影服务器系统,网吧WEB、游戏、影视服务器应用需求分析
  16. Cloudera-server迁移
  17. acrobat PDF删除部分_PDF原来可以这么玩
  18. java 运算符的讲解
  19. javapdf转换成html,java pdf转换为html代码
  20. 分页插件PageHelper失效

热门文章

  1. 防止网页被嵌入iframe广告代码
  2. 信息检索方法和步骤——怎样展开信息检索?
  3. 「Activiti精品 悟纤出品」Activiti7 Getting Started-摸石头过河 - 第323篇
  4. 产品快速迭代的五大要点
  5. 小爱同学脱离局域网远程控制开关?
  6. usb key 开发(一)
  7. CAD图形导入Altium Designer PCB主要事项
  8. 企业双运营商出口负载均衡同时冗余备份
  9. trajan算法求lca 超级详细配图讲解
  10. Android音频开发(二):录制音频(WAV及MP3格式)