什么是超线程技术?为什么电脑CPU核数是线程数的一半?

 背景:生产商为了提高CPU的性能,通常做法是提高CPU的时钟频率和增加缓存容量。不过CPU的频率越来越快,再通过提升CPU频率和增加缓存的方法来提高性能,往往会受到制造工艺上的限制以及成本过高的制约。

针对已采用的超级计数器(SuperScaler)及超级流水线(Super Pipe-line)的提速技术,英特尔指出了存在的问题:尽管付出了耗电量与芯片尺寸(生产成本)都大大增加的代价,但却无法成比例地相应提高微处理器性能。

如图:

  cpu提高频率与增加缓存的方法对于CPU系统性能的提升来说效益不佳(性价比不高),因为CPU对于内存及总线数据的读取速度远远比不上CPU执行单元计算的速度. 于是超线程技术应运而生.

   Intel则采用另一个思路去提高CPU的性能,让CPU可以同时执行多重线程,就能够让CPU发挥更大效率,即所谓“超线程(Hyper-Threading,简称“HT”)”技术。

超线程技术就是利用特殊的硬件指令,把一个物理内核模拟成两个逻辑内核,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。

多线程技术一般采用多个微处理器即多处理器结构,线程与处理器形成一一对应关系。

而英特尔Hyper-Threading技术的特点是;

(1)物理上用一个处理器处理多个线程;

(2)多线程的分配采用根据计数器的空闲状态进行线程处理的SMT(simultaneous multi-threading-同时多线程)方式。


 超线程(Hyper-Threading)技术是Intel的创新设计,藉由在一颗实体处理器中放入两个逻辑处理单元,让多线程软件可在系统平台上平行处理多项任务,并提升处理器的执行资源的使用率。使用这项技术,处理器的资源利用率平均可提升40%,大大增加处理器的可用性能。

    超线程是同时多线程技术(SMT,Simultaneous Multi-Threading)的一种,这种技术可经由复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源。

对支持多处理器功能的应用程序而言,超线程处理器被视为两个分离的逻辑处理器。应用程序不须修正就可使用这两个逻辑处理器。同时,每个逻辑处理器都可独立响应中断。

第一个逻辑处理器可追踪一个软件线程,而第二个逻辑处理器则可同时追踪另一个软件线程。由于两个线程共同使用同样的执行资源,因此不会产生一个线程执行的同时,另一个线程闲置的状况。该方式将大大提升每个实体处理器中的执行资源使用率。使用这项技术后,每个实体处理器可成为两个逻辑处理器,让多线程的应用程序能在每个实体处理器上平行处理线程层级的工作,提升了系统效能。随着应用程序针对平行处理技术的逐步优化,超线程技术为新功能及用户不断增长的需求提供了更大的改善空间。

Hyper-Threading是Intel微处理器采用的一种技术,这种技术能够让微处理器在操作系统和应用程序中的性能表现的类似于两个处理器一样。这是Inte的IA-32处理器的特性。利用超线程技术,微处理器可以同时执行操作系统的两个指令或线程。这样可以在同一时钟周期内实现多个操作。

   对于操作系统而言,超线程处理器的性能表现得如同两个独立的处理器一样。由于大部分的操作系统(Windows以及Linux)都支持多处理器,因此操作系统采用超线程处理器时可以实现性能加倍.

Case:电脑配置案例分析

如下我们可以看到,此台电脑用了超线程技术,线程和逻辑处理器核数的数量是硬件核数的2倍. 这对电脑来说是十分重要的指标,对于电脑需要同时处理多个任务的话.

      缺点:遇到不支持超线程的应用时,可能性能不如不支持超线程的CPU,但是由于操作系统基本都支持超线程技术,所以CPU总体效率还是比较高,但是对于单个单线程的运行性能就可能大大降低了.(英特尔P4超线程有两个运行模式,SingleTaskMode(单任务模式)及MultiTaskMode(多任务模式),当程序不支持Multi-Processing(多处理器作业)时,系统会停止其中一个逻辑CPU的运行,把资源集中于单个逻辑CPU 中,让单线程程序不会因其中一个逻辑CPU 闲置而减低性能,但由于被停止运行的逻辑CPU 还是会等待工作,占用一定的资源,因此Hyper-ThreadingCPU运行SingleTaskMode程序模式时,有可能达不到不带超线程功能的CPU性能.)

运行:

超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,P4处理器需要多加入一个Logical CPU Pointer(逻辑处理单元)。因此新一代的P4HT的核心的面积比以往的P4增大了5%。而其余部分如ALU(整数运算单元)、FPU(浮点运算单元)、L2Cache(二级缓存)则保持不变,这些部分是被分享的。

虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。

优势

采用超线程,可在同一时间里,应用程序可以使用芯片的不同部分。虽然单线程芯片每秒钟能够处理成千上万条指令,但是在任一时刻只能够对一条指令进行操作。而超线程技术可以使芯片同时进行多线程处理,使芯片性能得到提升。

你可能感兴趣的:(什么是超线程技术?为什么电脑CPU核数是线程数的一半?)