/proc/cpuinfo 中的兄弟姐妹是什么意思?

Led*_*lin 15 linux ubuntu

它是指物理处理器中的虚拟处理器数量吗?

use*_*517 12

如果同级的数量等于内核的数量,那么您的 CPU 不是超线程或超线程已关闭,如果同级的数量是内核数的 2 倍,那么您的超线程 CPU 已打开超线程。这是一个很好的文章在这里


Sco*_*ack 8

处理器上的兄弟节点数是该处理器内执行单元的总数。这将包括额外的内核和超线程。

例如,

  1. 将列出 Core 2 Duo siblings : 2。双核,无超线程。
  2. 至强 E5420 将列出siblings : 4。双核,超线程。
  3. 带有超线程的 Pentium 4 将列出siblings : 2. 单核,超线程。


小智 6

首先了解以下术语及其使用上下文。

  • 中央处理器
    • CPU 是一个处理单元。
    • 它将有多个组件来处理指令。
    • 每个组件负责不同的操作,如指令获取、解码、处理、更新等。
    • 一个CPU可以具有多组/单元上述组件。
    • 如果有两组这些单元,处理器可以并行运行两条指令。
    • 一个单元称为核心。
    • 双核 CPU 将具有两组相同的组件。四核 CPU 将具有四组相同的组件/单元
  • 多CPU/超线程
    • 这有点棘手。它仅在软件上下文中有效。
    • 每当一条指令等待外部事件完成时,CPU就会空闲。为了更好地利用CPU,一些供应商维护两个硬件线程,每当一个线程被阻塞时,硬件就会切换到另一线程。这种处理器将具有存储和恢复CPU状态的能力
    • 对于软件来说,看起来就像两个线程并行运行。
    • Linux 将此超线程核心视为多 CPU。因为它可以并行运行两个线程。所以它会看到两个执行单元(伪CPU)。
    • 例如,最近的英特尔 CPU 是超线程的,能够同时运行两个线程。
  • 多核
    • 现代 CPU 具有多组上述硬件单元/核心
    • 与超线程不同,它们实际上可以并行执行两条指令
    • 每个核心也可以是超线程的
  • 多处理器
    • 服务器、超级计算机等高性能系统将拥有多个物理 CPU。
    • 你可以在他们的主板上看到多个CPU插槽
    • 每个可以有多个核心。同样,每个核心都可以是超线程的

现代 PC 通常配备多核超线程处理器。例如,在配备四核超线程英特尔 CPU 的 PC 上运行的 Linux 将看到 8 个 CPU(4 核 x 2 超线程)。

现代服务器通常是多核多处理器系统。典型的服务器有两个插槽,每个插槽有 24 个超线程核心。因此,在此系统上运行的 Linux 将看到 96 个 CPU(2 个插槽 x 24 个内核 x 2 个超线程)

兄弟姐妹

回到实际问题,共享缓存的处理器将被称为兄弟处理器。缓存组织将类似于(尽管它会根据架构而有所不同),

  • 每个内核将有一个 L1 指令缓存和一个 L1 数据缓存
  • 每个核心将有一个统一的二级缓存
  • 一个套接字中的所有核心都将拥有一个统一的 L3 缓存
  • 通常没有两个套接字会共享任何缓存

考虑一个具有 2 个插槽的多核多处理器系统。每个插槽有 24 个具有超线程的核心。在这种情况下,Linux 将看到总共 96 个 CPU,编号从 0 到 95。插槽 1 将有 CPU 0-47,插槽 2 将有 48-95(与此不同的是,通常数字将交错)。对于具有上述缓存组织的系统,

  • 处理器 0-47 是兄弟处理器
  • 处理器 48-95 是兄弟处理器