跳转至

第 6 章 互连及输入输出组织

依据:袁春风《计算机组成原理》(2016 年版)第 6 章及配套自考大纲。下文编号指大纲“考核内容与考核要求”;教材算例为学习辅助,不是真题。

复习导航:大纲要求与笔记位置

大纲条目 层次 位置 学完应能做到
1 输入输出设备 领会 第 1 节 说明键盘、鼠标、打印机、显示器的工作原理及共同点
2 外部存储器 领会 第 2 节 说明磁盘主要技术指标与记录格式、RAID 原理、U 盘与 SSD 特点
3 外设与 CPU、主存的互连 识记、领会、简单应用 第 3 节 给出总线相关术语,说明互连方式,计算各类总线带宽
4 I/O 接口 识记、领会 第 4 节 说明接口功能与通用结构,区分接口与端口、独立编址与统一编址
5 I/O 数据传送控制方式 领会、简单应用 第 5 节 说明查询、中断、DMA 的特点与流程,计算三种方式的 CPU 开销

第 3、5 条包含带宽与 CPU 开销等简单应用;第 5 条还要求理解中断响应条件、断点与现场、屏蔽和优先级的区别。

本章学习目标

本章讨论 CPU、主存与外设如何交换数据,依次介绍总线互连、I/O 接口,以及查询、中断、DMA 三种数据传送方式。

计算重点包括磁盘访问时间、同步总线及 DDR/QPI/PCIe 带宽,以及查询、中断、DMA 的 CPU 时间占比。机制部分则需理清中断响应次序、屏蔽字对嵌套处理的影响,以及 DMA 如何取得总线使用权并直接传输数据。

1 输入和输出设备(1,领会)

输入设备把操作或外部物理量转换为编码,如键盘识别按键、鼠标记录位移与按键状态;输出设备把主机数据转换为文字、图像或声音,如显示器和打印机。外设通过 I/O 接口交换数据、命令和状态。

计算显示器显存容量与带宽时,可用下面的无压缩帧数据量公式:

\[\text{一帧画面最低数据量(字节)} = \text{水平像素数} \times \text{垂直像素数} \times \frac{\text{色深(每像素位数 bpp)}}{8}\]

算例:分辨率为 \(1920 \times 1080\),色深为 24 位,即每像素 \(3\ \text{B}\)。一帧无压缩画面至少需要 \(1920 \times 1080 \times 3 = 6\,220\,800\ \text{B} \approx 6.22\ \text{MB}\)。

若刷新率为 \(60\ \text{Hz}\),每秒的原始像素数据量约为 \(6.22\ \text{MB} \times 60 = 373.2\ \text{MB/s}\)。显示器分辨率表示画面的像素行列数;打印机的 dpi(每英寸点数)表示单位长度上的打印点数,两者不是同一指标。

2 外部存储器(2,领会)

传统磁盘模型把盘面划分为同心圆形的磁道。不同盘面上半径相同的磁道合称一个柱面;每条磁道又分为多个扇区,常见数据容量为 \(512\ \text{B}\) 或 \(4\ \text{KB}\)。扇区还需存储同步、地址和 CRC/ECC 校验信息,所以其格式化容量小于只统计用户数据时的原始容量。

在理想均匀记录模型下,整盘格式化容量为:

\[\text{格式化容量} = \text{有效记录盘面数} \times \text{每面磁道数} \times \text{每道扇区数} \times \text{每扇区字节数}\]

读写一次磁盘扇区,总耗时由三段机械与传输时间(再加上题目可能给定的磁盘控制器开销)相加:

\[\text{平均存取时间} = \text{平均寻道时间} + \text{平均旋转等待时间} + \text{数据传输时间} \ (+ \text{控制器开销})\]

磁盘转速为 \(r\ \text{r/min}\)(RPM)时,每秒转 \(r / 60\) 圈,转一圈需 \(\dfrac{60}{r}\) 秒。若目标扇区相对当前位置均匀分布,平均旋转等待为半圈,即 \(\dfrac{30}{r}\) 秒。

算例:磁盘转速为 \(7200\ \text{RPM}\),转一圈需 \(60 / 7200\ \text{s} \approx 8.333\ \text{ms}\),平均旋转等待约为 \(4.167\ \text{ms}\)。若平均寻道时间为 \(8\ \text{ms}\),读取 \(64\ \text{KB}\) 数据,传输率为 \(128\ \text{MB/s}\),则按本笔记的 1024 进位口径,传输时间为 \(64/(128\times1024)\ \text{s} \approx 0.488\ \text{ms}\)。平均访问时间约为 \(8 + 4.167 + 0.488 = 12.655\ \text{ms}\)。

冗余磁盘阵列(RAID)将多块磁盘组织起来,可利用条带化提高并行访问能力,并通过镜像或奇偶校验提供冗余。各级别的性能与容错能力不同:

RAID 级别 核心机制 空间利用率与容错能力
RAID 0 只做数据条带化分片并行读写,不设任何冗余 容量利用率 \(100\%\),读写最快;但零容错,坏任意一块盘全盘数据报废
RAID 1 磁盘镜像:每写一份数据同时在影子盘上写一模一样的副本 容错极强(只要镜像对没同时全坏就能恢复),但容量利用率砍半,只有 \(50\%\)
RAID 5 条带化+分布式奇偶校验(校验块轮流散落在各块盘上,消除了单校验盘瓶颈) \(N\) 块同容量盘组成阵列时,仅花 1 块盘的容量存奇偶校验,可用容量为 \((N-1)/N\);允许任意坏 1 块盘靠其余盘异或还原,同时坏 2 块盘则无法恢复

U 盘与 SSD 使用 Flash,没有机械寻道与旋转等待,随机读取通常优于机械盘,但仍有控制器和闪存访问延迟。NAND Flash 按页编程、按块擦除,控制器需管理地址映射、垃圾回收及磨损均衡。

3 外设、CPU 和主存互连(3,识记、领会、简单应用)

总线(Bus)用于连接 CPU、主存与 I/O 接口。在教材的共享总线模型中,同一时刻由一个主设备(Master)发起事务,选中的从设备(Slave)响应。按连接范围可区分片内、处理器、存储器和 I/O 互连。FSB 是共享总线示例,QPI、PCIe 属于点对点串行互连,不能把共享总线的全部限制直接套用。

并行总线包含数据线、地址线和控制线,分别传送数据、指定地址及协调读写等操作。同步总线按公共时钟安排事务,时序简单,但周期设计受连接设备和线路影响;异步总线通过请求—应答等握手协调,适合不同速度的设备,不依赖统一的总线时钟。

3.1 带宽计算

