1/3
2/3
3/3
解读超线程(之一):想说爱你不容易
天雨未晞
2019年04月11日 14:43

  被砍掉超线程的i7还是原来的那个i7吗

  2018年第3季度,英特尔发布了第九代酷睿处理器,首批发布的有三款处理器,分别是酷睿i5 9600K,酷睿i7 9700K,酷睿i9 9900K。和第八代酷睿处理器一样是LGA1151接口,Coffee Lake架构,14nm制造工艺,内置UHD 630超核芯显卡。

   酷睿i5 9600K和第八代酷睿i5处理器规格相同,依然是6核心6线程,主频3.7GHz,睿频4.6GHz,而上一代的酷睿i5 8600K主频主频3.6GHz,睿频4.3GHz。除了主频和睿频均有小幅提高外,第九代酷睿i5和第八代酷睿i5没有任何区别。

     酷睿i7 9700K和第八代酷睿i7有很大的区别,最大的区别是9700K为8核心8线程,不再支持超线程技术。上一代旗舰处理器酷睿i7 8700K和酷睿i7 8086K均为6核心12线程,而酷睿i7 9700K是首款不支持超线程技术的桌面级酷睿i7处理器。

酷睿i7 9700K不再支持超线程技术

   高端处理器要超线程就需要买价格不菲的酷睿i9 9900K。这是酷睿i9首次出现在通用平台而非发烧平台,大有取代酷睿i7在通用平台旗舰处理器地位的趋势。酷睿i9 9900K为8核心16线程,主频3.6GHz,最大睿频5.0GHz,16MB三级缓存,热设计功耗TDOP95Watt,目前是第九代处理器家族中唯一支持超线程技术的处理器。

支持超线程的五边形正十二面体透明玻璃独特包装的酷睿i9 9900K

   在第八代酷睿处理器出现以前,大多数酷睿i7 处理器一直是4核心8线程,而第八代酷睿i7是6核心12线程,被砍掉了超线程的酷睿i7还是我们熟悉的高端处理器吗,换言之我们应该考虑没有超线程的酷睿i7吗?

QUESTION 1:超线程技术的历史是怎样的?

    毫无疑问的是,超线程技术(Hyper-Threading Technology,HT)最早被英特尔2002年应用在某些Xeon至强服务器处理器上,这些处理器都是单个物理核心(core),在超线程出现以前都只有一个线程(thread),而在超线程技术应用以后,能够在物理核心不变的情况下获得两个线程。这在双核心CPU出现以前,是影响非常深远的技术(第一颗物理双核心处理器是2005年推出的大名鼎鼎的奔腾D处理器,有两颗奔腾4核心,通过FSB总线连接北桥,两颗核心通过北桥交换数据,奔腾D也就是著名的“胶水双核”,CPU的两颗核心在同一块PCB板的两端封装起来,并不是原生双核)。

     随后,超线程技术被下放到了个人PC处理器上,2002年,英特尔的奔腾4处理器的某些型号也有超线程(例如奔腾4 3.06GHz,Northwood核心,130nm制程,Socket478 接口,512KB二级缓存,热设计功耗TDP130W)。

英特尔奔腾4处理器,3.06GHz版本支持HT技术,

 

《电脑》杂志在2002年对奔腾4 3.06GHz HT介绍

     

由介绍可以知道,要想使用这颗HT处理器是有不少困难的

       2005年,LGA775平台又出现了一款至尊奔腾EE 840(Pentium Extreme Edition 840,双核心,主频3.2GHz,90nm制程,支持HT,即有4个线程)。由于Prescott架构是典型的高频低能,功耗和发热非常大,所以这款处理器并没有引起非常大的反响。

