论文部分内容阅读
随着大规模集成电路和体系结构技术的发展,处理器的设计方法已经发生了改变,传统的通过加快处理器频率提高应用程序执行速度的途径逐渐转为在单个芯片内集成多个处理核的方式。近几年来,多核处理器已经成为市场的主流,计算机系统已经进入了所谓的“多核”时代。然而在底层硬件平台已经提供了充裕的并行处理能力的情况下,并行编程技术却没有突破性的发展,并行程序设计中关键的共享资源同步技术仍然依靠传统的“锁”机制实现。基于锁机制的并行程序设计模型存在着编程困难、易产生死锁、可扩展性差和调试困难等长久以来难以解决的难题,大大限制了并行应用程序的生产效率,导致大量硬件资源的浪费。事务内存同步模型正是在这种背景下提出的一种并行程序中共享资源同步的新模型,该模型通过“事务”同步线程对共享资源的访问,对于需要原子执行的操作,程序员只需要将它们包含在一个事务中即可。这种编程模型具有简单、无死锁、高性能和可重构等优点,是最有希望解决当前并行编程难题的技术之一,已成为近几年来学术界研究的热点,也是并行计算机体系结构的前沿研究课题之一。并行程序中事务的执行交给对程序员透明的事务内存系统完成,因而,事务内存系统是该领域研究的重点和难点。本文完成的主要工作立足于完全基于硬件执行的事务内存系统的设计和实现,提出了一个完整的硬件事务内存系统解决方案:DTM(Decoupled Hardware Transactional Memory)。本文认为,任何实际可用的硬件事务内存系统必须很好的实现(在性能、资源开销和设计复杂性等方面)以下两类系统设计目标:(1)支持任意大小的事务;(2)支持操作系统相关机制。目前,已经提出的硬件事务内存系统实现方式几乎全部依赖传统的数据cache提供支持,本文首先对这种设计思路进行了分析和总结,指出了当前系统所存在的问题。从本文的分析可以看出,cache系统和事务内存系统存在着概念上的“不匹配”,依赖数据cache的硬件事务内存系统实现思路在对以上两类设计目标提供有效支持方面存在着“先天不足”,将给系统带来极大的设计复杂性和不可避免的执行开销。为此,本文提出了一种新的硬件事务内存系统设计方法,即硬件事务内存系统与传统数据cache完全分离的设计方法,独立的事务处理模块应该为事务的执行提供特定的支持(如可配置的冲突检测粒度、事务嵌套和日志操作的支持等)。DTM系统便是基于与传统cache系统完全分离的设计方法而提出的一个全硬件事务内存系统。为了与传统“cache一致性”的概念区别,本文提出了“事务一致性”的概念。DTM通过独立的事务一致性协议检测事务间的冲突,保证事务的“原子性”和“隔离性”。事务一致性协议的实现方式类似于基于目录的cache一致性协议,但具有独立的目录和消息,并且在实现上不依赖cache一致性协议。DTM很好的实现了上述两类系统设计目标,具有如下的优点:(1)DTM完全由硬件执行任意大小的事务,避免了当前系统中普遍存在的一些缺点,保证了系统的整体性能;(2)DTM支持无限制的操作系统调度机制,包括现场切换、线程迁移和内存页置换;(3)DTM系统有更加清晰的模块功能划分,大大降低了硬件事务内存系统设计和实现的复杂性;(4)DTM支持事务嵌套、不可回退操作和强隔离性等高级事务内存语义。通过DTM基本系统的设计、实现和评测结果可以看出,分离的设计方法比传统的设计硬件事务内存系统具有明显的优势,对领域内的研究具有重要的参考价值。在DTM基本系统的基础上,本文重点进行了DTM系统优化策略的研究,目标是提高系统性能和降低资源开销。本文提出了几类简单易实现的优化策略,提升了系统性能且大大降低了资源的开销,进一步提高了DTM系统的实用性。此外,对事务内存系统上的应用负载特点的分析发现,从传统锁机制下移植的并行应用通常具有共享访问临界区较小的特点,即系统执行的事务在绝大部分情况下比较小。根据“加速系统中最常见事件性能”的原则,本文提出了一种“轻量级”的软硬件协同事务内存系统:HybridTCache。HybridTCache采用了一种新的专用事务cache结构,称为TCache,来保存事务执行过程中的临时数据,并由操作系统协同管理TCache的溢出。HvbridTCache能够非常快速的执行小的事务,且能够避免当前系统中普遍存在的日志开销。采用单独的事务cache还能够消除由于事务块被非事务块替换而引发事务溢出的情况。目前,绝大多数事务内存系统执行事务的方式是先推断执行,遇到冲突时作废正在执行的事务,在暂停一段时间后重新执行作废事务的策略。本文通过对事务执行过程的分析发现,失败事务所完成的工作并不是完全没有用处,在某些情况下,已经建立起的事务状态信息可以加速事务重新执行的速度。本文最后的部分提出了一种通用的基于数据重用的事务内存系统优化方法,该方法可以方便的实现在各类事务内存系统中,评测的结果表明该优化方法能够明显的提升系统执行事务的性能。