什么是超线程技术

  超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算.具体讲,就是通过CPU的寄存器构成了两个逻辑处理器,来共享处理器的物理执行单元,并同步进行加、乘、负载等操作.操作系统或者应用软件的多线程可以同时运行于一个HTT处理器上,两个逻辑处理器共享一组处理器执行单元,并行完成加、乘、负载等操作,这样就可以使得运行性能提高,这是因为在同一时间里,应用程序可以使用芯片的不同部分.虽然单线程芯片每秒钟能够处理成千上万条指令,但是在任一时刻只能够对一条指令进行操作.而超线程技术可以使芯片同时进行多线程处理,使芯片性能得到提升。

 

超线程技术的产生原因

  CPU发展到今天,其整体速度虽然越来越快,内部的执行单元却越来越得不到充分的利用.为什么呢?原来NetBurst架构的奔腾4在设计结构上就每次只能处理一个线程,而与此同时我们的电脑需要同步执行的任务却在不断增加,而且花在各线程之间切换等待的时间太多,处理器的应用效率自然也就降低了。

  长期以来,CPU生产商为了提高CPU的性能,通常做法是提高CPU的时钟频率、增加缓存容量、晶体管数量以及指令集来提升其性能.这些方法的副作用就是会增加处理器的功耗,而且往往会受到制造工艺上的限制以及成本过高的制约.CPU要想取得更好的表现,拥有更快的处理速度,就得需要更大的供电量,更强劲的散热条件.2005年,英特尔取消了生产4.0GHz的“Te-jas”单核处理器.因为他们发现,要想达到这个频率,它的驱动功率必须要达到100W.不仅如此,要保证它正常的运行还要有温度的控制,需要更大的散热器.要是在不过多增加硬件投入的情况下,处理器就能够充分利用现有的强劲物理单元同步执行多线程来增强性能,那该多好?因此,Intel采用另一个思路去提高CPU的性能,让CPU可以同时执行多重线程,就能够让CPU发挥更大效率,即超线程技术。

  也正是由于通过不高的代价,就能带来极大的性能提升,超线程技术倍受Intel的青睐,并被予以大力宣传。

超线程技术的工作原理

  超线程技术的工作原理是在每个时钟周期内完成更多工作,一个支持超线程(HT)技术的处理器使当前的操作系统和应用可以看到两个虚拟处理器,该处理器可以同时处理两组任务,充分利用闲置资源,并可在相同时间内完成更多工作。

  在处理多个线程的过程中,多线程处理器内部的每个逻辑处理器均可以单独对中断做出响应,当第一个逻辑处理器跟踪一个软件线程时,第二个逻辑处理器也开始对另外一个软件线程进行跟踪和处理了.另外,为了避免CPU处理资源冲突,负责处理第二个线程的那个逻辑处理器,其使用的是仅是运行第一个线程时被暂时闲置的处理单元.例如:当一个逻辑处理器在执行浮点运算(使用处理器的浮点运算单元)时,另一个逻辑处理器可以执行加法运算(使用处理器的整数运算单元).这样做,无疑大大提高了处理器内部处理单元的利用率和相应的数据、指令的吞吐能力。

超线程技术的优缺点

  1.优点

  (1)投入少,物美价廉.由于这项技术是将一个处理器模拟成两个使用,从而在增加极少投入的情况下就能够提高性能.对于操作系统来说,它又像真的拥有两个物理处理器一样工作,从而让两个程序或一个程序的两个线程,能够在单处理器上同时执行.由于减少了在线程之间的切换,提高了执行单元的利用率,从而使处理器实际使用效果得到极大的改善。

  (2)超线程在Web服务、SQL数据库等很多服务器领域的应用中表现优异.在2001年的时候,IBM就推出了它的第一款双核Power4处理器.IBM当时是用在了它的RISC服务器中,服务器的性能得到了很大的提高.

  (3)在某些支持多线程的软件应用上能够得到3O左右的性能提升,如3Dsmax、Maya、Of—rice、Photoshop等.在今后的软件开发中,支持多线程应用的软件定会蓬勃发展,大多数主流软件都会利用到超线程.因为无论是硬件厂商或软件厂商都会利用新技术来巩固自己的市场地位

  (4)WindowsXP已经针对其作出优化,在运行多个不支持多线程的程序时,性能也可能会获得提高.即便带来损失,也会显得比较轻微.

  (5)主流的桌面芯片组基本都已可以支持超线程,无需额外的花费.

  (6)目前在高端的PentiumEE和一部分Xe-on上也支持超线程技术.在支持超线程的处理器的机器上,支持多CPU的Windows会认出两个CPU.而在支持双内核处理的机器上,Windows也会认出两个CPU,在支持超线程双内核的处理器上,Windows会认出四个CPU。

  2.缺点

  (1)英特尔P4超线程有两个运行模式,Sin-gleTaskMode(单任务模式)及MuhiTaskMode(多任务模式),当程序不支持Multi-Processing(多处理器作业)时,系统会停止其中一个逻辑CPU的运行,把资源集中于单个逻辑CPU中,让单线程程序不会因其中一个逻辑CPU闲置而减低性能,但由于被停止运行的逻辑CPU还是会等待工作,占用一定的资源,因此Hyper-Thread-ingCPU运行SingleTaskMode程序模式时,有可能达不到不带超线程功能的CPU性能。

  (2)现在只有WindowsXP才能支持超线程技术,所以在操作系统上受到很大的限制.虽然微软公司新推出的WindowsVISTA系统也支持该技术,但是VISTA系统对计算机硬件及软件的要求很高,所以安装的成本较大。

  (3)缺乏大量普通应用软件的支持,性能因此得不到充分体现。

