文件Open Access徽标

烹饪书籍:正式化JMM实现食谱

作者 古斯塔沃·佩特里, 扬·维泰克, 苏雷什·贾甘纳森



PDF格式
缩略图PDF

文件

LIPIcs公司。ECOOP.2015.445.pdf文件
  • 文件大小:0.65 MB
  • 25页

文件标识符

作者详细信息

古斯塔沃·佩特里
扬·维泰克
苏雷什·贾甘纳森

引用为获取BibTex

古斯塔沃·佩特里(Gustavo Petri)、扬·维泰克(Jan Vitek)和苏雷什·贾加纳森(Suresh Jagannathan)。烹饪书籍:正式化JMM实现食谱。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第445-469页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)
https://doi.org/10.4230/LIPIcs.ECOOP.2015.445

摘要

Java内存模型(JMM)旨在描述并发Java程序的含义。然而,由于模型的复杂性,它的定义不能轻易移植到优化的Java编译器中,尽管其设计的一个重要理由是确保Java编译器优化不会因语言的并发特性而受到过度阻碍。作为回应,Lea的JSR-133编译器编写者食谱(Cookbook for Compiler Writers)开发了一本非正式指南,用于在不同(松弛内存)平台上实现JMM的基本原理。该食谱的目标是为编译器编写人员提供一组相对简单但相当有效的基于重新排序的食谱,以满足JMM约束。在本文中,我们提出了食谱的第一种形式化,提供了一个语义基础,在此基础上可以严格建立食谱定义的食谱和JMM强制执行的保证之间的关系。值得注意的是,我们调查的一个结果是,食谱中定义的将Java编译到Power上的规则与JMM的要求不一致,这是一个令人惊讶的结果,也证明了我们需要正式可证明的定义来推理Java中复杂(和活泼)的并发模式,以及它们在现代松弛内存硬件上的实现。我们的形式化使Lea建议的那种依赖于体系结构的中间表示与Power和x86的机器抽象之间能够进行模拟。此外,我们还为与目标平台承认的行为不一致的食谱食谱提供修复,并证明这些修复的正确性。
关键词
  • 并发
  • Java语言
  • 内存模型
  • 放松的记忆

韵律学

