计算机概要与技术¶
重要思想¶
- Design for Moore’s Law
- Use Abstraction to Simplify Design
- Make the Common Case Fast
- Performance via Parallelism
- Performance via Pipelining
- Performance via Prediction
- Hierarchy of Memory
- Dependability via Redundancy
性能评价¶
评价性能有两种方式:
- Response time (响应时间): 单个任务所花时间
- Throughput (吞吐量): 单位时间的工作量
我们这里只讨论响应时间,定义性能表现为:
其中执行时间也分为 Elapsed Time 和 CPU Time,前者考虑了包括 I/O、操作系统开销、中断等在内的所有时间,后者只考虑了处理单个任务的时间。
CPU 时钟¶
Clock period 是一个时钟周期的时间,Clock frequency (rate) 是每秒的时钟周期数。CPU Time 可以用以下公式表示:
因此提高性能可以通过减少时钟周期数,或者提高时钟频率来实现。
现在我们定义时钟周期数为:
那么就有:
精简指令集 (RISC) 有较低的 CPI,但是需要更多的指令,而复杂指令集 (CISC) 需要的指令较少,但是 CPI 较高。不同指令的 CPI 可能不同,需要考虑平均情况,因此任何因素都可能影响最终的 CPI。
综上, \(\text{CPU Time} = \dfrac{\text{Instructions}}{\text{Program}}\times \dfrac{\text{Clock Cycles}}{\text{Instructions}}\times \dfrac{\text{Seconds}}{\text{Clock Cycles}}\)
另一种评价指标是 MIPS (Million Instructions Per Second),但是这个指标不够准确,因为不同的指令可能需要不同的时间,而且不同的 ISA (Instruction Set Architecture) 之间也不能直接比较。
性能制约¶
现在单核处理器 (Uniprocessor) 性能发展缓慢,主要受到以下三种限制。
功耗墙¶
功耗墙 (Power Wall) 指的是,CPU 的主频提高受到功耗增加的限制。功耗的公式为:
面临的困难有:
- 功耗效率下降,频率每翻一倍功耗也要翻倍
- 热量聚集,散热困难
- 功耗泄露
虽然现在主频提高了很多,但功耗并没有得到这么多的提升,这是因为我们降低了工作电压(5V->1V),但工作电压无法再降低,否则泄漏电流占比太大。若从散热的角度考虑,散热效率也很难提高,因此难以再提高主频了。
内存墙¶
内存墙 (Memory Wall) 指的是,内存的性能增长比不过 CPU 的性能增长,程序大部分时间都花在读写内存了,影响整体性能。
解决方法:增大二级缓存,从而减少内存访问次数。
指令级并行墙¶
指令级并行 (Instruction Level Parallelism) 墙指的是,很难使单个进程的指令流有足够的并行性,来保持单核的高占用率。
由于功耗浪费和内存慢速,ILP 的利用率很低,因此现在主要转向 DLP (Data Level Parallelism) 和 TLP (Thread Level Parallelism)。不过与 ILP 相比,DLP 和 TLP 都需要显式的并行编程,更加麻烦。
杂项¶
Amdahl's Law: 提升计算机的某一方面,只能提升整体性能的一部分。因此,需要使最常见的情况更快。
Low Power at Idle: 当 CPU 占用率低时,功率仍然较高。然而现实中,大部分时间 CPU 都是空闲的,因此需要通过设计尽量让功耗与占用率保持线性关系。