zoukankan      html  css  js  c++  java
  • 计算机组成原理--浅谈计算机性能

    计算机组成原理|浅谈计算机性能

    本篇文章属于计算机组成原理的开篇之作,主讲影响计算机性能的因素与提升的计算机性能的路径。
    关键词: 性能,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内部一、二级缓存变量调用产生影响。

    结束语

    最近在深入挖掘计算机的底层知识,不仅仅是学习知识,对于计算机这个世界也有了新的认识,状态很好!感觉自己收获很多!
    希望自己可以一直挖下去~

  • 相关阅读:
    遗传算法求解TSP问题
    蚁群算法求解TSP问题
    遗传算法之函数优化
    k-means和iosdata聚类算法在生活案例中的运用
    MATLAB实现模糊控制
    感知机算法及BP神经网络
    K-means聚类算法
    链表_leetcode92
    链表_leetcode86
    链表_leetcode83
  • 原文地址:https://www.cnblogs.com/Kate-liu/p/11291150.html
Copyright © 2011-2022 走看看