计算机组成原理---程序查询方式Li

程序查询流程

程序查询方式的核心在于CPU每时每刻都需要不断的查询I/O设备是否准备就绪。为了能够正确的完成这种查询,通常需要执行以下三条指令。

  • 测试指令,检查状态标记。
  • 传送指令,I/O设备已准备就绪,执行传送指令,开始交换数据。
  • 转移指令,I/O设备未准备就绪。

单个设备

单个I/O设备的查询流程,当CPU执行到一个输入输出指令,由这个输入输出指令发出启动设备的命令,相应的设备接受到这个命令以后就开始进行数据准备,数据准备好以后在传输给CPU。
CPU发起设备启动命令后就开始检查状态标记,看I/O设备是否已经准备就绪。如果准备就绪将与CPU进行数据传输,如果没有准备好将进入循环,直到I/O设备准备就绪。
在这里插入图片描述

多个设备

多个设备与单个设备相同,按照优先级依次向后进行处理。
在这里插入图片描述

程序流程

  1. 要完成内存与外部设备之间的输入输出,需要借助CPU中的寄存器,所以先将寄存器原内容保护起来。
  2. 由于传送往往是一批数据,因此需要先设置I/O设备与主机交换数据的计数值。
  3. 设置欲传送数据在主存缓冲区的首地址。
  4. CPU执行到一个输入输出指令,由这个输入输出指令发出启动设备的命令,启动I/O设备。
  5. 单个设备的查询流程,对于输入而言,准备就绪意味着接口电路中的数据缓冲寄存器已经装满欲传送数据,称为缓冲满,CPU即可取走数据;对于输出而言,准备就绪意味着接口电路中的数据已被设备取走,这样CPU可再次将数据送到接口,设备可再次从接口接收数据。
  6. CPU执行I/O指令,或从I/O接口的数据缓冲寄存器中读出一个数据,或把一个数据写入到I/O接口中的数据缓冲寄存器内,同时将接口中的状态标志复位。
  7. 修改主存地址。
  8. 修改计算值,如果设置计算值为原码,则依次减1,若设置为补码,则依次加1。
  9. 判定计数值是否为0,如果为0,则说明这一批数据已经传送完了,如果不为0,说明数据尚未传送完,重新启动外部设备继续传送。
  10. 结束I/O传送,继续执行现行程序。

在这里插入图片描述

程序查询的接口电路

1、CPU通过I/O指令启动输入设备,指令设备码通过地址线,送至设备选择电路,设备选择电路确定参加传输的I/O设备。
2、启动命令与SEL信号有效时,B置为1,D置为0,这时启动设备
3、设备输入的数据保存到数据缓冲寄存器(DBR)
4、设备发出结束信号,B置为0,D置为1,这时说明数据已经准备好了,可以传输数据了。
5、CPU查询到D为1时,说明数据已经被放入DBR中,CUP根据数据线,把这个数据送至CPU通用的寄存器,再存入主存当中。
在这里插入图片描述

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xpq_lrh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值