什么是CPU线程,它与代码中的逻辑线程有什么关系?

Mik*_*keJ 7 multithreading cpu-architecture hyperthreading

我在文献中已经看到一些较新的CPU,例如Intel Xeon"Nehalem-EX",它有8个内核和16个线程.他们在这里谈什么?我在引用中看到了这一点,所以SPARCS也是如此,这肯定不是代码产生的那种逻辑线程吗?这个超线程是否重新命名?

coo*_*ird 10

是的,基于Nehalem的处理器实现了超线程.

您所指的新Nehalem-EX具有8个物理内核,其中每个内核可被视为2个逻辑内核,总共16个逻辑内核,允许在单个处理器上执行16个应用程序线程.

这与支持超线程的奔腾4处理器以及最近在Atom处理器上使用的技术相同.我的Eee PC有一个单核Atom处理器,它有两个逻辑核心--Windows任务管理器将显示两个CPU图形; 每个逻辑核心一个.

Sun的UltraSPARC T2(以及T1)还允许同步多线程(英特尔的实现称为超线程 - 英特尔的商标),它允许单个核心显示为多个逻辑核心,以在单个核心上执行多个线程.

同步多线程背后的粗略思想是有多个寄存器来存储处理器状态,因此在单个内核中实际上存在多个内核,因为它具有多个全套硬件寄存器.

虽然ALU和FPU等物理设施可能不会增加,但是在物理内核上运行更多线程的更多寄存器集可以更好地利用可用的处理器资源.在执行单个线程时,核心可能尚未饱和,但执行多个核心可能会使所有单元充分发挥其最大潜力.

那对程序员来说意味着什么呢?

这意味着我们仍然需要编写多线程软件 - 拥有一个只有一个线程的程序只能使用一个逻辑核心.只有拥有编写良好的多线程代码,我们才能利用这些处理器提供的大量逻辑内核.

即使同时进行多线程处理,代码也会在每个逻辑核心的一个线程上执行.