总线带宽计算需分清每次有效数据量、每秒传输次数,以及单向或双向口径。教材中的几类计算如下:

  1. 普通并行同步总线与 DDR 内存总线: $\(\text{总线带宽} = \frac{\text{总线宽度 } W\ (\text{位})}{8} \times \text{时钟频率 } F \times \text{每时钟周期传输次数 } M\)$
  2. 若单周期传 1 次数据、宽 64 位(\(8\ \text{B}\))、频率 \(200\ \text{MHz}\),峰值带宽 \(= 8\ \text{B} \times 200\ \text{M/s} = 1.6\ \text{GB/s}\);若每周期传 4 次(如四倍频前端总线),再乘 4 得 \(6.4\ \text{GB/s}\)。
  3. 若题干直接给了等效传输频率(如 FSB 1333 MHz 或 DDR3-1333),里面的 1333 M 已经乘过倍率了,直接拿 \(8\ \text{B} \times 1333\ \text{M/s} \approx 10.67\ \text{GB/s}\) 算单通道带宽,三通道再乘 3 得 \(32\ \text{GB/s}\)。
  4. 若问“某类具体总线事务(如读 1 字占 4 拍,或突发读 8 字占 11 拍)下的有效数据传输率”,就用单次事务实际传的字节数 \(\div\) 该事务占用的总时间(见习题 5、6)。
  5. QPI 点对点串行互连(教材习题 8 口径):每条链路共 20 根信号线,但只有 16 位(\(2\ \text{B}\))是有效数据(另 4 位做 CRC 校验),每个时钟周期上下沿传 2 次,且发送(TX)与接收(RX)全双工双向同时传。设每秒传输次数为 \(v\ (\text{GT/s}) = 2 \times \text{时钟频率}\),则双向总带宽为: $\(\text{QPI 总带宽} = v\ (\text{GT/s}) \times 2\ \text{B} \times 2\ (\text{双向})\)$
  6. PCI-Express(PCIe)串行通路(教材习题 9 口径):PCIe 1.0 单条通路(\(\times 1\) lane)单向速率为 \(2.5\ \text{Gb/s}\),采用 8b/10b 编码(每传 8 位有效数据,即 \(1\ \text{B}\),在线路上实际要发 10 位编码信号),且同样支持全双工双向同时收发。因此 \(\times n\) 链路的带宽为: $\(\text{PCIe 1.0 单向带宽} = \frac{2.5\ \text{Gb/s} \times n}{10} = 0.25n\ \text{GB/s}, \qquad \text{双向总带宽} = \frac{2.5\ \text{Gb/s} \times 2 \times n}{10} = 0.5n\ \text{GB/s}\)$

4 I/O 接口(4,识记、领会)

I/O 接口(设备控制器)用于适配 CPU 与外设在速度、数据格式和电气特性上的差异,主要负责地址译码与选择、数据缓冲、格式及电平转换、命令和状态传送,以及中断与 DMA 请求。

I/O 接口中可被 CPU 寻址的寄存器称为 I/O 端口,包括数据、状态和命令端口等。接口是电路模块,端口是其中可寻址的寄存器,一个接口通常有多个端口:

端口/结构 作用
数据缓冲寄存器(数据端口) 暂存 CPU 发往外设或外设送交 CPU 的数据,垫平速度差
状态寄存器(状态端口) 供 CPU 读取外设当前的“就绪(Ready/Done)”、“忙(Busy)”、“出错”及中断请求标志
控制/命令寄存器(命令端口) 供 CPU 写入启动、停止、清零或工作模式字(常与状态端口合用地址,读是状态、写是命令)

I/O 端口可采用以下两种编址方式,区别在于是否使用独立地址空间及专用访问指令:

  • 独立编址(I/O 映射方式,如 x86 的端口 I/O):端口使用独立的 I/O 地址空间,不占用主存地址空间。CPU 通过 IN、OUT 等专用指令访问,并以相应控制信号区分 I/O 与主存事务。
  • 统一编址(存储器映射 I/O,如教材的 MIPS、ARM 示例):将部分主存地址空间映射为设备寄存器,CPU 可用 lw、sw 等普通访存指令访问。无需另设端口地址空间,但会占用部分可编址范围。

5 I/O 数据传送控制方式(5,领会、简单应用)

5.1 查询方式

程序查询(轮询)由 CPU 读取状态端口,检查 Ready/Done。忙等方式在设备就绪前持续查询,就绪后读写数据端口;定时轮询则每隔 \(T\) 查询一次,如习题 12 的 DEVCHC。两种方式的 CPU 开销应分别计算。

若每秒定时查询 \(N\) 次,每次需 \(C\) 个周期,则查询的 CPU 时间占比为 \(\dfrac{N \times C}{\text{CPU 主频}}\)。独占式忙等则持续占用 CPU,设备工作期间可按 \(100\%\) 计算;这不等于设备一直在有效传输数据。

5.2 中断方式

程序中断方式由设备就绪事件触发 CPU 服务,使 CPU 在等待期间可执行其他工作,数据传送时再进入中断处理程序。

在教材的外部可屏蔽中断模型中,响应需要满足:接口已发出请求、IF = 1、请求未被屏蔽且被优先级逻辑选中,以及当前指令已执行结束。外部中断与指令流异步,通常在指令边界响应,不应与当前指令内部引发的异常混淆。

以下用五步描述请求、响应、服务和返回。请求判优由外设及控制器完成;CPU 按体系结构保存必要状态并转入入口;软件服务程序再保护通用寄存器、处理设备和恢复执行。中断源若采用软件查询,识别工作也包含软件操作:

  1. 中断请求与判优:外设准备就绪置中断请求标志,经硬件排队器或中断控制器按响应优先级挑出最高级请求报送 CPU。
  2. 关中断与保护断点(硬件):CPU 在当前指令结束点检测请求后,先关中断(置 IF = 0),再把返回地址(断点 PC)和程序状态字 PSW 压栈或存入专用寄存器。
  3. 识别中断源并转入口(硬件/软件):可用软件依次查各设备状态位(如习题 12 的 DEVINT),更常见的是用硬件向量中断——由设备送上中断类型号,硬件据此查中断向量表取出服务程序入口地址装入 PC。
  4. 保护现场、设备服务与开中断(软件):服务程序先保存将要使用的通用寄存器(现场)和旧屏蔽字。若允许更高优先级的多重中断(中断嵌套),先设置新的中断屏蔽字,再开中断,随后执行 IN/OUT 或 lw/sw 传送数据。
  5. 恢复现场与中断返回(软件):数据处理完成后,先关中断,再从栈中恢复通用寄存器和旧屏蔽字。最后执行中断返回指令(如 IRET),恢复断点 PC 和中断允许状态,继续原程序。

区分两组概念:断点 \(\ne\) 现场,断点是恢复执行所用的地址,现场包括需要保存的寄存器状态;响应优先级 \(\ne\) 处理优先级,前者决定同时请求时先响应谁,后者决定哪些中断可打断当前服务程序。教材模型中,后者通过中断屏蔽字设置。

中断方式的 CPU 开销占比可先计算中断频率,再累计处理周期,见习题 13、14、15:

\[\text{每秒中断次数 } N = \frac{\text{外设数据传输率 } v\ (\text{B/s})}{\text{每次中断传输字节数 } d\ (\text{B})}, \qquad \text{CPU 开销占比} = \frac{N \times \text{单次中断总时钟周期数 } C}{\text{CPU 主频 } f}\]

