1.2计算机系统的设计
1. 4个定量设计原理
(1)以经常性事件为重点
对经常发生的情况进行优化,获得整体性能提升——设计的核心原则。
比如:程序中80%的时间执行20%的代码,因此重点优化这20%的核心代码。
(2)Amdahl定律(★★★必考计算,核心:性能改进的递减规则)
加快某部件执行速度的系统加速比,受限于该部件的执行时间占总时间的比例。
简单说:对非核心部分的优化,再极致也无法大幅提升整体性能。
核心公式
-
系统加速比:
\(S_n = \dfrac{T_0}{T_n}\) -
改进后时间:
\(T_n = T_0\left(1-F_e + \dfrac{F_e}{S_e}\right)\) -
Amdahl 定律:
\(S_n = \dfrac{1}{(1-F_e) + \dfrac{F_e}{S_e}}\)
符号说明
- \(F_e\):可改进比例(改进前,可改进部分的执行时间/总执行时间,\(0<F_e\le 1\));
- \(S_e\):部件加速比(改进前可改进部分执行时间/改进后,\(S_e>1\));
- \(1-F_e\):不可改进比例(系统中无法优化的部分)。
核心推论
若仅对部分任务优化,最大加速比不超过 \(\dfrac{1}{1-F_e}\)。
比如某部件占总时间40%(\(F_e=0.4\)),则无论该部件加速多少,系统最大加速比
\(\le \dfrac{1}{1-0.4} \approx 1.67\) 倍。
例题
- 例1:将某功能处理速度加快15倍(\(S_e=15\)),该功能占总运行时间40%(\(F_e=0.4\)),求系统性能提升倍数?
解:
\(S_n = \dfrac{1}{(1-0.4) + 0.4/15}
= \dfrac{1}{0.6 + 0.0267} \approx 1.59\) 倍。
- 例2:浮点运算部件加速25倍(\(S_e=25\)),系统整体性能提升4倍(\(S_n=4\)),求浮点操作占总执行时间的比例 \(F_e\)?
解:
由
\(4 = \dfrac{1}{(1-F_e) + F_e/25}\)
推导得 \(F_e = \dfrac{25}{32} \approx 0.9286\)(92.86%)。
(3)CPU性能公式(★★★必考计算,核心:CPU时间的三要素)
执行一个程序的CPU时间
= 指令条数(IC) × 每条指令平均时钟周期数(CPI) × 时钟周期时间(\(T_c\))
- 时钟周期时间 \(T_c = 1/f\)(\(f\) 为时钟频率,如主频3GHz,\(T_c=1/(3×10^9)\ \text{s}\))。
- CPI(Cycles Per Instruction):平均每条指令的时钟周期数。
- IC(Instruction Count):程序执行的总指令条数,与指令集、编译技术相关。
扩展公式(多指令类型)
若系统有 \(n\) 种指令,第 \(i\) 种指令的CPI为 \(CPI_i\),出现次数为 \(IC_i\),则:
\(CPI = \sum_{i=1}^n CPI_i × \dfrac{IC_i}{IC}\)
(\(IC_i/IC\) 为第 \(i\) 种指令的出现比例)
衍生指标:MIPS(每秒百万条指令)
\(MIPS = \dfrac{f}{CPI × 10^6} = \dfrac{IC}{CPU时间 × 10^6}\)
- 含义:每秒能执行的百万条指令数,MIPS值越高,指令执行速度越快;
- 缺点:未考虑指令的功能差异(如乘法指令和加法指令的复杂度不同),仅适用于同架构处理器的性能比较。

浙公网安备 33010602011771号