[发明专利]一种基于弱内存一致性的多线程确定性执行方法有效
申请号: | 201910320893.0 | 申请日: | 2019-04-21 |
公开(公告)号: | CN110083445B | 公开(公告)日: | 2023-04-25 |
发明(设计)人: | 王开宇;季振洲;周一豪;吴倩倩;张源悍 | 申请(专利权)人: | 哈尔滨工业大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/52 |
代理公司: | 北京汇捷知识产权代理事务所(普通合伙) 11531 | 代理人: | 马金华 |
地址: | 150006 黑龙*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 内存 一致性 多线程 确定性 执行 方法 | ||
1.一种基于弱内存一致性的多线程确定性执行方法,其特征在于:采用弱内存一致性模型,在保证多线程确定性执行的基础上,对线程实行内存隔离,延后线程向内存提交操作;
串行阶段并行化模块,用于提升串行阶段线程并行度,让获取非互斥锁资源两组线程可以在串行阶段并行执行;
性能指导标记模块,用于通过提供一个性能指导标记,标记长并行距离的线程,在确定的位置开始,跳过指定个数的串行阶段。
2.根据权利要求1所述的基于弱内存一致性的多线程确定性执行方法,其特征在于,所述弱内存一致性模型,
该模型负责隔离线程,保证线程顺利执行并行、串行阶段,所述方法包括如下步骤;
步骤1:在并行阶段,将线程对内存的提交存储到各个线程的栈内存;
步骤2:线程在并行阶段并行执行;
步骤3:将线程向内存提交的操作推迟到同步点;
步骤4:在串行阶段,线程按照事先确定的顺序依次向内存提交修改;
步骤5:将内存备份提交给各个线程,为下次执行做准备。
3.根据权利要求1所述的基于弱内存一致性的多线程确定性执行方法,其特征在于,串行阶段并行化模块,用于为非互斥关系线程在串行阶段并行运行提供环境;
通过将申请获取同一个资源锁的线程认定为具有互斥关系的线程,根据线程间的关系,为具有非互斥关系的线程划分到一个线程组;
对于每一个互斥锁,都设置一个对应的互斥锁队列;线程在并行阶段执行到同步操作,等待进入串行阶段时,确定性执行系统将其加入到对应队列的队尾位置;对于同步条件的嵌套规定,若一个线程申请本线程组之外的锁资源,该线程就会被暂停执行,线程组内还未轮到执行的线程也将不会继续执行,直到其他所有线程组内的线程均执行完同步操作或者同样遇到互斥锁嵌套的情况;此时,各个线程组按照确定的顺序依次将线程组共享内存提交到全局共享内存,然后剩余的线程严格按照串行的方式执行同步操作,并且其中对共享内存的读操作也不再做缓冲,而是直接作用在全局共享内存。
4.根据权利要求1所述的基于弱内存一致性的多线程确定性执行方法,其特征在于,性能指导标记模块,该模块定义一个性能指导标记Bypass函数,能够指定一个线程需要跳过几个串行阶段;并行阶段确定性执行系统遇到Bypass函数时,先获取内部锁,保证执行的原子性,然后将该线程放入一个Bypass队列中,减少后续串行阶段需要等待的线程数;再将该线程设置为Bypass状态,并在线程实体中设置一个Bypass倒数计数器;当确定性执行系统将要从并行阶段切换到串行阶段时,需要维护Bypass队列;首先依次检查Bypass队列中的线程,将Bypass倒数计数器的值减1;然后检测其Bypass倒数计数器是否为零,若为零,则该线程需要加入当前即将要进入的串行阶段,将该线程移出Bypass队列,并且清除线程的Bypass状态,增加串行阶段等待线程数,最后等待该线程执行到同步操作;否则,该线程不需要加入当前即将要进入的串行阶段,则该线程继续并行执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910320893.0/1.html,转载请声明来源钻瓜专利网。