计算机组成原理——第七章输入输出系统(下)

news2024/11/12 23:16:57

还君明珠双泪目,恨不相逢未嫁时

文章目录

  • 前言
  • 7.3.2 中断的作用和原理
  • 7.3.3 多重中断
  • 7.3.4 程序中断方式
  • 7.3.5 DMA 方式


前言

本节除了对时间的计算考察比较多之外,其他的方面也有考察,同时中断的考点在操作系统中也有考察,机组里面更多的关注中断系统工作的硬件原理,首先我们先看一下中断的基本概念,它在系统中有什么作用 ,然后掌握CPU除了中断的这个流程,每一步需要做什么操作,需要用什么硬件,然后我们还要学一下单重中断和多重中断,最后我们来介绍一些程序中断方式

7.3.2 中断的作用和原理

中断的基本概念
程序执行指令就是使用一个PC指向当前要执行的指令的地址,取出这个指令之后要让这个指令加一,指向下一个要执行的指令,因此正常情况下CPU对指令的执行是顺序执行的,除非遇到跳转指令或者函数调用的指令,即便是跳转指令或者函数调用指令,但是依然是属于同一个进程,若这个进程的指令序列开始上CPU运行了,那么也就意味着这个进程会一直霸占着CPU 除非这个进程自主的结束,但是根据我们使用经验来说CPU除了处理当前正在运行的进程 还要处理我们的输入输出设备发来的信号, 这正是因为有中断系统,CPU每执行往一个指令之后,都会在这个指令末尾进行一次检查是否有中断请求信号 ,然后去处理这个中断服务程序,对于不同的中断请求,我们要使用不同的中断程序来处理
关中断:当CPU处于关中断状态时,是不会处理中断程序的(这个关中断状态会被记录于PSW中,执行原子操作(几个语句不可分割)的时候就可以在第一条中加上一个关中断指令,将PSW中的IF变为0,但是也有一些指令在关中断时也需要被响应,比如关机)
中断隐指令:把CPU的指令执行流转移到正确的一个中断服务程序,本质上就是修改一个PC的值,让PC指向这个中断服务程序的第一个指令
请添加图片描述
中断请求标记
检测到一个中断请求,应该如何判断是哪一个IO设备发出来的?这里解决方式是设置一个中断请求标记寄存器,这个寄存器是由一个个的触发器组成的,但是有的时候会有多个部件发过来的请求信号,
请添加图片描述
中断判优
请添加图片描述
中断判优,优先级设置
第4个:高速设备你响应的越慢,越耽误工作,低速设备的反而没有事情
第5个:键盘输入信息放在缓冲寄存器中,若是不及时取走的话,可能会数据覆盖,
请添加图片描述
中断处理过程
当程序执行流需要改变的时候,我们需要保留PC的值,这个操作可以交给中断隐指令(是多个指令,不是一个指令),保存原程序的PC值,并让PC执行中断服务程序的第一条指令,这里有两个问题,首先保存的PC值保存在哪里,还要就是是如何找到的中断服务程序的第一条指令(两种方式,软件查询法,硬件向量法)这里我们主要分析硬件向量法,我们可以给每一个中断请求信号进行编号,之前我们说过通过排队器(也就是多个触发器的那个)判断是那个中断源发来的信号,经过中断向量地址形成部件会形成一个向量地址,中断向量指的是函数的指针 如这里的JMP 后面的200 对应入口地址200,向量地址可以理解为指针的指针,你可能回想为何向量地址不直接与入口地址对应,若是直接与入口地址对应,那么中断服务程序的长度也就不能变化了,若是使用二级指针,我们的中断类型是一定的,并且一一对应的关系好确定,我们也只需要修改JMP 后面的便可
请添加图片描述
请添加图片描述
本节回顾
这里中断服务程序中也是有一个关中断,一个开中断,这也就保证了中断服务程序是一气呵成的,这也就是单重中断
请添加图片描述

7.3.3 多重中断

也就是在执行某个中断程序的时候,依然允许执行其他的中断服务程序
如果我们把开中断安排在保护现场的前面,也就有可能主程序的现场我们只保存了一半,又被新的中断程序中断了,导致主程序的以前的运行现场丢失
屏蔽字:用来屏蔽某些中断的,本质上也是来出来优先级的问题

中断屏蔽字
请添加图片描述
例题
请添加图片描述
本节回顾
请添加图片描述

7.3.4 程序中断方式

