DMA copy和CPU copy
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相关推荐
- dma工作时cpu工不工作_CPU如何工作?
dma工作时cpu工不工作 CPU, also known as the microprocessor is the heart and/or brain of a computer. Lets De ...
- 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 ...
- 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其它模块是有集成的.本 ...
- XenServer中Fast Copy与Full Copy的区别
详细跟踪了一下LVM-Based VDI与File-Based VDI的复制与链接过程,我们可以发现,Fast Copy与Full Copy有很大的区别,不同的形式对虚机VBD的性能具有一定的影响. ...
- 【ObjectC—浅copy和深copy】
一.OC设计copy的目的 为了能够从源对象copy一个新的对象副本,改变新对象(副本)的时候,不会影响到原来的对象. 二.实现copy协议 OC提供了两种copy方法:copy和mutableCop ...
- 【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别
Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定关系.对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象.copy 模块提供了通用的浅层复 ...
- python 深copy_python中的深copy和浅copy
bytes Python bytes/str bytes 在Python3中作为一种单独的数据类型,不能拼接,不能拼接,不能拼接 >>> '€20'.encode('utf-8') ...
- .NET深入学习笔记(4):深拷贝与浅拷贝(Deep Copy and Shallow Copy)
今天继续利用准备WSE安全开发文章的空闲时间,完善<.NET深入学习笔记>系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么.为什么.和怎么实现).想必很多人也接触过这两个概念 ...
- stl中copy()函数_std :: copy()函数以及C ++ STL中的示例
stl中copy()函数 C ++ STL std :: copy()函数 (C++ STL std::copy() function) copy() function is a library fu ...
- NumPy学习(索引和切片,合并,分割,copy与deep copy)
NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片合并分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示 ...
最新文章
- IDEA----破解
- string类assign方法
- openwrt转载--openwrt框架分析
- 互联网分布式架构技术概述
- php 判断字符串中是否包含另一个字符串 strpos
- python __setattr__
- 2018软件工程第九次作业(团队四)
- maven跳过单元测试
- android recyclerview item自适应高度_web前端学习:高度自适应知识点
- msdev.exe 应用程序错误 的解决办法
- 军用软件开发周期和文档
- 毕业论文格式|自制word模板 |.domt | word格式模版
- 对InputStream,OutputStream,Reader,Writer的详解
- 计算机主机接电视机,电脑主机连接电视方法介绍 电脑主机连接电视注意事项...
- 网吧web电影服务器系统,网吧WEB、游戏、影视服务器应用需求分析
- Cloudera-server迁移
- acrobat PDF删除部分_PDF原来可以这么玩
- java 运算符的讲解
- javapdf转换成html,java pdf转换为html代码
- 分页插件PageHelper失效