直接存储器访问DMA
2016-04-19 12:43
176 查看
原理:允许不同硬件装置沟通,而不需要依赖CPU的大量中断负载
对于CPU来说:需要从来源吧每一片断的资料复制到暂存器,然后把他们写到新的地方,期间,CPU对于其它的工作就无法使用.
对于DMA传输:将数据从一个地址空间复制到另一个地址空间。而CPU只需初始化这个传输动作.
在实现DMA传输时,是由DMA控制器直接掌管总线,所以存在一个总线控制权转移的问题,DMA传输结束后,DMA控制器立即把总线控制权还给CPU.
传输步骤
DMA请求
CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求
DMA响应
DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。
DMA传输
DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。
DMA结束
当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结 果及状态继续执行原来的程序。
对于CPU来说:需要从来源吧每一片断的资料复制到暂存器,然后把他们写到新的地方,期间,CPU对于其它的工作就无法使用.
对于DMA传输:将数据从一个地址空间复制到另一个地址空间。而CPU只需初始化这个传输动作.
在实现DMA传输时,是由DMA控制器直接掌管总线,所以存在一个总线控制权转移的问题,DMA传输结束后,DMA控制器立即把总线控制权还给CPU.
传输步骤
DMA请求
CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求
DMA响应
DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。
DMA传输
DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。
DMA结束
当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结 果及状态继续执行原来的程序。
相关文章推荐
- gulp使用技巧-删除node_modules文件夹,解决目录层次太深删除报错的问题
- JS Date parse
- Maven搭建SSM(SpringMVC + Spring + Mybaits)开发环境 (上)
- poj 3257(哈希+二维dp)
- 一个优秀程序员具备的15个特性
- Raspberry安装telnet并使用
- Oracle编程入门经典 第10章 PLSQL
- PTA 一元多项式的乘法与加法运算
- OPENFILENAME
- Oracle编程入门经典 第9章 掌握SQL*Plus
- Javascript 面向对象编程:(1)封装;(2)构造函数的继承;(3)非构造函数的继承
- js和jquery中ajax使用
- CocoaPods版本升级
- 解决Retrofit文件下载进度显示问题
- mysql常用sql笔记(不断追加中)
- JavaScript prototype
- Percona_Toolkit 安装
- SHGetFileInfo
- 连接池性能对比
- Spring IOC核心源码学习