引入中断系统之后,如何控制IO 设备的读写工作,假设CPU正在运行一个外部设备,而这个设备正在等待输入,CPU需要通过IO指令发出启动输入的命令,外部设备就去准备CPU所需要的信息,若是对于程序查询方式,CPU需要不断轮询IO设备是否需要已经输入工作
而引入了中断系统之后,CPU会继续干以前的事情,当IO设备完成工作之后,IO设备会给CPU发送一个中断请求信号,假设之前CPU运行的那条指令的地址是K ,在K这个指令的末尾 检测到了中断请求信号,此时就要对中断请求信号进行处理,当CPU处理完这个中断之后,就会到K+1这个地址,其中的中断处理的过程,需要一个中断隐指令完成一系列的操作
在中断服务程序中,首先需要保存以前的现场(各种寄存器的值,还有屏蔽字),然后正式的对中断服务进行处理,在这时间,CPU已经取走了第一个数据,然后继续给IO设备发送输入指令,引入了中断服务程序之后,CPU与外部设备就可以并行
请添加图片描述
本节回顾
请添加图片描述

7.3.5 DMA 方式

使用这种程序中断方式,每一次IO设备准备好一个字,CPU 就需要执行一次这个中断服务程序把这个字转存到主存中,CPU执行这个中断服务程序所需要的时间开销就非常大,DMA控制器通常用来控制快速设备的,以块为单位进行读写的设备,如磁盘,也就是一次读入许多字
下图单总线结构 DMA是否能访问主存是由CPU说了算的
请添加图片描述
DMA内部结构细化
每传送完一个字,主存地址计数器以及传送长度计数器都会自动加一,中断机构与传送长度计数器之间是有一个溢出信号,意思是传送长度计数器所能表示的范围是有限的,当溢出的时候就会发出一个溢出信号,然后就会有中断请求
请添加图片描述
DMA 传送过程
预处理阶段DMA控制器指明接下来要读或者要写的内容应该存放在主存的什么位置,主存的读写寄存器(AR),还有一个用于指明设备的地址英文名叫做DAR,此外还需要指明多少个数据WC,接下来就有DMA控制器控制着数据传送的过程,对于CPU 它可以继续执行之前执行 的程序,如果此时我们要输入一个数据,设备首先要将数据写入DR这个寄存器中,同时向DMA触发器发出一个高电平型号让其变成1,当控制逻辑检测到DMA 请求,他就会向CPU申请总线的控制权(HRQ),如果系统总线可以让给DMA控制器使用的话,会给一个反馈信号(HLDA)DAM获得总线的控制器就可以通过数据线 地址线,控制线向主存发出读或者写的命令,同时把数据缓冲器DR中的数据打到数据线总线上,把主存的地址信息打到地址总线上,这样就完成了一个字的传输,然后让主存地址与传送长度计数器自动加一,传输多个字之后就会发生长度溢出,中断机构检测到之后就会发送一个中断请求,DMA在对中断型号进行处理,DMA请求与中断请求是不一样的,DMA请求表示要传送一个字 中断请求则表示一整块的数据传送已经完成了,
请添加图片描述
DMA方式的特点
三总线结构才会出现DMA 与cpu 同时访存的情况
请添加图片描述
DMA与CPU 都可以与主存进行数据的交互,但是应该是先满足主存还是先满足CPU,也就提出了用下列三种方式解决冲突
访存冲突
第三种若是CPU与DMA同时访存的时候,IO 设备优先,因为输入可能会覆盖
请添加图片描述
DMA方式与中断方式
请添加图片描述
本节回顾
请添加图片描述

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

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

相关文章

〖Python网络爬虫实战⑯〗- 网页解析利器parsel

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…

【hello Linux】进程控制

目录 1. 进程创建 2. 进程终止 3. 进程常见的退出方法 4. 进程等待 5. 进程等待的方法 6. 获取子进程status Linux🌷 1. 进程创建 fork 函数初识 在 linux 中 fork 函数是非常重要的函数,它可以从已存在进程中创建一个新进程。 新进程便是我们所说的子进…

从0到1搭建react 工程化前端项目

一、npm init 初始化包管理 1.在使用该命令之前,创建一个文件夹,例如:reactDemo2.使用在电脑终端命令行工具中,找到1创建的文件夹,并转到改文件夹指定目录;3.执行 npm init4.如图所示: 5.执行命…

云看消博会:政策、技术、玩家造就的数字化革命

配图来自Canva可画 会展作为展示地域经济、文化、技术等软硬实力的最佳舞台,在塑造城市品牌形象、加速地域经济发展中发挥着重要的促进作用。近几年,在数字经济浪潮的推动下,会展产业走上了网联化、数字化、智能化的道路,催生了不…

上货避坑指南 私域上货选品工具 无货源选品上货 采集商品详情数据API分享 详情图 sku信息

电商开店之后,第一件事就是上货了,上货其实也是有技巧的。 上传商品时我们一定要注意细节,不可忽略一些重要细节,所以商家们在上传商品前,不可忽略是否预售、标题、主图、详情页、保证金、上架时间这几个细节。 详情…

PHP实现输入数值计算幂次,输入工资,判断个人所得税的金额这两个程序的代码

