【超线程用处大吗】;‘;

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【超线程用处大吗】;‘;相关的知识,希望对你有一定的参考价值。

【超线程用处大吗】

我一个朋友给我一个 CPU是 P4 2.40G的 超线程的

我家里也有一个 P4 .2.40G 但不是超线程的 区别大吗?

超线程的作用明显吗?

“超线程”(HyperthreadingTechnology)技术是通过采用特殊的硬件指令,可以把两个逻辑内核模拟成两个物理超线程芯片,在单处理器中实现线程级的并行计算,同时大幅提高运行效能,从而实现在单处理器上模拟双处理器的效能。
如果我们CPU将一件工作,分成10份,由10个人来分别完成,只有10个人全完成了,这个工作才算全完成,可以理解为10跳流水线共同完成完这项工作的所有部分,CPU才可以进行下一件工作。
一件工作分得越细致,需要的人越多,流水线就越长,效率(CPU频率)越高,就像工厂里的生产线一样。然而可能分给每个人(每条流水线)的任务不尽相同,有的先完成了,有的后完成了,先完成的必须等待后完成的做完了才可以进行CPU下一工作。
这样就造成了空闲。流水线做的越长(工作分得越细致、共同完成这个工作的人越多)这种情况越严重。因此超线程技术就诞生了,超线程技术实际上是虚拟一个CPU,让已经完成自己任务的,进入等待状态的流水线(那个分配的任务比较轻的,干活比较快的人),提前进行下一任务。理论上这样可以提高效率。
参考技术A 一、线程的定义

程序是一组编译代码,可以执行相关的数据计算与操作,这些代码由一条条的指令组成,每一个代码组就是一条线程。在电脑中,无论做任何操作,都需要动用到线程,即使按一按键盘,电脑响应输入信号,也有相关的指令在运行。

现有主流电脑使用x86架构,每次只能执行一条线程,即单线程系统。单芯片计算环境中,在执行指令的时候,CPU先找出相应指令所在的内存位置,执行下一条指令,再转换到另一个位置,在同一时间内CPU只能对应一个指令。线程可以中断,并把中间结果暂存在另一个特殊位置(堆栈),不同的线程可以交叉运行,实现多任务,但每次运行的线程仍然仅有一条,千万不要把多任务和多线程混淆了。

既然一个CPU是多线程,那么两个CPU自然就可以双线程啦,如此类推,就会出现四路、八路系统。多CPU系统有利也有弊,利处是整体性能提升,弊处也有很多:

一,价格昂贵,无论是CPU还是主板,都必须是特殊的产品,很难用普通销售的单CPU组成多处理器系统,必须购买专用的MP类型芯片;

二、资源共享,多个处理器抢占总线带宽,普通的主板带宽无法应付,必须用带宽增加的主板。某些产品甚至共享CPU的总线,对处理器的速度造成很大影响;

三、支持较少,一般的操作系统和应用软件按照单线程来设计,多线程系统需要专门的版本。总总限制,压抑了多处理器的速度提升幅度,双处理器系统的性能并不能达到单处理器的两倍,通常只有33%的性能增益。很明显,单物理CPU的工作效率低下,在多处理器中表现更明显。为了提高多处理器的性能,必须先从单处理器做起。

超线程是一种特殊的多线程技术,它可以充分利用CPU的效率,发挥单个物理CPU的潜力。它不是代替多处理器,而是为了让多处理器的实力发挥得更加完美。

二、CPU工作效率 CPU由许多部分组成,新型芯片通常有多个执行单元,这些执行单元无法同时工作,大多数时间有一半执行单元是空闲状态。Office等商业软件使用整数运算和读写/存储单元,不涉及浮点运算单元,3D渲染软件使用浮点运算单元,不涉及整数运算单元,很明显,此种设计做成很大的浪费。如奔腾四有7个执行单元,每个时钟周期内,约有两个执行单元工作,它们共执行2次操作,那么,其它五个单元完全没有用到。若是认为奔腾四较复杂,可以换成一个简单的例子。假设一个虚拟CPU,有整数运算、浮点运算、读写/存储三个单元,每个时钟周期进行一次操作,3个单元都接到各自的任务。指令如下:

1+1

10+1 难怪英特尔说IA-32的x86指令,无法发挥奔腾四的威力,效率只有35%。三个执行单元的CPU已经如此,更不要提7个执行单元的奔腾四,其中有多少运算时间被浪费了。

为了解决这个问题,高端电脑采用了ILP(Instruction Level Parallelism,指令级平行运算)技术,可以同时执行多条指令,提高单CPU的效率。然而,x86架构限于设计的复杂性,无法加入如此高难度的算法,只好从硬件上解决问题,采用TLP(Thread-Level Parallelism,线程级并行),让多个CPU来执行不同的线程。虽然软件花费较ILP为少,硬件花费又增加了,双方扯平,人们必须重新想办法。

