计算机组成原理第五章(3)DMA处理

news2024/11/24 11:49:24

三种控制方式:程序查询程序中断DMA方式 

 回顾一下 之前的中断控制方式,如果是输入命令,先启动命令,通过地址总线选择相应的接口,通过地址译码之后的到选择电路,这个接口准备开始工作。

  • 启动外部设备,跟设备的选择信号结合在一起,置D触发器为0,B触发器为1
  • B触发器为0,通过接口电路发出启动设备的命令。
  • 启动命令之后外部设备就可以把数据通过接口电路送到数据寄存器DBR中,此时外部设备的工作已经完成了。
  • 完成后的外部设备会发出一个结束的信号,会置D触发器为1,
  • D触发器产生1的信号配合着屏蔽触发器产生0的信号
  • 两种信号通过INTR触发器产生中断请求的信号
  • 但是产生信号的影响还有受排队器的控制
  • 中断的请求排的级别高就可以为之服务了。
  • 排队器经过设备编码之后产生了向量的地址。 

DMA

DMA 和程序中断两种方式的数据通路

程序中断过程是CPU先执行当前的程序,直到IO发出请求,通过接口送入CPU,但是中间可能有请求信号的延迟,DMA方式采用了DMA接口,直接可以让主存和IO设备进行数据的交换,但是每次交换时,都需要向CPU发出总线请求,否则容易出现总线占用的情况。

  • 访问主存的地址由DMA接口电路来提供
  • DMA传送完数据之后还要告诉CPU数据传送完成,需要把控制权交给CPU

DMA 与主存交换数据的三种方式

DMA占用总线的时候CPU不能访问主存,这就类似于程序查询方式,CPU此时什么也不能干,不能发挥主存对CPU的利用率。

周期窃取 

 可以引入一个缓冲器,但是如果缓冲器做的容量比较小的话需要不断地从主存中取数据,这样也会减少CPU访问地时间,所以应该选取大容量地缓冲器

周期挪用,选取一个或者多个周期留给数据传输,这些节拍是对齐的,如果数据传输完了,剩下就给CPU。

 DMA接口的功能和组成

功能(简答):

  1. 向CPU申请DMA的传送
  2. 处理总线控制权的移交
  3. 控制和管理数据的传送
  4. 给出数据的首地址和长度
  5. 修正数据的地址和位数
  6. 程序结束后向CPU发出完成移信号

DMA 的工作过程

预处理、数据传送、后处理
预处理:确定数据传输的方向:是读还是写 给出主存的地址(DMA.AR)、给出设备的地址(DMA.DAR)、传送字的大小(DMA.WC)

 dma工作过程举例

  • INPUT --- 设备到主存

  1.  设备通过BR数据寄存器把要传送给主存的数据传送过去
  2. 同时设备要向DMA接口发出一个请求的信号,经过DMA控制逻辑,将请求信号发送给CPU
  3. CPU接受到之后CPU反馈应答信号,将控制权交给DMA
  4. 通过AR寄存器送出主存的地址(预处理完成),通过地址线给CPU
  5. 通过DMA给设备发一个反馈信号
  6. 送完之后AR WC的值发生改变,为下一个地址做一个传送。
  7. 直到发出溢出信号,传输结束。

笔者和同学交流理解是:1200B是吞吐量,计算出来的数据传输速度远大于吞吐量,所以吞吐出来的数据先存放在数据缓冲寄存器中,由于是字符型设备所以每存取 一个字符需要花费一个存取周期。

 

体现DMA的工作效率很高。

DMA接口与主存的连接

 类似于总线的链式结构

 

 DMA方式和中断方式的比较

 

 

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

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

相关文章

网络编程总结一:

一、网络基础: 概念:1> 网络编程的本质就是进程间的通信,只不过进程分布在不同的主机上 2>在跨主机传输过程中,需要确定通信协议后,才可以通信 1. OSI体系结构(重点) 定义7层模型&…

类和对象(上篇)【C++】

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C是基于面向对象的,关注的是对象,将一件事拆分成不同的对象,靠对象之间的交互完成。 目录 一、类的定义 二、访问限定符…

【小样本分割 2020 TPAMI 】PFENet

文章目录 【小样本分割 2020 TPAMI 】PFENet1. 简介1.1 问题1) 高级特征误用造成的泛化损失2) 查询样本和空间样本之间的空间不一致 1.2 方法 2. 网络2.1 整体架构2.2 先验掩膜生成2.3 FEM模块 3. 代码 【小样本分割 2020 TPAMI 】PFENet 论文题目:Prior Guided Fea…

flinkCDC相当于Delta.io中的什么 delta.io之CDF

类似flink CDC databricks 官方文档: How to Simplify CDC With Delta Lakes Change Data Feed - The Databricks Blog delta.io 官方文档: Change data feed — Delta Lake Documentation 概述 更改数据馈送 (CDF) 功能允许 Delta 表跟踪 Delta 表版本之间的行级更改 在…

