计算机组成原理学习:我们应该从哪方面提升性能?

您所在的位置:网站首页 想提升电脑性能可以从哪些方面 计算机组成原理学习:我们应该从哪方面提升性能?

计算机组成原理学习:我们应该从哪方面提升性能?

2024-03-14 23:12| 来源: 网络整理| 查看: 265

我们应该从哪方面提升性能?

hello,大家好,我是罗十十十,上一讲我们了解了性能是什么,这一讲我们来了解一下如何提升性能。

这里有一个公式:

程序的CPU执行时间=指令数×CPI×ClockCycleTime程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time程序的CPU执行时间=指令数×CPI×ClockCycleTime

能比较简单的看到想要搞定指令数和CPI,看起来是比较困难的,但是CPU的时钟频率,提升比较简单,多放点晶体管就好了。那多放晶体管会面对什么问题呢?

功耗:CPU 的极限

Untitled.png

如果要多放晶体管,我们一起来思考几个问题:

主频是否越大越好? 1978年-2000年 20年里主频提升了300倍,但是2000年到现在,主频只提升了3倍,是为什么呢? 现在最大的主频是5GHz,曾经intel想要做出10GHz的产品,但是为什么没有达到呢?

Untitled 1.png

好,我们来了解一下原因,一般来说3.8GHz的奔腾4处理器,满载功率是130瓦。而iPhone12 A14的CPU是4.42瓦。这3.8GHz处理器要是放到iPhone12中,估计开机时间都超不过半小时,充电宝得准备十个。太耗电了,也会发很多的热,都可以煎鸡蛋了。

还有另外一个更重要的原因,到达5GHz的时候,发现性能还不如1.8GHz了。这是为什么呢?我一起先来了解一下CPU。

CPU具体是怎么工作的呢?

CPU被称为超大规模电路,像A14有118亿个晶体管,CPU在计算的时候,就是让这118亿个晶体管不断的开关,来完成计算。

一般来说提升性能的2种方式:

增加密度,也就是多放点晶体管 提升主频,让开关更快一些

这2中方式无一例外,都是功耗增加,带来耗电和散热的问题。

计算机一般选择的降温方式,都是在CPU上面抹硅脂、装风扇,或者水冷或者更好的散热设备,但是这些散热设备也是有极限的。

我们用一个公式表示功耗:

功耗 =1/2×负载电容×电压的平方×开关频率×晶体管数量功耗 ~= 1/2 ×负载电容×电压的平方×开关频率×晶体管数量功耗 =1/2×负载电容×电压的平方×开关频率×晶体管数量

可以看到主频提升,晶体管数量增加,都是为了提升性能,那我们怎么减少功耗呢?从公式上来说,我们可以选择减低电压的方式,一般来说降低电压1/5,功耗就能减低1/25,挺完美啊,电压低了耗电量还少了呢,真是完美,但是这也是有极限的,就是有电阻的存在,这个电压太低,电路都连不通,还咋计算呢?

那还有没有另外的优化方案呢?

并行优化

Untitled 2.png

比起一直在一块CPU上加晶体管,我们还可以多加几块CPU来并行提升计算性能,比如计算1+2+3+...+100=???,这个问题,就可以简单的分成5个人分段计算一部分,然后汇总,也是能提高性能的。

但是并行计算也是有条件的:

本身任务可以分解 确保可汇总 最后的汇总阶段还是得一步一步来

这里有个定律,阿姆达尔定律:

优化后的执行时间=受优化影响的执行时间/加速倍数+不受影响的执行时间优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受影响的执行时间优化后的执行时间=受优化影响的执行时间/加速倍数+不受影响的执行时间

可以看到不受影响的执行时间限制了并行优化的效果。最后还是有无法优化的问题,极限的极限,不够完美,计算机的本质就是效率的提升,怎么能允许这种不完美!!聪明的程序员会想,在这种堆硬件的方式已经不能很好的提升性能了,那还有没有其他的办法呢?

当然有,还有一些其他方面提升性能的方法:

加速大概率事件,就是预先加载,或者是缓存经常执行的代码。 通过流水线提高性能,就是把能分步骤精细化,比如说并发编程。 通过预测提高性能,猜测下一步要做什么,提前运算。

以后我们会再聊一聊这三个方法。

总结

高频和多核是硬件方面提升性能的方式,也都有应该面对的极限。

计算机真的是追求完美啊,总是在面对极限的极限,不停的想办法,不断的寻求突破,我们的人生也应该如此,不断的进取啊!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3