教材不设额外缓冲的逐次服务模型要求:相邻请求间隔 \(\Delta t = d / v\) 大于单次响应与处理时间。若上次尚未完成,下一份数据就已到达,该模型无法及时处理,应考虑 DMA 等方式,见习题 13(2)。实际设备还可能使用缓冲或批量中断,不能直接沿用这一简单判据。

5.3 DMA 方式

高速设备若每传少量数据就中断,CPU 开销会很大。DMA(直接存储器访问)由专用控制硬件在设备与主存间传输数据,减少 CPU 逐字搬运。教材的 DMA 控制器包括地址寄存器 AR/MAR、计数器 WC/DC、数据缓冲寄存器 BR/DR、控制/状态寄存器和中断机构:

  1. DMA 预处理(CPU 介入):CPU 设置读写方向、外设地址、主存缓冲区首地址和传输长度,然后启动 DMA。
  2. 数据块传送(DMA 控制器):外设每准备好一个字(或字节),就向 DMA 控制器发出 DMA 请求。控制器随后申请总线,取得一个存取周期(总线周期),直接在设备与主存之间传送数据,并更新主存地址和剩余计数。数据不经过 CPU 内部寄存器;在教材模型中,CPU 可继续执行指令,但访存可能因总线竞争而延迟。
  3. DMA 后处理(CPU 介入):传输完成或发生错误时,DMA 控制器向 CPU 发出中断请求。CPU 进入中断服务程序检查状态并完成收尾。

DMA 与 CPU 共用主存时,需仲裁访问。教材介绍三种方式:周期挪用(周期窃取 Cycle Stealing)按需取得一个存储周期,可能延迟 CPU 访存;停止 CPU 访存(成组突发)在一段时间内连续占用通路;DMA 与 CPU 交替访存则交替安排访问时隙。CPU 是否停顿及停顿多久,应依题设模型判断。

最后对比大题常问的“CPU 响应 DMA 请求 vs 响应中断请求有什么本质区别”(习题 2(11)):

比较维度 响应中断请求 响应 DMA 请求(周期挪用)
请求目的 请 CPU 暂停当前程序,去跑一段中断服务程序处理事件或搬数据 只向 CPU 借用一个总线/存储周期,由 DMA 硬件自己传一个数
响应时机 必须在一条指令执行结束的交界点采样响应 可在任意机器周期(总线周期)结束时响应,不必等整条指令跑完
是否切换程序与保护现场 是:硬件必须关中断、存断点 PC,软件还要保护通用寄存器现场 否:CPU 只是暂缓交出总线控制权一拍,PC 和寄存器现场纹丝不动
优先级高低 较低 比中断请求更高(不及时挪走高速外设缓冲里的数据就会被新数据冲掉)

5.4 现代架构下的 DMA 与 Cache 一致性

教材主要采用单核、共享总线的 DMA 模型。计算时应按该模型的总线占用与停顿条件列式;理解实际系统时,还需考虑 Cache、内存控制器及互连结构,不能把“DMA 传输”直接等同于“CPU 全程停止”。

在使用片上互连和 PCIe 的系统中,CPU 可命中自身 Cache,DMA 也可经设备通路访问内存,两者能够并行。若竞争内存通道、互连带宽或一致性资源,仍可能相互影响,具体等待时间取决于实现和负载。

DMA 与 CPU Cache 还涉及一致性问题。若缺少相应维护机制,可能出现以下两种情况:

场景 危险 后果
DMA 读主存送往设备(发网包、写盘) Cache 里还留着该地址的脏行,尚未写回主存 DMA 读到旧数据,设备收到过期内容
DMA 写主存(收网包、读盘) 主存已更新,Cache 里仍是旧副本 CPU 随后读到陈旧数据,看不到新到的内容

解法分两条路:

  • 硬件维护一致性:支持一致性 DMA 的平台可通过监听或目录机制协调 Cache 与设备访问。驱动仍需遵守平台的 DMA 映射、同步及内存顺序要求,不能据此认为无需任何软件配合。
  • 软件维护一致性:不支持一致性 DMA 的平台需要在 CPU 与设备交换缓冲区使用权时,按方向和平台规则清理或失效相应 Cache 行。设备读取前需保证 CPU 的修改已对设备可见;设备写入后,需保证 CPU 不再读取旧副本。在 Linux 中应使用 DMA 映射与同步接口,如 dma_sync_single_for_device、dma_sync_single_for_cpu,不宜套用“所有 ARM 平台都按固定次序手动刷 Cache”的规则。

5.5 与《操作系统概论》的对照(跨课程)

顺带把两门课最容易打结的地方一次拆开:

比较 操作系统的“进程阻塞” 计组的“DMA 周期挪用”
发生在哪一层 操作系统软件:内核将进程置为阻塞并挂入等待队列,按需进行上下文切换 硬件电路:DMA 控制器向总线仲裁器申请使用权
时间尺度 等待时长取决于设备与调度,不能由“阻塞”一词确定 占用单个或若干存储周期;实际时长取决于硬件与传输方式
此时 CPU 在干什么 有其他就绪任务时可转去执行;否则可能运行空闲任务 需要使用同一总线或主存的 CPU 访问可能延迟,其他可独立进行的运算仍可推进
由谁发起 进程执行系统调用后条件未满足,或等待的事件尚未发生 外设控制器或 DMA 引擎发起总线请求
如何恢复 事件完成后唤醒进程,重新进入就绪队列,等调度程序选中 总线可用后,受延迟的访存可继续,无需为此进行进程调度
对执行的影响 涉及进程状态与调度;阻塞调用完成后才继续执行后续代码 不改变程序的指令语义,但可能增加执行时间

进程阻塞使当前进程让出 CPU,供其他就绪进程执行;DMA 周期挪用使 CPU 暂时让出总线,可能延迟访存。两者可在同一次 I/O 中出现,也可分别发生。轮询方式通常既不阻塞当前进程,也不使用 DMA。

两门课对同一批术语的口径并不一致,下面只列差异,不重写定义:

差异 《操作系统概论》 《计算机组成原理》
异常与中断的关系 中断包含异常:内中断(异常)与外中断统称中断,异常只是其中一类 异常与中断并列:异常由指令执行引起、与指令同步,中断来自外部、与指令异步
流程划分 第 2 章按硬件响应与软件服务展开;教材单重中断四步流程另有合并方式,查向量次序差异见该章说明 第 4 章列响应三步;本章第 5.2 节列从请求到返回的五步完整过程
时间分析 进程等待、软件服务和重新调度分别计时 硬件响应、总线仲裁和数据传输分别计时;课程名称本身不决定时间量级

6 考核要求

本章共 5 条考核条目:第 1、2 条要求领会,第 4 条兼有识记与领会,第 3、5 条包含简单应用。重点练习磁盘访问时间与 RAID 1/5(习题 3–4),并行、串行互连带宽(习题 5–9),以及中断、DMA 的 CPU 开销占比和周期挪用减速比(习题 11–16)。

7 教材本章习题

题目取自教材第 6 章“习题”(共 16 题),答案取自教材附录“部分习题解答”(收录第 3、4、5、6、7、8、9、10、11、12、13、15、16 题;第 14 题附录未收解答,下面那一条是按题意推导的,已在该题标注;其余请对照教材自行完成)。

