Single-threaded/event-based 软件与内核和 H/W 线程

Single-threaded/event-based software vs cores and H/W threads

我对 CPUs

上的内核和线程有点困惑

通常在配置文件中,例如。 nginx, golang 你必须定义核心数才能获得最佳性能

如果你看这个CPU http://ark.intel.com/products/52213/Intel-Core-i7-2600-Processor-8M-Cache-up-to-3_80-GHz

它有多少"cores"?

在规格中它有 4 个核心和 8 个线程。这是否意味着 4*8 = 32 "cores" ??

不,您链接的 CPU 有四个核心。但是,它可以 运行 每个内核同时使用称为 Hyper-Threading (HT) 的技术的两个线程,因此有 8 "threads"。 OS 将配备 8 个 处理器 ,除非您在 BIOS 或其他地方禁用 HT。

请注意,超线程以一种特殊的方式工作:它使用核心的未使用执行单元(在 superscalar processor 的意义上)用于第二个线程。据我所知,确实有很好的算法可以重新排序指令以使其最有效,但请记住,超线程可能不会为所有应用程序带来最佳性能。例如:如果您已经一直使用四个 "real" 线程中的所有浮点执行单元,则超线程大部分时间将无法使用它们。