四、I/O中断处理过程

四、I/O中断处理过程

1.CPU响应中断的条件和时间
(1)条件:

CPU当中的允许中断触发器EINT=1

在8086的状态寄存器中、有IF标记、这个标记就是  是否允许发生中断


开中断指令,(指令集中的指令)、将EINT设置为1
用关中断指令,将EINT设置为0或者是硬件的自动复位


(2)时间

当D=1(随机)且MASK=0时
在每条指令执行的结束阶段,CPU会进行查询是否有中断请求

外部设备提出中断的时间是随机的、只要外部设备准备好了、接口就可能会向CPU发出中断请求
但是CPU呢不能随时响应中断
在一般的机器设计中、都是在每条指令执行阶段结束时、CPU查询是否有中断请求、进行中断响应
通过查询信号、把每一个接口当中 有中断请求的那些接口、他的中断请求触发器给他置1
中断请求触发器的值被送入到排队电路、然后被送入到设备编码器进行编码



2.I/O中断处理过程

输入、都是以主机作为中心的
由外部设备把数据、通过IO中断接口电路、把它输入到主机当中来

操作的过程是这样的
首先CPU在执行主程序的过程当中
会执行到一条输入指令
这个条输入指令
要求指定的外部设备
把数据输入到主机当中

那么CPU通过这条指令
在数据线上给出设备的地址
设备地址送到接口电路当中之后
利用设备选择电路
和设备地址进行比较
如果相同
那么这个接口
以及相对应的设备就被选中了
sel型号有效
只有这个信号有效
接口电路才会开始工作

由CPU 送来启动命令
或者是对接口对设备他的控制命令
这个命令在接口当中进行译码
那么这个命令和sel信号同时有效
才会使我们的触发器b
和触发器d被设置
现在呢我们是要进行输入操作
要求外部设备把数据输入到接口当中
然后输入到主机
因此在启动命令开始启动之后
b这个寄存器 他被设置的值应该是1
表示 设备开始工作、设备忙
但同时、数据还没有准备好、所以触发器d、被设置为0
我们可以看一下这个设置的结果
触发器b 被设置为1、这个信号用于去启动设备、让设备进行工作
设备工作结束以后
他会把输入数据
送入到 接口中的输入数据缓冲器DBR

四、I/O中断处理过程_第1张图片

计算机组成原理——输入输出系统_你倒是敲代码啊.的博客-CSDN博客_计算机工作过程

  • 首先CPU通过地址线给出外部设备的地址,设备选择电路把自己的设备地址或者是端口号和地址线上的地址进行比较,如果结果相同,就说明这一次这一次启动的设备是连接在这个I/O接口上的设备。SEL信号有效。
  • 在启动命令和SEL信号都有效的情况下,我们对两个状态标记进行修改(置位或者是复位),一位是数据输入,那么CPU发出读命令,此时的设备并没有进行工作,因此B=1(设备开始工作),D=0(数据还没有准备好)。
  • 通过B=1,就会启动设备,设备就会将数据准备好,通过输入数据线(③),将数据保存到DBR,这个时候设备的工作完成。
  • 设备结束的时候,会通过设备的状态线向接口电路送入设备工作结束信号(④),这个信号会修改D和B两个标记,D=1(表示数据已经准备好),B=0(设备停止工作)。
  • 如果接口提出的中断请求没有被屏蔽,也就是MASK=0,那么MASK的非和D的信号就会送到INTR触发器的出入端,在CPU执行指令的结束阶段,会发出中断查询信号,中断查询信号会把INTR当中的信号执为1,同时启动排队器进行排队。
  • 排队器的输出信号只有一位是1,其余全部是0,这个时候在CPU的中断响应信号的作用下就会形成向量地址,向量地址会经过数据线传递给CPU,CPU利用这个地址会找到中断服务程序的入口地址,通过中断服务程序把数据取走。

你可能感兴趣的:(【计算机科学速成课】笔记,网络)