[发明专利]用于X86中动态二进制优化的两阶段提交区域有效
申请号: | 201010615584.5 | 申请日: | 2010-12-16 |
公开(公告)号: | CN102103485A | 公开(公告)日: | 2011-06-22 |
发明(设计)人: | C·王;Y·吴 | 申请(专利权)人: | 英特尔公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 中国专利代理(香港)有限公司 72001 | 代理人: | 柯广华;王洪斌 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 x86 动态 二进制 优化 阶段 提交 区域 | ||
技术领域
本公开涉及动态二进制优化,更具体来说,涉及用于x86中的动态二进制优化的两阶段提交区域。
背景技术
硬件/软件(SW/HW)协同设计架构是用于现代架构创新的前景光明的技术,并且动态二进制优化是用于HW/SW协同设计架构的重要组成部分。随着事务存储(TM)或硬件锁省略(HLE)技术的进步,建议为动态二进制优化利用TM/HLE所支持的原子区域。由于保证原子区域以原子方式、一致地并且隔离地执行,所以原子区域中的代码可重排序,而不涉及不同线程之间的交互。但是,由于在锁定段上的严格存储器顺序,以锁省略为目标的TM/HLE所支持的原子区域不一定施加比X86中的动态二进制优化技术所需的更强的存储器顺序,并且更强的存储器顺序通常导致低效架构实现。
在X86中,存储器指令按照其程序顺序从CPU退出(即,有序退出)。但是,退出的存储数据(即,已用(senior)存储)可按其程序顺序在内部存储缓冲器中缓冲,并且稍后写到高速缓存/存储器。因此,X86中的存储器指令的执行可被看作具有两个阶段。在第一阶段,存储器指令从CPU退出,并且按照其原始程序顺序。在第一阶段之后,存储数据保持在存储缓冲器中,等待第二阶段。在第二阶段,加载指令没有动作,但是存储指令需要按照其原始程序顺序将数据从存储缓冲器回写到高速缓存(即,有序回写)。因此,在x86中,两个阶段都有序地执行。在逻辑上,我们可看出,加载指令在第一阶段结束时立即访问存储器,而存储指令在第二阶段结束时立即访问存储器。因此,如果它们访问不同的存储器,则X86允许先前的存储与稍后的加载之间的存储器访问的重排序。但是,由于两个阶段中都有序退出和有序退出-返回,x86不允许两个加载指令或者两个存储指令之间的存储器访问的任何重排序。在动态二进制优化中,X86还禁止先前的加载与稍后的存储指令之间的存储器访问的重排序。
两个阶段使X86比实现顺序一致性的架构高效得多。存储指令可退出,而无需等待其数据回写到高速缓存。这消除了因存储未命中引起的对退出的昂贵延迟。为了在必要时支持关于存储器指令的存储器访问的严格顺序,X86允许使用昂贵的防护指令(包括锁定指令,因为在X86中,锁定指令还充当对于跨过锁定指令的存储器指令的防护)来强制实施存储器指令之间的存储器访问的严格顺序。防护指令的实现通过将两个阶段合并成一个单阶段来使两个阶段同步。因此,防护指令不能退出,直到所有已用存储被写到高速缓存。这样,可对跨过防护的存储器指令强制实施存储器访问的严格顺序。当然,在防护指令等待已用的存储的排出的过程中存在开销。
在事务存储(TM)和硬件锁省略(HLE)技术中已经有了许多进展。术语“事务存储”指的是通过允许一组加载和存储指令以原子方式执行来简化并行编程的尝试。这个上下文中的事务是对共享存储器执行一系列读和写的一段代码。这些读和写在逻辑上在单一时刻发生,因而中间状态是其它(成功的)事务不可见的。术语“锁省略”设法从包含锁的程序代码中消除锁。锁只能从原子区域内部去除。
现有TM/HLE技术实现原子区域(或事务)。除了从CPU的指令退出之外,原子区域中的各存储器指令还需要从推测高速缓存提交。原子区域中的所有指令具有原子提交的单一阶段或者完全撤回。虽然原子区域可实现许多二进制优化,但是原子区域的实现具有某种固有的低效。当采用x86中的原子区域的实现时遇到的一个问题在于,原子提交要求在该区域中的所有存储器指令可提交之前,该区域中的所有存储从存储缓冲器排出到高速缓存。等待存储的排出可延迟在原子区域之后发生的任何指令的退出。由于原子区域一定会以原子方式一致并且隔离地执行,所以原子区域中的代码可重排序,而不涉及不同线程之间的交互。但是,由于关于跨过锁定段边界的存储器指令的存储器访问的严格顺序,以锁省略为目标的TM/HLE所支持的原子区域不一定施加比x86中的动态二进制优化所需的更严格的存储器访问顺序。更严格的顺序通常导致效率较低的架构实现。
至今,即使有,也是存在极少涉及以动态二进制优化为目标的区域的两个提交阶段的开发的研究和工作。以推测锁省略为目标的现有TM/HLE技术实现采用单一阶段原子提交的原子区域。
发明内容
按照本发明的一个方面,提供一种方法,包括:
加载源二进制代码供计算机系统执行,所述计算机系统包括存储器和处理单元,所述处理单元包括多个寄存器和至少一个存储缓冲器;
在所述源二进制代码的运行时间期间,识别所述源二进制代码中的多个频繁执行的存储器指令,所述频繁执行的存储器指令包括多个存储指令和多个加载指令;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010615584.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:避雷设备
- 下一篇:嵌入VoIP的交互式网络语音应答系统及其实现方法