因此,我一直在研究一些实现每个内核多个线程的技术(例如intel的超线程),并且我想知道这些技术中并行性的程度如何。是真正的并行性还是更有效的并发?看起来他们仍然共享相同的执行单元和核心资源,基本上看起来只是对其用法进行虚拟化。因此,我不确定真正的并行性如何发生。如果是这种情况,那么有什么好处?您可以通过有效的线程上下文切换来实现并发。
因此,有许多因素决定了超线程技术的优势。首先,因为它们共享资源,所以显然没有真正的并行性,但是它们的并发性有所增加,具体取决于处理器的类型。
硬件线程有三种类型。细粒度以循环方式切换线程,目的是增加吞吐量,但要增加单个线程的等待时间。切换是逐个时钟进行的。当然,过程更像上下文切换,其中处理器在停顿或某种类型的内存提取发生时切换线程。然后在同一时钟中同时发生线程切换,这意味着重排序缓冲区和管道中同时存在多个线程数据。它们描述如下。
超线程对应于此图中的SMT。可以看出,设计的有效性主要取决于一件事:管道的繁忙程度。在动态调度的处理器中,目标是使管道和执行单元尽可能地繁忙,其优势是使收益比我所见的减少了大约5%到5%。对于流水线有大量停顿的静态调度处理器,其好处更为普遍,取决于编译器对指令重新排序的能力,其收益大约为20%到40%。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句