跳转至

第1章 计算机系统概述

2027 王道 · 专题阅读 · 保留代码与校订注 · 与版本锁一致

第1章 计算机系统概述

全书的概念地基,考点密集但难度低。真正拉分的只有性能指标计算(CPU 执行时间、CPI、MIPS、IPS),其余靠精确记忆得分。

回源 · PDF 第 7 页 · b_7_11;PDF 第 7 页 · b_7_12

【知识树】第1章骨架

先照这棵树回想,卡住的地方再翻具体卡片。

  • 硬件发展:四代(电子管 → 晶体管 → 中小规模集成电路 → 超大规模集成电路)
  • 摩尔定律:18 个月翻一番
  • 冯·诺依曼机
  • 核心思想:存储程序
  • 五大部件:运算器 / 控制器 / 存储器 / 输入 / 输出
  • 指令与数据同形式存放、均为二进制
  • 系统层次结构
  • 硬件:CPU(数据通路 + 控制单元)、存储器、I/O、总线
  • 软件:系统软件 vs 应用软件
  • 三种语言、三种翻译程序
  • ISA(做什么)vs 微体系结构(怎么做)
  • 四类用户:最终用户 / 系统管理员 / 应用程序员 / 系统程序员
  • 工作原理
  • 存储程序方式:取指 → 译码 → 取数 → 执行 → 写回,PC 自动更新
  • 源程序到可执行文件四阶段:预处理 → 编译 → 汇编 → 链接
  • 性能指标(本章唯一计算重点)
  • 主频 / 时钟周期 / CPI / IPS / MIPS / FLOPS
  • CPU 执行时间 = 指令条数 × CPI ÷ 主频
  • 基准程序及其局限
回源 · PDF 第 7 页 · b_7_11;PDF 第 7 页 · b_7_13

1.1 计算机发展与冯·诺依曼机

冯·诺依曼机最核心的思想是哪一条? ★1考

存储程序:把程序和初始数据预先存入主存储器,计算机启动后能自动、连续地取指并执行,直至程序结束,无须人工干预。 ★ 考过 2019

回源 · PDF 第 8 页 · b_8_2

冯·诺依曼机的五大部件是哪五个?

运算器、控制器、存储器、输入设备、输出设备。

⚠️ 传统冯·诺依曼机以运算器为中心,现代计算机已改为以存储器为中心。

💡 记忆法:"运控存,一进一出" —— 运算器、控制器、存储器 + 输入 + 输出。

回源 · PDF 第 8 页 · b_8_17

冯·诺依曼机对"指令和数据"的三条规定?

  • 两者以同等形式存放在存储器中,仅凭内容无法区分(但计算机应能识别)
  • 两者均用二进制编码表示
  • 指令由操作码 + 地址码两部分组成
回源 · PDF 第 8 页 · b_8_0

摩尔定律说的到底是什么翻番?

价格不变的前提下,集成电路上可容纳的晶体管数量约每 18 个月翻一番。

⚠️ 关键词是"晶体管数量",不是主频、也不是性能。

回源 · PDF 第 7 页 · b_7_4

CPU 的传统说法和现代说法怎么对应?

  • 传统:CPU = 运算器 + 控制器
  • 现代:CPU = 数据通路 + 控制单元
  • 数据通路 = ALU + 通用寄存器组 + 多路选择器 + 内部互连(负责"算")
  • 控制单元 = 取指、译码、生成控制信号(负责"指挥")
回源 · PDF 第 8 页 · b_8_6;PDF 第 8 页 · b_8_7

1.2 计算机软件与层次结构

三种编程语言里,哪种能被硬件直接执行? ★2考

只有机器语言。 - 机器语言:0/1 指令序列,唯一能被硬件直接识别和执行的语言 - 汇编语言:用助记符(mov、add),必须经汇编程序翻译成机器语言 - 高级语言:需编译(或先编译成汇编再汇编),或解释执行

★ 考过 2015、2024

回源 · PDF 第 10 页 · b_10_6

编译程序和解释程序的根本差别? ★1考

  • 编译程序:一次性全部翻译,生成独立的目标程序;源程序不变时无须重复编译
  • 解释程序:逐条翻译并立即执行,不生成可存储的目标程序,边翻译边执行

