标题：Hyper-Threading
简介
Hyper-Threading，超线程技术
生产商为了提高CPU的性能，通常做法是提高CPU的时钟频率和增加缓存容量。不过目前CPU的频率越来越快，再通过提升CPU频率和增加缓存的方法来提高性能，往往会受到制造工艺上的限制以及成本过高的制约。尽管提高CPU的时钟频率和增加缓存容量后的确可以改善性能，但这样的CPU性能提高在技术上存在较大的难度。针对已采用的超级计数器（Super Scaler）及超级流水线（Super Pipe-line）的提速技术，英特尔指出了存在的问题：尽管付出了耗电量与芯片尺寸（生产成本）都大大增加的代价，但却无法成比例地相应提高微处理器性能。与486和Pentium 4相比，使用新技术后芯片的工作频率及芯片尺寸都扩大了14～15倍，而整数演算性能却只提高了5～6倍左右。实际上在应用中基于很多原因，CPU的执行单元都没有被充分使用。如果CPU不能正常读取数据（总线/内存的瓶颈），其执行单元利用率会明显下降。目前面临的技术性课题是与运算器的指令执行速度相比，对缓存及主存的访问时间为100个时钟周期（以指令数计算相当于数百条指令）以上，的确太慢。英特尔正试图使用Hyper-Threading技术解决这一问题，提高运行速度。另外就是大多数执行线程缺乏ILP（Instruction Level Parallelism，多种指令同时执行）支持。这些都造成了目前CPU的性能没有得到全部的发挥。
因此，Intel则采用另一个思路去提高CPU的性能，让CPU可以同时执行多重线程，就能够让CPU发挥更大效率，即所谓“超线程（Hyper-Threading，简称“HT”）”技术。超线程技术就是利用特殊的硬件指令，把两个逻辑内核模拟成两个物理芯片，让单个处理器都能使用线程级并行计算，进而兼容多线程操作系统和软件，减少了CPU的闲置时间，提高的CPU的运行效率。目前的多线程技术一般采用多个微理器即多处理器结构，线程与处理器形成一一对应关系。而英特尔Hyper-Threading技术的特点是（1）物理上用一个处理器处理多个线程、（2）多线程的分配采用根据计数器的空闲状态进行线程处理的SMT（simultaneous multi-threading）方式。
最早出现在2002年的Pentium4上，它是利用特殊的硬件指令，把两个逻辑内核模拟成两个物理芯片，让单个处理器都能使用线程级并行计算，进而兼容多线程操作系统和软件，减少了CPU的闲置时间，提高CPU的运行效率。基于Nehalem架构的Core i7再次引入超线程技术，使四核的Corei7可同时处理八个线程操作，大幅增强其多线程性能。
超线程(Hyper-Threading)技术是Intel的创新设计，藉由在一颗实体处理器中放入两个逻辑处理单元，让多线程软件可在系统平台上平行处理多项任务，并提升处理器的执行资源的使用率。使用这项技术，处理器的资源利用率平均可提升40%，大大增加处理器的可用性能。超线程是同时多线程技术(SMT，Simultaneous Multi-Threading)的一种，这种技术可经由复制处理器上的结构状态，让同一个处理器上的多个线程同步执行并共享处理器的执行资源。对支持多处理器功能的应用程序而言，超线程处理器被视为两个分离的逻辑处理器。应用程序不须修正就可使用这两个逻辑处理器。同时，每个逻辑处理器都可独立响应中断。第一个逻辑处理器可追踪一个软件线程，而第二个逻辑处理器则可同时追踪另一个软件线程。由于两个线程共同使用同样的执行资源，因此不会产生一个线程执行的同时，另一个线程闲置的状况。该方式将大大提升每个实体处理器中的执行资源使用率。使用这项技术后，每个实体处理器可成为两个逻辑处理器，让多线程的应用程序能在每个实体处理器上平行处理线程层级的工作，提升了系统效能。随着应用程序针对平行处理技术的逐步优化，超线程技术为新功能及用户不断增长的需求提供了更大的改善空间。[1]
Hyper-Threading是Intel微处理器采用的一种技术，这种技术能够让微处理器在操作系统和应用程序中的性能表现的类似于两个处理器一样。这是Inte的IA-32处理器的特性。利用超线程技术，微处理器可以同时执行操作系统的两个指令或线程。这样可以在同一时钟周期内实现多个操作。对于操作系统而言，超线程处理器的性能表现得如同两个独立的处理器一样。由于大部分的操作系统(Windows以及Linux)都支持多处理器，因此操作系统采用超线程处理器时可以实现性能加倍。
[2]
优点
超线程技术只需要消耗很小的核心面积代价，就可以在多任务的情况下提供显著的性能提升，比起完全再添加一个物理核心来说要划算得多。比起Pentium 4的超线程技术，Corei7的优势是有更大的缓存和更大的内存带宽，这样就更能够有效的发挥多线程的作用。按照的说法，Nehalem的HT可以在增加很少能耗的情况下，让性能提升20-30%。
缺点
超线程技术的缺点有以下几点：
(1)英特尔P4超线程有两个运行模式，SingleTaskMode(单任务模式)及MultiTaskMode(多任务模式)，当程序不支持Multi-Processing(多处理器作业)时，系统会停止其中一个逻辑CPU的运行，把资源集中于单个逻辑CPU 中，让单线程程序不会因其中一个逻辑CPU 闲置而减低性能，但由于被停止运行的逻辑CPU 还是会等待工作，占用一定的资源，因此Hyper-ThreadingCPU运行SingleTaskMode程序模式时，有可能达不到不带超线程功能的CPU性能．
(2)现在自从Windows XP以后的Windows都支持超线程技术。Linux和MacOSX也完美的支持超线程技术，并且比Windows的CPU利用率更高。
(3)缺乏大量普通应用软件的支持，性能因此得不到充分体现．
定位
超线程技术虽好，但Intel为划分CPU的性能和定位，研发代号同为Lynnfield的Core i7800系列/i5700系列，规定只有Core i7800系列支持该技术，Core i5700系列与它无缘。
技术由来
CPU生产商为了提高CPU的性能，通常做法是提高CPU的时钟频率和增加缓存容量。不过目前CPU的频率越来越快，如果再通过提升CPU频率和增加缓存的方法来提高性能，往往会受到制造工艺上的限制以及成本过高的制约。解释尽管提高CPU的时钟频率和增加缓存容量后的确可以改善性能，但这样的CPU性能提高在技术上存在较大的难度。实际上在应用中基于很多原因，CPU的执行单元都没有被充分使用。如果CPU不能正常读取数据（总线/内存的瓶颈），其执行单元利用率会明显下降。另外就是目前大多数执行线程缺乏ILP（Instruction-LevelParallelism，多种指令同时执行）支持。这些都造成了目前CPU的性能没有得到全部的发挥。因此，Intel则采用另一个思路去提高CPU的性能，让CPU可以同时执行多重线程，就能够让CPU发挥更大效率，即所谓“超线程（Hyper-Threading，简称“HT”）”技术。超线程技术就是利用特殊的硬件指令，把两个逻辑内核模拟成两个物理芯片，让单个处理器都能使用线程级并行计算，进而兼容多线程操作系统和软件，减少了CPU的闲置时间，提高的CPU的运行效率。运行超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源，理论上要像两颗CPU一样在同一时间执行两个线程，P4处理器需要多加入一个Logical CPU Pointer（逻辑处理单元）。因此新一代的P4HT的核心的面积比以往的P4增大了5%。而其余部分如ALU（整数运算单元）、FPU（浮点运算单元）、L2Cache（二级缓存）则保持不变，这些部分是被分享的。
虽然采用超线程技术能同时执行两个线程，但它并不象两个真正的CPU那样，每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时，其中一个要暂时停止，并让出资源，直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。优势采用超线程及时可在同一时间里，应用程序可以使用芯片的不同部分。虽然单线程芯片每秒钟能够处理成千上万条指令，但是在任一时刻只能够对一条指令进行操作。而超线程技术可以使芯片同时进行多线程处理，使芯片性能得到提升。
芯片
Intel芯片组：
845、845D和845GL是不支持支持超线程技术的；845E芯片组自身是支持超线程技术的，但许多主板都需要升级BIOS才能支持；在845E之后推出的所有芯片组都支持支持超线程技术，例如845PE/GE/GV以及所有的865/875系列以及915/925系列芯片组都支持超线程技术。
VIA芯片组：
P4X266、P4X266A、P4M266、P4X266E和P4X333是不支持支持超线程技术的，在P4X400之后推出的所有芯片组都支持支持超线程技术，例如P4X400、P4X533、PT800、PT880、PM800和PM880都支持超线程技术。
SIS芯片组：
SIS645、SIS645DX、SIS650、SIS651和早期SIS648是不支持支持超线程技术的；后期的SIS648、SIS655、SIS648FX、SIS661FX、SIS655FX、SIS655TX、SIS649和SIS656则都支持超线程技术。
ULI芯片组：
M1683和M1685都支持超线程技术。
ATI芯片组：
ATI在Intel平台所推出的所有芯片组都支持超线程技术，包括Radeon 9100 IGP、Radeon 9100 Pro IGP和RX330。
nVidia芯片组：
nForce5，6，7系列芯片组都支持超线程技术。
条件
(1)需要CPU支持 目前正式支持超线程技术的CPU有Pentium4 3.06GHz 、2.40C、2.60C、2.80C 、3.0GHz、3.2GHz以及Prescott处理器，还有部分型号的Xeon。
(2)需要主板芯片组支持
正式支持超线程技术的主板芯片组的主要型号包括Intel的875P，E7205，850E，865PE/G/P，845PE/GE/GV，845G(B-stepping)，845E。875P，E7205，865PE/G/P，845PE/GE/GV芯片组均可正常支持超线程技术的使用，而早前的845E以及850E芯片组只要升级BIOS就可以解决支持的问题。SIS方面有SiS645DX(B版)、SiS648(B版)、SIS655、SIS658、SIS648FX。VIA方面有P4X400A、P4X600、P4X800。
(3)需要主板BIOS支持
主板厂商必须在BIOS中支持超线程才行。
(4)需要操作系统支持

