ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

计算机组成原理

2021-09-29 22:31:26  阅读:299  来源: 互联网

标签:主频 计算机 功耗 性能 晶体管 提升 原理 CPU 组成


极客时间(四)

程序的 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有