7.1 概念与简答

1. 给出以下概念的解释说明。

键盘扫描码 终端 磁道 柱面
扇区 道密度 位密度 平均存取时间
寻道时间 旋转等待(查找)时间 传输时间 数据传输率
磁盘控制器 磁盘驱动器 冗余磁盘阵列 RAID、系统总线
从设备 总线宽度 总线带宽 总线工作频率
异步通信总线 半同步通信总线 突发传送 处理器总线
前端总线 存储器总线 QPI 总线 I/O 总线
PCI-Express 总线 I/O 接口 I/O 控制器 I/O 端口
命令(控制)端口 数据端口 状态端口 I/O 地址空间
独立编址 统一编址 存储器映射 I/O I/O 指令
程序查询 I/O 就绪状态 程序中断 I/O 中断屏蔽字
中断响应优先级 中断处理优先级 中断服务程序 DMA 控制器
答案与解析

教材附录未收本题解答,请对照教材自行完成。

2. 简单回答下列问题。

(1)并行传输和串行传输各有哪些特点?

(2)I/O 接口的基本功能有哪些?

(3)I/O 端口的编址方式有哪两种?

(4)假定采用独立编址方式对 I/O 端口进行编号,那么,必须为处理器设计哪些指令来专门用于进行 I/O 端口的访问?

(5)什么是程序查询 I/O 方式?说明其工作原理。

(6)什么是中断 I/O 方式?说明其工作原理。

(7)如果在一条指令执行过程中,CPU 为响应中断而中止当前指令的执行,会产生什么问题?

(8)什么是可屏蔽中断?什么是非屏蔽中断?

(9)为什么在保护现场和恢复现场的过程中,CPU 必须关中断?

(10)DMA 方式能够提高成批数据交换效率的主要原因何在?

(11)CPU 响应 DMA 请求和响应中断请求有什么区别?

答案与解析

教材附录未收本题解答,请对照教材自行完成。

7.2 磁盘与 RAID

3. 假定一个程序重复完成将磁盘上一个 4 KB 的数据块读出,进行相应处理后,写回到磁盘的另外一个数据区。各数据块内信息在磁盘上连续存放,并随机地位于磁盘的一个磁道上。磁盘转速为 7200 RPM,平均寻道时间为 10 ms,磁盘最大数据传输率为 40 MBps,磁盘控制器的开销为 2 ms,没有其他程序使用磁盘和处理器,并且磁盘读写操作和磁盘数据的处理时间不重叠。若程序对磁盘数据的处理需要 20000 个时钟周期,处理器时钟频率为 500 MHz,则该程序完成一次数据块“读出一处理—写回”操作所需的时间为多少?每秒钟可以完成多少次这样的数据块操作?

答案与解析

参考答案: 数据块的平均读取或写回时间为:磁盘控制器开销 + 平均寻道时间 + 平均旋转等待时间 + 数据块读写时间。

磁盘旋转一圈的时间为 \(1\ 000/(7\ 200/60) \approx 8.33\ \text{ms}\),故平均旋转等待时间约为 \(8.33/2 = 4.17\ \text{ms}\)。因为数据块内信息连续,所以,一个数据块的传输时间约为 \(4\ \text{K}/(40 \times 10^{6}) = 0.102\ 4\ \text{ms}\),因而数据块平均读取或写回时间为 \(2\ \text{ms} + 10\ \text{ms} + 4.17\ \text{ms} + 0.102\ 4\ \text{ms} \approx 16.27\ \text{ms}\)。数据块的处理时间为 \(20\ 000/500\ \text{M} = 0.04\ \text{ms}\)。

因为数据块随机存放在某个磁道上,所以,每个数据块的平均处理时间(包括读出、处理和写回时间)都是相同的,其整个时间为 \(16.27\ \text{ms} \times 2 + 0.04\ \text{ms} = 32.58\ \text{ms}\)。因此,每秒钟可以完成这样的数据块操作次数大约是 \(1000\ \text{ms} / 32.58\ \text{ms} \approx 30\) 次。

4. 假定有两个 RAID 系统 A 和 B,各自用来存储 10 TB 的数据。系统 A 使用 RAID 1 技术,系统 B 使用 RAID 5 技术。

(1)系统 A 需要比系统 B 多用多少存储量?

(2)哪个系统更可靠?为什么?

答案与解析

参考答案: (1)系统 A 使用 RAID 1 技术,采用磁盘镜像方式存储,因此所用磁盘容量为 \(10+10=20\) TB。系统 B 使用 RAID 5 技术,采用奇偶校验,假设磁盘阵列使用 4 个数据盘和 1 个奇偶校验盘(共 5 个盘),那么 10 TB 的数据需要 2.5 TB 来存放冗余的奇偶校验数据,所以系统 A 比系统 B 多用 7.5 TB 存储容量。

(2)系统 A 更可靠。RAID 1 对每块盘都做了完整镜像,任意一块盘整盘损坏,数据都能从镜像盘上原样恢复;RAID 5 只靠奇偶校验提供“任意坏一块”的容错,一旦某个条带上的两块盘同时损坏(哪怕损坏发生在不同数据块的不同位上),该条带的数据就无法还原。

7.3 总线与 I/O 接口

5. 假设一个 32 位的处理器连接了一个 32 位宽的处理器总线,总线的时钟频率为 400 MHz,支持多种总线事务类型。其中,最短的总线事务类型是存储器读事务,需要 4 个时钟周期完成,第 1 个时钟周期送地址和读命令,第 4 个时钟周期取数;最长的总线事务类型是突发传送 8 次数据,需要 11 个时钟周期完成,第 1 个时钟周期送地址和读命令,第 4 个时钟周期开始连续传送 8 个数据,每个时钟周期传送一次。请回答下列问题:

(1)该总线是同步总线还是异步总线,为什么?

(2)该总线的最大数据传输率为多少?

(3)若处理器一直持续发起最短总线事务类型,则此时总线的数据传输率是多少?

(4)若处理器一直持续发起最长总线事务类型,则此时总线的数据传输率是多少?

(5)若将处理器总线的总线宽度扩展为 64 位,则该总线的最大数据传输率提高到多少?

(6)若将处理器总线的总线时钟频率提高到 800 MHz,则该总线的最大数据传输率提高到多少?

(7)加倍总线宽度和加倍总线时钟频率相比,哪种更好?

答案与解析

参考答案: (1)该总线是同步总线,因为所有总线操作都在时钟信号的控制下进行。

(2)总线最大数据传输率就是总线带宽,表示在总线上传输数据时单位时间内传输的最大数据量,它由总线宽度 W、总线时钟频率 F 和一个时钟周期内传输的数据个数 M 确定。其值等于 \(W \times F \times M\)。根据题意,总线在数据传送阶段,每个时钟能传送一次数据,因此该总线的最大数据传输率为 \(32\ \text{b} \times 400\ \text{M} \times 1 = 12.8\ \text{Gb/s} = 1.6\ \text{GB/s}\)。

