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

您所在的位置:网站首页 中断响应要满足哪些条件 (计算机组成原理)第七章输入和输出系统

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

#(计算机组成原理)第七章输入和输出系统| 来源: 网络整理| 查看: 265

王道考研 计算机组成原理一:中断的基本概念

程序中断是指在计算机执行现行程序的过程中,出现某些急需要处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕之后CPU又自动返回现行程序的断点处,继续执行原程序

在这里插入图片描述

CPU在程序中安排好于某个时刻启动某台外设,然后CPU继续执行原来的程序,不需要查询方式那样一直等待设备就绪。在可以响应中断的条件下,CPU暂时中止现在执行的程序,转去执行中断服务程序为外设服务,在中断服务程序中完成一次主机与外设之间的数据传送,传送完成之后,CPU返回原来的程序

在这里插入图片描述

在这里需要注意这么一点,中断时CPU会离开原来的程序而跑去执行其他程序,那么原来的程序是如何保证执行完成的确定性?也就是说不能出现CPU回来时还有“这些程序究竟有没有执行”这样的疑问,这一点和操作系统中锁的含义类似。因此为了实现操作的原子性,我们也需要这样一把锁,保证CPU在执行一段程序时不会受到中断的干扰,或者说在这个确定的周期内CPU必须保证确确实实执行完了原来的程序,然后才能响应中断,这样的锁称之为CPU的关中断和开中断

在这里插入图片描述

如何实现呢?还记得PSW标志位吗,其中的IF(Interrupt Flag)如果为1表示开中断(也就是会响应中断信号),如果为0表示关中断(表示即便有也不会响应中断信号)

在这里插入图片描述

需要注意的是IF=0屏蔽的是普通中断,但是像掉电,关机这种中断是无法被屏蔽的,也是必须被响应的

二:中断执行流程

中断的工作流程如下

中断请求: 中断源向CPU发送中断请求信号

中断响应: 响应中断的条件

中断判优: 多个中断源同时提出请求时通过中断判优逻辑响应一个中断源

中断处理: 中断隐指令和中断服务程序

(1)中断请求

每个中断源向CPU发出中断请求的时间是随机的,因此为了记录中断时间并区分不同的中断源,中断系统需要对每个中断源设置中断请求触发器INTR,当其状态为“1”时,表示中断源有请求,这些触发器可组成中断请求标记寄存器,该寄存器可以集中在CPU中,也可以分散在各个中断源中

在这里插入图片描述A:内中断和外中断

外中断:是指来自处理器和内存以外的部件引起的中断,包括I/O设备发出的I/O中断、外部信号中断(如用户按Esc键),以及各种定时器引起的时钟中断等。外中断在狭义上一般称为中断(后文若未说明,一般是指外中断)。

内中断:是指在处理器和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断及用户态到核心态的切换等

B:硬件中断和软件中断

硬件中断:通过外部的硬件产生的中断。属于外中断

软件中断:通过某条指令产生的中断,这种中断是可以通过编程实现的。属于内中断

C:非屏蔽中断和可屏蔽中断

非屏蔽中断:是一种硬件中断,此种中断通过不可屏蔽中断请求NMI控制,不受中断标志位IF的影响,即使在关中断(IF=0)的情况下也会被响应

可屏蔽中断:也是一种硬件中断,此种中断通过中断请求标记触发器INTR控制,且受中断标志位IF的影响,在关中断情况下不接受中断请求。

(2)中断判优

中断系统在任一瞬间只能响应一个中断源的请求。由于许多中断源提出中断请求的时间都是随机的,因此当多个中断源同时提出请求时,需要通过中断判优逻辑确定相应哪一个中断源的请求

用硬件实现中断判优依靠硬件排队器

在这里插入图片描述

中断会按照优先级排布,当较高优先级发出中断时通过逻辑与非结果会使较低优先级的中断请求信号输出为0,以此完成判优

用软件实现中断判优依靠查询程序

在这里插入图片描述

硬件判优要远远快于软件判优,因此现代计算机大多采用硬件判优

不同中断有不同的优先级,这些优先级是规定好的

硬件中断属于最高级,其次是软件中断

非屏蔽中断优于可屏蔽中断

DMA请求优于I/O设备传送的中断请求

高速设备优于低速设备

输入设备优于输出设备

实时设备优于普通设备

(3)中断响应

CPU响应中断满足的三个条件

中断源有中断请求

CPU允许中断及开中断

一条指令执行完毕,且没有更紧迫的任务

(4)中断隐指令

CPU响应中断后,经过某些操作,就会转去执行中断服务程序,这些操作是由硬件直接实现的,我们将其称为中断隐指令

在这里插入图片描述

中断隐指令并不是指令系统中的一条真正的指令,它没有操作码,所以中断隐指令是一种不允许也不可能为用户使用的特殊指令,其完成的操作如下

