ACM头
登入

ACM的通信

研究亮点

技术观点:数据竞赛是邪恶的,没有例外


利用并行性已成为提高性能的主要手段。共享内存是一个普遍使用的编程模型,并通过全局地址空间进行并行任务或线程进行通信。诸如C,C ++和Java之类的流行语言具有(或很快)对共享内存线程的标准化支持。不幸的是,众所周知,共享内存程序通常由于数据竞赛而容易出现细微的错误。

允许数据种族的语言混淆了真实的通信和同步。由于任何负载或存储都可以通过数据竞赛通信或与另一线程进行通信或同步,因此很难孤立地推理代码部分。数据竞赛还会造成非确定性,因为两个赛车访问之间的排序取决于时间。因此,临时程序需要关于单个内存访问的许多交织的推理,并且它们的执行很难复制。因此,数据竞赛被广泛认为是错误的症状,并且有很多研究可以自动检测到它们。

可以说,数据竞赛的更根本问题涉及语义。每个编程语言都必须指定负载可以返回的值,也称为内存模型。令人惊讶的是,很难指定可接受的模型,该模型可以平衡允许数据种族的语言的易用性和性能。1程序员通常期望一个称为顺序一致性的基于顺序交织的模型。对于无数据竞争程序,提供顺序的一致性和高性能是很简单的。但是,使用RACY代码,常规编译器和硬件优化可能会导致令人惊讶的行为。因此,即将到来的C ++内存模型为具有数据竞赛的程序指定了“未定义”行为。这为实施者提供了自由,但对调试RACY代码构成了挑战。Java的安全要求排除了“未定义”行为的使用。因此,Java内存模型为RACY程序指定了非常弱的语义,但非常复杂,目前已知错误。

尽管有调试和语义上的困难,但一些先前的工作是指某些数据竞赛(例如,一些非同步读数)是良性且对性能有用的。不幸的是,具有任何类型的数据竞赛的程序的合理语义仍然难以捉摸。C,C ++和Java不会提供任何(或不提供良性)数据竞赛的可用语义。

一个自然的结论是努力争取消除数据种族的语言。尽管有很多进展,这种通用语言,但2尚未市售。以下关于Goldilocks和Fast-Track的论文提出了使用当前语言的始终数据竞赛检测的替代解决方案。

Goldilocks是第一项提出数据竞赛的工作,就像Null Pointer Dereences一样,被视为语言级别的例外。这种洞察力清除了内存模型中最困难的部分Messexcections是依次一致的,要么抛出异常。没有复杂的Java语义,也没有C/C ++的不安全行为!

与种族检测的许多先前工作相比,面临的挑战是,始终在语言级别的异常机制必须既快速又精确。基于向量时钟的公认的种族检测算法是精确的,但会降低量子的速度。存在更快的算法(例如,基于锁定方法),但是产生误报,这对于强制执行语言级语义是不可接受的。

Goldilocks扩展了锁定方法以使其精确,速度比以前的精确矢量时钟算法要快得多。FastTrack随后优化了矢量时钟方法,以使其运行速度更快,而不会失去精确度和比Goldilocks更好。这些论文首次使人们可以相信“数据竞赛是一个例外”可能是解决共享内存的烦恼调试和语义问题的可行解决方案。

这两种技术的绝对放缓仍然非常重要,但它们揭示了令人兴奋的研究议程。直接的挑战是提高性能。另一个涉及在编译器生成的代码中检测到的种族到源代码的映射种族。其他人正在探索硬件以实现类似目标。3

更广泛地说,这些论文鼓励对编程模型,语言,编译器和硬件进行基本重新思考。语言是否应该设计以通过设计消除数据竞赛?2还是运行时应该自动检测比赛?还是硬件?3是否可以使用类似的技术来实施更强的属性,例如确定性和原子能?这会影响我们将共享内存视为编程模型的方式吗?所有这些问题的答案可能是“是”。

单独的任何语言,运行时或硬件技术不可能在易用性,一般性,性能和复杂性之间取得最佳平衡,但是设计结合此类技术优势的系统仍然具有挑战性。还不清楚这些系统最终将确保哪些高级语言属性;例如,消除种族是确保确定性和原子能的关键因素。很明显,这些论文提供了塑造最终解决方案的关键见解,并且是使群众适应并行编程的重要步骤。

回到顶部

参考

1. Adve,S.V。和Boehm,H-J。内存模型:重新思考并行语言和硬件的情况。社区。ACM 53,2010年8月8日(8月)90101。

2. Bocchino,R.L。等。确定性并行Java的类型和效果系统。在国际面向对象的编程,系统,语言和应用程序的会议记录,2009年。

3. Lucia,B。等。冲突例外:提供精确的硬件异常提供简单的并发语言语义。在国际计算机架构研讨会论文集,2010年。

回到顶部

作者

Sarita Adve((sadve@illinois.edu)是Urbana-Champaign大学伊利诺伊大学计算机科学系教授。

回到顶部

脚注

doi:http://doi.acm.org/10.1145/1839676.1839697


©2010 ACM 0001-0782/10/1100 $ 10.00

允许将本工作的全部或一部分供个人或课堂使用的数字或硬副本授予无需费用的允许。否则要复制,重新发布,在服务器上发布或重新分配到列表,需要事先具体许可和/或费用。

数字图书馆由计算机协会发布。版权所有©2010 ACM,Inc。


找不到条目

登入全面访问
“ 忘记密码? »创建一个ACM Web帐户
文章内容:
Baidu
map