计算机组成原理:可以从哪些方面提升计算机性能 您所在的位置:网站首页 提高缓存速度的措施 计算机组成原理:可以从哪些方面提升计算机性能

计算机组成原理:可以从哪些方面提升计算机性能

2024-07-04 00:16| 来源: 网络整理| 查看: 265

从公式: 程序的 C P U 执行时间 = 指令数 ∗ C P I ∗ C l o c k C y c l e T i m e 程序的CPU执行时间=指令数*CPI*Clock Cycle Time 程序的CPU执行时间=指令数∗CPI∗ClockCycleTime

可以看出,如果要提升计算机的性能,我们可以从指令数、CPI、CPU主频这三个地方入手。

对于CPU主频:

在CPU上多放一些晶体管,不断提升CPU的时钟频率,这样就能让CPU变得更快,程序的执行时间就会缩短于是,从 1978 年 Intel 发布的 8086 CPU 开始,计算机的主频从 5MHz 开始,不断提升。1980 年代中期的 80386 能够跑到 40MHz,1989 年的 486 能够跑到 100MHz,直到 2000 年的奔腾 4 处理器,主频已经到达了 1.4GHz。而消费者也在这 20 年里养成了“看主频”买电脑的习惯。当时已经基本垄断了桌面 CPU 市场的 Intel 更是夸下了海口,表示奔腾 4 所使用的 CPU 结构可以做到 10GHz,颇有一点“大力出奇迹”的意思。 功耗:CPU的“人体极限”

然而,计算机科学界从来不相信“大力出奇迹”。

奔腾 4 的 CPU 主频从来没有达到过10GHz,最终它的主频上限定格在 3.8GHz。这还不是最糟糕的,更糟糕的事情是,大家发现,奔腾4的主频虽然高,但是它的实际性能却配不上同样的主频。想要用在笔记本上的奔腾 4 2.4GHz 处理器,其性能只和基于奔腾 3 架构的奔腾 M 1.6GHz 处理器差不多。于是,这一次的“大力出悲剧”,不仅让 Intel 的对手 AMD 获得了喘息之机,更是代表着“主频时代”的终结。后面几代 Intel CPU 主频不但没有上升,反而下降了。到如今,2019 年的最高配置 Intel i9 CPU,主频也只不过是 5GHz 而已。

为什么会出现这种情况呢?答案就是功耗问题。什么是功耗问题呢?我们先看一个直观的例子。

一个3.8GHz的奔腾4处理器,满载功率是130瓦。这个130瓦是什么概念呢? 机场允许带上飞机的充电宝的容量上限是100瓦时,如果我们把这个CPU安在手机里面,不考虑屏幕内存之类的耗电,这个CPU满载运行45分钟,充电宝里面就没电了。而iPhone X使用ARM架构的CPU,功率则只有4.5瓦左右。

CPU,也叫做超大规模集成电路。这些电路,实际上就是一个个晶体管组合而成的。CPU在计算,其实就是让晶体管里面的“开关”不断去“打开”和“关闭”,来组合完成各种运算和功能。

想要计算得快,一方面,我们要在CPU里面,同样的面积里面,多放一些晶体管,也就是增加密度;另一方面,我们要让晶体管“打开”和“关闭”的更快一些,也就是“提升主频”。而这两种,都会增加功耗,带来耗电和散热问题

这么说可能还是有点抽象,还是给你举一个例子。

你可以把一个计算机 CPU 想象成一个巨大的工厂,里面有很多工人,相当于 CPU 上面的晶体管,互相之间协同工作。为了让工作得快一些,我们要在工厂里多塞一些人。你可能会问,为什么不把工厂造的大一些呢? 这是因为,任何人之间如果离得远了,互相之间走过去需要话的时间就会边长,这也会导致性能下降。这就好像如果CPU的面积大,晶体管之间的距离变大,电信号传输的时间就会边长,运算速度自然就变慢了。 除了多塞一点人,我们还希望每个人的动作都快一些,这样同样的时间里就可以多干一些点活了。这就相当于提升CPU主频。但是动作快,每个人就要散热。要是太热了,对工厂里面的人来说就会中暑生病,对CPU来说就是崩溃出错。

