一种基于多核的线程级推测并行的方法与流程

专利2022-06-30  63


本发明涉及一种基于多核的线程级推测并行的方法。



背景技术:

线程级并行(tlp),计算机在同一时间内可以执行两条以上的线程,通过整套验证机制保证线程执行过程中数据一致性。在传统的cmp模型,对于非规则程序并行化设计,程序代码段验证时方案:处理单元之间的进行验证,由一个确定线程执行完毕后验证它所激发的线程使用的数据是否一致。一致则将确定权限进行移交,反之则撤销已经激发的线程,由确定线程继续原有代码。

如附图1所示,传统执行模型由一个确定状态线程进行验证下一个线程,在此过程中,存在着后续线程处理速度快,则需要等待确定状态线程验证完成后方可继续执行其他代码。

由于传统模型自身,对非规则程序进行并行化时,存在着负载不平衡现象,导致计算性能降低。



技术实现要素:

(一)要解决的技术问题

为了解决现有技术的上述问题,本发明提供一种基于多核的线程级推测并行中负载均衡的方法。

(二)技术方案

为了达到上述目的,本发明提供一种基于多核的线程级推测并行的方法,具有多个核单元,每个核单元执行一段线程;包括:

a1、判断每一核单元执行处于第一状态的线程后,是否需要等待;

所述第一状态的段线程具有预先设定的第一顺序;

a2、若需要等待,则将所述第一状态的线程插入至预先设定的验证队列的位置中,并将所述验证队列的位置中的指针指向存储单元;

所述验证队列中具有多个顺序排列的位置;

所述线程插入验证队列的位置与所述线程在第一顺序中的次序对应;

所述验证队列中的每一位置中均具有预先设定的指向与所述位置相应的核单元的指针;

所述验证队列存储在存储单元中;

a3、根据所述验证队列中的指针方向,对第一状态的线程按照第一顺序在存储单元中或核单元中进行验证,获取验证结果。

优选的,所述步骤a1包括:

a1-1、获取核单元执行一段处于第二状态的线程的时间和每一核单元执行处于第一状态的线程的时间;

a1-2、基于每一核单元执行处于第一状态的线程的时间,在每一核单元执行第一状态的线程结束时,获取所述线程的状态和所述线程在第一顺序中相邻的前一线程的状态;

a1-3、基于核单元执行处于一段第二状态的线程的时间和每一核单元执行处于第一状态线程的时间以及核单元执行第一状态的每一段线程结束时所述线程的状态和所述线程在第一顺序中相邻的前一线程的状态,确定所述每一核单元执行第一状态的线程后是否需要等待。

优选的,所述步骤a1-3包括:

当所述核单元执行第一状态的线程结束时,若所述线程在第一顺序中相邻的前一线程的状态为第一状态时,则确定所述核单元需要等待。

优选的,所述步骤a1-3包括:

当所述核单元执行第一状态的线程结束时,若所述线程在第一顺序中相邻前一线程的状态为第二状态,且所述核单元执行第一状态的线程的时间比所述线程在第一顺序中相邻的前一线程的被执行时间短时,则确定所述核单元执行第一状态的线程结束后需要等待。

优选的,所述步骤a3包括:

若验证队列中顺序排列的位置中的指针指向核单元时,则在所述核单元中对所述核单元对应的线程进行验证,获取验证结果。

优选的,所述步骤a3包括:

若验证队列中顺序排列的位置中的指针指向存储单元,则在所述存储单元中对与所述位置相应的线程进行验证,获取验证结果。

优选的,在所述步骤a1之前还包括步骤:

b1、根据预先设定的待执行程序,确定多段与所述待执行程序的顺序相应的线程;

所述多段线程包括多段第一状态的线程和一段第二状态的线程;

b2、基于所述第二状态的线程,采用预先设定的乱序激发策略激发所述多段第一状态的线程。

优选的,所述预设定的第一顺序与所述待执行程序的顺序相应。

优选的,其特征在于,

所述第一状态为推测状态;

所述第二状态为确定状态。

(三)有益效果

