ch5_4程序查询方式_程序中断方式_DMA方式

news2024/11/18 21:32:06

程序查询方式的流程

程序查询方式的接口电路

1. 程序查询方式

程序查询方式,需要通过cpu中的寄存器,完成数据从io设备到内存之间的传输。

在这里插入图片描述

1.1 程序查询方式流程

  1. 保存寄存器的内容: 如果寄存器中的数据是有用的,需要对寄存器中的数据进行保存。
    将其压入到堆栈当中,或者放到cpu中其余的闲置寄存器中。

  2. 设置计数值:用于控制当前批次总共传输的数据量。

在这里插入图片描述

1.2 程序查询方式接口电路

DBR, 数据缓冲寄存器

在这里插入图片描述

2. 程序中断方式

2.1  中断的概念

中断: cpu 在执行程序的过程中,

  1. 如果发生意外事件或者特殊事件,cpu需要停止当前程序的执行。
  2. 转而去处理中断事件,或者是特殊事件。通过中断服务程序去处理中断。
  3. 处理结束后, 返回被中断的程序断点,继续执行原始的程序。

中断过程中,

  • 需要将程序的断点保存起来,
  • 保存中断现场, 中断时,寄存器中的值。
    在这里插入图片描述

2.2  io中断的产生

能够引发cpu发生中断的因素:
在这里插入图片描述

2.3  程序中断方式的接口电路

  1. 配置中断请求触发器和中断屏蔽触发器

在这里插入图片描述

一次中断处理过程大致分为:中断请求,中断判优,中断响应,中断服务和中断返回等五个阶段

  1. 排队器,用于分配各个设备的优先级。
    硬件排队器,对中断请求源进行排队以后, 
    在从1-n 这些intp中, 只有一个值是1,
    在所有有中断请求的中断源当中,优先级最高的中断源。

在这里插入图片描述

  1. 中断向量地址形成部件。
    找到中断服务程序的入口地址, 
    入口地址可以通过软件产生, 或者硬件向量法。
  • 中断号:中断的编号, 如在8086中, 支持256种中断,则此时这256种中断,被编号成 0- 255.

  • 中断向量:中断服务程序的入口地址,在x86系列中,可以理解成段地址  + 偏移量 构成的中断向量。

有时候,可以代指程序状态字:cpu发生中断时候, 一些非体系结构寄存器或者表示程序状态的寄存器,这些寄存器中的指令无法读取,在计算机内部集成为一个字,这个字称为程序状态字。

此时,中断向量便是包括了 和中断服务程序相关的入口地址,包括段地址,偏移量, 也包括了执行中断服务程序的时候,需要的一些状态信息。

  • 向量地址: 是指中断向量保存的内存单元的地址,
    在这里插入图片描述
    中断向量地址形成设备编码器,
    设备编码器的输出通过数据总线输入到cpu当中,
    产生中断服务程序的入口地址,
    或者是入口地址保存的内存中存储单元的地址,
    或者是跳转指定保存存储单元对应的入口地址
  1. 程序中断方式接口电路的基本组成。
    DBR: 数据缓冲寄存器。
    设备选择电路: 选择哪个设备
    命令译码:确认本次的操作。
    在这里插入图片描述

2.4  io中断的处理过程

cpu 响应中断的条件和时间

  1. 允许
    允许中断触发器 EINT =1
    用开中断 指令将EINT 置 1,
    用关中断 指令将EINT 置0 或者硬件自动复位

  2. 时间
    当D =1, 随机, 且mask = 0 时,
    在每条指令执行阶段的结束前,
    cpu 发中断查询信号, 将 INTR 置1,
    在这里插入图片描述

2.5  中断服务程序流程

中断隐指令,是指在取指令和执行指令完成之后,由硬件完成的一系列操作。
中断隐指令,是硬件自动执行的一系列操作。

  1. 保护现场 
    程序断点的保护,中断隐指令完成
    寄存内容的保护, 进栈指令

  2. 中断服务
    对不同的io设备,具有不同内容的设备服务。

  3. 恢复现场
    出栈指令

  4. 中断返回
    中断返回指令

