程序中断方式的接口电路
mooc上今天学到了程序中断方式的接口电路,这里简单总结一下。
下图是接口电路的基本组成:
假设现在CPU执行到某条指令,该指令需要从某个设备(比如键盘)输入数据,CPU会首先发出一条启动命令,同时将参与的设备的地址放到地址总线上,每个接口会将地址总线上的地址与自己保存的设备地址进行比较(设备选择电路),判断参与数据传输的对象是否为本设备,若为本设备,则SEL为高,在启动命令的驱动下,设置两个触发器的状态:B=1(设备忙);
D=0(设备还未准备好);
设备开始准备数据,数据准备好后,将数据放到DBR(数据缓冲寄存器)中,同时设置B=0, D=1(设备已准备好)。D的输出与MASK(设备屏蔽寄存器)的输入共同决定是否能产生中断信号:若MASK=0(未被屏蔽),则INTR输出为1,也即发出中断请求,CPU收到中断请求后会发出中断相应信号,使得中断信号会被送入排队器(每个接口中都有一个,相互连接起来形成链式排队器),由排队器来判决谁可以输出中断请求(优先级最高的中断请求可以输出),排队器的输出只有1个为1,其余均为0,排队器的输出经过设备编码器(中断向量地址形成部件)后得到对应的中断向量的地址,该地址会被放到数据线上送给CPU。
与程序查询方式的接口电路相比,多了一些部件:INTR触发器,MASK触发器,排队器,设备编码器等。