程序查询的方式的核心问题在于每时每刻需不断查询I/O设备是否准备就绪。
程序查询流程
当I/O设备较多时,CPU需按各个I/O设备在系统中的优先级别进行逐级查询。
查询流程:
为了正确的完成这种查询,通常要执行以下三条指令:
-
测试指令,用来查询I/O设备是否准备就绪。
-
传送指令:当I/O设备已准备就绪时,执行传送指令。
-
转移指令:若I/O设备未准备就绪,执行转移指令,转至测试指令,继续测试I/O设备的状态。
程序流程
当需要启动某一I/O设备时,必须将该程序插入现行程序中,该程序包括:
-
由于这种方式传送数据时要占用CPU中的寄存器,故首先需将寄存器原内容保护起来(若该寄存器中存有有用信息)。
-
由于传送往往是一批数据,因此需先设置I/O设备与主机交换数据的计数值。
-
设置欲传送数据在主存缓冲区的首地址。
-
CPU启动I/O设备。
-
将I/O接口中的状态标志取至CPU并测试I/O设备是否准备就绪。
- 未准备就绪,等待直到准备就绪为止。
- 准备就绪,接着可实现传送。
-
CPU执行I/O指令,从I/O接口的数据缓冲寄存器中读出一个数据,或把一个数据写入I/O接口中的数据缓冲寄存器内,同时将接口中的状态标志复位。
-
修改主存地址
-
修改计数值,若原设置技术值为原码,则一次减1;
若原设置计数值为负数的补码,则依次加1。 -
判断计数值。若计数值不为0,表示一批数据尚未传送完,重新启动外设继续传送;
若计数值为0,则表示一批数据已传送完毕。 -
结束I/O传送,继续执行现行程序。
程序查询方式的接口电路:
工作过程:
- 指令的设备码字段通过地址线送到设备选择电路。
- 设备码与地址线上的代码吻合,其输出SEL有效。
- I/O指令的启动命令经过"与非"门,将工作触发器B置“1”,将完成触发器D置“0”。
- B触发器启动设备工作。
- 输入设备将数据送至数据缓冲寄存器(DBR)。
- 由设备发设备工作结束信号,将D置“1”,B置“0”,表示外设准备就绪。
- D触发器将“准备就绪”状态通知给CPU,表示“数据缓冲慢”。
- CPU执行输入指令,将数据缓冲寄存器中的数据传送至CPU的通用寄存器,再存入主存相关单元。
程序中断方式:
I/O中断的产生:
程序中断方式的接口电路:
1.中断请求触发器和中断屏蔽触发器
2.排队器
3.中断向量地址形成部件
4.程序中断方式接口电路的基本组成
中断处理过程:
DMA方式
DMA方式的特点