综合练习题
本套综合练习题覆盖计算机组成原理全课程核心知识点,建议在完成各章节学习后进行自测。每题均附详细解答。
一、计算机系统概述
题1
某计算机的主频为 2 GHz,某程序在该计算机上运行的 CPI 为 1.5,程序包含 条指令。求该程序的 CPU 执行时间。
- CPU 时钟周期 = 1 / 主频 = 1 / (2 × 10^9) = 0.5 ns
- CPU 时钟周期数 = 指令数 × CPI = 2 × 10^9 × 1.5 = 3 × 10^9
- CPU 执行时间 = 时钟周期数 × 时钟周期 = 3 × 10^9 × 0.5 × 10^-9 = 1.5 s
或者直接用公式:CPU 时间 = 指令数 × CPI / 主频 = (2×10^9 × 1.5) / (2×10^9) = 1.5 s
答案:CPU 执行时间为 1.5 秒。
题2
某计算机系统中,某功能的处理时间占总执行时间的 40%。若将该功能的速度提高到原来的 5 倍,求系统整体加速比(用阿姆达尔定律)。
阿姆达尔定律:加速比
其中:
- (可改进部分占比)
- (改进倍数)
答案:系统整体加速比约为 1.47 倍。
二、数据表示与运算
题3
已知 ,,用补码运算求 (采用 5 位含符号位的补码表示)。
- ,(符号位不变,数值位取反加1:0.0100+0.0001=0.0101)
- ,(正数补码等于原码)
- 模2丢弃进位:
- 结果为正,
验证: ✓
答案:。
题4
IEEE 754 单精度浮点数格式中,阶码 8 位(偏移量 127),尾数 23 位(隐含最高位 1)。求十进制数 的 IEEE 754 单精度浮点数表示(用十六进制表示)。
-
将 转换为二进制:
- 整数部分:
- 小数部分:
-
规格化:
-
符号位:负数,
-
阶码:
-
尾数:(隐含最高位1,取小数点后23位)
-
组合:
-
按4位分组:
-
转换为十六进制:
答案: 的 IEEE 754 单精度表示为 C14C0000H。
三、指令系统
题5
某计算机指令字长 16 位,每个地址码 4 位。采用扩展操作码技术,设计二地址指令 15 条、一地址指令 30 条,问最多还能设计多少条零地址指令?
-
二地址指令:操作码 16-4-4=8 位
- 15 条二地址指令使用操作码 00000000 ~ 00001110
- 保留 1111 作为扩展窗口(操作码 00001111 用于扩展)
-
一地址指令:操作码 8+4=12 位(高8位为1111,低4位可扩展)
- 可扩展窗口:1111 × 16 = 16 个扩展码
- 30 条一地址指令需要 个高8位扩展码
- 使用 11110000 和 11110001 两个高8位码,共 32 个位置,用了 30 个
- 剩余扩展窗口:16 - 2 = 14 个高8位码,每个可扩展 16 个一地址,即 14×16=224 个位置用于零地址扩展
-
零地址指令:操作码 12+4=16 位
- 可用扩展窗口:14 × 16 = 224 条
答案:最多还能设计 224 条零地址指令。
四、CPU 与流水线
题6
某五级流水线(取指IF、译码ID、执行EX、访存MEM、写回WB),每段延迟均为 100 ps。执行 100 条指令,其中有 20 条 load 指令(load 后第一条指令依赖 load 结果,产生1个 stall),10 条分支指令(分支预测错误,产生2个 stall)。求流水线的实际吞吐率和加速比。
-
理想情况下(无冒险):
- 第一条指令完成时间 = 5 × 100 = 500 ps
- 后续每条指令完成时间 = 100 ps
- 100 条指令总时间 = 500 + 99 × 100 = 10400 ps
-
实际 stall 数:
- load 指令:20 × 1 = 20 个 stall
- 分支指令:10 × 2 = 20 个 stall
- 总 stall = 40 个
-
实际总时间 = 10400 + 40 × 100 = 14400 ps
-
实际吞吐率 = 指令数 / 总时间 = 100 / 14400 ps = 100 / (14.4 × 10^-9 s) ≈ 6.94 × 10^9 条/秒 ≈ 6.94 GIPS
-
串行执行时间 = 100 × 5 × 100 = 50000 ps
-
加速比 = 串行时间 / 流水线时间 = 50000 / 14400 ≈ 3.47
答案:实际吞吐率约为 6.94 GIPS,加速比约为 3.47。
五、存储器层次结构
题7
某计算机主存容量 64 KB,Cache 容量 1 KB,块大小 16 B,采用直接映射方式。求: (1) Cache 有多少行? (2) 主存地址格式(标记位、Cache行号、块内偏移各多少位)? (3) 主存地址 1234H 映射到 Cache 的哪一行?
-
Cache 行数 = Cache 容量 / 块大小 = 1 KB / 16 B = 1024 / 16 = 64 行
-
主存地址位数:64 KB = 2^16 B,地址 16 位
- 块内偏移:16 B = 2^4,4 位
- Cache 行号:64 行 = 2^6,6 位
- 标记位:16 - 4 - 6 = 6 位
- 地址格式:标记(6位) | Cache行号(6位) | 块内偏移(4位)
-
主存地址 1234H = 0001 0010 0011 0100 B
- 块内偏移(低4位):0100 = 4
- Cache行号(中间6位):100011 = 35
- 标记(高6位):000100 = 4
答案:(1) Cache 有 64 行;(2) 标记6位、Cache行号6位、块内偏移4位;(3) 映射到 Cache 第 35 行。
题8
某虚拟存储器采用页式管理,页面大小 4 KB,虚拟地址 32 位,物理地址 24 位。TLB 有 16 个表项,采用全相联映射。求: (1) 虚拟页号和页内偏移各多少位? (2) 物理页框号和页内偏移各多少位? (3) 页表有多少个表项?
-
页面大小 4 KB = 2^12 B,页内偏移 12 位
- 虚拟地址 32 位,虚拟页号 = 32 - 12 = 20 位
- 物理地址 24 位,物理页框号 = 24 - 12 = 12 位
-
页表项数 = 虚拟页数 = 2^20 = 1 M 个表项
-
TLB 有 16 个表项,全相联映射,可缓存 16 个最近使用的页表项。
答案:(1) 虚拟页号20位,页内偏移12位;(2) 物理页框号12位,页内偏移12位;(3) 页表有 2^20 = 1M 个表项。
六、总线与IO系统
题9
某 32 位总线,时钟频率 66 MHz,每个总线周期传输 4 字节数据,支持突发传输,一次突发传输可连续传输 8 个总线周期的数据。求该总线的最大带宽(突发传输时)。
- 总线时钟周期 = 1 / 66 MHz ≈ 15.15 ns
- 每个总线周期传输 4 字节
- 突发传输时,一次突发传输 8 个周期的数据 = 8 × 4 = 32 字节
- 突发传输时间 = 8 × 15.15 ns ≈ 121.2 ns(假设地址传输开销忽略,或已包含在周期中)
- 最大带宽 = 数据量 / 时间 = 32 B / 121.2 ns ≈ 264 MB/s
或者更简单:每个周期4字节,66M周期/秒,带宽 = 4 × 66 = 264 MB/s
答案:总线最大带宽约为 264 MB/s。
题10
某 IO 设备采用中断方式与 CPU 交换数据,中断服务程序执行时间为 2 μs,设备数据传输率为 10 KB/s,每次中断传输 2 字节数据。求: (1) 设备每秒产生多少次中断? (2) CPU 用于该设备 IO 的时间占比是多少?
-
设备数据传输率 10 KB/s = 10 × 1024 B/s = 10240 B/s
-
每次中断传输 2 字节
-
每秒中断次数 = 10240 / 2 = 5120 次/秒
-
每次中断 CPU 开销 = 中断服务时间 = 2 μs
-
每秒 CPU 用于该设备的时间 = 5120 × 2 μs = 10240 μs = 10.24 ms
-
CPU 时间占比 = 10.24 ms / 1000 ms = 1.024%
答案:(1) 每秒产生 5120 次中断;(2) CPU 用于该设备 IO 的时间占比约为 1.024%。
总结
本套综合练习题涵盖了计算机组成原理的核心考点:
- 计算机系统概述(2题):CPU执行时间计算、阿姆达尔定律
- 数据表示与运算(2题):补码加法运算、IEEE754浮点数表示
- 指令系统(1题):扩展操作码编码计算
- CPU与流水线(1题):流水线吞吐率与加速比计算
- 存储器层次结构(2题):Cache直接映射与地址计算、虚拟存储器页式管理
- 总线与IO系统(2题):总线带宽计算、中断方式CPU开销分析
建议重点掌握补码与浮点数表示、Cache映射与地址计算、流水线性能分析、中断与DMA方式四大核心题型。