★ 考过 2016

回源 · PDF 第 10 页 · b_10_9

编译程序和汇编程序怎么区分?

看源语言: - 源语言是高级语言 → 编译程序 - 源语言是汇编语言 → 汇编程序

两者都属于"翻译程序"这个总称之下。

回源 · PDF 第 24 页 · b_24_0

ISA 定义什么?微体系结构定义什么?

  • ISA:软硬件的交界面,定义"做什么" —— 指令格式、操作类型、寻址方式、可访问的寄存器,即软件可见部分
  • 微体系结构:处理器内部的硬件组织,决定"怎么做" —— 数据通路组织、流水线级数、缓存层次、分支预测

⚠️ 同一套 ISA 可对应多种微架构:x86 的 Core、Skylake、Alder Lake 遵循同一 ISA,内部实现差异巨大。

回源 · PDF 第 10 页 · b_10_0;PDF 第 10 页 · b_10_14

计算机领域的"透明"是什么意思?

从某类用户的视角"感知不到它的存在",与日常说的"透明 = 看得见"恰好相反。

例:对高级语言程序员而言,指令格式、机器结构、数据格式都是透明的;对汇编/机器语言程序员则不透明。

回源 · PDF 第 24 页 · b_24_1

哪三个寄存器对所有程序员都透明?

IR(指令寄存器)、MAR(存储器地址寄存器)、MDR(存储器数据寄存器)。

💡 记忆法:IR / MAR / MDR 是 CPU 自己干活用的三件工具,程序员摸不着 —— 一个装指令、两个跟内存打交道。

回源 · PDF 第 24 页 · b_24_0;PDF 第 24 页 · b_24_1

体系结构和计算机组成的分界在哪?

  • 体系结构:程序员可见的机器属性(指令集、数据类型、寻址方式),抽象定义
  • 计算机组成:体系结构的具体实现,含大量对程序员透明的细节

经典例句:"是否提供乘法指令"是体系结构问题;"用阵列乘法器还是移位相加实现"是组成问题。 所以两台机器可以体系结构相同而组成迥异。

💡 记忆法:"有没有" vs "怎么做" —— 有没有乘法指令是体系结构,用什么电路做乘法是组成。

回源 · PDF 第 24 页 · b_24_3

1.3 工作原理

源程序变可执行文件的四个阶段,产物链是什么? ★1考

hello.c → hello.i → hello.s → hello.o → hello - 预处理(cpp):处理 # 开头的指令、展开 #include → .i - 编译(cc1):翻译成汇编程序 → .s - 汇编(as):转成机器指令、生成可重定位目标文件 → .o - 链接(ld):与库函数链接、解析外部符号 → 可执行文件

★ 考过 2022

💡 记忆法:"预编汇链" 四个字对应四步,产物后缀顺着念 "i s o"(.i → .s → .o)。

回源 · PDF 第 12 页 · b_12_8

存储程序方式下 PC 怎么更新?

  • 程序执行前,第一条指令的地址存入 PC
  • 取指时 CPU 用 PC 的内容作为地址访问主存
  • 每条指令执行的最后阶段更新 PC:
  • 顺序指令:PC ← 当前 PC + 指令长度
  • 跳转指令:PC ← 指令中指定的目标地址
回源 · PDF 第 12 页 · b_12_1;PDF 第 12 页 · b_12_2

1.4 性能指标(本章计算重点)

主频和时钟周期是什么关系? ★2考

  • CPU 时钟周期 = 主时钟脉冲的宽度 = CPU 工作的最小时间单位
  • 主频 = 时钟周期的倒数 = 每秒的时钟周期数

CPU 时钟周期 = 1 / 主频

★ 考过 2013(换算)、2019(时钟脉冲概念)

回源 · PDF 第 16 页 · b_16_14

CPI 和 IPS 分别怎么定义? ★1考

  • CPI = 执行一条指令平均所需的时钟周期数
  • IPS = 每秒执行的指令条数 = 主频 ÷ 平均 CPI

★ 考过 2023

