HT/SMT 背后的主要思想是,当一个线程停止时,同一核心上的另一个线程可以选择该核心的其余空闲时间并透明地与之一起运行。
2013 年,英特尔放弃了 SMT,转而采用乱序执行
Silvermont 处理器核心,因为他们发现这可以提供更好的性能
表现。
ARM 不再支持 SMT(出于能源原因)。 AMD从来不支持它。在野外,我们仍然有各种支持它的处理器。
从我的角度来看,如果数据和算法的构建是为了不惜一切代价避免缓存未命中和后续处理停顿,那么超线程肯定是多核系统中的冗余因素吗?虽然我意识到所涉及的上下文切换的开销较低,因为两个超线程的离散硬件存在于同一物理内核中,但我看不出这比根本没有上下文切换更好。
我建议任何need超线程指出了软件设计的缺陷。我在这里缺少什么吗?
超线程是否有帮助以及有多大帮助取决于线程正在做什么。它不仅仅是在一个线程中完成工作,而另一个线程等待 I/O 或缓存未命中 - 尽管这是基本原理的重要组成部分。它涉及有效利用 CPU 资源来提高系统总吞吐量。假设你有两个线程
- 一个有很多数据缓存未命中(空间局部性差)并且不使用浮点,空间局部性差不一定是因为程序员做得不好,某些工作负载本质上就是如此。
- 另一个线程正在从内存中传输数据并进行浮点计算
通过超线程,这两个线程可以共享同一个 CPU,一个正在执行整数运算并导致缓存未命中和停止,另一个正在使用浮点单元,并且数据预取器远远领先于内存中的顺序数据。系统吞吐量比操作系统在同一 CPU 核心上交替调度两个线程要好。
英特尔选择不在 Silvermont 中包含超线程,但这并不意味着它将在高端 Xeon 服务器处理器甚至针对笔记本电脑的处理器中取消它。选择处理器的微架构需要权衡,有很多考虑因素:
- 目标市场是什么(将运行什么样的应用程序)?
- 目标晶体管技术是什么?
- 绩效目标是什么?
- 功率预算是多少?
- 目标芯片尺寸是多少(影响良率)?
- 它在公司未来产品的性价比范围内处于什么位置?
- 目标推出日期是哪一天?
- 有多少资源可用于实施和验证设计?添加微架构功能会增加非线性的复杂性,与其他功能存在微妙的相互作用,目标是在第一次“流片”之前识别尽可能多的错误,以最大程度地减少在完成之前必须完成的“步骤”一个工作芯片。
Silvermont 的每核心芯片尺寸预算和功耗预算排除了乱序执行和超线程的可能性,而乱序执行提供了更好的单线程性能。这是 Anandtech 的评估 http://www.anandtech.com/show/6936/intels-silvermont-architecture-revealed-getting-serious-about-mobile/3:
如果我必须用 Silvermont 来描述英特尔的设计理念,那就是合理的扩展。我们从 Apple 的 Swift 以及高通的 Krait 200 到 Krait 300 的过渡中看到了这一点。请记住最初 Atom 的设计规则:性能每提高 2%,Atom 架构师最多可以将功率提高 1%。换句话说,性能可以上升,但每瓦性能不能下降。 Silvermont 坚持这种设计理念,我想我知道如何做到这一点。
Atom 的早期版本使用超线程技术来充分利用执行资源。超线程会带来一定的功耗损失,但性能的提升足以证明它的合理性。在 22 纳米工艺中,英特尔拥有足够的芯片面积(得益于晶体管缩放),只需添加更多内核即可,而不是依靠 HT 来获得更好的线程性能,因此超线程被淘汰。英特尔通过摆脱超线程技术节省的电量随后被分配到使 Silvermont 成为无序设计,这反过来又有助于在没有超线程的情况下提高执行资源的有效利用。事实证明,在 22 纳米工艺下,英特尔用于启用 HT 的芯片面积与 Silvermont 的重排序缓冲区和 OoO 逻辑大致相同,因此此举甚至没有面积损失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)