vault backup: 2026-06-15 22:55:55
This commit is contained in:
@@ -73,6 +73,36 @@ $$S = \frac{1}{(1-f) + \frac{f}{n}}$$
|
||||
> [!question] 某功能占系统时间 20%,提升 15 倍,加速比是多少?
|
||||
> $S = \frac{1}{0.8 + 0.2/15} = \frac{1}{0.8133} \approx 1.23$。即使将该功能提升到无限快,加速比上限也只有 $1/0.8 = 1.25$。
|
||||
|
||||
> [!example] 综合例题:多部件同时改进
|
||||
>
|
||||
> **题目**:某系统由三个部件组成,执行时间占比及改进方案如下:
|
||||
>
|
||||
> | 部件 | 原始时间占比 | 改进后加速倍数 |
|
||||
> |:----:|:----------:|:-------------:|
|
||||
> | A | 40% | 3 倍 |
|
||||
> | B | 35% | 2 倍 |
|
||||
> | C | 25% | 不改进 |
|
||||
>
|
||||
> 求系统总加速比。
|
||||
>
|
||||
> **解题步骤**:
|
||||
>
|
||||
> **第一步**:确定各部件改进后的时间比例
|
||||
>
|
||||
> 改进后,各部件在总时间中的占比变为:
|
||||
>
|
||||
> $$T_{new} = (1-f_A-f_B-f_C) + \frac{f_A}{n_A} + \frac{f_B}{n_B} + \frac{f_C}{n_C}$$
|
||||
>
|
||||
> **第二步**:代入数值
|
||||
>
|
||||
> $$T_{new} = 0 + \frac{0.40}{3} + \frac{0.35}{2} + \frac{0.25}{1} = 0.1333 + 0.175 + 0.25 = 0.5583$$
|
||||
>
|
||||
> **第三步**:计算加速比
|
||||
>
|
||||
> $$S = \frac{1}{T_{new}} = \frac{1}{0.5583} \approx 1.79$$
|
||||
>
|
||||
> **第四步**:分析——如果只改进部件 A(占比最大),加速比为 $1/(0.6+0.4/3) = 1.67$;如果只改进部件 B,加速比为 $1/(0.65+0.35/2) = 1.24$。同时改进 A 和 B 才达到 1.79,说明**改进占比大且加速倍数高的部件收益最大**。
|
||||
|
||||
#### 3.3 CPU 性能公式
|
||||
|
||||
$$CPU 时间 = IC \times CPI \times \tau$$
|
||||
@@ -91,6 +121,31 @@ $$CPU 时间 = IC \times CPI \times \tau$$
|
||||
> [!warning] MIPS 的局限性
|
||||
> 不同指令集的 MIPS 不可直接比较。RISC 机器 MIPS 通常高于 CISC,但不代表性能更优——RISC 需要更多指令完成同样任务。
|
||||
|
||||
> [!example] 例题:两种方案的 CPI 与执行时间对比
|
||||
>
|
||||
> **题目**:同一程序在两种处理器上运行,时钟频率均为 2 GHz,相关参数如下:
|
||||
>
|
||||
> | 参数 | 方案 X | 方案 Y |
|
||||
> |:----:|:------:|:------:|
|
||||
> | 指令条数 IC | 50 亿条 | 10 亿条 |
|
||||
> | 平均 CPI | 1.2 | 5.0 |
|
||||
>
|
||||
> 哪个方案更快?快多少?
|
||||
>
|
||||
> **解**:
|
||||
>
|
||||
> **方案 X**:
|
||||
>
|
||||
> $$T_X = IC \times CPI \times \tau = 5 \times 10^9 \times 1.2 \times \frac{1}{2 \times 10^9} = 3.0 \text{ 秒}$$
|
||||
>
|
||||
> **方案 Y**:
|
||||
>
|
||||
> $$T_Y = 1 \times 10^9 \times 5.0 \times \frac{1}{2 \times 10^9} = 2.5 \text{ 秒}$$
|
||||
>
|
||||
> 方案 Y 更快,加速比为 $T_X / T_Y = 3.0 / 2.5 = 1.2$ 倍。
|
||||
>
|
||||
> **启示**:虽然方案 X 的 CPI 只有 1.2(远低于方案 Y 的 5.0),但方案 Y 的指令条数只有方案 X 的 1/5。这说明**不能只看 CPI 或 IC 单一指标,必须综合考虑三者的乘积**。这也解释了为什么 CISC(IC 少但 CPI 高)和 RISC(IC 多但 CPI 低)可以达到相当的性能水平。
|
||||
|
||||
#### 3.4 程序局部性原理
|
||||
|
||||
程序在执行时所访问的地址空间分布不是随机的,而是**相对地聚集**。
|
||||
@@ -120,6 +175,22 @@ graph LR
|
||||
| MFLOPS | 浮点操作数 / $(T \times 10^6)$ | 科学计算 |
|
||||
| 加速比 | $T_{old} / T_{new}$ | 优化前后对比 |
|
||||
|
||||
> [!tip] CPU 性能公式的三因素关系
|
||||
> CPU 执行时间由三个因素共同决定,优化任何一个因素都能缩短执行时间,但效果取决于瓶颈所在:
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
T["CPU Time"] --> IC["IC, Instruction Count"]
|
||||
T --> CPI["CPI, Cycles Per Instruction"]
|
||||
T --> tau["tau, Clock Period"]
|
||||
IC --> C["Compiler"]
|
||||
IC --> ISA["ISA Design"]
|
||||
CPI --> Pipe["Pipeline"]
|
||||
CPI --> Cache["Cache Hit Rate"]
|
||||
tau --> Tech["Process Technology"]
|
||||
tau --> Logic["Logic Design"]
|
||||
```
|
||||
|
||||
## 关联笔记
|
||||
- [[计算机系统结构/复习文档/流水线技术]]
|
||||
- [[计算机系统结构/复习文档/存储系统与Cache]]
|
||||
|
||||
Reference in New Issue
Block a user