【笔记】微机原理及接口技术3 -- 中断技术与DMA控制器

news2024/9/29 17:37:45

目录

      • 中断技术
        • 中断概述
        • 中断处理过程
      • 可编程定时器与计数器
      • DMA 控制器
        • 8237A 结构
        • 工作方式
        • 工作时序

中断技术


中断概述

中断的流程是?

  • CPU 正在执行进程 A
  • 此时外部或者内部中断请求发生,CPU 响应中断
  • 进程 A 暂时中断执行,转而运行中断服务程序 B
  • 中断服务程序 B 运行结束,返回原来进程 A 中断的位置
  • 继续执行进程 A

在这里插入图片描述


中断源
一种是外部中断或硬件中断,它们从 CPU 的不可屏蔽中断引脚 NMI 和可屏蔽中断引脚 INTR 引入;
另一种为内部中断或软件中断,是为解决 CPU 运行过程中出现的一些意外事件或便于程序调试而设置的


外部中断

NMI 引脚引入的中断称为不可屏蔽中断,处理紧急事件,不受中断标志 IF 影响

INTR 引脚引入的中断请求称为可屏蔽中断,只有当 CPU 的标志寄存器 FLAGS 的 IF=1 时,才允许响应此脚引入的中断请求


内部中断

内部中断不需要硬件支持,不受 IF 标志控制,不执行中断总线周期
除单步中断可通过 TF 标志允许或禁止外,其余都是不可屏蔽的中断

内部中断分类

  1. 除法错中断:除数为 0 时的中断
  2. 单步中断:TF=1 时,每执行完一条指令,就自动产生一个单步中断
  3. 溢出中断:溢出标志 OF=1 时,可由溢出中断指令 INTO 产生中断类型号为 4 的溢出中断
  4. 软件中断指令 INTn
  5. 断点中断:专为调试设计

中断向量表

每次中断,都会把断点和标志寄存器推入堆栈保护,之后找到中断服务程序入口地址并执行;
中断服务程序结束后,执行返回值 IRET,从堆栈恢复当前 CPU 状态与断点

中断服务程序的入口地址通常被称为中断向量(interruptvector)或中断矢量

中断向量表存放中断服务程序入口地址的段地址(CS)和地址的偏移量(IP)


中断嵌套

CPU 响应中断时,会根据优先级先响应优先级高的中断请求,后响应优先级低的中断请求

中断嵌套发生于优先级更高的中断请求打断当前中断请求,使得低优先级中断请求进入嵌套栈中的过程

机器进入中断服务程序之后,硬件会自动关闭中断,禁止别的中断进入


中断处理过程

主要由五个过程:中断请求、中断源识别(中断判优)、中断响应、中断处理和中断返回


中断请求

中断请求信号分为以下两种

  1. 边沿触发:CPU 根据中断请求端的电平跳变判断信号有效与否
  2. 电平触发:CPU 根据中断请求有无稳定电平信号判断信号有效与否

中断源识别

由于同一时间内可能有两个及以上中断源发出中断请求,CPU 必须对其进行识别并取其中一个进行中断

判优手段分为两种:软件判优、硬件判优


中断响应

要响应中断请求,需具备以下四个条件

  1. 一条指令执行结束
  2. CPU 处于开中断状态
  3. 当前没有发生复位(RESET)、保持(HOLD)、内部中断和非屏蔽中断请求(NMI)
  4. 若当前执行的指令是开中断指令(STI)和中断返回指令(IRET),则它们执行完后再执行一条指令,CPU 才能响应 INTR 请求

中断处理

中断处理由中断服务子程序完成

中断服务子程序执行以下五个步骤

  1. 保护软件现场
  2. 开中断
  3. 执行中断处理程序
  4. 关中断
  5. 恢复现场

中断返回

中断返回需执行中断返回指令 IRET


可编程定时器与计数器


软件定时法:设计一个延时子程序,子程序中全部指令执行时间的总和就是该子程序的延时时间

硬件定时法:利用专用的硬件定时器/计数器,在简单软件控制下产生准确的延时时间


定时器/计数器在计数方式

  • 加法计数器:每有一个计数脉冲就加 1,当加到预先设定的计数值时产生一个定时信号输出
  • 减法计数器:送入计数初值后,每来一个计数脉冲就减 1,减到零时产生一个定时信号输出