至尊奔腾EE840,双核处理器,支持HT技术,即支持四个线程,这在当时单核单线程还是主流的时候是非常了不起的

     2007年,在英特尔推出著名的“酷睿”架构处理器时,超线程技术被暂时放弃了,Core2Dual和Core2Quad处理器都没有超线程。但是凭借着优良的性能功耗比,酷睿2依然在处理器市场上有着不错的表现。   

         与此同时AMD也推出了K7架构速龙XP和以后的K8架构速龙64 FX处理器(也就是AMD所谓的“原生双核”处理器)仍然与奔腾4和两颗奔腾4封装的奔腾D争夺市场,例如当时顶级的Athlon 64 FX。但是随后K10和K10.5,包括速龙双核和速龙三核和羿龙四核和六核,都因为性能比不上同时期的酷睿处理器,渐渐在与英特尔的竞争中处于劣势,丧失了大部分市场(AMD在此后还走过不少弯路,在移动端处理器市场几乎一蹶不振,后果至今还没有完全改善,在桌面处理器领域只能依靠低端市场,最低时市场占比不足20%,比较著名的就是不太成功的加速处理器APU,和失败的“模块化"打桩机、推土机等FX处理器,间接造成了英特尔的不思进取)。

 

AMD在2001年底第一次推出市场的Athlon XP处理器K7架构,虽然不支持HT与支持 HT的奔腾4相比没有很大的劣势(速龙是AMD当时最高端的处理器)

AMD在2005年上市的速龙64 FX 60双核处理器,与当时英特尔的奔腾D相比毫不示弱

      虽然在酷睿2处理器HT技术都跳票了,但是在2008年英特尔Nehalem架构,又采用了SMT(Simultanneous Multi-Threading,同步多线程)技术。Nehalem架构的酷睿i7和至强处理器都是四核心八线程,奠定了以后旗舰酷睿i7和Xeon E3处理器的规格。在第八代酷睿处理器出现以前,从第一代Nehalem架构核心Bloomfield(45nm,2008年),第二代Nehalem架构核心Westmere(32nm,2009年)到SandyBridge(SNB,32nm制程,2010年),IvyBridge(IVB,22nm制程,2012年),Haswell(22nm制程,2013年),HaswellRefresh(Broadwell为第一次14nm制,即第五代酷睿处理器大多是笔记本处理器,只有HaswellRefresh出来顶替,22nm制程,2014年),SkyLake(14nm制程2015年),KabyLake(14nm制程,2016年), KabyLake Refresh(2017是笔记本处理器)都有酷睿i7处理器版本,除了顶级HEDT处理器以外:规格都是四核心,八线程,8M三级缓存。

基于Nehalem架构的第一代酷睿处理器酷睿i7 920,LGA1366接口,采用QPI总线,需要X58芯片组支持,Bloomfield核心,四核心八线程,45纳米制造工艺,主频2.66GHz,热设计功耗TDP130W,8M三级缓存

     很多人以为超线程技术(HT)就是一颗核心对应两个线程,或者线程数一定就是核心数的两倍,其实这是不对的。超线程技术一般是一颗核心对应两个线程,绝大多数应用超线程技术的CPU的确是线程数是核心数的两倍,在一些情况下,可以实现一颗核心有多个线程,例如一颗核心三个线程,甚至四线程甚至八线程。

目前世界上最快的超级计算机“顶点”Summit和第二快的超级计算机Sierra使用的POWER9处理器采用模块化设计,每个核心支持4个线程或8个线程

使用IBM POWER9处理器和NVIDIA TESLA V100加速器的美国橡树岭超级计算机“顶点”Summit

QUESTION 2:超线程的原理是什么?

     ( 注:关于这个问题每个人都有自己的理解,如果一定要一个标准答案的话,那就得找到发明超线程技术的英特尔工程师。由于我国在IC芯片的设计制造领域与发达国家特别是美国还有非常大的差距,许多概念和技术都被作为商业秘密封锁起来,要完完全全了解以数十亿为单位的晶体管甚大规模集成电路的工作原理还是很困难的。

      作为处理器届当之无愧的龙头老大,Intel公司提出的许多标准,成为了整个行业的共同标准(最典型的就是参与了PCI-Express标准的制定,成为了现在显示图形卡的“御用”接口)。我们只能通过英特尔公司已经公布的某些信息来了解当今处理器领域的动向。如果有识之士能够破解尚未公开的原理和技术,推动我国在相关领域的突破,即使我们普通人只能了解浅显的原理,也应该觉得很满足了。)

   即使很难清楚的说明超线程技术的详细原理,但是我们仍然可以理解相关的概念,虽然不是很准确,但是依然有助于我们的思考。

 ①  首先我们要理解“核心”和"多核心&#​34;的概念。在Intel推出著名的4004,8008,8086,80286,80386,80486,Pentium(本来应该命名为80586,但是Intel不想让竞争对手简单抄袭复制其成果,就把这一代处理器申请了商标,由于当时数字是不能当商标的,所以就"5&#​34;的词根penta和名词后缀ium结合,申请了Pentium的商标),Pentium Ⅱ,PentiumⅢ,Pentium 4,所有这些处理器和与这些处理器相兼容的x86处理器,都是单核心,并没有"多核心&#​34;的概念。一个物理核心可以理解为一个完整的CPU单元,要执行一个完整的任务不可再分割的整体。

    2005年,英特尔推出的奔腾D处理器,是第一款有两个物理核心的处理器。意思就是说,即使其中一个物理核心通过物理手段或者软件手段屏蔽了,只要还有一个完整的物理核心存在,该处理器依然可以正常执行任务(有人可能听说过,英特尔以前将较好的晶圆挑选出来制造i7,较差的挑选出来制造i5,更差的就拿出来制造i3,最差的但是还能用的,就拿来制造奔腾和赛扬。其实同一代的处理器核心都是一样的,很有可能在同一批晶圆甚至同一片晶圆上,如果把某些不合格的核心屏蔽掉,只用合格的核心,的确可以拿来制造低端一点的处理器。我们所知道的,很多AMD开核成功的例子,其实就是把屏蔽的不合格的核心和缓存开出来用,以为获得了实惠,实际上得到的确是不合格的核心。只是现在屏蔽的效果比较好,无论是英特尔还是AMD都很难开核了。我们也有时候听说过八核心的锐龙5,实际上很有可能就是核心不合格被屏蔽了两颗核心的锐龙7,只不过屏蔽不够彻底,9不合格的核心依然能够使用,不知道为什么有些人以为自己得到了彩蛋,也许是用锐龙5的价格买到锐龙7的庆幸,却不知道多得的两个核心很有可能是被晶圆厂认为是不合格的)。

我们还要了解什么是“线程”和“超线程”

     这里引用一篇比较靠谱的文章,里面解释了不同的超线程的方法适合我们进行理解。

  (引用文章出自超能网,原标题《超线程/SMT多线程技术有什么用? 》

说到超线程技术,大家应该都不陌生了,Intel早在2002年推出的Northwood奔腾4 HT处理器就把这一技术带入到消费级市场,虽然随后的酷睿2处理器超线程被抛弃,不过到了2008年推出的Nehalem架构Core i7处理器又把超线程技术带回到市场上,并一直沿用至今,现在的Core i7/i3、部分奔腾与Atom、还有移动版的双核Core i5与Core M处理器都有超线程技术,AMD最新推出的Ryzen系列除最低端的Ryzen 3外都带有SMT多线程技术,与Intel的超线程技术类似。

在了解超线程是什么鬼之前我们要先知道线程是什么,Thread线程是操作系统能够进行运算调动的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

Intel Hyper-Threading Technology(超线程技术)的学术名字是Simulate MultiThreading(SMT,同步多线程技术),SMT是超线程技术的学术名称,这两个东西是完全一样的。这技术的引入是为了更好的利用CPU的空闲资源,Intel从奔腾处理器就开始引入超标量、乱序运行、大量的寄存器及寄存器重命名、多指令解码器、预测运行等特性,这些特性的原理是让CPU拥有大量资源,并可以预先运行及平行运行指令,以增加指令运行效率,可是在现实中这些资源经常闲置,为了有效利用这些资源,就干脆再增加一些资源来运行第二个线程,让这些闲置资源可运行另一个线程。

什么是多线程?

MultiThreading多线程这个概念有些暧昧,多线程可以指在一个CPU核心上同时执行多个线程,也可以是多个任务,尽管在同一个核心内执行,但是它们之间完全分离。多线程在概念上类似抢占式多任务处理,但是在现在的超标量处理器中以线程级来实现。

多线程有两个主要实现方法,一个是Temporal MultiThreading时间多线程,另一个则是Simulate MultiThreading同步多线程,时间多线程还可以进一步分为Fine-Grained MultiThreading细粒度多线程与Coarse-Grained MultiThreading粗粒度多线程。

各种多线程技术

CMT粗粒度多线程是最简单的多线程技术,当单一执行线程遇到长时间的延迟,如Cache Missed时,就进行线程切换,直到原线程等待的操作完成,才切换回去。

FMT细粒度多线程比CMT粗粒度多线程复杂一些,它随时可以在每个时钟周期内切换多个线程,以追求最大的输出能力,当然,随时可以切换也是有代价的,它拉长了每个执行线程的平均执行时间。

CMT和FMT都没有在消费级处理器上面使用,Intel与AMD处理器上使用的都是SMT同步多线程,不过NVIDIA与AMD的GPU都有使用FMT技术。

SMT同步多线程具有多个执行单元,CMT和FMT都是在单个执行单元下的技术,不同的线程在指令级别上并不是真正的“并行”,而SMT则具有多个执行单元,同一时间内可以同时执行多个指令,可以充分发掘超标量处理器的潜力,因此SMT具有最大的灵活性和资源利用率,不过处理器也更复杂。

不过现在的消费级处理器都是超标量处理器,所以要支持SMT其实在架构上不用太多改变:所需的主要添加是在一个周期中从多个线程获取指令的能力,以及一个更大的寄存器文件来保存来自多个线程的数据。并发线程的数量可以由芯片设计者决定。常见模式是每个CPU核心有两个并发线程,但一些处理器的每个核心支持最多八个并发线程。

工作原理

对于单一处理器核心来说来说,虽然也可以每秒钟处理成千上万条指令,但是在某一时刻,只能够对一条指令(单个线程)进行处理,超线程技术能够 把一个物理处理器在软件层变成两个逻辑处理器 ,可以使处理器在某一时刻,同步并行处理更多指令和数据(多个线程),当然了实际效能不可实现双倍提升,毕竟干活的核心只有一个。

可以这样说,超线程是一种可以将CPU内部暂时闲置处理资源充分“调动”起来的技术,奔腾4 HT处理器多加入了一个逻辑处理单元,这让CPU可以同时执行多个程序而共享一颗CPU内的资源,如:ALU、FPU、 缓存等,当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续,因此超线程的性能并不等于两颗CPU的性能。

在发布奔腾4 HT处理器的时候Intel说过,超线程技术只增加了5%的芯片面积,就可换来15%~30%的性能提升,而后来的Nehalem架构带来了全新的超线程技术,得益于指令集分制预测技术与较短的流水线,它拥有比奔腾4好得多的效能,再加上整合了内存控制器让其拥有更大的内存带宽,还有更大的缓存,这样就更能够有效的发挥超线程的作用,Nehalem的超线程可以在增加很少能耗的情况下,让性能提升20-30%,后续每一代虽然都有一些小修改,不过基本上都是Nehalem架构的延续。

超线程的作用

其实在Intel刚把超线程技术推向消费级市场的时候市场反应不怎么好,因为当时的操作系统和软件都没有对多线程技术进行优化,多数软件都是以单线程运行,超线程的优势非但显露不出来反而会因为另一个虚拟处理器抢占资源导致运行起来比没超线程的处理器更慢。

这些问题随着这些年来操作系统和软件逐步对多核多线程进行优化得到改变,特别是Windows 10系统对多线程优化相当好,操作系统的调度器设置更为科学,多核心多线程的负载更为平均,你在Windows 10系统下打开任务管理器会发现 不论物理核心还逻辑核心的负载都相当平衡,除非是人为指定负载线程,否则很少会出现之前Windows 7那样单核负载多核围观的惨状。

至于超线程的作用其实还是很明显的,之前我们对比测试过Core i7-6700K和Core i5-7600K,他们俩的四核与单核Boost频率是相同的,都是4.0GHz与4.2GHz,区别就在于超线程的有无和L3缓存的大小了,至于Skylake与Kaby Lake两者是没有性能上的差别的。

有超线程的Core i7-6700K多线程性能比Core i5-7600K好19%左右,然而超线程技术在提升处理器的利用率增大吞吐量的同时也稍微增加了单个线程的延时,如果只看单线程能力的话Core i5-7600K其实比Core i7-6700K还好2.8%左右,然而降低这么一点单线程性能让多线程性能提升这么多这其实是很划算的。

太长不看版:

简单地说,超线程技术是一个很好的提升核心利用率的东西,将闲置处理资源充分调动起来,增强核心并行运算性能,在操作系统中一颗物理CPU能当做多颗CPU来使用。

超线程有什么好处呢:

 · 有效提升CPU利用率

 · 改善计算机的性能

 · 提高系统可靠性

比如奔腾G4560这种双核在拥有超线程之后性能暴增,在低端入门市场相对受欢迎,双核四线程的处理器能够对应大多数轻量级日常应用。当然随着核心数目增多超线程的作用就越弱,特别是那些八核或者核心数更多的处理器,十六个框框看起来很爽然而实际上用起来很多线程都是空载的,大多数消费者与应用都没法很好的利用这么多线程的性能,目前只有视频和3D渲染软件和压缩软件有能做到,软件还是制约硬件性能的最大因素。

另外,超线程技术需要CPU支持,需要主板支持,需要操作系统支持,还需要应用软件支持,缺一不可,否则就玩不转了。)

      

QUESTION 3:超线程技术能增加多少性能? 由于超线程技术(Hyper-Threading,HT)并不是直接增加物理核心,只是让处理器核心的利用更加充分,加快程序执行的速度,以增加处理器的性能,所以使用超线程的处理器的性能,并不是简单的加倍。即4核8线程的酷睿i7 性能并不是同代4核4线程酷睿i5的2倍。

大多数服务器CPU和高端CPU都采用了HT,在操作系统中逻辑处理器个数对应着处理器线程数,也就是我们常说的“数框框”。

一般情况下,超线程(HT)能加快多线程程序的效率,对依赖单线程的程序几乎没有作用,反而由于线程过多强占缓存和计算资源,反而会比没有使用超线程的处理器还要慢。 因此,超线程到底能提升多少性能,取决于执行的程序。如果执行的程序像Cinebench R15这样的软件(可以测试CPU的综合性能,以cb为单位,和GPU的OpenGL运算性能,以fps为单位)、PS修图、视频剪辑和渲染、程序多开等依赖多线程,那么多线程优势非常大;如果要同时运行很多个程序,多一倍的线程能有效避免卡顿;如果程序像Super Pi软件这样不能利用多线程,只依靠单核性能,那么超线程就毫无意义。

Cinebench R15或R20测试cpu以cb为单位,测试中高清图片上每一个小格都是一个线程,通过渲染一张高清图来测试处理器的综合性能,核心越多,线程越多,主频越高,时间就越短,分数越高,综合性能越强。多线程的优势在类似的情景中优势很大。

SuperPi是一款非常经典的处理器测试软件,通过比较计算圆周率小数点后面位数的时间来测试cpu的性能(特别是单核性能,cpu单核性能越强,频率越高,时间越短,性能越强;也可以通过大量重复运算来测试处理器的稳定程度)。SuperPi一百万位小数(准确来说是104万位)测试的时间非常重要,顶级处理器0.001s的缩短都是非常大的提升,目前大多数高端处理器都能进入10秒以内,不过由于处理器单核性能提升非常缓慢,SuperPi一百万位的计算渐渐淡出人们的视线。

   说到超线程,大多数人马上会想到酷睿i3和酷睿i7。其实在推出奔腾4 HT之后,英特尔官方曾宣称只增加5%的晶圆面积,就能提高15%到30%的性能。 这听起来很美好,然而,当时支持这款处理器的主板寥寥无几操作系统还不能很好地支持HT技术,而且处理器的价格还很高,所以低端的处理器赛扬和AMD的K6 Ⅲ处理器仍然是市场主流(支持超线程技术还需要处理器,主板,操作系统的支持,刚刚推出的超线程奔腾4还是高端的玩物)。

    2005年至2006年,随着双核处理器的普及,操作系统和主板对HT技术处理器的支持也逐渐成熟。但是,由于使用HT的只有英特尔一家,Prescott核心的巨大功耗与平庸性能不成正比。

    在第八代酷睿处理器出现以前,大多数桌面级酷睿i3都是双核四线程处理器,酷睿i5 是四核四线程处理器,酷睿i7是四核八线程处理器,在酷睿处理器中分别代表低端(入门级),中端(主流级),高端(旗舰级)。凭借着对超线程技术的支持,酷睿i3和酷睿i7分别是是高性价比和高性能的代名词。

      

     酷睿i3处理器有着良好的功耗表现,性价比非常高,性能稍差于同代的i5(但是需要说明的是4核4线程的酷睿i3 8100的规格和性能已经完全接近前一代4核4线程的酷睿i5 7500,搭载Z370芯片组的酷睿i3 8350K的性能要强于酷睿i5 7500,在某些项目上甚至强于搭载Z270芯片组的酷睿i5 7600K),对于大多数用户来说,双核i3胜任大多数应用场景,都是默频状态下单核性能比同时期的AMD处理器要强很多,多核性能比大多数AMD入门处理器要强(这就是“ i3默秒全”的由来,直到Ryzen处理器改变了这一状况,2017年AMD推出的四核四线程锐龙3 1300X处理器,搭载B350或X370芯片组的1300X多核性能要比同时期的双核四线程酷睿i3 7100强很多,单核差距已相差无几,用Ryzen Master合理超频的1300X,甚至超过了默频不可超频的酷睿i5 6500和酷睿i5 7400)。

Haswell架构的酷睿i3 4130是一款经典的双核四线程处理器

    酷睿i7处理器在很长一段时间内都是高性能处理器的代名词,同时也价格最高。4核心酷睿i7单核性能要比同代酷睿i3和i5处理器强不少,多核性能要比同代i5强30%以上。同是4个物理核心,只是使用了超线程技术,酷睿i7要比同架构的酷睿i5强30%以上,多线程的优势非常明显(然而代价也是非常高的,同代酷睿i7的价格要比酷睿 i5高50%以上,某些带K的型号甚至是同代酷睿i5的两倍多)。

Haswell-Refresh LGA1150接口,典型的四核八线程处理器酷睿i7 4790K,现在看来仍然性能强劲,目前价格依然坚挺

那么没有HT的九代酷睿i7是技术上的退步吗?     总结之后我们会注意到。酷睿i7 9700K虽然砍掉了超线程,但是多了两个实实在在的核心,对比酷睿i7 8700K或者8086K(6核12线程),在目前的情况看来多线程数由12变为8,多线程性能有小幅下降,但是在目前软件对多线程优化比较差的情况下,没有HT的酷睿i7的性能已经能够满足我们的大多数需要了(七代和之前的大多数酷睿i7是4核8线程,而第九代酷睿i7是实实在在的8核8线程)。    如果还是需要多线程的加持的用户,可以选择酷睿i9 X系列和锐龙7 ,都支持超线程,使用上一代的8700也没有任何问题,甚至是英特尔的X299平台和AMD的X399平台,都是多核心多线程的HEDT平台。相信技术进步能让我们对电脑的性能提升有更多的期待! (本文图片均来自互联网,观点和言论仅供参考,如有意见和建议,欢迎留言)。