Eng*_*eer 8 multithreading hyperthreading
HT/SMT背后的主要思想是,当一个线程停止时,同一内核上的另一个线程可以共同选择剩余的内核空闲时间并透明地运行它.
2013年,英特尔放弃了SMT,转而支持Silvermont处理器内核的无序执行,因为他们发现这可以提供更好的性能.
ARM不再支持SMT(出于能源原因).AMD从不支持它.在野外,我们仍然有各种支持它的处理器.
从我的角度来看,如果构建数据和算法是为了不惜一切代价避免缓存未命中和后续处理停滞,那么HT在多核系统中肯定是一个冗余因素吗?虽然我很欣赏上下文切换所涉及的开销很低,因为两个HyperThreads的离散硬件存在于同一物理内核中,但我看不出这比没有上下文切换更好.
我建议,任何需要针对超线程点缺陷的软件设计.这里有什么我想念的吗?
超线程是否有帮助以及多少取决于线程正在做什么.它不只是在一个线程中进行工作而另一个线程等待I/O或缓存未命中 - 尽管这是理由的一个重要部分.它是关于有效地使用CPU资源来增加总系统吞吐量.假设你有两个线程
使用超线程,这两个线程可以共享相同的CPU,一个是进行整数运算并获得缓存未命中和停止,另一个是使用浮点单元,数据预取器远远超前预测来自内存的顺序数据.系统吞吐量优于O/S交替调度同一CPU内核上的两个线程.
英特尔选择不在Silvermont中包含超线程,但这并不意味着它将在高端Xeon服务器处理器中,甚至在针对笔记本电脑的处理器中取消它.选择处理器的微架构涉及权衡,有许多考虑因素:
Silvermont的每个核心和功率预算的芯片尺寸预算不包括无序执行和超线程,并且无序执行提供更好的单线程性能. 这是Anandtech的评估:
如果我不得不用Silvermont描述英特尔的设计理念,那将是明智的缩放.我们已经从苹果公司和Swift看到了这一点,从高通公司看到了Krait 200到Krait 300的过渡.请记住使用原始Atom实现的设计规则:每增加2%的性能,Atom架构师最多可以将功率提高1%.换句话说,性能可以提升,但每瓦性能不会下降.Silvermont坚持设计理念,我想我对如何有所了解.
以前版本的Atom使用超线程来充分利用执行资源.超线程有一个与之相关的功率损失,但性能提升足以证明它的合理性.在22nm,英特尔有足够的芯片面积(由于晶体管缩放)只需添加更多内核而不是依赖HT来获得更好的线程性能,因此超线程已经消失.英特尔从摆脱超线程中获得的节能随后被分配用于使Silvermont成为无序设计,这反过来有助于提高执行资源的有效使用而无需HT.事实证明,在22nm处,英特尔用于启用HT的芯片面积与Silvermont的重新订购缓冲器和OoO逻辑大致相同,因此此举甚至没有面积损失.
https://en.wikipedia.org/wiki/Simultaneous_multithreading#Modern_commercial_implementations
AMD 现在已在Zen 微架构中转向完全 SMT