其他分享
首页 > 其他分享> > 计算机组成原理

计算机组成原理

作者:互联网

极客时间(四)

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

提高计算机的性能,从减少指令数、CPI来说不容易,所以从提高主频方向来减少执行时间。

而当实际性能配不上这么高的主频时,主频高也无济于事,反而会是计算机性能下降

一、功耗:CPU 的“人体极限”

奔腾4
奔腾 4 的 CPU 主频没有达到过 10GHz(曾夸下海口要达到10GHz),最终它的主频上限定格在 3.8GHz。这还不是最糟的,更糟糕的事情是,大家发现,奔腾 4 的主频虽然高,但是它的实际性能却配不上同样的主频。想要用在笔记本上的奔腾 4 2.4GHz 处理器,其性能只和基于奔腾 3 架构的奔腾 M 1.6GHz 处理器差不多。

CPU也被叫做 超大规模集成电路,是由一个个晶体管组合而成。
要想使CPU运算快,两个方面可以增加其运算速度
①多增加晶体管数量(增加密度)
②提高晶体管打开和关闭的速度(即提高主频)
缺点:带来耗电和散热问题。

二、CPU和工厂的比喻
把一个计算机 CPU 想象成一个巨大的工厂,里面有很多工人,相当于 CPU 上面的晶体管,互相之间协同工作。
为什么不把工厂造大一些?
人和人之间如果离得远了,互相之间走过去需要花的时间就会变长,这也会导致性能下降。这就好像如果 CPU 的面积大,晶体管之间的距离变大,电信号传输的时间就会变长,运算速度自然就慢了。
达到一个峰值提高主频为什么不能再提高效率
提升 CPU 主频,工厂每个人都要出汗散热。要是太热了,对工厂里面的人来说会中暑生病,对 CPU 来说就会崩溃出错。
降温方法
我们会在 CPU 上面抹硅脂、装风扇,乃至用上水冷或者其他更好的散热设备,就好像在工厂里面装风扇、空调,发冷饮一样。但是同样的空间下,装上风扇空调能够带来的散热效果也是有极限的。

三、一个关于功耗公式
功耗 ~= 1/2 ×负载电容×电压的平方×开关频率×晶体管数量

为了提高性能,我们需要不断地增加晶体管数量
(增加晶体管可以增加硬件能够支持的指令数量,增加数字通路的位数,以及利用好电路天然的并行性,从硬件层面更快地实现特定的指令,所以增加晶体管也是常见的提升cpu性能的一种手段)
同样的面积下,我们想要多放一点晶体管,就要把晶体管造得小一点。这个就是平时我们所说的提升“制程”。在这里插入图片描述
四、降低功耗的关键是电压
在整个功耗的公式里面,功耗和电压的平方是成正比的。这意味着电压下降到原来的 1/5,整个的功耗会变成原来的 1/25。
这也是为什么很多笔记本都是低压型,降低功率,增加续航时间。

五、并行优化,理解阿姆达尔定律
虽然制程的优化和电压的下降,让我们的 CPU 性能有所提升。但如何进一步提高计算机效率?

Intel 意识到通过提升主频比较“难”去实现性能提升,边开始推出 Core Duo 这样的多核 CPU,通过提升“吞吐率”而不是“响应时间”,来达到目的。这就好像我们现在用的 2 核、4 核,乃至 8 核的 CPU。

提高吞吐率,搬运东西的量变多了,不管你有没有需要,现在 CPU 的性能就是提升了 2 倍乃至 8 倍、16 倍。这也是一个最常见的提升性能的方式,通过并行提高性能。

这个思想在很多地方都可以使用。举个例子,我们做机器学习程序的时候,需要计算向量的点积,比如向量 W=[W0​,W1​,W2​,…,W15​] 和向量 X=[X0​,X1​,X2​,…,X15​],W⋅X=W0​∗X0​+W1​∗X1​+ W2​∗X2​+…+W15​∗X15​。这些式子由 16 个乘法和 1 个连加组成。如果你自己一个人用笔来算的话,需要一步一步算 16 次乘法和 15 次加法。如果这个时候我们把这个任务分配给 4 个人,同时去算 W0​~W3​, W4​~W7​, W8​~W11​, W12​~W15​ 这样四个部分的结果,再由一个人进行汇总,需要的时间就会缩短。在这里插入图片描述
通过并行提高性能需要满足的几个条件:
①需要进行的计算,本身可以分解成几个可以并行的任务。
②需要能够分解好问题,并确保几个人的结果能够汇总到一起。
③在“汇总”这个阶段,是没有办法并行进行的,还是得顺序执行,一步一步来。
这就引出了我们在进行性能优化中,常常用到的一个经验定律
阿姆达尔定律:
优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受影响的执行时间

比如上面的各个向量的一小段的点积,需要 100ns,加法需要 20ns,总共需要 120ns。这里通过并行 4 个 CPU 有了 4 倍的加速度。那么最终优化后,就有了 100/4+20=45ns。即使我们增加更多的并行度来提供加速倍数,比如有 100 个 CPU,整个时间也需要 100/100+20=21ns。

无论是简单地通过提升主频,还是增加更多的 CPU 核心数量,通过并行来提升性能,都会遇到相应的瓶颈。仅仅简单地通过“堆硬件”的方式,在今天已经不能很好地满足我们对于程序性能的期望了。于是,工程师们需要从其他方面开始下功夫了。

1.加速大概率事件。
流行的深度学习,整个计算过程中,99% 都是向量和矩阵计算,于是,工程师们通过用 GPU 替代 CPU,大幅度提升了深度学习的模型训练过程。

2.通过流水线提高性能。
我们把 CPU 指令执行的过程进行拆分,细化运行,也是现代 CPU 在主频没有办法提升那么多的情况下,性能仍然可以得到提升的重要原因之一。

3.通过预测提高性能。
典型的例子就是在一个循环访问数组的时候,凭经验,你也会猜到下一步我们会访问数组的下一项。

标签:主频,计算机,功耗,性能,晶体管,提升,原理,CPU,组成
来源: https://blog.csdn.net/z404_not_Found/article/details/120557114