目录 前言 一、输入数值计算幂次 1.1运行流程(思想) 1.2代码段 1.3运行截图 二、输入工资,判断个人所得税的金额 2.1运行流程(思想) 2.2代码段 2.3运行截图 前言 1.因多重原因,本博文有两个代码程…

【动手学深度学习】使用块的网络(VGG)

使用块的网络(VGG) 本文为李沐老师《动手学深度学习》一书的学习笔记,原书地址为:Dive into Deep Learning。 另,给自己练习时没有gpu资源的小伙伴推荐下kaggle数据科学网站,每周免费训练时长30h。 1 网络结…

Compose TextField

TextField​ Composable fun TextField(value: String,onValueChange: (String) -> Unit,modifier: Modifier Modifier,enabled: Boolean true,readOnly: Boolean false,textStyle: TextStyle LocalTextStyle.current,label: Composable (() -> Unit)? null,place…

unity,物理材质2d

介绍 2D物理材质(Physics Material 2D)是Unity中用于设置2D游戏对象的物理特性的一种方式。2D物理材质可以控制2D游戏对象的摩擦力、弹性系数等物理属性,从而影响其在物理引擎中的运动行为。以下是2D物理材质的详细介绍: 方法 摩擦力 2D物理材质的主要…

Qt+FFmpeg简单实现录屏并保存为MP4视频

一、前言 最近需要实现一个录屏功能,网上查了好多资料,最可靠的方案当然还是用FFmpeg实现,但是也踩了很多坑,包括FFmpeg版本问题,vs2019里相关编译问题,FFmpeg也不太熟悉,很多代码不太容易看懂&…

springboot+vue学生毕业离校系统(源码+说明文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的学生毕业离校系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

Flutter Android问题记录 - 升级Android Studio 2022.2.1版本后运行项目报错

文章目录 前言开发环境问题描述问题分析解决方案补充内容最后 前言 最近一个Flutter项目有新需求,开发时一直是在iOS设备上运行,花了几天做完后运行到Android设备测试,结果项目构建失败了。 开发环境 Flutter: 3.7.11Android Studio: 2022…

java工程师前景分析

本篇文章主要讲解java工程师的职业就业环境及职业剖析 作者:任聪聪 日期:2023年4月18日 java工程师目前属于很饱和的一个岗位(2023年4月18日),但也会伴随劳动市场的变化出现不饱和的情况的。 实际上对于想入行it行业的…

PHP下的MySQL的基础学习

文章目录 一、MySQL LIKE 子句二、MySQL UNION 操作符三、MySQL 排序四、MySQL GROUP BY 语句五、MySQL 连接的使用总结 一、MySQL LIKE 子句 我们知道在 MySQL 中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。…

virsh dump 内核转储 crash 分析swapper内核进程

为了节约时间&#xff0c;虚拟机配置4G内存&#xff0c;避免dump时间过长、文件过大 <memory>4194304</memory><currentMemory>4194304</currentMemory> //memory这两个值最好设成一样<vcpu>4</vcpu>vnc登录虚拟机 编写一个CPU消耗程序a.…

Word控件Spire.Doc 【字体】教程(1):在 Word 中更改字体颜色

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

【AI生产力工具】ChatPDF:将 PDF 文档转化为交互式阅读体验的利器

文章目录 简介一、ChatPDF 是什么&#xff1f;二、ChatPDF 的优势三、ChatPDF 的应用场景四、如何使用 ChatPDF&#xff1f;五、结语 简介 随着数字化时代的发展&#xff0c;PDF 文件已经成为了日常工作和学习中不可或缺的一部分。然而&#xff0c;仅仅将 PDF 文件上传或下载并…

网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式

网络抓包分析&#xff0c;IP数据报&#xff0c;MAC帧&#xff0c;ICMP报&#xff0c;ARP报格式以及不同网络通信的过程。 网络抓包工具 wireshark以太网v2MAC帧IP数据报格式ICMP报文格式ARP协议及ARP报文格式抓包分析IP数据报抓包分析icmp数据报的抓包分析ARP数据报的抓包分析 …

Windows下Release版本Qt程序生成日志和dump文件(用于程序异常崩溃检测)

文章目录 前言一、基于qInstallMessageHandler生成输出日志二、基于qBreakpad生成dump文件三、基于DbgHelp和SetUnhandledExceptionFilter生成dump文件四、示例完整代码五、下载链接总结 前言 在实际项目开发时&#xff0c;一般打包发布给客户的程序是release版本Qt程序&#…

Spark大数据处理学习笔记(2.2)搭建Spark Standalone集群

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【http://t.csdn.cn/DrziJ】 文章目录 一、在master虚拟机上安装配置Spark1.1 将spark安装包上传到master虚拟机1.2 将spark安装包解压到指定目录1.3 配置spark环境变量1.4 编辑spark环境配置文件1.5 创建slaves文件&…