发明名称 软件事务性存储器操作的优化
摘要 描述了对软件事务性存储器指令执行优化以实现高效性能的软件事务性存储器系统。软件事务性存储器块由软件事务性存储器指令来替换,这些指令随后被分解成分解的软件事务性存储器指令。分解的指令允许了解指令语义的编译器执行在传统的事务性存储器系统上不可用的优化。执行高级软件事务性存储器优化,诸如过程调用周围的代码移动、添加提供强原子性的操作、移除不必要的读取-更新升级、以及移除对新分配的对象的操作。
申请公布号 CN101542437B 申请公布日期 2012.11.28
申请号 CN200680045337.8 申请日期 2006.11.27
申请人 微软公司 发明人 T·L·哈里斯;M·R·佩里斯科;A·E·肖纳;D·R·小泰迪蒂
分类号 G06F9/45(2006.01)I 主分类号 G06F9/45(2006.01)I
代理机构 上海专利商标事务所有限公司 31100 代理人 陈斌
主权项 一种计算机系统中的方法,所述计算机系统包括处理单元和编译器,所述编译器是用关于软件事务性存储器操作的知识来配置的,所述方法被执行来编译程序,所述程序包括原子块,所述方法包括:将软件事务性存储器指令插入到原子块中,这是通过在块内的读或写的实例周围插入正确的基于字的读或写软件事务性存储器指令来执行的;用分解的软件事物性存储器指令来替换基于字的软件事务性存储器指令;执行高级软件事务性存储器指令优化(460),其中,执行高级软件事务性存储器指令优化包括:引入对强原子性的操作,其中引入对强原子性的操作包括:定位原子块外部的存储器访问;确定该存储器访问是读取访问还是更新访问;如果该存储器访问是读取访问,则在该存储器访问之前插入一打开对象来读取操作,以及在该存储器访问之后插入一检验指令;以及如果该存储器访问是更新访问,则在该存储器访问之前插入一打开对象来更新操作,以及在该存储器访问之后插入一提交操作,用打开对象来更新操作替换打开对象来读取操作及其后的打开相同对象来更新操作,这包括:标识总是跟有对同一对象的打开对象来更新操作的打开对象来读取操作;用对同一对象的打开对象来更新操作替换所标识的打开对象来读取操作;移除冗余的打开对象来更新操作,移动过程调用周围的分解的软件事务性存储器指令,其中移动过程调用周围的分解的软件事务性存储器指令包括:标识所述程序中的一个或多个过程,所述过程包括能够在所述过程外部优化的一个或多个软件事务性存储器指令;对所述一个或多个过程中的每一个,创建所述过程的克隆的版本,所述克隆的版本允许对能够在所述克隆的版本外部优化的软件事务性存储器指令的调用;将所述一个或多个软件事务性存储器指令移动到所述过程外部的所述过程的调用点;以及用对其克隆的版本的调用来替换对所述一个或多个过程的每一个的调用,移除对于在将对象记入日志的事务中新分配的对象的日志记录操作,这包括:在一组程序点处标识对总是绑定到事务中新分配的对象的变量;以及移除通过这些变量操作的取消日志操作;优化包括分解的软件事务性存储器指令的所述程序,其中优化所述程序包括:对分解的软件事务性存储器指令的修改创建约束,对分解的软件事务性存储器指令执行公共子表达式消除过程;以及编译(340)经优化的程序。
地址 美国华盛顿州
您可能感兴趣的专利