当前位置: 首页 > news >正文

竞品网站分析互联网网站开发合同

竞品网站分析,互联网网站开发合同,360免费建站搜索引擎收录吗,平面设计专业学什么04 穿越功耗墙#xff0c;我们该从哪些方面提升“性能”#xff1f; 上一讲#xff0c;在讲 CPU 的性能时#xff0c;我们提到了这样一个公式#xff1a; 程序的 CPU 执行时间 指令数CPIClock Cycle Time 这么来看#xff0c;如果要提升计算机的性能#xff0c;我们可以… 04 穿越功耗墙我们该从哪些方面提升“性能” 上一讲在讲 CPU 的性能时我们提到了这样一个公式 程序的 CPU 执行时间 指令数×CPI×Clock Cycle Time 这么来看如果要提升计算机的性能我们可以从指令数、CPI 以及 CPU 主频这三个地方入手。要搞定指令数或者 CPI乍一看都不太容易。于是研发 CPU 的硬件工程师们从 80 年代开始就挑上了 CPU 这个“软柿子”。在 CPU 上多放一点晶体管不断提升 CPU 的时钟频率这样就能让 CPU 变得更快程序的执行时间就会缩短。 于是从 1978 年 Intel 发布的 8086 CPU 开始计算机的主频从 5MHz 开始不断提升。1980 年代中期的 80386 能够跑到 40MHz1989 年的 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 而已。相较于 1978 年到 2000 年这 20 年里 300 倍的主频提升从 2000 年到现在的这 19 年CPU 的主频大概提高了 3 倍。 img CPU 的主频变化在奔腾 4 时代进入了瓶颈期图片来源 奔腾 4 的主频为什么没能超过 3.8GHz 的障碍呢答案就是功耗问题。什么是功耗问题呢我们先看一个直观的例子。 一个 3.8GHz 的奔腾 4 处理器满载功率是 130 瓦。这个 130 瓦是什么概念呢机场允许带上飞机的充电宝的容量上限是 100 瓦时。如果我们把这个 CPU 安在手机里面不考虑屏幕内存之类的耗电这个 CPU 满载运行 45 分钟充电宝里面就没电了。而 iPhone X 使用 ARM 架构的 CPU功率则只有 4.5 瓦左右。 我们的 CPU一般都被叫作超大规模集成电路Very-Large-Scale IntegrationVLSI。这些电路实际上都是一个个晶体管组合而成的。CPU 在计算其实就是让晶体管里面的“开关”不断地去“打开”和“关闭”来组合完成各种运算和功能。 想要计算得快一方面我们要在 CPU 里同样的面积里面多放一些晶体管也就是增加密度另一方面我们要让晶体管“打开”和“关闭”得更快一点也就是提升主频。而这两者都会增加功耗带来耗电和散热的问题。 这么说可能还是有点抽象我还是给你举一个例子。你可以把一个计算机 CPU 想象成一个巨大的工厂里面有很多工人相当于 CPU 上面的晶体管互相之间协同工作。 为了工作得快一点我们要在工厂里多塞一点人。你可能会问为什么不把工厂造得大一点呢这是因为人和人之间如果离得远了互相之间走过去需要花的时间就会变长这也会导致性能下降。这就好像如果 CPU 的面积大晶体管之间的距离变大电信号传输的时间就会变长运算速度自然就慢了。 除了多塞一点人我们还希望每个人的动作都快一点这样同样的时间里就可以多干一点活儿了。这就相当于提升 CPU 主频但是动作快每个人就要出汗散热。要是太热了对工厂里面的人来说会中暑生病对 CPU 来说就会崩溃出错。 我们会在 CPU 上面抹硅脂、装风扇乃至用上水冷或者其他更好的散热设备就好像在工厂里面装风扇、空调发冷饮一样。但是同样的空间下装上风扇空调能够带来的散热效果也是有极限的。 因此在 CPU 里面能够放下的晶体管数量和晶体管的“开关”频率也都是有限的。一个 CPU 的功率可以用这样一个公式来表示 功耗 ~ 1⁄2 ×负载电容×电压的平方×开关频率×晶体管数量 那么为了要提升性能我们需要不断地增加晶体管数量。同样的面积下我们想要多放一点晶体管就要把晶体管造得小一点。这个就是平时我们所说的提升“制程”。从 28nm 到 7nm相当于晶体管本身变成了原来的 1⁄4 大小。这个就相当于我们在工厂里同样的活儿我们要找瘦小一点的工人这样一个工厂里面就可以多一些人。我们还要提升主频让开关的频率变快也就是要找手脚更快的工人。 img 但是功耗增加太多就会导致 CPU 散热跟不上这时我们就需要降低电压。这里有一点非常关键在整个功耗的公式里面功耗和电压的平方是成正比的。这意味着电压下降到原来的 1/5整个的功耗会变成原来的 1/25。 事实上从 5MHz 主频的 8086 到 5GHz 主频的 Intel i9CPU 的电压已经从 5V 左右下降到了 1V 左右。这也是为什么我们 CPU 的主频提升了 1000 倍但是功耗只增长了 40 倍。比如说我写这篇文章用的是 Surface Go在这样的轻薄笔记本上微软就是选择了把电压下降到 0.25V 的低电压 CPU使得笔记本能有更长的续航时间。 并行优化理解阿姆达尔定律 虽然制程的优化和电压的下降在过去的 20 年里让我们的 CPU 性能有所提升。但是从上世纪九十年代到本世纪初软件工程师们所用的“面向摩尔定律编程”的套路越来越用不下去了。“写程序不考虑性能等明年 CPU 性能提升一倍到时候性能自然就不成问题了”这种想法已经不可行了。 于是从奔腾 4 开始Intel 意识到通过提升主频比较“难”去实现性能提升边开始推出 Core Duo 这样的多核 CPU通过提升“吞吐率”而不是“响应时间”来达到目的。 提升响应时间就好比提升你用的交通工具的速度比如原本你是开汽车现在变成了火车乃至飞机。本来开车从上海到北京要 20 个小时换成飞机就只要 2 个小时了但是在此之上再想要提升速度就不太容易了。我们的 CPU 在奔腾 4 的年代就好比已经到了飞机这个速度极限。 那你可能要问了接下来该怎么办呢相比于给飞机提速工程师们又想到了新的办法可以一次同时开 2 架、4 架乃至 8 架飞机这就好像我们现在用的 2 核、4 核乃至 8 核的 CPU。 虽然从上海到北京的时间没有变但是一次飞 8 架飞机能够运的东西自然就变多了也就是所谓的“吞吐率”变大了。所以不管你有没有需要现在 CPU 的性能就是提升了 2 倍乃至 8 倍、16 倍。这也是一个最常见的提升性能的方式通过并行提高性能。 这个思想在很多地方都可以使用。举个例子我们做机器学习程序的时候需要计算向量的点积比如向量 W[W0,W1,W2,…,W15]W[W0,W1,W2,…,W15] 和向量 X[X0,X1,X2,…,X15]X[X0,X1,X2,…,X15]W⋅XW0∗X0W1∗X1W·XW0∗X0W1∗X1 W2∗X2…W15∗X15W2∗X2…W15∗X15。这些式子由 16 个乘法和 1 个连加组成。如果你自己一个人用笔来算的话需要一步一步算 16 次乘法和 15 次加法。如果这个时候我们把这个人物分配给 4 个人同时去算 W0W3W0W3, W4W7W4W7, W8W11W8W11, W12W15W12W15 这样四个部分的结果再由一个人进行汇总需要的时间就会缩短。 img 但是并不是所有问题都可以通过并行提高性能来解决。如果想要使用这种思想需要满足这样几个条件。 第一需要进行的计算本身可以分解成几个可以并行的任务。好比上面的乘法和加法计算几个人可以同时进行不会影响最后的结果。 第二需要能够分解好问题并确保几个人的结果能够汇总到一起。 第三在“汇总”这个阶段是没有办法并行进行的还是得顺序执行一步一步来。 这就引出了我们在进行性能优化中常常用到的一个经验定律阿姆达尔定律Amdahl’s Law。这个定律说的就是对于一个程序进行优化之后处理器并行运算之后效率提升的情况。具体可以用这样一个公式来表示 优化后的执行时间 受优化影响的执行时间 / 加速倍数 不受影响的执行时间 在刚刚的向量点积例子里4 个人同时计算向量的一小段点积就是通过并行提高了这部分的计算性能。但是这 4 个人的计算结果最终还是要在一个人那里进行汇总相加。这部分汇总相加的时间是不能通过并行来优化的也就是上面的公式里面不受影响的执行时间这一部分。 比如上面的各个向量的一小段的点积需要 100ns加法需要 20ns总共需要 120ns。这里通过并行 4 个 CPU 有了 4 倍的加速度。那么最终优化后就有了 100⁄42045ns。即使我们增加更多的并行度来提供加速倍数比如有 100 个 CPU整个时间也需要 100⁄1002021ns。 img 总结延伸 我们可以看到无论是简单地通过提升主频还是增加更多的 CPU 核心数量通过并行来提升性能都会遇到相应的瓶颈。仅仅简单地通过“堆硬件”的方式在今天已经不能很好地满足我们对于程序性能的期望了。于是工程师们需要从其他方面开始下功夫了。 在“摩尔定律”和“并行计算”之外在整个计算机组成层面还有这样几个原则性的性能提升方法。 1.加速大概率事件。最典型的就是过去几年流行的深度学习整个计算过程中99% 都是向量和矩阵计算于是工程师们通过用 GPU 替代 CPU大幅度提升了深度学习的模型训练过程。本来一个 CPU 需要跑几小时甚至几天的程序GPU 只需要几分钟就好了。Google 更是不满足于 GPU 的性能进一步地推出了 TPU。后面的文章我也会为你讲解 GPU 和 TPU 的基本构造和原理。 2.通过流水线提高性能。现代的工厂里的生产线叫“流水线”。我们可以把装配 iPhone 这样的任务拆分成一个个细分的任务让每个人都只需要处理一道工序最大化整个工厂的生产效率。类似的我们的 CPU 其实就是一个“运算工厂”。我们把 CPU 指令执行的过程进行拆分细化运行也是现代 CPU 在主频没有办法提升那么多的情况下性能仍然可以得到提升的重要原因之一。我们在后面也会讲到现代 CPU 里是如何通过流水线来提升性能的以及反面的过长的流水线会带来什么新的功耗和效率上的负面影响。 3.通过预测提高性能。通过预先猜测下一步该干什么而不是等上一步运行的结果提前进行运算也是让程序跑得更快一点的办法。典型的例子就是在一个循环访问数组的时候凭经验你也会猜到下一步我们会访问数组的下一项。后面要讲的“分支和冒险”、“局部性原理”这些 CPU 和存储系统设计方法其实都是在利用我们对于未来的“预测”提前进行相应的操作来提升我们的程序性能。 好了到这里我们讲完了计算机组成原理这门课的“前情提要”。一方面整个组成乃至体系结构都是基于冯·诺依曼架构组成的软硬件一体的解决方案。另一方面你需要明白的就是这里面的方方面面的设计和考虑除了体系结构层面的抽象和通用性之外核心需要考虑的是“性能”问题。 接下来我们就要开始深入组成原理从一个程序的运行讲起开始我们的“机器指令”之旅。 本文由 mdnice 多平台发布
http://www.zqtcl.cn/news/564013/

