【问题标题】:Detecting CPU and Core information from my Intel System从我的英特尔系统检测 CPU 和核心信息
【发布时间】:2017-06-15 14:23:15
【问题描述】:

我目前使用的是 Windows 8 Pro 操作系统,以及处理器:Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz,RAM 8 GB。 我想知道我的系统有多少物理处理器和多少实际内核。凭借我对硬件的基本了解和此讨论 here,当我在此英特尔网站 here 上搜索此处理器的英特尔信息时,它说:

# of Cores 4 
# of Threads 8

在我的 CPU 系统的任务管理器中,它显示:

Maximum Speed:      3.60 GHz
Sockets:        1
Cores:          4
Physical processors:    8

假设我有 1 个物理处理器和 4 个实际物理内核,并且每个物理内核有 2 个虚拟内核(= 2 个线程),我是否正确。因此,如我的任务管理器中所述,物理处理器总数为 8 个。但是,如果我的假设是正确的,那么为什么说物理处理器 = 8,而不是虚拟处理器呢? 我需要知道我的机器的核心细节,因为我需要使用 OpenMP 编写低延迟程序。 感谢您的宝贵时间...

【问题讨论】:

  • 我认为您应该为一种语言/框架添加至少一个标签,以便给出简洁的答案。 OpenMPC++ 也许?
  • 任务管理器中是否真的显示“物理处理器”?我的说“逻辑处理器”,其余的与我的相似。只是检查..
  • 感谢@John..已将 C++ 添加为语言
  • @Isure...是的,它只是“逻辑处理器”......对不起。
  • 所以我想这回答了你的问题:-)

标签: c++ cpu core cpu-architecture


【解决方案1】:

从您的操作系统的角度来看,即使是超线程处理器也是“真正的”处理器——它们存在于 CPU 中。他们使用真实的物理资源,如指令解码器和 ALU。仅仅因为这些资源在 HT 内核之间共享并不意味着它们不是“真实的”。

使用超线程可以提高通用计算的速度,因为各种线程利用共享资源做不同类型的事情。然而,由于共享资源的压力,并行运行的 CPU 密集型任务可能不会看到高性能。例如,如果只有一个 ALU,那么让两个线程竞争它是没有意义的。

运行基准测试并为您的应用确定适当的设置,包括是否启用 HT。对于这么广泛的问题,我们无法给您明确的答案。

【讨论】:

  • 谢谢@Jonathon。您的评论 - “运行基准测试并为您的应用程序确定适当的设置是什么,关于 HT 是否启用”。我猜HT代表超线程。如果是这样如何检查它是否启用?我正在使用 C++
  • 检查您的 BIOS 设置。如果您有 4 个内核和 8 个逻辑处理器,则启用超线程。我的猜测是,当线程数等于物理内核数而不是逻辑处理器数时,您的应用程序将运行得最好。
  • 谢谢@Jonathon。我猜 Windows 任务管理器的 CPU 部分反映了 BIOS 设置。虽然我不确定。同样在我目前的阅读之后,我还得出结论,最佳应用性能是线程数等于物理内核数时
  • 将此标记为答案,同时分享这个不错的 HT 链接,供其他人参考:en.wikipedia.org/wiki/Hyper-threading
  • “我猜 Windows 任务管理器的 CPU 部分反映了 BIOS 设置。虽然我不确定。” 不是直接的。在启动期间,固件配置 CPU,启用/禁用超线程等功能。 Windows内核在启动时查询CPU拓扑。
猜你喜欢
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
相关资源
最近更新 更多