Multithreading 时态多线程和超级线程之间有什么区别?

Multithreading 时态多线程和超级线程之间有什么区别?,multithreading,concurrency,parallel-processing,cpu,cpu-architecture,Multithreading,Concurrency,Parallel Processing,Cpu,Cpu Architecture,有两个术语: :在细粒度时间多线程处理中,主处理器管道可能包含多个线程,在管道阶段之间(例如,在中)有效地发生上下文切换。桶处理器是一个CPU,它在每个周期的执行线程之间切换 :是一种多线程处理类型,它允许单个处理器执行不同的线程,而无需同时真正执行它们。这将其限定为时间切片或临时多线程,而不是同时多线程(SMT)。它的动机是观察到处理器的功能单元在执行来自一个线程的指令时由于长延迟事件而偶尔处于空闲状态。超级线程试图通过执行另一个线程的指令,直到上一个线程准备好恢复执行,从而利用其他未使用的

有两个术语:

  • :在细粒度时间多线程处理中,主处理器管道可能包含多个线程,在管道阶段之间(例如,在中)有效地发生上下文切换。桶处理器是一个CPU,它在每个周期的执行线程之间切换

  • :是一种多线程处理类型,它允许单个处理器执行不同的线程,而无需同时真正执行它们。这将其限定为时间切片或临时多线程,而不是同时多线程(SMT)。它的动机是观察到处理器的功能单元在执行来自一个线程的指令时由于长延迟事件而偶尔处于空闲状态。超级线程试图通过执行另一个线程的指令,直到上一个线程准备好恢复执行,从而利用其他未使用的处理器周期

TM和ST之间的主要区别在于,时间多线程(细粒度)在每个周期的执行线程之间使用和切换,而超级线程在线程之间切换,而不是在每个周期,并且仅当处理器的功能单元在执行一个线程的指令时由于长延迟事件而处于空闲状态时才切换


时态多线程(细粒度)和超级线程有什么区别?

时态多线程可以是细粒度或粗粒度多线程。细粒度多线程以固定的细粒度间隔(例如,每个周期)切换上下文。粗粒度多线程在长延迟事件(例如LLC缓存未命中)上切换上下文

另一方面,同步多线程没有任何线程切换的概念。多个线程可以同时运行

一幅画抵得上千言万语。请看幻灯片5至7。它有所有3种方法的图片,并对它们进行了很好的比较


正如其他人所说,超级线程不是一个常见的术语,在我看来,它类似于粗粒度TM

从一个非常简短的搜索(以及对计算机体系结构的一些熟悉)中可以看出,超级线程最早是在Shuichi Sakai等人的“超级线程:优化并行计算的体系结构和软件机制”中使用的,其对线程的硬件支持更为广泛。就我所知,这个术语在计算机体系结构社区中并不常用。时态多线程包括粗粒度(通常打开事件MT)和细粒度(包括桶处理和更灵活的逐周期调度)MT。@Paul A.Clayton术语ST很少使用。是否可能是因为超级线程(ST)只为一个管道(ALU)提供指令,而同时多线程(SMT)为多个管道(ALU)提供指令?也就是说,ST只利用暂停(缓存未命中、分支预测失误或数据依赖),但现代CPU也是超标量体系结构,而不是ST使用SMT来利用超标量体系结构。例如,超线程-是英特尔专有的同步多线程(SMT)。谢谢,是的,这是很好的幻灯片。我们可以认为超级线程与时间多线程(粗粒度)相同。也就是说,多线程的类型如下所示-从线程之间的CPU核心中的共享任何内容到不共享任何内容:无(完全软件多线程)、桶处理器中的TM(细粒度)、TM(coars粒度)-超级线程、SMT-超线程、CMT(芯片多线程)-共享昂贵资源的多核(某些内核上的单FPU)、CMP(芯片多处理器)-具有共享末级缓存和互连的多核。我们可以说,例如,现代Intel CPU,Intel Core i7既是CMP又是SMT吗?@Alex,据我所知,是的。现在几乎所有的x86处理器都是CMP(我想不出任何单核x86 CPU)。SMT也是如此。有些是2路SMT,有些是4路SMT。请注意,Intel使用SMT的术语“超读”。顺便说一句,请查看斯坦福CPU数据库以供参考。