DMA 控制器

接下来以 DMA 控制器 8237A 作为后续内容的介绍


8237A + 8 位锁存器 = 完整的 4 通道 DMA 控制器

各个通道可以完成的动作

  • DMA 读操作:读存储器送外设
  • DMA 写操作:读外设写存储器
  • DMA 校验操作:通道不进行数据传送操作,只是完成校验功能

8237A 结构

8237A 有两种不同的工作状态

  1. 丛态方式:DMA 控制器未取得总线控制权时必须由 CPU 对 DMA 控制器进行编程,这时,CPU 处于主控状态
  2. 主态方式:当 DMA 控制器取得总线控制权后,系统就完全在它的控制下

HRQ(总线请求信号):该信号送到 CPU 的 HOLD 端,是向 CPU 申请获得总线控制权的 DMA 请求信号
HLDA(总线响应信号):响应总线请求信号


工作方式

主控设备执行 DMA 传送时有以下 4 种数据传送方式

  1. 字节传送:每次 DMA 传送请求只传送一个字节的数据,数据传送后当前字节计数器自动减 1,撤销 HRQ 信号,释放系统总线控制权,并退还给 CPU
  2. 块传送:一旦 8237A 获得总线控制权,连续地传送一个数据块,直到当前字节计数器减为 0 或由外部产生信号时终止 DMA 传送
  3. 请求传送:他可以保存 DMA 现场,并且可以快速恢复
  4. 级联模块:当一片 8237A 通道不够使用时,可通过多片级联的方式增加 DMA 通道

工作时序

8237A 有两个主要的工作周期,即空闲周期(idlecycle)和有效周期(activecycle)


空闲周期:系统复位后或无 DMA 请求时处于空闲周期,这时 DMA 处于从态方式

有效周期:当 8237A 在 SI 状态采样到外部有效的 DMA 请求信号 DREQ 后,就向 CPU 发 DMA 请求信号 HRQ,并进入有效周期 SO 状态


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

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

相关文章

华为OD机试真题 Python 实现【核酸检测人员安排】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同,采样效率为N人/小时。 由于外界变化&…

本地springboot项目上传到gitee

1.在gitee上新建一个仓库: 创建后可以拿到仓库地址:https://gitee.com/ouyangshuiming/linux_test.git 2. 选中 创建git仓库 3. 4.最后一步: 一定记得这里要写上一段话,才能成功提交:比如git 提交远程库 最后刷新…

MySQL的Join

1.Join用法 Join连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。 内连接又叫等值连接,此时的inner可以省略。 USING语句 MySQL中连接SQL语句中,ON子句的语法格式为:table1.column_name = table2.column_name。当模式设计对联接表的列采用了相同的命名样…

React hooks文档笔记(四) useRef

useRef 当想让组件记住一些信息,又不想触发新的渲染,可以使用ref:总是返回同一个对象。 1. state 和 refs 的比较 refs(普通的 JavaScript 对象) state 更改时不触发重新渲染 更改时触发重新渲染 可变的——修改/…

复现基于unet的眼底血管的医学图像分割项目