C语言函数与递归

目录😊 1. 函数是什么🐾 2. 库函数🐾 3. 自定义函数🐾 4. 函数参数🐾 5. 函数调用🐾 6. 函数的嵌套调用和链式访问🐾 7. 函数的声明和定义🐾 8. 函数递归🐾 1. 函…

二叉搜索树(内含AVL树的旋转操作的详细解释)

二叉搜索树 二叉搜索树的概念二差搜索树结构设计二叉搜索树的操作以及实现遍历判空插入查找删除(☆☆☆)二叉搜索树的其他方法 二叉搜索树的应用二叉搜索树的性能分析二叉树习题练习AVL树AVL树的概念AVL树的结构设计AVL树的插入(非常重要)AVL树的旋转(☆☆☆☆☆)AVL树的插入操…

基于STATCOM的风力发电机稳定性问题仿真分析(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

网页三剑客之 HTML

本章开始我们来介绍一下网页前端部分,我们只是简单的介绍一些常用的各种标签,其目的在于为我们后面的项目做准备。 我们并不要求能完全掌握前端的语法,但是在见到以后能够认识这些代码就可以了。 想走后端开发的,前端不需要多么…

【C++】哈希和unordered系列封装

1.哈希 1.1 哈希概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( l o g 2 N log_2 N l…

CSAPP学习笔记 2 浮点数(自用)

1. 首先 我们回忆一下计算机思维导论的编码问题 小白鼠问题 (107条消息) 小白鼠喝水问题------计算机思维 编码思想(自用)_和光同尘463的博客-CSDN博客 2. 对于一些可表示的浮点数比如 101.11可以用二进制精确表示 因为是2的倍数 但是 对于一些不可整除的浮点数 我们又如何…

阿里云服务器部署node项目笔记

阿里云部署node项目笔记 此过程中全部安装都按照B站教程实现本篇是个人笔记,许多细节并未陈述比如开发阿里云对应端口等,不是完整的过程,如有误导在此致歉。 安装node报错linux查看nginx配置文件 使用 nginx -t mongodb数据库安装解决&#x…

【JAVA】#详细介绍!!! 文件操作之File对象(1)!

本文内容不涉及文件内容操作,主要是对指定文件元信息的获取,以及通过java代码如何创建一个文件或者删除文件 目录 文件操作的File对象 File对象的基本操作方法 得到文件(夹)对象的信息元 1.getParent 2. getName 3.getPath 4…

CentOS 安装与配置Nginx【含修改配置文件】

1.安装Nginx yum install nginx -y2.启动Nginx systemctl start nginx查询是否启动nginx systemctl status nginx3.尝试访问 这是默认的配置文件 # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * …

wordcloud制作词云图

wordcloud制作词云图 wordcloud中文方框问题 jieba(分词)jieba库分词的三种模式 wordcloud WordCloud(font_pathNone, width400, height-200,margin2,maskNone, max_words200, min_font_size4, stopwordsNone,background_colorblack, max_font_sizeNone…

js中setinterval怎么用?怎么才能让setinterval停下来?

setinterval()是定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。 setinterval()的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象。 setInterval() 方法会不停地调用函数,…

浙大数据结构与算法一些有意思的理论基础题

堆栈 有人给出了堆栈用数组实现的另一种方式,即直接在函数参数中传递数组和top变量(而不是两者组成的结构指针),其中Push操作函数设计如下。这个Push函数正确吗?为什么? #define MaxSize 100 ElementTyp…

Three.js--》Gsap动画库基本使用与原理

目录 Gsap动画库使用讲解 Gsap动画库基本使用 修改自适应画面及双击进入全屏 设置stats性能监视器 Gsap动画库使用讲解 GSAP的全名是GreenSock Animation Platform,是一个从flash时代一直发展到今天的专业动画库,今天将其与three.js进行结合&#x…

【DevOps视频笔记】1. DevOps的诞生

视频官网 目录 一、DevOps介绍 定义: 作用: 核心: 二、软件开发流程 三、流程图 一、DevOps介绍 定义: Development & Operations的缩写,也就是开发&运维DevOps 是一个不断提高效率并且持续不断工作的…

GPIO输出——LED闪烁、LED流水灯、蜂鸣器

1、STM32F1 GPIO 简介 GPIO ( General Purpose Input Output )通用输入输出口 可配置为 8 种输入输出模式 引脚电平: 0V~3.3V ,部分引脚可容忍 5V 输出模式下可控制端口输出高低电平,用以驱动 LED 、控制蜂鸣器、模拟通…

Spring 统一功能处理(拦截器)

文章目录 Spring拦截器1.统一用户登录权限校验1) SpringAOP 用户统一验证的问题2) Spring拦截器3) 拦截器实现原理4)同一访问前缀添加 2. 统一异常处理3. 统一数据返回格式1)统一数据返回的好处2)统一数据返回实现 Spring拦截器 SpringBoot统…