回源 · PDF 第 16 页 · b_16_19

CPU 执行时间的公式? ★6考

CPU 执行时间 = CPU 时钟周期数 ÷ 主频 = (指令条数 × CPI) ÷ 主频

★ 考过 2012、2013、2014、2017、2022、2023 —— 本章最高频

💡 记忆法:"条数 × CPI ÷ 主频" —— 分子是"要干多少活",分母是"干活多快"。

回源 · PDF 第 17 页 · b_17_2

为什么主频、CPI、指令条数三者互相制约?

  • CISC:指令复杂 → 指令条数少,但控制逻辑复杂 → 时钟周期长、主频难提高
  • RISC:指令精简 → 指令条数多,但时钟周期短、主频高

所以不能只盯着其中一个要素看性能。

回源 · PDF 第 17 页 · b_17_4

经典陷阱:主频提升 2.5 倍,性能提升几倍?

不是 2.5 倍。 若 M2 主频是 M1 的 2.5 倍,但平均 CPI 变成 1.5 倍,则实际性能只提升到 1.67 倍。

⚠️ 主频提升 ≠ 性能等比提升,因为时钟周期数也变了。

回源 · PDF 第 17 页 · b_17_9

MIPS 怎么算? ★2考

MIPS = 指令条数 ÷ (CPU 执行时间 × 10⁶) = 主频 ÷ (CPI × 10⁶)

★ 考过 2012、2013

回源 · PDF 第 17 页 · b_17_11

为什么 MIPS 不适合跨机器比较性能?

  • 不同机器指令集不同、指令功能强度不等 —— M1 一条指令干的活,M2 可能要好几条
  • 各机器 CPI 和时钟周期不同,同一条指令的实际执行时间差异显著
回源 · PDF 第 17 页 · b_17_13

主频高的 CPU 一定性能更高吗?

不一定。 主频只反映指令执行的节奏快慢,不等同于实际运算速度。性能还取决于微架构、流水线深度、缓存容量与层级、指令集效率、位宽、并行能力。

一个主频较低但架构先进的 CPU,可能因更高的 IPC(每周期指令数)而超越主频更高的老架构处理器。

回源 · PDF 第 23 页 · b_23_11

基准程序跑得快就说明机器性能好吗?

不能简单等同。 两个理由: - 基准程序的性能常依赖某些关键代码片段,硬件或编译器开发者可能针对性优化,导致评测结果失真 - 单一程序只覆盖特定工作负载,对计算、访存、I/O 的需求各异

所以要结合应用领域选基准程序,并辅以多种评测手段。

回源 · PDF 第 24 页 · b_24_5

【易混点】第1章成对概念对照

易混对 分界线
体系结构 vs 组成 前者程序员可见(有没有乘法指令),后者是实现(用什么电路做乘法)
ISA vs 微架构 ISA 定义"做什么",微架构决定"怎么做";一套 ISA 可有多种微架构
编译 vs 解释 编译一次全译、生成目标程序;解释逐条边译边执行、不生成目标程序
编译 vs 汇编 看源语言:高级语言 → 编译;汇编语言 → 汇编
透明 vs 可见 计算机里"透明" = 感知不到,和日常用法相反
主频 vs 性能 主频只是节奏,性能还看 IPC、架构、缓存
容量的 K vs 速率的 k 容量用 2 的幂(1KB = 2¹⁰B),速率用 10 的幂(1kb/s = 10³b/s)
回源 · PDF 第 17 页 · b_17_18

【必背数字】第1章

  • 四代计算机分界年份:1958 / 1965 / 1972
  • 摩尔定律周期:18 个月
  • CPU 时钟周期 = 1 / 主频
  • IPS = 主频 ÷ CPI
  • MIPS = 主频 ÷ (CPI × 10⁶)
  • CPU 执行时间 = 指令条数 × CPI ÷ 主频
  • FLOPS 阶梯:M(10⁶) → G(10⁹) → T(10¹²) → P(10¹⁵) → E(10¹⁸) → Z(10²¹)
回源 · PDF 第 17 页 · b_17_14;PDF 第 17 页 · b_17_16