0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

站在CPU 的角度看这个世界,说说到底它们有多慢

5RJg_mcuworld 2018-02-03 16:16 次阅读

经常听到有人说磁盘很慢、网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦;而从网络下载一部电影,有时候需要几个小时,我都可以睡一觉了。

最为我们熟知的关于计算机不同组件速度差异的图表,是下面这种金字塔形式:越往上速度越快,容量越小,而价格越高。这张图只是给了我们一个直观地感觉,并没有对各个速度和性能做出量化的说明和解释。而实际上,不同层级之间的差异要比这张图大的多。这篇文章就让你站在 CPU 的角度看这个世界,说说到底它们有多慢。

站在CPU 的角度看这个世界,说说到底它们有多慢

希望你看到看完这篇文章能明白两件事情:

磁盘和网络真的很慢

性能优化是个复杂的系统性的活

注:所有的数据都是来自这个地址。所有的数据会因为机器配置不同,或者硬件的更新而有出入,但是不影响我们直觉的感受。如果对这些数据比较感兴趣,这个网址给出了不同年份一些指标的数值。

数据

先来看看 CPU 的速度,就拿我的电脑来说,主频是 2.6G,也就是说每秒可以执行2.6*10^9个指令,每个指令只需要0.38ns(现在很多个人计算机的主频要比这个高,配置比较高的能达到 3.0G+)。我们把这个时间当做基本单位1s,因为1s大概是人类能感知的最小时间单位。

一级缓存读取时间为0.5ns,换算成人类时间大约是1.3s,大约一次或者两次心跳的时间。这里能看出缓存的重要性,因为它的速度可以赶上 CPU,程序本身的 locality 特性加上指令层级上的优化,cache 访问的命中率很高,这最终能极大提高效率。

分支预测错误需要耗时5ns,换算成人类时间大约是13s,这个就有点久了,所以你会看到很多文章分析如何优化代码来降低分支预测的几率,比如这个得分非常高的 stackoverflow 问题。

二级缓存时间就比较久了,大约在7ns,换算成人类时间大约是18.2s,可以看到的是如果一级缓存没有命中,然后去二级缓存读取数据,时间差了一个数量级。

小知识:为什么需要多层的 CPU 缓存呢?这篇文章通过一个通俗易懂的例子给出了讲解。

我们继续,互斥锁的加锁和解锁时间需要25ns,换算成人类时间大约是65s,首次达到了一分钟。并发编程中,我们经常听说锁是一个很耗时的东西,因为在微波炉里加热一个东西需要一分钟的话,你要在那傻傻地等蛮久了。

然后就到了内存,每次内存寻址需要100ns,换算成人类时间是260s,也就是4分多钟,如果读一些不需要太多思考的文章,这么久能读完2-3千字(这个快阅读的时代,很少人在手机上能静心多这么字了)。看起来还不算坏,不多要从内存中读取一段数据需要的时间会更多。到了内存之后,时间就变了一个量级,CPU 和内存之间的速度瓶颈被称为冯诺依曼瓶颈。

一次 CPU 上下文切换(系统调用)需要大约1500ns,也就是1.5us(这个数字参考了这篇文章,采用的是单核 CPU 线程平均时间),换算成人类时间大约是65分钟,嗯,也就是一个小时。我们也知道上下文切换是很耗时的行为,毕竟每次浪费一个小时,也很让人有罪恶感的。上下文切换更恐怖的事情在于,这段时间里 CPU 没有做任何有用的计算,只是切换了两个不同进程的寄存器和内存状态;而且这个过程还破坏了缓存,让后续的计算更加耗时。

在 1Gbps 的网络上传输 2K 的数据需要20us,换算成人类时间是14.4小时,这么久都能把《星球大战》六部曲看完了(甚至还加上吃饭撒尿的时间)!可以看到网络上非常少数据传输对于 CPU 来说,已经很漫长。而且这里的时间还是理论最大值,实际过程还要更慢一些。

SSD 随机读取耗时为150us,换算成人类时间大约是4.5天。换句话说,SSD 读点数据,CPU 都能休假,报团参加周边游了。虽然我们知道 SSD 要比机械硬盘快很多,但是这个速度对于 CPU 来说也是像乌龟一样。I/O 设备从硬盘开始速度开始变得漫长,这个时候我们就想起内存的好处了。尽量减少 IO 设备的读写,把最常用的数据放到内存中作为缓存是所有程序的通识。像memcached和redis这样的高速缓存系统近几年的异军突起,就是解决了这里的问题。

从内存中读取1MB的连续数据,耗时大约为250us,换算成人类时间是7.5天,这次假期升级到国庆七天国外游了。

同一个数据中心网络上跑一个来回需要0.5ms,换算成人类时间大约是15天,也就是半个月的时间。如果你的程序有段代码需要和数据中心的其他服务器交互,在这段时间里 CPU 都已经狂做了半个月的运算。减少不同服务组件的网络请求,是性能优化的一大课题。

从 SSD 读取 1MB 的顺序数据,大约需要1ms,换算成人类时间是1个月。也就是说 SSD 读一个普通的文件,如果要等你做完,CPU 一个月时间就荒废了。尽管如此,SSD已经很快啦,不信你看下面机械磁盘的表现。

磁盘寻址时间为10ms,换算成人类时间是10个月,刚好够人类创造一个新的生命了。如果 CPU 需要让磁盘泡杯咖啡,在它眼里,磁盘去生了个孩子,回来告诉它你让我泡的咖啡好了。机械硬盘使用RPM(Revolutions Per Minute/每分钟转速)来评估磁盘的性能:RPM 越大,平均寻址时间更短,磁盘性能越好。寻址只是把磁头移动到正确的磁道上,然后才能读取指定扇区的内容。换句话说,寻址虽然很浪费时间,但其实它并没有办任何的正事(读取磁盘内容)。

从磁盘读取 1MB 连续数据需要20ms,换算成人类时间是20个月。IO 设备是计算机系统的瓶颈,希望读到这里你能更深切地理解这句话!如果还不理解,不妨想想你在网上买的东西,快递送了将近两年,你的心情是怎么样的。

而从世界上不同城市网络上走一个来回,平均需要150ms(参考世界各地 ping 报文的时间),换算成人类时间是12.5年。不难理解,所有的程序和架构都会尽量避免不同城市甚至是跨国家的网络访问,CDN就是这个问题的一个解决方案:让用户和最接近自己的服务器交互,从而减少网络上报文的传输时间。

虚拟机重启一次大约要4s时间,换算成人类的时间是3百多年。对于此,我想到了乔布斯要死命优化 Mac 系统开机启动时间的故事。如果机器能少重启而且每次启动能快一点,不仅能救人命,也能救 CPU 的命。

物理服务器重启一次需要5min,换算成人类时间是2万5千年,快赶上人类的文明史了。5 分钟人类都要等一会了,更别提 CPU 了,所以没事不要乱重启服务器啊,分分钟终结一个文明的节奏。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10863

    浏览量

    211741
  • SSD
    SSD
    +关注

    关注

    21

    文章

    2862

    浏览量

    117417
  • 缓存
    +关注

    关注

    1

    文章

    240

    浏览量

    26678

