【问题标题】:What is a "Logical CPU Core"什么是“逻辑 CPU 核心”
【发布时间】:2014-07-19 02:07:37
【问题描述】:

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

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

【问题讨论】:

  • 了解更多上下文可能会有所帮助。您是否有指向您找到该短语的文档的链接?
  • 好了,这里不再赘述,取自官方介绍的主要操作系统参考资料(Operating System Concepts 9th edition of Avi Silberschatz et. al.),这里是链接演示文稿:codex.cs.yale.edu/avi/os-book/OS9/slide-dir/PPT-dir/ch4.ppt 您可以在幻灯片中找到题为“多核和多线程”的短语
  • 您接受了错误的答案。在同一个物理内核上拥有多个逻辑内核可以最大限度地利用一组固定的 ALU,以及一般的流水线。请参阅lighterra.com/papers/modernmicroprocessors 的 SMT / 超线程部分。拥有更多的 ALU 或更宽的管道是完全不同的。拥有更多的逻辑核心(无论是否有超过 1 个物理核心)意味着您需要一个支持 SMP 的操作系统才能利用。您需要多个执行线程才能使用它。

标签: operating-system cpu cpu-architecture multicore hyperthreading


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 顺便说一句,文本应该说“可以同时执行多个指令”(即使这样,“同时”也需要一个限定符" 因为提供 Switch-on-Event-Multithreading 甚至交错/细粒度 MT 的硬件不会同时执行多个流,但它们在 OS 滴答级别上看起来是并发的。
【解决方案2】:

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

处理器

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

筹码

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

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

核心

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

超线程

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

物理/逻辑核心

sockets and cores

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • ALU 是 CPU 本身的一个组件,它并不受操作系统的真正控制。我认为@paul-a-clayton 是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2018-01-08
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多