26.CPU可以跑多快?从地球到火星的距离告诉你
Last updated
Last updated
Google大神jeff 曾经展示过一张图,这种图介绍了系统中各种关键操作的时延具体有多少。
需要注意的是这张图上的数据自2012年后就没有再更新过了,统计自2020年的最新数据见这里:
这张图中一个小的黑方块代表1纳秒,一个蓝色的方块代表100纳秒,一个绿色的方块代表10微秒,一个红色的方块代表1毫秒。
尽管这种表示方法已经比第一张图形象很多了,但在我们(人类)看来对这些纳秒没太多概念,毕竟人类的反应时间仅仅0.2 -0.3秒,比这更短的时间人类是没有太多感觉的。
为了让大家能更加直观的感受速度差异,我们依然已第一张表为例,并且把计算机世界中的0.5纳秒当做1秒来换算一下,这样你就能清楚的感受到这些计算机世界中各个硬件巨大的速度差异了。
我们再来看一下:
现在就很有意思了,假定L1 cache的访问延迟为1s,那么访问内存的延迟就高达3分钟。
从内存上读取1MB数据需要5天,从SSD上读取1MB需要20天,磁盘上读取1MB数据高达1年的时间。
更有趣的来了,假设物理机重启的时间为2分钟,如果也将0.5ns视为1s的话那么2分钟就相当于5600年,中华文明上下五千年,大概就是这样一个尺度。
现在你应该能直观的感受到CPU的速度到底有多快了吧。
以上都是基于时间维度换算的。
接下来我们基于距离维度进行了一次更有意思的换算。
从CPU访问L1 cache 的时延为0.5ns,假定在这个时间尺度下我们能行走1米,大概是你从在家里走两步拿个快递的距离。
CPU访问内存的时延里我们可以行走200米,大概是你出门去个便利店的距离。
CPU从内存中读取1MB的时延我们可以行走500公里,这个距离大概是从北京到青岛的直线距离。
网络包在数据中心内部走一圈的时延可以让我们行走1000公里,大概是从北京到上海的直线距离。
从SSD中读取1MB的时延可以让我们行走2000公里,大概是从北京到深圳的距离。
从磁盘中读取1MB的时延可以让我们行走40000公里,正好是围绕地球转一圈的距离。
而网络数据包从美国加利福尼亚到荷兰转一圈的时延可以让我们行走30万公里,正好是从地球到月球的距离。
物理机一次重启的时延可以让我们行走1.2亿公里,正好是从地球到火星的距离。
现在你应该对计算机系统中各种时延有一个清晰的认知了吧。
更多有趣硬核的技术文章欢迎关注码农的荒岛求生。