04 提升性能的方面
程序的 CPU 执行时间 = 指令数 ×CPI×Clock Cycle Time
指令数、CPI 、 CPU 主频
CPU
多放晶体管,提升 CPU 的时钟频率
功耗
- 同样的面积,多放一些晶体管,增加密度(提升制程);
- 让晶体管“打开”和“关闭”得更快(提升主频)。
功耗 ~= 1/2 × 负载电容 × 电压的平方 × 开关频率 × 晶体管数量
以上两者都会增加功耗,带来耗电和散热的问题。
功耗增加太多,导致 CPU 散热跟不上,需要降低电压。
并行优化
多核 CPU,通过提升“吞吐率”提升性能
通过并行提高性能需要满足的条件
- 需要进行的计算,本身可以分解成几个可以并行的任务
- 需要能够分解好问题,并确保几个人的结果能够汇总到一起
- 在“汇总”这个阶段,是没有办法并行进行的,还是得顺序执行,一步一步来
阿姆达尔定律
优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受影响的执行时间
原则性性能提升方法
加速大概率事件
深度学习 99% 都是向量和矩阵计算,用 GPU 替代 CPU
通过流水线提高性能
把 CPU 指令执行的过程进行拆分,细化运行
通过预测提高性能
通过预先猜测下一步该干什么,而不是等上一步运行的结果,提前进行运算