Computer Architecture
性能公式¶
- CPU 时间 (CPU Time) = 指令数 (Instruction Count) × 指令平均周期数(CPI,Cycle Per Instruction)× 时钟周期 (Clock Cycle)
下面表格用「有/无」标出不同层次是否会影响性能公式中的三项,并给出一个直观例子:
| 层次 | 指令数 | CPI | 时钟周期 | 例子 |
|---|---|---|---|---|
| 算法 (Algorithms) | 有 | 有 | 无 | 冒泡 vs 快排:指令数差很多;顺序 vs 随机访问:cache miss 多,CPI 更高 |
| 编程语言 (Programming Language) | 有 | 有 | 无 | Python/Java vs C:运行时/抽象开销带来更多指令;GC/动态派发/边界检查增加停顿 |
| 编译器 (Compiler) | 有 | 有 | 无 | -O0 vs -O3:优化减少指令并降低停顿;但编译器不能改变硬件频率/周期 |
| 指令集 ISA (ISA) | 有 | 有 | 有 | SIMD/FMA 让同样工作更少指令;可变长/复杂解码可能拉长关键路径限制最高频率 |
| 处理器组织/微架构 (Processor Organization) | 无 | 有 | 有 | 乱序/预测/缓存影响停顿→CPI;流水线级数/关键路径决定频率→周期 |
| 器件与工艺 (Device & Technology) | 无 | 有 | 有 | 更先进工艺可提高频率→周期更小;更慢的存储器/互连会让访存停顿(以周期计)更大 |
Quiz¶
- xxx 是否会影响 xxx?为什么?举例说明。
流水线 CPU¶
请参考 ppt。
Quiz¶
- 什么是结构冒险 (Structural Hazard)?
- 什么是数据冒险 (Data Hazard)?
- 什么是控制冒险 (Control Hazard)?
- 单周期 CPU 和 多周期 CPU 哪个 CPI 更高?为什么?