三、超线程 软件不行硬件补,是业界发展的规律,反之亦然。一般情况下,厂商采用增加工作频率和缓存容量的方法来提升速度,这是治标不治本的方法,CPU只提高了全面速度,其内在潜力依然未能完全发挥。既然CPU的执行单元没有被充分利用,就针对这一方面下手,暂时不理会如何突破总线和内存的带宽,加入两个逻辑处理单元,同时操纵CPU的全部资源,直接提高CPU内核的工作效率。在很早之前,Alpha已经引入了这种概念,称为SMT(Simultaneous multithreading,同步多线程),利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,从而兼容多线程操作系统和软件。

英特尔的HTT(Hyper-Threading Technology,超级线程技术)研发代码为Jackson,是SMT的改良型。软件的多个线程可以同时运行于一个处理器上,复制每个处理器上的体系结构状态(即逻辑处理器),共享一组处理器执行资源。体系结构状态指跟踪程序或线程的流动,HTT芯片有两个体系结构状态,执行资源是处理器上完成加、乘、负载等操作的单元,HTT芯片与传统CPU相同,只有一个执行资源。

在旧式结构中,执行资源的控制是由一个体系结构状态来完成,内存的速度比CPU慢,不能及时发送信息给CPU,CPU有时难免要处于等待状态,浪费了执行资源的工作时间。如果有两个体系结构状态,当第一个体系结构状态在等待数据的时候,由第二个体系结构状态来进行其它工作,充分利用执行资源。在没有增加执行单元数目的前提下,也能提高工作效率。 虽然逻辑处理器有独立的寄存器,可以同时进行获取、解码操作,不过,从实用角度来说,这种工作太复杂了,与其同时获取、解码两个线程的指令,不如轮流获取、解码两个线程的指令,再同时执行,那么,每个执行单元都能充分发挥其功效,整体效率将有所提升,实际值达到30%之多,真是项激动人心的技术。

如果把两个HTT芯片再组成双处理器系统,性能同样会得到增加。操作系统把它们认为是4个逻辑处理器,为其分配不同的线程,单个物理CPU的利用率提升,作用于双处理器上,等于性能增益再次加倍。

现有的奔腾四、至强都拥有HTT技术,只须在主板Bios中打开即可,当然,只有工作站和服务器主板拥有这种能力,台式机的主板现时无法做到。这并非英特尔为了商业销售而做出的策略,而是超线程本身的问题,它只适合不同操作的并行运算,相同操作的并行运算增益很少。回到上面的例子,现在两个线程争用资源,效率的提升会极有限,尽管不至于性能倒退,也是够悲惨的啦。因此,相同类型指令的并行运算在HTT中行不通,只有不同类型指令的交叉执行,效率才有大幅度提升。我们必须清楚地知道,HTT让每个处理器的资源利用率都得到大幅度提高,而提高程度要视每个应用使用线程的方式和处理器内的资源而定。

台式机的软件通常是多种重复工作,如文字处理和媒体播放,都是一系列类似指令组成的。由于超线程中存在线程冲突,有10%的性能增益已经算不错了。至于工作站系统,3D实时渲染和媒体处理,同样使用类似指令,性能增益约为15%。只有多种操作同时执行的服务器芯片,不同的线程可以并行使用不同资源,比如:给一个逻辑处理器上安排整数计算密集型任务, 而在另一个服务器上运行浮点计算,可以减少冲突现象,大大提高性能。

为了充分发挥超线程的用处,不浪费奔腾四里面的HTT内核,可以利用双重ALU(Arithmetic Logic Unit,算术逻辑单元)。奔腾四里面就有两个运算器,分别执行指令,就能实现双线程。不过,采用两个ALU,成本又会增加,现在英特尔还不打算用这种方法。同时执行两个类似操作的线程,操作包括加、读取和存储,蓝色是线程1的指令,绿色是线程2的指令,红色是两个线程使用同一单元时造成的冲突,灰色是空转周期。
参考技术B 在pentium 4 上,多任务处理性能可以提高10%左右~~

如果线程比较少的程序性能的提高也就1%左右~~~

另外还有一点,pentium 4 2。4g ht应该是2004~2005年推出的版本(核心不知道是什么),而你的不带ht的pentium 2.4貌似是2002的北木核心,是不是核心上也有一点区别把,这个要注意,可能不仅仅是ht的问题

以上是关于【超线程用处大吗】;‘;的主要内容,如果未能解决你的问题,请参考以下文章

超线程

超线程编程语言

SSE 和超线程

图说超线程技术(Hyper-Threading Technology)

技嘉z390超线程在哪里打开

如何决定是不是使用超线程? [关闭]