第1章 计算机系统概述
第1章 计算机系统概述¶
全书的概念地基,考点密集但难度低。真正拉分的只有性能指标计算(CPU 执行时间、CPI、MIPS、IPS),其余靠精确记忆得分。
b_7_11;PDF 第 7 页 · b_7_12【知识树】第1章骨架¶
先照这棵树回想,卡住的地方再翻具体卡片。
- 硬件发展:四代(电子管 → 晶体管 → 中小规模集成电路 → 超大规模集成电路)
- 摩尔定律:18 个月翻一番
- 冯·诺依曼机
- 核心思想:存储程序
- 五大部件:运算器 / 控制器 / 存储器 / 输入 / 输出
- 指令与数据同形式存放、均为二进制
- 系统层次结构
- 硬件:CPU(数据通路 + 控制单元)、存储器、I/O、总线
- 软件:系统软件 vs 应用软件
- 三种语言、三种翻译程序
- ISA(做什么)vs 微体系结构(怎么做)
- 四类用户:最终用户 / 系统管理员 / 应用程序员 / 系统程序员
- 工作原理
- 存储程序方式:取指 → 译码 → 取数 → 执行 → 写回,PC 自动更新
- 源程序到可执行文件四阶段:预处理 → 编译 → 汇编 → 链接
- 性能指标(本章唯一计算重点)
- 主频 / 时钟周期 / CPI / IPS / MIPS / FLOPS
- CPU 执行时间 = 指令条数 × CPI ÷ 主频
- 基准程序及其局限
b_7_11;PDF 第 7 页 · b_7_131.1 计算机发展与冯·诺依曼机¶
冯·诺依曼机最核心的思想是哪一条? ★1考¶
存储程序:把程序和初始数据预先存入主存储器,计算机启动后能自动、连续地取指并执行,直至程序结束,无须人工干预。 ★ 考过 2019
b_8_2冯·诺依曼机的五大部件是哪五个?¶
运算器、控制器、存储器、输入设备、输出设备。
⚠️ 传统冯·诺依曼机以运算器为中心,现代计算机已改为以存储器为中心。
💡 记忆法:"运控存,一进一出" —— 运算器、控制器、存储器 + 输入 + 输出。
b_8_17冯·诺依曼机对"指令和数据"的三条规定?¶
- 两者以同等形式存放在存储器中,仅凭内容无法区分(但计算机应能识别)
- 两者均用二进制编码表示
- 指令由操作码 + 地址码两部分组成
b_8_0摩尔定律说的到底是什么翻番?¶
价格不变的前提下,集成电路上可容纳的晶体管数量约每 18 个月翻一番。
⚠️ 关键词是"晶体管数量",不是主频、也不是性能。
b_7_4CPU 的传统说法和现代说法怎么对应?¶
- 传统:CPU = 运算器 + 控制器
- 现代:CPU = 数据通路 + 控制单元
- 数据通路 = ALU + 通用寄存器组 + 多路选择器 + 内部互连(负责"算")
- 控制单元 = 取指、译码、生成控制信号(负责"指挥")
b_8_6;PDF 第 8 页 · b_8_71.2 计算机软件与层次结构¶
三种编程语言里,哪种能被硬件直接执行? ★2考¶
只有机器语言。 - 机器语言:0/1 指令序列,唯一能被硬件直接识别和执行的语言 - 汇编语言:用助记符(mov、add),必须经汇编程序翻译成机器语言 - 高级语言:需编译(或先编译成汇编再汇编),或解释执行
★ 考过 2015、2024
b_10_6编译程序和解释程序的根本差别? ★1考¶
- 编译程序:一次性全部翻译,生成独立的目标程序;源程序不变时无须重复编译
- 解释程序:逐条翻译并立即执行,不生成可存储的目标程序,边翻译边执行
★ 考过 2016
b_10_9编译程序和汇编程序怎么区分?¶
看源语言: - 源语言是高级语言 → 编译程序 - 源语言是汇编语言 → 汇编程序
两者都属于"翻译程序"这个总称之下。
b_24_0ISA 定义什么?微体系结构定义什么?¶
- ISA:软硬件的交界面,定义"做什么" —— 指令格式、操作类型、寻址方式、可访问的寄存器,即软件可见部分
- 微体系结构:处理器内部的硬件组织,决定"怎么做" —— 数据通路组织、流水线级数、缓存层次、分支预测
⚠️ 同一套 ISA 可对应多种微架构:x86 的 Core、Skylake、Alder Lake 遵循同一 ISA,内部实现差异巨大。
b_10_0;PDF 第 10 页 · b_10_14计算机领域的"透明"是什么意思?¶
从某类用户的视角"感知不到它的存在",与日常说的"透明 = 看得见"恰好相反。
例:对高级语言程序员而言,指令格式、机器结构、数据格式都是透明的;对汇编/机器语言程序员则不透明。
b_24_1哪三个寄存器对所有程序员都透明?¶
IR(指令寄存器)、MAR(存储器地址寄存器)、MDR(存储器数据寄存器)。
💡 记忆法:IR / MAR / MDR 是 CPU 自己干活用的三件工具,程序员摸不着 —— 一个装指令、两个跟内存打交道。
b_24_0;PDF 第 24 页 · b_24_1体系结构和计算机组成的分界在哪?¶
- 体系结构:程序员可见的机器属性(指令集、数据类型、寻址方式),抽象定义
- 计算机组成:体系结构的具体实现,含大量对程序员透明的细节
经典例句:"是否提供乘法指令"是体系结构问题;"用阵列乘法器还是移位相加实现"是组成问题。 所以两台机器可以体系结构相同而组成迥异。
💡 记忆法:"有没有" vs "怎么做" —— 有没有乘法指令是体系结构,用什么电路做乘法是组成。
b_24_31.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)。
b_12_8存储程序方式下 PC 怎么更新?¶
- 程序执行前,第一条指令的地址存入 PC
- 取指时 CPU 用 PC 的内容作为地址访问主存
- 每条指令执行的最后阶段更新 PC:
- 顺序指令:PC ← 当前 PC + 指令长度
- 跳转指令:PC ← 指令中指定的目标地址
b_12_1;PDF 第 12 页 · b_12_21.4 性能指标(本章计算重点)¶
主频和时钟周期是什么关系? ★2考¶
- CPU 时钟周期 = 主时钟脉冲的宽度 = CPU 工作的最小时间单位
- 主频 = 时钟周期的倒数 = 每秒的时钟周期数
CPU 时钟周期 = 1 / 主频
★ 考过 2013(换算)、2019(时钟脉冲概念)
b_16_14CPI 和 IPS 分别怎么定义? ★1考¶
- CPI = 执行一条指令平均所需的时钟周期数
- IPS = 每秒执行的指令条数 = 主频 ÷ 平均 CPI
★ 考过 2023
b_16_19CPU 执行时间的公式? ★6考¶
CPU 执行时间 = CPU 时钟周期数 ÷ 主频 = (指令条数 × CPI) ÷ 主频
★ 考过 2012、2013、2014、2017、2022、2023 —— 本章最高频
💡 记忆法:"条数 × CPI ÷ 主频" —— 分子是"要干多少活",分母是"干活多快"。
b_17_2为什么主频、CPI、指令条数三者互相制约?¶
- CISC:指令复杂 → 指令条数少,但控制逻辑复杂 → 时钟周期长、主频难提高
- RISC:指令精简 → 指令条数多,但时钟周期短、主频高
所以不能只盯着其中一个要素看性能。
b_17_4经典陷阱:主频提升 2.5 倍,性能提升几倍?¶
不是 2.5 倍。 若 M2 主频是 M1 的 2.5 倍,但平均 CPI 变成 1.5 倍,则实际性能只提升到 1.67 倍。
⚠️ 主频提升 ≠ 性能等比提升,因为时钟周期数也变了。
b_17_9MIPS 怎么算? ★2考¶
MIPS = 指令条数 ÷ (CPU 执行时间 × 10⁶) = 主频 ÷ (CPI × 10⁶)
★ 考过 2012、2013
b_17_11为什么 MIPS 不适合跨机器比较性能?¶
- 不同机器指令集不同、指令功能强度不等 —— M1 一条指令干的活,M2 可能要好几条
- 各机器 CPI 和时钟周期不同,同一条指令的实际执行时间差异显著
b_17_13主频高的 CPU 一定性能更高吗?¶
不一定。 主频只反映指令执行的节奏快慢,不等同于实际运算速度。性能还取决于微架构、流水线深度、缓存容量与层级、指令集效率、位宽、并行能力。
一个主频较低但架构先进的 CPU,可能因更高的 IPC(每周期指令数)而超越主频更高的老架构处理器。
b_23_11基准程序跑得快就说明机器性能好吗?¶
不能简单等同。 两个理由: - 基准程序的性能常依赖某些关键代码片段,硬件或编译器开发者可能针对性优化,导致评测结果失真 - 单一程序只覆盖特定工作负载,对计算、访存、I/O 的需求各异
所以要结合应用领域选基准程序,并辅以多种评测手段。
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) |
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²¹)
b_17_14;PDF 第 17 页 · b_17_16