程序查询方式
程序查询流程
程序查询方式的核心问题在于每时每刻需不断查询I/O设备是否准备就绪。
当I/O设备较多时,CPU需要按各个I/O设备在系统中的优先级别进行逐级查询,为了完成查询需要执行以下的三种命令
- 测试指令,用来查询I/O设备是否准备就绪
- 传送指令,当I/O设备准备就绪时,执行传送指令。
- 转移指令,若I/O设备未准备就绪,执行转移指令,转至测试指令,转至测试指令,继续测试I/O设备的状态。
其中设置计数值是指控制传输数据量,设置主存缓冲区首址是保存数据或缓存数据,从首地址开始。
- 由于这种方式传送数据时要占用CPU的寄存器,故首先需将寄存器原内容保存起来(若该寄存器中存有有用信息)
- 由于传送往往是一批数据,因此需先设置I/O设备与主机交换数据的计数值。
- 设置欲传送数据在主存缓冲区的首地址。
- CPU启动I/O设备
- 将I/O接口的设备状态标志取至CPU并测试I/O设备是否准备就绪。如果没有准备就绪,等到其准备就绪为止。当准备就绪的时候,接着可实现传送。例:对输入而言,准备就绪就意味着接口电路中的数据缓冲寄存器已装满欲传送的数据,称为输入缓冲满,CPU即可取走数据。
- CPU执行I/O命令,或从I/O接口的数据缓冲寄存器中读出一个数据,或把一个数据写入I/O接口中的数据缓冲寄存器内,同时将接口中的状态标志复位。
- 修改主存地址
- 修改计数值
- 判断计数值
- 结束I/O传送,继续执行现行程序。
程序查询方式的接口电路
其中DBR:数据缓冲寄存器 D是完成工作触发器,B是工作触发器。
接口的工作过程:
- 当CPU通过I/O指令启动输入设备时,指令的设备码字段通过地址线送至设备选择电路中
- 若该接口的设备码与地址线上的代码吻合,其输出的SEL有效
- I/O指令的启动命令经过“与非”门将工作触发器B置“1”,将完成触发器D置为“0”.
- 由B触发器启动设备工作
- 输入设备将数据送至数据缓存寄存器(4、5步CPU在原地踏步,不断查询)
- 由设备发设备工作结束信号,将D置为“1”,B置为“0”,表示外设设备准备就绪。
- D触发器以“准备就绪”状态通知CPU,表示“数据缓冲满”。
- CPU执行输入命令,将数据缓冲寄存器中的数据送至CPU的通用寄存器,再存入主存相关单元