当前位置: 首页 > news >正文

驱动开发中的DMA是什么

        DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。 使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来, 从而大大提高系统的吞吐率。 DMA通常与硬件体系结构, 特别是外设的总线技术密切相关。

        DMA方式的数据传输由DMA控制器(DMAC) 控制, 在传输期间, CPU可以并发地执行其他任务。当DMA结束后, DMAC通过中断通知CPU数据传输已经结束, 然后由CPU执行相应的中断服务程序进行后处理。

DMA与Cache一致性

        Cache和DMA本身似乎是两个毫不相关的事物。 Cache被用作CPU针对内存的缓存, 利用程序的空间局部性和时间局部性原理, 达到较高的命中率, 从而避免CPU每次都必须要与相对慢速的内存交互数据来提高数据的访问速率。 DMA可以作为内存与外设之间传输数据的方式, 在这种传输方式之下, 数据并不需要经过CPU中转。

        假设DMA针对内存的目的地址与Cache缓存的对象没有重叠区域 , DMA和Cache之间将相安无事。 但是, 如果DMA的目的地址与Cache所缓存的内存地址访问有重叠, 经过DMA操作, 与Cache缓存对应的内存中的数据已经被修改, 而CPU本身并不知道, 它仍然认为Cache中的数据就是内存中的数据, 那在以后访问Cache映射的内存时, 它仍然使用陈旧的Cache数据。 这样就会发生Cache与内存之间数据“不一致性”的错误。

相关文章:

  • OPPO 后端二面,凉凉。。。
  • 2023年蓝桥杯模拟省赛——列名
  • Qt5.9.6+VS2015 部署PCL1.8.1
  • Qt笔记 信号和槽
  • vue中动态显示时间
  • JavaScript 面试题
  • Vue2 和Vue3 双向数据绑定的区别和原理
  • word转pdf怎么转换?这几个转换技巧收好
  • Python将 PDF 转换为 png 图片的教程
  • 【vue2源码】模版编译
  • 室友打团太吵?一条命令断掉它的WiFi
  • Nanya(南亚科技)DRAM芯片选型详解
  • 10:00面试,10:06就出来了,问的问题有点变态。。。
  • 2024.3.19
  • diffusion model(十四): prompt-to-prompt 深度剖析
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 08.Android之View事件问题
  • Asm.js的简单介绍
  • CSS 提示工具(Tooltip)
  • ES6 ...操作符
  • express如何解决request entity too large问题
  • Java 23种设计模式 之单例模式 7种实现方式
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Python利用正则抓取网页内容保存到本地
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Sass 快速入门教程
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 对象管理器(defineProperty)学习笔记
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 跨域
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 我感觉这是史上最牛的防sql注入方法类
  • 用简单代码看卷积组块发展
  • 找一份好的前端工作,起点很重要
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #QT(串口助手-界面)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • %check_box% in rails :coditions={:has_many , :through}
  • (007)XHTML文档之标题——h1~h6
  • (LeetCode C++)盛最多水的容器
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)ssm高校实验室 毕业设计 800008
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理出现中文乱码的情况
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net core使用ef 6
  • .net mvc部分视图
  • .NET Windows:删除文件夹后立即判断,有可能依然存在