线程是什么意思?

时间:2014-02-24 18:41:23

标签: multithreading cpu

线程意味着什么?

我的Intel CPU有6个内核和12个线程。我知道每个核心可以与其他5个核心并行进行计算。因此,如果我在每6个核心上运行一个程序,我会加速6倍。但我无法理解线程。如果我在我的6个核心的12个线程上运行我的程序,我会加速12倍吗?

2 个答案:

答案 0 :(得分:5)

线程是一个“逻辑核心”,它有一整套寄存器,使用自己的虚拟地址空间,可以执行核心可以执行的任何操作,因此从这个意义上说 - 你有12个核心。

但是,一个线程与其同一核心上的对应线程共享其大部分执行资源。由于现代核心可以同时处理多个指令,因此拥有两个(或更多)线程允许您将指令从2个软件线程“抛出”到一个大的“池”中,并在它们准备就绪时执行它们。如果你有一个单独的线程占用你的核心利用率的100%,那么你将从中获得很多,但如果其中一个线程留下一些空槽,因为它有分支错误预测,数据依赖性,长内存延迟,或者导致效率低下的任何其他原因 - 共享核心的另一个线程可以使用这些插槽,为您提供一个很好的提升(因为替代方案是等到第一个线程完成其时隙并进行昂贵的上下文切换)。

一般情况下,您可以通过以下方式考虑这一点 - 在2个内核上运行2个软件线程可以提供最佳性能,在单个内核上运行它们同时进行多线程会稍慢,尤其是在您遇到的情况下在执行时受限(但如果你因为内存延迟而受限制则更少)。但是,如果您没有此功能,则在单个核心上运行相同的2个工作负载将需要您依次运行它们(在时隙中),这可能会慢得多。

编辑:请注意,实现此概念的方法有所不同,请参阅例如 - Difference between intel and AMD multithreading

答案 1 :(得分:2)

线程是同一核心上的“同时”计算。因此,一个核心可以管理两个线程,并有效地充当两个核心。这是一个非常基本的答案,我担心。