I/O 计算

梳理总线、接口、中断与 DMA 的分工,讲解 CPU 开销、传送能力和总线时间计算。

I/O 题围绕设备与主存之间的数据传送展开。设备何时准备好、谁搬数据、CPU 为此忙多久,是三个相关但不同的问题。查询、中断和 DMA 的区别,也要放在这条传送路径里理解。

这个板块包含哪些知识

参照输入输出系统图谱,先认识连接关系,再分析传送方式:

  • 总线与接口:数据、地址、控制信号;状态、控制和数据端口;总线宽度、频率、事务与突发传送。
  • I/O 控制方式:程序查询、程序中断、DMA,以及各阶段 CPU 和控制器的分工。
  • 中断机制:请求、响应、现场保存与恢复、屏蔽和优先级,硬件动作与软件处理的边界。
  • 操作系统 I/O:驱动、设备独立软件、缓冲和进程唤醒。
  • 设备性能:传输率、处理开销与磁盘的寻道、旋转、传输时间。

计算时要分开看数据传输量、CPU 工作量、经过的实际时间。DMA 搬运数据不需要 CPU 执行逐字传送指令,但仍占用总线,也需要初始化和完成处理。磁盘调度的完整题型见文件系统与磁盘。

常见考点与题型

综合题可能组合下面几类小问。先看要求求什么,再确定需要调用哪些知识。

题型题干中的线索解题思路
CPU 开销与占用率速率、单次指令数或周期数求每秒需要处理几次,再乘单次 CPU 时间;查询次数按轮询规则确定
方式是否可行设备准备间隔、响应时间、缓冲容量比较服务能力与数据到达速度;有缓冲或重叠时按题设另建时间线
DMA 与总线传输块大小、总线宽度、突发长度区分每块完成次数、总线事务次数和事务中的数据拍数
带宽与传送时间主频、宽度、总线周期、等待周期按一次事务的有效字节与耗时求带宽,再核对设备和内存瓶颈
中断与软件分工动作排序、硬件或软件、驱动归属沿请求到完成的过程定位动作,按题设处理器的机制说明职责

解题前要弄清的关系

在 408 常见的单设备、无并行重叠简化题中,一次 I/O 可按下面的路径分析;三种方式的区别包括如何检测就绪,以及第 4 步由谁搬运数据。若题目出现总线竞争、周期窃取或多设备并行,应以题设为准。

一、路径

  1. CPU 通过 I/O 接口下发命令字 —— 接口里有三类寄存器:状态、控制、数据缓冲,见 I/O 接口
  2. 设备准备一个传送单位(准备时间由数据传输率决定)
  3. 通知 CPU 数据就绪:程序查询 / 程序中断,或由 DMA 控制器管理传送,见 I/O 方式
  4. 传送这个单位:查询与中断经 CPU 寄存器搬,DMA 由控制器直接与主存交换,见 DMA 方式
  5. 全部传完后收尾:中断次数按设备与缓冲机制确定;常见简化题设为每单位一次中断、DMA 每块完成一次中断

二、三种方式的分工边界

方式CPU 每次花在什么上数据传送阶段占 CPU 吗
程序查询查询和传送的那几条指令占
程序中断中断响应 + 中断服务程序占
DMA只有预处理和后处理不占,由 DMA 控制器搬

三、中断响应这一段的软硬件分界(选择题的固定落点)

  1. 硬件(中断隐指令):关中断 → 保存断点 PC 与 PSW → 切内核态 → 按向量转入
  2. 软件(中断服务程序):保存其余现场 → 具体传送 → 恢复现场 → 开中断返回

见 中断处理流程。

四、磁盘这一段是独立的时间模型

平均存取时间 = 寻道 + 旋转延迟 + 传输 + 控制器延迟,见 磁盘性能指标。

五、总线是所有传输率的上限

总线带宽 = 总线宽度(字节)× 总线时钟频率 ÷ 一次传送占用的时钟周期数
一次突发传送 = 一次寻址 + 连续若干个数据传送周期

