导航菜单

综合练习题

本章综合练习题涵盖计算机系统概述的所有核心知识点,分为基础、中级、高级三个难度等级。

基础练习(1-10题)

练习 1

简述计算机系统的层次结构,并说明每层的主要功能。

参考答案

计算机系统的层次结构从下到上包括:

  1. 硬件层

    • 提供基本的物理设备
    • 执行最基本的电子操作
    • 例子:CPU、内存、硬盘
  2. 微程序层

    • 将机器指令分解为微操作
    • 控制硬件部件协调工作
    • 对程序员不可见
  3. 操作系统层

    • 管理硬件资源
    • 提供用户接口
    • 例子:Windows、Linux
  4. 系统软件层

    • 提供开发工具
    • 管理数据库
    • 例子:编译器、数据库系统
  5. 应用软件层

    • 直接为用户服务
    • 实现特定功能
    • 例子:浏览器、Office

优势:模块化、易维护、可扩展、可移植

练习 2

冯·诺依曼结构的五大部件是什么?各有什么功能?

参考答案

冯·诺依曼结构的五大部件:

  1. 运算器(ALU)

    • 执行算术运算(加减乘除)
    • 执行逻辑运算(与或非)
    • 执行移位操作
  2. 控制器

    • 取指令、译码
    • 发出控制信号
    • 控制程序执行顺序
  3. 存储器

    • 存储程序和数据
    • 包括内存(RAM/ROM)和外存(硬盘)
    • 提供数据读写功能
  4. 输入设备

    • 将外部信息转换为数字信号
    • 例子:键盘、鼠标、扫描仪
  5. 输出设备

    • 将计算结果转换为可理解的形式
    • 例子:显示器、打印机、音箱

核心思想:程序存储,指令和数据存储在同一存储器中

练习 3

什么是程序存储原理?它有什么重要意义?

参考答案

程序存储原理: 将程序指令和数据都存储在同一个存储器中,计算机按照程序指令的顺序自动执行。

重要意义

  1. 自动执行

    • 程序一旦加载,无需人工干预
    • 计算机自动按顺序执行指令
  2. 程序可修改

    • 程序存储在内存中,可以修改
    • 可以实现自修改程序
  3. 通用性

    • 同一台计算机可以运行不同程序
    • 只需更换存储器中的程序
  4. 灵活性

    • 程序和数据统一存储
    • 程序可以像数据一样被处理

历史意义: 这是现代计算机的基础,使得计算机从专用机器变成了通用机器!

练习 4

区分主存储器和辅助存储器,并举例说明。

参考答案

主存储器(内存)

特点:

  • 速度快
  • 容量较小
  • 价格较贵
  • 易失性(断电丢失)
  • CPU可以直接访问

例子:

  • RAM(DDR4、DDR5内存条)
  • ROM(BIOS芯片)
  • Cache(L1/L2/L3缓存)

辅助存储器(外存)

特点:

  • 速度较慢
  • 容量大
  • 价格便宜
  • 非易失性(断电保持)
  • CPU不能直接访问,需要先加载到内存

例子:

  • 机械硬盘(HDD)
  • 固态硬盘(SSD)
  • U盘、光盘

为什么需要两种存储器?

  • 主存速度快但贵,适合存储正在使用的程序和数据
  • 辅存容量大但慢,适合长期存储大量数据
  • 两者配合,平衡速度和容量

练习 5

简述指令执行的五个阶段。

参考答案

指令执行的五个阶段:

  1. 取指 (IF - Instruction Fetch)

    • 从内存中取出指令
    • 根据PC(程序计数器)的值读取指令
    • 将指令存入IR(指令寄存器)
    • PC自动加1,指向下一条指令
  2. 译码 (ID - Instruction Decode)

    • 分析指令的操作码
    • 确定指令类型和操作数位置
    • 读取寄存器中的操作数
    • 准备执行所需的控制信号
  3. 执行 (EX - Execute)

    • ALU执行算术或逻辑运算
    • 计算内存地址(访存指令)
    • 计算跳转目标地址(跳转指令)
  4. 访存 (MEM - Memory Access)

    • LOAD指令:从内存读取数据
    • STORE指令:将数据写入内存
    • 其他指令:跳过此阶段
  5. 写回 (WB - Write Back)

    • 将运算结果写回目标寄存器
    • 更新状态标志(零标志、进位标志等)
    • 准备执行下一条指令

