当前位置: 首页 > 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与内存之间数据“不一致性”的错误。

http://www.lryc.cn/news/321316.html

相关文章:

  • websocket 升级协议时的协议切换点
  • 在Linux中开发C++
  • 【linux】Debian访问Debian上的共享目录
  • Postman Newman API 自动化测试快速入门
  • Python之Web开发中级教程----ubuntu安装MySQL
  • Flutter开发入门——路由
  • Acrobat Pro DC 2023:PDF编辑与管理的全新体验
  • Linux课程_____网络管理
  • ubuntu20.04_PX4_1.13
  • 12350安全生产举报热线系统解决方案
  • Java 多线程(超详细讲解)上篇
  • 15届蓝桥杯备赛(2)
  • 使用Vuex构建网络打靶成绩管理系统及其测试页面平台思路
  • CPU的核心数与线程数对性能的影响是什么
  • Web前端-HTML
  • 【LLMs+小羊驼】23.03.Vicuna: 类似GPT4的开源聊天机器人( 90%* ChatGPT Quality)
  • 详细了解CSS
  • Java基础-IO流
  • MySQL的基本概念
  • 如何入职车载测试
  • 【物联网】Modbus 协议简介
  • 网络编程-套接字相关基础知识
  • 基于Python的医疗机构药品及耗材进销存信息管理系统
  • Java学习笔记(14)
  • 联合和枚举
  • 《深入Linux内核架构》第2章 进程管理和调度 (3)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Refresh)
  • 数据资产管理解决方案:构建高效、安全的数据生态体系
  • Visual Studio 2013 - 调试模式下查看监视窗口
  • CTF 题型 SSRF攻击例题总结