当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于推测性执行的控制的自适应队列式锁定制造技术

技术编号:17144216 阅读:19 留言:0更新日期:2018-01-27 16:35
公开了用于推测性执行的控制的自适应队列式锁定。一种示例装置包括:锁,该锁用于强制执行用来对被允许在被存放在队列中之后同时推测性地执行的线程的数量进行控制的第一配额;以及响应于第一配额尚未被达到,使来自队列中的第一线程能够推测性地执行;以及调整器,该调整器用于基于第一线程的推测性执行的结果改变第一配额的第一值。

Adaptive queue locking for conjectural control

An adaptive queue locking for control for speculative execution is disclosed. A sample device comprises a lock, the lock is used to enforce to be allowed after the first quota is stored in the queue at the same time, the number of speculative execution threads of control; and in response to the first quota has not yet been reached, the first thread from the queue can be executed speculatively; and regulator the regulator is used in the first value, change the first quota based on the first thread speculative execution results.

【技术实现步骤摘要】
【国外来华专利技术】用于推测性执行的控制的自适应队列式锁定相关申请本专利要求于2015年6月3日提交的美国专利申请序列号14/729,914的优先权,并且通过引用将其整体并入本文。公开的领域本公开一般涉及计算平台,并且更具体而言,涉及用于事务存储器中的推测性执行的控制的自适应队列式锁定。背景在事务存储器系统中,各代码区域被并行地推测性地执行。冲突在例如两个事务尝试访问存储器中的同一位置时出现。例如,冲突在第一和第二事务尝试写入到存储器中的同一位置时发生。附加地,冲突在第一事务尝试写入到存储器中的一个位置并且第二事务尝试读取存储器中的该相同位置时发生。附图简述图1是根据本公开的教导构建的示例计算平台的例示。图2是图1的示例自适应队列式锁定(AQL)管理器的示例实现的框图。图3是例示图1和/或图2的AQL管理器的示例状态的图示。图4-6是表示可被执行以实现图1和/或图2的示例AQL管理器的示例机器可读指令的流程图。图7是能够通过执行图4-6的示例机器可读指令来实现图1和/或图2的示例AQL管理器的示例处理系统的框图。详细描述利用代码的并行执行的系统会遇到由不同代码同时访问存储器的同一部分引起的挑战。各种技术可用于减轻或减少此类冲突的不利性能效果。然而,这些技术涉及到其自身的挑战。例如,一些事务存储器特征可能经历冲突过载。作为事务存储器的实现的事务同步扩展(TSX)涉及并行地推测性地执行的多个线程。每个线程包括一个或多个事务(例如,存储器事务)。当与特定线程有关的冲突发生时,对应的事务被中止并且随后被重试。在一些情况下,事务在能够成功执行之前被重试若干次。在一些情况下,事务回退到非事务路径。当经历了大量的冲突时,对应的大量事务中止阻止了通过代码的前向进程。这些问题在例如特定代码段的冲突概率由于更多的线程正在运行而迅速增加时出现。当冲突发生且线程在被中止之后重试执行时,冲突概率由于新线程到达并引入更多冲突而迅速升级,从而形成对冲突概率的正反馈。最终,瓶颈形成,并且在被中止之后尝试重试执行的线程不能够产生显著的前向进程(例如,仅不期望的慢进程被产生),因为太多的线程正在尝试同时执行。一些事务存储器系统通过实现严格控制对关键段的访问的锁来缓解瓶颈,这些关键段是访问共享的存储器并因此在由多个线程并行执行时具有创建冲突的可能的代码段。具体而言,这些锁通过禁止除了一个线程以外所有的线程执行代码的关键段来保护代码的关键段。只有已获取了锁的线程才被允许执行关键段。在这些情况下,各线程通过例如重复地尝试获取锁来竞争锁,从而授予获得了锁的线程在关键段中执行的许可。一个示例锁是MCS锁,该MCS锁是根据其作者MichaelL.Scott和JohnM.Mellor-Crummey的首字母来命名的。在已知的系统中,当对应的系统进入其中仅一个线程被允许在关键段中执行的独占模式,而非其中各线程被允许推测性地在关键段中并行执行的事务模式时,MCS锁被利用。这类已知系统的系统可响应于在阈值时间量内已发生了阈值中止次数而进入独占模式。为了强制执行独占模式,已知的MCS锁将(例如,响应于关键段中的冲突)已被中止的线程组织成队列。MCS队列的每个节点对应于正等待在关键段中执行的许可的先前经中止的线程。具体而言,MCS队列的线程当在队列中等待时旋转相应的局部变量。值得注意的是,MCS锁仅允许位于MCS队列头部的线程执行以重试经中止的事务。由此,MCS锁将关键段中的重试执行限制到单个线程。尽管该办法减轻了上述瓶颈效应,但是该办法的单线程限制可能会抑制对应系统的吞吐量。本文中所公开的示例方法和装置改善了对例如事务存储器系统中的冲突的处理。尽管以下示例是结合事务存储器系统进行描述的,但是本文中所公开的示例方法和装置可被用于任何合适类型的系统。本文中所公开的示例提供了一种自适应队列式锁定技术,该技术使动态数量的线程(包括已为之发生冲突的线程)能够在关键段中推测性地执行。与其中要么所有线程都被允许在关键段中推测性地执行要么仅一个线程被允许在关键段中执行的已知的系统形成对比,本文中所公开的示例提供对有多少线程可在关键段中同时执行的细粒度控制。本文中所公开的示例通过维护动态配额并跟踪当前在关键段中执行的线程的计数来控制被允许的线程的数量。当线程的计数满足配额时,本文中所公开的示例拒绝附加线程在关键段中执行。因此,本文中所公开的示例对同时在关键段中推测性地执行的线程数进行节流。此外,本文中所公开的示例根据线程执行(例如,在阈值重试次数内和/或在阈值时间量内的执行重试)的成功率来适配执行线程的配额。成功率对应于例如成功执行(例如,被全部执行并被提交)而没有经历冲突的线程或事务的百分比。例如,如果最近被重试的执行的成功率高于阈值百分比,则本文中所公开的示例增加了对有多少线程被允许同时在关键段中重试执行进行控制的配额。在一些示例中,如果最近被重试的执行的成功率低于相同或不同的阈值百分比,则本文中所公开的示例减小或重置该配额。因此,本文中所公开的示例重复地或连续地调整在关键段中执行的线程数,使得吞吐量得到改善,同时降低了冲突概率。图1例示了包括事务存储器系统102的示例计算平台100。图1的示例事务存储器系统102允许通过例如计算复合体106对线程104的并行执行。图1的示例计算复合体106包括执行线程104的代码的一个或多个处理器。在所例示的示例中,线程104中的一个或多个线程包括要经由事务存储器系统102推测性地执行的事务(例如,存储器事务)。线程104的一些代码是涉及访问存储器108的共享部分的关键段。如上所述,冲突可在例如线程104中的一个或多个线程的不同推测性事务尝试访问(例如,写入到)存储器108的相同部分时出现。附加或替代类型的冲突可能会出现。图1的示例事务存储器系统102包括冲突检测器110,以通过促使在冲突时正被推测性地执行的事务中止来对冲突作出响应。被中止的事务在稍后的时间被重试。图1的示例事务存储器系统102包括根据本公开的教导构造的自适应队列式锁定(AQL)管理器112。图1的示例AQL管理器112对有多少线程104被允许在对应代码的关键段中推测性地执行进行动态控制。此外,图1的示例AQL管理器112基于例如线程104和/或线程104的事务的成功率来动态地调整对被允许在关键段中执行的线程102的数量进行控制的配额。如以下详细描述的,图1的示例AQL管理器112提供了协作以组织并促成线程104中的由于例如冲突而先前被中止的那些线程的执行的锁和队列。线程104中的正经历冲突的那些线程将它们自己添加到由图1的示例AQL管理器112所提供的队列中。图1的示例AQL管理器112的锁能够对已排队的线程104在关键段中执行的能力进行动态控制。也就是说,图1的示例AQL管理器112能够对各事务在关键段中的同时的推测性执行进行节流。在图1所例示的示例中,由AQL管理器112提供的队列的头部处的线程104中的一个线程执行对被允许在关键段中推测性地执行的线程104的数量进行控制或节流的一个或多个功能或操作。由此,图1的示例AQL管理器112提供了针对在给定时间关键段中允许的线程数量的细粒度控制。值得注意的是,示例AQL管理器112所提供的细粒度控制是对已知的锁定技术的改进,本文档来自技高网...
用于推测性执行的控制的自适应队列式锁定

