多核结构上高效的线程级推测及事务执行模型研究
发布时间:2020-06-15 03:23
【摘要】: 片上多核作为当今处理器设计的主流技术,需要运行多线程应用才能充分发挥性能。推测多线程方法能够简化并行编程,允许程序员或者编译器在不完全保证正确性的情况下,尝试激进的优化方式来开发和利用更多的程序并行性。实现这种方法的难点在于访存操作的局部缓存,已提出的一些推测多线程方案都使用了非常复杂的缓存机制,不光增加了硬件设计复杂度,也在一定程度上影响了应用开发的效率。实现这种技术的另一个难点是如何有效地减少误推测对并行性能的不确定性影响。为此,本文尝试采用事务存储和动态剖析技术来解决这两大难题,为多核平台寻找一种能够高效地推测并行化应用程序的软硬件协同的解决方案。 本文围绕基于事务存储的线程级推测技术开展了深入系统的研究,涉及结构模型、编程和执行模型、动态优化方法等方面的内容。主要研究成果包括:(1)本文首先提出了一个基于事务存储的推测多线程体系结构模型SPoTM(Speculatire Parallelization on Transactional Memory)。SPoTM利用事务存储来实现线程间的读写操作隔离,提供了线程乱序执行、顺序提交、冲突检测以及推测失败后回退等功能。(2)本文还为SPoTM结构设计了一个基于循环并行的推测多线程编程模型,提供了实现该编程模型所需的推测线程系统库以及指令集扩展等。SPoTM编程模型实现简单,并行化需要的代码调整很少,对多线程并行程序设计的简化非常明显。(3)本文选取SPEC CPU 2000中的若干典型程序,在为SPoTM结构开发的模拟执行平台fastTM和sim-SPoTM上进行了详细的评测,量化分析了各种硬件机制对推测执行性能的影响,以寻找性价比较好的实现方案。本文还全面分析了在推测执行条件下Cache局部性的变化,并提出和验证了几个改善局部性的方法。(4)针对当前推测多线程优化中普遍使用的离线剖析方式受到培训输入集限制的问题,本文提出并实现了一种在运行时根据在线剖析结果自动变换推测多线程程序的动态优化方法。该方法在运行时执行剖析和优化工作,不需要单独的剖析过程以及通用的测试输入集,同时也适用于那些运行时行为特征呈阶段性变化的程序。实验表明,在指导事务划分和选择并行循环方面,动态优化方法能够达到和离线优化方法相近的效果。 在设计评测SPoTM结构模型,开发动态软件优化系统的过程中,我们得到了一些关于如何有效利用推测多线程技术的定性结论。首先,为了提升推测执行性能,我们认为更多的努力应当投入到软件优化方面,而不是激进地调整硬件结构和执行机制。其次,推测多线程技术并不能使自动并行完全取代手工并行,这种技术可以作为手工并行的辅助工具来使用。最后,不论是手工并行还是自动并行,一个渐进的并行代码变换过程都是需要的,而在此过程中,剖析指导的优化技术起着非常关键的作用。
【学位授予单位】:中国科学技术大学
【学位级别】:博士
【学位授予年份】:2007
【分类号】:TP332
【图文】:
第2章相关研究工作结构扩展实现的关键在于运行时推测读写的缓存和依赖一级Cache状态位,加入二级Cache写缓冲来提一级数据Cache记录推测访问的数据,图2.2显的扩展,其中粗体的rea妙y一ord、write一ysewo新增加的状态。为了描述方便,我们将在下文中的逻辑顺序,线程在原串行程序中的逻辑序越推测级为0,依次类推。
先线程按照事务的方式执行代码,每个事务带有自己的sequencenumber和Phase皿mber。在事务执行完毕后,线程会根据自己记录的当前其他线程的序号决定自己是否可以申请提交,这是等待仲裁阶段。当发出提交请求后,进入仲裁阶段。当仲裁结果允许提交后,线程进入提交阶段,直到完成。TCC的结构如图2.7所示。为实现事务存储,一个处理器核的私有Cache增加的硬件资源包括:推测读标志:为私有Cache行内每个字都提供一位,在事务执行读操作的时候置位;推测修改状态位:属于整个Cache行,当事务执行写操作的时候置位;重命名状态位:为行内每个字都提供,这个状态位可选,在对应字被推测写时置位,使用的目的是为了避免数据访问的输出依赖冲突(认叭W);推测缓冲(WriteBuffer):记录事务执行的写结果;提交控制表(CommitControlTable):记录其他处理器上事务的序号,以判断自己是否可以发出提交申请。
本文编号:2713818
【学位授予单位】:中国科学技术大学
【学位级别】:博士
【学位授予年份】:2007
【分类号】:TP332
【图文】:
第2章相关研究工作结构扩展实现的关键在于运行时推测读写的缓存和依赖一级Cache状态位,加入二级Cache写缓冲来提一级数据Cache记录推测访问的数据,图2.2显的扩展,其中粗体的rea妙y一ord、write一ysewo新增加的状态。为了描述方便,我们将在下文中的逻辑顺序,线程在原串行程序中的逻辑序越推测级为0,依次类推。
先线程按照事务的方式执行代码,每个事务带有自己的sequencenumber和Phase皿mber。在事务执行完毕后,线程会根据自己记录的当前其他线程的序号决定自己是否可以申请提交,这是等待仲裁阶段。当发出提交请求后,进入仲裁阶段。当仲裁结果允许提交后,线程进入提交阶段,直到完成。TCC的结构如图2.7所示。为实现事务存储,一个处理器核的私有Cache增加的硬件资源包括:推测读标志:为私有Cache行内每个字都提供一位,在事务执行读操作的时候置位;推测修改状态位:属于整个Cache行,当事务执行写操作的时候置位;重命名状态位:为行内每个字都提供,这个状态位可选,在对应字被推测写时置位,使用的目的是为了避免数据访问的输出依赖冲突(认叭W);推测缓冲(WriteBuffer):记录事务执行的写结果;提交控制表(CommitControlTable):记录其他处理器上事务的序号,以判断自己是否可以发出提交申请。
【引证文献】
相关博士学位论文 前2条
1 王耀彬;多核平台上支持推测并行化的事务存储体系结构性能优化[D];中国科学技术大学;2010年
2 李颀;基于FPGA的片上多处理器建模方法[D];中国科学技术大学;2012年
相关硕士学位论文 前1条
1 曹婷婷;基于多核的并行遗传算法的研究与实现[D];东北大学;2010年
本文编号:2713818
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2713818.html