这五个阶段构成一个完整的指令周期,不断循环执行。

练习 6

已知某CPU的时钟周期为0.5纳秒,求其主频是多少GHz?

参考答案

根据公式:主频 = 1 / 时钟周期

主频=10.5×109=10.5×109=2×109 Hz=2 GHz\text{主频} = \frac{1}{0.5 \times 10^{-9}} = \frac{1}{0.5} \times 10^9 = 2 \times 10^9 \text{ Hz} = 2 \text{ GHz}

答案:2 GHz

练习 7

某程序包含以下指令:

  • 50%的指令CPI=1
  • 30%的指令CPI=3
  • 20%的指令CPI=5

求该程序的平均CPI。

参考答案

使用加权平均公式:

平均CPI=(CPIi×比例i)\text{平均CPI} = \sum (\text{CPI}_i \times \text{比例}_i)平均CPI=1×0.5+3×0.3+5×0.2\text{平均CPI} = 1 \times 0.5 + 3 \times 0.3 + 5 \times 0.2=0.5+0.9+1.0=2.4= 0.5 + 0.9 + 1.0 = 2.4

答案:平均CPI = 2.4

解释:这意味着平均每条指令需要2.4个时钟周期。

练习 8

某程序包含200万条指令,平均CPI为3,CPU主频为2.5GHz。求CPU执行时间。

参考答案

使用CPU时间公式:

CPU时间=指令数×CPI主频\text{CPU时间} = \frac{\text{指令数} \times \text{CPI}}{\text{主频}}CPU时间=2,000,000×32.5×109\text{CPU时间} = \frac{2,000,000 \times 3}{2.5 \times 10^9}=6,000,0002,500,000,000=0.0024 秒=2.4 毫秒= \frac{6,000,000}{2,500,000,000} = 0.0024 \text{ 秒} = 2.4 \text{ 毫秒}

答案:CPU执行时间 = 2.4毫秒

练习 9

什么是ISA(指令集体系结构)?它的作用是什么?

参考答案

ISA(Instruction Set Architecture,指令集体系结构)

定义: 软件和硬件之间的接口,定义了计算机的指令格式、功能和执行方式。

主要内容

  1. 指令格式:指令的编码方式
  2. 指令功能:每条指令做什么
  3. 寄存器:数量、大小、用途
  4. 数据类型:支持的数据格式
  5. 寻址方式:如何访问数据

作用

  1. 软硬件接口

    • 软件按ISA编写程序
    • 硬件按ISA执行指令
  2. 兼容性

    • 同一ISA的不同CPU可以运行相同程序
    • 例如:所有x86 CPU都能运行Windows
  3. 标准化

    • 促进软硬件独立发展
    • 硬件升级不影响软件

常见ISA

  • x86/x86-64:Intel、AMD的PC处理器
  • ARM:手机、平板、嵌入式设备
  • RISC-V:开源指令集,新兴架构

练习 10

为什么现代CPU要设计多级缓存(L1/L2/L3)?

参考答案

原因

  1. 速度差距

    • CPU主频:3-5GHz(每秒几十亿次)
    • 内存访问:10-100ns(相对很慢)
    • 如果每次都访问内存,CPU大部分时间在等待
  2. 局部性原理

    • 时间局部性:刚访问的数据很可能再次访问
    • 空间局部性:访问某数据后,很可能访问附近的数据
  3. 多级缓存设计

L1 Cache

  • 最快(1-2个时钟周期)
  • 最小(32-64KB)
  • 每个核心独立

L2 Cache

  • 较快(10-20个时钟周期)
  • 较大(256KB-1MB)
  • 每个核心独立或共享