相关文章:

  • php网站开发实例教程书wordpress博客页面显示文章在哪
  • 地方o2o同城网站源码微信app开发价格表
  • 花木公司网站源码双语外贸网站源码
  • 什么公司做网站会提供源代码创业做招商加盟类网站赚钱
  • 东莞网站建设排名基因数据库网站开发价格
  • 天河区营销型网站建设科技自立自强
  • 网站域名账号江苏百度推广代理商
  • 专题网站建站对网站分析
  • 外贸出口网站建设如何搭建自己的网站服务器
  • 云南省建设厅网站职称评审房地产推广方案和推广思路
  • 湘潭建设路街道网站app的设计与开发
  • 《网站开发实践》 实训报告广告策划书案例完整版
  • 一级 爰做片免费网站做中学学中做网站
  • 网站排名如何提升网络营销的有哪些特点
  • 巨腾外贸网站建设个人主页网站模板免费
  • 有哪些网站免费做推广淄博网站电子商城平台建设
  • 网站建设的技术支持论文做网站买什么品牌笔记本好
  • 凡科网站后台在哪里.工程与建设
  • 静态网站源文件下载建设手机网站价格
  • 苏州做网站优化的网站开发邮件
  • 做网站怎么搭建环境阿里云大学 网站建设
  • 网站改版业务嵌入式培训推荐
  • 腾讯云 怎样建设网站网站开发 报价
  • 网络科技公司门户网站免费人脉推广官方软件
  • 建和做网站网络营销推广可以理解为
  • 太原市网站建设网站人防工程做资料的网站
  • 怎么做免费推广网站做网站第一部
  • 橙色网站后台模板WordPress的SEO插件安装失败
  • 做网站好还是做微信小程序好外包加工网外放加工活
  • 中国建设银行网站查征信电子商务网站建设及推广