原来计算机1秒钟能干这么多事儿!

开发 前端
一个 CPU 周期当做一个基本单位,和现实世界中的1秒做对应关系,可以看出CPU到底有多快,而和CPU比起来,其他操作到底有多慢。即便对于CPU来说,其他操作很慢,但是现实世界的1秒钟足够计算机干很多事儿了。

大家好,我是风筝

我们平时在开发的时候,凡涉及到时间的场景,一般就是在做性能测试和优化的时候了。

比如说一个互联网系统,在性能方面会要求接口的平均响应时间为1秒以内,或者几百毫秒。在软件项目中,最小的时间单位可能也就是毫秒了。

反正我是没碰到过有人说毫秒以下的单位了。比如某个开发说,我把这个接口的响应时间减少了10纳秒。那我们会想,这莫不是个傻子吧。

但是,在计算机中(主要指硬件层面),1秒钟能干的事儿简直太多了。

计算机的主要组成

计算机的组成当然是很复杂的了,这里只说核心部件抽象出来的最简化的一个结构,如下图所示,主要就是这几块儿构成:

输入、输出设备

这就不用多说了,就是什么键盘、鼠标、显示器之类的。

主存储器DRAM

也就是我们平常说说的内存,也就是内存条的那个内存,比如我的电脑是 16G内存,也就是DRAM有16个G。

中央处理器(CPU)

毋庸置疑,这是计算机的灵魂所在,计算机之说以叫计算机,是因为它主要就是为了完成运算任务的,而CPU就是干这个的。

CPU 又包括比较核心的控制器、运算器和高速缓存。

图片图片

主存和高速缓存的关系

主存,也就是前面说的 DRAM 。DRAM 是一种内存类型,用于存储程序和数据,是计算机系统中的主要存储器件。而高速缓存是一种临时存储器,用于存储 CPU 访问频繁的数据和指令,以提高数据访问速度。比如我运行IDEA要占去好几个G的内存,数据是存在DRAM中的,高速缓存可没有这么大空间。

另外,高速缓存的访问速度比 DRAM 快得多,CPU 的高速缓存是距离 CPU 最近的存储器,速度比内存(包括DRAM)快很多,可以与 CPU 同步工作。而DRAM的访问速度相对较慢,通常比高速缓存慢几个数量级。

高速缓存又分为L1、L2、L3四个级。L1 缓存是最接近 CPU 核心的一级缓存,速度最快,容量较小;L2 缓存位于 L1 缓存和主内存之间,速度比 L1 缓存慢一些,容量较大一些;L3 缓存是最靠近主内存的一级缓存,速度比 L1 和 L2 缓存都要慢一些,容量最大。

整个计算机有一个存储器层级结构划分,如下图所示。L0 也就是CPU运算器中的寄存器,从上到下速度越来越慢,但是容量越来越大。

图片图片

时钟周期

终于开始点题了, 计算机1秒能干多少事儿,这里的事儿反应到CPU上就是一个个的指令。比如最简单的指令包括读写寄存器、访问高速缓存、加减运算等等。

最简单的原子指令可以在一个很短的时间段内完成,这个时间段有一个特别的名称,叫做时钟周期。

我们查看电脑配置的时候有一个指标是 XXX MHz(赫兹),比如我的电脑是 2667 MHz,也就是 2.6GHz,这个指标叫做时钟频率。

图片图片

时钟频率是指计算机中央处理器CPU的工作频率,表示每秒钟CPU内核工作的次数。时钟频率越高,CPU的工作速度越快。

每个时钟周期,CPU可以执行一条指令。所以说,我这台电脑 - 2.667 GHz,相当于CPU每秒钟可以执行2.667亿条指令。1秒执行2.667亿条指令,好家伙,确实是快呀,想想就累啊,可见CPU也是蛮辛苦的。

时钟周期是CPU执行指令的最基本单位。在一个时钟周期内,CPU仅完成一个最基本的动作。

计算机一些常见操作耗时

普通计算机一秒就能执行数以亿计的指令数,那对应到一些常见操作上的耗时是多少呢?

下面这个表是摘自《性能之巅:洞悉系统、企业与云计算》中的一个关于系统延时的表格,这个表是针对 3.3GHz 时钟频率的计算结果。

一个 CPU 周期当做一个基本单位,和现实世界中的1秒做对应关系,可以看出CPU到底有多快,而和CPU比起来,其他操作到底有多慢。即便对于CPU来说,其他操作很慢,但是现实世界的1秒钟足够计算机干很多事儿了。

事件

耗时

相对时间比例

1个CPU周期

0.3 ns

1s

L1缓存访问

0.9 ns

3s

L2缓存访问

2.8 ns

9s

L3缓存访问

12.9 ns

43s

主存访问(从CPU访问DRAM)

120 ns

6分

固态硬盘I/O(闪存)

50-150 μs

2-6天

旋转磁盘I/O

1-10 ms

1-12月

互联网:从旧金山到纽约

40 ms

4年

互联网:从旧金山到英国

81 ms

8年

互联网:从旧金山到澳大利亚

183 ms

19年

TCP包重传

1-3 s

105-317年

OS虚拟化系统重启

4s

423年

SCSI命令超时

30 s

3千年

硬件虚拟化系统重启

40 s

4千年

物理系统重启

5m

32千年

站在CPU的角度来看,物理重启一次的时间要花上几千年的时间。这比神话传说中的天上一天,人间一年还要夸张。



责任编辑:武晓燕 来源: 古时的风筝
相关推荐

2015-01-14 14:27:18

Docker容器镜像

2018-06-26 15:00:24

Docker安全风险

2021-03-18 09:06:17

函数MainJava

2017-01-16 09:14:35

2021-01-14 05:08:44

编译链接

2023-07-26 00:32:33

注解抽象spring

2021-01-14 10:24:55

压缩集合方式

2024-03-11 10:15:29

2022-01-07 13:34:25

Java时间格式化

2018-10-18 14:50:52

2017-07-04 14:01:40

机房机柜

2017-07-12 08:20:32

闪存用途企业

2011-04-06 14:50:05

SQL查询效率

2015-11-11 21:46:45

阿里巴巴双11

2017-03-06 16:07:16

2014-04-17 11:33:20

腾讯无线研发

2020-05-20 16:54:47

数据分页显示函数

2012-08-17 14:42:28

APP移动应用

2013-06-04 09:40:00

阿里云黑色10秒钟阿里巴巴

2020-06-30 08:12:32

VMwareKVMDocker
点赞
收藏

51CTO技术栈公众号