L3 Cache

  • 相对慢(30-50个时钟周期)
  • 最大(8-36MB)
  • 所有核心共享

效果

  • 命中率90%以上时,平均访问时间接近L1
  • 大大提升CPU性能

类比: 就像你的书桌(L1)、书架(L2)、图书馆(L3)、网上书店(内存)

  • 常用的书放桌上,拿取最快
  • 不常用的放书架,稍慢
  • 很少用的去图书馆,更慢
  • 没有的才去网上买,最慢

中级练习(11-15题)

练习 11

比较两个CPU的性能:

CPU A:主频2.5GHz,CPI=2.5,执行程序需要1200万条指令 CPU B:主频3.5GHz,CPI=3.5,执行同一程序需要1000万条指令

哪个CPU执行这个程序更快?快多少?

参考答案

CPU A的执行时间

时间A=12,000,000×2.52.5×109=30,000,0002,500,000,000=0.012 秒=12 毫秒\text{时间}_A = \frac{12,000,000 \times 2.5}{2.5 \times 10^9} = \frac{30,000,000}{2,500,000,000} = 0.012 \text{ 秒} = 12 \text{ 毫秒}

CPU B的执行时间

时间B=10,000,000×3.53.5×109=35,000,0003,500,000,000=0.01 秒=10 毫秒\text{时间}_B = \frac{10,000,000 \times 3.5}{3.5 \times 10^9} = \frac{35,000,000}{3,500,000,000} = 0.01 \text{ 秒} = 10 \text{ 毫秒}

加速比

加速比=时间A时间B=1210=1.2\text{加速比} = \frac{\text{时间}_A}{\text{时间}_B} = \frac{12}{10} = 1.2

答案:CPU B更快,快20%(或快2毫秒)

分析

  • CPU B虽然CPI更高(效率更低),但主频更高且指令数更少
  • 编译器优化减少了约17%的指令,这是关键因素
  • 这说明:性能不只看硬件,软件优化同样重要!

练习 12

某程序70%的代码可以并行化。如果使用8个处理器,根据Amdahl定律,理论加速比是多少?

参考答案

Amdahl定律公式:

加速比=1(1P)+PN\text{加速比} = \frac{1}{(1-P) + \frac{P}{N}}

其中 P = 0.7(可并行部分),1-P = 0.3(串行部分),N = 8

加速比8=10.3+0.78=10.3+0.0875=10.38752.58\text{加速比}_8 = \frac{1}{0.3 + \frac{0.7}{8}} = \frac{1}{0.3 + 0.0875} = \frac{1}{0.3875} \approx 2.58

理论极限(无限个处理器):

加速比=10.33.33\text{加速比}_{\infty} = \frac{1}{0.3} \approx 3.33

答案

  • 8个处理器:加速约2.58倍
  • 理论极限:3.33倍

分析

  • 30%的串行部分限制了加速比
  • 即使有无限个处理器,最多也只能快3.33倍
  • 这就是为什么要优化串行部分!

练习 13

解释什么是”冯·诺依曼瓶颈”,以及如何缓解?

参考答案

冯·诺依曼瓶颈

定义: 程序指令和数据都存储在同一存储器中,并通过同一总线传输,导致CPU和存储器之间的数据传输成为性能瓶颈。

具体表现

  1. 总线带宽限制

    • CPU速度远快于内存
    • 总线成为瓶颈
  2. 指令和数据冲突

    • 取指令和取数据竞争总线
    • 不能同时进行

缓解方法

  1. Cache技术

    • 在CPU和内存间加入高速缓存
    • 减少对主存的访问
  2. 哈佛结构

    • 指令和数据分开存储
    • 使用独立的总线
    • 可同时取指令和数据
  3. 流水线技术

    • 指令执行分阶段
    • 多条指令并行执行
  4. 多级存储

    • 寄存器、L1/L2/L3 Cache、内存、硬盘
    • 平衡速度和容量
  5. 预取技术

    • 预测将要访问的数据
    • 提前加载到Cache
  6. 增加总线带宽

    • 更宽的数据总线
    • 更高的总线频率
    • 例如:DDR5比DDR4快

