当前位置:论文写作 > 毕业论文范文 > 文章内容

提升单线程性能的神器?——CPU逆向超线程技术可行性

主题:线程 下载地址:论文doc下载 原创作者:原创作者未知 评分:9.0分 更新时间: 2024-04-07

简介:关于对写作核心线程论文范文与课题研究的大学硕士、相关本科毕业论文核心线程论文开题报告范文和相关文献综述及职称论文参考文献资料下载有帮助。

核心线程论文范文

线程论文

目录

  1. 线程:223_尚学堂_高淇_j论文范文a300集最全视频教程_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模

早在本世纪初,科学家就为CPU开发出了超线程技术,使得它“学会”了“一脑多用”.不过在经过这么多年后,CPU却始终没有掌握人类的另一项基本技能一分解单项任务,在执行一项任务量大的工作时,为缩短时间,我们往往会将这个任务分解,并分配给多位工作人员.但目前拥有多颗核心的CPU在遇到类似的情况时,却一点也不聪明.在只执行一项任务时,该任务仅会交由一颗核心完成,其他CPU核心则只能“袖手旁观”,而这也导致处理器的单线程性能长期难以得到明显提升.不过最近在网络上出现了一个传言,号称CPU厂商已经解决了这个难题,并开发出了可以让多颗核心共同来完成一个任务的逆向超线程技术,这项技术真的存在吗?

文/图 黄论文范文

引来这个传言的就是不少人已经用上的Sk y l a ke处理器,相信从使用过程中,大家已经发现尽管Skylake是第六代酷睿处理器,但除了性能小幅提升外,我们并未从这款处理器中见到任何特别之处.而随后Intel论文范文也正式否认了Skylake处理器拥有逆向超线程技术.不过逆向超线程技术这一概念的提出倒是引起了业内人士,以及本刊大量读者的兴趣一既然科学家已经早早搞出了“一脑多用”的超线程技术,为什么迟迟不见“多帮一”的逆向超线程技术呢?事实上,逆向超线程技术这一概念已提出多年,但为何一直屡屡未见工业应用?这项技术真的存在吗?以这些问题为线索,本文将展开迄今为止针对逆向超线程技术最详尽的分析.

逆向超线程—愚人节玩笑?

什么是逆向超线程?这要先从超线程技术开始说起.在传统的乱序多发射核心上,连续的执行指令流通常只来自于一个线程,也就是说,同时发射来自多个线程的指令,这种能力在传统核心上起初并不具备.上世纪九十年代在模拟器上进行的研究发现,如果乱序多发射的结构严格限制仅从一个线程选择指令的话,执行流水线的吞吐量将会有50%~100%不等的下降.为了放松这一限制,学术界提出了“同步多线程”(Simultaneous Multi-Threading)的结构设计,这一设计的最主要外在表现是一个物理核心会被操作系统认成两个逻辑核心,而它的内在变化是通过在处理器核心内部提供对多个线程的结构支持.例如为每个线程提供独立的寄存器堆、返回栈预测器等等,让乱序多发射的执行框架能够从多个线程挑选指令一同执行.由于两个线程共享同一个核心内部的大量资源,例如一级缓存、保留站、重定序缓冲区等等,因此单线程IPC会有一定幅度的下降,但是这一做法能换取多线程吞吐量的大幅度提高.这个设计被Intel注意到,采纳过来放进了Netburst微结构里面.但在市场宣传中,Intel将之改头换面,使用了“超线程技术”(Hyper-Threading)的说法,使得同步多线程仅为体系结构专业范畴内熟知,而“超线程”这个名字则传遍世界各地.

线程:223_尚学堂_高淇_j论文范文a300集最全视频教程_JVM核心机制_线程上下文类加载器_web服务器类加载机制_OSGI技术模

2006年4月,逆向超线程技术首度现身网络.在媒体的宣传中,它与超线程技术思路相反,将多个物理核心合并成一个核心,力图大幅度提高单线程IPC.这一技术据称是AMD的创造,被寄希望于在当时的K8L结构上实现,对抗在单线程IPC上取得了跨越式进步的Intel Core微结构,然而故事到这里就没有了下文.不仅K8L身上没有出现这一技术,在此后的近十年内,也没有任何一个主流CPU设计采用了逆向超线程.它去哪儿了呢?