本发明的有益效果是:本发明通过验证队列将验证从核单元,转移至存储单元中,消除线程间负载不平衡的现象,能增大核单元的有效执行率。

附图说明

图1为现有技术中并行执行示意图;

图2为本发明的一种基于多核的线程级推测并行的方法流程图;

图3为本发明实施例中的并行执行示意图。

【附图标记说明】

1:第一顺序中第一段线程;

2:第一顺序中第二段线程;

3:第一顺序中第三段线程;

4:第一顺序中第四段线程;

5:第一顺序中第五段线程;

6:第一顺序中第六段线程。

具体实施方式

为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。

实施例一

参见附图2,本实施例中基于多核的线程级推测并行的方法,具有多个核单元,每个核单元执行一段线程;包括:

步骤1、本实施例中,根据预先设定的待执行程序,确定多段与所述待执行程序的顺序相应的线程。

本实施例中的多段线程包括多段第一状态的线程和一段第二状态的线程。本实施例中的第一状态为推测状态,第二状态为确定状态。

步骤2、基于所述第二状态的线程,采用预先设定的乱序激发策略激发所述多段第一状态的线程。线程被激发后就由与线程相应的核单元执行。

步骤3、判断每一核单元执行处于第一状态的线程后,是否需要等待。

所述第一状态的段线程具有预先设定的第一顺序。

优选的,所述预设定的第一顺序与所述待执行程序的顺序相应。

优选的,本实施例中步骤3包括:

获取核单元执行一段处于第二状态的线程的时间和每一核单元执行处于第一状态的线程的时间。

基于每一核单元执行处于第一状态的线程的时间,在每一核单元执行第一状态的线程结束时,获取所述线程的状态和所述线程在第一顺序中相邻的前一线程的状态。

基于核单元执行处于一段第二状态的线程的时间和每一核单元执行处于第一状态线程的时间以及核单元执行第一状态的每一段线程结束时所述线程的状态和所述线程在第一顺序中相邻的前一线程的状态,确定所述每一核单元执行第一状态的线程后是否需要等待。

本实施例中,当所述核单元执行第一状态的线程结束时,若所述线程在第一顺序中相邻的前一线程的状态为第一状态时,则确定所述核单元需要等待。

本实施例中,当所述核单元执行第一状态的线程结束时,若所述线程在第一顺序中相邻前一线程的状态为第二状态,且所述核单元执行第一状态的线程的时间比所述线程在第一顺序中相邻的前一线程的被执行时间短时,则确定所述核单元执行第一状态的线程结束后需要等待。

步骤4、若需要等待,则将所述第一状态的线程插入至预先设定的验证队列的位置中,并将所述验证队列的位置中的指针指向存储单元。

所述验证队列中具有多个顺序排列的位置。

所述线程插入验证队列的位置与所述线程在第一顺序中的次序对应;

所述验证队列中的每一位置中均具有预先设定的指向与所述位置相应的核单元的指针。

所述验证队列存储在存储单元中。

步骤5、根据所述验证队列中的指针方向,对第一状态的线程按照第一顺序在存储单元中或核单元中进行验证,获取验证结果。

优选的,所述步骤5包括:

若验证队列中顺序排列的位置中的指针指向核单元时,则在所述核单元中对所述核单元对应的线程进行验证,获取验证结果。

若验证队列中顺序排列的位置中的指针指向存储单元,则在所述存储单元中对与所述位置相应的线程进行验证,获取验证结果。

本本实施例通过验证队列将验证从核单元,转移至存储单元中,当先被执行完的线程,不用再核单元中等待验证了,提高了效率。

实施例二

参见附图2和附图3,本实施例中的基于多核的线程级推测并行方法,具体包括:基于待执行的程序数据,确定具有第一顺序的6段线程;本实施例中,将6段线程的按照线程在第一顺序中的次序,分别对线程进行编号。并将线程的编号依序放入在顺序队列中。本实施例中的顺序队列储存在预先设定的数据结构中。

