【问题标题】:Cores and threads in a cpucpu 中的内核和线程
【发布时间】:2012-02-13 20:13:15
【问题描述】:

我有一个有四个核心的 CPU,但规格显示它有四个核心和八个线程。这怎么可能?我真的可以并行运行八个线程吗?

【问题讨论】:

  • en.wikipedia.org/wiki/Hyper-threading 或...您的 CPU 的规格。
  • 看到人们对一个问题投了反对票,却不知道为什么,我总是很惊讶。我知道这个问题很简单,可以通过简单的谷歌搜索来回答,但仍然。
  • @Nettogrof:完全同意。这个问题很明确,也很中肯,没有人天生就是完美的。真可惜……
  • @Nettogrof - 正是出于这个原因。将鼠标悬停在向下投票箭头上。原因 #1:研究工作。如果这是关于超线程的特定技术问题,那么它适用于 SO。

标签: multithreading cpu


【解决方案1】:

根据 CPU 类型,每个内核可以有两个虚拟 CPU(或您所说的线程)。使用Hyperthreading实现效果。

【讨论】:

    【解决方案2】:

    这个可以骗你。由于内核资源的虚拟复制,英特尔的 HT 技术确实允许操作系统为每个物理内核调度两个线程。

    “技术上”你可以运行八个线程。注意引号。这项技术的主要目的是不让 CPU 资源被浪费(例如,如果您的指令流水线的宽度为 4 条指令,请确保它几乎总是在获取指令,因为一个线程很少能做到这一点)。

    但是,如果您的系统没有足够的资源来容纳您的线程完成的计算,那么您实际上不会有任何好处,或者更糟糕的是,您的性能会下降。例如,假设您的 CPU 只有四个浮点单元,而所有八个线程都在进行浮点计算。在这种情况下,您不能拥有并行性。另一种情况是当您的所有线程都在进行内存密集型计算时。从 CPU 到主存的总线会饱和,8 个线程肯定无法像你期望的那样并行执行它们的代码。有关 HT 的陷阱的更多信息,请查看这篇文章:http://software.intel.com/en-us/articles/performance-insights-to-intel-hyper-threading-technology/

    此外,请确保您了解系统中不同级别的线程。我讨厌引用自己,但这里是:multithreading on dual core machine?

    【讨论】:

      【解决方案3】:

      我猜你有一台超线程机器,每个内核有两个处理器。

      是的,它可以同时运行 8 个线程。

      【讨论】:

        【解决方案4】:

        也许你应该看看超线程:

        http://en.wikipedia.org/wiki/Hyper-threading

        【讨论】:

          【解决方案5】:

          它被称为superscalar CPU,在每个内核中都复制了流水线,允许它并行调度多条指令。请注意,英特尔将其称为超线程,但本质上是相同的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-04-23
            • 1970-01-01
            • 2018-06-09
            • 2017-08-22
            • 2011-03-24
            • 2014-02-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多