现代解决方案: 现代CPU综合使用以上所有技术,大大缓解了冯·诺依曼瓶颈。

练习 14

某程序原始执行时间为20秒,其中:

  • 访存操作占50%的时间(10秒)
  • 计算操作占50%的时间(10秒)

有两种优化方案:

  • 方案A:优化访存,使访存时间减少60%
  • 方案B:优化计算,使计算时间减少80%

哪个方案效果更好?

参考答案

方案A(优化访存)

  • 访存时间:10秒 × 40% = 4秒(节省6秒)
  • 计算时间:10秒(不变)
  • 总时间:4 + 10 = 14秒
  • 加速比:20 / 14 ≈ 1.43

方案B(优化计算)

  • 访存时间:10秒(不变)
  • 计算时间:10秒 × 20% = 2秒(节省8秒)
  • 总时间:10 + 2 = 12秒
  • 加速比:20 / 12 ≈ 1.67

答案:方案B效果更好(快2秒)

分析: 虽然方案A的优化幅度小(60% vs 80%),但因为两部分占比相同(都是50%),所以优化幅度大的方案B效果更好。

结论

  • 当各部分占比相近时,优化幅度大的效果好
  • 当占比差异大时,优化占比大的部分效果好
  • Make the common case fast!(优化常见情况)

练习 15

比较CISC和RISC两种指令集架构的特点。

参考答案

CISC(Complex Instruction Set Computer,复杂指令集)

特点:

  • 指令数量多(几百条)
  • 指令功能强大(一条指令完成复杂操作)
  • 指令长度不固定
  • 寻址方式多样

优点:

  • 程序代码短
  • 编译器设计简单
  • 兼容性好

缺点:

  • 硬件复杂
  • 指令执行时间不一致
  • 流水线效率低

代表:Intel x86、x86-64

RISC(Reduced Instruction Set Computer,精简指令集)

特点:

  • 指令数量少(几十条)
  • 指令功能简单
  • 指令长度固定
  • 寻址方式简单

优点:

  • 硬件简单
  • 指令执行时间一致
  • 流水线效率高
  • 功耗低

缺点:

  • 程序代码较长
  • 编译器设计复杂

代表:ARM、RISC-V、MIPS

现状: 现代处理器多采用混合设计,外部是CISC(兼容性),内部转换为RISC微操作(性能)。

高级练习(16-20题)

练习 16

一台计算机的配置为:Intel i7-13700K CPU、32GB DDR5内存、1TB NVMe SSD。请分析这台计算机的五大部件分别是什么,并评估其性能。

参考答案

五大部件分析

  1. 运算器

    • Intel i7-13700K CPU内部的ALU
    • 16核心(8性能核+8能效核)
    • 每个核心都有独立的ALU
    • 支持AVX-512指令集(高级运算)
  2. 控制器

    • Intel i7-13700K CPU内部的控制单元
    • 每个核心都有独立的控制器
    • 负责取指令、译码、发出控制信号
    • 支持超线程技术(24线程)
  3. 存储器

    • 主存:32GB DDR5内存
      • 速度:DDR5-4800或更高
      • 易失性存储
    • Cache:CPU内置
      • L1:约1.25MB
      • L2:约16MB
      • L3:30MB
    • 辅存:1TB NVMe SSD
      • 读写速度:3000-7000MB/s
      • 非易失性存储
  4. 输入设备(配置未列出,常见的有):

    • 键盘、鼠标、麦克风、摄像头
  5. 输出设备(配置未列出,常见的有):

    • 显示器、音箱、打印机

性能评估

这是一台高性能PC,适合:

  • 游戏(需配独立显卡)
  • 视频编辑
  • 3D渲染
  • 软件开发
  • 多任务处理

优势

  • CPU性能强(16核24线程)
  • 内存大且快(32GB DDR5)
  • 存储快(NVMe SSD)

可能的瓶颈

  • 如果用于游戏或3D渲染,需要配独立显卡
  • 对于专业视频编辑,可能需要更大内存(64GB)

