【转帖】如果进入CPU的世界,时间会是怎样的?

如果进入CPU的世界,时间会是怎样的?

2018-02-26 20:52:46 world6 阅读数 1295更多

分类专栏: 网络 缓存服务 架构

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/world6/article/details/79375690

每个人都会有一些吐槽的想法存在,我替CPU把它的吐槽 放在我的博客里吧!

不知道大家有没有感觉每天写代码的时间过得很快啊,有时候一天过去了一个功能还没完成,但是时间就这么没了!

但是你知道CPU有多少苦水吗? 且听 CPU 慢慢的倾诉......

让我们看看什么是CPU的世界:CUP是电脑的心脏,CPU决定了这台电脑的上限。而决定CPU工作频率的是主频。

我的笔记本是 16年买的,主频好像是 2.6GHz。意味着每秒可以执行:2.6*10^9 个指令, 每个指令的时间大概是

0.38ns ,现在很多计算机的配置应该都比这个高了,但我还是就拿这个渣主频来说事吧。

在CPU的世界里,我就把这个CPU执行一个指令的时间 成为单元时间, 假设这个单元时间 对应的我们现实世界的 一秒钟,我们看看CPU的世界是如果在计算机中度过的。

一级缓存的读取速度是:0.5ns,对应的人类时间是 1.3s,这个速度还是挺快的,一般一级缓存的大小是 32K;

分支预测错误需要耗时 5ns 对应的人类时间是 13s 是不是有点久了?什么是分支预测

二级缓存的读取速度是:7ns,对应的人类时间是 18.2s, 如果一级缓存没有命中的话,再去二级缓存中找,二级缓存通常大小是 256K , 速度就慢了18倍了,所以redis里没有命中,如果要去DB种找的话,那个性能会差得更多。。不信接着下面的时间看...

每次内存寻址的速度是:100ns,对应的人类时间是 260S , 已经是四分多钟了,这还只是寻址,从内存中读取数据属于IO操作,IO操作更费时间,这就是 内存 跟 CPU 的速度不在一个量级的地方了。

一次 CPU 上下文的切换需要大概: 1500ns, 对应1.5us,对应的人类时间是 65分钟。一个小时我都可以可以玩好几把狼人杀了!!!我想大家在初学多线程的时候都知道上下文的切换是很耗时的操作,更恐怖的是,CPU在这“一个小时内”,啥事都不干,仅仅只是将自己的资源从一个线程切换到了另一个线程而已。这个过程还破坏了之前的缓存,让后续的计算更费时间。

在 1Gbps 的网络上传输 2K 的数据需要 20us,对应的人类时间是14.4小时,也就是说你在聊天时发送一个表情,CPU能够看完一季的 “饭局的诱惑”了,所以说网络的传输是很慢的。

比网络传输 性能更低的是 IO 操作,如果你的电脑能够搭配上一块 SSD ,你一定感觉你的电脑要飞起来了。然鹅...

SSD 寻址耗时为 180us,对应的人类时间大约是 5天,也就是说 你才找到你上班的位置,CPU已经把这个星期的班都上完了。虽然SSD比机械硬盘快很多倍,但是 跟内存 比起来都弱爆了,更别 想着跟CPU 比了。

从内存中读取 1MB 的连续数据,耗时大约为 250us,对应的人类时间是 7.5天,内存处理一份文件的时间,CPU已经把一个星期的活干完了,还加了班....

同一个数据中心网络上跑一个来回需要 0.5ms,对应的人类时间大约是 15天,也就是半个月的时间。如果你的程序有段代码需要和数据中心的其他服务器交互,在这段时间里 CPU 都已经狂做了半个月的运算。减少不同服务组件的网络请求,是性能优化的一大课题。所以分布式服务中,经常会有要优化请求这些的难题,包括不限于 dubbo 请求超时,失败 怎么处理 等等

从 SSD 读取 1MB 的顺序数据,大约需要 1ms,对应的人类时间是 1个月。只比内存慢了四倍,但CPU 都可以过两个春节还不止了......  才过完的春节,,,真的好快

再让我们来看看磁盘的表现:

磁盘寻址时间为 10ms,对应的人类时间是 10个月,10月怀胎,每位母亲都享受过这漫长的岁月。。。不易...感恩~

这也可以看出,磁盘慢爆了,大概是蜗牛跟飞机的区别?上下文的切换,还有寻址这些的操作,真的很费时,因为这期间硬盘啥事都干不了,你要是能提前读取磁盘的内容也好啊,当然这是不可能的。。

从磁盘读取 1MB 连续数据需要 20ms,对应的人类时间是 20个月。为什么说硬盘是计算机性能的瓶颈呢,因为你的CPU 再好,内存再大,你不买SSD,你的电脑就是个瓜皮。。。你想想你在京东买了个能让你兴奋的东西,结果等了快两年才送到你手上的感觉么?

数据请求在地球上两个不同城市之间来回走一趟大概需要150ms,对应的人类时间是12.5年,你能想象过年抢票的时候,你在深圳请求北京的服务器,跟北京的人请求北京的服务器抢同一张票,你把鼠标砸烂你都抢不过别人的无奈么。。当然CDN 就是这个问题的一个解决方案:让用户和最接近自己的服务器交互,从而减少网络上报文的传输时间。