据查证,逆向超线程的最初报道来自于一家名为x86- secret的法文网站,因为这家法文网站已经与其他站点合并,当年的报道原页面已经消失,无法再核实原文.但耐人寻味的是,一些国外媒体于2006年4月中下旬刊发、转载了另一篇报道.原始来源已不可考,行文风格像是公开信,写作口吻则像是逆向超线程原始报道的作者.内容中,作者声称所谓逆向超线程技术只是一时兴起开的愚人节玩笑,该报道指出逆向超线程原始报道的刊发日期是4月1号,而AMD根本没有在研究这项技术,并祝大家愚人节快乐.

此后虽然逆向超线程在网上的讨论并未销声匿迹,但是我们从工业界对于这项技术的接近十年的沉默中也不难看出端倪.Inte l在今年IDF大会上公开介绍Sk ylake微结构的细节之前,又有一家德文媒体猜测Sk ylake单线程IPC大幅度提升,可能来自于逆向超线程技术的助力.这一猜测在几轮传播之后扩散成了事实,许多媒体言之凿凿地报道Skylake实现了逆向超线程.但没过几日,Intel出面澄清Skyl ake的逆向超线程是子虚乌有,而Skylake的评测也表明其单线程I PC的提升幅度令许多关注者感到失望.著名科技资讯站点AnandTech认为Skylake的单线程IPC相比Broadwell仅提升了2.7%,相比Haswell也仅提升了5.7%,实在是索然无味.

愚人节玩笑的背后 对单线程性能的渴望

对于逆向超线程的持续期待,其实背后反映的是用户对单线程I P C跨越式进步的极度渴求.从公开的多方测评中不难窥见,I ntel从C o r e微结构之后的近十年当中,单线程I PC的年复合增长率仅有不足10%,C o r e微结构对比前代降低了50%+的主频,却仍能实现总体性能反超的单线程IPC飞跃如昙花一现.

笔者注意到,在并不了解业界趋势的各大网络社区里的网友们,时常将Intel这种挤牙膏式的进步归咎于竞争对手A M D的疲软以及来自ARM的竞争迫使Intel注重更低功耗,诚然这两个因素也是有其影响的,但是主要的进步阻碍还是来自于技术方面.这里有一个发人深省的故事:在上世纪末、本世纪初,曾经在技术实力上压制Intel的CPU巨头DEC Alpha曾经试图研制一款乱序八发射的CPU,代号是DEC Alpha21464,这款CPU的微结构在模拟器上就暴露出严重问题.因为单线程的指令在70%以上的执行周期里根本无需八发射的宽度,为了不让乱序执行引擎闲置,Alpha 21464最后加入了四路同步多线程的设计来提高利用率.

而为了维持八发射的宽度,其代价也是惊人的,A lpha 21464的十六读八写的物理寄存器堆最后做得比一级数据缓存和一级指令缓存加起来还大好几倍,在付出了这样的代价之后,Alpha仍无信心与发射宽度不足4的老款Intel Xeon芯片抗衡,最后在未能量产的情况下项目就被砍掉.这说明,单线程性能上的发掘难度很大,而且经常会出现付出与回报不成正比的情况.这种情况在微结构更加成熟的今天就更是如此,例如对于单线程性能至关重要的分支预测,Intel的CPU在大多数情况下分支预测准确率都不会低于99%,可以提高的空间尚不足1%,继续榨干剩余潜力需要将分支预测器的记录表大小翻倍再翻倍,实在是得不偿失.与之类似的测试数据都指向一个共同结论:单线程上提高的空间已经不大了,而为了继续压榨剩下的潜力,付出的代价也是越来越高昂的.因此,业界的注意力从2006年以后就已经从单线程性能上转移到了多核心上,只有以A R M为代表的移动阵营因为单线程性能起点太低,还能够实现百分比约两位数的增长.在可预见的将来,PC/服务器领域的单线程性能提升都会继续目前的趋势,并且可能步伐进一步放缓.