练习 17

为什么说”程序和数据在本质上是相同的”?这个概念有什么实际应用?

参考答案

为什么程序和数据本质相同

  1. 存储形式相同

    • 程序和数据都以二进制形式存储
    • 都存储在同一个存储器中
    • CPU无法区分某个二进制数是指令还是数据
  2. 可互相转换

    • 程序可以作为数据被读取、修改
    • 数据可以作为程序被执行
  3. 统一处理

    • 都可以被加载到内存
    • 都可以被CPU处理
    • 都可以被存储到硬盘

实际应用

  1. 编译器和解释器

    • 编译器读取源代码(数据)
    • 生成可执行程序(程序)
    • 源代码既是数据也是程序
  2. 动态加载

    • 程序运行时加载插件
    • 插件是数据文件,加载后变成程序
  3. 自修改代码

    • 程序运行时修改自己的指令
    • JIT编译器(Java、JavaScript)
  4. 病毒和安全

    • 病毒伪装成数据文件
    • 执行后变成恶意程序
    • 这也是为什么不要随便执行未知文件
  5. 虚拟机

    • 虚拟机把程序当作数据
    • 模拟执行其他平台的程序

哲学意义: 这个概念体现了计算机的通用性——同一台机器可以通过改变存储的内容来执行不同的任务。这是现代计算机革命性的创新!

练习 18

某公司需要购买服务器,有两个选择:

服务器A

  • CPU:Intel Xeon,主频3.2GHz,24核
  • 内存:128GB DDR4-3200
  • 价格:$5000

服务器B

  • CPU:AMD EPYC,主频2.5GHz,48核
  • 内存:256GB DDR4-3200
  • 价格:$8000

公司的主要工作负载:

  • 80%是Web服务(高并发,可并行)
  • 20%是数据分析(部分可并行)

你会推荐哪个?请说明理由。

参考答案

分析

工作负载特征

  • Web服务(80%):高并发,可充分利用多核
  • 数据分析(20%):部分可并行,也需要单核性能

服务器A的优势

  • 单核性能强(3.2GHz)
  • 价格便宜$3000
  • 适合单线程任务

服务器B的优势

  • 核心数多(48核 vs 24核)
  • 内存大(256GB vs 128GB)
  • 适合高并发场景

性能估算

Web服务性能(假设可完全并行):

  • 服务器A:24核 × 3.2GHz = 76.8 GHz·核
  • 服务器B:48核 × 2.5GHz = 120 GHz·核
  • 服务器B快约57%

数据分析性能(假设50%可并行): 根据Amdahl定律,多核优势会打折扣,但服务器B仍有优势

推荐选择服务器B

理由

  1. 工作负载匹配:80%是高并发Web服务,充分利用48核
  2. 内存优势:256GB内存对Web服务和数据分析都重要
  3. 未来扩展:业务增长时,多核和大内存更有价值
  4. 性价比:虽然贵$3000,但性能提升超过50%

但如果

  • 预算紧张:选A
  • 主要是单线程任务:选A
  • 需要最高单核性能:选A

结论:没有绝对的”最好”,要根据实际需求选择!

练习 19

某程序原始性能:执行时间10秒,其中CPU时间8秒,I/O时间2秒。

现在有三种优化方案:

  • 方案A:升级CPU,使CPU时间减少50%
  • 方案B:升级SSD,使I/O时间减少80%
  • 方案C:同时升级CPU和SSD

分别计算三种方案的加速比,并分析哪种方案最划算(假设A和B成本相同)。

参考答案

方案A(升级CPU)

  • CPU时间:8秒 × 50% = 4秒
  • I/O时间:2秒(不变)
  • 总时间:4 + 2 = 6秒
  • 加速比:10 / 6 ≈ 1.67

方案B(升级SSD)

  • CPU时间:8秒(不变)
  • I/O时间:2秒 × 20% = 0.4秒
  • 总时间:8 + 0.4 = 8.4秒
  • 加速比:10 / 8.4 ≈ 1.19

