TaskManager、HyperThreading:哪些 CPU 是真实的,哪些是 HT?

TaskManager、HyperThreading:哪些 CPU 是真实的,哪些是 HT?

当我打开任务管理器时,我在 CPU 图中看到 8 个 CPU,因为我有一个具有 4 核 + 超线程的 Core i7(在 Win7 x64 上运行)。

当我设置进程亲和性时,我会列出 CPU 0 到 CPU 7。

我如何知道哪些 CPU 是真实核心、哪些是 HT 核心?

我听说 0/2/4/6 是真正的核心,因此第一、第三、第五和第七个 CPU 图是真正的。

真的吗?

答案1

英特尔最初希望 BIOS 实施者在枚举逻辑 (HT) CPU 之前先枚举所有物理 CPU。这样做的原因是,如果操作系统支持的 CPU 数量少于系统中可用的 CPU 数量,它将首先看到物理核心,然后再看到逻辑核心。这现在不是问题,但当可以购买带 HT 的双核 Pentium 4 并将其放入 Windows 2000 Pro 系统时,无论如何都只能看到 2 个 CPU,这是一个真正的问题。我怀疑实施会偏离这一点。因此,在您的情况下,最有可能的是 CPU 0-3 是物理核心,而 CPU 4-7 是 HT 核心。

如果您遇到由于 HT 导致的多线程软件无法很好地平衡的问题,那么您可能需要将线程数限制为物理核心,或者改进算法/数据结构以使其更加适合 HT。 获取逻辑处理器信息是您需要查看以确定物理核心数和逻辑核心数的 API 调用。 这一页有用于确定物理 CPU 数量的示例代码。

让你的代码更加适合 HT 是完全不同的概念,并且不太适合超级用户。:-)

答案2

嗯,HT 核心的意义在于让它们在系统中看起来像是真正的处理器。我不能 100% 确定,但我认为没有真正的方法可以知道哪些是真正的,哪些是 HT。

此外,如果我正确理解了 HT,它的工作原理是耗尽真实核心的空闲处理能力。如果 HT 核心正在执行要求苛刻的进程而真实核心没有,则处理能力将被 HT 耗尽。不过,这可能会导致问题,即大多数要求苛刻的进程可能会交给真实核心及其 HT 核心,而一些真实核心则运行后台任务。

相关内容