在这样的总体趋势下面,对于单线程性能出现第二春的期待,从某种程度上来说也是可以理解的,而逆向超线程就代表着这种期待.那么逆向超线程是否真的能够实现呢?明确地回答,逆向超线程本身虽然可能是愚人节玩笑,但是类似技术确实是存在的.笔者认为,从实现方式和实现效果上,大致上有两类已经过多年研究的备选技术与逆向超线程接近:第一类技术是将多个核心拼接到一起,提高单线程I P C,被统称为“核心拼接”;第二类技术被称为线程推测(threadspeculation),是一种自动/半自动的,通过编译器或者硬件将单线程代码以上层不可察觉的方式转化成多线程,在保证正确性的前提下分配到多个核心上执行,从而大幅提高单线程性能的技术.这一技术的预期目标与逆向超线程完全一致,但是实现方式却不一定如逆向超线程所描述的那样主要在于微结构,下面笔者将为读者们大致介绍这两种技术.请读者们注意,这两种技术目前都仍停留在实验室研究阶段,因此对这两种技术的观点在业内还存在争议.

逆向超线程技术的实现手段:线程级推测

从原本无法并行执行的单线程代码中抽取出可以并行的部分,包装成多个线程,分派到多个核心上执行,然后依靠硬件或是软件层面提供的同步机制来重新并拢数据,这被称为线程级推测(Thread- LevelSpeculation).线程级推测的研究甚至可以追溯到上世纪七十年代,经过大量测试数据反复检验,在理论可行性上已经具备比较好的基础,并有数据证明对于部分基准测试可以收到性能提升翻倍的效果.截至今日,类似技术已经在科学计算领域得到了广泛使用,而主流编译器仍未采用这项技术去尝试将不规则的一般整数应用程序进行优化.

让我们来看看这项技术的实现原理.如何从原本不能并行执行的单线程代码中寻找可以并行执行的部分呢?答案在于循环.针对流行基准测试的分析揭示了这样一种现象,虽然整个程序的源代码长度数以万行或几十万行计,但是大部分执行时间是消耗在了几十行被反复执行的循环代码上,例如在S PECint中的mcf子项上,44%的执行时间是被消耗在执行一个核心循环上.如果能够将这些循环代码展开到多个核心上并行执行,理论上有可能可以获得非常漂亮的加速比.

线程级推测的研究方向主要分成两大块,第一块是依赖硬件进行自动线程级推测,其基本思路是在硬件上提供循环检测,并另外开辟片上缓存来记录各个循环的执行次数、循环体内的分支走向情况等等信息.但是这一方向上的研究较为冷门,推测原因是循环的线程级推测需要从源代码层面获取大量的语义信息,而经过源代码编译到机器指令后,这些关键信息都丢失了,导致硬件进行并行化的难度骤增,依赖硬件进行线程级推测就变成了盲人摸象.第二块是依赖编译器来做线程级并行度的发掘抽取,这一块的研究已经有几十年的历史,在上世纪七八十年代都能找到一些研究这个方向的早期文献,是线程级推测研究的主流方向.编译器拿到一个串行程序的代码后,需要程序员提供一组或是多组训练性质的输入数据将这个串行程序试运行,编译器会在试运行过程中监控收集这个串行程序的行为特征,从中挑选一些执行时间长、优化难度低的循环出来,把代码变换成多线程执行,并考虑好多线程下的同步、内存一致性等问题,以及代码变换执行失败后的状态回滚.这些步骤中的每一个都有许多可以调优的门道,因此不同的线程级推测所实现的效果也大不相同.在程序员给予编译器提示的情况下,编译器可以在浮点密集型的代码上实现效果优异的自动并行化,这一技术已经在科学计算领域推广多时,对于不太规则的整数密集型代码,则尚未有主流编译器采用线程级推测.阅览以往公开发表的实验数据不难发现,支持线程级推测的实验性编译器往往能够提供超过50%,甚至是翻几倍的性能提高幅度,不能不说是颇为惊人的,但是线程级推测光鲜靓丽的表面下面也是暗流涌动.

首先,大部分线程级推测的研究都是基于模拟处理器进行,而出于种种原因,模拟处理器的参数(例如多核心之间的同步延迟、缓存配置、乱序执行窗口大小等)总是被设置得与真实处理器有一些区别,使得性能提升幅度的真实性容易受到怀疑;其次,有学者质疑线程级推测所取得的性能优势其实含有大量水分,认为线程级推测的性能优势其实来自于更好的循环代码分析和变换,而编译器的循环代码分析和变换能力加强以后,S I M D自动并行化和指令级并行度优化也能实现不输于线程级并行度的加速比.对于这些负面的声音,线程级并行度的研究也交出了自己的答卷.截止2015年,已经实现的最新型实验性编译器可以令Haswell、Nehalem、Bulldozer微结构的多核处理器在个别SPECint 2000 基准测试的子项上达到了近4倍的加速,在个别SPECfp 2000上达到5~8倍加速.对比基准是LLVM 3.4.1 –O3优化,这一基准线与G C C 4.8的性能相当,差距仅有1%.