工具书类

  1. Sarita V.Adve和Mark D.Hill。弱有序——一个新的定义。《第17届计算机体系结构国际研讨会论文集》(ISCA 1990),西雅图,华盛顿州,1990年6月,第2-14页,1990年。谷歌学者
  2. 杰德·阿尔格拉夫、丹尼尔·克罗宁、文森特·尼马尔和丹尼尔·波兹尔。不要坐在围栏上-一种自动插入围栏的静态分析方法。计算机辅助验证(CAV 2014),奥地利维也纳,2014年7月18日至22日。会议记录,第508-524页,2014年。谷歌学者
  3. 杰德·阿尔加莱、吕克·马兰吉特和迈克尔·陶奇尼格。《放牧猫:弱记忆的建模、模拟、测试和数据挖掘》。ACM事务处理。程序。语言系统。,36(2):7, 2014.谷歌学者
  4. Arvind和Jan-Willem Maessen。内存模型=指令重新排序+存储原子性。第33届计算机体系结构国际研讨会(ISCA 2006),2006年6月17日至21日,美国马萨诸塞州波士顿,第29-40页。谷歌学者
  5. 大卫·阿斯皮纳尔和雅罗斯拉夫·谢夫契克。正式确定Java的无数据竞争保证。在《高阶逻辑中的定理证明》,第20届国际会议(TPHOLs 2007),德国凯泽斯劳滕,2007年9月10日至13日,《论文集》,第22-37页。谷歌学者
  6. Mark Batty、Kayvan Memarian、Scott Owens、Susmit Sarkar和Peter Sewell。阐明和编译C/C++并发:从C++11到POWER。第39届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL 2012),美国宾夕法尼亚州费城,2012年1月22日至28日,第509-520页,2012年。谷歌学者
  7. Michael D.Bond、Milind Kulkarni、Man Cao、Minjia Zhang、Meisam Fathi Salmi、Swarnendu Biswas、Aritra Sengupta和Jipeng Huang。OCTET:高效捕获和控制跨线程依赖项。《2013年ACM SIGPLAN面向对象编程系统语言与应用国际会议论文集》(OOPSLA 2013),印第安纳波利斯,印第安纳州,2013年10月26日至31日,第693-712页,2013年。谷歌学者
  8. 热拉尔·布多尔、古斯塔沃·佩特里和伯纳德·塞尔佩特。并发编程语言的宽松操作语义。《第19届并发表达性国际研讨会暨第9届结构化操作语义研讨会论文集》(EXPRESS/SOS 2012),英国泰恩河畔纽卡斯尔,2012年9月3日,第19-33页。谷歌学者
  9. Delphine Demange、Vincent Laporte、Lei Zhao、Suresh Jagannathan、David Pichardie和Jan Vitek。方案B:Java的缓冲内存模型。第40届ACM SIGPLAN-SIGACT编程语言原理年度研讨会(POPL 2013),2013年1月23日至25日,意大利罗马,第329-342页,2013年。谷歌学者
  10. 科马克·弗拉纳根(Cormac Flanagan)和马蒂亚斯·费尔莱森(Matthias Felleisen)。未来的语义及其在程序优化中的应用。第22届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL 1995),1995年1月23日至25日,美国加利福尼亚州旧金山,第209-220页,1995年。谷歌学者
  11. 科马克·弗拉纳根(Cormac Flanagan)、阿姆·萨布里(Amr Sabry)、布鲁斯·杜巴(Bruce F.Duba)和马蒂亚斯·费尔莱森(Matthias Felleisen)。用连续体编译的本质。1993年6月23日至25日,美国新墨西哥州阿尔伯克基,ACM SIGPLAN’93编程语言设计与实现会议记录(PLDI 1993),第237-247页。谷歌学者
  12. JMM邮件列表:开发JEP 188:Java内存模型更新。http://mail.openjdk.java.net/mailman/listinfo/jmm-dev, 2014.
  13. Java内存模型和线程规范,2004年。谷歌学者
  14. 莱斯利·兰波特。如何制作正确执行多进程程序的多处理器计算机。IEEE传输。计算机,28(9):690-6911997。谷歌学者
  15. 道格·李。JSR-133编译器编写者食谱。网址:http://g.oswego.edu/dl/jmm/cookbook.html.
  16. Sela Mador Haim、Luc Maranget、Susmit Sarkar、Kayvan Memarian、Jade Alglave、Scott Owens、Rajeev Alur、Milo M.K.Martin、Peter Sewell和Derek Williams。POWER多处理器的公理存储模型。《计算机辅助验证——第24届国际会议》(CAV 2012),美国加州伯克利,2012年7月7日至13日,《会议记录》,第495-512页,2012年。谷歌学者
  17. Jeremy Manson、William Pugh和Sarita V.Adve。Java内存模型。2005年POPL特别版(草案)。谷歌学者
  18. 丹尼尔·马里诺(Daniel Marino)、阿巴耶德拉·辛格(Abhayendra Singh)、托德·米尔斯坦(Todd D.Millstein)、穆苏瓦蒂夫人(Madanal Musuvathi)和萨蒂什·纳拉亚纳萨米(Satish Narayanasamy)。SC-preserving编译器案例。《第32届ACM SIGPLAN编程语言设计与实现会议论文集》(PLDI 2011),美国加利福尼亚州圣何塞,2011年6月4日至8日,第199-210页,2011年。谷歌学者
  19. 雅罗斯拉夫·什维克和大卫·阿斯皮纳尔。Java内存模型中程序转换的有效性。在ECOOP 2008-面向对象编程,第22届欧洲会议,塞浦路斯帕福斯,2008年7月7日至11日,会议记录,第27-51页,2008年。谷歌学者
  20. JaroslavŠevčík、Viktor Vafeiadis、Francesco Zappa Nardelli、Suresh Jagannathan和Peter Sewell。CompCertTSO:一个经过验证的松弛内存并发编译器。J.ACM,60(3):222013年。谷歌学者
  21. 斯科特·欧文斯(Scott Owens)、苏斯米特·萨卡尔(Susmit Sarkar)和彼得·苏厄尔(Peter Sewell)。一种更好的x86内存模型:x86-TSO。《高阶逻辑中的定理证明》,第22届国际会议,(TPHOLs 2009),德国慕尼黑,2009年8月17日至20日。会议记录,第391-407页,2009年。谷歌学者
  22. 古斯塔沃·佩特里(Gustavo Petri)、扬·维泰克(Jan Vitek)和苏雷什·贾加纳森(Suresh Jagannathan)。《烹饪书籍:正式化JMM实施食谱》(扩展版),2015年。网址:https://www.cs.purdue.edu/home/gpetri/publis/CtB-long.pdf.
  23. PowerPC ISA。版本2.06版本B.IBM,2010年。谷歌学者
  24. 苏米特·萨卡尔(Susmit Sarkar)、彼得·苏厄尔(Peter Sewell)、杰德·阿尔加莱(Jade Algale)、吕克·马兰吉特(Luc Maranget)和德里克·威廉姆斯(Derek Williams)。了解POWER多处理器。2011年6月4日至8日,美国加利福尼亚州圣何塞市,第32届ACM SIGPLAN编程语言设计与实现会议记录(PLDI 2011),第175-186页。谷歌学者
  25. 丹尼斯·沙沙和马克·斯尼尔。高效且正确地执行共享内存的并行程序。ACM事务处理。程序。语言系统。,10(2):282-312, 1988.谷歌学者
  26. Abhayendra Singh、Satish Narayanasamy、Daniel Marino、Todd D.Millstein和Madanal Musuvathi。端到端顺序一致性。2012年6月9日至13日,美国俄勒冈州波特兰,第39届国际计算机体系结构研讨会(ISCA 2012),第524-535页。谷歌学者
  27. SPARC公司。SPARC架构(Architecture)手册(第9版)。Prentice-Hall公司,1994年。谷歌学者
  28. 维克托·瓦菲亚迪斯(Viktor Vafeiadis)和弗朗西斯科·扎帕·纳德利(Francesco Zappa Nardelli)。验证围栏消除优化。2011年9月14日至16日,意大利威尼斯,第18届国际研讨会(SAS 2011),静态分析。会议记录,第146-1622011页。谷歌学者
问题/备注/反馈
X(X)

Dagstuhl出版社反馈


感谢您的反馈!

已提交反馈

无法发送消息

请稍后再试或发送电子邮件