论文部分内容阅读
随着集成电路工艺的不断进步以及处理器体系的不断发展,多核已经成为处理器的重要发展方向,已成为服务器和桌面的主流。同时,如何在多核环境下更好地进行多线程编程、寻找替代锁机制的更好的机制自然地成为必须解决的课题。事务内存是其中较成功、且研究较为广泛的一个方案。目前,在事务内存方面,主要有两种实现机制:硬件实现和软件实现。软件事务内存通过软件的方式实现事务内存机制,不需要额外的硬件支持,所有的机制全是通过软件实现的,相对于硬件事务内存有较多优势。因此,本文在面向对象程序中,提供对软件事务内存的支持。同时,为了在语义上实现事务的嵌套执行,本文提出可嵌套事务内存框架设计。本文针对面向对象程序,给出了软件事务内存的详细定义以及软件事务状态的转换关系,同时提供相应的接口。本框架提出了三种冲突仲裁策略:即时策略、延迟策略和基于优先级策略。即时策略作为其他两种策略的比较对象,评判其性能的好坏。延迟策略以事务的开始时间作为判断软件事务重要性的标准。而基于优先级策略则是以事务的读写操作工作量作为评判事务重要性的依据。同时,为了在面向对象程序中,提供对语义上事务嵌套执行的支持,本文提出了抽象锁机制和补偿机制加以实现之。最后,本文在英特尔双核、四核和八核服务器平台上进行测验,使用了List和HashMap作为测试用例。实验表明延迟策略和基于优先级策略在双核、四核和八核的平台上性能都比即时策略得到了提升,平均分别在20%和25%左右。同时,在嵌套事务方面,软件事务内存的性能也得到了提升,特别是在处理器核数较多的时候。综上所述,本文针对面向对象程序,提出了软件事务内存框架设计,并提出了三种冲突仲裁策略设计和嵌套事务设计,通过实验证明了冲突仲裁策略的性能优劣和嵌套事务带来的性能提升。