因为实验是在真实处理器上完成,而且对比基准是目前处于较尖端水平的编译优化,所以上述质疑已经可以至少打消一部分,但是线程级推测需要试运行介入的问题仍未解决.前面提到,实现成功的线程级推测,需要程序员提供一组或是多组训练性质的输入数据将这个串行程序试运行,试运行期间收集的特征数据交由编译器进行分析利用,这一趟流程的正式名称叫做剖析(profili ng).剖析是一项在编译器优化研究中被广为采用的手段,编译器虽然能够接触到程序源码从而分析语义信息,但是不能接触到程序运行时产生的动态信息,例如编译器并不知道哪一些代码在运行期间执行次数最多,这就需要剖析的介入了.但是相对于编译器研究中对剖析的热忱,开发者社区对于剖析的态度是异常冷淡.因为大多数人想要的编译只是相当于一条命令或者点一个按钮,完成编译后上线部署.编译优化应该是编译器自动完成的事,如果突然弹出提示去要求对代码运行所需的初始变量都给予一个参考输入值,不难想见大多数程序员会用什么样的表情去面对.再退一步来说,剖析需要的也不是一次试运行,而是在多个典型输入下的多次试运行,来确定程序在多个输入下是否有不同的表现、是否需要针对性优化.耐着性子给了一组测试输入的程序员们若是再碰到第二次提供输入的要求,就该崩溃了.所以,剖析的介入对于尚处在研究阶段的技术来说不应苛求,但是若想大规模推广,就可能成为将来的一个障碍.

如果线程级推测能够证明自己不仅对于SPEC的个别基准测试起效,而是对于大量不规则应用和其他基准测试都起效,甚至进一步甩脱编译优化需要试运行这一障碍,它的前途将更加光明.目前线程级推测的研究仍然在继续,编译器对于循环代码的甄别分析能力还在继续提高,同时也有一些针对硬件结构的建议被专注这一研究方向的学者们提出.例如提供低延迟的核心间通讯来降低线程级推测的同步开销等,目前主流编译器仍然没有采用这项技术,对于线程级推测恐怕仍需保持多年耐心.

逆向超线程技术的实现手段:核心拼接

所谓核心拼接,顾名思义就是将多个核心拼接起来,形成一个更高执行宽度的大核心,试图以此来提高单线程IPC.和线程级推测不太一样,核心拼接是一项相对来说比较年轻的技术.笔者所能见到的核心拼接技术的最早构想出现于2004年前后,一开始是拼接一些超长指令字结构(V LIW)的核心,或是拼接一些注重吞吐量的顺序执行小核心,然后发展到拼接乱序多发射核心的设计.

从技术实现上来看,核心拼接要解决的问题也是比较多的,让多个核心执行同一个指令流,指令缓存是否需要考虑特殊情况?把多个乱序执行引擎拼接起来,寄存器重命名表是做成集中式的还是分布式的好?围绕执行单元的数据旁路网络如何在多个核心间实现低延迟?可以说核心拼接也不是低处枝头上顺手一摘就能拿到的果子.

2007年的计算机体系结构顶级学术会议ISCA上,康奈尔大学的研究人员拿出了一个可以在模拟器上实现成功拼接的初步设计,使用八个乱序双发射核心拼接成一个大核心(CoreFusion),性能介于乱序四发射和乱序六发射之间,相对于乱序双发射的基准线,性能提高幅度在30%左右.请注意,模拟结果极大程度上取决于模拟器的参数设置,因此对于这一结果需要谨慎看待.单就这个结果来说,核心拼接的前景是比较尴尬的,30%的性能提高对于已经多年停滞不前的核心微结构来说已经不是个小数目,但是恐怕还没有大到能够诱惑架构师们为了它对现有设计做出破坏性修改.所以核心拼接接下来面临的问题是,提高自己的性能预期,拿出更大的加速比,或者是给出一个对核心内部无需做出破坏性修改的友好方案,方便现有的设计实现无缝集成.

