我正在帮助一位朋友,他正试图在使用 Intel Core i3-3217U 处理器的系统上运行多个线程。
根据英特尔的网站,该处理器有 2 个内核,每个内核支持 4 个线程(?)(意味着总共 8 个线程):
- 核心数:2 (核心是一个硬件术语,用于描述单个计算组件(芯片或芯片)中独立中央处理单元的数量。)
- # of Threads: 4 (线程或执行线程是一个软件术语,表示可以通过单个 CPU 内核或处理的基本有序指令序列。) [强调我的]
然而,这个其他网站指出:
- “多亏了英特尔超线程技术,核心数量实际上翻了一番,达到 4 个线程。”
可以期望使用该处理器有效地多处理 4 个线程或 8 个线程吗?
虽然存在 4 路或更多 HT 实现,例如在 Xeon Phi 和一些功率处理器上以及 Sparc 上的 8 路 - 英特尔的 HT 在其消费者、发烧友和大多数服务器处理器上每个内核只有 2 个线程
写得不好
在 Windows 的任务管理器中,在每个“核心”视图中“直观地”看到这一点的一种简单方法
我有一个插槽,或者外行人会认为的处理器。它有 8 个“物理”内核,相当于 16 个逻辑处理器。效率当然也取决于您的代码,但是任何具有 HT 的 Intel 处理器都将有两倍多,并且没有更多的逻辑处理器作为内核,每个插槽一个或多个内核。
你只是过度思考/误解。该“描述”仅意味着“执行线程”本身不能由多个内核并行处理。换句话说,它说明了这样一个事实,即它是多处理中的“原子”单元,不能期望单个执行线程被分解成更多的部分供多处理器处理。这正是同时多线程(超线程的通用术语)的意义所在——允许一个核心一次处理多个线程(可以这么说)。
在任何规范站点上,通常除非该项目被命名为“每个内核的线程数”,否则“线程数/线程数”主要是指处理器一次可以处理的执行线程总数 - 它的内核数乘以它的线程数每个核心。
尽管英特尔的网站模棱两可且令人困惑,但维基百科却清楚地说明了情况。
维基百科关于超线程的文章指出:
因此,每个内核最多可以有2个线程可用于多处理。在上面提到的双核 CPU 上,总共将有 4 个多处理线程。
那篇文章现在有点过时了,因为英特尔在其 Xeon Phi (Knights Mill) 芯片上的超线程可以处理每个内核 4 个线程。但是由于问题是关于 i3 处理器的,所以每个内核 2 个线程的理解仍然是正确的。