DMA方式的知识点笔记

news2024/9/19 10:36:55

                                                                            苏泽 

“弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家


目录

1. DMA基本概念

2. DMA传送过程

易错点

DMA控制器操作流程

3. DMA传送方式

这是单总线的结果 (CPU说了算 所以不会产生于CPU的冲突)

这是三总线的结构 (也就是主存下面另外接了一条线到DMA所以 有可能于CPU发生冲突)

5. DMA的组成

6. DMA与其他方式的比较

7. DMA的优缺点

8. DMA的应用场景

9. DMA的中断处理

10. DMA的实现方式


 

1. DMA基本概念

  • DMA(直接内存访问)是一种硬件实现的数据传输方式,允许外围设备直接与主存交换数据,而不需要CPU的干预。
  • DMA方式的基本单位是数据块,数据在I/O设备和内存之间直接传输。

2. DMA传送过程

  • 预处理:CPU完成一些必要的工作,如测试状态、启动设备等,然后继续执行其他任务。
  • 数据传送:DMA设备准备好后,会主动向DMA控制器(DMAC)发出DMA请求,DMAC向CPU发出总线请求。
  • 数据传送后处理:数据传送满一个块后,DMAC向CPU发出中断请求,CPU执行中断程序,进行数据校验、测试传送过程等。

易错点

其实题目问你 CPU 用于 DMA 处理的时间占比,本质上就是在问你 DMA 预处理 +后处理
时间占比
因为其他的部分根本不占时间!
如下

