Files
final-exam/计算机系统结构/复习文档/计算机系统结构基础与定量原理.md
T

127 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags:
- 计算机系统结构
- 复习
- 定量原理
create time: 2026-06-15 10:00
---
# 计算机系统结构基础与定量原理
## 概述
本文档覆盖计算机系统结构课程的基石内容:系统结构的定义与层次、Flynn 分类法、四大定量原理(Amdahl 定律、CPU 性能公式、以经常性事件为重点、程序局部性原理)。这些概念是后续学习流水线、Cache、指令系统等专题的理论基础。
> [!tip] 考试重点
> Amdahl 定律的计算题几乎每年必考,需熟练掌握公式推导和应用。Flynn 分类、系统结构定义常以选择题出现。
## 正文
### 一、计算机系统结构的定义
Amdahl 提出的经典定义:**计算机系统结构是机器语言程序员所见到的计算机属性**,即指令集架构(ISA)层面。
| 层次 | 程序员类型 | 所见属性 |
|:----:|:----------:|----------|
| 应用语言 | 应用程序员 | 应用语言虚拟机 |
| 高级语言 | 高级语言程序员 | 高级语言虚拟机 |
| **系统结构** | **机器语言程序员** | **指令集架构 ISA** |
| 组成 | 逻辑设计员 | 数据通路、控制、存储接口 |
| 实现 | 硬件工程师 | 电路、芯片、工艺 |
> [!question] 为什么系统结构的定义以"机器语言程序员"为基准?
> 因为 ISA 是软件和硬件的分界面。机器语言程序员直接与指令集打交道,而 ISA 之上的软件可以在不同硬件实现上运行,ISA 之下的硬件变化不影响软件兼容性。
### 二、Flynn 分类法
按照**指令流**和**数据流**的多倍性进行分类:
| 类型 | 指令流 | 数据流 | 典型代表 |
|:----:|:------:|:------:|----------|
| **SISD** | 单 | 单 | 传统单处理器 |
| **SIMD** | 单 | 多 | 向量处理器、GPU |
| **MISD** | 多 | 单 | **理论分类,无实际计算机** |
| **MIMD** | 多 | 多 | 多处理器、集群 |
> [!note] MISD 为何不存在?
> MISD 要求同一个数据被多条不同指令同时处理,这在冯·诺依曼架构下没有实际应用场景。某些容错系统(如航天计算机)被部分学者归为 MISD,但学界主流观点认为 MISD 仅为理论分类。
### 三、四大定量原理
#### 3.1 以经常性事件为重点
**核心思想**:对经常发生的情况赋予优先的处理权和资源使用权,从而获得更大的总体改善。
> [!example] 实例
> CPU 中加法操作远多于除法操作,因此将加法器设计得尽可能快,比优化除法器更能提升整体性能。
#### 3.2 Amdahl 定律
$$S = \frac{1}{(1-f) + \frac{f}{n}}$$
| 符号 | 含义 |
|:----:|------|
| $S$ | 系统加速比 |
| $f$ | 被改进部分在原系统中所占时间比例 |
| $n$ | 被改进部分的性能提升倍数 |
**关键结论**:
- 当 $n \to \infty$ 时,$S_{max} = \frac{1}{1-f}$,加速比有上限
- 系统性能受限于**最慢的部件**(瓶颈)
> [!question] 某功能占系统时间 20%,提升 15 倍,加速比是多少?
> $S = \frac{1}{0.8 + 0.2/15} = \frac{1}{0.8133} \approx 1.23$。即使将该功能提升到无限快,加速比上限也只有 $1/0.8 = 1.25$。
#### 3.3 CPU 性能公式
$$CPU 时间 = IC \times CPI \times \tau$$
| 符号 | 含义 | 单位 |
|:----:|------|------|
| $IC$ | 指令条数(Instruction Count) | 条 |
| $CPI$ | 每条指令平均时钟周期数 | 周期/条 |
| $\tau$ | 时钟周期时间 | 秒/周期 |
**派生指标**:
- $MIPS = \frac{f}{CPI \times 10^6}$($f$ 为主频,单位 Hz)
- $MIPS = \frac{IC}{T \times 10^6}$($T$ 为执行时间,单位 秒)
> [!warning] MIPS 的局限性
> 不同指令集的 MIPS 不可直接比较。RISC 机器 MIPS 通常高于 CISC,但不代表性能更优——RISC 需要更多指令完成同样任务。
#### 3.4 程序局部性原理
程序在执行时所访问的地址空间分布不是随机的,而是**相对地聚集**。
- **时间局部性**:最近被访问的地址很可能再次被访问(如循环变量)
- **空间局部性**:与当前访问地址相邻的地址很可能被访问(如数组遍历)
> [!tip] 局部性原理的应用
> Cache、虚拟内存、预取技术都建立在局部性原理之上。理解局部性是理解整个存储层次设计的关键。
```mermaid
graph LR
A["Time Locality"] --> B["Loop Variables"]
A --> C["Stack Access"]
D["Space Locality"] --> E["Array Traversal"]
D --> F["Sequential Code"]
B --> G["Cache Design"]
E --> G
```
### 四、性能评价指标汇总
| 指标 | 公式 | 适用场景 |
|------|------|----------|
| 执行时间 | $T = IC \times CPI \times \tau$ | 通用 |
| MIPS | $f / (CPI \times 10^6)$ | 同一 ISA 比较 |
| MFLOPS | 浮点操作数 / $(T \times 10^6)$ | 科学计算 |
| 加速比 | $T_{old} / T_{new}$ | 优化前后对比 |
## 关联笔记
- [[计算机系统结构/复习文档/流水线技术]]
- [[计算机系统结构/复习文档/存储系统与Cache]]
- [[计算机系统结构/index|试题册索引]]