【技术实现步骤摘要】
【国外来华专利技术】软件事务性存储器操作的优化的制作方法软件事务性存储器操作的优化 相关申请的交叉引用本申请要求2006年3月23日提交的美国专利申请第11/389,451号的优先 权,后者要求2005年12月7日提交的美国临时申请第60/748,386号的优先权。背景多线程进程的多个线程在并发执行期间共享公共存储器是常见的。因此, 多线程化进程的两个不同线程必须读取和更新可由程序访问的同一存储器位 置。然而,必须小心确保当一个线程正处于依赖于共享存储器位置的值的操纵 序列中间时另 一个线程不会修改该值。例如,假定一程序正在访问两个不同软件对象的内容,其中每一对象表示 一不同银行帐户中的金钱数额。最初,第一帐户的数额是$10,其存储在存储 器地址A1处,而第二帐户的数额是$200,其存储在存储器地址A2处。银行 程序的第一线程被编码为将$100从A2转移到Al,而第二线程被编码为计算 两个帐户中的资金的总额。第一线程可通过向Al的内容增加$100而开始,从 而将其更新为$110,然后继续从A2的内容中减去S100,从而将其更新为$100。 然而,如果第二线程在这两个操作之间执行,则第二线程可对这两个帐户计算 出不正确的总额$310而非正确的总额$210。软件事务性存储器提供了一编程抽象,通过该编程抽象,线程可安全地执 行一系列共享存储器访问,从而允许线程在没有来自另一线程的干扰的情况下 完成其事务。因此,事务性存储器可在软件中用于确保包括第一线程的示例性 加法和减法操作的事务关于存储器位置Al和A2是原子的,且因此第二 线程将计算两个帐户的正确的总额。然而,用于以软件来实现事务 ...
【技术保护点】
一种计算机系统中的方法,所述计算机系统包括处理单元和编译器,所述编译器是用关于软件事务性存储器操作的知识来配置的,所述方法被执行来编译程序,所述程序包括软件事务性存储器块,所述方法包括: 优化(460)所述程序以创建包含软件事务性存储 器指令的经优化的程序;以及 编译(340)所述经优化的程序。
【技术特征摘要】
【国外来华专利技术】US 2005-12-7 60/748,386;US 2006-3-23 11/389,4511.一种计算机系统中的方法,所述计算机系统包括处理单元和编译器,所述编译器是用关于软件事务性存储器操作的知识来配置的,所述方法被执行来编译程序,所述程序包括软件事务性存储器块,所述方法包括优化(460)所述程序以创建包含软件事务性存储器指令的经优化的程序;以及编译(340)所述经优化的程序。2. 如权利要求1所述的方法,其特征在于,优化所述程序包括将直接访问软件事务性存储器指令在所述软件事务性存储器块处插入到所述程序中;以及对包括所述软件事务性存储器指令的所述程序执行优化,以创建一经优化的程序,使得所述优化的至少某一些被配置成特别地对所述直接访问软件事务性存储器指令操作。3. 如权利要求2所述的方法,其特征在于,执行优化包括执行公共子表达式消除过程,该过程被修改为对分解的软件事务性存储器指令操作。4. 如权利要求3所述的方法,其特征在于,所述公共子表达式消除过程被修改成使得打开一对象来读取的指令在所述同一事务内的打开一对象来更新的指令之后被消除。5. 如权利要求3所述的方法,其特征在于,所述公共子表达式消除过程被修改成使得一事务内对从存储器地址的冗余读和写以及对存储器地址的冗余日志被移除。6. 如权利要求5所述的方法,其特征在于,所述公共子表达式消除过程还被修改成使得如果第一事务中的读和写被第二事务中的读和写变得冗余,则消除所述第一事务中的读和写,其中所述第一事务嵌套在所述第二事务内。7. 如权利要求2所述的方法,其特征在于,执行优化包括执行代码运动优化。8. 如权利要求2所述的方法,其特征在于,执行优化包括用确保对一存储器事务外部的对象的事务性存储器访问与访问该对象的至少一个非事务性存储器操作之间的原子性的一个或多个事务性存储器操作来扩充所述至少一个非事务性存储器操作。9. 如权利要求8所述的方法,其特征在于,扩充非事务性存储器操作包括在所述非事务性存储器操作之前插入一打开操作,所述打开操作打开所述对象以供所述非事务性存储器操作访问;以及在所述非事务性存储器操作之后插入一提交操作,所述提交操作确定在所述非事务性存储器操作的执行期间是否有对所述对象的冲突访问。10. 如权利要求9所述的方法,其特征在于-所述非事务性存储器操作是读取操作;所述打开操作被配置成在所述非事务性存储器操作的执行之前检索所述对象的状态的指示;以及所述提交操作被配置成在所述非事务性存储器操作的执行之后检索所述对象的状态的指示;以及如果所述对象的状态指示冲突的访问,则使得所述打开、读取和提交操作循环,直到读取变为可能。11. 如权利要求9所述的方法,其特征在于所述非事务性存储器操作是写入操作;所述打开操作被配置成获得对所述对象的写访问;以及所述提交操作被配置成提交对所述对象所作的写入。12. 如权利要求9所述的方法,其特征在于,所述打开和提交命令利用了所述对象的同步来确保所述非事务性存储器操作原子地执行。13. 如权利要求9所述的方法,其特征在于,所述打开命令阻断,直到它能够打开所述对象来访问。14. 如权利要求8所述的方法,其特征在于,还包括标识访问存储器事务外部的对象的一个或多个存储器操作。15. 如权利要求14所述的方法,其特征在于,标识一个或多个存储器操作包括分析事务性存储器访问以确定可在所述软件的执行期间被事务性存储器操作访问的字段;标识访问可被事务性存储器操作访问的字段的一个或多个非事务性存储器操作。16. 如权利要求15所述的方法,其特征在于,对确保不被事务性存储器操作访问的任何字段,避免对访问该字段的非事务性存储器操作的扩充。17. 如权利要求16所述的方法,其特征在于,用一个或多个事务性存储器操作来扩充访问存储器事务外部的对象的非事务性存储器操作包括在所述非事务性存储器操作周围插入原子存储器事务块。18. 如权利要求2所述的方法,其特征在于,执行优化包括在一组程序点处标识对总是绑定到事务中新分配的对象的对象的引用;以及防止对象上的软件事务性存储器操作通过所标识的弓I用到达,其中所述操作在所述事务外部没有效果。19. 如权利要求18所述的方法,其特征在于,在一组程序点处标识对总是绑定到新分配的对象的对象的引用跨过程调用而发生。20. 如权利要求19所述的方法,其特征在于,在一组程序点处标识对总是绑定到新分配的对象的对象的引用包括对所述程序执行前向数据流分析。21. 如权利要求20所述的方法,其特征在于,所述前向数据流分析包括对每一基本块维护一数据结构,所述数据结构表示,在所述基本块中的一位置处,对所述基本块中的每一变量,如果所述变量或者已知为总是被赋值给新分配的对象,则所述变量可能被赋值给在所述事务外部分配的对象,或者对所述变量信息是未知的。22. 如权利要求21所述的方法,其特征在于,所述数据结构包括从每一引用到对每一引用保持的数据的映射,其中对每一引用保持的数据包括包含一点阵值和引用之间的依赖性的可更新单元。23. 如权利要求22所述的方法,其特征在于,维护所述数据结构包括使用所述引用之间...
【专利技术属性】
技术研发人员:TL哈里斯,MR佩里斯科,AE肖纳,DR小泰迪蒂,
申请(专利权)人:微软公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。