
| 出版日期:2002-10-09 总期号:1158 本年期号:75 |
|
一个顶俩 Intel Hyper-Threading技术
Ray 在IDF Fall 2001上,Intel正式发布了“Hyper-Threading Technology(超线程技术)”这项技术将率先在Xeon处理器上得到应用。通过使用该技术,Intel将提供世界上首枚集成了双逻辑处理器单元的物理处理器(其实就是在一个处理器上整合了两个逻辑处理器单元),据说能够提高40%的处理器性能,类似的技术似乎也将出现在AMD K8-Hammer处理器上。 何为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 Technology的处理器高出许多,性价比自然高出许多。
图1 Hyper-Threading技术图解 在图1中,左边的图代表具有两个分离的实体处理器的传统多重处理器系统。每个处理器都有一组属于自己的处理器执行资源以及结构状态。右边的组态表示使用Intel Xeon 处理器家族的多重处理器系统,每个服务器都具有超线程(Hyper-Threading)技术。 如图所示,各处理器的结构状态将被复制,但每个结构状态仍拥有一组执行资源。在排定线程处理顺序时,操作系统会两个不同的结构状态视为两个分离的“逻辑”处理器。 具有多重处理器功能的软件应用程序不需要经过修改,就可以使用两倍的逻辑处理器。每个逻辑处理器都可独立响应中断。第一个逻辑处理器可追踪一个软件线程、而同时第二个处理器也可追踪另一个软件线程。由于两个线程共享同一组执行资源,因此若一个线程正在执行中,第二个线程将会暂时闲置。这种方式的结果是每个实体处理器中的执行资源使用率将会提升。 Hyper-Threading善用工作资源,提升处理器效能 操作系统会因为一颗Hyper-Threading处理器中有两个架构指挥中心,而将它视为两个各自独立的、“逻辑上的”处理器。当操作系统要为每个任务安排线程时,它会把这颗处理器视为两颗处理器来加以运用。一套支持多处理器系统的应用软件,在拥有双倍逻辑处理器数量的Hyper-Threading架构中,不必修改就可以跑得起来。每个逻辑处理器可单独对中断处理做出响应,两个逻辑处理器可以同步处理两个不同的线程,而这两个线程共享处理器的工作资源。当一颗处理器只处理一个线程时,工作资源常有许多闲置(idle),但若这颗处理器划分成了两个逻辑处理器、同时处理两个线程时,闲置下来的工作资源可以去处理第二个执行绪的需求。举例来说,当一个逻辑处理器在进行浮点运算时,另一颗逻辑处理器可以执行加法或加载的工作;因此整体来说,这颗处理器的工作资源的使用率大幅提高了。 为了解超线程(Hyper-Threading)如何改善资源的使用率,我们以含有两个超纯量处理器、每个处理器在每个周期可执行三个指令,且是以两个分离的线程处理的多重处理器系统为例。
图2 Hyper-Threading系统资源占用情况分析 如图2所示,每个处理器中的方块代表着一个执行单元。每个处理器中的三个水平方块代表在特定的时钟周期中,这三个执行单元的运用方式。如果某个方块为白色,代表这个执行单元在特定的时钟周期中为闲置状态(即:若某个方块在某个时钟周期中为白色,则代表在此时钟周期中,有1/3的资源为闲置状态、而系统使用了2/3的资源)。 此图说明了超线程(Hyper-Threading)技术的概念,并不代表任何现有的处理器或软件应用程序的资源使用方式。垂直方向代表三个执行单元在某个时间的使用率(在多个时钟周期之间)白色方块越多,表示执行资源的使用效率越差。有时候处理器中所有执行资源都已使用,有时候则有因快取遗失、分支预测错误、或是各线程的指令相依性等因素造成的闲置资源。 红花还需绿叶配Hyper-Threading还需软硬件支持 我们还只需要注意一点,就是Hyper-Threading要想发挥出效能,还需要支持多处理器系统的操作系统来支持,这样,操作系统才会把不同的线程安排给两个“处理器”去执行,否则,即使是处理器拥有Hyper-Threading技术,也不能完全发挥出它应有的效能。不过,就软件的支持来说,目前IA-32代码的软件,无需任何修改就能够在拥有Hyper-Threading技术的处理器上运行。某些专业的应用软件也已经在现有版本中整合了对多线程系统的支持,例如3dsmax、Maya等。 同样的道理,Hyper-Threading技术还需要芯片组的支持,目前支持Hyper-Threading技术的芯片组仅有服务器版本的Intel E7500芯片组,桌面版本的芯片组也还没有正式对Hyper-Threading技术提供支持,目前的i845系列以及支持RDRAM的高端i850系列芯片组都没有提供对Hyper-Threading技术的支持,Intel在推出基于Hyper-Threading的Pentium4处理器时,应该也会同时提供相应的芯片组支持。 总结 无论如何,Intel决心在桌面处理器中加入Hyper-Threading技术的确是一件振奋人心的事。AMD 的K8处理器据说也有实现相同意义的技术架构。新一代处理器竞争号角已经吹响,Intel能否依靠带有Hyper-Threading技术的P4处理器再续往日辉煌,给我们带来焕然一新的性能体验呢?让我们拭目以待。 |
|||||||