三种问法各对应一个除法:**「至少需要多大主存带宽」用每秒要搬的字节数(2012#43 由每秒缺失次数反推)、「一个主存块要几次突发传送」用块大小除以一次突发能传的字节数(2013#43)、「总线请求几次」**用传送总量除以总线宽度(2022#44)。见 总线指标、突发总线传输事务、总线周期。

各类题的解法

CPU 占用率:次数乘单次处理开销

1. 一次传送多少字节?—— 看 I/O 接口数据缓冲寄存器的宽度,或总线宽度
2. 每秒传送多少次?  —— 数据传输率 ÷ 一次传送的字节数
3. 一次花多少周期?  —— 指令条数 × CPI,或题目直接给

CPU 占用率 = 次数 × 单次周期数 ÷ 主频

分子分母都统一成「周期 / 秒」,就不会算错量级。在上述简化假设下,查询和中断把传送本身也算进 CPU 时间,DMA 只算预处理和后处理;DMA 仍会占用总线带宽。

DMA 题有几种不同层次的“次数”,需要区分:按数据块算的是 DMA 请求次数和结束中断次数,每次只传一个总线字时,按总线宽度算的是总线事务次数;突发方式另看每次可连续传多少字。2022#44 问的是后者——一个 512B 扇区按 64 位总线要请求 64 次。

可行性:比较到达速度与服务能力

在单缓冲、数据持续到达且不能暂停的题设下,比较设备准备一个传送单位的间隔与该方式的单次响应处理时间;若来不及处理,会发生覆盖或丢失。有 FIFO、多缓冲或突发到达时,还需分析缓存容量和积压。

2018#43 第 2 问是这个套路最干净的样本:设备 B 传输率 40MBps,接口是 32 位缓冲寄存器,准备 4 字节需 4B ÷ 40MBps = 0.1μs;而中断响应加处理需 400 ÷ 500MHz = 0.8μs。0.1 < 0.8,所以设备 B 不能用中断方式。

同一道题的第 1 问和第 3 问则用上面的模型算出查询方式和 DMA 方式的 CPU 占用率都是 4%——这说明占用率相同的两种方式,可行性可以完全不同。

磁盘时间必须四项齐全

平均存取时间 = 寻道时间 + 旋转延迟(随机到达时平均转半圈)+ 传输时间 + 控制器延迟(题目给了才加)

调度题只数磁头移动的磁道数:SCAN 要走到端点再折返,CSCAN 回端点的那一整段位移也要计入,起点上就有的请求距离记 0。见 磁盘性能指标 和 磁盘调度算法。

单位统一

  • 优先采用题设对 MB / MiB 的定义;常见题中传输率 MB/s 取 10⁶ B/s,容量常按 2²⁰ B 换算,不能不看约定直接混用;
  • 转速先换成一圈多少毫秒:60 ÷ rpm;
  • 主频、周期数、时间三者只保留一种,全部化到「周期 / 秒」再相除。

除了单位,还要检查处理次数、缓冲条件和并行重叠。每个中间结果都带上单位,便于复核量纲。

总线与 DMA:明确“一次”指什么

假设按题设每次总线事务只传一个 64 位字,传完 512 B 需要 512÷8=64 次事务;若每次获总线后可突发传 8 个字,则是 8 次突发事务、64 个数据拍。两者传输字节数相同,寻址和仲裁开销却可能不同。

所以先分别列出块数、每块事务数、每事务数据拍数,再计算 DMA 完成中断次数和总线占用时间。“每块中断一次”不能推出“每块只请求总线一次”。题干若不允许最后一拍传部分数据,次数还要向上取整。

概念题的高频落点

选择题这部分几乎不考计算,考的是分工边界:

问的是边界在哪去处
哪些动作由硬件完成关中断、保存断点、切态、转向量中断处理流程
哪些由操作系统完成保存其余现场、建中断向量表、设备分配I/O 软件层次
外部中断还是内部异常事件来自 CPU 之外还是指令执行内部异常
多重中断谁先被处理响应优先级与屏蔽字是两件事中断屏蔽
哪些工作在驱动程序里CHS 换算、下发命令字CHS 地址

上一页:CPU 与指令系统;下一页:进程同步与信号量。