【技术保护点】
一种装置,包括:锁,所述锁用于:强制执行用来对被允许在被存放在队列中之后同时推测性地执行的线程的数量进行控制的第一配额;以及响应于所述第一配额尚未被达到,使来自所述队列中的第一线程能够推测性地执行;以及调整器,所述调整器用于基于所述第一线程的推测性执行的结果改变所述第一配额的第一值,其中所述锁或所述调整器中的至少一者经由逻辑电路来实现。

【技术特征摘要】
【国外来华专利技术】2015.06.03 US 14/729,9141.一种装置,包括:锁,所述锁用于:强制执行用来对被允许在被存放在队列中之后同时推测性地执行的线程的数量进行控制的第一配额;以及响应于所述第一配额尚未被达到,使来自所述队列中的第一线程能够推测性地执行;以及调整器,所述调整器用于基于所述第一线程的推测性执行的结果改变所述第一配额的第一值,其中所述锁或所述调整器中的至少一者经由逻辑电路来实现。2.如权利要求1所限定的装置,其特征在于,所述调整器用于通过以下方式来基于所述第一线程的推测性执行的结果改变所述第一配额的所述第一值:当所述结果是所述第一线程的中止时,减小所述第一配额。3.如权利要求1或2中任一项所限定的装置,其特征在于,所述调整器用于基于所述第一线程的推测性执行的结果改变第二配额的第二值。4.如权利要求3所限定的装置,其特征在于,所述调整器用于通过以下方式来基于所述第一线程的推测性执行的结果改变所述第二配额的所述第二值:当所述结果为成功执行且所述第一值等于所述第二值时,增加所述第二值;以及当所述结果为成功执行且所述第一值比所述第二值小阈值量时,减小所述第二值。5.如权利要求1或2中任一项所限定的装置,其特征在于,还包括控制器,所述控制器用于响应于所述第一配额尚未被达到,使所述第一线程出队,并使来自所述队列的所述第一线程能够推测性地执行。6.如权利要求5所限定装置,其特征在于,所述控制器用于响应于所述第一配额已被达到,将所述第一线程保持在所述队列的头部。7.如权利要求6所限定的装置,其特征在于,所述锁用于响应于所述第一配额已被达到,在所述第一线程被保持在所述队列的头部的情况下使所述第一线程能够推测性地执行。8.一种方法,包括:经由处理器强制执行用来对被允许在被存放在队列中之后同时推测性地执行的线程的数量进行控制的第一配额;响应于所述第一配额尚未被达到,经由所述处理器使来自所述队列中的第一线程能够推测性地执行;以及经由所述处理器基于所述第一线程的推测性执行的结果改变所述第一配额的第一值。9.如权利要求8所限定的方法,其特征在于,基于所述第一线程的推测性执行的结果改变所述第一配额的所述第一值包括:当所述结果为所述第一线程的中止时,减小所述第一配额。10.如权利要求8或9中任一项所限定的方法,其特征在于,还包括:基于所述第一线程的推测性执行的结果改变第二配额的第二值。11.如权利要求10所限定的方法,其特征在于,基于所述第一线程的推测性执行的结果改变所述第二配额的所述第二值包括:当所述结果为成功执行且所述第一值等于所述第二值时,增加所述第二值;以及当所述结果为成功执行且所述第一值比所述第二值小阈值量时,减小所述第二值。12.如权利要求8或9中任一项所限定的方法,其特征在于,还包括,响应于所述第一配额尚未被达到,将所述第一线程从所述队列中移除,并使来自所述队列的所述第一线程能够推测性地执行。13.如权利要求12所限定的方法,其特征在于,还包括,响应于所述第一配额已被达到,将所述第一线程保持在所述队列的头部。14.如权利要求13所限定的方法,其特征在于,还包括:响应于所述第一配额已被达到,在所述第一线程被保持在所述队列的头部的情况下使所述第一线程能够推测性地执行。15.一种包括指令的有形计算机可读存储介质,所述指令被执行时促使机器至少执行以...

【专利技术属性】
技术研发人员:S·C·陈A·科林
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1