(1)最小总线事务(存储器读,4 个时钟周期):每传 \(4\ \text{B}\) 占 4 拍,实际传输率 \(4\ \text{B} / (4 \times 400\ \text{M}) = 400\ \text{MB/s}\);最长总线事务(突发 8 次,11 个时钟周期):每传 \(8 \times 4 = 32\ \text{B}\) 占 11 拍,实际传输率 \(32\ \text{B} / (11 \times 400\ \text{M}) \approx 1163.6\ \text{MB/s}\)。

口径更正。 教材附录原文写作 518 MB/s,与它自己的算式对不上,按算式更正:\(32\ \text{B} \div (11 / 400\ \text{M}) \approx 1163.6\ \text{MB/s}\)。

(5)总线宽度翻倍到 64 位,每个周期传输的字节数翻倍,最大数据传输率随之翻倍,达 \(2 \times 1.6 = 3.2\ \text{GB/s}\)。

(6)时钟频率翻倍到 \(800\ \text{MHz}\),每秒传输次数翻倍,最大数据传输率同样翻倍,达 \(3.2\ \text{GB/s}\)。

(7)从峰值带宽这个指标看,翻倍总线和翻倍频率的效果一样,都是把 \(W \times F \times M\) 里的一个因子乘 2。但两者代价不同:放宽总线要增加信号线、引脚和 PCB 走线,成本与布线难度都上升;提高时钟则要面对更严格的信号完整性、时序收敛和功耗问题,过高的频率还会把整条总线的实际效率拉低。

6. 存储器总线采用同步通信方式,假定时钟频率为 \(50\ \text{MHz}\),每个总线事务以突发方式传输 8 个字,以支持块长为 8 个字的 cache 行读和 cache 行写,每字 4 字节。对于读操作,访问顺序是 1 个时钟周期接受地址,3 个时钟周期等待存储器读数,8 个时钟周期用于传输 8 个字。对于写操作,访问顺序是 1 个时钟周期接受地址,2 个时钟周期延迟,8 个时钟周期用于传输 8 个字,3 个时钟周期恢复和写入纠错码。

(1)该存储器总线的带宽是多少?

(2)当全部访问为连续的读操作时,该存储器总线的数据传输率是多少?

(3)当全部访问为连续的写操作时,该存储器总线的数据传输率是多少?

答案与解析

参考答案: (1)根据题意,总线在数据传送阶段,每个时钟能传送一次数据,所以,该存储器总线的总线带宽是 \(4\ \text{B} \times 50\ \text{M} \times 1 = 200\ \text{MB/s}\)。

(2)读取 8 个字用了 \(1+3+8=12\) 个时钟周期,故数据传输率为 \(8\times4\ \text{B}/(12\times1/50\ \text{M})=133.3\ \text{MB/s}\)。

(3)连续写操作时,一次总线事务用 \(1+2+8+3=14\) 个时钟周期,传输 \(8\times4\ \text{B}=32\ \text{B}\),故数据传输率为 \(8\times4\ \text{B}/(14\times1/50\ \text{M})\approx114.3\ \text{MB/s}\)。

7. 若前端总线(FSB)的工作频率为 \(1333\ \text{MHz}\)(实际时钟频率为 \(333\ \text{MHz}\)),总线宽度为 64 位,则总线带宽为多少?若存储器总线为三通道总线,总线宽度为 64 位,内存条的型号为 DDR3-1333,则整个存储器总线的总带宽为多少?若内存条型号改为 DDR3-1066,则存储器总线的总带宽又是多少?

答案与解析

参考答案: 前端总线工作频率为 1333 MHz,说明总线上每秒传送 1333 M 次数据,每次在总线上传送 64 位,因而总线带宽为 \(8\ \mathrm{B} \times 1333\ \mathrm{M} = 10.664\ \mathrm{GB}/\mathrm{s}\)。若内存条型号为 DDR3-1333,说明存储器总线的工作频率为 1333 MHz,即每秒传送 1333 M 次数据,因而每个通道的带宽为 \(8\ \text{B} \times 1333\ \text{M/s} \approx 10.67\ \text{GB/s}\),存储器总线的总带宽为 \(3 \times 10.67\ \text{GB/s} = 32\ \text{GB/s}\)。

若内存条型号为 DDR3-1066,说明存储器总线的工作频率为 \(1066\ \mathrm{MHz}\),即每秒传送 \(1066\ \mathrm{M}\) 次数据,因而每个通道的带宽为 \(8\ \mathrm{B} \times 1066\ \mathrm{M}/\mathrm{s} \approx 8.5\ \mathrm{GB}/\mathrm{s}\),因此存储器总线的总带宽为 \(3 \times 8.5\ \mathrm{GB}/\mathrm{s} = 25.5\ \mathrm{GB}/\mathrm{s}\)。

8. 总线的速度通常指每秒钟传输多少次,例如,QPI 总线的速度单位为 GT/s,表示每秒钟传输多少个 10 亿(1 G = 10⁹)次。若 QPI 总线的时钟频率为 2.4 GHz,则其速度为多少?总带宽是多少 GB/s?QPI 总线的速度也称为 QPI 频率,QPI 频率为 6.4 GT/s 时的总带宽是多少?

答案与解析

参考答案: QPI 总线是一种基于包传输的串行高速点对点连接协议,有 20 条数据线,其中 16 位是有效数据,4 位用于 CRC 校验,发送方(TX)和接收方(RX)有各自的时钟信号,每个时钟周期传输两次数据,并且发送方和接收方可以同时传输,因此总带宽的计算公式是每秒传输次数 \(\times\) 每次传输的有效数据 \(\times\) 2。若 QPI 的时钟频率为 2.4 GHz,则速度为 4.8 GT/s,表示每秒钟传输 4.8 G 次数据,即 QPI 频率为 4.8 GT/s。此时总带宽是 4.8 GT/s \(\times\) 2 B \(\times\) 2 = 19.2 GB/s。

QPI 频率为 \(6.4\ \text{GT/s}\) 时的总带宽是 \(6.4\ \text{GT/s} \times 2\ \text{B} \times 2 = 25.6\ \text{GB/s}\)。

9. PCI-Express 总线采用串行传输方式,PCI-Express × n 表示具有 n 个通路的 PCI-Express 链路。PCI-Express 1.0 规范支持通路中每个方向的发送或接受速率为 2.5 Gb/s,则 PCI-Express × 8 和 PCI-Express × 32 的总带宽分别为多少?

答案与解析

参考答案: 总带宽 \(= 2.5\ \mathrm{Gb/s} \times 2 \times \text{通路数} / 10\)。×8 得 \(2.5 \times 2 \times 8 / 10 = 4\ \text{GB/s}\),×32 得 \(2.5 \times 2 \times 32 / 10 = 16\ \text{GB/s}\)(均按双向合计)。

10. 假定采用独立编址方式对 I/O 端口进行编号,那么,必须为处理器设计哪些指令来专门用于进行 I/O 端口的访问?连接处理器的总线必须提供哪些控制信号来表明访问的是 I/O 空间?

