第 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 接口交换数据、命令和状态。
计算显示器显存容量与带宽时,可用下面的无压缩帧数据量公式:
算例:分辨率为 \(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 校验信息,所以其格式化容量小于只统计用户数据时的原始容量。
在理想均匀记录模型下,整盘格式化容量为:
读写一次磁盘扇区,总耗时由三段机械与传输时间(再加上题目可能给定的磁盘控制器开销)相加:
磁盘转速为 \(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 带宽计算¶
总线带宽计算需分清每次有效数据量、每秒传输次数,以及单向或双向口径。教材中的几类计算如下:
- 普通并行同步总线与 DDR 内存总线: $\(\text{总线带宽} = \frac{\text{总线宽度 } W\ (\text{位})}{8} \times \text{时钟频率 } F \times \text{每时钟周期传输次数 } M\)$
- 若单周期传 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}\)。
- 若题干直接给了等效传输频率(如
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}\)。 - 若问“某类具体总线事务(如读 1 字占 4 拍,或突发读 8 字占 11 拍)下的有效数据传输率”,就用单次事务实际传的字节数 \(\div\) 该事务占用的总时间(见习题 5、6)。
- 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{双向})\)$
- 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 按体系结构保存必要状态并转入入口;软件服务程序再保护通用寄存器、处理设备和恢复执行。中断源若采用软件查询,识别工作也包含软件操作:
- 中断请求与判优:外设准备就绪置中断请求标志,经硬件排队器或中断控制器按响应优先级挑出最高级请求报送 CPU。
- 关中断与保护断点(硬件):CPU 在当前指令结束点检测请求后,先关中断(置
IF = 0),再把返回地址(断点 PC)和程序状态字 PSW 压栈或存入专用寄存器。 - 识别中断源并转入口(硬件/软件):可用软件依次查各设备状态位(如习题 12 的
DEVINT),更常见的是用硬件向量中断——由设备送上中断类型号,硬件据此查中断向量表取出服务程序入口地址装入 PC。 - 保护现场、设备服务与开中断(软件):服务程序先保存将要使用的通用寄存器(现场)和旧屏蔽字。若允许更高优先级的多重中断(中断嵌套),先设置新的中断屏蔽字,再开中断,随后执行
IN/OUT或lw/sw传送数据。 - 恢复现场与中断返回(软件):数据处理完成后,先关中断,再从栈中恢复通用寄存器和旧屏蔽字。最后执行中断返回指令(如
IRET),恢复断点 PC 和中断允许状态,继续原程序。
区分两组概念:断点 \(\ne\) 现场,断点是恢复执行所用的地址,现场包括需要保存的寄存器状态;响应优先级 \(\ne\) 处理优先级,前者决定同时请求时先响应谁,后者决定哪些中断可打断当前服务程序。教材模型中,后者通过中断屏蔽字设置。
中断方式的 CPU 开销占比可先计算中断频率,再累计处理周期,见习题 13、14、15:
教材不设额外缓冲的逐次服务模型要求:相邻请求间隔 \(\Delta t = d / v\) 大于单次响应与处理时间。若上次尚未完成,下一份数据就已到达,该模型无法及时处理,应考虑 DMA 等方式,见习题 13(2)。实际设备还可能使用缓冲或批量中断,不能直接沿用这一简单判据。
5.3 DMA 方式¶
高速设备若每传少量数据就中断,CPU 开销会很大。DMA(直接存储器访问)由专用控制硬件在设备与主存间传输数据,减少 CPU 逐字搬运。教材的 DMA 控制器包括地址寄存器 AR/MAR、计数器 WC/DC、数据缓冲寄存器 BR/DR、控制/状态寄存器和中断机构:
- DMA 预处理(CPU 介入):CPU 设置读写方向、外设地址、主存缓冲区首地址和传输长度,然后启动 DMA。
- 数据块传送(DMA 控制器):外设每准备好一个字(或字节),就向 DMA 控制器发出 DMA 请求。控制器随后申请总线,取得一个存取周期(总线周期),直接在设备与主存之间传送数据,并更新主存地址和剩余计数。数据不经过 CPU 内部寄存器;在教材模型中,CPU 可继续执行指令,但访存可能因总线竞争而延迟。
- 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,由后者询问各终端状态标志,并为最先遇到的请求中断的终端服务,然后转向用户程序。
答案与解析
参考答案: 本题依赖教材流程图;按文字步骤作答如下:
- DEVCHC 是定时查询程序:定时信号到来即转入,按 \(i=1\sim20\) 顺序检查 \(Done_i\),为 1 则从 \(RDBR_i\) 取走字符、存入 \(PTR_i\) 指向的主存输入缓冲区并让 \(PTR_i\) 加 1,随后回送显示;20 个终端查完返回用户程序。
- 回送显示部分:查 \(Ready_i\),为 1 表示 \(TDBR_i\) 已空,从缓冲区取字符送入 \(TDBR_i\),硬件自动把 \(Ready_i\) 清 0;为 0 则本轮跳过。
- 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 位色,一帧的最低数据量约为
答案与解析
参考答案: C。\(1920\times1080\times24/8=6\ 220\ 800\) B,约 6.22 MB,不含其他缓冲与协议开销。
2. 7200 转/分磁盘的平均旋转等待时间约为
答案与解析
参考答案: A。转一圈需 \(60/7\ 200=8.33\) ms,随机位置平均等半圈,即 4.17 ms。
3. RAID 5 阵列用 4 个数据盘加 1 个校验盘存 10 TB 数据,所需总容量约为
答案与解析
参考答案: D。每 5 个盘有 1 个校验盘,冗余占 1/5 即 2.5 TB,合计 12.5 TB;20 TB 是 RAID 1 的用量。
4. 同步总线 64 位、时钟 200 MHz、每个时钟传 1 次数据,最大数据传输率为
答案与解析
参考答案: 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 的单向带宽为
答案与解析
参考答案: B。\(2.5\times0.8\times8/8=2\) GB/s;4 GB/s 是 ×16,20 GB/s 是把 20 Gb/s 的毛速率直接当成 GB/s(漏了编码效率,也没除以 8)。
6. 独立编址与统一编址的根本区别是
答案与解析
参考答案: D。独立编址另设 I/O 空间并用 I/O 指令,统一编址把端口映射进存储空间、用访存指令访问。
7. DMA 方式提高成批数据传送效率的主要原因是
答案与解析
参考答案: B。CPU 只做初始化与完成处理,省掉每个数据的中断进入退出;DMA 仍占总线与主存带宽。
8. 中断屏蔽字的作用是
答案与解析
参考答案: A。屏蔽字管谁可以进来,优先级管多个请求先选谁;入口地址由中断向量给出。
9. 程序查询方式的主要缺点是
答案与解析
参考答案: B。查询方式实现简单,代价是等待期间 CPU 被占住,做不了别的事。
10. 中断响应过程中最先完成的一步是
答案与解析
参考答案: 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 闭卷复习与跨章联系(补充)¶
一、闭卷自答(合上书逐题口述)
- 键盘、鼠标、打印机、显示器的共同点是什么?一帧显示数据量怎样估算?
- 磁盘容量与访问时间怎样算?平均旋转等待为什么是 30/r 秒?
- RAID 0、1、5 各靠什么机制?容错能力与容量利用率差在哪?
- 总线带宽的通用式是什么?DDR 的传输倍率、QPI 的有效数据位、PCIe 的编码开销,以及单向或双向统计各怎样处理?
- I/O 接口有哪些功能?接口与端口、独立编址与统一编址怎样区分?
- 查询、中断、DMA 三种方式分别由谁搬数据、CPU 何时介入、代价是什么?中断响应与处理各分几步?
二、本章易错
- 断点保护只由硬件保存返回地址 PC(与 PSW),现场保护则由中断服务程序保存通用寄存器,两者分工不同(第 5.2 节)。
- 中断响应优先级由硬件排队决定“同时请求先选谁”,中断屏蔽字则由软件动态限制“跑服务程序时允许谁插队嵌套”(第 5.2 节)。
- RAID 1 的镜像和 RAID 5 的分布式奇偶校验可提供单盘故障冗余,RAID 0 则不提供冗余。冗余也不能防止误删或恶意修改传播,因此不能替代独立备份(第 2 节)。
三、本章骨架
| 方式 | 谁搬数据 | CPU 何时介入 | 主要代价 |
|---|---|---|---|
| 查询 | CPU 指令 | 反复查状态并搬运 | 轮询或忙等 |
| 中断 | CPU 指令 | 事件发生后服务 | 频繁进入退出与搬运 |
| DMA | DMA 控制器 | 配置及完成处理 | 管理、总线竞争 |
四、跨章指路
- 本章第 3 节的总线带宽计算与存储器总线计算(见第 5 章)共用同一口径,区别仅在数据通路对象。
- 异常和中断(见第 4 章)与本章的 I/O 中断是同一响应机制的两类来源:内部异常与指令同步,外部中断与指令异步。
- 操作系统课程中的设备管理(缓冲、SPOOLing、磁盘调度)建立在本章 I/O 控制方式之上,见《操作系统概论》第 6 章的设备管理。