DMA数据传输过程

DMA方式具有如下特点:
  1、 外部设备的输入输出请求直接发给主储存器。
   主存储器既可以被CPU访问,也可以被外围设备访问。因此,在主存储器中通常要有一个存储管理部件来为各种访问主存储器的申请排队,一般计算机系统把外围设备的访问申请安排在最高优先级。
  2、 不需要做保存现场和恢复现场等工作,从而使DMA方式的工作速度大大加快。
  
由于在外围设备与主存储器之间传送数据不需要执行程序,因此,也不动用CPU中的数据寄存器和指令计数器等。
  3、在DMA控制器中,除了需要设置数据缓冲寄存器、设备状态寄存器或控制寄存器之外,还要设置主存储器地址寄存器,设备地址寄存器和数据交换个数计数器。
  
外围设备与主存储器之间的整个数据交换过程全部要在硬件控制下完成。另外,由于外围设备一般是以字节为单位传送的,而主存储器是以字为单位访问的,因此,在DMA控制器中还要有从字节装配成字和从字拆卸成字节的硬件。
  4、在DMA方式开始之前要对DMA控制器进行初始化,包括向DMA控制器传送主存缓冲区首地址、设备地址、交换的数据块的长度等,并启动设备开始工作。在DMA方式结束之后,要向CPU申请中断,在中断服务程序中对主存储器中数据缓冲区进行后处理。如果需要继续传送数据的话,要再次对DMA控制器进行初始化。
  5、在DMA方式中,CPU不仅能够与外围设备并行工作,而且整个数据的传送过程不需要CPU的干预。如果主存储器的频带宽度足够的话,外围设备的工作可以丝毫不影响CPU运行它自身的程序。
  DMA方式的工作流程如下:
  对于输入设备:
  从输入介质上读一个字节或字到DMA控制器中的数据缓冲寄存器BD中,如果输入设备是面向字符的,则要把读入的字符装配成字。
  若一个字还没有装配满,则返回到上面;若校验出错,则发中断申请;若一个字已经装配满,则将BD中的数据送入主存数据寄存器。
  把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,并且将BA中的地址增值至下一个字地址。
  把DMA控制器内的数据交换个数计数器BC中的内容减"1"。
  若BC中的内容为"0",则整个DMA数据传送过程全部结束,否则返回到最上面继续进行。
  对于输出设备:
  把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,并启动主存储器,同时将BA中的地址增值至下一个字地址。
  将主存储器数据寄存器中的数据送入DMA控制器的数据缓冲寄存器BD中。如果输出设备是面向字符的,则要把BD中的数据拆卸字符。
  把BD中数据逐个字符(对于面向字符的设备)或整个字写到输出介质上。
  把DMA控制器内的数据交换个数计数器BC中的内容减"1"。
  若BC中的内容为"0",则整个DMA数据传送过程全部结束,否则返回到最上面继续进行。
  目前使用的DMA方式实际上有如下三种:

  1、周期窃取方式
  在每一条指令执行结束时,CPU测试有没有DMA服务申请,如果有,则CPU进入一个DMA周期。在DMA周期中借用CPU完成上面所列出的DMA工作流程。包括数据和主存地址的传送,交换个数计数器中的内容减"1",主存地址的增值及一些测试判断等。
  
采用周期窃取方式时,主存储器可以不与外围设备直接相连接,而只与CPU连接,即仍然可以采用如图4.4那样的连接方式,因为外围设备与主存储器的数据交换与程序控制输入输出方式和中断输入输出方式一样都是要经过CPU的。
  周期窃取方式与程序控制输入输出方式和中断输入输出方式的不同处主要在:它不需要使用程序来完成数据的输入或输出,只是借用了一个CPU的周期来完成DMA流程。因此,其工作速度是很快的。
  周期窃取方式的优点是硬件结构很简单,比较容易实现。缺点是在数据输入或输出过程种实际上占用了CPU的时间。

  2、直接存取方式
  这是一种真正的DMA方式。DMA控制器的数据传送申请不是发向CPU,而是直接发往主存储器。在得到主存储器的响应之后,整个DMA工作流程全部在DMA控制器中用硬件完成。
  直接存取方式的优点与缺点正好与周期窃取方式相反。
  目前的多数计算机系统均采用直接存取方式工作。

  3、数据块传送方式
  在设备控制器中设置一个比较大的数据缓冲存储器,一般要能够存放下一个数据块,如在软磁盘存储器中通常设置512个字节的数据缓冲存储器。与设备介质之间的数据交换在数据缓冲存储器中进行。设备控制器与主存储器之间的数据交换以数据块为单位,并采用程序中断方式进行。
  数据块传送方式实际上并不是DMA方式,只是它在每次中断输入输出过程中是以数据块为单位获得或发送数据的,这一点与上面两种DMA方式相同,因此,通常也把这种输入输出方式归入DMA方式。
  
采用数据块传送方式的外围设备还有行式打印机,激光打印机,卡片阅读机,部分绘图仪等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android JNI开发系列(二)HelloWorld

2019独角兽企业重金招聘Python工程师标准>>> 入门HelloWorld 新建项目 Configure your new project部分选中 Include C Support 复选框 Next 正常填写所有其他字段并完成向导接下来几个部分 在向导的Customize C Support 部分,您可以使用谢列选项自定…

sublime text3安装js提示的插件