答案与解析

参考答案: 若采用独立编址方式对 I/O 端口进行编号,则主存地址编号和 I/O 端口编号可能会相同,所以,无法利用访存指令来访问 I/O 端口,必须提供专门的输入/输出指令(即 I/O 指令),包括 I/O 读指令(即输入指令)和 I/O 写指令(即输出指令)。在执行 I/O 指令时,CPU 会送出相应的 I/O 读和 I/O 写控制信号,以使和执行访存指令时送出的存储器读和存储器写信号有所区别。

7.4 I/O 控制方式

11. 假设有一个磁盘,每面有 200 个磁道,盘面总存储容量为 1.6 MB (1 M = \(10^{6}\)),磁盘旋转一周时间为 25 ms,每道有 4 个区,每两个区之间有一个间隙,磁头通过每个间隙需 1.25 ms。请回答下列问题:

(1)从该磁盘上读取数据时的最大数据传输率是多少?

(2)假如有人为该磁盘设计了一个与主机之间的接口,磁盘每读出一位,串行送入一个移位寄存器,每当移满 16 位后向处理器发出一个请求交换数据的信号。在处理器响应该请求信号并读取移位寄存器内容的同时,磁盘继续读出一位一位数据并串行送入移位寄存器,如此继续工作。已知处理器在接到请求交换的信号以后,最长响应时间是 3 \(\mu\)s,那么这样设计的接口能否正确工作?若不能,则应如何改进?

答案与解析

参考答案: (1)磁道容量为 \(1.6 \times 10^{6}\ \text{B}/200 = 8000\ \text{B}\),每个数据区的容量为 8 000 B/4 = 2 000 B,转过一个数据区的时间为 \((25 - 1.25 \times 4)\ \text{ms}/4 = 5\ \text{ms}\),因而磁盘的最大数据传输率为 2 000 B/5 ms = \(4 \times 10^{5}\ \text{B/s} = 0.4\ \text{MB/s}\)。

(2)磁盘每传 1 位耗时 \(10^{6}\ \mu\text{s}/(0.4 \times 10^{6} \times 8) = 0.3125\ \mu\text{s} \approx 0.31\ \mu\text{s}\),远小于处理器的最长响应时间 \(3\ \mu\text{s}\)。等处理器在 \(3\ \mu\text{s}\) 后赶来读取移位寄存器时,磁盘早已串行移入了新的数据位,把原先攒好的 16 位数据冲掉了,因此这样设计的接口不能正常工作。改进办法:注意到磁盘读完一整个 16 位字(\(2\ \text{B}\))需要 \(2\ \text{B} / (0.4\ \text{MB/s}) = 5\ \mu\text{s} > 3\ \mu\text{s}\),只需在接口里增设一个 16 位数据缓冲寄存器——每当 16 位移位寄存器移满,立刻并行拷入数据缓冲寄存器并向 CPU 发请求;在磁盘往移位寄存器串行移入下一个字的 \(5\ \mu\text{s}\) 窗口内,CPU 随时能在 \(3\ \mu\text{s}\) 内安全地从缓冲寄存器把上一个字取走。

12. 假设某计算机带有 20 个终端(每个终端包含一个键盘和一个显示器)同时工作,在运行用户程序的同时,能接受来自任意一个终端输入的字符信息,并将字符回送显示。每一个终端的键盘输入部分有一个数据缓冲寄存器 \(RDBRi(i=1\sim20)\),当在键盘上按下某一个键时,相应的字符代码即进入 RDBRi,并使它的“完成”状态标志 \(Donei(i=1\sim20)\) 置 1,等处理器把该字符代码取走后,\(Donei\) 标志自动清 0。每个终端显示部分也有一个数据缓冲寄存器 \(TDBRi(i=1\sim20)\),并有一个 \(Readyi(i=1\sim20)\) 状态标志,该状态标志为 1 时,表示相应的 \(TDBRi\) 是空着的,准备接收新的输出字符代码,当 \(TDBRi\) 接收了一个字符代码后,\(Readyi\) 标志被自动清 0,并将字符代码送到终端显示。为了接收终端的输入信息,处理器为每个终端设计了一个指针 \(PTRi(i=1\sim20)\) 指向为该终端保留的主存输入缓冲区。处理器采用下列两种方案输入键盘代码,同时回送显示。要求画出 DEVCHC 和 DEVINT 两个程序的流程图。

(1)每隔一固定时间 T 转入一个状态检查程序 DEVCHC,顺序地检查全部终端是否有任何键盘信息要输入,如果有,则顺序完成之。

(2)允许任何有键盘信息输入的终端向处理器发出中断请求。全部终端采用共同的向量地址,利用它使处理器在响应中断后,转入一个中断服务程序 DEVINT,由后者询问各终端状态标志,并为最先遇到的请求中断的终端服务,然后转向用户程序。

答案与解析

参考答案: 本题依赖教材流程图;按文字步骤作答如下:

  1. DEVCHC 是定时查询程序:定时信号到来即转入,按 \(i=1\sim20\) 顺序检查 \(Done_i\),为 1 则从 \(RDBR_i\) 取走字符、存入 \(PTR_i\) 指向的主存输入缓冲区并让 \(PTR_i\) 加 1,随后回送显示;20 个终端查完返回用户程序。
  2. 回送显示部分:查 \(Ready_i\),为 1 表示 \(TDBR_i\) 已空,从缓冲区取字符送入 \(TDBR_i\),硬件自动把 \(Ready_i\) 清 0;为 0 则本轮跳过。
  3. DEVINT 是中断服务程序:20 个终端共用同一向量地址,进入后按 \(i=1\sim20\) 顺序找第一个 \(Done_i=1\) 的终端,为它完成取字符与回送,然后返回用户程序;若一个都找不到,说明没有中断请求,应报出错。

因为标志 \(Done_i\) 与 \(Ready_i\) 由硬件控制自动清 0(复位),所以上述步骤中没有对这两个标志赋值的操作。

13. 某计算机的 CPU 主频为 500 MHz,所连接的某外设的最大数据传输率为 20 kBps,该外设接口中有一个 16 位的数据缓存器,相应的中断服务程序的执行时间为 500 个时钟周期。请回答下列问题

(1)是否可用中断方式进行该外设的输入输出?若能的话,在该设备持续工作期间,CPU 用于该设备进行输入/输出的时间占整个 CPU 时间的百分比大约为多少?

(2)若该外设的最大数据传输率是 2 MBps,则可否用中断方式进行输入输出?

答案与解析

参考答案: (1)外设接口配有 16 位(\(2\ \text{B}\))数据缓存器,每攒满 \(2\ \text{B}\) 发起一次中断请求,故相邻两次中断请求的时间间隔为 \(2\ \text{B} / (20\ \text{kB/s}) = 100\ \mu\text{s}\)。CPU 主频 \(500\ \text{MHz}\)(时钟周期 \(2\ \text{ns}\)),执行 500 个时钟周期的中断服务程序耗时 \(500 \times 2\ \text{ns} = 1\ \mu\text{s}\);加上硬件中断响应(中断隐指令)极短的开销,单次中断总耗时仅 \(1\ \mu\text{s}\) 出头,远小于 \(100\ \mu\text{s}\) 的请求间隔,可以用中断方式进行输入输出。

