什么是?

DMA 首先它是一种数据的传输方式;其次传输包括从设备到内存、内存到存储、内存到内存等;最后,它是在不经过cpu的情况下实现数据传输。、

DAM主要有共享缓存DMA,Scatter/Gather DMA,前者使用主内存的一块共享内存区域,后者则是用多个不同地址的内存块实现。

DMA 控制器,一种特殊的硬件,负责执行DMA操作,包括数据传输及裁决访问系统总线。DMA控制器连接着数据传输的两端,负责监控,跟踪传输的字节数,传输设置(I/O类型、内存类型、CPU执行状态和中断)

外部设备的数据传输触发DMA总线数据传输。例如键盘和鼠标输入。DMA控制器向cpu发送一个要求使用系统总线的DMA的请求信号,CPU在完成当前操作之后通过DMA确认信号让渡总线的控制权。如此,DMA控制器就可以像cpu(此时闲置)一样读写数据和控制信号。当数据传输完成,DMA控制器发送取消DMA传输的信号,cpu移除DMA确认信号并重新获取总线的控制权。

DMA集成在计算机总线架构上,用于加速计算机操作及支持多任务环境。通常来说,CPU会被读写操作完全占据,DMA使得读写数据只发生在内置存储,外部存储及外围设备不需要cpu参与,释放了cpu能力。DMA使得计算机内部操作流化,因为数据的内存读写计算机内部最常见的操作,因此释放与此相关的CPU处理,能够在很大程度上提升计算机的性能。

DMA主要应用在对实时操作完成要求比较高的实时计算任务应用上。流式处理是DM的另一重要应用,即数据的传输和处理同时进行。应用DMA的硬件主要包括:软盘,磁盘驱动控制器,显卡,网卡,声卡和GPU。

实现?

Synchronous DMA:一次在系统内存和外部设备之间传输一个字节或者一个单词。每次传输完成,DMA要求IO端口在准备好下一次事务的时候进行通知,在这种设定下,这DMA和cpu共享总线时钟,DMA在任何情况下都能获取系统总线的控制权。

Burst Mode DMA:假定传输的两端都能够即时的收发数据。cpu设置控制器,当I/O信号触发,全部的数据就会被拷贝到目的地。DMA在数据传输时对系统总线具有唯一的控制权。Burst Mode 模式下DMA数据传输相对于同步DMA要快很多。

Flyby DMA(不是所有的controller都支持): 使用源和目的地地址,构造一个同时读写的环。因为读环和写环被压缩到了同一个环,所以数据传输非常快。Flyby DMA也支持burst和同步类型的事务。

DMA-Direct Memory Access的更多相关文章

  1. (转)DMA(Direct Memory Access)

    DMA(Direct Memory Access) DMA(Direct Memory Access)即直接存储器存取,是一种快速传送数据的机制. 工作原理 DMA是指外部设备不通过CPU而直接与系统 ...

  2. DMA(Direct Memory Access)简介

    什么是DMA(Direct Memory Access) DMA绕过CPU,在内存和外设之间开辟了一条 "隧道" ,直接控制内存与外设之间的操作,并完全由硬件控制. 这样数据传送不 ...

  3. DMA(direct memory access)直接内存访问

    DMA(Direct Memory Access),这里的 memory,指的是计算机的内存,自然与外存(storage)相对.这里的关键词在 Direct (直接),与传统的相对低效的,需要通过 C ...

  4. [中英对照]Introduction to Remote Direct Memory Access (RDMA) | RDMA概述

    前言: 什么是RDMA? 简单来说,RDMA就是指不通过操作系统(OS)内核以及TCP/IP协议栈在网络上传输数据,因此延迟(latency)非常低,CPU消耗非常少. 下面给出一篇简单介绍RDMA的 ...

  5. 直接存储器存取(Direct Memory Access,DMA)详细讲解

    一.理论理解部分. 1.直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输. 2.无须CPU干预,数据可以通过DMA快速移动,这就节省了CPU的资源来做其他操作. ...

  6. DMA(Direct Memory Access直接存储器访问)总结

    转载于http://blog.csdn.net/peasant_lee/article/details/5594753 DMA一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,不需要CP ...

  7. Remote Direct Memory Access (RDMA)

    RDMA有三类实现方式,包括RoCE,iWARP和InfiniBand.RDMA的基础是Virtual Interface Architechure (VIA). 参考文档: https://en.w ...

  8. NONUNIFORM MEMORY ACCESS

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION In terms of commercia ...

  9. ARM: STM32F7: hardfault caused by unaligned memory access

    ARM: STM32F7: hardfault caused by unaligned memory access ARM: STM32F7: 由未对齐的内存访问引起的hardfault异常 Info ...

  10. Catch a Memory Access Violation in C++

    From:  https://stackoverflow.com/questions/16612444/catch-a-memory-access-violation-in-c In C++, is ...

随机推荐

  1. HBase性能优化 Java Api

    1. 使用“连接池” 如果每次和Hbase交互时都去新建连接的话,显然是低效率的,HBase也提供类连接池相关的API. 1.1. HTablePool 早期的API中使用它,但很不幸,现在它已经过时 ...

  2. Kubernetes 详解

    Kubernetes主要由以下几个核心组件组成: etcd保存了整个集群的状态: apiserver提供了资源操作的唯一入口,并提供认证.授权.访问控制.API注册和发现等机制: controller ...

  3. cmdb截图

  4. <摘录>字节对齐与结构体大小

    说明: 结 构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题.这些问题在平时编程的时候也确实不怎么用到,但在一 些笔试面试题目中出是常常出现,对sizeo ...

  5. [图解tensorflow源码] TF系统概述篇

    Rendezvous 1. 定义在core/framework/rendezvous.h 2. A Rendezvous is an abstraction for passing a Tensor  ...

  6. 串口调试助手vc源程序及其详细编写过程

    串口调试助手vc源程序及其详细编写过程   目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件 ...

  7. 工程脚本插件方案 - c集成Python基础篇

    序: 为什么要集成脚本,怎么在工程中集成Python脚本. 在做比较大型的工程时,一般都会分核心层和业务层.核心层要求实现高效和稳定的基础功能,并提供调用接口供业务层调用的一种标准的框架划分.在实际中 ...

  8. 实验吧web天网管理系统

    直接查看源码 <!--$test=$_GET['username']>这一行 源码的下面给了我们一些提示:我们输入的username经过md5加密后会赋值给test.当test为0时就会跳 ...

  9. 《The C Programming Language》读书笔记(一)

    1. 对这本书的印象 2011年进入大学本科,C语言入门书籍如果我没记错的话应该是谭浩强的<C程序设计>,而用现在的眼光来看,这本书只能算是一本可用的教材,并不能说是一本好书.在自学操作系 ...

  10. 小程序犯错(一):“ReferenceError: 模拟服务器传来的数据 is not defined”

    学习数据绑定,在onLoad中模拟服务器传数据时,报错:模拟服务器传来的数据 is not defined 我这里粗心的忘记注释说明了,如下: 把该行无关的错误数据注释或删除即可.这里提醒同学们,出现 ...