计算机组成 -- 性能
性能指标
- 响应时间(Response time)、执行时间(Execution time)
- 执行一个程序,需要花多少时间
- 吞吐率(Throughput)、带宽(Bandwidth)
- 单位时间范围内,能处理多少数据或执行多少指令,可以通过多核、集群等方式来提升吞吐率
- 性能 = 1/响应时间
CPU时钟
- time命令
- real time
- Wall Clock Time/Elapsed Time,运行程序整个过程中流逝掉的时间
- user time
- 在用户态运行指令的时间
- sys time
- 在操作系统内核里运行指令的时间
- real time
- 程序实际花费的CPU执行时间:CPU time = user time + sys time
- 程序实际占用的CPU time一般比Elapsed Time少(单核情况下)
1 | time seq 1000000 | wc -l |
- 程序实际花了0.024s,CPU time只有
0.018s+0.005s=0.023s
- 如果在一台多核或多CPU的机器上运行,seq和wc可能会被分配到两个CPU上
- user和sys是两个CPU相加的,而real是现实时钟里走过的时间
- 极端情况下(两个命令完全并行),
user + sys ≈ real × 2
时钟周期时间
1 | CPU time = 时钟周期时间(Clock Cycle) × CPU时钟周期数(CPU Cycles) |
- CPU主频 – 2.8GHz
- 代表CPU能够识别出来的最小时间间隔
- CPU内部,存在一个晶体振荡器,简称晶振
- 时钟周期时间为
1/2.8GHz
- 提升性能的方向
- 缩短时钟周期时间
- 提升主频(超频或换CPU)
- 降低CPI
- 流水线技术(Pipeline)
- 减少指令数
- 编译器的挑战
- 缩短时钟周期时间
参考资料
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.