超线程(Hyper-Threading)

运行方式

      每一个单位时间内,一个CPU只能处理一个线程操做系统:thread),以这样的单位进行,若是想要在一单位时间内处理超过一个线程是不可能的,除非是有两个CPU的实体单元。双核心技术是将两个同样的CPU放置于一个封装内(直接将两个CPU作成一个芯片)。而英特尔的Hyper-Threading技术是在CPU内部仅复制必要的资源、让CPU模拟成两个线程;也就是一个实体核心,两个逻辑线程,在一单位时间内处理两个线程的工做,模拟实体双核心、双线程运做。多线程

      Intel自Pentium开始引入超标量乱序运行、大量的暂存器寄存器重命名、多指令解码器预测运行等特性;这些特性的原理是让CPU拥有大量资源,并能够预先运行及平行运行指令,以增长指令运行效率,但是在现实中这些资源常常闲置;为了有效利用这些资源,就干脆再增长一些资源来运行第二个线程,让这些闲置资源可运行另外一个线程,并且CPU只要增长少数资源就能够模拟成两个线程运做。架构

Hyper-Threading概述

      超线程技术,Hyper-Threading是一种多线程并行技术——即同步多执行线程(SMT,simultaneous Multi-threading)。经过在一枚cpu上整合两个逻辑处理器(注:是处理器而不是运算单元)单元,使得具备这种技术的新型CPU具备能同时执行多个线程的能力。性能

      Hyper-Threading的原理很简单,就是把一颗CPU当成两颗来用,将一颗具Hyper-Threading功能的“实体”处理器变成两个“逻辑”处理器,而逻辑处理器对于操做系统来讲跟实体处理器并没什么两样,所以操做系统会把工做线程分派给这“两颗”处理器去执行,让多种应用程序或单一应用程序的多个执行绪(thread),可以同时在同一颗处理器上执行;不过两个逻辑处理器是共享这颗CPU的全部执行资源。优化

      Hyper-Threading作法是复制一颗处理器的架构指挥中心(architectural state)变成两个,使得操做系统认为是在与两颗处理器沟通,但这两个架构指挥中心共享该处理器的工做资源(execution resources)。架构指挥中心追踪每一个程序或执行绪的执行情况;工做资源指的则是“处理器用来进行加、乘、加载等工做的单元(execution unit)”。如此一来,操做系统把工做线程安排好之后,就分派给这两个逻辑上的处理器执行,而这颗CPU的每一个执行单元等于在一样的时间内要服务两个“指令处理中心”,固然它的效率就高多了,操做系统就把一颗实体的处理器认定为两个逻辑处理器做工做指派,固然总体工做效能就比没有具有Hyper-Threading 的处理器高出许多,性价比天然高出许多。spa

顾虑

      因为处理器实际上只有一个实体核心,可以提高的性能约为5~15%左右,且万一发生资源互抢的情形时,总体性能反而会降低。这亦是AMD不提供虚拟双核心处理器的理由。操作系统

      要令到电脑支持超线程技术,必需要软件和硬件的配合。线程

  • 硬件方面:处理器自己要支持超线程,芯片组亦要支持相关处理器。
  • 软件方面:要充分发挥超线程的性能,用户要使用支持超线程技术的操做系统(除了微软的Windows 2000以后的版本外,Linux kernel 2.4.x亦开始支持该技术)。不是全部程序均可以发挥超线程,一般优化了多处理器的程序均可以支持到。
相关文章
相关标签/搜索