同时多线程

编辑
本词条由“匿名用户” 建档。

同时多线程(SMT)是一种通过硬件多线程提高超标量CPU整体效率的技术。SMT允许多个独立的执行线程更好地利用现代处理器架构提供的资源。 多线程这个词有歧义,因为不仅可以在一个CPU内核上同时执行多个线程,还可以执行多个任务(具有不同的页表、不同的任务状态段、不同的保护环、不同的I/O权限等)。虽然运行在同一个核心上,但它们之间是完全分开的。多线程在概念上类似于抢占式多任务,但在现代超标量处理器的...

同时多线程

编辑

同时多线程(SMT)是一种通过硬件多线程提高超标量CPU整体效率的技术。SMT允许多个独立的执行线程更好地利用现代处理器架构提供的资源

详情

编辑

多线程这个词有歧义,因为不仅可以在一个CPU内核上同时执行多个线程,还可以执行多个任务(具有不同的页表、不同的任务状态段、不同的保护环、不同的I/O权限等)。虽然运行在同一个核心上,但它们之间是完全分开的。多线程在概念上类似于抢占式多任务,但在现代超标量处理器的线程执行级别上实现。

同时多线程(SMT)是多线程的两种主要实现之一,另一种形式是时间多线程(也称为超线程)。在时间多线程中,一次只能在任何给定的流水线阶段执行一个指令线程。在同时多线程中,来自多个线程的指令可以一次在任何给定的流水线阶段执行。这是在没有对基本处理器架构进行重大更改的情况下完成的:所需的主要附加功能是能够在一个周期内从多个线程获取指令,以及一个更大的寄存器文件来保存来自多个线程的数据。并发线程的数量由芯片设计者决定。每个CPU内核有两个并发线程很常见,但有些处理器每个内核最多支持8个并发线程。

因为它不可避免地增加了共享资源的冲突,所以衡量或就其有效性达成一致可能很困难。然而,在历史130nm到32nm英特尔SMT(超线程)实施中测量了具有并行本机和托管工作负载的SMT的能效发现,在45nm和32nm实施中,SMT的能效非常高,即使使用有序Atom处理器也是如此。在现代系统中,SMT有效地利用了并发性,而几乎没有额外的动态能力。也就是说,即使在性能增益很小的情况下,功耗节省也可能相当可观。

一些研究人员[谁?]已经表明,可以主动使用额外的线程来为共享资源(如缓存)播种,以提高另一个单线程的性能,并声称这表明SMT不仅提高了效率。其他[谁?]使用SMT提供冗余计算,用于某种级别的错误检测和恢复。

然而,在当前大多数情况下,SMT是关于隐藏内存延迟、提高效率和增加每使用硬件数量的计算吞吐量

分类学

编辑

处理器设计中,有两种方法可以以更少的资源需求增加片上并行性:一种是尝试利用指令级并行(ILP)的超标量技术;另一种是利用线程级并行(TLP)的多线程方法。

超标量意味着同时执行多条指令,而线程级并行(TLP)则同时执行来自一个处理器芯片内的多个线程的指令。有很多方法可以在一个芯片内支持多个线程,即:

  • 交错多线程:来自不同线程的多条指令的交错发布,也称为时间多线程。根据交错问题的频率,它可以进一步分为细粒度多线程或粗粒度多线程。细粒度的多线程——例如在桶形处理器中——在每个周期后为不同的线程发出指令,而粗粒度的多线程只有在当前执行的线程导致一些长延迟事件(如页面错误等)时才切换到从另一个线程发出指令。)。粗粒度多线程更常见于线程之间较少的上下文切换。例如,英特尔的Montecito处理器使用粗粒度多线程,而Sun的UltraSPARCT1使用细粒度多线程。对于那些每个内核只有一条流水线的处理器,交错多线程是xxx可能的方法,因为它每个周期最多可以发出一条指令。
  • 同时多线程(SMT):在一个周期内从多个线程发出多条指令。处理器必须是超标量才能这样做。
  • 芯片级多处理(CMP或多核):将两个或多个处理器集成到一个芯片中,每个处理器独立执行线程。
  • 多线程/SMT/CMP的任意组合。

区分它们的关键因素是看处理器在一个周期内可以发出多少条指令,以及这些指令来自多少个线程。例如,SunMicrosystems的UltraSPARCT1是一种多核处理器,它结合了细粒度多线程技术,而不是同时多线程,因为每个内核一次只能发出一条指令。

同时多线程

历史实现

编辑

虽然多线程CPU自1950年代以来就已经存在,但同时多线程是IBM在1968年作为ACS-360项目的一部分首次研究的。xxx个使用SMT开发的主要商用微处理器是Alpha21464(EV8)。该微处理器由DEC与加州大学圣地亚哥分校的DeanTullsen以及华盛顿大学的SusanEggers和HenryLevy合作开发。该微处理器从未发布,因为Alpha微处理器系列在惠普收购康柏之前不久就停产了,而康柏又收购了DEC。DeanTullsen的工作也被用于开发IntelPentium4微处理器的超线程版本,例如“Northwood”和“Prescott”。

同时多线程的缺点

编辑

根据处理器的设计和架构,如果任何共享资源成为性能瓶颈,同时多线程可能会降低性能。批评者认为,让软件开发人员承担相当大的负担,他们必须测试同时多线程在各种情况下对他们的应用程序是好还是坏,并插入额外的逻辑以在降低性能时将其关闭。当前的操作系统缺乏方便的API调用来实现此目的,并防止具有不同优先级的进程相互获取资源。

某些同时多线程实现也存在安全问题。英特尔在基于NetBurst的处理器中的超线程存在一个漏洞,通过该漏洞,一个应用程序可以通过监控其缓存使用情况从运行在同一处理器中的另一个应用程序窃取加密密钥。在BlackHat2018上还解释了HT实施的复杂机器学习漏洞。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/132068/

(2)
词条目录
  1. 同时多线程
  2. 详情
  3. 分类学
  4. 历史实现
  5. 同时多线程的缺点

轻触这里

关闭目录

目录