[发明专利]用于推测性执行的控制的自适应队列式锁定有效
| 申请号: | 201680025784.0 | 申请日: | 2016-04-29 |
| 公开(公告)号: | CN107636616B | 公开(公告)日: | 2021-12-14 |
| 发明(设计)人: | S·C·陈;A·科林 | 申请(专利权)人: | 英特尔公司 |
| 主分类号: | G06F9/52 | 分类号: | G06F9/52 |
| 代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 李炜;黄嵩泉 |
| 地址: | 美国加利*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 推测 执行 控制 自适应 队列 锁定 | ||
公开了用于推测性执行的控制的自适应队列式锁定。一种示例装置包括:锁,该锁用于强制执行用来对被允许在被存放在队列中之后同时推测性地执行的线程的数量进行控制的第一配额;以及响应于第一配额尚未被达到,使来自队列中的第一线程能够推测性地执行;以及调整器,该调整器用于基于第一线程的推测性执行的结果改变第一配额的第一值。
本专利要求于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)涉及并行地推测性地执行的多个线程。每个线程包括一个或多个事务(例如,存储器事务)。当与特定线程有关的冲突发生时,对应的事务被中止并且随后被重试。在一些情况下,事务在能够成功执行之前被重试若干次。在一些情况下,事务回退到非事务路径。
当经历了大量的冲突时,对应的大量事务中止阻止了通过代码的前向进程。这些问题在例如特定代码段的冲突概率由于更多的线程正在运行而迅速增加时出现。当冲突发生且线程在被中止之后重试执行时,冲突概率由于新线程到达并引入更多冲突而迅速升级,从而形成对冲突概率的正反馈。最终,瓶颈形成,并且在被中止之后尝试重试执行的线程不能够产生显著的前向进程(例如,仅不期望的慢进程被产生),因为太多的线程正在尝试同时执行。
一些事务存储器系统通过实现严格控制对关键段的访问的锁来缓解瓶颈,这些关键段是访问共享的存储器并因此在由多个线程并行执行时具有创建冲突的可能的代码段。具体而言,这些锁通过禁止除了一个线程以外所有的线程执行代码的关键段来保护代码的关键段。只有已获取了锁的线程才被允许执行关键段。在这些情况下,各线程通过例如重复地尝试获取锁来竞争锁,从而授予获得了锁的线程在关键段中执行的许可。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680025784.0/2.html,转载请声明来源钻瓜专利网。





