Question:
怎么理解CPU、processor、core的区别
如果CPU包含ALU(运算器)、内存单元、IO的话,那么
a) processor是什么,它包含哪些东西
b) CPU和processor的关系是怎样的
c) Core又是什么
下文中:Processor=处理器,core=核
Answer:
1 处理器的演变
'Processor','Core', 和 'CPU'这些术语定义都不很明确,在过去的这些年,随着计算机架构的演变,它们的含义也经历了很多变化。在现代的定义中,'Processor'和 'CPU'的含义其实是同一个东西,更精确的说,它们是指'处理器包',因为没有一个标准定义这个包到底应该包含什么。15-20年前的老CPU只包含有执行任务所需要的最小的资源。它包括运算器、取指令和解码硬件,指令管道、中断处理硬件,和部分IO控制硬件,此后,cache内存加入到CPU中用来提高执行效率。
2 核的形成和演变
再往后,执行任务的processor(处理器)数量开始加倍。运算器、取指令和解码硬件,指令管道以及一些cache内存被整合起来成为我们今天所说的 ‘CORE’。每个’核’都可以运行单个程序(当它支持硬件线程比如IntelCPU的超级线程时也可以运行多个程序),维护正确程序的状态、寄存器和正确的执行次序,并通过运算器(ALU)来执行操作,核是CPU的基本计算单元。IO读取控制、中断处理,等等资源在所有的’核’之间共享。
在给定的时间内,一颗CPU/Processor(处理器)可以有多颗核执行任务,这些任务通常是操作系统调度的软件进程和线程。记住操作系统可能有多个线程在运行,但CPU只可以在给定的时间内运行一定数量(X)的任务数,X=CPU的核数*每核的硬件线程数,剩余的线程必须等待操作系统的调度,要么抢占当前正在运行的任务线程,或者其他情况
最近内存控制单元也加入到处理器包中,它居于’核’的一侧但不属于它。因此内存控制单元是处理器包的一部分,或者Processor/CPU的一部分,但不是’核’的一部分。Intel公司习惯用“非计算内核”来特指它。CPU包含核与外部的连接的相互联系,通常是一个大的’末级’共享cache,你可能需要很多其他的要素来让CPU工作,比如上面的内存控制器来和内存进行交互---(这就是上面说的内存控制单元),IO控制器来和存储交互(display,PCIe,USB)等等。此外CPU可能还集成了GPU,CPU设计越来越像我们所称的“SOC”—片上系统。
3 怎么计算机器的核数
当我们讨论一个安装有多颗处理器的系统时,这会变得更加复杂。很多服务器和工作站安装有2、4或者更多的处理器,每个处理器都包含同样的硬件。因此一个机器中的核数可以通过系统中’处理器’的数目乘以每个处理器中的’核’数计算得出,一台有两颗双核处理器的电脑的核数同一台有一颗八核处理器的电脑的核数是相同的
每个处理器插槽(布满引脚和金属的平板)都可以插入一颗AMD皓龙6100系列的处理器,每个皓龙6100处理器都有8或者12核。这意味着一个典型系统可以有8核(装有单颗八核处理器)或者48核(装有4颗12核处理器)
下面形象的展现了SOCKET、CPU/Processor、CORE的关系