Skip to content

408 > ### 计算机组成原理 > #### 程序查询方式


一、定位信息

项目内容
知识单元编号CO-06-05
所属章节第六章 总线与I/O系统
核心主题程序查询方式的工作原理、流程与特点
考试权重★★☆(基础考点,常与其他I/O方式对比出题)
前置知识CO-06-04 I/O接口
后续衔接CO-06-06 中断方式、CO-06-07 DMA方式

二、知识点讲解

2.1 程序查询方式的基本概念

程序查询方式(Programmed I/O) 又称程序控制I/O方式轮询方式,是最基本的I/O数据传送方式。在这种方式下,CPU通过执行程序不断查询外设的状态,当检测到外设"就绪"时,CPU才执行数据传送操作。

其核心思想是:CPU主动询问,外设被动等待。CPU在整个I/O过程中始终参与,不能做其他工作。

2.2 程序查询方式的工作流程

程序查询方式的典型工作流程如下:

┌─────────────────┐
│  CPU发出设备地址  │ ← 选择要查询的设备
│  和读/写命令     │
└────────┬────────┘


┌─────────────────┐
│  CPU读取状态寄存器│ ← 查询设备状态
└────────┬────────┘


┌─────────────────┐
│   设备就绪?     │
│  是 → 执行数据传送│
│  否 → 继续轮询   │ ← 忙等待(Busy Waiting)
└────────┬────────┘


┌─────────────────┐
│  传送完成?      │
│  是 → 结束       │
│  否 → 返回查询   │
└─────────────────┘

详细步骤

  1. CPU发出设备选择信号:通过地址总线发送设备地址,选中目标设备接口
  2. CPU发出命令字:通过控制总线发送读/写命令到接口的控制寄存器
  3. CPU读取状态寄存器:通过数据总线读取接口的状态寄存器内容
  4. 判断设备状态:检查"就绪位"(Ready)是否为1
  5. 若未就绪:返回步骤3继续轮询(忙等待)
  6. 若就绪:CPU执行数据传送(从数据缓冲寄存器读取或写入数据)
  7. 判断是否完成:若还有数据要传送,返回步骤3;否则结束

2.3 程序查询方式的特点

优点

  • 实现简单,不需要额外的硬件支持
  • 控制逻辑简单,易于理解和编程
  • 可靠性高,数据传送完全由程序控制

缺点

  • CPU利用率极低:CPU在轮询等待期间不能执行其他任务,大量时间浪费在查询状态上
  • 实时性差:外设准备好后必须等待CPU查询到才能传送,不能及时响应
  • 不适合多设备环境:CPU需要逐一查询各设备,设备越多,每个设备的响应延迟越大
  • 不能处理紧急事件:低优先级的设备查询可能延迟高优先级设备的响应

2.4 程序查询方式的适用场景

  • CPU速度远高于外设速度,且外设数量少
  • 对实时性要求不高的简单系统
  • 嵌入式系统中简单的I/O控制
  • 作为理解其他I/O方式的基础

2.5 程序查询方式的效率分析

设:

  • T_query = 一次状态查询的时间
  • T_transfer = 一次数据传送的时间
  • T_device = 外设准备好一次数据的时间

则 CPU 用于数据传送的时间占比为:

CPU效率=TtransferTquery×N+TtransferCPU效率 = \frac{T_{transfer}}{T_{query} \times N + T_{transfer}}

其中 N 是查询次数(取决于外设速度与查询速度的比值)。通常 N 很大,导致CPU效率极低。


三、记忆辅助

  1. 程序查询 = "CPU自己问":CPU主动轮询设备状态,设备准备好就传,没准备好就一直问。CPU全程参与,不能干别的。

  2. 核心缺点一句话"CPU忙着问,没空干别的" → CPU利用率低、实时性差。

  3. 工作流程三步循环"发命令→读状态→判断就绪",不就绪就一直循环。

  4. 与中断方式对比:程序查询是"我去找你",中断方式是"你来找我"。


四、例题精解

例题1

题目:某系统采用程序查询方式从磁盘读取数据。磁盘每次传输一个扇区(512字节),磁盘转速为7200转/分,平均寻道时间为8ms。CPU查询一次状态需要1μs,数据传送一次(1字节)需要0.5μs。求CPU读取一个扇区数据的效率(CPU用于数据传送的时间占总时间的比例)。

四步解题

Step 1 审题:程序查询方式,读取512字节,磁盘参数已知,求CPU效率。

Step 2 知识定位:程序查询方式下,CPU在等待期间不断查询状态,效率 = 数据传送时间 / 总时间。

Step 3 计算

磁盘等待时间(旋转延迟):

  • 转速 7200转/分 = 120转/秒
  • 平均旋转延迟 = 1/(2×120) ≈ 4.17ms

总等待时间(不含数据传送):

  • 寻道时间 + 旋转延迟 = 8ms + 4.17ms = 12.17ms

查询次数估算:

  • 等待期间查询次数 = 12.17ms / 1μs = 12170次
  • 查询总时间 = 12170 × 1μs = 12.17ms

数据传送时间:

  • 512字节 × 0.5μs/字节 = 256μs = 0.256ms

CPU效率 = 数据传送时间 / (查询时间 + 传送时间) = 0.256ms / (12.17ms + 0.256ms) = 0.256 / 12.426 ≈ 2.06%

Step 4 答案:CPU效率约为 2.06%,说明程序查询方式下CPU绝大部分时间在"忙等待",效率极低。


例题2

题目:某系统有两个外设A和B,采用程序查询方式进行I/O。设备A每10ms准备好一个数据,设备B每5ms准备好一个数据。CPU查询每个设备需要1μs,数据传送需要2μs。若CPU轮流查询A和B,求:(1) 设备A和设备B的最大响应延迟;(2) 这种方式有何问题?

四步解题

Step 1 审题:两设备轮流查询,分析响应延迟。

Step 2 知识定位:程序查询方式下,设备准备好后必须等到CPU查询到它时才能传送数据。

Step 3 分析

一个完整查询周期 = 查询A + 传送A(若就绪) + 查询B + 传送B(若就绪)

  • 最坏情况(都就绪):1μs + 2μs + 1μs + 2μs = 6μs
  • 最好情况(都不就绪):1μs + 1μs = 2μs

设备A的最大响应延迟 = 从A准备好到CPU下次查询A的时间

  • 最坏情况:A刚好在CPU查询完A之后准备好,需要等待一个完整周期
  • 最大延迟 ≈ 一个查询周期 ≈ 6μs(远小于A的10ms数据间隔,可接受)

设备B的最大响应延迟:

  • 最大延迟 ≈ 6μs(同理,远小于B的5ms数据间隔)

问题分析:

  • 在设备数量增加时,查询周期变长,每个设备的响应延迟增大
  • 如果有100个设备,最坏情况下响应延迟可能达到几百微秒
  • CPU效率随设备数量增加而降低

Step 4 答案: (1) 设备A和B的最大响应延迟均约为 6μs(一个完整查询周期) (2) 问题:设备数量增加时,查询周期变长,响应延迟增大;CPU效率进一步降低;不适合大量高速设备。


五、考情分析

维度分析
出题频率近10年约出现5-6次
题型选择题(特点辨析)、计算题(效率分析)
难度★★☆(概念简单,计算需细心)
考查重点程序查询的工作流程;CPU效率计算;与中断方式的对比
命题趋势常与中断、DMA方式对比出综合题

六、易错点

  1. 程序查询≠程序中断:两者都是程序控制的I/O方式,但程序查询是CPU主动轮询,中断是设备主动通知CPU。关键词区别:查询→"轮询/忙等待";中断→"中断请求/中断服务"。

  2. CPU效率低的根源:不是因为数据传送慢,而是因为等待期间CPU在不断查询状态(忙等待),这些查询时间是"浪费"的。

  3. 查询次数的计算:查询次数 = 外设准备时间 / 单次查询时间。这个数字通常很大(上万次),是效率低的直接原因。

  4. 程序查询方式的"实时性差":不是说数据传得慢,而是说设备准备好后不能立即被CPU响应,必须等到CPU查询到它。


七、来源标注

来源说明
《计算机组成原理》(唐朔飞)第8章 I/O系统,程序查询方式
《计算机组成原理》(蒋本珊)第7章 程序查询方式
408统考大纲第六章 总线与I/O系统 - 程序查询方式
历年真题2010/2013/2016/2019年相关题目

考研全科复习资料 - 基于2026考研统考大纲