前言:
在今年的IDF2002上,Intel正式向外界发布了,“Hyper-Threading Technology(超线程技术)”这项划时代的技术!并且将他率先在XERON处理器上得到应用。由于使用了该技术,Intel将是世界上首枚集成了双逻辑处理器单元的物理处理器(其实就是在一个处理器上整合了两个逻辑处理器单元)的提供者,据说此项技术能够提高40%的处理器性能,类似的技术似乎也将出现在AMDK8-Hammer处理器上。
从上面Intel最新的处理器蓝图上可以看出,在桌面处理器上,Hyper-Threading技术将首次应用在主频为3.06GHz的Pentium4处理器上。随着这项本来只是应用在服务器处理器上的先进技术在桌面处理器上即将得到应用,Hyper-Threading技术再次被越来越多的人们所关注。一时间Hyper-Threading技术成了媒体上镜率最高的一个名词!现在也许有人要问了,Hyper-Threading到底是个什么样的技术能引起那么多的人注意?他到底能给桌面型处理器带来多大的改善?OK!为了解开这些问题,我们就一起走进超线程的世界,看看他到底有什么与众不同!
Hyper-Threading为何物?:
当今的处理器发展普遍向着提高处理器指令平铺速率的方向迈进,但由于所使用的处理器资源会有冲突,因此性能提升的效果并不理想。而通过Hyper-Threading技术,通过在一枚处理器上整合两个逻辑处理器(注:是处理器而不是运算单元)单元,使得具有这种技术的新型CPU具有能同时执行多个线程的能力,而这是现有其它微处理器都不能做到的。
简单的说,Hyper Threading是一种同步多执行绪(SMT,simultaneous Multi-threading)技术,它的原理很简单,就是把一颗CPU当成两颗来用,将一颗具Hyper-Threading功能的“实体”处理器变成两个“逻辑”处理器而逻辑处理器对于操作系统来说跟实体处理器并没什么两样,因此操作系统会把工作线程分派给这“两颗”处理器去执行,让多种应用程序或单一应用程序的多个执行绪(thread),能够同时在同一颗处理器上执行;不过两个逻辑处理器是共享这颗CPU的所有执行资源。
通过整合这一技术,具有Hyper-Threading技术的CPU能在同一物理处理器资源下同时执行两个程序,或者是一个程序的两个线程,从而使物理处理器资源利用率至少提升40%。Intel将在未来使用NetBurtst架构的全线处理器中引入这一技术!
Hyper-Threading技术将如何工作?:
Hyper-Threading做法是复制一颗处理器的架构指挥中心(architectural state)变成两个,使得Windows操作系统认为是在与两颗处理器沟通,但这两个架构指挥中心共享该处理器的工作资源(execution resources)。架构指挥中心追踪每个程序或执行绪的执行状况;工作资源指的则是“处理器用来进行加、乘、加载等工作的单元(execution unit)”。如此一来,操作系统把工作线程安排好以后,就分派给这两个逻辑上的处理器执行,而这颗CPU的每个执行单元等于在同样的时间内要服务两个“指令处理中心”,当然它的效率就高多了,操作系统就把一颗实体的处理器认定为两个逻辑处理器作工作指派,当然整体工作效能就比没有具备Hyper-Threading 的处理器高出许多,性价比自然高出许多。
各位看上图,左边的组态代表具有两个分离的实体处理器的传统多重处理器系统。每个处理器都有一组属于自己的处理器执行资源以及结构状态。右边的组态表示使用Intel Xeon 处理器家族的多重处理器系统,每个服务器都具有超线程(Hyper-Threading)技术。
如图所示,各处理器的结构状态将被复制,但每个结构状态仍拥有一组执行资源。在排定执行绪处理顺序时,操作系统会将两个不同的结构状态视为两个分离的“逻辑”处理器。
具有多重处理器功能的软件应用程序不需要经过修改,就可以使用两倍的逻辑处理器。每个逻辑处理器都可独立响应中断。第一个逻辑处理器可追踪一个软件执行绪、而同时第二个处理器也可追踪另一个软件执行绪。由于两个执行绪共享同一组执行资源,因此若一个执行绪正在执行中,第二个执行绪将会暂时闲置。这种方式的结果是每个实体处理器中的执行资源使用率将会提升!
实现超线程需要那些必要条件?:
除了硬件支持之外,我们必须注意到,超线程技术的实现还需要软件的支持才能够发挥出应有的威力。首先是操作系统的支持,我们必须使用支持双处理器的操作系统,如Win2000等才能完全发挥出超线程技术的性能。至于软件方面,目前很多专业的应用程序对于双处理器都提供了支持,如著名的图形处理软件3Dmax、Maya等。
现在也许有人要有疑问了,,既然超线程技术以前专门针对服务器处理器,那么现有的众多软件,能否完全兼容支持超线程技术的处理器,是否还需要什么修改才能运行呢?其实这个我们大可不必担心,现有的IA32软件不需进行任何的修改,就可以在支持超线程的P4处理器上很好的运行了。
超线程等于效能提升?:
上面我们已经对超线程技术做了一个大概的了解,看到这里一般很多人都会认为,采用超线程技术,就能使得系统效能大幅提升,但是事实真是如此么?不要忘了我们前面说到的超线程技术实现的必要条件,这可是超线程技术发挥应有效能的前提条件。除了操作系统支持之外,还必须要软件的支持。从这点我们就可以看出,就目前的软件现状来说,支持双处理器技术的软件毕竟还在少数。对于大多数软件来说,目前由于设计的原理不同,还并不能从超线程技术上得到直接的好处。因为超线程技术是在线程级别上并行处理命令,按线程动态分配处理器等资源。该技术的核心理念是“并行度(Parallelism)”,也就是提高命令执行的并行度、提高每个时钟的效率。这就需要软件在设计上线程化,提高并行处理的能力。而目前PC上的应用程序几乎没有为此作出相应的优化,采用超线程技术并没不能获得效能的大幅提升。
上面说的只是目前软件支持的现状,操作系统在这个方面则没有太大的问题,毕竟Windows的某些版本、Linux都是支持多处理器的操作系统。并且随着Intel支持超线程技术的处理器面世之后,凭借Intel处理器的号召力,必然会引起目前应用程序设计上的改变,必然会有更多的支持并行线程处理的软件面世,届时,当然是支持超线程处理器大显身手的时候了。那时候,普通用户才能够从超线程技术中得到最直接的好处。
但是我们还是需要看到,随着目前操作系统对于双处理器技术的广泛支持,例如Windows2000、Windows XP等操作系统都支持双处理器,在这些操作系统上使用支持超线程技术的处理器,对于系统的整体性能还是有一定的提高的!