因此,在CPU里面,能够放下的晶体管数量和晶体管“开关”频率也是有限的。一个CPU的功率,可以用这样一个公式来表示:功耗 ~= 1/2 ×负载电容×电压的平方×开关频率×晶体管数量

那么,为了要提升性能

(1)我们需要不断地增加晶体管数量。

同样的面积下,我们想要多放一点晶体管,就要把晶体管造得小一点。这个就是平时我们所说的提升“制程”。从 28nm到 7nm,相当于晶体管本身变成了原来的 1/4 大小。这个就相当于我们在工厂里,同样的活儿,我们要找瘦小一点的工人,这样一个工厂里面就可以多一些人。

(2)我们还要提升主频,让开关的频率变快,也就是要找手脚更快的工人。

在这里插入图片描述

但是,功耗增加太多,就会导致 CPU 散热跟不上,这时,我们就需要降低电压。这里有一点非常关键,在整个功耗的公式里面,功耗和电压的平方是成正比的。这意味着电压下降到原来的 1/5,整个的功耗会变成原来的 1/25。事实上,从 5MHz 主频的 8086 到 5GHz 主频的 Intel i9,CPU 的电压已经从 5V 左右下降到了 1V 左右。这也是为什么我们 CPU 的主频提升了 1000 倍,但是功耗只增长了 40倍。 并行优化

从奔腾4开始,Intel意识到通过提升主频比较“难”去实现性能提升,于是就开始推出了多核CPU,听过提升“吞吐率”而不是“响应时间”来达到目的。

提升响应时间,就好比提升你用的交通工具的速度,比如原本你是开汽车,现在变成了火车乃至飞机。本来开车从上海到北京要 20 个小时,换成飞机就只要 2 个小时了,但是,在此之上,再想要提升速度就不太容易了。我们的 CPU 在奔腾 4 的年代,就好比已经到了飞机这个速度极限。那接下来怎么办呢?相比于给飞机提速,还不如一次同时开2架、4架、8架飞机,也就是我们的2核、4核、8核CPU虽然从上海到北京的时间没有变,但是一次飞 8 架飞机能够运的东西自然就变多了,也就是所谓的“吞吐率”变大了。所以,不管你有没有需要,现在 CPU 的性能就是提升了 2 倍乃至 8 倍、16 倍。这也是一个最常见的提升性能的方式,通过并行提高性能。

但是,并不是所有问题,都可以通过并行提高性能来解决。如果想要使用这种思想,需要满 足这样几个条件。

第一,需要进行的计算,本身可以分解成几个可以并行的任务。好比上面的乘法和加法计 算,几个人可以同时进行,不会影响最后的结果。第二,需要能够分解好问题,并确保几个人的结果能够汇总到一起。第三,在“汇总”这个阶段,是没有办法并行进行的,还是得顺序执行,一步一步来。

这就引出了我们在进行性能优化中,常常用到的一个经验定律,阿姆达尔定律(Amdahl’s Law)。这个定律说的就是,对于一个程序进行优化之后,处理器并行运算之后效率提升的情况。具体可以用这样一个公式来表示: 优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受影响的执行时间 优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受影响的执行时间 优化后的执行时间=受优化影响的执行时间/加速倍数+不受影响的执行时间

在这里插入图片描述

总结

我们可以看到,无论是简单的通过提升主频,还是增加更多的CPU核心数量,通过并行来提升性能,都会遇到相应的瓶颈。仅仅简单的通过“堆硬件”的方式,是无法解决的。所以,需要想其他方法。

在“摩尔定律”和“并行计算”之外,在整个计算机组成层面,还有这样几个原则性的性能提升方法:

加速大概率事件 最典型的就是,深度学习中,99%都是向量和矩阵计算。于是,工程师们通过GPU替代CPU,大幅度提升了深度学习的模型训练过程。本来应该CPU需要跑几小时甚至几天的纯虚,GPU只需要几分钟就好了Google 更是不满足于 GPU 的性能,进一步地推出了 TPU。 通过流水线提升性能 CPU其实是一个“运算工程”我们把CPU指令执行的过程进行拆分,细化运行,也是CPU在主频没有办法提升那么多的情况下,性能仍然可以得到提升的重要原因之一 通过预测提升性能 通过预先猜测下一步该干什么,而不是等上一步运行的结果。提前进行运行,也是让程序跑的更快一些的方法


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有