2015-07-19 73 views
-1

在单个内核中同时执行线程是否存在限制?因为在英特尔处理器的规格中,他们提到如果处理器有4个内核,则同时执行8个线程是可能的。请澄清,如果它是完全abusrd处理器中每个内核的线程数

+1

具有超线程的4个内核可以同时运行8个线程。如果线程更多,则使用时间分片切换相同优先级的线程。 – rcgldr

+0

阅读关于同步vs暂时线程:https://en.m.wikipedia.org/wiki/Simultaneous_multithreading – John

回答

1

的4核心处理器只能同时运行4个线程好心承担......

... ...技术上

...或在使用至少是真实的。

[现代] CPU的流水线有几个工作站存储操作。例如,当一条指令将内存提取到寄存器中时,它将被分配给一个具有所有依赖关系的工作站。随后的将该数字加1的指令被存储,取决于获取操作,该操作占用该工作站直到完成提取。

随着指令送入CPU,它们被分配到工作站。然而,只有这么多的内存提取站,所以如果一个提取进来,但取数据站被占用,它将等待,直到取出完成。

这是一个线程发生的情况。

但是,通常情况下,两个线程正在做不同的事情:一个可能会做一堆内存获取操作,然后是整数算术操作,然后是内存存储操作,而另一个线程可能只想做一堆浮点运算操作......如果只允许执行第一个线程,则浮点运算操作站将闲置,未使用。

那么为什么不使用它们呢?

这简直就是超线程。

所以,如果你有线程在做同样的操作,你在任何时候都有四个线程运行。

如果您有线程做不同的事情,您可以将吞吐量增加到理论上最多八个线程在任何给定时间运行。

你的线索越相似,越接近4;你的线程越不同,越接近8。

相关问题