ChatGPT解决这个技术问题 Extra ChatGPT

核心与处理器的区别

内核和处理器有什么区别?

我已经在谷歌上找过了,但我只得到了多核和多处理器的定义,这不是我要找的。


P
Peter Mortensen

内核通常是 CPU 的基本计算单元——它可以运行单个程序上下文(如果它支持硬件线程,例如 Intel CPU 上的超线程,则可以运行多个程序上下文),保持正确的程序状态、寄存器和正确的执行顺序,以及通过 ALUs 执行操作。出于优化目的,核心还可以保存带有常用内存块副本的核心缓存。

CPU 可能有一个或多个内核来在给定时间执行任务。这些任务通常是操作系统调度的软件进程和线程。请注意,操作系统可能有许多线程要运行,但 CPU 在给定时间只能运行 X 个这样的任务,其中 X = 核心数 * 每个核心的硬件线程数。其余的将不得不等待操作系统通过抢占当前正在运行的任务或任何其他方式来安排它们。

除了一个或多个内核之外,CPU 还包括一些将内核连接到外部世界的互连,通常还包括一个大型的“最后一级”共享缓存。使 CPU 工作还需要多个其他关键元素,但它们的确切位置可能因设计而异。您需要一个内存控制器来与内存、I/O 控制器(显示器、PCIe、USB 等)通信。在过去,这些元素在 CPU 之外,在互补的“芯片组”中,但大多数现代设计都将它们集成到 CPU 中。

此外,CPU 可能有一个集成的 GPU,以及设计人员出于性能、功率和制造方面的考虑而想要保持的几乎所有其他东西。 CPU 设计主要趋向于所谓的 system on chip (SoC)。

这是一种“经典”设计,被大多数现代通用设备(客户端 PC、服务器以及平板电脑和智能手机)使用。您可以找到更精细的设计,通常是在学院中,计算不是在基本的“类核心”单元中完成的。