相比大家对CPU , 内存 ,硬盘, 网络的性能都有个基本的概念。我也是最近才了解到的,难怪大佬们都说 计算机组成原理很重要,不懂这些真的很难理解多线程,网络请求里面的一些问题。

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/11749346.html

时间: 2024-10-09 13:04:37

【转帖】如果进入CPU的世界,时间会是怎样的?的相关文章

团队编程之世界时间转换器

团队编程总结 在软件开发之中,许多项目都是团队合作来完成的.团队项目不同于个人软件开发,这需要团队成员通力配合完成.通过这次团队合作对团队编程有了更深刻的体会,不再局限于课本介绍的,有了实际体验的机会. 团队的讨论机制 在这次项目之中,为了将大家都动员起来,团队里建立了讨论机制.在项目立项的时候,大家坐在一起各自表达各自的看法,由大家来一起判定合理性.在这次讨论之中要想让自己的想法实现首先要有足够的说服力,这样集众人之智慧能更好的使之完善.我也提出了我的想法,我想设计一个用于进行函数计算的软件,

时间管理-暗世界-时间碎片

暗时间 简单的说就是思维的时间,也就是没有产生直接成果的时间.一个人走路.买菜.洗脸洗手.坐公车.逛街.出游.吃饭.睡觉,所有这些时间都可以成为“暗时间”,你可以充分利用这些时间进行思考,反刍和消化平时看和读的东西,让你的认识能够脱离照本宣科的层面. 概念 看书并记住书中的东西只是记忆,并没有涉及推理,只有靠推理才能深入理解一个事物,看到别人看不到的地方,这部分推理的过程就是思维时间,也是人一生中占据一个显著比例的“暗时间”. 其实每个人的时间都是不一样的,因为人们对时间的利用率不同.善于利用思

highstock-处理时间需要处理世界时间偏移量

highstock的数据格式采用的是[[时间,数据],[时间,数据],[时间,数据],[时间,数据]],而时间采用的是13位的毫秒值,如[1133136000000,69.66],采用的时间格式为UTC(世界标准时间),因此在后台对时间处理时,不能只是简单的转化为毫秒值,如果只是专为毫秒值,在前台的图形上会出现数据线跟时间有错位的现象.只有转化为UTC格式下的毫秒值才不会出现错位. java下取utc下的毫秒值: Date date = null; DateFormat df = new Sim

[转帖]linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具

linux下CPU.内存.IO.网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具 https://blog.51cto.com/hao360/1587165 linux_python关注0人评论57974人阅读2014-12-06 20:17:16 一.对CPU进行简单测试: 1.通过bc命令计算特别函数 例:计算圆周率 echo "scale=5000; 4*a(1)" | bc -l -q MATH LIBRARY        If bc is invoked w

JQuery 世界时间

根据表格的时间显示表格的时间,本机的时间,韩国的时间 1 <%@ Page Language="C#" AutoEventWireup ="true" CodeBehind ="WebForm1.aspx.cs" Inherits="time.WebForm1" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/

[转帖]centos7设置CPU的运行频率为performance

centos7设置CPU的运行频率为performance http://www.512873.com/archives/612.html Publish: March 6, 2019 Category: 文档 No Comments 查看当前cpu运行频率: cat /proc/cpuinfo | grep -i "cpu mhz" 开始设置: cpupower -c all frequency-set -g performance 或者: cpupower  frequency-s

墙上时钟时间 ,用户cpu时间 ,系统cpu时间

一. 墙上时钟时间 ,用户cpu时间 ,系统cpu时间定义与联系 时钟时间(墙上时钟时间wall clock time):从进程从开始运行到结束,时钟走过的时间,这其中包含了进程在阻塞和等待状态的时间. 用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间. 系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间. 进程的三种状态为阻塞.就绪.运行. 时钟时间 = 阻塞时间 + 就绪时间 +运行时间 用户CPU时间 = 运行状态下用户空间的时间 系统CPU时间 =  

【转帖】CPU状态信息us,sy,ni,id,wa,hi,si,st含义

CPU状态信息us,sy,ni,id,wa,hi,si,st含义 https://blog.csdn.net/weixin_34075268/article/details/92413101 Linux中在使用top命令的时候会看到这么一行: 里面的各个值分别是什么意思呢? 今天被问到这个问题,发现答的不是很清楚.果然啊,天天用最多的top命令都还没摸透...惭愧...于是就查了些资料: 官方解释 Cpu(s)表示的是cpu信息.各个值的意思是: us: user cpu time (or) %

Intel CPU 概览——从8086到四代酷睿i7

现在Intel已然成了CPU的代名词,但当年的Intel并没有现在这么风光.从1978年发布的8086到2013年的四代i7,整整35年,她见证了从PC到互联网.移动互联网的几次巨变:这些年的变化实在太多.本文不打算对这段历史及引领这段历史的风云人物做多少描述和评价(这些内容足够写好几本书的了),你若对这些内容更感兴趣,请移步.本文只对Intel CPU家族中几位名声显赫的人物做简要介绍,并对比他们区别. 简要历史 接下来,对Intel的几个划时代的CPU产品做简要介绍. Intel ? 808