区别
利用超线程(Hyper-Threading)技术可以让单物理内核的处理器通过模拟方式实现在对称处理模式下双处理器运行的效果。但是使用超线程技术的两个逻辑处理器并没有独立的执行单元、整数单元、寄存器甚至缓存等资源。它们的运行过程中仍需要共用执行单元、缓存和系统总线接口，在执行多线程时两个逻辑处理器均是交替的工作，如果两个线程都同时需要某一个资源时，其中一个要暂停并要让出资源，要待该资源闲置才能继续。
而双核处理器中每个核心拥有独立的指令集、执行单元，可以同时执行多项任务，能让处理器资源真正实现并行处理模式，其效率和性能提升要比超线程技术高得多。
例如:在执行某一运算任务时，在单线程情况下需要6个时钟周期，但双线程下就能在3个时钟周期内完成。如果使用超线程技术的单核处理器在某周期中出现重叠的情况就会导致某个线程出现延迟，那么整个运算周期可能会增加到4个。[3]
Hyper-Threading和处理器温度
在测试中使用了最新的Intel 奔腾4 3.06GHz处理器，这款处理器支持Hyper-Threading技术。从一个不常用的角度来谈谈这项技术：该技术对CPU发热量的影响。 一方面，由于该技术的运用，核心的效率提高了（3.06GHz处理器比2.8GHz的提高了5%以上）。这在理论上就带来了更大的发热量。另一方面，一个物理处理器被系统认做了两个逻辑处理器，其负载就会更有效率。 通过主板BIOS在打开和关闭HT技术的情况下进行了两组测试，室温20C，风扇转速调至最高。通过运行SiSoft Sandra 2003和UT来“加热”处理器。 在SiSoft Sandra 2003运行之前，先运行了CPU Burn软件（不支持HT技术）10分钟，并记录下处理器温度。随之运行了SiSoft Sandra 2003（支持HT）中的Burn-in测试项57次，记录下CPU温度。 最后运行了UT2003十分钟，记录下CPU温度。（温度的获得均通过华硕的PC Probe程序） 测试的结果如下： 
  在待机模式下处理器的温度在激活HT技术后较低，在不支持HT技术的CPU Burn中也是如此。 不过在对HT技术做过优化的软件中，软件会更有效率的使用CPU管线，从而增加系统发热量。同时由于在UT2003中的测试结果，决定在正式测试中关闭HT技术，以增加温度提高幅度。 
检测程序
Intel英特尔Hyper-Threading(超线程技术)检测程序1.7简体中文版For WinXP/WinXP-64（2006年5月13日发布）Hyper-Threading Technology(超线程技术)是Intel的一项创新设计，其设计原理是在一颗处理器中放入二个逻辑处理单元，让多线程软件可在系统平台上平行处理多项任务，并提升处理器执行资源的使用率。使用这项技术，处理器的资源利用率平均可提升百分之40，大大增加处理的传输量。Intel发布的这款名为Hyper-Threading Technology Test Utility的测试工具，它可以测试你的CPU，芯片组、以及bios是否支持超线程技术。