@Leeor 所以对于 4 cpu 和 2 核机器,如果我运行一个繁忙的循环,它不应该只使用其中一个 cpu 的 1 cpu 和 1 个核心(即 50%)吗?我的观察表明它将所有 CPU 投入到 100% ......在我的理解中缺少一些东西......
@Nrj,如果您运行一个单线程应用程序,它将被分配给一个内核,并且只在其上激活一个硬件线程。该线程将能够 100% 地利用该内核,因为没有其他线程与其一起运行。如果您激活另一个应用程序,它通常会被分配给另一个核心,依此类推,直到您的核心数量达到饱和。除此之外,任何额外的线程都将再次使用 SMT 调度到相同的内核。那时,核心利用率将分布在 2 个线程之间(如果它们的行为对称,每个线程可能会达到约 50%)
@Leeor 显然这是我的期望,但不是我发现的。我看到所有四个 CPU(在任务管理器中)都跳到显示 100% 的使用率。代码很简单 - for(int i=0; i
@Leeor 我认为我做错了测试。看起来我的在线工作区有虚拟 CPU (4),但只有一个处理器。这就是为什么他们都很忙。当我在 2 cpu 物理机(双核)上进行测试时,我可以看到 cpu 利用率约为 25%,符合预期。
请注意,此术语会有所不同,具体取决于您询问的对象。例如,在我的 Debian 系统上,检查 /proc/cpuinfo,我看到了 16 行 processor:,尽管它显示的是 model: AMD Ryzen 7 2700X Eight-Core Processor。因此,至少在这种情况下,8 个“核心”中的每一个都有两个“处理器”,这与这里的其他一些答案不一致。
j
joseluisq

一张图片可能会说一千多个单词:

https://i.stack.imgur.com/RaFrm.png

* 图描述了现代多处理器、多核系统的复杂性。

资源:

https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization


不过,对于像蚂蚁这样的小生物来说,它可能会说一千多个单词。
我没有反对使用图像,但至少你可以做进一步的解释,而不仅仅是复制/粘贴图像。
@Sky小心蚂蚁...#hunter_x_hunter:3
对于那些说它太小无法阅读的人,请尝试右键单击它,Open images in new tab 然后使用 cltr + + 放大
S
Suraj Jain

让我们首先澄清一下什么是CPU,什么是核心,中央处理单元CPU,可以有多个核心单元,这些核心本身就是一个处理器,能够执行程序但它自包含在同一个芯片上。

过去,一个 CPU 分布在多个芯片中,但随着 Moore's Law 的发展,他们在一个芯片(裸片)中拥有完整的 CPU,自 90 年代以来,制造商开始在同一个裸片中安装更多内核,所以这是多核的概念。

如今,在同一个 CPU(芯片或芯片)GPU、Intel Xeon 上可能拥有数百个内核。 90 年代开发的其他技术是同时多线程,基本上他们发现可以在同一个单核 CPU 中拥有另一个线程,因为大多数资源已经像 ALU、多个寄存器一样重复。

所以基本上一个 CPU 可以有多个核心,每个核心都能够同时运行一个或多个线程,我们可能期望未来有更多的核心,但更难高效编程。


甚至“Intel E5-2697 v2”也只有 12 个核心……为什么说“同一个 CPU 上有数百个核心”?是什么限制了单个 CPU 上可能的内核数量?
它们是具有 +100 个内核的研究微处理器,其中一些正在生产中,请查看:tomshardware.com/forum/318101-28-which-maximum-cores-cores
P
Peter Mortensen

CPU是中央处理单元。自 2002 年以来,我们只有单核处理器,即我们一次只能执行一个任务或一个程序。

为了同时运行多个程序,我们必须使用多处理器一次执行多个进程,因此我们需要另一块主板,这非常昂贵。

因此,英特尔引入了超线程的概念,即将单个 CPU 转换为两个虚拟 CPU,即我们有两个内核来完成我们的任务。现在 CPU 是单 CPU,但它只是假装(伪装)它有一个双 CPU 并执行多个任务。但是拥有真正的多核会比这更好,因此人们开发制造多核处理器,即在一个盒子上多个处理器,即在单个大 CPU 上抓取多个 CPU。即多核。


2002年究竟发生了什么?
英特尔没有发明同时多线程的概念。 Wikipedia says Alpha EV8 was the first major commercial implementation
(更新我之前的评论:Alpha EV8 基本上完成了,但在 DEC 倒闭之前从未上市。英特尔聘请了大部分设计团队,因此 Pentium 4 SMT 成为下一个 SMT 绝非巧合商业实现。但这个想法甚至在 EV8 之前就已经为人所知,包括更粗粒度的变化,比如 switch-on-stall。)
H
Hrishikesh Dabir

在早期......就像 90 年代之前......处理器无法高效地执行多项任务......因为单个处理器只能处理单个任务......所以当我们过去常说我的杀毒软件、微软 word、vlc 等。软件都在同一时间运行......这实际上不是真的。当我说处理器一次可以处理一个进程时……我是认真的。它实际上会处理一个任务......然后它曾经暂停该任务......接受另一个任务......如果它很短,或者再次暂停它并将其添加到队列中......然后是下一个。但是我提到的这个“暂停”是如此之小(大约 1ns),以至于您不明白任务已暂停。例如。在 vlc 上,一边听音乐一边运行其他应用程序,但正如我告诉你的那样......一次一个程序......所以 vlc 实际上在 ns 之间暂停,所以你不要理解它,但音乐实际上是停止之间。

但这是关于旧处理器的......

现在的处理器,即第 3 代 pc 具有多核处理器。现在,“内核”可以与第一代或第二代处理器本身进行比较……嵌入到单个芯片、单个处理器上。所以现在我们了解了什么是内核,即它们是迷你处理器,它们组合成一个处理器。并且每个内核可以一次处理单个进程或为操作系统设计的多线程。他们遵循我上面提到的关于单处理器的相同步骤。

例如。 i7 6gen 处理器有 8 个内核...即 1 个 i7 中有 8 个迷你处理器...即它的速度是旧处理器的 8 倍。这就是多任务处理的方式。

单个处理器中可能有数百个内核,例如。英特尔 i128。

我希望我能很好地解释这一点。


f
fgul

我已阅读所有答案,但这个 link 对我来说更清楚地解释了 CPU(处理器)和核心之间的区别。所以我要在这里留下来自 there 的一些笔记。

CPU与Core之间的主要区别在于,CPU是计算机内部的电子电路,它执行指令以执行算术,逻辑,控制和输入/输出操作,而内核是CPU内部的执行单元,用于接收和执行指令。

https://i.stack.imgur.com/NIWw9.png


在计算机体系结构术语中,“执行单元”是单个内核的组件,例如 FP 加法器或整数移位器。 realworldtech.com/haswell-cpu/4 显示了连接到单个 Intel Haswell 内核的执行端口的执行单元。 realworldtech.com/haswell-cpu/6 显示了整个内核的框图,包括指令获取/解码和整个流水线的其余部分。不要将“执行单元”与“核心”混为一谈。
图表的“核心”一侧可能是正确的:每个核心可以处理一个单独的指令流(对于 Haswell,每个时钟最多 4 条指令的速率,具有 4 宽管道,可以为其多个执行单元提供数据。实际上是 6在其解码器中具有比较/分支指令融合)。有关单核内部的更多信息,另请参阅 this answer,尤其是 Modern Microprocessors A 90-Minute Guide!
但是图表的“CPU”一侧看起来不对。每个内核在逻辑上充当一个完整的单处理器系统,处理自己的指令流。 左侧似乎在谈论运行单个指令流并在执行单元上执行每个指令流的单个内核。所以它基本上显示了“核心”和“执行单元”的定义,并将它们贴错了“CPU”和“核心”的标签。我想知道 pediaa.com/difference-between-cpu-and-core 上的原始作者是否在考虑“cuda 核心”基本上只是执行单元的 GPU。
B
Bennett Brown

英特尔的图片很有帮助,如 Tortuga 的最佳答案所示。这是它的标题。

处理器:一个半导体芯片,CPU(中央处理器)安装在一个插槽中,大约在 1950 年代至 2010 年代。随着时间的推移,更多的功能被打包到 CPU 芯片上。在 1950 年代发布的单芯片处理器之前,一个处理器可能分布在多个芯片上。在 2010 年代中期,片上系统芯片使得将一个处理器等同于一个芯片变得更加粗略,尽管这通常是人们所说的处理器,例如“这台计算机有一个 i7 处理器”或“这台计算机系统”有四个处理器。”

核心:CPU 的一个块,一次执行一条指令。 (你会看到人们说每个时钟周期一条指令,但有些 CPU 对某些指令使用多个时钟周期。)


x86 内核逻辑上按程序顺序一次执行一条指令,但实际上现代 CPU 会花费大量晶体管来保持这样做的错觉,同时实际上是 4 宽的超标量。订单执行。 realworldtech.com/haswell-cpu。 (或 5 或 6 宽,对于 Ryzen)。对于某些代码,每个时钟超过 3 条指令在实践中并不罕见。但远低于 1 在缓存未命中和/或分支错误预测瓶颈的其他代码中也很常见。
此外,像 Itanium 这样的 VLIW 架构是明确并行的,并且在逻辑上和物理上并行执行多个指令。顺便说一句,一个有趣的历史点,早期一个 CPU 占用不止一个芯片。