程序的CPU执行时间 = 指令数×CPI×Clock Cycle Time
主频高 增加功耗和散热问题
intel 奔腾4 没有达到10GHz 功耗是最大问题
功耗 ~= 1/2 ×负载电容×电压的平方×开关频率×晶体管数量
5MHz主频的8086到5GHz主频的Intel i9,CPU的电压已经从5V左右下降到了1V左右。这也是为什么我们CPU的主频提升了1000倍,但是功耗只增长了40倍
第一,需要进行的计算,本身可以分解成几个可以并行的任务。好比上面的乘法和加法计算,几个人可以同时进行,不会影响最后的结果。
第二,需要能够分解好问题,并确保几个人的结果能够汇总到一起。
第三,在“汇总”这个阶段,是没有办法并行进行的,还是得顺序执行,一步一步来。
优化后的执行时间 = 受优化影响的执行时间/加速倍数+不受影响的执行时间
加速大概率事件通常我们使用 big-O 去表示一个算法的好坏,我们优化一个算法也是基于 big-O,但是 big-O 其实是一个近似值,就好比一个算法时间复杂度是 O(n^2) + O(n),这里的 O(n^2) 是占大比重的,特别是当 n 很大的时候,通常我们会忽略掉 O(n),着手优化 O(n^2) 的部分
通过流水线提高性能能够想到的是任务分解,把一个大的任务分解成好多个小任务,一般来说,分的越细,小任务就会越简单,整个框架、思路也会变得更加清晰
通过预测提高性能常常在计算近似值的时候,例如计算圆周率,我们可以根据条件预设立一个精确率,高过这个精确率就会停止计算,防止无穷无尽的一直计算下去;另外就是深度优先搜索算法里面的 “剪枝策略”,防止没有必要的分支搜索,这会大幅度提升算法效率