综合练习题

一、计算机系统概述

题1

某计算机的主频为 2 GHz,某程序在该计算机上运行的 CPI 为 1.5,程序包含 2×1092 \times 10^9 条指令。求该程序的 CPU 执行时间。

参考答案(4 个标签)
CPU执行时间CPI主频性能指标
  1. CPU 时钟周期 = 1 / 主频 = 1 / (2 × 10^9) = 0.5 ns
  2. CPU 时钟周期数 = 指令数 × CPI = 2 × 10^9 × 1.5 = 3 × 10^9
  3. 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 倍,求系统整体加速比(用阿姆达尔定律)。

参考答案(4 个标签)
阿姆达尔定律加速比性能优化系统概述

阿姆达尔定律:加速比 S=1(1α)+αkS = \frac{1}{(1-\alpha) + \frac{\alpha}{k}}

其中:

  • α=0.4\alpha = 0.4(可改进部分占比)
  • k=5k = 5(改进倍数)

S=1(10.4)+0.45=10.6+0.08=10.681.47S = \frac{1}{(1-0.4) + \frac{0.4}{5}} = \frac{1}{0.6 + 0.08} = \frac{1}{0.68} \approx 1.47

答案:系统整体加速比约为 1.47 倍。

二、数据表示与运算

题3

已知 X=0.1011X = -0.1011Y=0.1101Y = 0.1101,用补码运算求 X+YX + Y(采用 5 位含符号位的补码表示)。

参考答案(4 个标签)
补码运算定点数加法数据表示
  1. [X]=1.1011[X]_{原} = 1.1011[X]=1.0101[X]_{补} = 1.0101(符号位不变,数值位取反加1:0.0100+0.0001=0.0101)
  2. [Y]=0.1101[Y]_{原} = 0.1101[Y]=0.1101[Y]_{补} = 0.1101(正数补码等于原码)
  3. [X+Y]=[X]+[Y]=1.0101+0.1101=10.0010[X+Y]_{补} = [X]_{补} + [Y]_{补} = 1.0101 + 0.1101 = 10.0010
  4. 模2丢弃进位:[X+Y]=0.0010[X+Y]_{补} = 0.0010
  5. 结果为正,X+Y=+0.0010X+Y = +0.0010

验证:X+Y=0.1011+0.1101=0.0010X+Y = -0.1011 + 0.1101 = 0.0010

答案X+Y=+0.0010X + Y = +0.0010

题4

IEEE 754 单精度浮点数格式中,阶码 8 位(偏移量 127),尾数 23 位(隐含最高位 1)。求十进制数 12.75-12.75 的 IEEE 754 单精度浮点数表示(用十六进制表示)。

参考答案(4 个标签)
IEEE754浮点数规格化数据表示
  1. 12.75-12.75 转换为二进制:

    • 整数部分:12=1100212 = 1100_2
    • 小数部分:0.75=0.1120.75 = 0.11_2
    • 12.75=1100.11212.75 = 1100.11_2
  2. 规格化:1100.112=1.10011×231100.11_2 = 1.10011 \times 2^3

  3. 符号位:负数,S=1S = 1

  4. 阶码:E=3+127=130=100000102E = 3 + 127 = 130 = 10000010_2

  5. 尾数:M=10011000000000000000000M = 10011000000000000000000(隐含最高位1,取小数点后23位)

  6. 组合:1 10000010 100110000000000000000001\ 10000010\ 10011000000000000000000

  7. 按4位分组:1100 0001 0100 1100 0000 0000 0000 00001100\ 0001\ 0100\ 1100\ 0000\ 0000\ 0000\ 0000

  8. 转换为十六进制:C14C000016C14C0000_{16}

答案12.75-12.75 的 IEEE 754 单精度表示为 C14C0000H

三、指令系统

题5

某计算机指令字长 16 位,每个地址码 4 位。采用扩展操作码技术,设计二地址指令 15 条、一地址指令 30 条,问最多还能设计多少条零地址指令?