方案C(同时升级)

  • CPU时间:4秒
  • I/O时间:0.4秒
  • 总时间:4.4秒
  • 加速比:10 / 4.4 ≈ 2.27

答案

  • 方案A:加速1.67倍(最划算)
  • 方案B:加速1.19倍
  • 方案C:加速2.27倍(最快,但成本双倍)

分析

这是Amdahl定律的实际应用:

  1. 方案A效果最好

    • CPU时间占80%,是主要瓶颈
    • 优化主要瓶颈效果最明显
    • Make the common case fast!
  2. 方案B效果有限

    • I/O时间只占20%
    • 即使优化80%,总体提升也有限
  3. 方案C效果最好但成本高

    • 如果预算充足,这是最佳选择
    • 但性价比不如方案A

结论

  • 如果预算有限:选方案A
  • 如果追求极致性能:选方案C
  • 方案B不推荐(性价比最低)

启示: 优化性能时,要先找到主要瓶颈,优化占比大的部分效果最好!

练习 20

设计一个简单的性能测试方案,用于比较两台计算机的整体性能。要求:

  1. 列出需要测试的性能指标
  2. 说明测试方法
  3. 如何综合评估
参考答案

性能测试方案

一、测试指标

  1. CPU性能

    • 单核性能
    • 多核性能
    • 浮点运算能力
  2. 内存性能

    • 读写速度
    • 延迟
    • 带宽
  3. 存储性能

    • 顺序读写速度
    • 随机读写速度
    • IOPS(每秒I/O操作数)
  4. 图形性能(如果有独显):

    • 3D渲染性能
    • 游戏帧率
  5. 整体性能

    • 系统响应时间
    • 多任务处理能力

二、测试方法

  1. CPU测试

    • 工具:Cinebench R23、Geekbench
    • 方法
      • 单核测试:运行单线程基准测试
      • 多核测试:运行多线程基准测试
      • 记录分数
  2. 内存测试

    • 工具:AIDA64、MemTest
    • 方法
      • 测试读写速度
      • 测试延迟
      • 记录带宽
  3. 存储测试

    • 工具:CrystalDiskMark、AS SSD
    • 方法
      • 顺序读写测试
      • 4K随机读写测试
      • 记录速度和IOPS
  4. 图形测试

    • 工具:3DMark、Unigine
    • 方法
      • 运行标准测试场景
      • 记录帧率和分数
  5. 实际应用测试

    • 方法
      • 视频编码:测试编码1GB视频的时间
      • 文件压缩:测试压缩大文件的时间
      • 程序编译:测试编译大项目的时间

三、综合评估

  1. 加权评分

    • 根据使用场景设定权重
    • 例如:游戏用户,图形性能权重高
    • 例如:开发者,CPU和内存权重高
  2. 性价比计算

    性价比=综合性能分数价格\text{性价比} = \frac{\text{综合性能分数}}{\text{价格}}
  3. 实际体验

    • 系统启动时间
    • 应用打开速度
    • 多任务流畅度
  4. 能效比

    能效比=性能功耗\text{能效比} = \frac{\text{性能}}{\text{功耗}}

四、评估示例

假设两台电脑测试结果:

指标电脑A电脑B权重
CPU单核1500分1800分20%
CPU多核12000分15000分30%
内存速度50GB/s60GB/s15%
存储速度3000MB/s5000MB/s20%
图形性能8000分10000分15%

综合分数计算…

结论: 根据测试结果和使用需求,给出推荐建议。


总结

练习题分布

难度题号数量重点内容
基础1-1010题基本概念、五大部件、指令执行、简单计算
中级11-155题性能对比、Amdahl定律、架构对比、优化分析
高级16-205题综合分析、实际应用、性能评估、方案设计

学习建议

  1. 基础题必须全部掌握:这是后续学习的基础
  2. 中级题重点理解:培养分析和计算能力
  3. 高级题拓展思维:培养综合应用和决策能力
  4. 反复练习:特别是计算题,要熟练掌握公式

完成这些练习后,你将对计算机系统概述有全面深入的理解!💪

搜索