22-23真题解析

选择

RISC与CISC的区别

1

答案:C

  • 选项A错误:RISC指令条数少只是表面特征,并非速度快的根本原因。实际上,完成相同功能,RISC通常需要更多条指令(因为单条指令功能简单)。
  • 选项B错误:RISC的目标程序通常更长,而非更短。因为复杂操作需要多条简单指令组合实现,这是RISC将硬件复杂性转移给编译器的体现。
  • 选项C正确:根据计算机性能公式:程序执行时间 = 指令数 × CPI(每条指令平均时钟周期数) × 时钟周期时间。RISC的核心优势在于CPI极低(绝大多数指令单周期执行),虽然指令数可能比CISC多,但CPI的大幅降低带来了整体执行速度的提升。
  • 选项D错误:”只允许load和store指令访存”是RISC的重要设计特点(加载-存储架构),但它是导致CPI较低的原因之一,而非RISC速度更快的直接、根本原因。

计算机系统结构创新与摩尔定律

2

答案:D

  • 选项A错误:器件更新换代(摩尔定律)是过去几十年计算机性能提升的主要动力,但目前晶体管尺寸已接近物理极限,摩尔定律显著放缓,单纯依靠工艺进步带来的性能提升越来越有限。
  • 选项B错误:软件发展可以优化程序执行效率,但它是在硬件基础上的改进,无法从根本上突破硬件架构的性能瓶颈。
  • 选项C错误:操作系统更新主要提升系统的兼容性、安全性和资源管理效率,对整体计算性能的提升幅度有限,不是核心推动力。
  • 选项D正确:在摩尔定律失效的背景下,计算机系统结构的创新已成为未来性能提升的主要途径,包括多核架构、异构计算、专用加速器(GPU/TPU/NPU)、RISC架构、3D堆叠、存算一体等技术,这些都属于系统结构层面的突破。

并行性的三大基本技术途径

3

答案:D

提高计算机系统并行性的三大基本技术途径是:

  • A. 时间重叠:让多个任务在时间上重叠执行,典型代表是流水线技术,属于时间维度的并行。
  • B. 资源共享:多个任务分时共享同一套硬件资源,典型代表是多道程序、分时系统,通过软件调度实现宏观上的并行。
  • C. 资源重复:通过重复设置硬件资源来实现并行,典型代表是多核CPU、多处理器系统、阵列处理机,属于空间维度的并行。

D. 专用硬件加速:这是一种性能优化手段(如GPU、TPU、NPU等),通过定制硬件加速特定任务,但它不属于提高并行性的基本技术途径,而是并行技术在特定领域的应用实现。

兼容原则

4

答案:C

系列机软件兼容性的核心原则如下:

  • 向后兼容(必须做到):新机型能够运行旧机型上的所有软件。这是系列机最基本的要求,目的是保护用户已有的软件投资,确保用户升级硬件后原有业务不受影响。
  • 向前兼容(一般不要求):旧机型能够运行新机型上的软件。这通常无法实现,因为新软件会利用新硬件的新增指令和特性,旧硬件不具备这些能力。
  • 向上兼容(力争做到):同系列低档机型的软件能够在高档机型上正常运行。这是系列机设计的重要目标,方便用户从低档机平滑升级到高档机,获得更好的性能。
  • 向下兼容(一般不要求):高档机型的软件能够在低档机型上运行。这通常无法实现,因为高档机软件可能依赖只有高档机才具备的硬件资源和性能。

因此,系列机软件应做到向后兼容(硬性要求),力争向上兼容(优化目标)

Flynn计算机分类方法与多处理机

5

答案:D

弗林(Flynn)分类法是根据计算机系统中指令流数据流的并行性程度进行分类,多处理机的归属如下:

类别 名称 描述 典型代表/地位
SISD 单指令流单数据流 传统的单核串行计算机,同一时刻只能执行一条指令、处理一个数据。 早期串行计算机
SIMD 单指令流多数据流 同一时刻执行同一条指令,但同时处理多个不同的数据。 GPU、向量处理器、阵列处理机
MISD 多指令流单数据流 多条不同的指令同时处理同一个数据,这种结构在实际中几乎没有应用,仅存在于理论研究。 仅理论研究
MIMD 多指令流多数据流 多个处理器同时执行不同的指令流,处理不同的数据流。多处理机系统(包括多核CPU、多处理器服务器、计算机集群)都属于这一类别 目前主流的并行计算机结构

判断

性能判断标准

6

答案:正确(√)

对于特定程序,执行时间是衡量计算机系统性能最直接、最可靠的标准。它直接反映了计算机完成该任务的实际快慢,符合”完成相同工作,时间越短性能越高”的基本性能定义。