所述6段线程包括:1段确定状态线程和5段推测状态线程;所述第一顺序与所述程序的顺序对应;本实施例中对第一顺序中的第一段线程编号为1,表示线程1。对第一顺序中的第二段线程编号为2,表示线程2。对第一顺序中的第三段线程编号为3,表示线程3。对第一顺序中的第四段线程编号为4,表示线程4。对第一顺序中的第五段线程编号为5,表示线程5。对第一顺序中的第六段线程编号为6,表示线程6。

且本实施例中第一顺序中的第一段线程为确定状态线程,即,线程1为确定状态线程;线程2、线程3、线程4、线程5、线程6都为推测状态线程。本实施例中每个线程分别由一个核单元执行;所述5段推测状态线程通过乱序激发顺序被核单元执行;当推测状态的线程在第一顺序中与所述推测状态线程相邻的前一线程的状态为确定状态时,且所述前一线程被执行完时,所述推测状态的线程的状态被确定为确定状态。

还包括步骤:

a1、基于所述6段线程,分别获取所述6段线程中每一段线程的被执行时间。

本实施例中,参见附图3,分别获取线程1、线程2、线程3、线程4、线程5、线程6的被执行时间,也就是线程中的程序数据被计算的时间。

a2、基于所述6段线程中每一线程的被执行时间,在每一段推测状态线程被执行时间结束时,也就是说,当线程2、线程3、线程4、线程5、线程6中任一段线程被执行完时,获取所述线程被执行时间结束时所述线程的状态和所述线程在第一顺序中相邻前一线程的状态,如本实施例中,由图3可知,若线程2被执行完之后,获取当前线程1和线程2的状态;若线程3被执行完之后,获取此时线程3和线程2的状态;若线程4被执行完之后,获取当前线程3和线程4的状态;若线程5被执行完后,获取当前线程4和线程5的状态;若线程6被执行完后,获取当前线程5和线程6的状态。

a3、针对每一次获取的所述推测状态的线程被执行时间结束时的线程状态和所述线程在第一顺序中相邻的前一线程的状态和所述6段线程中每一线程的被执行时间,确定所述推测状态的线程是否需要等待被验证。

参见附图3,若所述线程在第一顺序中相邻前一线程的状态为推测状态时,则确定所述线程需要等待被验证。

举例说明,若线程4被执行完之后,此时线程3的状态为推测状态时,则确定线程4需要等待被验证。

若所述线程在第一顺序中相邻前一线程的状态为确定状态,且所述线程的被执行时间比所述线程在第一顺序中相邻前一线程的被执行时间短时,则确定所述线程需要等待被验证。

举例说明,若线程4被执行完之后,此时线程3的状态为确定状态,且此时线程3还没有被执行完时,则确定线程4需要等待被验证。

a4、若需等待被验证,则将所述线程的数据插入至预先设定的数据结构中的验证队列中与所述线程在第一顺序中的次序相应的位置并将所述位置中的指针指向存储单元;

所述验证队列中具有多个顺序排列的位置;

所述验证队列的每一位置中均具有指向与所述位置相应的核单元的指针。

所述验证队列存储在存储单元中。

本实施例中,还包括步骤:

a5、根据验证队列中顺序排列的位置中的指针,按照第一顺序对每一个推测线程在存储单元的验证队列中或核单元中进行验证,获取验证结果。

参见附图3,本实施例中步骤a5具体包括:

若验证队列中顺序排列的位置中的指针指向核单元,则在所述核单元中对与所述核单元相应的线程进行验证,获取验证结果;

若验证队列中顺序排列的位置中的指针指向存储单元,则待所述存储单元中对与所述位置相应的线程进行验证,获取验证结果。

本实施例通过验证队列将验证从核单元,转移至存储单元中,消除线程间负载不平衡的现象,能增大核单元的有效执行率。

以上结合具体实施例描述了本发明的技术原理,这些描述只是为了解释本发明的原理,不能以任何方式解释为对本发明保护范围的限制。基于此处解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。


技术特征:

1.一种基于多核的线程级推测并行的方法,其特征在于,具有多个核单元,每个核单元执行一段线程;包括:

