Nehalem在流水线中实现的又一重大变化是重新引入了SMT。SMT最早在Intel Netburst微架构的P4处理器中出现,并命名为超线程(Hyper Threading)。从技术角度而言,在Intel引入HT之前学术界和工业界都对基于多线程技术的处理器性能进行过广泛研究,并且大多认为多线程技术的处理器是今后处理器发展的重要方向。Intel在桌面处理器中引入多线程技术可谓众望所归,影响深远。但是Intel当时的超线程技术在现实应用中的表现并不尽如人意。一方面原因是由于超线程需要发挥作用需要CPU、芯片组、操作系统、驱动、应用软件等诸多方面的支持,而当时各方面对超线程并没有做好足够的准备,多线程应用相对匮乏;另一方面原因则是Pentium 4当初对于HT技术实现的不够完善,对于一些单线程的多媒体以及游戏等注重浮点的应用而言,处理器在打开HT之后的性能提升微乎其微,甚至性能下降。由于Intel在HT上市前进行了大量宣传,用户对于HT技术期望很高。Pentium 4在打开HT后并没有带来用户期望的性能提升,必然引起了很多用户的不满。
SMT技术示例
而在2006年,Netburst架构终究由于功耗和效率的问题被Intel抛弃,而新发布的Conroe处理器并没有对HT进行进一步的支持,据我们分析可能是由于以下两个方面的原因:
第一个原因是Conroe发布前已经没有足够的时间来实现多线程技术。虽然多线程技术在处理器内实现不需要消耗太多的硬件资源,在成本上也不会有太大影响,但是验证支持多线程技术的处理器在功能上的正确性则是一个相当困难的事情。而由于之前Intel在Netburst微架构上下了太大的注码,因此可能在决定放弃Netburst的时候已经没有太多时间去将多线程技术进一步集成到处理器内部。
第二个原因则可能来自于FSB本身。由于多线程技术可以更有效的利用处理器的功能部件,更快的完成多个任务,那么就需要有足够的存储带宽以源源不断的供给流水线所需要的指令和数据。而由于FSB的带宽是整个系统中的瓶颈,因此已经无力供给多个线程同时执行所需要的指令和数据,因此即便集成了多线程技术也不会比P4中集成HT时取得明显的提升。
从以上两个方面来看,我们相信第一个方面应该是Intel没有在Core微架构中没有实现多线程技术的首要原因,第二个方面是次要原因。
由于Core微架构中集成了更多的执行部件,因此没有集成多线程技术实在是一件遗憾的事情,这样会有很多硬件资源得不到利用而空闲。而Intel本次发布的Nehalem处理器再度集成多线程技术,并尊重学术界与工业界之前的习惯,命名为SMT(同步多线程)。由于Nehalem处理器在存储子系统上进行了重新设计,减弱了因为存储带宽问题引起的性能损失,同时目前支持多线程的软件也越来越多,我们有理由相信支持SMT的Nehalem处理器会带来更好的性能表现。