计算机组成原理 第四章(输入输出系统)—第四节(程序查询方式)

 写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、概述

1、三条相关指令

(1)测试指令:用来查询I/O设备是否准备就绪。

(2)传送指令:当I/O设备已准备就绪时,执行传送指令,开始数据传送。

(3)转移指令:若I/O设备未准备就绪时,执行转移指令转至测试指令,继续测试I/O设备的状态。

2、两种查询方式

(1)独占查询:启动I/O设备后,CPU 100%的时间都在查询I/O状态。

(2)定时查询:启动I/O设备后,在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态,查询的间隔内CPU可以执行其它程序。(两种方式的共同点较多,下面仅介绍独占查询)

3、程序查询方式的查询流程

(1)下左图所示的是多个I/O设备的查询流程(图中设备的优先顺序按1至N降序排列),下右图所示的是单个I/O设备的查询流程。

(2)以单个I/O设备的查询流程为例,当需要启动某一I/O设备时,必须将该程序插入现行程序中,该程序包括如下几项,其中①~③为准备工作。

由于这种方式传送数据时要占用CPU中的寄存器,故首先需将寄存器原内容保护起来(如果该寄存器中存有有用信息)。

由于传送往往是一批数据,因此需先设置I/O设备与主机交换数据的计数值。

设置欲传送数据在主存缓冲区中的首地址。

CPU启动I/O设备。

将I/O接口中的设备状态标志取至CPU并测试I/O设备是否准备就绪,如果未准备就绪则等到准备就绪为止,当准备就绪时就可实现传送。对输入而言,准备就绪意味着接口电路中的数据缓冲寄存器已经装满欲传送的数据,称为输入输入缓冲满,CPU即可取走数据;对输出而言,准备就绪意味着接口电路中的数据已被取走,故称为输出缓冲空,这样CPU可再次将数据送到接口,设备可再次从接口接收数据。

CPU执行I/O指令,或从I/O接口的数据缓冲寄存器中读出一个数据,或把一个数据写入I/O接口中的数据缓冲寄存器内,同时将接口中的状态标志复位。

修改主存地址,以便传送下一个数据。

修改计数值,若原设置计数值为原码则依次减1,若原设置计数值为负数的补码则依次加1。

判断计数值,若计数值不为0则表示一批数据尚未传送完,需要重启外设继续传送;若计数值为0则表示一批数据传送完毕,结束I/O传送,继续执行现行程序。

二、程序查询方式的接口电路

1、程序查询方式接口电路的基本组成

        上图所示的工作流程是以输入为例的。

        图中设备选择电路用以识别本设备地址,当地址线上的设备号与本设备号相符时,SEL有效,可以接收命令。数据缓冲寄存器用于存放欲传送的数据。D是完成触发器,B是工作触发器。

2、接口工作过程(以输入为例)

(1)当CPU通过I/O指令启动输入设备时,指令的设备码字段通过地址线送至设备选择电路。

(2)若该接口的设备码与地址线上的代码吻合,其输出SEL有效。

(3)I/O指令的启动命令经过“与非”门将工作触发器B置“1”,将完成触发器D置“0”,表示I/O设备正处于准备状态

(4)由B触发器启动设备工作。

(5)输入设备将数据送至数据缓冲器。

(6)由设备发设备工作结束信号,将D置“1”、B置“0”,表示外设准备就绪。

(7)D触发器以“准备就绪”状态通知CPU,表示“数据缓冲满”。

(8)CPU执行输入指令,将数据寄存器中的数据送至CPU的通用寄存器,再存入主存相关单元。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zevalin爱灰灰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值