参考https://wiki.mbalib.com/wiki/%E8%B6%85%E7%BA%BF%E7%A8%8B%E6%8A%80%E6%9C%AF

超线程技术(Hyper—Threading Technology,HTT)的更多相关文章

  1. 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)

    不过必须XP SP3以上才行.所有API大全: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363804(v=vs.85).a ...

  2. Linux上如何查看物理CPU个数,核数,线程数

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

  3. Intel 英特尔

    英特尔 英特尔 基本资料   公司名称:英特尔(集成电路公司)    外文名称:Intel Corporation(Integrated Electronics Corporation)    总部地 ...

  4. grub paramiter & menu.list

    在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB ...

  5. Hyper-V性能-CPU分配

    为新部署的微软Hyper-V环境中的主机和网络挑选合适的硬件并非易事,更不用说在生产环境中衡量和监控性能这项任务了.在这里,我和大家谈谈服务器的核心CPU与Hyper-V的结合是如何相得益彰的. 我接 ...

  6. VMware虛擬化技術實作問答

    http://www.netadmin.com.tw/article_content.aspx?sn=1202130002&ns=1203280001&jump=3 Q4:啟用VMwa ...

  7. 关于Intel芯片架构的发展史

    ---恢复内容开始---  当你真正的深入去行走在底层的道路上,你就会接触大量的一些貌似懂的概念性名词,比如Intel公司的x86架构,x64等等,又或者是当年的386,486等等,唉,有的时候真的是 ...

  8. Intel processor brand names-Xeon,Core,Pentium,Celeron----Pentium

    http://en.wikipedia.org/wiki/Pentium Pentium From Wikipedia, the free encyclopedia     This article ...

  9. linux内核可以接受的参数 | Linux kernel启动参数 | 通过grub给内核传递参数

    在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB ...

随机推荐

  1. 大数据系列文章-Hadoop基础介绍(一)

    Hadoop项目背景简介 2003-2004年,Google公开了部分GFS个Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年的业余时间,实现了DFS和Mapreduce机 ...

  2. Java使用JsonPatch

    老规矩,概念的东西不再此处体现,baidu即可自行解决,直入主题,动手第一. 导入所需的jar文件 pom.xml     <dependencies>        <depend ...

  3. 七、Linux_端口、进程

    Linux_端口.进程 1.查看所有端口 netstat -nlutp 2.停掉使用端口的进程,根据进程pid kill 1818 kill -9 1818 # 强制杀掉进程 3.根据进程名杀死进程: ...

  4. k8s之pod与Pod控制器

    k8s中最为重要的基础资源,pod,pod controller,service pod controller类型有多种需要向控制器赋值之后使用: kubectl命令使用 kubectk get no ...

  5. 《深入理解 Java 虚拟机》读书笔记:Java 内存区域与内存溢出异常

    前言 最近开始看这本书,记得前段时间拿起这本书的时候,心情是相当沉重的!当时的剧本是这样的-- 内景.家里 - 下午 我(画外):唉,有点无聊啊!(偶然撇过书架)这么多书得看到什么时候啊,要不要拿一本 ...

  6. 初试linux,cp、rm、mv、file、umask等命令粗略使用方法

    ls --color=never 不要依據檔案特性給予顏色顯示: --color=always 顯示顏色 --color=auto 讓系統自行依據設定來判斷是否給予顏色 --full-time 以完整 ...

  7. ACAG 0x02-4 费解的开关

    ACAG 0x02-4 费解的开关 对于这道题,我们不难发现如下性质: 每个位置之多被点击一次: 点击的先后顺序不影响结果: 若确定了第$1$行,则接下来可能的点击方案就只有$1$种.具体原因是:当第 ...

  8. python图像处理库Pillow基本使用方法

    安装pillow pillow的文档页面,documentation of Pillow 生成一个有单一颜色的图像 from PIL import Image, ImageDraw img = Ima ...

  9. python开发笔记-DataFrame的使用

    今天详细做下关于DataFrame的使用,以便以后自己可以翻阅查看 DataFrame的基本特征: 1.是一个表格型数据结构 2.含有一组有序的列 3.大致可看成共享同一个index的Series集合 ...

  10. Spark 基础 —— 创建 DataFrame 的三种方式

    1.自定义 schema(Rdd[Row] => DataSet[Row]) import org.apache.spark.sql.types._ val peopleRDD = spark. ...