代码及数据集: MedicalImageSegmentation: 复现一个医学图像分割的项目 - Gitee.com xin麒/MedicalImageSegmentation - 码云 - 开源中国 (gitee.com) 两个都可以,差不多的(要不就使用第二个吧,第二个后续都会继续更新&#xf…

【JUC-1】java多线程线程基础知识

线程创建方式 继承Thread类.实现Runable接口.实现Callable接口. Runable/Callable接口的实现, 都是重写其中的run/call方法, 实现任务逻辑, 再由线程执行器(可以是Thread类,也可以是线程池)并发执行run/call的逻辑. 而Thread类中的包含start方法, 可以控制线程启动,执行任务…

关于最小生成树

最小生成树问题,常用于将所有顶点连通的最大最小代价。比如十个城市去修路,不同成熟时之间修路的代价不同,让你找一个方案可以满足每个城市之间互相连通并且代价最小。 解决这个问题有两个算法,Prim算法和Kruskal算法。不同的是&a…

安装和配置nginx(含https)

文章目录 安装Nginx配置单独的配置:https配置 nginx为什么可以处理高并发 安装Nginx sudo yum update sudo yum install epel-release sudo yum install nginx sudo systemctl start nginx安装好后可以打开自己的域名 看一下默认的页面 配置 具体参考Link 位置 …

香港大学推出创新科技教育基金,拟支持Web3和生成式AI等领域教学

区块链技术是近年来备受关注的领域之一,其应用范围已经涵盖了金融、医疗、物流等众多行业。而随着区块链技术的不断发展和完善,越来越多的企业和机构开始将其应用到实际生产和业务中。作为其中一个重要的应用领域,金融领域也成为了区块链技术的重要应用场…

CTF加密解密—CRYPTO—easyrsa1

0x00 考察知识点 CTF 加解密合集:CTF 加解密合集 本道题实际上是在考察对RSA算法的练度问题,已知n,需要将n拆解为两个质数。 工具: http://www.factordb.com/index.php (在线分离) 0x01 题目 e 6553…

青岛大学_王卓老师【数据结构与算法】Week03_11_线性表的链式表示和实现11_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–…

f(x)*g(x)的问题——C的缺陷

整理一道颇具争议的题目 #include<stdio.h> #define Mul(x,y) x*y int main() { int a1,b2,c3; printf("%d",Mul(ab,bc)); }关于这道题目&#xff0c;根据不同的编译器&#xff0c;答案会出现两种答案 11和14&#xff0c;见下面&#xff1a; 关于dev C: 关于…

【前端面试手册】CSS系列-回流与重构

本专栏收录于前端面试手册-CSS系列如果该文章对您有帮助还希望你能点一个小小的订阅&#xff0c;来增加博主创作的动力✍&#x1f3fb;话不多说开始进入正题 回流和重构在前端CSS中是一个常见的问题&#xff0c;那么你对回流何重构有哪些了解呢&#xff1f; 一、什么场景下会触…

Vulnhub: EvilBox:One靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.130 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.130 secret目录爆破 feroxbuster -k -d 1 --url http://192.168.111.130/secret/ -w /opt/zidian/SecLists-2022.2/Disco…

【深度学习推荐系统 工程篇】二、从TF-Serving看生产环境的模型推理服务

前言 模型训练完成后&#xff0c;到在线部署是其所必须要做的一步&#xff0c;伴随模型结构复杂/算力增加&#xff0c;打造低延时/低资源占用的模型预测服务是模型上线的关键&#xff1b; tensorflow 很早就开源了tf-serving&#xff08;代码连接&#xff1a;https://github.…

Pygame中获取键盘按键的方法

1 事件与队列 在Pygame中&#xff0c;将用户对游戏的操作叫做“事件”。键盘按键是一种事件&#xff0c;鼠标点击和游戏手柄的输入也是一种事件。在Pygame的子模块locals中&#xff0c;对这些事件进行了定义。当用户通过键盘、鼠标或者游戏手柄对游戏进行操作后&#xff0c;产…

Bootstrap 代码

文章目录 Bootstrap 代码更多实例实例1实例2实例3&#xff0c;4实例5实例6 Bootstrap 代码 Bootstrap 允许您以两种方式显示代码&#xff1a; 第一种是 <code> 标签。如果您想要内联显示代码&#xff0c;那么您应该使用 <code> 标签。第二种是 <pre> 标签。…

mysql 创建用户(修改用户访问数据库权限,被外界IP访问权限)

我们执行,下面代码&#xff1a; select user,host from mysql.user;生成表: 这里面存放我们所有的用户&#xff0c;user 表示用户名, host表示 能被访问的IP范围。 1.修改用户能被访问的范围 # "%" 表示,能被所有IP访问。 update mysql.user set host "%&q…

力扣 538. 把二叉搜索树转换为累加树 1038. 从二叉搜索树到更大和树

题目来源&#xff1a; 538&#xff1a;https://leetcode.cn/problems/convert-bst-to-greater-tree/description/ 1038&#xff1a; https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/description/ C题解1&#xff1a;递归法。二叉搜索树由大到小&#…

CST仿真半波偶极子天线学习笔记

CST仿真半波偶极子天线 文章目录 CST仿真半波偶极子天线1. 新建工程模板2.建模3. 激励方式设置4. 求解器设置5. 仿真分析6. 数据后处理 设计要求&#xff1a; 谐振频率为3.48GHz&#xff0c;基板采用Rogers RT5880板材&#xff0c;介电常数2.2&#xff0c;损耗角正切0.0009&…