2

我正在阅读一些操作系统材料。我把这个让我有点困惑的词组红了:“多核是指具有多个逻辑 CPU 内核的计算机或处理器,并且可以同时执行多条指令。”

什么是“逻辑 CPU 核心”,它是处理器吗?它是否对应于物理的东西,或者是操作系统看到了逻辑 CPU 内核,但实际上物理处理器比逻辑 CPU 内核少?

4

3 回答 3

4

逻辑 CPU 内核包含单处理器的完整架构上下文。这是操作系统可以进行调度和控制架构状态的单元,例如异常地址(对于不硬连线的架构)。

有两种常见的情况,它不会与物理内核一一对应。首先,单个物理内核可以实现多个虚拟处理器,例如英特尔的超线程。在这种情况下,操作系统调度程序应该知道虚拟处理器可能共享各种资源,例如指令获取、指令调度硬件和执行单元,这通常意味着任务应该被调度到不同的物理内核以最大化性能。(这个问题在较小程度上也适用于共享 L2 缓存的不同内核。这些问题在某种程度上与多 CPU 计算机的 NUMA 优化有关。)

在第二种情况下,管理程序的硬件虚拟化可以向操作系统提供任意数量的内核。虽然虚拟机管理程序通常会使来宾操作系统看到的逻辑处理器不超过硬件提供的逻辑处理器(即,包括与硬件多线程相关的虚拟处理器),但理论上虚拟机管理程序可以向操作系统提供任意数量的处理器(就像操作系统可以通过使用时间片向应用层呈现任意数量的处理器的印象)。在这样的软件虚拟化环境中,管理程序可能不会向操作系统公开处理器的性质,因此操作系统只能将它们视为抽象单元进行调度。

使这种划分有些复杂的是,硬件也可以在不为每个线程提供完整的虚拟处理器的情况下实现多线程。例如,MIPS 多线程应用程序特定扩展区分了虚拟处理元素(在架构状态方面表现为不同的处理器)和线程上下文(在同一 VPE 中的线程之间共享系统协处理器)。更复杂的是,线程上下文可能会在 VPE 之间迁移。例如,一个物理处理器内核可能具有两个 VPE 和五个线程上下文,并且操作系统可能被允许将给定的 TC 分配给任一 VPE,从而任一 VPE 可以具有一到四个 TC。此外,

对于 MIPS MT-ASE,操作系统通常只关心线程上下文,但如果对实际硬件配置有更完整的了解,则可以进行一些优化,如果将线程上下文视为虚拟处理元素,则可能会出现一些正确性问题。

于 2014-05-29T15:39:46.383 回答
2

了解一些背景知识可能会有所帮助:

处理器

处理器可以描述单个执行内核或单个物理多核芯片。使用上下文将定义该术语的含义。例如,普通 PC 计算机应该只有一个处理器

筹码

芯片是指计算机上的物理集成电路(IC)。芯片通常被称为可以是单核或多核技术的执行单元。

插座 插座是指计算机主板上接受单个物理芯片的物理连接器。许多主板可以有多个插槽,这些插槽反过来可以接受多核芯片。 

核心

自从多核技术出现以来,例如双核和四核。本质上,一个核心包括一个逻辑执行单元,其中包含一个 L1 高速缓存和功能单元。内核能够独立执行程序或线程。超级计算机被列为具有数千个内核。

超线程

超线程是英特尔的一项技术,最初早于多核系统,用于使单个内核在逻辑上表现为同一芯片上的多个内核。超线程通过尽可能在多个内核之间共享计算工作负载来提高性能,允许操作系统一次调度多个进程。有关更多信息,请参阅英特尔超线程技术。 

物理/逻辑内核

插座和核心

如图所示,你有2个socket,每个socket有4个核心,每个核心目前可以执行4个线程(由于超线程)。在这种情况下,如果您在 Linux 上使用命令lscpu,您可能会看到您有 32 个 CPU。实际上,你有 1 个芯片、2 个插槽、8 个内核和 32 个 CPU(从 Linux 的角度来看)

于 2018-03-15T16:02:14.370 回答
0

我猜它指的是 CPU 的ALU(算术逻辑单元)。

任何处理器的 ALU 单元都是 CPU 负责执行所有算术和逻辑运算的部分。

于 2014-05-29T14:22:46.377 回答