大家好,又见面了,我是你们的朋友全栈君。
计算机组成原理|浅谈计算机性能
本篇文章属于计算机组成原理的开篇之作,主讲影响计算机性能的因素与提升的计算机性能的路径。
关键词: 性能,CPU,响应时间,主频,功耗,电压,并行…
前言
目前所有的文章思想格式都是:知识+情感。
知识:对于所有的知识点的描述。力求不含任何的自我感情色彩。
情感:用我自己的方式,解读知识点。力求通俗易懂,完美透析知识。
正文
计算机性能的衡量标准
衡量计算机性能的标准有两个,分别是响应时间(Response time)和吞吐率(Throughput)。
1.响应时间,也称为执行时间(Execution time)。表示的是,计算机执行一段程序的总时间。
2.吞吐率,也称为带宽(Bandwidth)。表示的是,计算机执行一段程序每一次执行的量。
注意:存在一个响应时间与吞吐率的关系,即响应时间=吞吐率x执行次数。
响应时间
首先,得知可以提高响应时间进而提高计算机性能。然而,在计算机中,影响响应时间的主要因素是CPU的性能。
一般性能测试
性能,可以看成是响应时间的倒数,即
** 性能 = 1/响应时间**
此时,只要保证响应时间越短,性能的数值就越好。
问题:响应时间怎么来,是现实生活中的时间吗?
回答: 当然不是!
第一种情况,CPU不可能做到只运行一个程序,首先是不是需要支持操作系统在运行,才可以进而运行测试程序。在真实的环境中,CPU会在不同的进程中切换,运行程序,单位是GHz,人是感觉不到的。
第二种情况,CPU会处于满载运行与降频运行两种模式,对应的运行结果当然是不一样的!并且,你需要想一下,硬件的当前状态无时无刻都在变化,没法保证一致。
了解内容:在实际生活中,评价一个计算机性能的第三方机构叫SPEC(Standard Performance Evaluation Corporation),主要是提供的 CPU 基准测试程序,通过数十个不同的计算程序,对于 CPU 的性能给出一个最终评分。
CPU性能测试
在了解了一般的性能测试之后,针对CPU,我们可以得到新的性能测试方法,引入CPU时钟周期,即
性能 = 1/(CPU时钟周期数 x CPU时钟周期)
在上式中,CPU的时钟周期,就是我们CPU 的主频(Frequency/Clock Rate)。我的主机是2.81GHz,表示1秒的时间内,可以执行的简单指令的数量是 2.8G 条。
所以,可以引入指令,得到新的性能公式:
性能 = 1/(指令数x每条指令的平均周期数 x CPU时钟周期)
即,可以优化性能就有了三个方面:
1.指令数,通过编译器将指定数减少,属于指令设计层面。
2.每条指定数的平均周期数,也叫作PCI(Cycles Per Instruction),通过提高CPU技术实现减少平均周期数,属于CPU设计层面。
3.CPU时钟周期,通过提升CPU的主频,获得更小的CPU时钟周期,属于电路硬件层面。
了解内容:这里会涉及晶振的概念,玩过单片机的都知道有个晶振的东西,CPU内部有个类似的东西。
在打游戏,或者图像渲染的时候,会有一个超频的概念,就是将计算机的实际主频调快,这是可以认为调整的,只不过会出现散热问题而已。
CPU主频优化
通过上面,了解到可以通过提高CPU的主频,进而获得更高的性能。
先了解一下CPU的构成。CPU,一般都被叫作超大规模集成电路(Very-Large-Scale Integration,VLSI)。其内部,包含亿级别的晶体管,让晶体管里面的“开关”不断地去“打开”和“关闭”,来组合完成各种运算和功能。
一个 CPU 的功率,可以用这样一个公式来表示:
功耗 ~= 1/2 ×负载电容×电压的平方×开关频率×晶体管数量
从上式,可以看出电压与功耗是平方的关系,晶体管数量与功耗成线性关系。运用我们聪明的1+1=2的大脑,肯定是保证功耗不大的情况下,优先降低电压,其次增加晶体管的数量。
注意: CPU功率可不能搞的很大,笔记本可不是插电源的,需要携带,一个小时电就用完了,这是不理想的,当然一个月不充电也是幻想状态~
CPU的电压可不能随便小,理论上是只要保证有电压就可以,但实际是电压太小了,晶体管的打开与关闭就不工作….
CPU内部的晶体管的数量,也不能无限多,受限于CPU的体积,CPU工作会散热的,太多了不适合散热,会使得CPU罢工~
了解内容:相同的体积增加晶体管的数量,那就必须将晶体管做小,这就是提升制程。
在自己组装台式机的时候,CPU还是当然是盒装好,但是散片其实也还行,毕竟目前CPU的工艺,可不是假货能模仿的,给钱都做不出来….
吞吐率
当看了响应时间的优化之后,再看吞吐率优化,直接是简单的很,一句话概括吞吐率核心思想:人多力量大。
借助于并行的思想,实现多核CPU工作,实现性能优化,毕竟响应时间的优化已经步履艰难了。
并行基于一个经验定律,即阿姆达尔定律(Amdahl’s Law)。
优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受影响的执行时间
基于上式,想要提升性能,就是获得更小的 优化后的执行时间,只能从增加加速倍数出发。
注意: 受优化影响的执行时间表示的是可以并行执行的时间,加速倍数正是并行的CPU核心数。
虽然可以使用并行思想,提升计算机性能,但是并行依然受限制与于 不受影响的执行时间,这一段时间依然是串行的执行。并且会有一个极限值,无论提高多少加速倍数,时间变化不大。
总结
本文,讲述计算机性能的提升,提出了基于响应时间的性能优化,基于吞吐率的性能优化。
基于响应时间的优化,可以提升CPU的主频,降低CPU的电压,提高晶体管的数量,但是受限制于CPU的散热与功耗。
基于吞吐率的优化,可以进行并行,但是依然受限制于不能并行的部分。
还可以基于大概率事件选择GPU运算,代替CPU;使用CPU的流水线技术;使用预测提高性能。
了解内容:计算机显卡内部就是GPU。
CPU的预测,会对CPU内部一、二级缓存变量调用产生影响。
结束语
最近在深入挖掘计算机的底层知识,不仅仅是学习知识,对于计算机这个世界也有了新的认识,状态很好!感觉自己收获很多!
希望自己可以一直挖下去~
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155675.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...