最早的时候,人们制作了一台计算用的集成电路(Circuit
,或者IC
),用树脂包起来,做成一个小片片(Chip
),把它装在电路板(PCB
)上,做成一台计算机(Computer
),他们把这个小片片和其它小片片做了辨别,叫它中央处理器(CPU
),写软件的人简略叫它处理器(Processor
)。
这个阶段,不同的词,它们指的根本是同一个货色。
起初技术倒退了,为了提供更强的能力,他们首先把多个 Chip
装到同一个 PCB
中,这样,就呈现一台计算机,有多个 Chip
的状况,他们把这个叫做 Multi-Processor,MP
。如果这些Processor
能够一样看待,不须要每个非凡解决,就叫同构多解决(SMP
),否则就叫异步多解决(AMP
)。
MP
要把电路拉远,没有封装在一台计算机外面高效,所以又有人在一个 Chip
外面,把计算的电路做了多份,每份叫一个“外围”或者你这里翻译为内核了(Core
),而仍把封装起来的整个 Chip
叫一个CPU
。
但软件曾经把一个执行的硬件单元叫 CPU
了(也就是硬件认为的 Core
),从这里开始,软件和硬件用的名字指的就不是一个货色了。而对中文来说,软件把操作系统用来治理所有资源的那个被爱护的软件部件,也叫内核(Kernel
),而把每个被治理的软件部件,叫解决者(Process
,中文翻译为“过程”),这就更加容易引起人们的误会。实际上,无论Kernel
还是 Process
,都是软件,是运行在CPU/Core
上的货色,只是软件外部的辨别。就好比咱们人的躯体和思考的关系一样,CPU
是躯体,软件是魂魄,Kernel
是魂,Process
是魄(当然咱们不细究两者确切的语义)
Core
越来越多,一个电路曾经很难制作了,他们开始离开造,再封装在一个 Chip
外面,那个独立制作的电路,有人叫它一个 DIE
,也有人叫它一个Cluster
。软件其实不关怀,软件只关怀一共有多少“CPU
”(芯片说的“Core
”),但CPU
们地位不一样,导致拜访内存的速度不一样,所以软件会认为他们在不同的“区域”(zone
)上。
为了进一步优化 Core
,设计师发现Core
的很多电路大部分时候都闲着,他们就让多个核复用这些电路。这样看起来一个硬件的Core
,提供了多个软件看到的CPU
,他们把这样的CPU
,叫“硬线程”(hyper-thread
)。
好了,不晓得你作为软件工程师晕掉没有?软件工程师就要求:别那么多废话了,就说你有多少个“假 CPU”吧,我都对立解决好了。
但硬件说,我有 30
个A cpu
,10
个 B CPU
,4
个C CPU
,15
个 MPU
(微处理器,了解为更简略的CPU
吧),其中 A CPU
里有 2 连个硬线程,三种连法,B 有一个硬线程,四种配置…
软件说,打住打住……算了,这样吧,咱们离开说,你 CPU
都一样给我的,咱们叫它 SMP
(留神这个名字的意思曾经和后面不同了),这种CPU
我对立用,内存也对立拜访。如果你不是这样的,我叫它“非对称多解决”(AMP
),那个你再一个个跟我说怎么用好了。
读者晕掉没有?有没有都来让我来洗一下脑,都用咱们服务器芯片上的定义吧:)
一个独立的硬件处理单元,被软件看做是“CPU
”的货色,咱们叫 Core
。但有例外:Core
能够有多个超线程(hyper-thread,HT
),如果有 HT
,每个HT
就是一个软件看到的CPU
,但它并不具备所有计算资源。
多个共享一级 cache
的Core
,咱们叫一个Cluster
。
多个 cluster
组合能够被自由组合封装的电路,咱们叫一个超级 CPU CLUSTER(SCCL)
。咱们还能够把网卡,sas
等货色封装成超级 IO cluster(SICL)
,从而提供超过PCIE
速度的更靠近 CPU
的IO
设施(比方 100G
的网口)。
把多个 sccl 和 sicl
组合在一起,封在树脂里,咱们称为一个chip
。
多个 chip
放到一个电路板中,外面的 core
作为 SMP
应用,每个 chip
称为一个 Processor
,或者从PCB
的角度,又叫一个插槽(Socket
)。
电路板加上各种外网电路,封装成一台服务器,咱们叫一台 Machine
,多个Machine
组合成一个柜子,咱们称为一个 Rack
。对外做广告,咱们称咱们一个Rack
能够提供超过 1 万个,工作主频 2.6G+
的Core
: