2019独角兽企业重金招聘Python工程师标准>>>
2002年,Intel发布Northwood核心的P4C系列处理器,为桌面级处理器带来了一个新技术:Hyper-Threading超线程技术,随后的Prescott核心P4E系列也提供了对超线程技术的支持。后来的事实证明,Netburst架构上采用的HT技术,称之为杯具或许有些过分,但称之为鸡肋还是比较贴切的。进入Core时代,Intel便取消了对HT技术的支持。2008年11月,Intel新架构Nehalem发布,超线程技术出现在新的i系列处理器中,不过名字改成了Simultaneous Multi-Threading(同步多线程)。
多线程技术MultiThreading源于叫做ILP(Instruction Level Parallelism,指令级并行化)的思想,类似于分时共享计算系统,执行多个线程的处理器在某个线程因为缓存未命中(Cache Miss)或者分支预测失败而停止时,处理单元可以切换到另外一个线程来执行,以此提高资源利用率和数据吞吐量。多线程的实现有几种不同的形式:Coarse-Grained MultiThreading(粗粒度多线程),当正在执行的线程遇到长时间延迟时,就进行线程切换,直到原线程的等待操作完成,再切换回去,Intel的服务器级处理器Itanium 2采用这种方式。Fine-Grained MultiThreading(细粒度多线程),随时可以在每个时钟周期内切换多个线程,这种多线程方式可以最大化的利用处理单元实现最大化的吞吐量。这两种多线程技术,实际上都是处理单元的分时共享,处理单元在不同的线程切换,以此提高利用率以及总吞吐量,因此这两种多线程技术都属于Temporal MultiThreading(分时多线程)。
Netburst和Nehalem架构处理器所采用的多线程技术不同于上面两种,这种多线程技术可以同时运行多个线程,也就是说线程之间是时间并行的,因此称为Simultaneous MultiThreading,同步多线程(Intel一开始叫做Hyper-Threading大概是因为这个名字听起来比较NX吧=。=)。Intel采用的方法是在处理器中为每一个核心加一个入额外的逻辑控制单元,从而模拟出一个核心来执行线程。这样每个处理器核心都可以同时执行两个线程,它们共用同一个运算单元,当其中一个线程正在使用运算单元的某一模块时,另一个线程就要等待或者进行其它操作。这种多线程的方式也是提高了运算单元的利用效率,但由于除了控制单元外其它所有资源都是两个线程共享,所以远不能达到两个硬件核心的性能,当初Intel推出P4C系列时声称相对于同频率同架构没有HT技术的CPU,性能可以提升30%,而实际应用中远没有这么高的效果。
我认为,Netburst架构上超线程技术杯具的原因,主要有三个。首先是支持超线程技术需要更大的数据读取,两个线程共用高速缓存和内存通道,势必引起二级缓存和内存总线捉襟见肘。推出P4C系列时,Intel把Netburst架构的前端总线(FSB)频率提高到了800MHz,并且为配合高速的FSB采用了双通道DDR内存控制,到推出采用Prescott核心的P4E系列时,更是采用了高达1066MHz的FSB。即时在1066MHz的FSB下,内存通道的带宽也只有8.5GB/s,配合1M的二级缓存,完全应付两个线程的吞吐还是有些吃力。
其次,是Netburst架构超长的流水线。Northwood核心的流水线长度已经达到了20级,Prescott核心的流水线竟然达到令人跌眼镜的31级。超长的流水线可以更容易的提升处理器的主频,但随着流水线的逐步加长,主频提升所带来的性能提升越来越小。现代的微处理器基本上都使用超标量处理和分支预测技术,更长的流水线意味着更低的执行效率。本来已经如此低下的执行效率,再加入超线程技术,更是放大了Intel的尴尬。
如果上面两个原因是Netburst架构上HT技术的杯具的话,那么最后这个因素无疑是HT技术的餐具。当时的HT技术,不仅需要CPU,芯片组,BIOS等的支持,更需要操作系统和应用软件对多线程的支持。当时的主流操作系统WinXP已经支持多线程,但当时能支持多线程的常用软件是少之又少,特别的游戏软件,几乎没有- -b。集成了HT技术的处理器在执行单线程任务时,不仅没有任何帮助,反而会因为资源闲置而降低系统性能。Intel应该也意识到,在普及多核处理器之前,向桌面级微处理器上加入多线程技术是操之过急了。
2008年,在经历了Core时代以后,多核处理器已经普及,Intel认为重新推出多线程技术的时机已经成熟,配合新的Nahalem架构,超线程技术新瓶装旧酒,SMT出现在i系列处理器中。
Nahalem架构把内存控制器集成在cpu中,并使用QPI高速总线连接双通道或者三通道(LGA1366接口)DDR3内存,提供远超FSB通道的内存通道带宽。另外Nehalem架构采用了全新的三级缓存结构,大大提升了对cpu的数据供应能力,以此支持多核多线程的数据需求。
另外Intel处理器的流水线早在Core时代就降了下来。其实超长流水线的出现还是源于人们对于cpu性能=主频的误解,直到进入多核时代,人们才开始注重高性能低功耗,而不是单纯的追求高频率。
最后一个问题,桌面级微处理器已经全面进入多核时代,支持多线程的应用软件已经非常普遍了,所以SMT也不必像HT那样成为大餐具了。
Intel的超线程技术经历了Netburst时代的沉沦之后,在Nahalem时代强势归来,如果SMT技术获得成功,也许我们会在以后的桌面级微处理器上见到更多的多线程技术(MultiThreading),单个核心可以支持的线程数可能会是4个、8个或者更多。
本文写于2010-1-25 16:38 --con