事务内存(TM)13是一个并发控制范例,它为代码区域提供原子和隔离的执行。TM被许多研究者认为是解决多核处理器编程问题最有前途的解决方案之一。它最吸引人的特性是,大多数程序员只需要对共享数据访问进行本地推理,标记要以事务方式执行的代码区域,并让底层系统确保正确的并发执行。该模型承诺提供细粒度锁的可伸缩性,同时避免锁组合的常见缺陷(如死锁)。在本文中,我们探讨了高度优化的STM的性能,并观察到TM的总体性能在低并行级别时要差得多,这可能会限制这种编程范式的采用。
事务性内存系统的不同实现会对性能和可编程性产生影响。Larus和Rajwar16介绍事务性内存系统实现的设计权衡的概述。我们在这里总结了一些设计选择:
混合系统的一个特例是硬件加速stm。在此场景中,事务语义由STM提供,硬件原语仅用于加速STM中的关键性能瓶颈。如果硬件原语的成本不高,并且可以被系统中的其他用途进一步摊销,这样的系统可以提供一个有吸引力的解决方案。
独立于这些实现决策之外,还存在一些事务语义问题,这些问题打破了社区所希望的理想事务编程模型。TM引入了基于锁的互斥中不存在的各种编程问题。例如,语义被混淆:
除了内在的语义问题之外,还存在由高事务开销驱动的特定于实现的优化,例如用于排除私有数据的程序员注释。此外,中止事务引入的非确定性使调试事务代码变得复杂——事务代码可能在冲突时被执行和中止,这使得程序员很难找到具有可重复行为的确定性路径。这两种方法都削弱了事务(特别是纯软件TM实现)的生产率论点。
考虑到所有这些问题,我们得出结论,TM还没有成熟到能够呈现出令人信服的价值主张,从而引发其广泛采用的程度。虽然TM可以成为并行程序员组合中的一个有用工具,但我们认为它本身并不能解决并行编程的困境。有证据表明,它有助于构建某些并发数据结构,如哈希表和二叉树。此外,有传闻称它有助于减轻工作量;然而,尽管在这一领域进行了多年的积极研究和发表,但我们失望地发现,在研究文献中没有提到使用TM的大规模应用。这枚邮票30.和Lonestar17基准测试套件是有希望的开始,但要成为完整应用程序的代表还有很长的路要走。
我们将这些结论建立在过去两年构建最先进的STM运行时系统和编译器框架(即免费提供的IBM STM)的工作之上。31在这里,我们将描述这种体验,首先讨论STM算法和设计决策。然后,我们将此STM的性能与其他两个最新的实现(Intel STM)进行比较14和Sun TL2 STM7),并剖析IBM STM执行的操作,并详细分析STM的性能热点。
STM实现了软件中的所有事务语义。这包括冲突检测、保证事务读取的一致性、保持原子性和隔离(防止其他线程在事务成功之前观察投机写入)以及冲突解决(事务仲裁)。一个典型的STM所执行的主要操作的伪代码在图1.我们将展示两种STM算法,一种执行完全验证,另一种使用全局版本号(用gv#注释标记的附加语句)。
对于系统程序员来说,STM的优势在于它提供了为这些操作实现不同机制和策略的灵活性。对于最终用户来说,STM的优点是它提供了一个环境来处理(即移植到TM)他们的应用程序,而不需要额外的硬件成本或等待这样的硬件被开发出来。
相反地,STM在性能和编程语义方面存在着不可忽视的缺陷:
malloc
而且免费的
.通过这样的STM设计,以事务方式访问的位置的内存分配和回收处理方式与其他位置不同。这里我们使用以下一组基准:
基线性能。在图2我们给出了三种STMs的性能比较:IBM,31,34英特尔,14和太阳的TL27STMs。运行在运行Linux Fedora Core 6的四核双向超线程Intel Xeon 2.3GHz盒子上。在这些运行中,我们使用了代码的手动仪器版本,从而大大减少了IBM和TL2 stm的障碍数量。由于我们不能访问Intel STM的低级api,因此Intel STM的曲线来自编译器插装的代码,由于编译器插装,这会产生额外的障碍开销。36这些图是相对于串行的、非事务化版本的可伸缩性曲线。因此y轴上的值为1表示与串行版本相同的性能。这些STM的性能基本相当,IBM STM的可伸缩性更好德劳内和TL2上获得更好的可伸缩性基因组。但是,获得的总体性能很低:onkmeansIBM STM在4个线程时几乎无法实现单线程性能,而在开启时假期即使使用8个线程,也没有任何stm能够克服事务性内存的开销。
编译器工具。编译器是大量程序员所采用的基于stm的编程环境的必要组件。它的基本作用是消除程序员对STM读和写障碍手动测量内存引用的需要。在提供便利的同时,编译器插测确实通过引入冗余障碍给STM系统增加了另一层开销,这通常是由于编译器分析的保守性,正如Yoo中所观察到的那样。36
图3提供另一个基准:编译器插装的开销。性能是在运行AIX 5.3的16路POWER5上测量的。对于STMXLC曲线,我们使用代码的非仪器化版本,并使用编译器提供的语言扩展对事务区域和函数进行注释。31
编译器过插装在传统的非托管语言中更为明显,例如C和c++,在这些语言中,没有过程间分析的编译器插装可能最终插装事务区域中的每个内存引用(堆栈访问除外)。实际上,我们的编译器插装使动态读障碍的数量增加了一倍多德劳内,基因组,kmeans.在某些情况下,过程间分析有助于提高编译器插装的紧密性,但通常受限于全局分析的准确性。
STM的操作性能。给定这个基线,我们现在详细分析STM中的哪些操作会导致开销。为此,我们使用PowerPC体系结构的周期精确模拟器,它为检测提供挂钩。STM操作和子操作是用这些模拟器挂钩进行检测的。使用这种环境的原因是,我们希望捕获指令级的开销,并消除实际硬件引入的任何其他不确定性。模拟器消除了由仪器引入的所有其他簿记操作,并提供了STM开销的精确细分。
我们研究了两种STM算法的性能:一种是在每次事务性读之后对读集进行完全验证(“fv”),另一种是使用全局版本号(“gv#”)来避免完全验证,同时保持操作的正确性。fv算法以更高的代价提供了更多的并发性。gv#被认为是STM实现的最佳折衷方案之一。
图4介绍了这些算法在连续运行时的单线程开销,再次说明了算法导致的大幅减速。图5将这些开销分解为各种STM组件。对于这两种算法,事务读的开销占主导地位,这是由于相对于所有其他操作而言,读操作的频率较高。全局版本号在减少开销方面的有效性体现在“gv#”较低的读取开销上。
图6给出事务性读取操作开销的详细分类。正如预期的那样,在“fv”配置中,验证读集的开销占事务读时间的大部分。对于这两种算法,同步操作(为排序元数据读取和数据读取以及数据读取和验证所必需)构成了一个重要的组件。在同一个事务(delaunay, kmeans)中执行写操作后再执行读操作的应用程序中,检查一个位置是否已被同一个事务中的先前写操作写入的时间占总时间的很大一部分。有趣的是,读取数据本身只占总时间的微不足道的一部分,这表明这些算法的性能必须克服的障碍令人信服。
图7给出事务提交操作的类似分类。与前面一样,“fv”配置必须验证读集。这两种配置的其他主要开销是必须为写集获取元数据(这涉及一系列加载链接/存储条件操作)和同步操作,这些操作是对获取元数据、数据写入和元数据释放进行排序所必需的。同样,数据写入本身只占总时间的一小部分。
开销优化。有许多关于通过编译器或运行时技术减少STM开销的建议,其中大多数是对STM硬件加速的补充。
这样的优化对STM性能有积极的影响。然而,本文给出的结果表明,要使stm的性能对用户具有普遍的吸引力,还需要进行多少进一步的创新。
第一个STM系统是由Shavit和Touitou提出的26并且基于对象所有权。该协议是静态的,这是后来提出的STM系统克服的一个重大缺点。7由于静态特性,冲突检测大大简化了,因为在获得所有权记录时(事务开始时)就可以排除冲突。
DSTM12是第一个动态STM系统;设计遵循每个对象的运行时组织(定位器对象)。应用程序堆中的变量(对象)引用定位器对象。不同于有所有权记录的设计(例如,哈里斯和弗雷泽10),定位器不存储厌恶号,而是引用对象最近提交的版本。DSTM设计的一个特殊之处在于,在事务访问之前,对象必须显式地“打开”(以只读或读写模式);DSTM还允许提前发布。作者认为,这两种机制都有助于减少冲突。
RSTM的设计原则18系统与DSTM类似,因为它将事务元数据与对象关联起来。但与DSTM不同的是,该系统不需要动态分配事务性数据,而是将事务性数据与非事务性数据放在一起。该方案有两个好处:首先,它促进了空间访问的局部性,从而提高了执行性能和事务吞吐量。其次,事务数据的动态内存管理(通常通过垃圾收集器完成)是不必要的,因此该方案适合在显式内存管理的环境中使用。
最近的工作探索了这里描述的基本STM算法的算法优化和/或替代实现。Riegel等人建议使用实时时钟来增强STM的可伸缩性,使用全局版本号。22JudoSTM21和RingSTM29减少在提交事务时必须执行的原子操作的数量,以序列化提交和/或由于不精确的冲突检测而导致虚假中止为代价。为了允许在遗留二进制文件上使用STM,已经为通过动态二进制重写操作的STM提出了一些建议。8,21,33
柳等36分析英特尔STM执行过程中的开销。14,23他们确定了四种主要的开销来源:过度工具化、虚假共享、摊销成本和私有化安全成本。虚假共享、私有安全和过度工具化是可以通过使用更细粒度的记账、更精细的分析或用户注释来消除的实现工件。摊销成本是STM中固有的开销,正如我们在这里演示的,不太可能被消除。
大量的研究工作已经花费在TM系统的操作分析上。最近的软件优化已经使STM性能提高了2% - 15%。我们相信这样的分析是一个很好的实践,应该扩展到每一个系统软件,特别是开源软件。然而,在我们观察到的开销中,这些收益只是很小的一部分,这表明社区在提高STM性能方面面临着巨大的挑战。
基于我们的结果,我们相信STM的未来道路是相当具有挑战性的。将STM的管理费用降低到普遍具有吸引力的程度是一项艰巨的任务,必须证明显著更好的结果。如果我们可以强调一个进一步研究的方向,那就是消除动态不必要的读和写障碍——这可能是进一步减少STM开销的最有力的手段。然而,考虑到研究团体所探索的类似问题(如别名分析、逸出分析等)的难度,这可能是一场艰难的战斗。由于TM的论据取决于它的简单性和生产力效益,我们对任何提出的需要程序员额外工作的性能问题的解决方案都深表怀疑。
我们注意到TM编程模型本身,无论是在硬件还是在软件中实现,都引入了限制预期生产力收益的复杂性,因此减少了迁移到事务编程的当前动机,以及目前对超出少量硬件支持的任何东西的理由。
我们要感谢Pratap Pattnaik的持续支持,Christoph von Praun的大量讨论,在基准和运行时方面的工作,以及Rajesh Bordawekar的B+树代码实现。
1.Baugh, L., Neelakantarn, N.和Zilles, C.使用硬件内存保护构建高性能、强原子混合事务内存。在第35届国际会议论文集。计算机体系结构研讨会。IEEE计算机学会,华盛顿,2008,115126。
2.布伦德尔,德维提,J.,刘易斯,e.l.,马丁,M.M.K.。在无界事务存储器中,使快速的情况普遍,不寻常的情况简单第34届计算机体系结构年度国际研讨会论文集。ACM,纽约,2007年。
3.Blundell, C, Lewis, C和Martin, M.M.K.事务性记忆原子性语义的微妙之处。IEEE TCCA计算机体系结构通讯2(2006年11月)。
4.Bobba, J., Goyal, N., Hill,医学博士,Swift, m.m.,和Wood, D.A. . TokenTM:使用硬件事务内存高效执行大型事务。在第35届计算机体系结构国际研讨会论文集。IEEE计算机学会,华盛顿,2008,127138。
5.齐泽、塔克、卡斯卡瓦尔、C、托雷拉斯、J.多处理器中推测线程的批量消歧。在第34届计算机体系结构年度国际研讨会论文集。纽约Acm, 2006, 237238。
6.Damron, P., Federava, A., Lev, Y., Luchangco, V., Moir, M.,和Nussbaum, D.混合事务存储器。在第12届编程语言和操作系统体系结构支持国际会议论文集, 2006年10月。
7.骰子,D, Shalev, O,和Shavit, n。阀瓣, 2006年9月,194208年。
8.Felber, P., Fetzer, C., Mueller, U., Riegel, T., Suesskraut, M.和Sturzrehm, H.使用开放编译器框架进行事务化应用程序。在事务计算ACM SIGPLAN研讨会论文集。2007年8月。
9.Hammond, L., Wong, V., Chen, M., Carlstrom, B.D., Davis, J.D., Hertzberg, B., Prabhu, M.K., Wijaya, H., Kozyrakis, C., Olukotun, K.交易性记忆的一致性和一致性。在第31届计算机体系结构年度国际研讨会论文集。IEEE计算机学会,2004年6月,102。
10.Harris, T.和Fraser, K.对轻量级事务的语言支持。在面向对象程序设计,系统,语言和应用。2003年10月,388402年。
11.Harris, T., Plesko, M., Shinnar, A.和Tarditi, D.优化内存事务。在程序设计语言设计与实现会议论文集。2003年,388402年。
12.Herlihy, Luchangco, V., Moir, M.和Scherer III, W.N.用于动态大小数据结构的软件事务存储器。在第22届ACM分布式计算原理研讨会论文集。2003年7月,92101年。
13.事务性内存:对无锁数据结构的架构支持。在第二十届计算机体系结构年度国际研讨会论文集。1993年5月。
14.Intel c++ STM编译器,原型版2.O;http://softwarecommunity.intel.com/articles/eng/1460.htm/(2008)。
15.Kulkarni, M., Pingali, K., Walter, B., Ramanarayanan, G., Baia, K.和Chew, P.L.乐观并行需要抽象。在2007年PLDI会议记录。Acm, ny, 2007, 211222。
16.拉鲁斯,J.R,拉杰瓦尔,R。事务内存.Claypool摩根,2006年。
17.Lonestar基准套件;http://iss.ices.utexas.edu/lonestar/(2008)。
18.Marathe, v.j., Spear, m.f., Heriot, C, Acharya, A, Eisenstat, D, Scherer III, W.N,和Scott, M.L.降低软件事务内存的开销。技术报告TR 893,计算机科学系,罗切斯特大学,2006年3月。浓缩版已提交出版。
19.Minh, c.c., Trautmann, M., Chung, J., McDonald, A., Branson, N., Casper, J., Kozyrakis, C.和Olukotun, K.一个具有强隔离保证的有效混合事务存储系统。在第34届计算机体系结构年度国际研讨会论文集。Acm,纽约,2007,6980。
20.摩尔,k.e.,波巴,J., Moravan, m.j.,希尔,医学博士和伍德,D.A.。LogTM:基于日志的事务性记忆。在第十二届高性能计算机体系结构年度国际研讨会论文集2006年2月。
21.Olszewski, M., Cutler, J., Steffan, J.G. Judostm:一种用于软件事务内存的动态二进制重写方法。在第16届并行架构与编译技术国际会议论文集。2007.IEEE计算机学会,华盛顿特区,365375。
22.Riegel, T., Fetzer, C.和Felber, P.具有可伸缩时间基的基于时间的事务内存。在第19届ACM算法和体系结构并行研讨会论文集, 2007年
23.Saha, B., Adl-Tabatabai, a.r., Hudson, r.l., Minh, c.c.,和Hertzberg, B. Mcrt-stm:一种用于多核运行时的高性能软件事务存储系统。在第11届ACM并行编程原理与实践研讨会论文集。2006年3月,纽约ACM, 187197。
24.Saha, B., Adl-Tabatabai, a.r.和Jacobson, Q.软件事务内存的体系结构支持。在第39届微建筑年度国际研讨会论文集中。2006年12月,185196年。
25.Shavit, N.和Touitou, D.软件事务存储器。在ACM分布式计算原理研讨会论文集。ACM, 1995年。
26.沙维特,N.,图头,D.软件事务记忆。在第十四届ACM分布式计算原理研讨会论文集。ACM,纽约,1995年。
27.Shpeisman, T., Menon, V, Adl-Tabatabai, A-R。,Balensiefer, S., Grossman, D., Hudson, R., Moore, K.F., and Saha, B. Enforcing isolation and ordering in STM. In程序设计语言设计与实现会议论文集。ACM、2007、7888。
28.A. Shriraman, Spear, M.F, Hossain, H., Marathe, V.J., Dwarkadas, S.,和Scott, M.L.灵活事务存储器的集成硬件-软件方法。在第34届计算机体系结构年度国际研讨会论文集。ACM,纽约,2007年,104115年。
29.Spears, m.t., Michael, m.m.,和von Praum, C. Ringstm:使用单个原子指令的可伸缩事务。在第20届ACM算法和体系结构并行研讨会论文集。ACM,纽约,275284年。
30.邮票基准;http://stamp.stanford.edu/(2007)。
31.(IBM)用于AIX事务内存的XL C/ c++;www.alphaworks.ibm.com/tech/xlcstm/(2008)。
32.M. Tremblay和S. Chaudhry, S.第三代65nm 16核32线程加32侦察线程CMT。在IEEE国际固态电路会议论文集。2008年2月。
33.王c . Chein, W-Y, Wu Y., Saha, B.和Adl-Tabatabai, A.R.非托管语言中事务内存构造的代码生成和优化。在代码生成与优化国际研讨会论文集。2007年,3448年。
34.Wu P., Michael, m.m., von Praun, C., Nakaike, T., Bordawekar, R., Cain, h.w., Cascaval, C., Chatterjee, S., Chiras, S., Hou, R., Mergen, M., Shen, X., Spear, M.F., Wang H.Y,和Wang K.用于软件事务内存优化的编译器和运行时技术。出现在并发与计算:实践与经验, 2008年。
35.Yen, L., Bobba, J., Marty, m.m., Moore, k.e., Volos。H., Hill, m.d., Swift, m.m.,和Wood, D.A. . LogTM-SE:从缓存中分离硬件事务内存。在第十三届高性能计算机体系结构国际研讨会论文集。2007年2月。
36.Yoo, r.m., Ni, Y., Welc, A., Saha, B. Adl-Tabatabai, A- r。和李,H-H.S。探究软件事务内存:为什么会变得如此艰难。第20届ACM算法和体系结构并行年会论文集, 2008年。
37.张,R, Budirnli基于时间戳的STM中的提交阶段。在第20届算法和体系结构并行年会论文集。ACM,纽约,326335年。
a.为其他目的重用硬件也可以证明它的存在,就像Sun在Rock处理器中实现Scout Threading一样。32
DOI: http://doi.acm.org/10.1145/1400214.1400228
图2。四核Intel Xeon服务器上三个STM运行时的可伸缩性结果:IBM、Intel STM v2和Sun TL2。
©2008 acm 0001-0782/08/1100 $5.00
允许为个人或课堂使用本作品的全部或部分制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。
数字图书馆是由计算机协会出版的。版权所有©2008 ACM, Inc.
没有发现记录