什么是超线程
超线程(hyper-threading)其实就是同时多线程(simultaneous multi-theading),是一项允许一个CPU执行多个控制流的技术。
超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,P4处理器需要多加入一个Logical CPU Pointer(逻辑处理单元)。因此新一代的P4 HT的die的面积比以往的P4增大了5%。而其余部分如ALU(整数运算单元)、FPU(浮点运算单元)、L2Cache(二级缓存)则保持不变,这些部分是被分享的。
虽然采用超线程技术能够同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
超线程干嘛用的
首先讲下英特尔的超线程技术,英特尔的超线程技术早在奔腾时期就有了,还在XEON处理器用到过,如果说奔腾D运用的双核心技术是把两颗单核的CPU塞在一起的话,超线程就是把一颗单核的CPU模拟成双核的来用,仅需要复制必要的资源、让两个线程可同时运行;同一时间内处理两个线程的工作,模拟实体双核心、双线程运作,讲的简单一点就是英特尔把一个只有X个核心的CPU,模拟成双倍核心来用
AMD的超线程技术就另外一种东西了,如果说英特尔的超线程技术是一种魔法,AMD的超线程技术就是物理层面上的超线程(CMT)了, AMD将一个核心在物理层面“切”成了双核,所以对不支持优化CMT的软件就捉襟见肘了,因为是“切”开的,不能像英特尔那样那样随时“合体”,想开就开,不想开就不开。所以在运行不支持CMT的软件时,软件会将一个模块中的一个小核心当成正常的大核心来使用,实际只用了“半个”核心,本质上也是模拟出两个核心来使用,这其实就是AMD单核性能比不上英特尔的原因,之后AMD提出的“模块化”,本质上也是一种部分超线程技术,不过只有浮点单元是超线程的