主频、MIPS、CPI等都是间接性能指标,存在明显局限性:

  • 主频高不代表实际执行速度快(不同架构的指令效率不同)
  • MIPS无法比较不同指令集架构的性能
  • CPI需要结合指令数和时钟周期才能计算实际性能
指标 英文全称 含义 说明
CPI Cycles Per Instruction 每条指令平均时钟周期数 RISC的核心优势在于CPI极低,绝大多数指令单周期执行
程序执行时间 Program Execution Time 完成程序所需的实际时间 衡量性能最直接、最可靠的标准
主频 Clock Frequency CPU的时钟频率 高主频不代表实际执行速度快(不同架构指令效率不同)
MIPS Million Instructions Per Second 每秒执行百万条指令数 无法比较不同指令集架构的性能
时钟周期时间 Clock Cycle Time 一个时钟周期的时间长度 与主频互为倒数,用于性能公式计算
性能计算公式

其中各符号含义如下:

  • T_exec:程序执行时间(Execution Time)
  • N_instr:指令数(Instruction Count)
  • CPI:每条指令平均时钟周期数(Cycles Per Instruction)
  • T_clk:时钟周期时间(Clock Cycle Time)

软件硬件接口

7

答案:错误(×)

计算机系统中,软件和硬件的真正接口是指令集架构(ISA),而非操作系统:

  • 指令集架构(ISA):定义了硬件能够识别和执行的指令集合、寄存器、寻址方式等,是硬件设计的依据,也是所有软件(包括操作系统)最终编译执行的基础。
  • 操作系统:是运行在ISA之上的系统软件,它是用户与计算机硬件之间的接口,为上层应用程序提供了进程管理、内存管理、文件系统等高级抽象服务,但它本身也是软件的一部分。

8

主存 - 辅存 与 主存 - cache

9

答案:正确(√)

计算机存储系统采用层次化设计,不同层次解决不同的问题:

  • “主存-辅存”层次(虚拟存储系统):辅存(硬盘、SSD等)具有容量大、价格低的特点,但访问速度远慢于主存。该层次通过虚拟存储技术,将主存和辅存统一编址,为用户提供一个容量接近辅存、速度接近主存的虚拟地址空间,核心目的是弥补主存容量的不足
  • “Cache-主存”层次(高速缓冲存储系统):Cache(高速缓存)速度接近CPU,但容量小、价格高。该层次利用程序的局部性原理,将CPU近期可能频繁访问的数据和指令从主存复制到Cache中,核心目的是弥补主存速度(性能)的不足,解决CPU与主存之间的速度不匹配问题。

摩尔定律内容

10

答案:错误(×)

摩尔定律的原始且核心表述是:集成电路上可容纳的晶体管数目,约每隔18-24个月便会增加一倍,同时芯片的性能也将提升一倍或成本降低一半。

题目中的说法是对摩尔定律的常见误解:

  • 时钟频率的提升只是早期晶体管数量增加带来的结果之一,并非摩尔定律本身的内容
  • 大约从2005年开始,由于功耗和散热的物理限制,单芯片的时钟频率提升已经基本停滞
  • 现代处理器主要通过增加核心数量、改进架构和采用异构计算来提升性能,而非单纯提高时钟频率

集群

11

答案:错误(×)

计算机集群的定义是一组通过网络连接的计算机,在集群软件的统一管理和调度下协同工作,对外表现为一个单一的系统

仅仅将N台服务器通过网络物理连接起来,并不能构成集群。真正的集群还必须具备以下核心要素:

  • 集群管理软件:负责节点发现、状态监控和资源管理
  • 任务调度系统:能够将任务分配到不同的服务器节点上执行
  • 协同工作机制:节点之间可以通信、数据共享和负载均衡
  • 高可用机制:当部分节点故障时,任务可以自动转移到其他节点

没有这些软件层面的支持,这些服务器只是相互独立的个体,无法协同完成任务,也就不能称为集群系统。

常见集群实例

  • Redis 哨兵(Sentinel)模式:多个 Redis 节点组成集群,哨兵进程监控主从节点状态,当主节点故障时自动完成故障转移,保证服务的高可用性。
  • Nginx 负载均衡:Nginx 作为反向代理,将客户端请求分发到后端多台服务器,实现流量分摊和故障自动剔除,对外表现为单一入口。
  • Kubernetes 容器集群:通过 Master 节点统一管理多个 Worker 节点,自动调度容器、实现服务发现和弹性伸缩。
  • Hadoop 分布式集群:HDFS 将数据分散存储在多个 DataNode 上,YARN 统一调度计算任务到各节点执行,实现大规模数据的分布式处理。

