Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3380536.3380538acmconferencesArticle/Chapter ViewAbstractPublication PagesppoppConference Proceedingsconference-collections
research-article
Public Access

TardisTM: incremental repair for transactional memory

Published: 22 February 2020 Publication History

Abstract

Transactional memory (TM) provides developers with a transaction primitive for concurrent code execution that transparently checks for concurrency conflicts. When such a conflict is detected, the system recovers by aborting and restarting the transaction. Although correct, this behavior wastes work and inhibits forward progress.
In this paper, we present TardisTM, a software TM system that supports repairing concurrency conflicts while preserving unaffected computation. Our key insight is that existing conflict detection mechanisms can be extended to perform incremental transaction repair, when augmented with additional runtime information. To do so, we design a mechanism for localizing conflicts back to transactional program points, define the semantics for optional repair handler annotations, and extend the conflict detection algorithm to ensure all repairs are completed. To evaluate our system, we characterize the benefit of repair on a set of benchmark programs; we measure up to 2.95x speedup over mutual exclusion, and 93% abort reduction over a baseline software TM system that does not support repair.

References

[1]
Utku Aydonat and Tarek S. Abdelrahman. 2008. Serializability of Transactions in Software Transactional Memory. In TRANSACT '08. ACM.
[2]
Colin Blundell, Arun Raghavan, and Milo M.K. Martin. 2010. RETCON: Transactional Repair Without Replay. In ISCA '10. ACM, 258--269.
[3]
Thomas M. Breuel. 1988. Lexical Closures for C++. In C++ Conference. USENIX, 293--304.
[4]
Nathan G. Bronson, Jared Casper, Hassan Chafi, and Kunle Olukotun. 2010. Transactional Predication: High-Performance Concurrent Sets and Maps for STM. In PODC '10. ACM, 6--15.
[5]
David Maxwell Chickering, David Heckerman, and Christopher Meek. 1997. A Bayesian Approach to Learning Bayesian Networks with Local Structure. In UAI '97. AUAI, 80--89.
[6]
Luke Dalessandro, Michael F. Spear, and Michael L. Scott. 2010. NOrec: Streamlining STM by Abolishing Ownership Records. In PPoPP '10. ACM, 67--78.
[7]
Peter Damron, Alexandra Fedorova, Yossi Lev, Victor Luchangco, Mark Moir, and Daniel Nussbaum. 2006. Hybrid Transactional Memory. In ACM Sigplan Notices, Vol. 41. ACM, 336--346.
[8]
Al Danial. [n.d.]. cloc. https://github.com/AlDanial/cloc
[9]
Dave Dice, Ori Shalev, and Nir Shavit. 2006. Transactional Locking II. In Distributed Computing, David Hutchison, Takeo Kanade, Josef Kittler, Jon M. Kleinberg, Friedemann Mattern, John C. Mitchell, Moni Naor, Oscar Nierstrasz, C. Pandu Rangan, Bernhard Steffen, Madhu Sudan, Demetri Terzopoulos, Dough Tygar, Moshe Y. Vardi, Gerhard Weikum, and Shlomi Dolev (Eds.). Vol. 4167. Springer Berlin Heidelberg, 194--208.
[10]
Nuno Diegues and Paolo Romano. 2014. Time-Warp: Lightweight Abort Minimization in Transactional Memory. In PPoPP '14. ACM, 167--178.
[11]
Chen Ding, Xipeng Shen, Kirk Kelsey, Chris Tice, Ruke Huang, and Chengliang Zhang. 2007. Software Behavior Oriented Parallelization. In PLDI '07. ACM, 223--234.
[12]
Aleksandar Dragojević, Rachid Guerraoui, and Michal Kapalka. 2009. Stretching Transactional Memory. In PLDI '09. ACM, 155--165.
[13]
K. P. Eswaran, J. N. Gray, R. A. Lorie, and I. L. Traiger. 1976. The Notions of Consistency and Predicate Locks in a Database System. Commun. ACM 19, 11 (Nov. 1976), 624--633.
[14]
P. Felber, C. Fetzer, P. Marlier, and T. Riegel. 2010. Time-Based Software Transactional Memory. IEEE Transactions on Parallel and Distributed Systems 21, 12 (Dec. 2010), 1793--1807.
[15]
Anthony Green. [n.d.]. Libffi. https://sourceware.org/libffi/
[16]
Rachid Guerraoui, Maurice Herlihy, and Bastian Pochon. 2005. Toward a Theory of Transactional Contention Managers. In PODC '05. ACM, 258--264.
[17]
P. Hammarlund, A. J. Martinez, A. A. Bajwa, D. L. Hill, E. Hallnor, H. Jiang, M. Dixon, M. Derr, M. Hunsaker, R. Kumar, R. B. Osborne, R. Rajwar, R. Singhal, R. D'Sa, R. Chappell, S. Kaushik, S. Chennupaty, S. Jourdan, S. Gunther, T. Piazza, and T. Burton. 2014. Haswell: The Fourth-Generation Intel Core Processor. IEEE Micro 34, 2 (March 2014), 6--20.
[18]
Tim Harris. 2007. Abstract Nested Transactions. In TRANSACT '04. ACM, 10.
[19]
Maurice Herlihy and Eric Koskinen. 2008. Transactional Boosting: A Methodology for Highly-Concurrent Transactional Objects. In PPoPP '08. ACM, 207.
[20]
Maurice Herlihy, Victor Luchangco, Mark Moir, and William N. Scherer, III. 2003. Software Transactional Memory for Dynamic-Sized Data Structures. In PODC'03. ACM, 92--101.
[21]
Maurice Herlihy and J. Eliot B. Moss. 1993. Transactional Memory: Architectural Support for Lock-Free Data Structures. In ISCA '93. ACM, 289--300.
[22]
Nathaniel Herman, Jeevana Priya Inala, Yihe Huang, Lillian Tsai, Eddie Kohler, Barbara Liskov, and Liuba Shrira. 2016. Type-Aware Transactions for Faster Concurrent Code. In EuroSys '16. ACM, 31:1--31:16.
[23]
Gokcen Kestor, Osman S. Unsal, Adrian Cristal, and Serdar Tasiran. 2014. T-Rex: A Dynamic Race Detection Tool for C/C++ Transactional Memory Applications. In EuroSys '14. ACM, 20:1--20:12.
[24]
Eric Koskinen and Maurice Herlihy. 2008. Checkpoints and Continuations Instead of Nested Transactions. In SPAA '08. ACM, 160--168.
[25]
Eric Koskinen, Matthew Parkinson, and Maurice Herlihy. 2010. Coarse-Grained Transactions. In POPL '10. ACM, 19--30.
[26]
Milind Kulkarni, Donald Nguyen, Dimitrios Prountzos, Xin Sui, and Keshav Pingali. 2011. Exploiting the Commutativity Lattice. In ACM SIGPLAN Notices, Vol. 46. ACM, 542--555.
[27]
Heiner Litz, David Cheriton, Amin Firoozshahian, Omid Azizi, and John P. Stevenson. 2014. SI-TM: Reducing Transactional Memory Abort Rates through Snapshot Isolation. In ASPLOS'14. ACM, 383--398.
[28]
Chi Cao Minh, JaeWoong Chung, C. Kozyrakis, and K. Olukotun. 2008. STAMP: Stanford Transactional Applications for Multi-Processing. In IISWC '08. IEEE, 35--46.
[29]
J. E.B. Moss. 1985. Nested Transactions: An Approach to Reliable Distributed Computing. Massachusetts Institute of Technology.
[30]
Donald Nguyen and Keshav Pingali. 2017. What Scalable Programs Need from Transactional Memory. In ASPLOS'17. ACM, 105--118.
[31]
Yang Ni, Vijay S. Menon, Ali-Reza Adl-Tabatabai, Antony L. Hosking, Richard L. Hudson, J. Eliot B. Moss, Bratin Saha, and Tatiana Shpeisman. 2007. Open Nesting in Software Transactional Memory. In PPoPP '07. ACM, 68--78.
[32]
Marek Olszewski, Jeremy Cutler, and J. Gregory Steffan. 2007. JudoSTM: A Dynamic Binary-Rewriting Approach to Software Transactional Memory. In PACT '07. IEEE, 365--375.
[33]
Sunjae Park, Christopher J. Hughes, and Milos Prvulovic. 2018. Transactional Pre-Abort Handlers in Hardware Transactional Memory. In PACT '18. ACM, 33:1--33:11.
[34]
Dmitri Perelman, Rui Fan, and Idit Keidar. 2010. On Maintaining Multiple Versions in STM. In PODC '10. ACM, 16--25.
[35]
Hany E. Ramadan, Indrajit Roy, Maurice Herlihy, and Emmett Witchel. 2009. Committing Conflicting Transactions in an STM. In PPoPP '09. ACM, 163--172.
[36]
Torvald Riegel, Pascal Felber, and Christof Fetzer. 2006. A Lazy Snap-shot Algorithm with Eager Validation. In DISC'06. Springer-Verlag, 284--298.
[37]
Wenjia Ruan, Yujie Liu, and Michael Spear. 2014. STAMP Need Not Be Considered Harmful. In TRANSACT'14. ACM.
[38]
Mohamed M. Saad, Masoomeh Javidi Kishi, Shihao Jing, Sandeep Hans, and Roberto Palmieri. 2019. Processing Transactions in a Predefined Order. In PPoPP '19. ACM, 120--132.
[39]
Mohamed M. Saad, Roberto Palmieri, Ahmed Hassan, and Binoy Ravindran. 2016. Extending TM Primitives Using Low Level Semantics. In SPAA '16. ACM, 109--120.
[40]
Bratin Saha, Ali-Reza Adl-Tabatabai, Richard L. Hudson, Chi Cao Minh, and Benjamin Hertzberg. 2006. McRT-STM: A High Performance Software Transactional Memory System for a Multi-Core Runtime. In PPoPP '06. ACM, 187--197.
[41]
William N. Scherer, III and Michael L. Scott. 2005. Advanced Contention Management for Dynamic Software Transactional Memory. In PODC '05. ACM, 240--248.
[42]
Nir Shavit and Dan Touitou. 1995. Software Transactional Memory. In PODC '95. ACM, 204--213.
[43]
Travis Skare and Christos Kozyrakis. 2006. Early Release: Friend or Foe?. In WTW '06. ACM.
[44]
Alexander Spiegelman, Guy Golan-Gueta, and Idit Keidar. 2016. Transactional Data Structure Libraries. In PLDI'16. ACM, 682--696.
[45]
Ruben Titos-Gil, Manuel E. Acacio, Jose M. Garcia, Tim Harris, Adrian Cristal, Osman Unsal, Ibrahim Hur, and Mateo Valero. 2012. Hardware Transactional Memory with Software-Defined Conflicts. ACM Trans. Archit. Code Optim. 8, 4 (Jan. 2012), 31:1--31:20.
[46]
Linus Torvalds. [n.d.]. Git. https://git-scm.com
[47]
I. Watson, C. Kirkham, and M. Lujan. 2007. A Study of a Transactional Parallel Routing Algorithm. In PACT '07. IEEE, 388--400.
[48]
W. E. Weihl. 1988. Commutativity-Based Concurrency Control for Abstract Data Types. IEEE Trans. Comput. 37, 12 (Dec. 1988), 1488--1505.
[49]
Mark Weiser. 1981. Program Slicing. In ICSE '81. IEEE, 439--449.
[50]
Richard M. Yoo and Hsien-Hsin S. Lee. 2008. Adaptive Transaction Scheduling for Transactional Memory Systems. In SPAA '08. ACM, 169--178.
[51]
G. Zhang, V. Chiu, and D. Sanchez. 2016. Exploiting Semantic Commutativity in Hardware Speculation. In MICRO '16. IEEE, 1--12.

Cited By

View all
  • (2021)Characterizing the Sharing Behavior of Applications Using Software Transactional MemoryBenchmarking, Measuring, and Optimizing10.1007/978-3-030-71058-3_1(3-21)Online publication date: 2-Mar-2021

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PMAM '20: Proceedings of the Eleventh International Workshop on Programming Models and Applications for Multicores and Manycores
February 2020
85 pages
ISBN:9781450375221
DOI:10.1145/3380536
  • Editors:
  • Quan Chen,
  • Zhiyi Huang,
  • Min Si
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs International 4.0 License.

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 February 2020

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. incremental computation
  2. program repair
  3. software transactional memory

Qualifiers

  • Research-article

Funding Sources

Conference

PPoPP '20

Acceptance Rates

PMAM '20 Paper Acceptance Rate 8 of 15 submissions, 53%;
Overall Acceptance Rate 53 of 97 submissions, 55%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)80
  • Downloads (Last 6 weeks)15
Reflects downloads up to 14 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Characterizing the Sharing Behavior of Applications Using Software Transactional MemoryBenchmarking, Measuring, and Optimizing10.1007/978-3-030-71058-3_1(3-21)Online publication date: 2-Mar-2021

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media