参考答案(4 个标签)
扩展操作码指令格式指令系统操作码编码
  1. 二地址指令:操作码 16-4-4=8 位

    • 15 条二地址指令使用操作码 00000000 ~ 00001110
    • 保留 1111 作为扩展窗口(操作码 00001111 用于扩展)
  2. 一地址指令:操作码 8+4=12 位(高8位为1111,低4位可扩展)

    • 可扩展窗口:1111 × 16 = 16 个扩展码
    • 30 条一地址指令需要 30/16=2\lceil 30/16 \rceil = 2 个高8位扩展码
    • 使用 11110000 和 11110001 两个高8位码,共 32 个位置,用了 30 个
    • 剩余扩展窗口:16 - 2 = 14 个高8位码,每个可扩展 16 个一地址,即 14×16=224 个位置用于零地址扩展
  3. 零地址指令:操作码 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 个标签)
流水线吞吐率加速比冒险CPU
  1. 理想情况下(无冒险):

    • 第一条指令完成时间 = 5 × 100 = 500 ps
    • 后续每条指令完成时间 = 100 ps
    • 100 条指令总时间 = 500 + 99 × 100 = 10400 ps
  2. 实际 stall 数:

    • load 指令:20 × 1 = 20 个 stall
    • 分支指令:10 × 2 = 20 个 stall
    • 总 stall = 40 个
  3. 实际总时间 = 10400 + 40 × 100 = 14400 ps

  4. 实际吞吐率 = 指令数 / 总时间 = 100 / 14400 ps = 100 / (14.4 × 10^-9 s) ≈ 6.94 × 10^9 条/秒 ≈ 6.94 GIPS

  5. 串行执行时间 = 100 × 5 × 100 = 50000 ps

  6. 加速比 = 串行时间 / 流水线时间 = 50000 / 14400 ≈ 3.47

答案:实际吞吐率约为 6.94 GIPS,加速比约为 3.47。

五、存储器层次结构

题7

某计算机主存容量 64 KB,Cache 容量 1 KB,块大小 16 B,采用直接映射方式。求: (1) Cache 有多少行? (2) 主存地址格式(标记位、Cache行号、块内偏移各多少位)? (3) 主存地址 1234H 映射到 Cache 的哪一行?

参考答案(4 个标签)
Cache直接映射地址格式存储器层次
  1. Cache 行数 = Cache 容量 / 块大小 = 1 KB / 16 B = 1024 / 16 = 64 行

  2. 主存地址位数:64 KB = 2^16 B,地址 16 位

    • 块内偏移:16 B = 2^4,4 位
    • Cache 行号:64 行 = 2^6,6 位
    • 标记位:16 - 4 - 6 = 6 位
    • 地址格式:标记(6位) | Cache行号(6位) | 块内偏移(4位)
  3. 主存地址 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 个标签)
虚拟存储器页式管理TLB地址转换
  1. 页面大小 4 KB = 2^12 B,页内偏移 12 位

    • 虚拟地址 32 位,虚拟页号 = 32 - 12 = 20 位
    • 物理地址 24 位,物理页框号 = 24 - 12 = 12 位
  2. 页表项数 = 虚拟页数 = 2^20 = 1 M 个表项

  3. TLB 有 16 个表项,全相联映射,可缓存 16 个最近使用的页表项。

答案:(1) 虚拟页号20位,页内偏移12位;(2) 物理页框号12位,页内偏移12位;(3) 页表有 2^20 = 1M 个表项。

六、总线与IO系统

题9

某 32 位总线,时钟频率 66 MHz,每个总线周期传输 4 字节数据,支持突发传输,一次突发传输可连续传输 8 个总线周期的数据。求该总线的最大带宽(突发传输时)。

参考答案(4 个标签)
总线带宽突发传输总线性能指标
  1. 总线时钟周期 = 1 / 66 MHz ≈ 15.15 ns
  2. 每个总线周期传输 4 字节
  3. 突发传输时,一次突发传输 8 个周期的数据 = 8 × 4 = 32 字节
  4. 突发传输时间 = 8 × 15.15 ns ≈ 121.2 ns(假设地址传输开销忽略,或已包含在周期中)
  5. 最大带宽 = 数据量 / 时间 = 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 的时间占比是多少?

参考答案(4 个标签)
中断IO系统中断方式性能分析
  1. 设备数据传输率 10 KB/s = 10 × 1024 B/s = 10240 B/s

  2. 每次中断传输 2 字节

  3. 每秒中断次数 = 10240 / 2 = 5120 次/秒

  4. 每次中断 CPU 开销 = 中断服务时间 = 2 μs

  5. 每秒 CPU 用于该设备的时间 = 5120 × 2 μs = 10240 μs = 10.24 ms

  6. 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方式四大核心题型。