seegongsik
操作系统

多核 CPU 怎么工作

厨房有好几个,就不是轮流,而是在同一刻真正一起干活。这一课来看真正的同时。

01

要是厨房不止一个

到目前为止,厨房只有一个,一个干活的飞快地这件做一点、那件做一点,轮流着来。
可要是有两个、三个厨房呢?干活的也有那么多,各自在自己的厨房里同时做菜。不是轮流,而是在同一刻真的有好几个人在干活。
电脑里的这些“厨房”叫作核心。核心有好几个,就能在同一刻真正一起处理好几件事。
现在手机、笔记本上写的 4 核、8 核,就是数了数有几个厨房。

一个厨房换着来 (错觉)好几个厨房同一瞬间真的同时

厨房一个就轮流,好几个就在同一刻真正同时。

核心有好几个,就能在同一刻真正一起处理好几件事。

02

真的一起,还是飞快地轮流

前面说过,一个干活的飞快地轮流,看起来就像同时在做。那是错觉,实际上每一刻只在做一件事。
厨房有好几个就不一样了。哪怕盯着同一刻看,这个厨房和那个厨房里,活儿也真的在同时推进。
差别就出来了:错觉的同时只是看着快,真正的同时在同样的时间里确实能干完更多活儿。
一个厨房轮得再快,干完的总量也不会增加,只是分着用;厨房多了,能处理的总量本身就变大了。

同一瞬间错觉的同时一个瞬间只有一个真的同时同一瞬间好几个

一个厨房飞快地轮流是错觉,好几个厨房才是真正的同时。

一个核心的轮流只是看起来像同时,好几个核心才是真的一起推进。

03

多加几个厨房看看

要干完的活儿堆了一大堆。亲手改一改厨房的数量。
厨房只有一个时,活儿一件一件按顺序处理。厨房加多了,好几件活儿同时处理,同样的量就能更快干完。
两个厨房大约要一半的时间,四个还要更短。一边加一边看,堆着的活儿减少得有多快。
所以像一次转换许多张照片、制作视频这种重活儿,切成小块分给好几个厨房,就能快得多。

剩下的活儿
厨房
用的时间00/12个
厨房2
多加厨房,同样的活儿完得更快。不过下一张图会看到,并不能无限地快下去。

改一改厨房的数量,看看同样的活儿能多快干完。

厨房越多,同样的活儿干得越快,但很快也会碰到极限。

04

翻倍不等于快一倍

厨房翻一倍,好像就该快一倍。可并不总是这样。
有些活儿没法拆开。等面团发起来的时候,厨房就算有十个也快不了。而且干活的们要是同时想用同一样材料,就得互相等。
所以加厨房,一开始会快很多,可到了某个时候,就不再随着厨房的增加而同样变快了,因为能拆开的活儿是有限的。
说到底,厨房加得再多,那一部分怎么也拆不开的活儿,决定了整体速度的上限。

速度拆不开的活儿互相等1248核数翻倍不等于快一倍

因为有拆不开的活儿和互相等待,核心加得再多也有极限。

核心加多了会变快,可因为有拆不开的活儿,不会无限地快下去。

05

用一张纸总结

只要记住三点。
第一,核心有好几个,就是真正地同时干活:不是一个干活的飞快轮流造成的错觉,而是好几个厨房在同一刻一起干。
第二,所以同样的活儿干得更快,因为活儿分开交给了好几个厨房。第三,可还是有极限:因为有拆不开的活儿和互相等待,核心翻一倍,也不会正好快一倍。
说到底,能快多少,与其说取决于厨房的数量,不如说取决于这件活儿能拆得多细。

一
核有好几个就真的同时。不是错觉,而是好几个厨房在同一个瞬间一起干。
二
所以同样的活儿完得更快。活儿分开交给好几个厨房。
三
可还是有上限。拆不开的活儿加上互相等,翻一倍也快不到正好一倍。

好几个核心是真正的同时,所以快,但有极限。

一句话总结核心有好几个,就能把活儿分开、真正同时处理,从而变快;但拆不开的那部分活儿就是极限。
← 操作系统
如果有帮助,请支持我们