关中断:在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕后能接着正确地执行

保存断点:为保证在中断服务程序执行完毕后能正确地返回原来的程序,必须将原来程序的断点(即PC的内容)保存起来。这一点我们在(计算机组成原理)第五章中央处理器-第二节:指令执行过程(取指周期、间址周期、执行周期和中断周期)中有过详细介绍

引出中断服务程序:其实质是取出中断服务程序的入口地址并传送给程序计数器PC

其中确定中断服务器程序的入口地址共有如下两种方法

软件查询法

硬件向量法

CPU必须找到中断服务程序的入口地址,称之为中断向量,把系统中的全部中断向量集中存放到存储器的某个区域内,这个存放中断向量的存储器称之为中断向量表,也即服务程序入口地址表

在这里插入图片描述

硬件向量法则依靠咋们前面说过的排队器,每一个中断服务被响应会有其对应的输入,由中断向量地址形成部件映射后会形成独特的向量,接着就会由向量地址找到对应的入口地址

在这里插入图片描述

注意

中断向量可以理解为函数的指针

中断向量地址就是指向函数指针的指针

在这里插入图片描述(5)中断处理

中断服务程序的主要任务如下:这部分可结合CPU那一章的中断周期理解——(计算机组成原理)第五章中央处理器-第二节:指令执行过程(取指周期、间址周期、执行周期和中断周期)

保护现场: 保存通用寄存器和状态寄存器的内容(即保存ACC寄存器的值),以便返回原程序后可以恢复CPU环境,可以使用堆栈,也可以使用特定存储单元

中断服务: 主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲寄存器 (中断服务的过程中有可能会修改ACC寄存器的值)

恢复现场: 通过出栈指令或取数指令把之前保存的信息送回寄存器中

中断返回:通过中断返回指令回到原程序断点处

总结:执行流程请添加图片描述三:多重中断和中断屏蔽技术(1)单重中断和多重中断

单重中断:CPU在执行中断服务程序的过程中,又出现了新的更高优先级的中断请求,而CPU对新的中断请求不予响应

多重中断:CPU在执行中断服务程序的过程中,又出现了新的更高优先级的中断请求,若CPU暂停现行的中断服务程序,转去执行新的中断请求

在这里插入图片描述

实现多重中断需要格外注意关中断和开中断的时机,以及屏蔽字(中断屏蔽技术)

在这里插入图片描述(2)中断屏蔽技术

多重中断虽然支持暂停一个中断服务程序然后再响应另一个中断,但不是所有中断都会响应,像键盘这些低速设备优先级并不高,所以就需要一个屏蔽字,指明接下来哪些中断信号应该被忽视

中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,需要满足下列条件

在中断服务程序中提前设置开中断指令

优先级别高的中断源有权中断优先级低的中断源

每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字

在这里插入图片描述

一般用1表示屏蔽,0表示正常申请

每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)

屏蔽字中1越多,优先级越高。每个屏蔽字中至少有一个1(起码不能自己屏蔽自己)

设某机有4个中断源A、B、C、D,/其硬件排队优先次序为A>B>C>D,现要求将中断处理次序改为D>A>C>B。1)写出每个中断源对应的屏蔽字。2)按下图所示的时间轴给出的4个中断源的请求时刻,画出CPU执行程序的轨迹。设每个中断源的中断服务程序时间均为20us。

在这里插入图片描述四:程序中断方式

讲完了前面那么多关于中断的预备知识后,现在回归主题——引入中断系统后如何控制I/O系统的数据读写工作

在正常情况下,CPU正在运行某段程序,该程序有可能使用到外部设备,比如从该外部设备输入一个字符的数据,因此首先向该I/O设备发出I/O指令,用于启动,接着外部设备就会工作去准备CPU想要的数据和信息,在外部设备准备信息的过程中,CPU可以继续工作。当I/O设备完成工作后,会给CPU发送一个中断请求信号,如下图,CPU在K处检测到了信号,于是对其进行处理,处理完成之后返回K+1位置,以此类推

在这里插入图片描述

假定CPU主频为50MHz,CPI为4。设备D采用异步串行通信方式向主机传送7位ASCII字符,通信规程中有1位奇校验位和1位停止位,从D接收启动命令到字符送入I/0端口需要0.5ms。设备D采用中断方式进行输入/输出,示意图如下:

在这里插入图片描述

 I/0端口每收到-个字符申请一次中断,中断响应需10个时钟周期,中断服务程序共有20条指令,其中第15条指令启动工作。若CPU需从D读取1000个字符,则完成这一-任务所需时间大约是多少个时钟周期? CPU用于完成这一任务的时间大约是多少个时钟周期?在中断响应阶段CPU进行了哪些操作?

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3