什么是?

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. Mina使用总结(四)传输对象ObjectSerializationCodecFactory

    用mina框架传输对象,对于开发者来说,直接传输对象,而不用自己编写相应的报文转换代码,将大大节省 开发时间. 即使用对象编码解码器 使用ObjectSerializationCodecFactory ...

  2. Angular总结二:Angular 启动过程

    要弄清楚 Angular 的启动过程,就要弄明白 Angular 启动时加载了哪个页面,加载了哪些脚本,这些脚本做了哪些事? 通过 Angular 的编译依赖文件 .angular-cli.json ...

  3. BZOJ 2330 糖果 差分约束求最小值

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2330 题目大意: 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果 ...

  4. python第十九课——random模块中的常用函数

    1.random():返回一个[0,1)的随机浮点数(双精度浮点数) 2.uniform(a,b): 返回[a,b]之间的一个随机浮点数(双精度浮点数) [注意]a和b接受的数据大小随意 例如:3.r ...

  5. SDWC补题计划

    2018的寒假去了SD的冬令营,因为一班二班难度悬殊,对我很不友好,几乎什么也没学会,但是我把两个班的课件都存了下来,现在慢慢把两个班的例题以及课后题都补一补(毕竟冬令营的钱不能白花). 这些题目横跨 ...

  6. P2245 星际导航

    题目描述 sideman 做好了回到 Gliese星球的硬件准备,但是 sideman 的导航系统还没有完全设计好.为了方便起见,我们可以认为宇宙是一张有 N 个顶点和 M 条边的带权无向图,顶点表示 ...

  7. Installing Oracle Database 12c Release 2(12.2) RAC on RHEL7.3 in Silent Mode

    概要 在RHEL7静默方式安装oracle database 12.2 RAC. 一.环境配置 1. 配置hosts文件 cp /etc/hosts /etc/hosts_$(date +%Y%d%m ...

  8. ElasticSearch 简单的 搜索 聚合 分析

    一. 搜索1.DSL搜索 全部数据没有任何条件 GET /shop/goods/_search { "query": { "match_all": {} } } ...

  9. 关于Python常用框架学习

    我对Python不是特别熟悉,我仅仅只知道它在Web自动化领域挺牛逼的,还有爬虫.当然了,现在的人工智能和机器学习用到它也很多. 记得六月还是七月份的时候,那个时候,突然心血来潮就开始学起了Pytho ...

  10. jenkins+pytest+ allure运行多个py文件测试用例

    jenkins的pytest运行多个py文件,导出allure报告方法,只需改下job的配置中的构建即可(pytest会运行指定文件下的所有test开头的py文件),如下:              ...