Software transactional memory (STM) is a concurrency control mechanism analogous to database transactions for controlling access to shared memory in concurrent computing. A transaction in the context of transactional memory is a piece of code that executes a series of reads and writes to shared memory. A data value in the context of transactional memory is the particular segment of shared memory being accessed, such as a single object, a cache line (such as in C++), a page, a single word, etc.
A software transactional memory system must implement transactional semantics for all memory operations, otherwise atomicity and isolation are compromised. Object-based STMs use a per-object concurrency control mechanism: each object contains “metadata” used by the STM for concurrency control (a kind of lock). This requires that, at the point of invoking a transactional operation on a field of an object, the object's identity can be discovered. But even object-based systems have data not stored in objects: e.g., static and local variables. STMs may transct such data in a different fashion. Unfortunately, in a software system that permits taking an address of a data item and passing this address to separately compiled functional units, often the source of the data item cannot be recovered. As an example, consider this C# code:
This code examples above illustrate the classic problem. When method b is compiled, the runtime argument that will be supplied for the parameter x is not known. Yet the caller, a, calls b with four different types of values, each of which refers to a type of location which utilizes different concurrency control mechanisms. Generally, object-based STM systems ensure transactional semantics for static variables, local variables (locals and arguments), and instance fields or array elements in different ways, meaning b must somehow recover the source of the argument x.
Various technologies and techniques are disclosed that provide software transactional protection of managed pointers. A software transactional memory system interacts with and/or includes a compiler. At compile time, the compiler determines that there are one or more reference arguments in one or more code segments being compiled whose source cannot be recovered. The compiler executes a procedure to select one or more appropriate techniques or combinations thereof for communicating the sources of the referenced variables to the called code segments to ensure the referenced variables can be recovered when needed. Some examples of these techniques include a fattened by-ref technique, a static fattening technique, a dynamic ByRefInfo type technique, and others. One or more combinations of these techniques can be used as appropriate.
This Summary was provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
For the purposes of promoting an understanding of the principles of the invention, reference will now be made to the embodiments illustrated in the drawings and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope is thereby intended. Any alterations and further modifications in the described embodiments, and any further applications of the principles as described herein are contemplated as would normally occur to one skilled in the art.
The system may be described in the general context as a software transactional memory system, but the system also serves other purposes in addition to these. In one implementation, one or more of the techniques described herein can be implemented as features within a framework program such as MICROSOFT® .NET Framework, or from any other type of program or service that provides platforms for developers to develop software applications. In another implementation, one or more of the techniques described herein are implemented as features with other applications that deal with developing applications that execute in concurrent environments.
As shown in
Additionally, device 100 may also have additional features/functionality. For example, device 100 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in
Computing device 100 includes one or more communication connections 114 that allow computing device 100 to communicate with other computers/applications 115. Device 100 may also have input device(s) 112 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 111 such as a display, speakers, printer, etc. may also be included. These devices are well known in the art and need not be discussed at length here. In one implementation, computing device 100 includes software transactional memory application 200 and compiler application 202. In one implementation, compiler application 202 uses the software transactional memory application 200 to generate properly transacted code.
Turning now to
Turning now to
In one form, the process of
Turning now to
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. All equivalents, changes, and modifications that come within the spirit of the implementations as described herein and/or by the following claims are desired to be protected.
For example, a person of ordinary skill in the computer software art will recognize that the client and/or server arrangements, and/or data layouts as described in the examples discussed herein could be organized differently on one or more computers to include fewer or additional options or features than as portrayed in the examples.
Number | Name | Date | Kind |
---|---|---|---|
4898132 | Kanno | Feb 1990 | A |
5121498 | Gilbert et al. | Jun 1992 | A |
5157777 | Lai | Oct 1992 | A |
5263155 | Wang | Nov 1993 | A |
5274820 | Gillet | Dec 1993 | A |
5446899 | Brett | Aug 1995 | A |
5590326 | Manabe | Dec 1996 | A |
5761477 | Wahbe et al. | Jun 1998 | A |
5802373 | Yates et al. | Sep 1998 | A |
5875334 | Chow et al. | Feb 1999 | A |
5960436 | Chang et al. | Sep 1999 | A |
5983225 | Anfindsen | Nov 1999 | A |
5999987 | O'Farrell | Dec 1999 | A |
6047125 | Agesen et al. | Apr 2000 | A |
6085035 | Ungar | Jul 2000 | A |
6138269 | Ball | Oct 2000 | A |
6173444 | Archambault | Jan 2001 | B1 |
6219666 | Krishaswamy et al. | Apr 2001 | B1 |
6223335 | Cartwright et al. | Apr 2001 | B1 |
6240413 | Learmont | May 2001 | B1 |
6314563 | Agesen et al. | Nov 2001 | B1 |
6317870 | Mattson, Jr. | Nov 2001 | B1 |
6397379 | Yates et al. | May 2002 | B1 |
6499123 | McFarland et al. | Dec 2002 | B1 |
6546443 | Kakivaya et al. | Apr 2003 | B1 |
6553384 | Frey | Apr 2003 | B1 |
6654760 | Baskins | Nov 2003 | B2 |
6681226 | Bretl et al. | Jan 2004 | B2 |
6704926 | Blandy et al. | Mar 2004 | B1 |
6718349 | Weedon | Apr 2004 | B2 |
6718542 | Kosche et al. | Apr 2004 | B1 |
6721945 | Sinha | Apr 2004 | B1 |
6735760 | Dice | May 2004 | B1 |
6826757 | Steele, Jr. | Nov 2004 | B2 |
6850938 | Sadjadi | Feb 2005 | B1 |
6856993 | Verma et al. | Feb 2005 | B1 |
6865734 | Holzle et al. | Mar 2005 | B2 |
6874141 | Swamy et al. | Mar 2005 | B1 |
6952829 | Banavar et al. | Oct 2005 | B1 |
6981249 | Knoblock et al. | Dec 2005 | B1 |
7000234 | Shavit et al. | Feb 2006 | B1 |
7017160 | Martin et al. | Mar 2006 | B2 |
7028293 | Ruf | Apr 2006 | B2 |
7058954 | Wollrath | Jun 2006 | B1 |
7065752 | Willard | Jun 2006 | B2 |
7069545 | Wang et al. | Jun 2006 | B2 |
7076784 | Russell | Jul 2006 | B1 |
7080364 | Tang et al. | Jul 2006 | B2 |
7082600 | Rau et al. | Jul 2006 | B1 |
7111290 | Yates et al. | Sep 2006 | B1 |
7254597 | Moir et al. | Aug 2007 | B2 |
7254806 | Yates et al. | Aug 2007 | B1 |
7254808 | Trappen et al. | Aug 2007 | B2 |
7395382 | Moir | Jul 2008 | B1 |
7428725 | Niyogi et al. | Sep 2008 | B2 |
7434010 | Duffy | Oct 2008 | B2 |
7478210 | Saha et al. | Jan 2009 | B2 |
7536517 | Harris | May 2009 | B2 |
7555619 | Harris | Jun 2009 | B2 |
7590806 | Harris et al. | Sep 2009 | B2 |
7676638 | Duffy | Mar 2010 | B2 |
7716640 | Pik et al. | May 2010 | B2 |
7895582 | Duffy | Feb 2011 | B2 |
20020010911 | Cheng et al. | Jan 2002 | A1 |
20020116403 | Weedon | Aug 2002 | A1 |
20020165727 | Greene et al. | Nov 2002 | A1 |
20030033328 | Cha et al. | Feb 2003 | A1 |
20030236786 | Shi et al. | Dec 2003 | A1 |
20030237077 | Ghiya et al. | Dec 2003 | A1 |
20040003278 | Chen et al. | Jan 2004 | A1 |
20040015642 | Moir et al. | Jan 2004 | A1 |
20040015925 | Hanson | Jan 2004 | A1 |
20040205740 | Lavery | Oct 2004 | A1 |
20050188362 | Metzger et al. | Aug 2005 | A1 |
20060036574 | Schweigkoffer et al. | Feb 2006 | A1 |
20060136454 | Tchouati et al. | Jun 2006 | A1 |
20100169869 | Hamilton | Jul 2010 | A1 |
Number | Date | Country |
---|---|---|
2809511 | Nov 2001 | FR |
2239334 | Jun 1991 | GB |
Entry |
---|
International Search Report, PCT/US2007/015404, Jan. 2, 2008, pp. 1-12. |
International Search Report, PCT/US06/29327, Jan. 22, 2008, pp. 1-11. |
Non-Final Rejection, U.S. Appl. No. 12/197,043, dated Jul. 22, 2009, pp. 1-5. |
Response to Non-Final Rejection, U.S. Appl. No. 12/197,043, dated Oct. 5, 2009, pp. 1-3. |
Notice of Allowance and Fees Due, U.S. Appl. No. 12/197,043, dated Dec. 2, 2009, pp. 1-4. |
New Zealand Examination Report, Application No. 565417, dated Sep. 24, 2009, pp. 1-2. |
EP Search Report, Communication, Application No. EP07835975.9, dated Apr. 27, 2010, pp. 1-7. |
EP Search Report, Application No. EP06788738.0, dated Nov. 5, 2010, pp. 1-11. |
Moore et al., “Thread-Level Transaction Memory,” dated Mar. 31, 2005, University of Wisconsin, Department of Computer Sciences, pp. 1-12. |
Ennals, “Efficient Software Transactional Memory,” dated Jan. 1, 2003, Intel Research, Cambridge, UK, pp. 1-16. |
Marathe, “Software Transactional Memory Algorithms for Dynamic Transactions,” dated Nov. 2004, University of Rochester, Department of Coomputer Science, pp. 1-30. |
Chinese First Office Action, Application No. 200680026687.X, dated Jun. 17, 2010, pp. 1-16. |
Chinese Response to First Office Action, Application No. 200680026687.X, dated Oct. 21, 2010, pp. 1-20. |
EP Search Report, Rules 70(2) and 70a(2) EPC, Application No. EP07835975.9, dated May 17, 2010, p. 1. |
EP Search Report, Rule 62a(1) EPC,Application No. EP06788738.0, dated Aug. 6, 2010, pp. 1-2. |
Response to EP Search Report, Communication, Application No. EP07835975.9, dated Sep. 10, 2010, pp. 1-12. |
Response to EP Search Report, Rule 62a(1) EPC,Application No. EP06788738.0, dated Oct. 5, 2010, pp. 1. |
Chinese Voluntary Amendments, Application No. 200680026687.X, dated Nov. 17, 2009, pp. 1-8. |
Herlihy et al., “Transactional Memory: Architectural Support for Lock-Free Data Structures”, International Symposium on Computer Architecture—ISCA , May 1993, San Diego, California, ACM SIGARCH Computer Architecture News , pp. 289-300. |
Shaughnessy, “Managed Code Database Advantage for the Microsoft .NET Framework Platform”, BorCon Borland Conference, Sep. 11-15, 2004, San Jose, California, pp. 1-5. |
Herlihy et al., “Software Transactional Memory for Dynamic-Sized Data Structures”, Symposium on Principles of Distributed Computing—PODC, Jul. 13-16, 2003, Boston, Massachusetts, pp. 92-101. |
Non-Final Rejection, U.S. Appl. No. 11/192,784, dated Jan. 11, 2008, 9 pages. |
Response to Non-Final Rejection, U.S. Appl. No. 11/192,784, dated Mar. 25, 2008, 16 pages. |
Non-Final Rejection, U.S. Appl. No. 11/192,784, dated Aug. 4, 2008, 12 pages. |
Response to Non-Final Rejection, U.S. Appl. No. 11/192,784, dated Oct. 9, 2008, 12 pages. |
Notice of Allowance and Fees Due, U.S. Appl. No. 11/192,784, dated Feb. 12, 2009, 4 pages. |
Notice of Allowance and Fees Due, U.S. Appl. No. 11/499,091, 5 pages. |
Non-Final Rejection, U.S. Appl. No. 11/499,012, dated Apr. 1, 2010, 24 pages. |
Response to Non-Final Rejection, U.S. Appl. No. 11/499,012, dated May 27, 2010, 11 pages. |
Non-Final Rejection, U.S. Appl. No. 11/499,012, dated Jul. 20, 2010, 9 pages. |
Response to Non-Final Rejection, U.S. Appl. No. 11/499,012, dated Oct. 14, 2010, 12 pages. |
Notice of Allowance and Fees Due, U.S. Appl. No. 11/499,012, dated Nov. 16, 2010, 11 pages. |
Shavit et al., “Software Transaction Memory”, 12th Annual ACM Symposium on Principles of Distributed Compiling (PODC), 1995, Ottawa, Canada, pp. 204-213. |
Marathe et al., “Adaptive Software Transactional Memory,” Technical Report #868, May 2005, Department of Computer Science, University of Rochester, Rochester, New York, pp. 1-15. |
Harris et al., “Language Support for Lightweight Transactions,” 18th Annual ACM SIGPLAN Conference, Oct. 2003, ACM Press, New York, New York, pp. 388-402. |
Ennals, R. Cache Sensitive Software Transactional Memory, 2005, Intel Research, Cambridge, United Kingdom, pp. 1-11. |
Fraser, Practical Lock-Freedom, Technical Report #579, Feb. 2004, University of Cambridge—Computer Laboratory, Cambridge, United Kingdom, pp. 1-116. |
Harris et al., “Revocable Locks for Non-Blocking Programming,” 10th Annual ACM SIGPLAN Symposium on Priniciples and Practice of Parallel Programming, Jun. 2005, ACM Press, New York, New York, pp. 72-82. |
Harris et al., “Composable Memory Transactions,” ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Dec. 2004, ACM Press, New York, New York, pp. 48-60. |
Kienzle, “Open Multithreaded Transactions: A Transaction Model for Concurrent Object-Oriented Programming,” retrieved from <http://jotm.objectweb.org/TP—related.html>, Apr. 2001, pp. 1-269. |
Moravan et al., “Supporting Nested Transactional Memory in LogTM,” ACM ASPLOS, Oct. 2006, San Jose, California, pp. 359-370. |
Quislant et al., “Improving Signatures by Locality Exploitation for Transactional Memory,” PACT, Sep. 2009, Raleigh, North Carolina, IEEE, pp. 303-312. |
Felber et al., “The VELOX Transactional Memory Stack,” IEEE Micro, 2010, Los Alamitos, California, pp. 1-9. |
Jia et al., “Certifying Compilation for a Language with Stack Allocation,” LICS Symposium, Jun. 2005, Chicago, Illinois, pp. 1-10. |
McDonald et al., “Architectural Semantics for Practical Transactional Memory,” IEEE Computer Society, 2006 Washington, DC, pp. 53-65. |
Saha et al., “McRT-STM: A High Performance Software Transactional Memory System for a Multi-Core Runtime,” 2006, ACM Press, New York, New York, pp. 187-197. |
Tabatabi et al., “Compiler and Runtime Support for Efficient Software Transactional Memory,” 2006, ACM Press, New York New York, pp. 26-37. |
Atkins, “Adaptable Concurrency Control for Atomic Data Types”, Aug. 1992, vol. 10, No. 3, retrieved from <http://portal.acm.org/citation.cfm?id=146939&coll=ACM&dl=ACM&CFID=176859&CFTOKEN=92839444>,pp. 190-225. |
Herlihy, “Apologizing versus Asking Permission: Optimistic Concurrency Control on Abstract Data Types,” Mar. 1990, vol. 15, No. 1, retrieved from <http://portal.acm.org/citation.cfm?id=77647&coll=ACM&dl=ACM&CFID=176859&CFTOKEN=92839444>, pp. 96-124. |
Herlihy, “Optimistic Concurrency Control for Abstract Data Types,” 1986, retrieved from <http://delivery.acm.org/10.1145/20000/10608/p206-herlihy.pdf?key1=10608&key2=4622283511&coll=ACM&dl=ACM&CFID=176859&CFTOKEN=92839444>, pp. 206-217. |
International Search Report, PCT/US2007/015405, Jan. 23, 2008, pp. 1-10. |
Minwen et al., “Seneca: Remote Mirroring Doe Write,” Proceedings of USENIX Technical Conference, San Antonio, Texas, Jun. 2003, pp. 253-268. |
Response to EP Office Action, Appliation No. 06 788 738.0, dated May 27, 5011, 8 pages. |
Response to EP Office Action, Application No. 06 788 738.0, dated May 27, 2011, 8 pages. |
Response to EP Office Action, Application No. 07 835 974.2, dated Jul. 19, 2011, 1 page. |
CN Notice on Grant of Patent Right for Invention, Application No. 200680026687, dated Jun. 17, 2011, 4 pages. |
JP Notice of Rejection, Application No. 2008-524174, dated Aug. 23, 2011, 2 pages. |
English Translation of JP Notice of Rejection, Application No. 2008-524174, dated Aug. 23, 2011, 2 pages. |
CN Patent Certificate for Invention, Application No. 200680026687, dated Nov. 9, 2011, 4 pages. |
JP Amendment to Notice of Rejection, Application No. 2008-524174, dated Nov. 21, 2011, 5 pages. |
JP Argument to Notice of Rejection, Application No. 2008-524174, dated Nov. 21, 2011, 3 pages. |
JP Notice of Rejection, Application No. 2008-524174, dated Dec. 13, 2011, 1 page. |
English Translation of JP Notice of Rejection, Application No. 2008-524174, dated Dec. 13, 2011, 1 page. |
Extended EP Search Report, Application No. 07835974.2, dated Sep. 28, 2011, 14 pages. |
Response, EP Application No. 07835974.2, dated Apr. 27, 2012, 12 pages. |
EP Application No. 06788738.0, Official Communication dated Feb. 6, 2012, 5 pages. |
EP Application No. 06788738.0, Response to Official Communication, dated Jun. 13, 2012, 13 pages. |
Number | Date | Country | |
---|---|---|---|
20080034359 A1 | Feb 2008 | US |