交易无处不在解析.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
交易无处不在 布拉德利C. Kuszmaul和查尔斯E. Leiserson,SMA研究员 麻省理工学院计算机科学实验室 附:(原文网址) /handle/1721.1/3692 (在页面Files中的CS028.pdf打开即可) 摘要:可以说,并行代码软件开发人员最大deterrants之一是并行使他们的生活更复杂。也许最根本的问题在并发任务的协调固有原子,使一个执行任务的部分结果不小心损坏的另一个任务。原子通常是通过执行锁定协议,但这些协议可以引进其他并发症,如死锁,除非其使用方法是采用限制性。我们最近开始了一项事务内存[18]作为一个负责执行的原子性研究项目,因为它允许用户避免锁定协议并发症而不是案,过去普遍进行的交易,我们采用的观点,所有用户代码应该执行一些事务上下文。为了使这个观点可行,需要两个关键技术的发展:可扩展的事务性内存有效的硬件支持,以及语言和编译器的支持。本文介绍了我们的初步研究成果制定“交易无处不在”的现实。十年前在开创性论文,Herlihy和莫斯[18]提出,事务性内存来缓解并发程序编写。事务内存是有时被描述为一个负载链接/条件存储[24]和其他复杂指令扩展。而事务性内存的想法是一个程序来读取和修改作为一个单一的原子操作多个不同的存储单元,像发生在一个数据库事务[14],[15]。事务性内存,他们认为,程序员可避免如优先级反转,护航,和死锁等并发异常。 Herlihy和莫斯提出了一个扩展的硬件高速缓存一致性机制,可以提供硬件事务内存(HTM)传统的方法来指定使用事务的原子是由文本上标记的开始和结束交易。在事务内,所有的结果都是“沙箱”,这意味着在交易书面的值暂时搁置,直到事务结束,而此时事务提交,所有这些值原子制成全局可用。如果交易不能任何理由,提交中止操作返回一个代码,没有全球性的更改。否则,它返回一个致力于代码,全球所有的变化都可见。如果交易中止,它通常是程序员的责任这种简单的事务性内存取代传统的观点与事务性协议的锁定协议。此外,研究人员之间的共同看法似乎是,交易很少发生(如证明设计和已提出[18],[28]隐码),并具有很高的开销。许多研究人员都集中在软件事务内存(STM)[30],[17],[16],导致HTM探索我们认为事务性内存的真正优势在于,程序员可以在很大程度上从编写和调试同步协议中解脱出来。而不是交易视为罕见的,我们的研究探讨了交易的概念无处不在:用户代码总是在一些事务中执行。这种观点的极端点需要语言和硬件支持。在本文中,我们描述了各地正当理由交易做法的研究进展, 为使熟悉电脑的内存作为高速缓存子系统本文的其余部分概述了我们的研究迄今取得的进展。第二节介绍了适应软件HTM,语言问题和编译器技术。第三节描述了我们修改Herlihy和莫斯的计划,使其可扩展性以及我们如何设计a Bluespec硬件规格HTM去测量费用。最后,我们在第四节提供了一些II、HTM的语言和编译器支我们初步语言上调查Cilk [2] [3],[25],[34],[12]“隐”原子,我们的研究小组开发多线程编程语言可高效,随机,“workstealing”调度。目前Cilk - 5.3.2版本使用锁来实现原子性,但我们研究如何用HTM来消除锁和其他并发协议使用。特别是,我们正在研究对哪些交易可以指定隐含的程度,而不是在本节中,我们首先提供Cilk.1的简要介绍然后我们描述了我们扩大Cilk指定的原子性的建议。最后,我们报告一些语言扩展影响初步多线程的Cilk语言扩展了C编程五个关键字ilk在前一个函数的定义表明产卵前的一个Cilk函数调用表明该呼叫可以与调用者执行同步等待,直到所有的衍生功能已经完成进口允许从产生函数的结果被纳入一个用户定义的方式调用者纳入其中中止停止产生一个函数的执行Cilk是C编程语言的一个忠实的扩展:并行控制Cilk关键字是从Cilk程序,语法和语义上正确的C程序结果省略。因此,仅仅通过#defineing所有Cilk关键字零,一个Cilk程序变成一个普通的C程序目前Cilk - 5.3.2版本使用互斥锁来实现数据结构时,就同时经营Cilk线程。锁定引入了许多并发异常如死锁,进入“纯”Cilk编程。在以往的工作中,我们开发了一种被称为“Nondeterminator”[10],[7] [8],[32]工具,这有助于锁定协议与调试,但指定的锁仍是容易出错的工作更换交易锁定协议可能减轻并发控制的一些问题,但指定的每一笔交易开始和结束似乎没有指定的地方抢到锁并将它释放简单。锁定协议必须警惕僵局,交易可以有活锁问题。当事务中止,恢复代码必须滚回并重新启动事务。程序员担心活锁的僵局取代,似乎无异于一个又一个协议毒药在代码中指定需要执行的原子的位置似乎是一个受欢迎的选择(见,例如,[18] [17]

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档