Simplifying Transactional Memory Support in C++

Simplifying Transactional Memory Support in C++
复制标题

DOI:
10.1145/3328796
复制
发表时间:
2019-07
期刊:
ACM Transactions on Architecture and Code Optimization (TACO)
影响因子:
--
通讯作者:
P. Zardoshti;Tingzhe Zhou;Pavithra Balaji;M. Scott;Michael F. Spear
P. Zardoshti;Tingzhe Zhou;Pavithra Balaji;M. Scott;Michael F. Spear
中科院分区:
其他
文献类型:
--
作者:
P. Zardoshti;Tingzhe Zhou;Pavithra Balaji;M. Scott;Michael F. Spear

文献摘要

被引文献

相似文献

自2015年以来,C++已经通过技术规范支持了Transmittance Memory(TM)的临时版本。然而,TM还没有被广泛采用,编译器供应商在实现技术规范方面进展缓慢。我们推测,提出的TM支持是太难了程序员使用,太复杂的编译器设计师实现和验证,并没有足够的行业证明,以证明其目前的形式最终标准化。为了解决这些问题,我们提出了一个不同的设计,支持TM在C++。通过禁止显式的自中止,并通过引入基于执行程序的机制来运行事务,我们的方法使开发人员更容易使用TM启动和运行代码。我们的建议也应该是有吸引力的编译器开发人员,因为它允许一系列的TM支持水平,不同的性能,并不同的依赖于硬件TM支持,以提供可扩展性。虽然我们的设计不允许一些优化承认目前的技术规范,我们表明,它使强大的支持TM在一个小的,正交的编译器扩展的实施。我们的实现是能够处理各种各样的事务程序,提供低仪器开销和可扩展性和性能与目前的最先进的水平。基于这种经验,我们相信我们的方法是一个可行的手段,重振TM在C++的标准化。
C++ has supported a provisional version of Transactional Memory (TM) since 2015, via a technical specification. However, TM has not seen widespread adoption, and compiler vendors have been slow to implement the technical specification. We conjecture that the proposed TM support is too difficult for programmers to use, too complex for compiler designers to implement and verify, and not industry-proven enough to justify final standardization in its current form. To address these problems, we present a different design for supporting TM in C++. By forbidding explicit self-abort, and by introducing an executor-based mechanism for running transactions, our approach makes it easier for developers to get code up and running with TM. Our proposal should also be appealing to compiler developers, as it allows a spectrum of levels of support for TM, with varying performance, and varying reliance on hardware TM support in order to provide scalability. While our design does not enable some of the optimizations admitted by the current technical specification, we show that it enables the implementation of robust support for TM in a small, orthogonal compiler extension. Our implementation is able to handle a wide range of transactional programs, delivering low instrumentation overhead and scalability and performance on par with the current state of the art. Based on this experience, we believe our approach to be a viable means of reinvigorating the standardization of TM in C++.