每个核心的多个线程中存在并行级别

时间:2014-03-01 19:35:08

标签: multithreading performance architecture parallel-processing hyperthreading

所以我一直在研究一些每核心实现多线程的技术(比如英特尔的超线程),我想知道这些技术的并行程度是什么。是真正的并行还是更有效的并发?它们似乎仍然共享相同的执行单元和核心资源,基本上看起来它只是虚拟化使用。所以我不确定真正的并行性是如何发生的。如果是这种情况那么有什么好处呢?您可以通过有效的线程上下文切换来实现并发。

2 个答案:

答案 0 :(得分:1)

我不是专家,但是从我读过的内容(Long Duration Spin-wait Loops on Hyper-Threading Technology Enabled Intel Processors):

  

每个物理处理器都有两个逻辑处理器。每个逻辑处理器都有自己独立的架构状态,但几乎可以共享物理处理器上的所有其他资源,例如高速缓存,执行单元,分支预测器,控制逻辑和总线。

因此,基本上,如果一个逻辑处理器使用物理单元(例如,FPU,浮点单元),则允许另一个逻辑处理器使用另一个资源(例如,ALU,算术逻辑单元)。 / p>

根据我的阅读,您可以预期性能提升15-20%的最佳案例情景。我没有任何实际数字,但不要指望与添加另一个物理处理器相同的性能提升水平。

答案 1 :(得分:0)

因此,有很多因素决定了超线程中的好处。首先,由于它们共享资源,显然没有真正的并行性,但它们的并发性有所增加,具体取决于处理器的类型。

有三种类型的硬件线程。细粒度,以循环方式切换线程,目标是增加吞吐量,代价是增加单个线程延迟。切换以时钟为基础进行。有一个课程粒度更像是一个上下文切换,其中处理器在发生停顿或某种类型的内存提取时切换线程。然后同时在同一时钟中发生线程切换,这意味着在重新排序缓冲区和管道中同时存在多个线程数据。它们描述如下。

Shades correspond to threads of execution

超线程对应于此图中的SMT。如图所示,设计的有效性主要取决于一件事:管道的繁忙程度。在动态调度的处理器中,目标是尽可能使管道和执行单元保持忙碌,其优点是从我看到的收益减少约0%到5%。对于静态调度的处理器,其中管道有很多停顿,其优点更为普遍,并且根据编译器重新排序指令的能力,可以看到大约20%到40%的增益。