论文部分内容阅读
随着集成电路和微处理器体系结构的发展,多核处理器已经成为业界研究、商用的主流。在单芯片上集成多个相对简单、低功耗的单处理器内核,多核技术大大降低了处理器设计、验证的代价。如何应用多核处理器的并行能力,给当今的程序设计提出了新的要求。
多线程并行是应用多核处理器并行能力,加速串行程序执行的一个有效手段。已有一些编译工具可以辅助程序员对特定的应用进行自动并行化。这些特定的应用往往具备一定的可隔离计算,容易任务划分的特征。但是仍然有大量实际并行度较高的程序,由于存在指针、间接访存等模糊依赖,被划入编译器无法自动并行的范围,极大地限制了该类程序在多核架构上进一步挖掘并行加速比,也限制了现代处理器通过大规模增加核数提升性能加速比的发展思路。
推测执行及事务存储技术的提出,弱化了该类程序在编译器阶段的依赖分析,使得串行任务可以被任意地划分为多个子任务,以多线程的形式在多个不同的处理器核上并行执行。这种任意并行划分后的程序的执行正确性由特定的软硬件机制来保证。这无疑大大地简化了编译器在串行程序自动并行化上的工作。但目前来说,相关技术的研究仍然处于学术研究阶段,距离真正商用还有较大距离,仍有许多关键技术有待深入研究。本文从软硬件结合的角度选择切入点,通过分析论证,简化了现有的推测执行与事务存储模型中很多实际问题。首先分析了具有模糊依赖的任务特征及其潜在的可并行性,结合已有的加速模型,提出了目前线程级并行需解决的若干关键问题。其次提出了本文的解决方案SpFusion,对相关问题进行改进优化,在此基础上,给出了编译器自动并行的模板框架。在实验验证过程中,根据需要,提出了改进的高速缓存一致性协议Fusion,解决SpFusion模型易发生的cache(伪)共享竞争问题。最后,针对循环结构并行的测试结果表明,SpFusion推测模型对常规应用和有模糊依赖的应用都具有一定的性能加速比。