原文标题:CPU说:这个世界慢!死!了!

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    差分输入和和单端输入在本质上到底有什么区别?

    和和单端输入在本质 上到底有什么区别? 因为,ADC采集的信号说到底是AINP - AINN,不管单端还是差分,采集的信号都是这两个pad的差值。 2:将单端信号接在ADC的差分输入接口上可以用
    发表于 12-23 07:31

    站在客户的角度销售电源管理ic

    从目前电子产品的市场局面来看,电源管理ic已经成为各大代理商相互吹捧的资源,也让电子ic产品在失去了本有的价值。因此我想表达的是,我们要站在客户的角度来卖产品,将产品的卖点多元化。1、要有品牌力度
    发表于 10-14 10:18

    阻抗偏高到60~65欧姆什么危害

    当主线段阻抗不是50欧姆, 而是偏离到60~65 欧姆,这样对信号来说到底有什么危害呢?很多网友都给出了自己的答案,这些答案分别从不同的角度对阻抗变高对信号的影响做出了分析。很多情况下,我们只是定性
    发表于 06-21 17:26

    站在CPU角度 你才能发现这个世界多慢

    说说到底它们多慢。希望你看完这篇文章能明白两件事情:磁盘和网络真的很慢,性能优化是个复杂的系统性的活。注:所有的数据都是来自网络。所有的数据会因为机器配置不同,或者硬件的更新而有出
    发表于 03-28 11:47

    如何修改win10用户文件夹中中文用户的文件夹名字?

    在装很多软件,例如myEclipse10等,都不支持中文路径名,所以出现了好多bug。在此,支持大家无论新建什么关于系统的东西,最好都使用英文命名,以避免很多麻烦事。那么下面来说说到底如何修改win10用户文件夹中中文用户的文件夹名字….
    发表于 01-08 06:05

    CPU告诉你硬盘和网络到底有多慢

    硬盘和网络到底有多慢看了就知道
    发表于 02-22 06:30

    eMMC与UFS它们之间到底有什么差异呢?

    eMMC是什么意思?UFS是什么意思?eMMC与UFS它们之间到底有什么差异呢?
    发表于 06-18 08:06

    角度和机械角度是什么意思?它们什么关系?

    KV值是如何定义的?电角度和机械角度是什么意思?它们什么关系?BLDC和PMSM的主要区别在哪里?
    发表于 06-26 07:02

    DMA进行数据传输和CPU进行数据传输的疑问

    的操作? 接上一个问题,如果CPU在DMA进行数据传输时,也需要等待的话,那么这和CPU搬运数据相比只是搬运者不一样了,CPU说到底也还是需要等待后者处于忙碌状态了 感恩的心
    发表于 05-25 17:18

    站在CPU角度世界

    经常听到有人说磁盘很慢、网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦;而从网络下载一部电影,有时候需要几个小时,我都可以睡一觉了。然而,从CPU角度去看的话,事情就会朝
    的头像 发表于 08-12 11:12 3581次阅读

    智能音箱说到底是厂商AI实力的比拼

    “小度小度,上海哪里能买到特斯拉的最新款车型?”“小度小度,今天的道琼斯指数是多少?”“小度小度,帮我来一首轻快的音乐。”“小度小度,告诉我今天最新的娱乐新闻。”
    发表于 09-25 15:43 1865次阅读

    AR和VR将能让人们从不同的角度体验这个世界

    AR和VR除了可以在游戏上使用之外,它还有能力成为一个同理心孵化器,让用户有机会站在另一个人的立场上。可能是异性,可能是残疾人,也可能是与你观点不同的人。通过AR和VR,我们将能够从不同的角度体验这个
    发表于 12-09 09:11 2781次阅读

    SATA和NVMe固态硬盘到底有什么不同

    SATA和NVMe是当前常见的两种固态硬盘形态,它们之间到底有什么不同?这还要从它们CPU的沟通通道说起。CPU的全称是Central P
    的头像 发表于 01-30 10:29 1.1w次阅读

    单片机、ARM、DSP与CPU它们之间的区别是什么

    你知道吗其实单片机、ARM、DSP都是属于CPU吗?它们之间到底有什么区别呢?就这个问题下面就让成都亿佰特电子科技有限公司的小编来为大家讲解一下。
    发表于 07-09 15:25 3515次阅读

    苹果发布Beats新耳机,黑暗中发光的产品1599元

    自从了AirPods,苹果对Beats的热情淡了不少,不过说到底两个牌子也都是自己旗下的,该继续还要继续。
    发表于 11-18 10:16 957次阅读