a1、判断每一核单元执行处于第一状态的线程后,是否需要等待;

所述第一状态的段线程具有预先设定的第一顺序;

a2、若需要等待,则将所述第一状态的线程插入至预先设定的验证队列的位置中,并将所述验证队列的位置中的指针指向存储单元;

所述验证队列中具有多个顺序排列的位置;

所述线程插入验证队列的位置与所述线程在第一顺序中的次序对应;

所述验证队列中的每一位置中均具有预先设定的指向与所述位置相应的核单元的指针;

所述验证队列存储在存储单元中;

a3、根据所述验证队列中的指针方向,对第一状态的线程按照第一顺序在存储单元中或核单元中进行验证,获取验证结果。

2.根据权利要求1所述的方法,其特征在于,所述步骤a1包括:

a1-1、获取核单元执行一段处于第二状态的线程的时间和每一核单元执行处于第一状态的线程的时间;

a1-2、基于每一核单元执行处于第一状态的线程的时间,在每一核单元执行第一状态的线程结束时,获取所述线程的状态和所述线程在第一顺序中相邻的前一线程的状态;

a1-3、基于核单元执行处于一段第二状态的线程的时间和每一核单元执行处于第一状态线程的时间以及核单元执行第一状态的每一段线程结束时所述线程的状态和所述线程在第一顺序中相邻的前一线程的状态,确定所述每一核单元执行第一状态的线程后是否需要等待。

3.根据权利要求2所述的方法,其特征在于,所述步骤a1-3包括:

当所述核单元执行第一状态的线程结束时,若所述线程在第一顺序中相邻的前一线程的状态为第一状态时,则确定所述核单元需要等待。

4.根据权利要求3所述的方法,其特征在于,所述步骤a1-3包括:

当所述核单元执行第一状态的线程结束时,若所述线程在第一顺序中相邻前一线程的状态为第二状态,且所述核单元执行第一状态的线程的时间比所述线程在第一顺序中相邻的前一线程的被执行时间短时,则确定所述核单元执行第一状态的线程结束后需要等待。

5.根据权利要求1所述的方法,其特征在于,所述步骤a3包括:

若验证队列中顺序排列的位置中的指针指向核单元时,则在所述核单元中对所述核单元对应的线程进行验证,获取验证结果。

6.根据权利要求1所述的方法,其特征在于,所述步骤a3包括:

若验证队列中顺序排列的位置中的指针指向存储单元,则在所述存储单元中对与所述位置相应的线程进行验证,获取验证结果。

7.根据权利要求1所述的方法,其特征在于,在所述步骤a1之前还包括步骤:

b1、根据预先设定的待执行程序,确定多段与所述待执行程序的顺序相应的线程;

所述多段线程包括多段第一状态的线程和一段第二状态的线程;

b2、基于所述第二状态的线程,采用预先设定的乱序激发策略激发所述多段第一状态的线程。

8.根据权利要求7所述的方法,其特征在于,所述预设定的第一顺序与所述待执行程序顺序相应。

9.根据权利要求1所述的方法,其特征在于,

所述第一状态为推测状态;

所述第二状态为确定状态。

技术总结
本发明涉及一种基于多核的线程级推测并行的方法,包括:判断每一核单元执行处于第一状态的线程后,是否需要等待;所述第一状态的线程具有预先设定的第一顺序;若需要等待,则将所述第一状态的线程插入至预先设定的验证队列的位置中,并将所述验证队列的位置中的指针指向存储单元;所述验证队列中具有多个顺序排列的位置;所述线程插入验证队列的位置与所述线程在第一顺序中的次序对应;所述验证队列中的每一位置中均具有预先设定的指向与所述位置相应的核单元的指针;所述验证队列存储在存储单元中;根据所述验证队列中的指针方向,对第一状态的线程按照第一顺序在存储单元中或核单元中进行验证,获取验证结果。

技术研发人员:李远成;施佳琪;王朝闻;冯茹;蒋林
受保护的技术使用者:西安科技大学
技术研发日:2020.01.17
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-59979.html

最新回复(0)