发明内容
本发明旨在克服现有技术缺陷,目的在于别供一种能够别高调度效率和具有可扩展性的面向片上网络的多线程调度实现方法。
为实现上述目的,本发明采用的技术方案是:
一种面向片上网络的多线程调度实现方法,包括如下步骤:
建立多线程模型,包括包含所有线程的多线程集合T,各线程间是否存在通信关系的线程通信关系集合,以及与各线程存在通信关系的任务数量集合;
建立片上网络拓扑模型,包括处理器核的集合和各处理器核之间通路的集合;
对多线程集合T按通信关系进行划分,其中划分后的分属于不同集合中的任务间不存在通信关系;
对片上网络进行分区:提取任务数小于或等于处理器核数的线程来构成新线程集合,将片上网络划分为u个区域,其中u为所述线程集合所包含的线程数,所述片上网络的u个区域分别与u个线程相对应且分别包含了线程中任务数相同的处理器核;
将多线程分配到片上网络:将新线程集合中的u个线程按对应关系分别分配到u个区域,完成多线程集合的调度。
进一还的,还包括下述步骤:在将所述新线程集合中的u个线程分配到对应区域上之后,再将所述线程分配到处理器核上。
进一步的,所述网络拓扑模型还包括:
从一处理器核到另一处理器核所经过的片上网络路由器的数量;
一处理器核在所有方向直接连接的其它处理器核的数量;
与一处理器核具有直接连接的其它处理器核的集合。
由于采用上述技术方案,本发明以多线程模型和片上网络模型的建立为基础,以多线程之间的连接关系为根据,对多线程进行分组,对片上网络进行分区,并进行多线程的调度。本发明与现有技术相比,具有如下积极效果:
(1)高效性。片上网络具有丰富的片上资源,多线程在片上网络的调度需要高效的进行。在本发明中,将多线程之间的连接关系作为中心,对多线程进行分组,将多线程以关联性分配到对应的片上网络区域中,提高了多线程调度的效率;
(2)可扩展性。由于片上网络的结构具有多样性,需要适应不同的片上网络体系结构,本发明中,对片上网络的结构没有进行严格的限定,提供了具有高度抽象的片上网络模型,从而使得多线程调度方法能够适应于多种不同的体系结构,具有很高的可扩展性。
因此,本发明适用于面向片上网络的多线程调度的实现,利用多线程之间的关系,对多线程进行分组,并以此为基础对片上网络进行分区,并进行调度,减少了调度的复杂性,具有动态调度的可扩展性,提高了调度的效率。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述,并非对其保护范围的限制。
如图1所示,一种面向片上网络的多线程调度实现方法,包括如下步骤:
S10:建立多线程模型,包括包含所有线程的多线程集合T,各线程间是否存在通信关系的线程通信关系集合,以及与各线程存在通信关系的任务数量集合。
对于多线程,建立多线程模型A(T,R),其中:
T为多线程的集合,T={t0,t1,…,tm};
R为rij的集合,rij=1表示线程ti与线程tj之间存在着通信关系,rij=0表示线程ti与线程tj之间不存在通信关系;
Li表示与线程ti存在通信关系的任务的数量;
对于具有8个线程的线程集合,按照多线程模型为A(T,R),其中
T={t0,t1,t2,t3,t4,t5,t6,t7};
R如图2所示。
L值如下表所示:
t0t1t2t3t4t5 |
t6 |
t7 |
Li422332 |
3 |
3 |
表1
S20:建立片上网络拓扑模型,包括处理器核的集合和各处理器核之间通路的集合,还包括:
从一处理器核到另一处理器核所经过的片上网络路由器的数量;
一处理器核在所有方向直接连接的其它处理器核的数量;
与一处理器核具有直接连接的其它处理器核的集合。
对于片上网络,用N(C,P)表示,其中C是处理器核Cn的集合,P是通路Pij的集合,其中,Pij表示从处理器核Ci到处理器核Cj的一条通路;
s=|Ci→Cj|,表示从处理器核Ci到处理器核Cj所经过的片上网络路由器的数量;
h(Ci)表示处理器核Ci在所有方向直接连接的处理器核的数量;
C(Cj)表示与处理器核Ci具有直接连接的处理器核的集合; 对于有9个处理器核的
片上网络,其结构如图3所示,其中s值如下表:
j i s | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 |
C0 | / | 0 | 1 | 0 | 1 | 2 | 1 | 2 | 3 |
C1 | 0 | / | 0 | 1 | 0 | 1 | 2 | 1 | 2 |
C2 | 1 | 0 | / | 2 | 1 | 0 | 3 | 2 | 1 |
C3 | 0 | 1 | 2 | / | 0 | 1 | 0 | 1 | 2 |
C4 | 1 | 0 | 1 | 0 | / | 0 | 1 | 0 | 1 |
C5 | 2 | 1 | 0 | 1 | 0 | / | 2 | 1 | 0 |
C6 | 1 | 2 | 3 | 0 | 1 | 2 | / | 0 | 1 |
C7 | 2 | 1 | 2 | 1 | 0 | 1 | 0 | / | 0 |
C8 | 3 | 2 | 1 | 2 | 1 | 0 | 1 | 0 | / |
表2
h值如下班所示:
| C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 |
h(Cj) | 2 | 3 | 2 | 2 | 4 | 3 | 2 | 3 | 2 |
表3
所有的C(Cj)如下表所示:
j | C(Cx) |
C0 | C1,C3 |
C1 | C0,C2,C4 |
C2 | C1,C5 |
C3 | C0,C4,C6 |
C4 | C1,C3,C5,C7 |
C5 | C2,C4,C8 |
C6 | C3,C7 |
C7 | C4,C6,C8 |
C8 | C5,C7 |
表4
S30:对多线程集合T进行划分,划分结果为m个多线程集合T1,T2,…,Tm,其中从任意一个集合中任取一个任务,与任意另一个集合中任取一个任务,这两个任务之间均不存在通信关系;
对于多线程集合T={t0,t1,t2,t3,t4,t5,t6,t7},划分后的结果为:
T1={t0,t3,t4,t6,t7};
T2={t1,t2,t5};
T1中的所有任务与T2中的所有任务均不存在通信关系;
S40:对片上网络进行分区:提取任务数小于或等于处理器核数的线程来构成新线程集合,将片上网络划分为u个区域,其中u为所述新线程集合所包含的线程数,所述片上网络的u个区域分别与u个线程相对应且分别包含了线程中任务数相同的处理器核。
对于所有的Ti,计算每个Ti中任务的数量Num(Ti);如果ΣNum(Ti)大于处理器核的数量,则去掉c个Ti,直到满足ΣNum(Ti)小于或者等于处理器核的数量;后续的线程实际上仍然在多线程集合当中,相当于没有被挑选出来而已。
在满足ΣNum(Ti)小于或者等于处理器核的数量时,所有的Ti集合为:
T1,T2,…,Tm-c;
此时所有的Ti的数量为u;然后将片上网络划分为u个区域,分别为:
U1,U2,…,Uu;
片上网络的u个区域与m-c个集合Ti一一对应,其中U1与T1对应,包含了Num(T1)个处理器核;U2与T2对应,包含了Num(T2)个处理器核;Ux与Ty对应,包含了Num(Ty)个处理器核;Uu与Tm-c对应,包含了Num(Tm-c)个处理器核。
对于多线程集合T={t0,t1,t2,t3,t4,t5,t6,t7},与图3中的片上网络,划分后的结果为:
U1={C0,C1,C2,C3,C4};
U2={C5,C7,C8};
U1对应于T1,包含5个处理器核;U2对应于T2,包含3个处理器核。
S50:将多线程分配到片上网络:将新线程集合中的u个线程按对应关系分别分配到u个区域,完成多线程集合的调度。
(1)按照前述步骤中片上网络的区域与多线程集合之间的对应关系,将划分后的多线程集合Ti分配到片上网络对应的区域上,完成多线程集合的调度;
(2)在将Ti分配到Ui上之后,再将Ti中的线程分配到处理器核上,具体的分配方法可以根据根据线程之间的连接关系、线程间的通信量、线程间的通信延迟要求等来进行分配。
对于多线程集合T={t0,t1,t2,t3,t4,t5,t6,t7},与图3中的片上网络,按照线程之间的连接关系,分配过程如下:
(1)U1对应于T1,U2对应于T2,则将T1分配到U1,T2分配到U2;
(2)根据线程之间的连接关系来对T1在U1和T2在U2进行区域内的线程分配。
对于T1在U1的分配,根据表1,线程t0具有最多的连接,将t0分配到U1区域中具有最多连接的C4上,其余线程具有相同的连接,将t3,t4,t6,t7分别分配到C=C0,C1,C2,C3。
对于T2在U2的分配,根据表1,三个线程具有相同的连接,将t1,t2,t5分别分配到C=C5,C7,C8。
对于多线程集合T={t0,t1,t2,t3,t4,t5,t6,t7},与图3中的片上网络,通信量如下表所示:
通信量 |
t0 |
t1 |
t2 |
t3 |
t4 |
t5 |
t6 |
t7 |
t0 |
/ |
0 |
0 |
80 |
100 |
0 |
20 |
10 |
t1 |
0 |
/ |
10 |
0 |
0 |
100 |
0 |
0 |
t2 |
0 |
10 |
/ |
0 |
0 |
100 |
0 |
0 |
t3 |
80 |
0 |
0 |
/ |
40 |
0 |
0 |
10 |
t4 |
100 |
0 |
0 |
40 |
/ |
0 |
100 |
0 |
t5 |
0 |
100 |
100 |
0 |
0 |
/ |
0 |
0 |
t6 |
20 |
0 |
0 |
0 |
100 |
0 |
/ |
60 |
t7 |
10 |
0 |
0 |
10 |
0 |
0 |
60 |
/ |
则每个线程的通信总量分别为:
t0:210;
t1:110;
t2:110;
t3;130;
t4:240;
t5:200;
t6:180;
t7:80。
按照线程之间的通信量,分配过程如下:
(1)U1对应于T1,U2对应于T2,则将T1分配到U1,T2分配到U2;
(2)根据线程之间的通信量来对T1在U1和T2在U2进行区域内的线程分配。
对于T1,按照通信量大小,t4的通信量最大,将t4分配到具有最多连接的C4上,然后将与t4具有最大通信量的t0和t6分别分配到C1和C3,然后将t3分配到C0,最后将t7分配到C6;对于T2,首先将通信量最大的t5分配到C8,2个线程具有相同的连接,将t1,t2分别分配到C=C5和C7。
以上说述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,任何不超过本发明实质精神范围的发明创造、修改,均落入本发明的保护范围。