超线程技术是什么
超线程技术是在一颗cpu同时执行多个程序而共同分享一颗cpu内的资源,理论上要像两颗cpu一样在同一时间执行两个线程,p4处理器需要多加入一个logicalcpupointer(逻辑处理单元)。因此新一代的p4ht的die的面积比以往的p4增大了5%。而其余部分如alu(整数运算单元)、fpu(浮点运算单元)、l2cache(二级缓存)则保持不变,这些部分是被分享的。
虽然采用超线程技术能够同时执行两个线程,但它并不象两个真正的cpu那样,每个cpu都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗cpu的性能。
超线程与效能提升
一般很多人都会认为,采用超线程技术,就能使得系统效能大幅提升,但是事实真是如此么?不要忘了我们前面说到的超线程技术实现的必要条件,这可是超线程技术发挥应有效能的前提条件。除了操作系统支持之外,还必须要软件的支持。从这点我们就可以看出,就目前的软件现状来说,支持双处理器技术的软件毕竟还在少数。对于大多数软件来说,目前由于设计的原理不同,还并不能从超线程技术上得到直接的好处。因为超线程技术是在线程级别上并行处理命令,按线程动态分配处理器等资源。该技术的核心理念是并行度(parallelism),也就是提高命令执行的并行度、提高每个时钟的效率。这就需要软件在设计上线程化,提高并行处理的能力。而目前pc上的应用程序几乎没有为此作出相应的优化,采用超线程技术并没不能获得效能的大幅提升。
ht技术出现的必然性
提升cpu性能需要
尽管提高cpu的时钟频率和增加缓存容量后的确可以改善cpu性能,但这样的cpu性能提高在技术上存在较大的难度。实际上在应用中基于很多原因,cpu的执行单元都没有被充分使用。如果cpu不能正常读取数据(总线/内存的瓶颈),其执行单元利用率会明显下降。另外就是目前大多数执行线程缺乏ilp(instruction-levelparallelism,多种指令同时执行)支持。这些都造成了目前cpu的性能没有得到全部的发挥。因此,intel则采用另一个思路去提高cpu的性能,让cpu可以同时执行多重线程,就能够让cpu发挥更大效率,即所谓超线程(hyper-threading,简称ht)技术。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了cpu的闲置时间,提高的cpu的运行效率。
采用超线程及时可在同一时间里,应用程序可以使用芯片的不同部分。虽然单线程芯片每秒钟能够处理成千上万条指令,但是在任一时刻只能够对一条指令进行操作。而超线程技术可以使芯片同时进行多线程处理,使芯片性能得到提升。
超线程技术
英特尔p4超线程有两个运行模式,singletaskmode(单任务模式)及multitaskmode(多任务模式),当程序不支持multi-processing(多处理器作业)时,系统会停止其中一个逻辑cpu的运行,把资源集中于单个逻辑cpu中,让单线程程序不会因其中一个逻辑cpu闲置而减低性能,但由于被停止运行的逻辑cpu还是会等待工作,占用一定的资源,因此hyper-threadingcpu运行singletaskmode程序模式时,有可能达不到不带超线程功能的cpu性能,但性能差距不会太大。也就是说,当运行单线程运用软件时,超线程技术甚至会降低系统性能,尤其在多线程操作系统运行单线程软件时容易出现此问题。
需要注意的是,含有超线程技术的cpu需要芯片组、软件支持,才能比较理想的发挥该项技术的优势。操作系统如:microsoftwindowsxp、microsoftwindows2003,linuxkernel2.4.x以后的版本也支持超线程技术。