[发明专利]用于执行循环的方法、系统、装置和处理器以及机器可读介质有效
申请号: | 201380076139.8 | 申请日: | 2013-05-30 |
公开(公告)号: | CN105164637B | 公开(公告)日: | 2017-12-19 |
发明(设计)人: | H·帕克;H·容;Y·吴 | 申请(专利权)人: | 英特尔公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/46 |
代理公司: | 永新专利商标代理有限公司72002 | 代理人: | 邬少俊,王英 |
地址: | 美国加*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 管线 软件 动态 优化 | ||
技术领域
实施例涉及管线化的软件。
背景技术
软件管线化是一种编译器技术,该技术可以通过循环的多个迭代的重叠执行来增加计算密集型循环的吞吐量。在重叠的多个迭代中,由于操作顺序的反转,一些迭代可以是推测的,例如,操作的执行顺序可能和循环中指示的执行顺序不同。在推测的迭代过程中发生的异常可以使迭代的结果无效。用于更正无效结果的一种技术是丢弃所有之前的循环迭代的结果,并再一次开始循环计算(“卷回”),其在计算资源和时间方面会很昂贵。
附图说明
图1是根据本发明的实施例的用于优化循环的执行的系统的方框图。
图2是根据本发明的实施例的针对管线调度的循环的优化方案。
图3是根据本发明的实施例的用于对管线调度的循环的执行进行优化的方法的流程图。
图4是根据本发明的实施例的处理器的方框图。
图5示出了根据本发明的实施例的包括多个核心的处理器的实施例。
图6是根据本发明的实施例的系统的方框图。
具体实施方式
在本文中呈现了装置和方法用于以具有原子执行支持的动态优化的方式来减少卷回开销的装置和方法。在本发明的实施例中,呈现了可以以对软件管线化的循环的动态二进制优化的方式来减少卷回的开销的代码生成技术。
原子区域可以指定执行激进推测(数据和控制两者)的代码的区域,并且在该区域的末端提交更新。由于原子区域限制优化范围,增加原子区域的大小可以是重要的。然而,更大的原子区域具有增加的卷回开销的缺点,例如,当检测到任何不期望的行为(例如,推测失败异常、侧退出(side exits)、存储器故障)时,可能丢弃在区域内取得的任何进展,可能将执行卷回到区域的开端,并且可能利用较不激进的优化来重复该循环。
响应于不期望的行为(例如,异常、故障、推测失败、侧退出),本发明的实施例使最近的非推测迭代的结果能够恢复,并且提交自之前的提交以来的迭代。这可以通过以下方式来完成:保持之前的迭代的“在外(live-out)”值的额外的复本,并且延迟存储操作以保持存储器的内容完整并且不受推测的迭代干扰。
图1是根据本发明的实施例的用于优化循环的执行的系统100的方框图。系统100包括耦合至动态随机存取存储器(DRAM)180的处理器110。处理器110可以包括用于执行指令的一个或多个核心1120,1121…112n。处理器110还可以包括指令调度逻辑114、模变量扩展逻辑116、阶段插入逻辑118、补偿逻辑120以及包括高速缓存122的一个或多个高速缓存存储器。可以在软件、固件、硬件或其组合中实现指令调度逻辑114、模变量扩展逻辑116、阶段插入逻辑118和补偿逻辑120。
在操作中,包括多个操作的循环可以在多个核心中的一个上(例如在核心1120上)执行。指令调度逻辑114可以根据管线化的调度来调度循环的迭代。在一些实施例中,第一迭代的操作中的一个或多个可以被调度为在第二或之后的迭代中的操作中的一个或多个被调度以执行之后(例如,晚于)来执行。模变量扩展逻辑116可以将被赋值了循环的变量X的值的寄存器的寄存器名进行重命名(例如,采用替代寄存器Xi的使用来替代寄存器X),以便减少第一迭代中的一个或多个操作对之后的迭代中的一个或多个操作的依赖性。
循环执行多个迭代,并且每个迭代通常包括多个阶段。迭代的每个阶段包括在迭代的开始和紧接着的迭代的开始之间的多个周期(“迭代间隔”(II))。阶段插入逻辑118可以在运行时在执行之前向循环的每个迭代中插入阶段,以延长已经被重命名的寄存器的寿命(例如,在其期间依靠该寄存器来保存所赋值的值的时间段)并且延迟被重命名的寄存器的内容的存储。补偿逻辑120可以完成任意还没有执行的延迟的存储的执行,并在完成循环后向寄存器X返回最终值。
图2示出了根据本发明的实施例的对于管线调度的循环的优化方案。作为例性循环,伪代码循环210包括用于向寄存器X赋值的赋值操作(X←),之后是两个乘法(mult)操作,其后是将在迭代中确定的值(例如,寄存器X中的值或另一值)存储到存储器(例如,图1的DRAM 180)的存储位置中的存储操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380076139.8/2.html,转载请声明来源钻瓜专利网。