今天安装Sublime Text3的js插件,在网上查了很多资料,为了方便以后看,写一个安装插件的总结和方法。 要安装js相关的插件,就要先安装一个Package Control(插件管理器)的插件,通过这个插件再去安装…

SPI接口详细介绍

1. 概述 SPI Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线。常规只占用四根线,节约了芯片管脚,PCB的布局省空间。现在越来越多的芯片集成了这种通信协议&#xff0…

驻扎博客园

今天把之前hexo里的一些文章全部转移到博客园了,之后就在博客园写点东西,记录一些生活的琐事。为什么要移至博客园呢?其实很简单,这边可以和一些同意从事前端的小伙伴一起互动。技术还是需要多讨论的,希望之后能多更新…

H.264 Profile、Level、Encoder三张简图

H.264有四种画质级别,分别是BP、EP、MP、HP: 1、BP-Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;   2、EP-Extended profile:进阶画质。支持I/P/B/SP/SI 帧&…

require.js学习记录

1、简介 官方对requirejs的描述:RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will impro…

iOS-AFNetworking参数和多文件同时上传【多文件上传】

1. 前言 在项目开发中,我们经常需要上传文件,例如:上传图片,上传各种文件,而有时也需要将参数和多个文件一起上传,不知道大家的项目中遇到了没有,我在最近的项目中,就需要这样的一个…

智能音箱 之 平台方案简介

智能音箱,被认为是物联网时代的入口,在去年成为了各大厂商争相投入的风口。在当今互联网时代,它不仅仅是一台单纯的音乐播放器,在其背后支撑的 AI 技术才是整个产品的核心,也是各大公司觊觎物联网入口的最根本原因。经…

Linux Kconfig及Makefile学习

内核源码树的目录下都有两个文档 Kconfig (2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了 所属目录源文档相关的内核配置菜单。在内核配置make menuconfig时,从K…

Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)...

一.概述 在上一篇里讲到了shell脚本,shell按照命令在脚本中出现的顺序依次进行处理,对于顺序操作已经足够了,但许多程序要求对shell脚本中的命令加入一些逻辑流程控制,这样的命令通常叫做 结构化命令。 1.1 使用if - then语句 --最…

Scala-Spark digamma stackoverflow问题

这两天在用spark做点击率的贝叶斯平滑,参考雅虎的论文进行了一番尝试。 先上代码: 1 # click_count, show_count # this method takes time2 def do_smooth(data_list):3 import scipy.special as sp4 a, b, i 1.0, 1.0, 05 da, db a, b6 …

IIS接口详细介绍

1. 概述 I2S Inter-IC Sound Integrated Interchip Sound IIS,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC…

UVA - 10934 Dropping water balloons(装满水的气球)(dp)

题意:有k个气球,n层楼,求出至少需要多少次实验能确定气球的硬度。气球不会被实验所“磨损”。 分析: 1、dp[i][j]表示第i个气球,测试j次所能确定的最高楼层。 2、假设第i-1个气球测试j-1次所确定的最高楼层是a, 若第i个…

继承进阶

先讲一个例子&#xff1a; #老师有生日&#xff0c;怎么组合哪&#xff1f; class Birthday: # 生日def __init__(self,year,month,day):self.year yearself.month monthself.day dayclass Teacher: # 老师<br>def __init__(self,name,birth):self.name nameself.b…

PCM接口详细介绍--TDM方式

1. 概述 PCM = Pulse Code Modulation 是通过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法。图为4 bit 采样深度的PCM数据量化示意图: PCM数字音频接口,说明接口传输的音频数据是通过PCM方式采样得到的,区别于PDM形式;IIS传输的也是PCM类型数据,属于其一个特…

网站同源策略

所谓"同源"指的是"三个相同"&#xff1a;协议&#xff0c;域名&#xff0c;端口。 举例来说&#xff0c;http://www.example.com/dir/page.html这个网址&#xff0c;协议是http://&#xff0c;域名是www.example.com&#xff0c;端口是80&#xff08;默认端…

Kconfig文件结构(图文)简介

1 Kconfig和Makefile 毫不夸张地说&#xff0c;Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件。基本上&#xff0c;Linux 内核中每一个目录下边都会有一个Kconfig文件和一个Makefile文件。Kconfig和Makefile就好似一个城市的地图&#xff0c;地图引导我们去 认识一…

PDM接口介绍

1. 概述 PDM Pulse Density Modulation是一种用数字信号表示模拟信号的调制方法。 PDM则使用远高于PCM采样率的时钟采样调制模拟分量&#xff0c;只有1位输出&#xff0c;要么为0&#xff0c;要么为1。因此通过PDM方式表示的数字音频也被称为Oversampled 1-bit Audio。相比P…

js正则学习分享

http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.htmlhttp://www.cnblogs.com/tylerdonet/p/4262251.html //正整数 /^[0-9]*[1-9][0-9]*$/; //负整数 /^-[0-9]*[1-9][0-9]*$/; //正浮点数 /^(([0-9]\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9])|([0-9]*[1…

Linux系统下UDP发送和接收广播消息小例子

分类&#xff1a; 网络通信 2013-01-07 10:54 1336人阅读 评论(6) 收藏 举报 [cpp] view plaincopyprint?// 发送端 #include <iostream> #include <stdio.h> #include <sys/socket.h> #include <unistd.h> #include <sys/types.h>…