计算题

CPI、MIPS 与执行时间计算

12

题目: 假定用一台 200 MHz 处理器执行标准测试程序,该程序含有整数运算、数据传送、浮点运算和控制传送等指令,各类指令的数量和所需时钟周期数如下:

指令类型 指令数 时钟周期数
整数运算 5500 1
数据传送 4000 2
浮点运算 1200 3
控制传送 1000 2

请计算:

  1. CPU 执行该程序的 CPI
  2. CPU 执行该程序的 MIPS
  3. 该程序的 CPU 执行时间(单位:微秒)

解答:

在动手计算之前,先理清三个指标的含义和它们之间的关系:

什么是 MIPS?

MIPS 是 Million Instructions Per Second 的缩写,意为”每秒执行百万条指令数“,是衡量 CPU 运算速度的一个经典性能指标。

它的核心思想很简单:同样运行一秒钟,能执行更多指令的 CPU 当然更快。计算公式为:

也可以直接用主频和 CPI 推导:

为什么除以 10⁶? 因为 1 MHz = 10⁶ Hz,除以 10⁶ 就把结果换算成了”百万条”的单位。例如主频 200 MHz,如果 CPI = 1,那理想情况下每秒能执行 200 × 10⁶ 条指令,即 200 MIPS

但要注意:MIPS 是一个”不太靠谱”的性能指标。不同指令集架构(ISA)的指令复杂度差异很大——一条 x86 的复杂指令可能顶得上好几条 RISC 的简单指令。所以 MIPS 只适合在同架构、同指令集的 CPU 之间比较,跨架构比较会失真。这也是为什么现代评测更倾向用 SPEC 等真实程序基准测试,而不是单纯看 MIPS。

三个指标的关系脉络:

  • CPI → 反映”每条指令要吃掉多少个时钟周期”(由程序指令 mix 和 CPU 微架构决定)
  • 主频 → 反映”每秒钟有多少个时钟周期”(由 CPU 制造工艺决定)
  • MIPS → 由前两者共同决定:主频越高、CPI 越低,MIPS 就越高
  • 执行时间 → 最终的实际耗时,是衡量性能最直观、最可靠的指标

首先,计算总指令数和总时钟周期数:

(1) CPI(每条指令平均时钟周期数)
(2) MIPS(每秒执行百万条指令数)
(3) CPU 执行时间

答案:

  • (1) CPI ≈ 1.63
  • (2) MIPS ≈ 122.51
  • (3) 执行时间 = 95.5 μs

阿姆达尔定律(Amdahl’s Law)

13

题目: 某计算机系统有三个部件可以改进,这三个部件的加速比为:

部件 加速比
部件 1 20
部件 2 25
部件 3 5

(1) 根据 Amdahl 定律,请写出系统加速比的公式;

(2) 如果部件 1、部件 2 和部件 3 的可改进比例为 20%、15% 和 25%,求整个系统的加速比。

解答:

(1) 多部件改进的系统加速比公式

阿姆达尔定律的标准形式只考虑一个可改进部件。当系统中有多个部件同时被改进时,需要对公式进行推广。核心思路与单部件相同:将改进后的执行时间拆成两部分——不可改进的串行时间各改进部件优化后的时间

设有 $n$ 个可改进部件,推广后的系统加速比公式为:

各符号含义:

符号 含义 说明
系统整体加速比 改进后总执行时间与改进前的比值
第 $i$ 个部件的可改进比例 该部件原始执行时间占系统总执行时间的比例(
第 $i$ 个部件的加速比 该部件单独改进后的性能提升倍数(
所有可改进部分的总比例 各部件可改进比例之和,必须
不可改进的串行部分比例 无法被优化的那部分代码,它是加速比的”天花板”

对于本题三个部件的情况,公式展开为:

(2) 代入已知条件计算

步骤一:整理已知条件

部件 可改进比例 加速比 改进后贡献
部件 1 20
部件 2 25
部件 3 5

步骤二:计算不可改进部分

步骤三:计算改进后的总贡献

步骤四:计算系统加速比

答案:

  • (1) 系统加速比公式:
  • (2) 整个系统的加速比约为 $2.15$(或精确值为

为什么结果这么”低”? 三个部件的加速比分别是 20、25、5,看起来都很夸张,但别忘了它们的可改进比例加起来只有 60%,剩下 40% 的串行代码完全无法优化。即使你把并行部分优化到无穷快,那 40% 的串行部分也会死死拖住后腿——这就是阿姆达尔定律的残酷真相。换句话说,优化串行部分的比例比单纯提升并行部分的性能更重要

流水线

14

15

相关PPT截图

16

17

18

19

20

21

题目: 设有一条 4 段流水线,各段执行时间依次为:

(1) 求连续输入 4 条指令和连续输入 40 条指令时,该流水线的实际吞吐率和效率。

(2) 将瓶颈段分别细分为 2 和 3 个独立段,各子段执行时间均为 ,分别计算改进后的流水线连续输入 4 条指令和连续输入 40 条指令时的实际吞吐率和效率。

(3) 比较 (1) 和 (2) 的结果,给出结论。

解答:

这道题的核心是先判断流水线的 拍长。流水线不是每一段做完就立刻进入下一段,而是按统一的时钟节拍推进。这个统一节拍必须照顾最慢的阶段,所以:

其中:

符号 含义
$k$ 流水线段数
$n$ 连续输入的指令条数
第 $i$ 段的执行时间
流水线拍长,也就是最慢流水段的执行时间
完成 $n$ 条指令的流水线总时间
$TP$ 实际吞吐率,即单位时间完成的指令数
流水线效率,即流水线资源的平均利用率

对于本题这种各段执行时间不完全相同的流水线,完成 $n$ 条指令的总时间为:

其中 是第一条指令完整通过所有流水段所需的时间:

这个公式可以这样理解:

  • 第一条指令必须依次经过所有流水段,所以先花掉 的时间
  • 流水线稳定后,每隔一个拍长 输出一条指令
  • 因此后续 $n - 1$ 条指令还需要 的时间
  • 如果每一段执行时间都相等,那么 ,公式就退化为

实际吞吐率为:

流水线效率使用资源利用率来计算:

也就是:

注意:原始流水线各段时间不相等,所以不能直接把装入时间写成 。第一条指令真正通过 4 段的时间是各段执行时间之和,也就是

说明:官方答案的思路是使用 ,也就是先算第一条指令完整通过流水线的时间,再加上后续指令的输出间隔。截图中第 (1) 问的部分最终分数与前面的时间表达式不完全一致,这里按公式自洽的方式展开计算,结论与官方给出的文字结论一致。

(1) 原始 4 段流水线

原始流水线各段时间为:

流水段 执行时间
第 1 段
第 2 段
第 3 段
第 4 段

因此:

原始流水线:连续输入 4 条指令

先计算总时间:

实际吞吐率为:

效率为:

所以连续输入 4 条指令时:

  • 实际吞吐率:
  • 效率:
原始流水线:连续输入 40 条指令

先计算总时间:

实际吞吐率为:

效率为:

所以连续输入 40 条指令时:

  • 实际吞吐率:
  • 效率:
(2) 细分瓶颈段后的流水线

原流水线中,第 3 段需要 ,第 4 段需要 ,它们比前两段更慢,是造成流水线拍长变大的原因。

题目说“将瓶颈段分别细分为 2 和 3 个独立段,各子段执行时间均为 ”,意思是:

  • 原来的 段拆成 2 个 子段
  • 原来的 段拆成 3 个 子段

于是改进后的流水线段数变为:

每一段的执行时间都变成 ,所以新的拍长为:

总的实际工作量没有变,仍然是:

改进后的流水线更加均衡,完成 $n$ 条指令的总时间为:

由于 7 个流水段长度完全相等,效率也可以直接写成:

细分后流水线:连续输入 4 条指令

总时间为:

实际吞吐率为:

效率为:

所以改进后连续输入 4 条指令时:

  • 实际吞吐率:
  • 效率:
细分后流水线:连续输入 40 条指令

总时间为:

实际吞吐率为:

效率为:

所以改进后连续输入 40 条指令时:

  • 实际吞吐率:
  • 效率:
(3) 结果比较与结论
指令条数 流水线 总时间 实际吞吐率 效率
4 原始流水线
4 细分后流水线
40 原始流水线
40 细分后流水线

吞吐率提升倍数为:

效率变化为:

结论:

  • 流水线的实际拍长由最慢的流水段决定,原始流水线的瓶颈是 段。
  • 将较慢的 流水段细分后,拍长从 降为 ,所以实际吞吐率明显提高。
  • 细分后流水段数从 4 段增加到 7 段,装入和排空开销变大;当指令条数较少时,这部分开销占比很高,所以效率反而可能下降。
  • 当连续输入的指令条数较多时,装入和排空开销被摊薄,流水线更接近稳定工作状态,吞吐率和效率都会明显提高。
  • 因此,细分瓶颈段可以提高流水线吞吐率;是否提高效率,要看指令条数是否足够多