设备持续工作期间,每 \(100\ \mu\text{s}\) 里 CPU 花 \(1\ \mu\text{s}\) 处理中断,占用 CPU 时间的百分比约为 \(1\ \mu\text{s} / 100\ \mu\text{s} = 1\%\)(或按每秒中断 \(20\ \text{kB} / 2\ \text{B} = 10\,000\) 次计,每秒花 \(10\,000 \times 500 = 5\ \text{M}\) 个周期,占 \(5\ \text{M} / 500\ \text{M} = 1\%\))。

(2)若外设最大传输率提至 \(2\ \text{MB/s}\),则每 \(2\ \text{B}\) 的中断请求间隔缩短为 \(2\ \text{B} / (2\ \text{MB/s}) = 1\ \mu\text{s}\)。而单次中断响应加服务程序执行本身就要 \(1\ \mu\text{s}\) 多一点,上一次中断还没处理完,下一个中断请求就已经到了,CPU 根本来不及响应,不能用中断方式。

14. 假设计算机中某外设以中断方式进行数据输入/输出,每次中断请求传输一个 32 位数,已知该外设的数据传输率为 500 kB/s,每次传输的 CPU 开销(包括中断响应和处理)为 1000 个时钟周期,CPU 的主频为 500 MHz,则该外设在持续工作期间,CPU 用于其数据传送的时间占整个 CPU 时间的百分比是多少?

答案与解析

参考答案: (教材附录未收本题解答,以下按题意推导)每次中断传输 32 位(\(4\ \text{B}\)),外设每隔 \(4\ \text{B} / (500\ \text{kB/s}) = 8\ \mu\text{s}\) 发一次中断请求。CPU 主频 \(500\ \text{MHz}\),单次中断响应与处理耗时 \(1000 / (500\ \text{MHz}) = 2\ \mu\text{s}\)。也就是说每 \(8\ \mu\text{s}\) 周期内 CPU 要花 \(2\ \mu\text{s}\) 服务该外设,其余 \(6\ \mu\text{s}\) 跑普通程序,故 CPU 用于该外设数据传送的时间占比为 \(2\ \mu\text{s} / 8\ \mu\text{s} = 25\%\)。

15. 某计算机 CPU 主频为 500 MHz,CPI 为 5。假定某外设的数据传输率为 0.5 MB/s,采用中断方式与主机进行数据传送,传输单位为 32 位,对应的中断服务程序包含 18 条指令,中断响应等其他开销相当于 2 条指令的执行时间。请回答下列问题,要求给出计算过程。

(1)在中断方式下,CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?

(2)当该外设的数据传输率达到 5 MB/s 时,改用 DMA 方式传送数据。假定每次 DMA 传送的块大小为 5 000 B,DMA 预处理和后处理的总开销为 500 个时钟周期,则 CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?(假设 DMA 与 CPU 之间没有访存冲突)。

答案与解析

参考答案: (1)中断方式下,外设每传一个 32 位字(\(4\ \text{B}\))中断一次。单次中断含 18 条服务程序指令和折合 2 条指令的响应开销,共 20 条指令;按 \(\text{CPI} = 5\) 计算,单次中断耗费 \(20 \times 5 = 100\) 个时钟周期。外设传输率为 \(0.5\ \text{MB/s}\),每秒发起中断 \(0.5\ \text{MB} / 4\ \text{B} = 125\,000\) 次,每秒耗费 CPU 时钟周期 \(125\,000 \times 100 = 12.5\ \text{M}\) 个。CPU 主频为 \(500\ \text{MHz}\),故占用 CPU 时间百分比为 \(12.5\ \text{M} / 500\ \text{M} = 2.5\%\)。

(2)改用 DMA 方式且传输率升至 \(5\ \text{MB/s}\)、每块 \(5\,000\ \text{B}\) 时,每秒发起 DMA 块传输 \(5\ \text{MB} / 5\,000\ \text{B} = 1\,000\) 次。每次 DMA 块传输的预处理与后处理共花 500 个时钟周期,每秒耗费 CPU 时钟周期 \(1\,000 \times 500 = 0.5\ \text{M}\) 个,仅占 CPU 总时间的 \(0.5\ \text{M} / 500\ \text{M} = 0.1\%\)。

16. 假定一台旧式计算机没有 cache,且所有指令都需使用两个总线周期完成,其中一总线周期用来取指令,另一个总线周期用来访问数据。总线周期为 \(250\ \text{ns}\),因而,每条指令的执行时间为 \(500\ \text{ns}\)。若该计算机配置的磁盘上每个磁道有 16 个 512 字节的扇区,磁盘转一圈的时间是 \(8.192\ \text{ms}\),采用周期挪用法进行 DMA 传送。请回答下列问题。

(1)没有磁盘访问主存时,主存频带空间百分比是多少?

(2)若总线宽度为 16 位,则该计算机指令执行速度降低了百分之几?

(3)若总线宽度为 32 位,则该计算机指令执行速度降低了百分之几?

答案与解析

参考答案: (1)所有指令的取指与访存阶段都要占用主存总线周期,即使磁盘不访存,CPU 自己也把主存周期占满了,没有空闲存储周期。故主存频带空闲百分比为 \(0\%\)。

(2)先算磁盘数据传输率:每道容量 \(16 \times 512\ \text{B} = 8\,192\ \text{B}\),转一圈 \(8.192\ \text{ms}\),故传输率 \(= 8\,192\ \text{B} / 8.192\ \text{ms} = 1\ \text{MB/s}\)。总线宽 16 位(\(2\ \text{B}\))时,磁盘每备好 \(2\ \text{B}\) 就发起一次 DMA 周期挪用,间隔时间为 \(2\ \text{B} / (1\ \text{MB/s}) = 2\ \mu\text{s}\)。在不被打断时,CPU 在 \(2\ \mu\text{s}\) 内原本能跑 \(2\ \mu\text{s} / 500\ \text{ns} = 4\) 条指令;如今每跑 4 条指令就要被 DMA 插进 1 个总线周期(\(250\ \text{ns}\)),相当于平均每条指令被拖慢了 \(250\ \text{ns} / 4 = 62.5\ \text{ns}\),指令执行速度降低了 \(62.5 / 500 = 12.5\%\)。

(3)总线扩宽到 32 位(\(4\ \text{B}\))时,DMA 每隔 \(4\ \text{B} / (1\ \text{MB/s}) = 4\ \mu\text{s}\) 才挪用一次总线周期。\(4\ \mu\text{s}\) 内 CPU 能跑 \(4\ \mu\text{s} / 500\ \text{ns} = 8\) 条指令,每 8 条指令被插入 1 个总线周期(\(250\ \text{ns}\)),平均每条指令延长 \(250\ \text{ns} / 8 = 31.25\ \text{ns}\),指令执行速度降低了 \(31.25 / 500 = 6.25\%\)。

8 自编客观题(补充)