虽然初步的数据并不算特别出彩,但是核心拼接登台亮相后受到了学术界的不少关注,这一论文的被引用次数据谷歌学术统计已经达到233次,已有为数不少的研究开始在此基础上进一步论证核心拼接的性能功耗提升幅度、探索更加有效的核心间拼接方式.吸引众多注意力的原因可能主要在于,这种动态拼接的方式可以让处理器随着应用程序的不同要求而动态地改变自身结构,在低需求时拆分为单个低功耗的小核心,在高需求时合并为提供更高性能的大核心,面对不同需求时都能输出最优或者次优的性能功耗比,这是一个颇具吸引力的新特性.然而对于这一方向,也有人不以为然,例如获得处理器微结构领域顶级学术会议MICRO 2012最佳论文奖的MorphCore项目小组就唱了一回反调.他们认为把多个小核心拼接成一个大核心的做法其实既拉低了性能又拉低了性能功耗比,因为拼接起来的核心在流水线里引入了额外延迟,在核心拼接和拆分的状态转换中又需要指令缓存的冲刷和重新装填,一个搞不好就会得不偿失.因此MorphCore就反其道而行之,将一个乱序多发射的核心拆分成顺序发射、支持同步多线程的小核心,这显然与逆向超线程的理想是南辕北辙的.

值得一提的是, 参与Mor phCore项目的人中包括Intel实验室的科学家,但是并不能就此认为Intel论文范文偏袒Mor phCore更多一些.因为研究项目的高度不确定性和预期风险,脚踏多条船、同时参与或是支持多个不同方向的研究是常有的事情.另一方面,Intel在自己的CPU里所采用的技术有许多并未发表,而发表的实验性项目里面最后大部分也并未进入CPU.因此从这一点上来揣摩公司的态度是不靠谱的,这一点对于同样插手了这一方向研究的AMD、IBM等巨头都是如此.

然而,与线程级推测不同的另一点是,线程级推测的研究进行了许多年,也备胎了许多年从未被主流采用,而核心拼接稍好一些,虽然也没有被主流采用,但是却有新兴创业公司把全身家当压在了上面,并掀起了一阵风浪.有一家叫做Soft Machines的公司就是以核心的硬件拆分、拼接作为主要亮点之一立足的,Sof t Machines声称其研发的处理器的单线程I PC相对于C o r tex- A15提高了3到4倍,领先Intel Haswell大约50%,引发了一些业内媒体的追逐报道.在大量公开报道中还提及Soft Machines的CPU在硬件上进行了线程拆分,这一线程拆分是不是从线程级推测的研究中吸取了一些优点还不明朗.Soft Machines的模拟器测试还表明,多核心拼接的绝对性能虽然乐观,但是可扩展性却不太好,在已经把两个核心拼接到一起的情况下,加入第三个核心只能让性能提高20%-30%,再加入第四个核心只能提高10%-20%.这一点倒是与康奈尔大学的初步测试结果一致.

总体来看,核心拼接作为一个相对年轻的构想才起步不久,虽然尚未在学界内部得到主流认可,但对于它的发展前景已有一些巨头表示期待.目前Sof t Machines拿到了AMD、GlobalFoundries以及三星的投资.

并非空想 但任重道远

可以看到,虽然逆向超线程技术打雷不下雨已近十年,但这一构想也并非完全空穴来风.本文介绍的两种实验室技术就比较贴近逆向超线程技术当初描述的目标,甚至在实现方式上具备一定可行性.那么动辄50%、200%的单线程性能提升会成真吗?笔者认为在当前高度成熟的乱序多发射框架下已经很难一下子跨越这么多,但这两项正在发展的技术也给我们提供了一些可以寄托希望的去处,或许它们能够在某一天得到来自学术界和工业界的两方面认同,最终走出实验室,迈上生产线,成功进入寻常百姓家.

总结:这篇核心线程论文范文为免费优秀学术论文范文,可用于相关写作参考。

线程引用文献:

[1] 多线程论文如何写 多线程方面硕士毕业论文范文5000字
[2] 锐龙和线程专科开题报告范文 关于锐龙和线程方面毕业论文题目范文2500字
[3] 比较好写的道路选线论文题目 道路选线专业论文题目如何拟
《提升单线程性能的神器?——CPU逆向超线程技术可行性》word下载【免费】
线程相关论文范文资料