前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >I/O 方式之程序查询方式

I/O 方式之程序查询方式

原创
作者头像
一个风轻云淡
发布2024-06-21 23:25:04
1360
发布2024-06-21 23:25:04

程序查询方式是由 CPU 通过程序不断查询 I/O 设备是否已做好准备,从而控制 I/O 设备与主机交换信息。

程序查询方式:CPU与设备串行工作,传送与主程序串行工作

程序查询基本流程

采用这种方式实现主机和 I/O 设备交换信息,要求 I/O 接口内设置一个 状态标记,用来反映 I/O 设备是否准备就绪。CPU 通过检测这个标记,就可以了解 I/O 设备的准备情况。

当 I/O 设备较多时,CPU 就需要按 I/O 设备在系统中的 优先级 进行逐级查询。

为了完成这个查询的流程,CPU 通常需要执行以下 3 条指令:

  • 测试指令:用来查询 I/O 设备是否准备就绪;
  • 传送指令:当 I/O 设备准备就绪时,执行数据的传送指令;
  • 转移指令:如果 I/O 设备未准备就绪,应执行转移指令;转至测试指令,继续测试 I/O 设备的状态。

CPU和I/O设备串行工作,CPU连接I/O设备和内存,CPU需要等待,效率很低

(由CPU通过程序不断查询IO设备是否已经做好准备,从而控制IO设备与主机交换信息)

当执行一段程序,需要启动某个 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 传送,继续执行原程序。


只要一启动 I/O 设备,CPU 就不断地查询 I/O 设备的准备情况,这就会暂停原程序的执行。当 I/O 设备准备就绪后,就将数据逐个传送;直到数据全部传送结束,CPU 才重新回到原程序继续执行。

所以在程序查询方式下,CPU 和 I/O 设备是串行工作的,效率不高。

接口工作过程

以输入设备为例,数据应该从 I/O 设备传送至主机。I/O 接口的具体工作过程为:

  1. 启动输入设备:CPU通过执行一个I/O指令来启动输入设备。这个指令包含了设备码,用于通过地址线(设备选择线)选择特定的设备。
  2. 设备选择:设备选择电路比较接口的设备码和地址线上的信号。如果它们匹配,设备被选中,并输出一个有效的SEL信号。
  3. 触发器状态改变:I/O指令中的启动命令会通过逻辑门电路(如与非门)改变触发器的状态。具体来说,触发器D被置0(复位),表示上一个操作已经完成;工作触发器B被置1(置位),表示设备可以开始新的操作。
  4. 设备启动:工作触发器B的输出作为启动信号,通知输入设备开始工作。
  5. 数据传输:输入设备将数据传输到数据缓冲寄存器。这个寄存器是一个暂存区域,用于在数据传输过程中存储数据。
  6. 工作结束信号:当数据缓冲寄存器满时,输入设备会发出一个工作结束信号。这个信号将触发器D置1,表示操作完成;同时将工作触发器B置0,表示设备停止工作。
  7. 通知CPU就绪:完成触发器D的输出为1,这通知CPU输入设备已经准备就绪,数据可以读取。
  8. 数据读取:CPU执行输入指令,从数据缓冲寄存器中读取数据,并将其传输到通用寄存器中。然后,这个数据可能会被进一步存储到主存中,以供后续处理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 程序查询基本流程
  • 接口工作过程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档