以下 15 题按 2024 年 10 月、2025 年 4 月两卷的客观题考点自编,用于检索式回忆;不是教材原题。

8.1 单项选择题

1. 显示器 1920×1080、24 位色,一帧的最低数据量约为

  • A. 2.07 MB

  • B. 8.29 MB

  • C. 6.22 MB

  • D. 24 MB

答案与解析

参考答案: C。\(1920\times1080\times24/8=6\ 220\ 800\) B,约 6.22 MB,不含其他缓冲与协议开销。

2. 7200 转/分磁盘的平均旋转等待时间约为

  • A. 4.17 ms

  • B. 2.08 ms

  • C. 8.33 ms

  • D. 16.7 ms

答案与解析

参考答案: A。转一圈需 \(60/7\ 200=8.33\) ms,随机位置平均等半圈,即 4.17 ms。

3. RAID 5 阵列用 4 个数据盘加 1 个校验盘存 10 TB 数据,所需总容量约为

  • A. 10 TB

  • B. 15 TB

  • C. 20 TB

  • D. 12.5 TB

答案与解析

参考答案: D。每 5 个盘有 1 个校验盘,冗余占 1/5 即 2.5 TB,合计 12.5 TB;20 TB 是 RAID 1 的用量。

4. 同步总线 64 位、时钟 200 MHz、每个时钟传 1 次数据,最大数据传输率为

  • A. 0.8 GB/s

  • B. 3.2 GB/s

  • C. 1.6 GB/s

  • D. 12.8 GB/s

答案与解析

参考答案: C。\(64/8\times200\text{M}\times1=1.6\) GB/s;12.8 是没有把位换成字节的结果。

5. PCIe 1.0 每 lane 单向 2.5 Gb/s、采用 8b/10b 编码,×8 的单向带宽为

  • A. 1 GB/s

  • B. 2 GB/s

  • C. 4 GB/s

  • D. 20 GB/s

答案与解析

参考答案: B。\(2.5\times0.8\times8/8=2\) GB/s;4 GB/s 是 ×16,20 GB/s 是把 20 Gb/s 的毛速率直接当成 GB/s(漏了编码效率,也没除以 8)。

6. 独立编址与统一编址的根本区别是

  • A. 是否使用中断

  • B. 是否使用 DMA

  • C. 端口是否做在接口里

  • D. I/O 端口是否另设地址空间、是否用专门的 I/O 指令

答案与解析

参考答案: D。独立编址另设 I/O 空间并用 I/O 指令,统一编址把端口映射进存储空间、用访存指令访问。

7. DMA 方式提高成批数据传送效率的主要原因是

  • A. DMA 不需要 CPU 初始化

  • B. 数据不逐字经过 CPU 寄存器,由控制器直接在设备与主存之间搬运

  • C. DMA 一定比中断方式快

  • D. DMA 不占用总线

答案与解析

参考答案: B。CPU 只做初始化与完成处理,省掉每个数据的中断进入退出;DMA 仍占总线与主存带宽。

8. 中断屏蔽字的作用是

  • A. 限制当前允许进入 CPU 的中断级别

  • B. 给出中断服务程序的入口地址

  • C. 保存断点与现场

  • D. 自动清除设备的中断请求

答案与解析

参考答案: A。屏蔽字管谁可以进来,优先级管多个请求先选谁;入口地址由中断向量给出。

9. 程序查询方式的主要缺点是

  • A. 硬件成本最高

  • B. CPU 反复查询状态,设备未就绪时只能忙等

  • C. 不能用于键盘输入

  • D. 必须配合 DMA 使用

答案与解析

参考答案: B。查询方式实现简单,代价是等待期间 CPU 被占住,做不了别的事。

10. 中断响应过程中最先完成的一步是

  • A. 保护通用寄存器

  • B. 关中断

  • C. 取中断向量

  • D. 恢复现场

答案与解析

参考答案: B。先关中断防止响应过程被新请求打断,再保护断点、识别中断源;保护通用寄存器是服务程序的动作。

8.2 填空题

11. 磁盘访问时间约为寻道时间、旋转等待时间、___ 与控制开销之和。

答案与解析

参考答案: 传输时间

12. 总线带宽等于总线宽度(字节)乘总线工作频率,再乘每个时钟周期传输的 ___。

答案与解析

参考答案: 数据个数

13. I/O 接口中记录就绪、忙、错误等信息的是 ___ 寄存器。

答案与解析

参考答案: 状态

14. DMA 传送结束后,DMA 控制器通常用 ___ 方式通知 CPU 做后处理。

答案与解析

参考答案: 中断

15. 外设每秒传 1 000 000 B(即十进制 1 MB)、每 4 B 中断一次、每次中断开销 200 个周期、CPU 为 1 GHz 时,CPU 开销约占 ___ %。

答案与解析

参考答案: 5.00(1 MB 按 10⁶ B 计,与教材例题口径一致;若按 2²⁰ B 计则为 5.24)

9 闭卷复习与跨章联系(补充)

一、闭卷自答(合上书逐题口述)

  1. 键盘、鼠标、打印机、显示器的共同点是什么?一帧显示数据量怎样估算?
  2. 磁盘容量与访问时间怎样算?平均旋转等待为什么是 30/r 秒?
  3. RAID 0、1、5 各靠什么机制?容错能力与容量利用率差在哪?
  4. 总线带宽的通用式是什么?DDR 的传输倍率、QPI 的有效数据位、PCIe 的编码开销,以及单向或双向统计各怎样处理?
  5. I/O 接口有哪些功能?接口与端口、独立编址与统一编址怎样区分?
  6. 查询、中断、DMA 三种方式分别由谁搬数据、CPU 何时介入、代价是什么?中断响应与处理各分几步?

二、本章易错

  1. 断点保护只由硬件保存返回地址 PC(与 PSW),现场保护则由中断服务程序保存通用寄存器,两者分工不同(第 5.2 节)。
  2. 中断响应优先级由硬件排队决定“同时请求先选谁”,中断屏蔽字则由软件动态限制“跑服务程序时允许谁插队嵌套”(第 5.2 节)。
  3. RAID 1 的镜像和 RAID 5 的分布式奇偶校验可提供单盘故障冗余,RAID 0 则不提供冗余。冗余也不能防止误删或恶意修改传播,因此不能替代独立备份(第 2 节)。

三、本章骨架

方式 谁搬数据 CPU 何时介入 主要代价
查询 CPU 指令 反复查状态并搬运 轮询或忙等
中断 CPU 指令 事件发生后服务 频繁进入退出与搬运
DMA DMA 控制器 配置及完成处理 管理、总线竞争

四、跨章指路

  1. 本章第 3 节的总线带宽计算与存储器总线计算(见第 5 章)共用同一口径,区别仅在数据通路对象。
  2. 异常和中断(见第 4 章)与本章的 I/O 中断是同一响应机制的两类来源:内部异常与指令同步,外部中断与指令异步。
  3. 操作系统课程中的设备管理(缓冲、SPOOLing、磁盘调度)建立在本章 I/O 控制方式之上,见《操作系统概论》第 6 章的设备管理。