论文部分内容阅读
当前,大多数事务内存的研究都是针对多核处理器和SMP系统的,少数研究开始关注集群系统,但是对于NUMA系统则缺少相关研究。现有的事务内存实现在NUMA系统上的性能欠佳,因为这些系统并没有关注NUMA结构的访存特性:较慢的远程内存访问。为了解决这个问题,本文提出了一种面向NUMA结构的事务内存机制,通过减少远程访存数量和降低事务失败率等手段,使事务内存在NUMA系统上能够获取高性能。并行编程已经应用了几十年,以往一般用于高性能计算领域。随着多核处理器的发展,普通程序员可开始使用并行程序来充分利用多个处理器核心。现在大多数并行程序还在使用锁作为同步机制,但是随之带来的死锁、优先级反转和锁护送等问题却难以避免。为了解决这些问题,学术界提出了大量的解决方案,而事务内存无疑是其中最具有吸引力的一项新技术。程序员只需要使用atomic关键字定义互斥段,就可以使数据冲突自动得到解决。事务内存是针对多核处理器和SMP系统设计的。随着处理器之间直连接口的发展,处理器可以通过直连接口与其他处理器连接,并以此构建NUMA结构的多处理器系统。实际上,现在的SMP系统已经是NUMA结构了。在NUMA系统中,处理器访问本地内存的速度较快,而访问远地内存的速度较慢,这与传统SMP系统有较大差别。事务内存在NUMA系统上的性能欠佳,也有NUMA的访存延迟特性有关。当前还没有针对NUMA结构设计的事务内存系统,本文在此提出了新的研究方向,期望能够吸引更多学术界的关注来进行面向NUMA的事务内存研究。本文的主要内容如下:(1)面向NUMA的事务内存研究平台和事务内存访存模式分析。为了更有效地分析事务内存在NUMA系统上的性能问题,本文构建了一个面向NUMA结构的事务内存研究平台。该平台基于Simics+GEMS构建,由Simics模拟NUMA硬件,为了使操作系统能够正常识别NUMA硬件拓扑和互连情况,需要模拟ACPI的相关表格,如SRAT和SLIT表。所有的硬件操作延迟由GEMS来提供,由于GEMS本身并不支持NUMA结构,因此需要一个自己编写的模块来实现NUMA访存延迟。为了分析访存模式,本文选择了三个代表性的事务内存系统来进行评测。结论是,远程访存延迟与事务失败率是影响性能最关键的两个原因。(2)层次式的冲突检测。为了减少远程访存次数,本文提出了层次式冲突检测方法。NUMA系统根据访存延迟的不同,可以划分为快速访存部分和慢速访存部分,一般就是本地和远地的划分。快速部分可以使用消极的检测策略来增加并发度,而慢速部分则使用积极策略来减少远程访存数量。(3)冲突规避方法。传统的事务内存策略是尽量增加同时运行的事务数量,以增加系统的并行度来提高性能。但这样的策略并不适用于NUMA系统。本文提出的冲突规避方法主要用来解决该问题。冲突规避安排在事务启动之前,使用预测算法来推测该事务将来发生冲突的可能性。如果可能性较大,该事务应该被暂缓启动以提高系统整体的事务成功率。(4)NUMA敏感的竞争管理算法。为了使竞争管理算法适应NUMA结构,本文提出了两种竞争管理算法。为了减少远程访存开销,算法将尽量利用本地数据来进行决策,以减少远程访存数量为目标。该算法在NUMA系统上可以较好地平衡事务之间的冲突,获取高性能。