2.6 单中断与多重中断

  • 单中断: 不允许中断现有的中断服务程序;
  • 多重中断: 允许级别更高的中断源, 中断现行的中断服务程序。

在这里插入图片描述

单重中断与多重中断的主要区别是多重中断的服务程序中要提前开中断,

而单重中断的服务程序中在最后中断返回之前才能开中断。
在这里插入图片描述

3. DMA 方式

3.1dma 方式的特点

下图给出程序中断方式和DMA 方式, 两种不同的数据通路。

在这里插入图片描述

传输间隔过程中,cpu 交出了对总线和主存的控制权,交给了dma 来控制,
在传输间隔的这段时间中,dma 接口虽然没有直接访问主存,但依然占用主存的访问权,此时.cpu 没有充分利用这段时间。

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

  • 停止cpu 访问主存:
    控制简单, cpu此时处于不工作状态或保持状态,
    但未充分发挥cpu 对主存的利用率;

在这里插入图片描述

  • 周期挪用(周期窃取)
    DMA访问主存的三种可能:
    cpu 此时不访存,
    cpu正在访存;
    cpu与dma 同时请求访存;
    此时cpu将总线控制权让给dma;

在这里插入图片描述

  • dma 与cpu交替访问
    cpu 工作周期, c1 专供dma访存;
    c2专供cpu 访存;

在这里插入图片描述

3.2 DMA接口的功能和组成

dma接口功能:

  1. 向cpu申请dma 传送;

  2. 处理总线控制权的转交

  3. 管理系统总线, 控制数据传送;

  4. 确定数据传送的首地址和长度,
    修正传送过程中的数据地址和长度;

  5. dma传送结束时, 给出操作完成信号;

AR: 地址寄存器,用于控制选择哪个设备进行传输,以及传送到主存中的地址;
wc: 数据计数器, 用于统计数据传输是否完成,采用补码方式表示,每传送完成一次,+1, 直到0;

DAR: 数据地址寄存器: 
BR: 缓冲寄存器;

HLDA, HRQ:

DACK, DREQ:
在这里插入图片描述

3.3 DMA工作过程

3.4 DMA接口类型

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

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

相关文章

剑指offer:关于二叉树的汇总(c++)

1、重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 2、树的…

可以顺畅使用不输Chatgpt的AI

一前言 虽然chatgpt不错,但是如果在咱们国家,想使用起来还是有一定的门槛的,又要科学上网,又要申请账号,申请账号还要申请虚拟手机号接收验证码,难道就没有适合普通人使用的AI了吗,直到我发现了…

数字化时代,企业如何做好数字营销

在数字化的影响下,市场竞争愈发激烈,产品和服务的研发生产也加快了节奏,各行业之间的边界也日渐模糊,跨领域、跨赛道也成为数字化转型企业的常态,就像那句话,打败你的不一定是对手,这就是数字化…

AI 时代,提示词便是生产力

作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

AIGC技术周报|图灵测试不是AGI的智力标准;SegGPT:在上下文中分割一切;ChatGPT能玩好文字游戏吗?

AIGC通过借鉴现有的、人类创造的内容来快速完成内容创作。ChatGPT、Bard等AI聊天机器人以及DallE 2、Stable Diffusion等文生图模型都属于AIGC的典型案例。「AIGC技术周报」将为你带来最新的paper、博客等前瞻性研究。 牙科的未来:从多模态大型语言模型窥探 ChatGP…

Java基础教程之Object类是怎么回事?

前言 在前面的文章中,壹哥跟大家说过,Java是面向对象的编程语言,而在面向对象中,所有的Java类都有一个共同的祖先类,这就是Object。那么Object都有哪些特性呢?今天壹哥就简单跟大家分析一下。 -----------…

刷题记录|Day55● 392.判断子序列 ● 115.不同的子序列

● 392.判断子序列 题目描述 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"…

pure-admin九州权限系统地址简单读

