最近我听到一些关于超线程这个术语的消息,超线程到底是什么?为什么它很重要?
答案1
超线程是指您的处理器假装有 2 个物理处理器核心,但实际上只有 1 个和一些额外的垃圾。
超线程的意义在于,很多时候,当您在处理器中执行代码时,处理器的某些部分是空闲的。通过添加一组额外的 CPU 寄存器,处理器可以像拥有两个内核一样运行,从而并行使用处理器的所有部分。当两个内核都需要使用处理器的一个组件时,当然,一个内核最终会等待。这就是为什么它不能取代双核和此类处理器的原因。
答案2
超线程是指两个线程可以在一个单线程核心上运行。当相关核心上的一个线程停滞或处于暂停状态时,超线程可使该核心改为运行第二个线程。
超线程使操作系统认为处理器的内核数量增加了一倍,并且通常会带来性能提升,但总体上只在 15-30% 的范围内 - 尽管在某些情况下,性能实际上可能会受到影响 (=<20%)。
目前,大多数 Atom 芯片和所有 i7(以及与 Xeon 相当的芯片)都具有超线程,一些较旧的 P4 也是如此。对于 Atom 而言,这是在不增加功耗的情况下提高性能的绝望尝试;对于 i7 而言,它使它们与 i5 系列芯片有所区别。
复杂的处理工作不会从 HT 中受益太多,但某些(简单、高度多线程的)任务,例如视频编码,会从 HT 中受益。事实上,其中并没有太多内容...
答案3
当单核可以充当双核时
这是超线程
详细
英特尔对同步多线程的实现称为超线程技术,或 HT 技术。
从软件的角度来看,HT 技术使单个处理器看起来
像多个逻辑处理器。这允许操作系统和应用程序像
在多处理器系统上一样将多个线程调度到逻辑处理器。
超线程允许单个处理器同时执行两个线程,但并非在所有条件下都如此。
超线程不会使系统性能翻倍,但它可以通过更好地利用闲置资源来提高性能,从而提高某些重要工作负载类型的吞吐量。在繁忙内核的一个逻辑处理器上运行的应用程序的吞吐量可能略高于在非超线程处理器上单独运行时的吞吐量的一半。超线程性能改进高度依赖于应用程序,某些应用程序可能会因超线程而出现性能下降,因为许多处理器资源(如缓存)在逻辑处理器之间共享。
英特尔超线程技术使每个核心可以拥有两个逻辑处理器,共享核心的大部分资源,如内存缓存和功能单元
主功能
超线程的目的是增加流水线中独立指令的数量;它利用超标量体系结构,其中多个指令并行操作单独的数据
英特尔表示,超线程效率极高,因为它利用了原本闲置或未充分利用的资源。
链接:
答案4
据我了解,让我们看一个小例子,虽然它并不真实,但却强调了这一点……
假设我们有一个 CPU,它被称为托德今后。
托德还有几只手臂,比如说四只(很像小汤姆·伍德拉夫 Goro)这些是 Todd 版本的 CPU 逻辑门。
最后,Todd 只有一只耳朵,所以一次只能听到一个命令。这就是 Todd 没有超线程的生活,所以一个核心仍然只是一个核心。
托德非常聪明,可以同时执行四项独立的任务,四只手臂分别执行一项任务,但由于他只有一只耳朵,所以他一次只能听到一条指令。
现在,有些指令可能要求他使用所有肢体来完成任务,但相当多的指令可能只需要他使用左上臂。这效率很低!其他手臂大部分时间都处于闲置状态。
如果我们给托德第二只耳朵(这样他现在看起来又漂亮又对称),他就可以同时接收两个指令。
这很棒,因为如果一个指令只需要他使用左上臂,而另一个指令需要他使用右臂,那么他可以同时完成两个操作!这让他完成任务的效率提高了一倍!太棒了!
现在...我知道您可能在想什么;如果一个指令要求他使用所有手臂,而第二个指令要求他使用两只左臂,该怎么办?
好吧,不幸的是,托德被赋予了一只额外的耳朵,但没有额外的手臂,所以在这种情况下第二条指令将不得不等待,并且他的效率不会比只有一只耳朵时更高(或更低)。
这就是我们的故事,讲述了 Todd,我们的变异 CPU 模仿者,如何在不被赋予任何额外手臂的情况下人为地提高效率(即性能)。