DMA控制器操作流程

  1. CPU响应DMA请求(传送前

    • 当DMA控制器发出总线请求后,CPU响应此请求,并发出总线响应信号。
  2. 接管总线控制权(传送前

    • CPU接管系统总线控制权,准备进入DMA操作周期。
  3. DMA操作周期

    • CPU进入DMA操作周期,此时DMA控制器可以独立进行数据传输。
  4. 数据传送方向与控制信号

    • DMA控制器规定数据在主存和外设之间的传送方向。
    • 发出读写等控制信号,以执行数据传送操作。
  5. 数据传送完成

    • 数据传送完成后,DMA控制器将向CPU报告操作的结束。
  6. 操作结束报告 (传送后

    • DMA操作结束后,DMA控制器会通知CPU,以便CPU可以继续执行其他任务。

3. DMA传送方式

这是单总线的结果 (CPU说了算 所以不会产生于CPU的冲突)

这是三总线的结构 (也就是主存下面另外接了一条线到DMA所以 有可能于CPU发生冲突)

  1. 停止CPU访问主存

    • 目的:在DMA传输期间,完全控制主存,避免与CPU的访问冲突。
    • 操作:在DMA传输期间,暂停CPU对主存的访问。
    • 优点
      • 控制简单,易于实现。
      • DMA可以完全控制主存,提高数据传输效率。
    • 缺点
      • CPU在传输期间不执行程序,导致CPU资源未被充分利用。
  2. DMA与CPU交替访存

    • 目的:允许CPU和DMA控制器交替访问主存,提高资源利用率。
    • 操作
      • 将CPU周期分为两个部分,C1周期专供CPU访存,C2周期专供DMA访存。
      • DMA控制器和CPU交替进行访存操作,无需申请总线使用权。
    • 优点
      • 有效利用CPU和DMA资源,提高系统效率。
    • 缺点
      • 硬件逻辑更为复杂,需要精确控制访问时间。
  3. 周期挪用(周期窃取)

    • 目的:在CPU未使用总线时,允许DMA控制器访问主存。
    • 操作
      • DMA控制器检测CPU的访存周期,当CPU不访存时,DMA控制器利用这个周期进行数据传输。
      • 如果CPU和DMA同时请求访存,根据优先级决定谁先访问主存。
    • 优点
      • 最大限度减少对CPU性能的影响,提高主存的利用率。
    • 缺点
      • 实现较为复杂,需要高级的硬件支持来检测和响应访问请求。
  • DMA请求:表示要向主存传送一个字的数据。
  • DMA中断请求:表示一整块的数据已经传送完成。

5. DMA的组成

  • 主存地址计数器:存放要交换的主存地址。
  • 传送长度计数器:记录传送数据的长度。
  • 数据缓存寄存器:暂存每次传送的数据。
  • DMA请求触发器:I/O设备准备好数据后使触发器置位。
  • 控制/状态逻辑:完成中断机构,数据块传送完毕后触发中断。

6. DMA与其他方式的比较

  • 中断驱动方式:I/O设备主动打断CPU运行请求服务,但每个数据传输需经过CPU。
  • 通道控制方式:专门负责输入/输出的处理机,进一步减少CPU干预,实现并行操作。

7. DMA的优缺点

  • 优点:减少了CPU的干预,提高了数据传输效率。
  • 缺点:在数据块传送的开始和结束时需要CPU干预。

8. DMA的应用场景

  • DMA适用于大量数据的快速传输,如磁盘读写操作。

9. DMA的中断处理

  • 中断服务程序中,CPU需要处理数据校验、传送过程测试等任务,并决定是否继续使用DMA传送。

10. DMA的实现方式

  • DMA的实现依赖于硬件电路,不需要程序干预,是一种纯硬件实现的数据传输方式。


另外,利用了工作之余的一点点时间,整理了一套考研408的知识图谱,

我根据这一套知识图谱打造了这样一个408知识图谱问答系统

里面的每一个回答都是根据考研408的考点回复的

目前暂时只接入了微信,如果大家对这个问答系统感兴趣的话可以在我的主页里找到我的微信号

找我拉进测试群免费体验哦


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

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

相关文章

谷歌摸鱼神器来了:推出AI会议替身,一键总结提问发言_会议预约 ai对话

饱受会议折磨的打工人,终于可以解放了! 就在刚刚举办的Google Cloud Next’23大会上,谷歌宣布了一系列科技新进展,最瞩目的要属其中的“开会AI替身”了。 只需要一句“帮我参加”,AI就能替你开会,并在合适…

SCI二区TOP|蜘蛛黄蜂优化算法(SWO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2023年,M Abdel-Basset受到蜘蛛黄蜂优化社会行为启发,提出了蜘蛛黄蜂优化算法(Spider Wasp Optimizer, SWO)。 2.算法原理 2.1算法思想 S…

python04——类(基础new)

类其实也是一种封装的思想,类就是把变量、方法等封装在一起,然后可以通过不同的实例化对其进行调用操作。 1.类的定义 class 类名: 变量a def __init__ (self,参数2,参数2...):初始化函数!!&…

【LeetCode】生命游戏

目录 一、题目二、解法完整代码 一、题目 根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一…

Qt 音频编程实战项目

一Qt 音频基础知识 QT multimediaQMediaPlayer 类:媒体播放器,主要用于播放歌曲、网络收音 机等功能。QMediaPlaylist 类:专用于播放媒体内容的列表。 二 音频项目实战程序 //版本5.12.8 .proQT core gui QT multimedia greate…

C++入门基础(2)

目录 一、引用: 1、定义: 2、特性: 3、引用的使用: 4、const引用:控制权限 const引用定义: const引用可以接收3种对象: 1、正常对象: 2、临时对象: 3、const对象: 总结&…

Sorted Set 类型命令(命令语法、操作演示、命令返回值、时间复杂度、注意事项)

Sorted Set 类型 文章目录 Sorted Set 类型zadd 命令zrange 命令zcard 命令zcount 命令zrevrange 命令zrangebyscore 命令zpopmax 命令bzpopmax 命令zpopmin 命令bzpopmin 命令zrank 命令zscore 命令zrem 命令zremrangebyrank 命令zremrangebyscore 命令zincrby 命令zinterstor…

vue子组件调用父组件方法

父组件 页面<popoverss ref"pop" :goodspop"goodspop"></popoverss>子组件components: {"popoverss": () > import(../comm/popover.vue)},方法goodspop(e){console.log(e"----")return 9999;},子组件 方法props:[go…

【转载】目标检测mAP的含义

转载自三叔家的猫 https://blog.csdn.net/qq_39056987 https://blog.csdn.net/qq_39056987/article/details/104348493 <div id"content_views" class"markdown_views prism-atom-one-light"><svg xmlns"http://www.w3.org/2000/svg" s…

不用服务器 | 我搭建了一个属于自己的GPT聊天应用!!!

原文地址&#xff1a;aiutools.fun/archives/5118 平台限制部分内容未显示&#xff0c;详情请访问原文。 展示 不废话&#xff0c;直接上干货&#xff01; 我这里搭建的Lobe Chat 支持 聊天TTS & STT 语音会话文生图各种优秀的插件 下面搭建好的样子 前期准备 需要…

(2)滑动窗口算法练习:无重复字符的最长子串

无重复字符的最长子串 题目链接&#xff1a;3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长子串的长度。 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是"a…

Java字符串(String、字符串拼接、原理)

文章目录 一、String字符串1.1创建方式【直接赋值、new一个对象】1.1.1 使用字符串字面值直接赋值&#xff1a;&#xff08;1&#xff09;字符串字面量创建String对象的转换过程&#xff08;2&#xff09;一些方法&#xff08;3&#xff09;说明 1.1.2 使用new关键字创建字符串…

Java如何自定义注解及在SpringBoot中的应用

注解 注解&#xff08;Annotation&#xff09;&#xff0c;也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性&#xff0c;与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面&#xff0c;用来对这些元素进行说…

最快视频转绘-AnimateDiff-Lightning

最快视频转绘-AnimateDiff-Lightning Video-to-Video Generation AnimateDiff-Lightning 非常适合视频到视频的生成。使用 ControlNet 提供最简单的 comfyui 工作流程。 「ComfyUI-aki-v1.3.7z」链接&#xff1a;https://pan.quark.cn/s/199a753292d8 下载导入工作流 animat…

182440-00SF 同轴连接器

型号简介 182440-00SF是Southwest Microwave的一款连接器。该连接器采用 BeCu UNqS C17300 材料&#xff0c;并进行了镀金处理&#xff0c;以确保良好的导电性和耐腐蚀性&#xff1b;螺纹采用符合 ASTM A2582 标准的钢制合金&#xff0c;并进行磷酸盐钝化处理&#xff0c;以提高…

FunAudioLLM SenseVoice语音转录与CosyVoice语音合成及语音克隆使用案例

参考: https://fun-audio-llm.github.io/ 1、SenseVoice语音转录 在线体验:https://modelscope.cn/studios/iic/CosyVoice-300M 参考:https://github.com/FunAudioLLM/SenseVoice 下载: pip install -U funasr使用: from funasr import AutoModelmodel_dir = "…

如何从 Vue 2 无痛升级到 Vue 3,一文搞定!

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 随着 Vue 3 的发布,许多开发者都面临着从 Vue 2 升级到 Vue 3 的挑战。 本文将详细介绍如何从 Vue 2 无痛升级到 Vue 3,包括每个步骤的详细说明与代码示例。 让我们开始吧! 准备工作 在正式开始升级之前,请确保你已经…

Linux网络命令:网络工具socat详解

目录 一、概述 二、基本用法 1、基本语法 2、常用选项 3、获取帮助 三、用法示例 1. 监听 TCP 端口并回显接收到的数据 2. 通过 TCP 端口转发数据到 UNIX 套接字 3. 将文件内容发送到 TCP 端口&#xff1a; 4. 使用伪终端进行串行通信 5、启动一个TCP服务器 6、建…

【Linux】网络新兵连

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 引言 在上一篇博客中&#xff0c;我们简单的介绍了一些Linux网络一些比较基本的概念。本篇博客我们将开始正式学习Linux网络套接字的内容&#xff0c;那么我们开始吧&#xff01; 1.网络中的地址管理 大家一…

【Linux】多线程_2

文章目录 九、多线程2. 线程的控制 未完待续 九、多线程 2. 线程的控制 主线程退出 等同于 进程退出 等同于 所有线程都退出。为了避免主线程退出&#xff0c;但是新线程并没有执行完自己的任务的问题&#xff0c;主线程同样要跟进程一样等待新线程返回。 pthread_join 函数…