软件事务存储系统设计选择.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件事务存储系统设计选择

软件事务存储系统设计选择摘 要:多核微处理器的发展为线程级并行编程带来了新的机遇和挑战。面对传统锁机制应用对并行开发带来的诸多困难,借鉴数据库中事务的概念提出事务存储技术。软件事务存储系统的性能受设计上各方面因素的影响,比如基于字或基于对象、基于锁或无阻塞、直写或回写、早检测或晚检测。对此进行了论述。 关键词:软件事务存储;设计选择;数据组织方式;更新控制方式 中图分类号:TP301 文献标识码:A 文章编号2013)003004202 0 引言 多核微处理器的发展为线程级并行编程带来新的机遇和挑战。新的摩尔定律指出,在基本不变的主频下,单个芯片上的处理器核的数目每一代(约两年)增加一倍。当前,程序性能的提高只能依靠并行,并行算法和并行编程是今后几十年计算机科学和软件界必须突破的科学问题和关键技术。并行程序设计将越来越大众化,对提高并行程序设计的产出率(Productivity)的要求越来越高,提供易用高效的并行编程手段显得尤为关键。传统的用于线程间同步的锁机制编程困难,可扩展性差,并不适于未经专业培训的一般程序员使用:粗粒度锁由于一次性地对本地大量数据进行保护,即使两个线程之间理论上并不存在干扰,也可能因粗粒度锁而产生冲突,因此粗粒度锁不适于拓展,性能较低;细粒度锁虽然性能高,但在实现上很难保证其准确性及避免死锁。同时,锁技术容易致使线程脆弱,即线程更加容易失败或延迟。比如,持有锁的线程会阻塞其它线程。 研究人员为解决以上问题,借鉴数据库中的事务概念提出事务存储(Transactional Memory,TM)技术,希望获得一种像粗粒度一样容易使用、性能接近细粒度锁的同步手段。 1 事务存储技术 在事务存储技术中,线程事务采用原子执行单元来替代锁。各线程事务以原子的方式执行,把维持事务特性的工作交给编译器、运行时库或硬件完成,进一步的性能调优可以在系统层完成。比如,如下计算直方图的代码块: atomic{ hist[array[i][j]]++; } 程序员可将其看作是一个临界区,TM实现来决定如何将该临界区与其它线程隔离运行。 根据事务存储系统实现方法的不同,目前的事务存储系统的研究主要有3个方向:基于硬件实现的硬件事务存储系统(HTM,Hardware Transaction Memory),如Stanford大学的TCC;基于运行时库实现的软件事务存储系统(STM,Software Transaction Memory),如Rochester大学的RSTM;结合软硬件实现的混合事务存储系统(Hybrid Transaction Memory),如Rajwar等提出的VTM。HTM系统主要由硬件实现,速度最快,并行粒度是cache行或内存字;STM以计算机语言实现,并行力度是对象或内存字,速度较慢,但比较灵活;HyTM由适当的软件或硬件实现,性能介于HTM与STM之间。本文主要研究软件事务存储技术。 2 事务存储实现方式 为了实现事务的特性,一般来说,软件事务存储的实现必须具备三大功能。 (1)冲突检测。事务在执行过程中,要根据具体的情况适时地检测冲突,只有在无冲突发生的情况下,事务才能提交。 (2)一致性校验。事务在执行过程中始终要保持共享对象的一致性状态。在共享对象不一致的状态下,计算可能会产生无法控制的结果,如死循环或除零错。所以,即使执行过程中没有检测到冲突,事务还是可能进行一致性校验。 (3)冲突消解。当冲突发生后,需要采取一定的措施来消解冲突。 当前的各种STM通过不同手段来实现上述三大功能。 2.1 早检测与晚检测 对于冲突的检测,可以分为早检测(early detect)和晚检测(lazy detect)。早检测即每当事务读或写时,都会去检测是否有冲突事务存在,以此来保持共享对象的一致性。因此,早检测策略需要事务的读集(read set)及写集(write set)对所有的事务都是可见的,我们将这种设计称之为可见读(visible read)设计。Harris于2003年提出不可见读,与之相应的是晚检测策略,只有在事务提交时才依靠对读集的检测来确定是否存在冲突事务。一般来说,早检测能比晚检测更加及时地发现冲突,从而避免冲突事务执行不必要的操作,且检测手段的实现相对简单,但早检测的执行开销明显大于晚检测。 2.2 基于锁与无阻塞 鉴于前面提到的锁机制的各种缺陷,早期的STM研究将无阻塞(nonblocking)作为实现目标。无阻塞算法能够保证进程不会因不活跃的线程而阻塞,从而避免优先级倒置或线程死锁。其中,Herlihy等人提出的无干扰同步算法(obstru

文档评论(0)

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

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

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档