×

在放松记忆模型上验证STM。 (英语) Zbl 1247.68165号

概述:文献中描述了软件事务存储器(STM),并假设程序执行顺序一致,以及读、写和中止等高级操作的原子性。然而,在实际环境中,处理器使用宽松的内存模型来优化硬件性能。此外,操作的原子性取决于底层硬件。本文提出了第一种在具有32位加载和存储原子性以及读-修改-写操作的松弛内存模型下验证STM的方法。我们描述RML,一种用于表达并发程序的简单语言。我们开发了一个通过放松记忆模型参数化的RML语义。然后,我们介绍了我们的工具FOIL,它将限制为两个线程和两个变量的STM算法的RML描述和内存模型的描述作为输入,并自动确定围栏的位置,如果插入围栏,则可以确保限制STM算法在给定内存模型下的正确性。我们使用FOIL在两个线程和两个变量的顺序一致性、总存储顺序、部分存储顺序和松弛存储顺序的内存模型下验证DSTM、TL2和McRT STM。最后,我们将DSTM和TL2的验证结果扩展到任意数量的线程和变量,通过手动证明在所考虑的松弛内存模型下,STM的结构属性在原子性的硬件级别上是满足的。

MSC公司:

第68季度第60季度 规范和验证(程序逻辑、模型检查等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部 链接

参考文献:

[1] Adve SV,Gharachorloo K(1996)《共享内存一致性模型:教程》。IEEE计算66–76
[2] Andrews T、Qadeer S、Rajamani SK、Rehof J、Xie Y(2004)Zing:并发软件的模型检查器。参加:计算机辅助验证国际会议。柏林施普林格,第484-487页·Zbl 1103.68600号
[3] Boehm HJ,Adve SV(2008)C++并发内存模型的基础。ACM SIGPLAN编程语言设计与实现会议。ACM,纽约,第68–78页
[4] Boudol G,Petri G(2009)《放松记忆模型:一种操作方法》。摘自:ACM SIGPLAN编程语言原理研讨会,第392-403页·Zbl 1315.68173号
[5] Burckhardt S,Alur R,Martin MMK(2006),放松记忆模型上并发数据类型的有界模型检查:案例研究。参加:计算机辅助验证国际会议。柏林施普林格,第489-502页
[6] Burckhardt S,Alur R,Martin MMK(2007)CheckFence:检查放松内存模型上并发数据类型的一致性。ACM SIGPLAN编程语言设计与实现会议。ACM,纽约,第12-21页
[7] Burckhardt S,Musuvathi M,Singh V(2008)《验证并发程序的编译器转换》。技术报告MSR-TR-2008-171,Microsoft Research·Zbl 1155.68428号
[8] Cohen A、Pnueli A、Zuck LD(2008)使用非事务性内存访问对事务性内存进行机械验证。参加:计算机辅助验证国际会议。柏林施普林格,第121-134页·Zbl 1155.68430号
[9] Colvin R,Groves L,Luchangco V,Moir M(2006)基于延迟并发列表的集合算法的形式验证。年:计算机辅助验证国际会议。柏林施普林格,第475-488页
[10] De Wulf M,Doyen L,Henzinger TA,Raskin J-F(2006)反链:检查有限自动机普遍性的新算法。参加:计算机辅助验证国际会议。柏林施普林格,第17-30页·Zbl 1188.68171号
[11] Dice D,Shalev O,Shavit N(2006)交易锁定II。参加:分布式计算国际研讨会。柏林施普林格,第194-208页
[12] Elmas T,Tasiran S,Qadeer S(2005)VYRD:通过运行时优化暴力检测验证并发程序。摘自:ACM SIGPLAN编程语言设计与实现会议,第27–37页
[13] Elmas T,Qadeer S,Tasiran S(2007)Goldilocks:一个具有种族和事务意识的Java运行时。In:ACM SIGPLAN编程语言设计与实现会议,第245-255页
[14] Fang X,Lee J,Midkiff SP(2003)共享内存多处理的自动围栏插入。摘自:超级计算国际会议,第285-294页
[15] Flanagan C,Freund SN(2004)Atomizer:多线程程序的动态原子性检查器。摘自:ACM SIGPLAN编程语言原理研讨会,第256-267页·Zbl 1146.68350号
[16] Flanagan C,Freund SN(2009)FastTrack:高效精确的动态比赛检测。In:ACM SIGPLAN编程语言设计与实现会议,第121-133页
[17] Flanagan C,Freund SN,Yi J(2008)Velodrome:一种适用于多线程程序的完善的动态原子性检查器。In:ACM SIGPLAN编程语言设计与实现会议,第293–303页
[18] Gopalakrishnan G,Yang Y,Sivaraj H(2004)QB或非QB:内存排序的高效执行验证工具。参加:计算机辅助验证国际会议。柏林施普林格,第401-413页·Zbl 1103.68618号
[19] Guerraoui R、Henzinger TA、Jobstmann B、Singh V(2008)《模型检查事务性存储器》。ACM SIGPLAN编程语言设计与实现会议。ACM,纽约,第372-382页
[20] Guerraoui R、Henzinger TA、Singh V(2008),模型检查事务记忆中的不确定性和完整性。参加:并发理论国际会议。柏林施普林格,第21-35页·兹比尔1160.68441
[21] Guerraoui R、Henzinger TA、Singh V(2009),放松内存模型上的软件事务内存。参加:计算机辅助验证国际会议。柏林施普林格,第321-336页·Zbl 1242.68162号
[22] Guerraoui R,Kapałka M(2008)关于事务记忆的正确性。参加:ACM SIGPLAN并行编程原理和实践研讨会。ACM,纽约,第175–184页
[23] Herlihy M,Moss JEB(1993)《事务内存:无锁数据结构的体系结构支持》。在:关于计算机体系结构的国际研讨会。ACM,纽约,第289-300页
[24] Herlihy M、Luchangco V、Moir M、Scherer WN(2003)《动态数据结构的软件事务内存》。在:ACM SIGACT-SIGOPS分布式计算原理研讨会上。ACM,纽约,第92–101页
[25] Holzmann GJ(1997)模型检查器SPIN。IEEE跨软件工程279–295
[26] Lamport L(1979)《如何制作正确执行多进程程序的多处理器计算机》。IEEE传输计算690–691·Zbl 0419.68045号
[27] Lee J,Padua DA(2001)使用编译器隐藏宽松的内存一致性。IEEE跨计算824–833
[28] Manovit C、Hangal S、Chafi H、McDonald A、Kozyrakis C、Olukotun K(2006)《事务性内存的测试实现》。摘自:并行体系结构和编译技术国际会议,第134-143页
[29] Manson J,Pugh W,Adve SV(2005)Java内存模型。在:ACM SIGPLAN编程语言原理研讨会上。ACM,纽约,第378–391页·Zbl 1369.68079号
[30] Musuvathi M、Qadeer S、Ball T、Basler G、Nainar PA、Neamtiu I(2008)《在并发程序中发现和繁殖黑热病菌》。附:USENIX操作系统设计与实现研讨会,第267-280页
[31] Papadimitriou CH(1979)并发数据库更新的可序列化性。美国临床医学杂志26(4)·Zbl 0419.68036号
[32] Qadeer S,Rehof J(2005)并发软件的上下文模型检查。In:系统构建和分析工具和算法国际会议,第93–107页·Zbl 1087.68598号
[33] Qadeer S,Wu D(2004)KISS:保持简单有序。In:ACM SIGPLAN编程语言设计与实现会议,第14-24页
[34] Saha B、Adl-Tabatabai A、Hudson RL、Minh CC、Hertzberg B(2006)McRT-STM:多核运行时的高性能软件事务存储系统。参加:ACM SIGPLAN并行编程原理和实践研讨会。ACM,纽约,第187-197页
[35] Saraswat VA、Jagadeesan R、Michael M、von Praun C(2007)《记忆模型理论》。参加:ACM SIGPLAN并行编程原理和实践研讨会。ACM,纽约,第161-172页
[36] Sarkar S、Sewell P、Zappa Nardelli F、Owens S、Ridge T、Braibant T、Myreen MO、Algale J(2009)《x86-CC多处理器机器代码的语义》。摘自:ACM SIGPLAN编程语言原理研讨会,第379–391页
[37] Scott ML(2006)事务内存语义的顺序规范。In:ACM SIGPLAN事务计算研讨会
[38] Shavit N,Touitou D(1995)软件事务性内存。在:ACM SIGACT-SIGOPS分布式计算原理研讨会上。ACM,纽约,第204-213页·兹比尔1373.68178
[39] 现场RL(ed)(2002)Alpha架构参考手册。数字出版社,牛顿
[40] Tasiran S(2008)一种用于验证软件事务内存实现的组合方法。技术报告MSR-TR-2008-56,Microsoft Research
[41] Vafeiadis V,Herlihy M,Hoare T,Shapiro M(2006)证明高并发线性化对象的正确性。摘自:ACM SIGPLAN并行编程原理与实践研讨会,第129–136页
[42] Weaver D、Germond T(eds)(1994)《SPARC体系结构手册》(第9版)。普伦蒂斯霍尔公司,恩格尔伍德悬崖
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。