分成页面权限(ex:权限管理page) & 标签节点权限(ex:下载按钮) 【九州地址娜娜手机𝕍找看看kwk3589提供】以下是范例: /*** admin : 管理员角色* common : 普通角色*/const permissionRouter {path: "/permission"…

C++之入门之缺省参数函数重载引用

文章目录前言一、缺省参数1.缺省参数的概念2.缺省函数的分类(1)全缺省参数(2)半缺省参数3.使用注意二、函数重载1.函数重载的概念3.函数重载的原理--名字修饰(name Mangling)三、引用1.引用的概念2.引用特性3.引用的使用前言 重新…

工地人员工装穿戴识别系统 opencv

工地人员工装穿戴识别系统通过pythonopencv网络模型AI视频智能分析技术,工地人员工装穿戴识别算法模型可对施工现场人员是否佩戴合规穿戴进行自动识别预警。OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉处理开源软件库&…

堆来咯!!!

堆是什么? 是土堆吗? 那当然不是啦~ 堆是一种被看作完全二叉树的数组。 那么什么是完全二叉树呢? 如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。 堆的特…

开源自动化测试框架有哪些?怎么选择适合自己的

目录 前言 一、Selenium 二、Appium 三、Robot Framework 四、Cypress 五、TestCafe 六、Nightwatch.js 七、JUnit 八、Pytest 总结: 前言 开源自动化测试框架是现代软件开发和测试领域中不可或缺的一部分。它们使得测试人员能够快速、准确地执行测试用例…

Mysql(十) -- 常见问题处理

1. MySQL数据库cpu飙升的话你会如何分析 重点是定位问题。 使用top观察mysqld的cpu利用率 切换到常用的数据库使用show full processlist;查看会话观察是哪些sql消耗了资源,其中重点观察state指标定位到具体sql pidstat 定位到线程在PERFORMANCE_SCHEMA.THREADS中…

HuggingGPT强势来袭,LLM+专家模型,迈向更通用的AI

出品人:Towhee 技术团队 超级组合:HuggingFace ChatGPT HuggingGPT强势来袭。人类仿佛距离真正的AGI又更近了一步。 HuggingGPT是浙江大学与微软亚洲研究院的联手研究,发布之后迅速引发关注,已经开源。 它的使用非常简单&#x…

计算机时间旅行者:NTP如何帮助计算机在时间上保持同步?

应用场景: NTP(网络时间协议)是一种用于同步计算机时钟的协议,它可以让多台计算机在网络上保持同步的时间。因此,NTP可以应用于各种需要时间同步的应用程序中,例如: 计算机网络:在…

《花雕学AI》20:ChatGPT使用之体验评测AI EDU的网页版+桌面端+Android+App store组合

最近准备出门,要去新疆哈密参加活动,一直在寻找手机上可用的AI移动端。昨天在网上偶然找到了AI EDU(这个不是 MSRA 创立的人工智能开源社区),其链接是:https://ai.aigcfun.com,今天就尝试做个相…

三菱FX2N PLC与昆仑通态(MCGS)之间无线通讯

三菱FX2N PLC与昆仑通态(MCGS)之间建立无线通讯,其实就是昆仑通态使用三菱 PLC FX2N 通信口扩展 485 接口通过专用协议对 PLC 站点相应寄存器进行读写操作, 从而实现对站点工作状态的控制。 这种情况下,可以使用三菱PL…

ChatGPT对我们的影响-ChatGPT能给我们带来什么

ChatGPT日常应用 ChatGPT是一种应用广泛的自然语言处理算法,其可以应用于多种日常场景。以下是一些ChatGPT的日常应用: 聊天机器人:ChatGPT可用于构建聊天机器人,通过与用户进行自然语言交互来提供个性化的服务和支持。 新闻稿和…

配置springboot的静态资源访问地址为本机,并使用docker部署

springboot版本 2.7.4开发工具 IDEA 2021.2.4 1. SpringBoot提供的默认静态资源访问方法 resouces目录下的 /static、 /public、 /resouces、 /META-INF/resouces、这四个目录下放置的静态资源都可以通过直接通过以下链接访问 http://localhost:8080/aaa.png 2. 将SpringBoo…

入门力扣自学笔记256 C++ (题目编号:1019)

1019. 链表中的下一个更大节点 题目: 给定一个长度为 n 的链表 head 对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严格大于 它的值。 返回一…