发明名称 Compiler support for optimizing decomposed software transactional memory operations
摘要 A software transactional memory system is described which utilizes decomposed software transactional memory instructions as well as runtime optimizations to achieve efficient performance. The decomposed instructions allow a compiler with knowledge of the instruction semantics to perform optimizations which would be unavailable on traditional software transactional memory systems. Additionally, high-level software transactional memory optimizations are performed such as code movement around procedure calls, addition of operations to provide strong atomicity, removal of unnecessary read-to-update upgrades, and removal of operations for newly-allocated objects. During execution, multi-use header words for objects are extended to provide for per-object housekeeping, as well as fast snapshots which illustrate changes to objects. Additionally, entries to software transactional memory logs are filtered using an associative table during execution, preventing needless writes to the logs. Finally a garbage collector with knowledge of the software transactional memory system compacts software transactional memory logs during garbage collection.
申请公布号 US8799882(B2) 申请公布日期 2014.08.05
申请号 US200611389451 申请日期 2006.03.23
申请人 Microsoft Corporation 发明人 Tarditi, Jr. David Read;Harris Timothy Lawrence;Plesko Mark Ronald;Shinnar Avraham E.
分类号 G06F9/45 主分类号 G06F9/45
代理机构 代理人 Sullivan Kevin;Drakos Kate;Minhas Mickey
主权项 1. A method of compiling a program, the program including software transactional memory blocks and the method comprising: by a computer, optimizing the program to create an optimized program containing software transactional memory instructions; wherein optimizing the program comprises: (a) inserting one or more word-based direct-access software transactional memory instructions at the software transactional memory blocks;(b) replacing the one or more word-based direct-access software transactional memory instructions with decomposed software transactional memory instructions in the program at the software transactional memory blocks;and(c) performing optimizations on the program to create the optimized program, such that at least some of the optimizations are configured to operate specifically on the decomposed software transactional memory instructions; wherein performing optimizations comprises performing a common subexpression elimination procedure which is modified to operate on decomposed software transactional memory instructions such that a decomposed software transactional memory instruction to open an object for read, that comprises a parameter that references the object, is eliminated which takes place after a decomposed software transactional memory instruction to open the object for update within a same transaction; wherein the optimizations are performed within software transactional memory constraints, the software transactional memory constraints comprising data dependencies which are introduced into the decomposed software transactional memory instructions; wherein the data dependencies enforce a call order based on output variables for at least some of the decomposed software transactional memory instructions being input variables for subsequent decomposed software transactional memory instructions; and compiling the optimized program.
地址 Redmond WA US