技术专题

HyperThreading技术

    如果把Pentium 4 3.06GHz同最早的Willimatte核心的Pentium 4比较的话,会发现这款处理器的经过了两年的多的时间已经发生了很大的变化,从封装形式、生产工艺、接口、内部的功能进行了多次的调整,这次加入了用户期待已久的HT技术,使得其CPU可以充分的利用多处理器系统的优势以及在多线程方面具有更多的优势。

    在去年Intel开发者论坛(IDF)上,Intel公司发布并展示了Hyper-Threading技术(后文简称为HT技术)。这种技术使得单颗处理器可以同时处理器多个线程,从而可以把系统的性能提高30%以上。其实这项技术由来以久,它的研发代号为Jackson技术,也就是SMT(同步多线程)技术。

    HT技术使得一颗物理处理器可以同时处理两条独立的代码流(一般的我们把它叫做线程)。如下图所示,在一颗应用了HT技术的IA-32处理器中具有两个逻辑处理器,每个逻辑处理器都具有自己的IA-32架构状态(architectural state)。在加电、初始化之后,每个逻辑处理器都可以独立的挂起、中断或者直接执行特定的线程,这些操作都完全独立于另外一个逻辑核心。同传统的双处理器(DP)配置不同(比如未应用HT技术的Xeon处理器),在应用了HT技术的物理处理器中的两个逻辑处理器共享执行资源(执行引擎、缓存、系统总线接口和firmware)。

    HT技术主要用于提高IA-32处理器支持处理多线程的操作系统中、服务器应用和工作站应用的性能,它可以更加充分的发挥Netburst架构的优势提高单颗处理器的性能。支持多处理器的系统可以自然利用HT技术,将工作分配到两个逻辑处理器上,如同对于真正的DP/SMP系统一样。

    为了便于理解今天要讨论的问题,我们来构建一个简单的模型:一个由ALU、FPU和Load/Store单元组成的处理器。假设这颗处理器可以在一个时钟周期内执行任何运算,而且还能同时给这三个单元分配任务。下面我们就让这个处理器执行如下的指令:

    1+1
    10+1
    存储以前结果

    下面的图可以帮助我们更好的理解执行这一系列的指令的过程:(灰色的表示没有用到的执行单元,蓝色的表示用到的执行单元):

    正如你所看到的,在每个时钟周期仅仅有33%的执行单元在工作,而且在这个过程中FPU是完全空闲的。也正如Intel提供的资料一样,大部分的IA-32 x86代码仅仅能够利用Pentium 4处理器中的35%的执行单元的能力。然后我们在已经得到结果上再进行一次加法运算,并且把结果进行存储,如下图:

    我们可以看到执行单元的利用率依然为33%。执行单元不能得到充分利用的原因有很多,其中一个原因是FSB/内存总线的限制,不能及时的得到数据,另外的原因就是大部分任务缺乏ILP(Instruction Level Parallelism)机制。目前的Pentium 4处理器的前端总线的带宽已经达到了4.2GB/s,因此这个方面的影响并不大。

    因此我们要提高这种处理器的性能只有通过重新编写应用了ILP机制的程序代码,不过现在的大多数的x86程序并没有按照ILP机制进行编写,所以我们需要通过其它的方法来提高系统的性能。比如,使用双处理器系统,不过这样所带来的成本比较高而且单颗处理器的效率也并没有提高,所以并不是一个理想的解决方案。

    前面我们说过两颗逻辑处理器具有相同的架构,共享一套物理执行电路。从软件或者架构的角度来看,这意味着操作系统和应用程序可以如同在原来的多处理器系统上一样的运行。从微架构的角度来看,这意味着逻辑处理器可以同时运行,更加充分的利用共享执行资源。对于Pentium 4处理器来说这是一项非常重大的改进,实际上在电路上并不需要进行大规模的修改,而且这样改进之后整合核心的面积也不过增加了5%,功耗的增加也大约是这个范围,但是这些改变所带来的性能提升却高的多。每个逻辑核心都有一套完整的架构状态--这就要通过独立的寄存器(通用寄存器、控制寄存器、APIC寄存器和一些机器状态寄存器)来实现。


Pentium 4 3.06内部结构仅仅有很小的改变(红色部分)

    从软件的角度来看,上述的架构既然是两个,软件就认为是两颗处理器。其实由于这两颗逻辑处理器共享的部分非常的多,比如缓存、执行单元、分支预测单元、控制逻辑电路和总线,可以说只是多了保持他们状态的寄存器,使得软件或者操作系统认为这是两个处理器,因此应用了HT技术的处理器的性能不会同两颗物理处理器相当但是绝对可以超越一个处理器的性能。

    现在我们假设我们刚才建立的模型中加入了HT技术,那么执行刚才同样的运算

1+1
10+1
存储以前结果

    结果可以用下面的图例来表示:

    我们可以看到一个线程在执行存取操作的时候(绿色部分),另外一个线程可以进行算术运算(蓝色)。灰色的部分依然表示未使用的部分,而红色表示这个时候仅能进行单线程运算,否则会发生冲突。这样看来,似乎HT技术并没有带来明显的性能提升,不过这里进行的都是加法运算,如果我们同时执行加法运算和浮点运算,我们会发现处理器的效能会提高很多。下面的图将我们前面列举的例子连贯在了一张图中:

    Intel称这种技术在数字照片编辑、视频编码、3D光线追踪以及同时运行的整数应用和浮点应用中可以看到系统性能会具有明显的提升。

   

CopyRight © 2003