该技术已申请专利。仅供学习研究,如用于商业用途,请联系技术所有人。

1.本文涉及但不限于计算机领域,尤其涉及一种众核处理器及其数据传输方法、计算机可读存储介质。
背景技术:2.众核处理器是为高度并行处理而设计的特殊类型的多核处理器,包含许多更简单、独立的处理器核(从几十个内核到几千个或更多)。众核处理器广泛用于嵌入式计算机和高性能计算。在众核处理器中,一个重要的技术组成部分就是核间通信,即不同处理器核之间的数据交互。而核间通信是建立在片上网络的物理结构以及数据传输特性的基础上的。
3.建立在交叉开关上的片上网络,其特点是每一特定时间点上都可以形成不同处理器核对之间的点对点通信。但是,由于交叉开关内部的传输资源冲突,同一时间段中只能进行点对点的单向传输,对于包含x个处理器核的众核处理器来说,如果一个处理器核要将数据发送给其余x-1个处理器核,或从其余x-1个处理器核接收数据,将会需要x-1个传输动作,这样将导致处理效率受限。
4.发明概述
5.以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
6.本技术示例性实施例提供了一种众核处理器及其数据传输方法、计算机可读存储介质,可以提高众核处理器中数据处理的效率。
7.一方面,本技术示例性实施例提供了一种众核处理器的数据传输方法,所述众核处理器包括x个处理器核,x为大于或等于2的整数;所述数据处理方法包括:
8.当处理器核之间需要进行数据传输,且数据发送方和数据接收方中至少一方为多个处理器核时,进行r轮点对点通信;1≤r<x-1;
9.其中,每轮点对点通信的过程分别包括:
10.确定本轮发送数据的处理器核;
11.分别确定每个本轮发送数据的处理器核所对应的目标处理器核;
12.每个本轮发送数据的处理器核分别通过基于交叉开关的片上网络,将待发送数据发送给各自对应的目标处理器核;
13.其中,至少一轮点对点通信中发送数据的处理器核为多个,多个发送数据的处理器核在该轮点对点通信中并行发送数据。
14.另一方面,本技术示例性实施例提供了一种众核处理器,包括:
15.基于交叉开关的片上网络、x个处理器核、与x个处理器核一一对应的x个直接存储器访问单元、以及与x个处理器核、x个直接存储器访问单元分别一一对应连接的x个存储器;x为大于或等于2的整数;
16.每个所述处理器核分别设置成通过对应的所述直接存储器访问单元连接所述基
于交叉开关的片上网络,按照权利要求1-13中任一项提供的数据传输方法进行数据传输;
17.所述基于交叉开关的片上网络设置成进行一组处理器核对之间的点对点通信,或并行的进行多组处理器核对之间的点对点通信。
18.再一方面,本技术示例性实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述实施例的数据传输方法。
19.在阅读并理解了附图和详细描述后,可以明白其他方面。
20.附图概述
21.附图用来提供对本文技术方案的进一步理解,并且构成说明书的一部分,与本技术实施例一起用于解释本文的技术方案,并不构成对本文的技术方案的限制。附图中一个或多个部件的形状和大小不反映真实比例,目的只是示意说明本文内容。
22.图1是本技术示例性实施例提供的众核处理器的数据传输方法中每轮点对点通信的流程示意图;
23.图2是本技术示例性实施例提供的众核处理器的示意图;
24.图3是示例一中进行数据全聚集处理的流程示意图;
25.图4a-图4d分别是示例一中第1-4轮点对点通信的示意图;
26.图5是示例二中进行数据聚集处理的流程示意图;
27.图6a-图6d分别是示例二中第1-4轮点对点通信的示意图;
28.图7是示例三中进行数据广播的流程示意图;
29.图8a-图8d分别是示例三中第1-4轮点对点通信的示意图;
30.图9是示例四中进行数据分发处理的流程示意图;
31.图10a-图10d分别是示例四中第1-4轮点对点通信的示意图;
32.图11a-图11c分别是示例五中第1-3轮点对点通信的示意图。
33.详述
34.下面将结合附图对本技术实施例进行详细说明。实施方式可以以多个不同形式来实施。所属技术领域的普通技术人员可以很容易地理解一个事实,就是方式和内容可以在不脱离本文的宗旨及其范围的条件下被变换为一种或多种形式。因此,本文不应该被解释为仅限定在下面的实施方式所记载的内容中。在不冲突的情况下,本文中的实施例及实施例中的特征可以相互任意组合。
35.在附图中,有时为了明确起见,夸大表示了一个或多个构成要素的大小、层的厚度或区域。因此,本文的一个方式并不一定限定于该尺寸,附图中多个部件的形状和大小不反映真实比例。此外,附图示意性地示出了理想的例子,本文的实现方式不局限于附图所示的形状或数值等。
36.本文中的“第一”、“第二”、“第三”等序数词是为了避免构成要素的混同而设置,而不是为了在数量方面上进行限定的。本文中的“多个”表示两个或两个以上的数量。
37.在本文中,为了方便起见,使用“中部”、“上”、“下”、“前”、“后”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示方位或位置关系的词句以参照附图说明构成要素的位置关系,仅是为了便于描述本说明书和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本文的限制。构成要素的位置关系根据描述构成要素的方向适当地改变。因此,不局限于在说明书中说明的词句,根据情
况可以适当地更换。
38.在本文中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解。例如,可以是固定连接,或可拆卸连接,或一体地连接;可以是机械连接,或电连接;可以是直接相连,或通过中间件间接相连,或两个元件内部的连通。对于本领域的普通技术人员而言,可以根据情况理解上述术语在本文中的含义。
39.在本文中,“电连接”包括构成要素通过具有某种电作用的元件连接在一起的情况。“具有某种电作用的元件”只要可以进行连接的构成要素间的电信号的传输,就对其没有特别的限制。“具有某种电作用的元件”的例子不仅包括电极和布线,而且还包括晶体管等开关元件、电阻器、电感器、电容器、其它具有一种或多种功能的元件等。
40.本技术示例性实施例提供了一种众核处理器的数据传输方法,众核处理器包括x个处理器核,x为大于或等于2的整数;数据处理方法包括:
41.当处理器核之间需要进行数据传输,且数据发送方和数据接收方中至少一方为多个处理器核时,进行r轮点对点通信;1≤r<x-1;
42.其中,每轮点对点通信的过程如图1所示,分别包括步骤s10-s30:
43.s10、确定本轮发送数据的处理器核;
44.s20、分别确定每个本轮发送数据的处理器核所对应的目标处理器核;
45.s30、每个本轮发送数据的处理器核分别通过基于交叉开关的片上网络,将待发送数据发送给各自对应的目标处理器核;
46.其中,至少一轮点对点通信中发送数据的处理器核为多个,多个发送数据的处理器核在该轮点对点通信中并行发送数据。
47.本实施例中,数据发送方和数据接收方中至少一方为多个处理器核的情况包括但不限于以下一种或多种情况:
48.进行“多对多”的数据传输,比如但不限于数据全聚集;
49.进行“一对多”的数据传输,比如但不限于数据广播、数据分发;
50.进行“多对一”的数据传输,比如但不限于数据聚集。
51.本文中的数据发送方和数据接收方是从整个数据传输过程的角度来定义的,而不是指单轮点对点通信中进行数据收、发的处理器核;比如,数据聚集的情况中,数据接收方是指定的处理器核,数据发送方是众核处理器中其余的处理器核,即:在r轮点对点通信中,每个“其余的处理器核”至少有一轮发送数据,但未必在每一轮的点对点通信中都发送数据。
52.本实施例中,当众核处理器中的处理器核之间,需要进行数据发送方和数据接收方中至少一方为多个处理器核的数据传输时,通过加入多组处理器核对并行的点对点通信的步骤,可以在一次点到点通信的时间段中实际完成多次点对点通信,这样完成数据传输所需要进行的点对点通信的轮次数将下降,从而从整体上加快了数据传输的速度,提高了数据处理的效率。
53.本实施例中,一个目标处理器核是且仅是一个发送数据的处理器核进行一轮点对点通信的对象,即在一轮点对点通信中接收数据的处理器核;进行点对点通信的两个处理器核可称为一组处理器核对。
54.本实施例中,一轮点对点通信中发送数据的处理器核为多个,意味着在这一轮通
信中,将进行多组处理器核对之间的、并行的点对点通信。
55.本实施例中,当处理器核之间需要进行“多对多”、或“一对多”“多对一”的数据传输时,通过加入多组处理器核对并行的点对点通信的步骤,可以在一次点到点通信的时间段中实际完成多次点对点通信,从而从整体上加快了数据传输的速度,提高了数据传输的效率。
56.本实施例中,不同情况下的待发送数据相应不同,比如数据全聚集和数据聚集的情况下,待发送数据是待聚集数据,包括本处理器核本身拥有的待聚集数据,以及一或多轮点对点通信后从别的处理器核接收到的待聚集数据;数据广播的情况下,待发送数据是广播数据;数据分发的情况下,待发送数据是待分发出去的数据。
57.本实施例中,每个本轮发送数据的处理器核可以通过分别配置各自对应的直接存储器读取单元的参数,来通过基于交叉开关的片上网络进行发送。
58.本实施例中,每轮点对点通信中,步骤s30后还可以包括:众核处理器中的所有处理器核通过同步栅栏装置完成核间同步。
59.本实施例中,当众核处理器中每个处理器核都要参与数据传输(作为数据发送方和数据接收方中的至少一方)时,点对点通信的最小轮次数可以根据处理器核的个数确定。
60.其中,每个处理器核都要参与数据传输的情况可以包括但不限于:
61.数据全聚集的情况,数据发送方和数据接收方均为全部的处理器核;
62.数据聚集的情况下,数据接收方是指定的一个处理器核,数据发送方是众核处理器中其余的处理器核;
63.数据广播和数据分发的情况下,数据发送方是拥有广播数据或待分发数据的处理器核,数据接收方是众核处理器中其余的处理器核。
64.本实施例中,进行点对点通信的轮数和众核处理器中处理器核的个数可以相关;一些实施方式中,当处理器核为2n个时,点对点通信的最小轮次数可以为n;当处理器核的个数不是2的整数次幂时,n可以取为能使2n大于或等于x的最小整数,点对点通信的最小轮次数可以为n。
65.比如当众核处理器包括16个处理器核时,n=4,进行4轮点对点通信就可以完成数据全聚集、或数据聚集、或数据分发、或数据广播等;当众核处理器包括6个处理器核时,n=3,进行3轮点对点通信就可以完成数据全聚集、或数据聚集、或数据分发、或数据广播等。
66.一些示例性实施例中,分别确定每个本轮发送数据的处理器核所对应的目标处理器核可以包括:
67.确定本轮点对点通信的跨度;
68.对于每个本轮发送数据的处理器核,分别根据该处理器核的标识和跨度,确定该处理器所对应的目标处理器核的标识;
69.其中,x个处理器核的标识依次为0到x-1的整数。
70.本实施例中,处理器核的标识可以预先配置在每个处理器核中,当众核处理器上电后,每个处理器核可以知道本处理器核的标识。
71.本实施例中,处理器核的标识依次相连,在确定本轮跨度后,对于每个处理器核,将本身的标识加上或减去跨度,就可以得知对应的目标处理器核的标识,从而确定对应的目标处理器核。
72.本实施例中的标识0到x-1可以等同替换为其它形式,比如1到x,再比如a到z,再比如是二进制数0000-1111,其它有序的数字或字符序列均可作为处理器核的标识。
73.本实施例中,跨度可以理解为标识移动的距离,比如跨度为2,即目标处理器核的标识等于发送数据的处理器核的标识加2或减2。至于是加或是减,即移动的方向是向标识更大或更小的处理器核所在方向移动,可以是默认的或指定的。最小的标识和最大的标识可以认为相邻且距离为1,比如处理器核的标识是从0到15,跨度为1且移动方向为向更大的标识移动时,对于标识为15的处理器核,目标处理器核的标识为0;跨度为2且移动方向为向更大的标识移动时,对于标识为15的处理器核,目标处理器核的标识为1,以此类推。
74.本实施例中,每轮的跨度可以是预定的,比如直接设置为1、2、4、8
……
;或者,跨度可以根据众核处理器中处理器核的个数和第一预定规则计算得到的,这样在众核处理器中处理器核的个数发生变化时,跨度能够根据第一预定规则自行调整,而无需人工参与进行更新。
75.本实施例中,第一预定规则可以是:
76.第一轮点对点通信的跨度为1,其余每一轮点对点通信的跨度均为上一轮跨度的两倍,直至跨度为2
n-1
;或者第一轮点对点通信的跨度为2
n-1
,其余每一轮点对点通信的跨度均为上一轮跨度的1/2,直至跨度为1;
77.其中,n是能使2n大于或等于x的最小整数。
78.本实施例中,通过有规律的改变每一轮点对点通信的跨度,可以确保每个处理器核在每一轮和不同的处理器核通信,从而使得多个处理器核之间的交互更加的充分。
79.其它实施例中,跨度不一定是2的整数次幂,可以是其它设定的值,或可以是根据第一预定规则计算出的值;多轮点对点通信中,跨度不一定从小到大,或从大到小,而是可以自由变化,比如三轮点对点通信的跨度可以是1、5、3,或其它形式。
80.本实施例中,处理器核之间需要进行的数据传输为数据全聚集或数据聚集时,第一预定规则可以是:跨度等于2
n-m
;其中,m的初始值为n,每一轮点对点通信后m减1,直至m等于0时结束点对点通信,即m等于1时进行的是本次数据全聚集或聚集操作中最后一轮点对点通信。
81.本实施例中,处理器核之间需要进行的数据传输为数据广播时,第一预定规则可以是:跨度等于2m;其中,m的初始值为0,每一轮点对点通信后m加1,直至m等于n时结束点对点通信,即m等于n-1时进行的是本次数据广播操作中最后一轮点对点通信。
82.本实施例中,处理器核之间需要进行的数据传输为数据分发时,第一预定规则可以是:跨度等于2
m-1
;其中,m的初始值为n,每一轮点对点通信后m减1,直至m等于0时结束点对点通信,即m等于1时进行的是本次数据分发操作中最后一轮点对点通信。
83.一些示例性实施例中,本轮发送数据的处理器核可以预先指定或可以根据特定规则确定,或可以是拥有待发送数据的每个处理器核;比如数据全聚集的情况下,每轮发送数据的处理器核都是众核处理器中的全部处理器核;再比如数据聚集、数据广播、或数据分发的情况下,每轮发送数据的处理器核可以分别是拥有待聚集数据、广播数据、或待分发数据的处理器核。
84.一些示例性实施例中,分别确定每个本轮发送数据的处理器核所对应的目标处理器核可以包括:
85.分别根据每个本轮发送数据的处理器核的标识、众核处理器中处理器核的个数和第二预定规则,计算出对应的目标处理器核的标识;其中,x个处理器核的标识依次为0到x-1的整数。
86.本实施例中,在众核处理器中处理器核的个数、或发送数据的处理器核发生变化时,能够根据第二预定规则自动确定出每个发送数据的处理器核对应的目标处理器核,而无需人工参与进行设置,这样适用性更好且更简单方便;可以采用函数或其它代码形式来实现第二预定规则。
87.本实施例的替换方案中,可以预先设置对应关系,其中包含了不同标识的处理器核各自对应的目标处理器核的标识;这样根据发送数据的处理器核的标识,可以在对应关系中查找到对应的目标处理器核的标识,从而确定进行点对点通信的双方处理器核。不同轮次的点对点通信所采用的对应关系可以不同;不同数据传输情况所采用的对应关系可以不同。当众核处理器中处理器核的个数发生变化,或增加新的数据传输情况时,可以通过更新对应关系来使对应关系能够继续适用。
88.一些示例性实施例中,处理器核之间需要进行的数据传输为数据全聚集时,第二预定规则可以是:对于标识为k的发送数据的处理器核,对应的目标处理器核的标识d=(k+2
n-m
)%(2n);其中,n是能使2n大于或等于x的最小整数,m的初始值为n,每一轮点对点通信后m减1,直至m等于0时结束点对点通信;其中,k为整数且0≤k≤x-1。
89.本实施例中,数据全聚集的每轮点对点通信中,可以每个处理器核都进行发送,即k分别是0到x-1中的每个整数。
90.一些示例性实施例中,处理器核之间需要进行的数据传输为数据聚集,且聚集在标识为二进制数k的处理器核中时,第二预定规则可以是:
91.对于标识为二进制数s的发送数据的处理器核,对应的目标处理器核的标识为二进制数时,和k的右起第n-m+1位的数值相同,且其余位和s的相应位的数值相同;n是能使2n大于或等于x的最小整数,m的初始值为n,每一轮点对点通信后m减1,直至m等于0时结束点对点通信;其中,k对应的十进制数为整数且0≤k≤x-1。
92.本实施例中,数据聚集最终是要将每个处理器核中的待聚集数据集中到一个处理器核中,这个最终拥有每个处理器核中待聚集数据的处理器核的标识为k,k可以是0到x-1中任何一个整数的二进制形式。
93.在数据聚集的情况下,可以通过直接指定标识来确定每轮发送数据的处理器核,比如第1轮点对点通信时,发送数据的处理器核是x个处理器核中的至少一半处理器核,第2轮点对点通信时,发送数据的处理器核是接收到数据的处理器核中的至少一半,以此类推,直到最后一轮点对点通信后,待聚集数据都集中到标识为k的处理器核中。
94.一些示例性实施例中,可以根据第三预定规则确定每轮发送数据的处理器核;处理器核之间需要进行的数据传输为数据聚集,且聚集在标识为二进制数k的处理器核中时,第三预定规则可以但不限于为:
95.发送数据的处理器核的二进制数标识s和k的右起第n-m位数值相同,且右起第n-m+1位的数值不同。
96.本实施例中,根据k,可以推算出每轮点对点通信中要进行发送的处理器核的标识。
97.一些示例性实施例中,处理器核之间需要进行的数据传输为数据广播,确定每轮发送数据的处理器核为本轮拥有广播数据的处理器核,二进制数标识为p;第二预定规则可以是:
98.每个本轮拥有广播数据的处理器核各自对应的目标处理器的二进制数标识分别为:p与2m异或的结果;其中,m的初始值为0,每一轮点对点通信后m加1,直至m等于n时结束点对点通信,n是能使2n大于或等于x的最小整数。
99.其中,在第1轮点对点通信前,拥有广播数据的处理器核可以只有一个,即p只有一个取值;而在第1轮点对点通信后,拥有广播数据的处理器核将翻倍,这样到了第2轮点对点通信时,将至少有两个处理器核拥有广播数据,即p至少有2个取值;以此类推。
100.一些示例性实施例中,处理器核之间需要进行的数据传输为数据分发,确定每轮发送数据的处理器核为本轮拥有待分发数据的处理器核,二进制数标识为p;第二预定规则可以是:
101.每个本轮拥有待分发数据的处理器核各自对应的目标处理器的二进制数标识分别为:p与2
m-1
异或的结果;其中,n是能使2n大于或等于x的最小整数,m的初始值为n,每一轮点对点通信后m减1,直至m等于0时结束点对点通信。
102.本实施例中,第1轮点对点通信时,只有一个处理器核拥有待分发数据,即p只有一个取值;第2轮点对点通信时,有两个处理器核拥有待分发数据,即p有两个取值;以此类推。
103.本实施例中,处理器核之间需要进行的数据传输为数据分发,且本轮拥有广播数据的处理器核的标识为二进制数p时,每轮点对点通信还可以包括:对于每个本轮发送数据的处理器核,当本处理器核的标识大于对应的目标处理器核的标识时,发送本处理器核拥有的待分发数据中的前一半数据;当本处理器核的标识小于目标处理器核的标识时,发送本处理器拥有的待分发数据中的后一半数据。
104.一些示例性实施例中,提供了一种众核处理器,如图2所示,包括:
105.基于交叉开关的片上网络21、x个处理器核22(即图2中的处理器核0、处理器核1、
……
、处理器核x-1)、与x个处理器核一一对应的x个dma(direct memory access,直接存储器访问)单元23、以及与x个处理器核、x个dma单元分别一一对应连接的x个存储器24(即图2中的存储器0、存储器1、
……
、存储器x-1);
106.每个处理器核22分别设置成通过对应的dma单元23连接基于交叉开关的片上网络21,按照上述任一实施例提供的数据传输方法进行数据传输;
107.基于交叉开关的片上网络21设置成进行一组处理器核对之间的点对点通信,或并行的进行多组处理器核对之间的点对点通信。
108.本实施例中,每个处理器核22在基于交叉开关的片上网络21上只有一个输入输出接口,
109.本实施例中,基于交叉开关的片上网络21实现的点对点通信可以是单向的,即:将一个端口的数据发送到另一个端口。基于交叉开关的片上网络21上的不同端口和不同的dma单元23相连接,即和不同的处理器核22相连接。当有多组处理器核对都要进行点对点通信时,基于交叉开关的片上网络21可以并行的进行多个点对点通信,确保多组处理器核对之间的数据传输。
110.本实施例中,发送数据的处理器核可以通过配置对应的dma单元的参数,使dma单
元发送指定的数据(指定的数据地址以及数据长度)至目标处理器核对应的dma单元;通过两个dma单元之间的通信,可实现不同处理器核之间的通信。
111.本实施例中,存储器可以保存所连接的处理器核所产生的过程数据和结果数据;另外,可以保存其它处理器核发送给所连接的处理器核的数据。
112.本实施例中,众核处理器可以还包括处理器核间同步栅栏装置,设置成完成不同处理器核之间的同步。
113.一些示例性实施例中,提供了一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于执行上述任一实施例的数据传输方法。
114.下面用四个示例分别说明四种不同类型的处理的实现过程。
115.以下示例一到四中,假设x=2n,n为大于或等于1的正整数,即众核处理器中包含2n个处理器核,每个处理器核已配置有标识,依次为0、1、2、
……
、2n-1;每个处理器核各自有对应的dma单元以及存储器;每个dma单元通过基于交叉开关的片上网络进行通信。
116.以下示例一到四中以n=4为例,则处理器核的标识为0-15;下文中,处理器核0和cpu0均是指标识为0的处理器核,处理器核1和cpu1均是指标识号为1的处理器核,以此类推。
117.示例一、数据全聚集处理
118.数据全聚集处理是将众核处理器中每个处理器核里的待聚集数据集中在一起,并且每个处理器核中都包含全部的待聚集数据;即,全聚集处理后,每个处理器核中除了包含本处理器核原先的待聚集数据以外,还将包含全聚集处理前每个其它处理器核中的待聚集数据。
119.本示例中,全聚集处理的过程如图3所示,包括步骤101-106:
120.步骤101、令m=n;
121.步骤102、计算本轮数据通信的处理器核标识的跨度为2
n-m
;
122.步骤103、本轮每个处理器核分别确定接收待聚集数据的目标处理器核;
123.其中,目标处理器核的标识d=(k+2
n-m
)%(2n);k是发送待聚集数据的处理器核的标识;k是0-2n中的任意一个整数,即目标处理器核可以是众核处理器中任意一个处理器核;
124.步骤103的一个等同替换方式中,以k作为目标处理器核的标识,(k+2
n-m
)%(2n)作为发送方处理器核的标识,这样每一轮点对点通信时的跨度仍然为2
n-m
,只不过待聚集数据的传递方向相反;
125.步骤104、每个处理器核分别配置对应的dma单元的参数,以进行点对点通信;
126.其中,所配置的参数可以包括:目标处理器核的标识d、数据源地址、数据目的地址以及本次通信的数据长度l
×2(n-m)
;其中,l可以看成一个单位长度,本示例中,l可以是进行全聚集处理前,一个处理器核中待聚集数据的长度(假设每个处理器核中待聚集数据的长度相同),或是进行全聚集处理前,处理器核中最长的待聚集数据的长度(假设每个处理器核中待聚集数据的长度不同)。
127.进行点对点通信时,每个处理器核可以分别通过各自对应的dma单元和基于交叉开关的片上网络,将自身的待聚集数据发送到目标处理器核;
128.步骤105、完成点对点通信后,每个处理器核通过同步栅栏装置完成核间同步;
129.步骤106、m=m-1,如果m等于0则表明数据全聚集完毕,m不等于0则跳转到步骤102。
130.本示例中n=4,因此m的初始值为4,这意味着将会进行4轮点对点通信,进行4轮步骤102-106。在4轮点对点通信中,m依次为4、3、2、1,跨度相应依次为1、2、4、8;对于处理器核k,在4轮点对点通信中,目标处理器核的标识依次为(k+1)%16、(k+2)%16、(k+4)%16、(k+8)%16。
131.在第1轮点对点通信中,m=4,跨度为1,则标识为0、1、2、
……
、14、15的处理器核对应的目标处理器核的标识分别是1、2、3、
……
、15、0,点对点通信过程如图4a所示。
132.第1轮点对点通信后每个处理器核中的待聚集数据如表一所示,下文中的d0代表全聚集处理前cpu0中的待聚集数据,表一中的d1代表全聚集处理前cpu1中的待聚集数据,以此类推。
133.表一、第1轮后每个处理器核中的数据情况
134.cpu0d0、d15cpu1d1、d0cpu2d2、d1cpu3d3、d2cpu4d4、d3cpu5d5、d4cpu6d6、d5cpu7d7、d6cpu8d8、d7cpu9d9、d8cpu10d10、d9cpu11d11、d10cpu12d12、d11cpu13d13、d12cpu14d14、d13cpu15d15、d14
135.在第2轮点对点通信中,m=3,跨度为2,则标识为0、1、2、
……
、14、15的处理器核对应的目标处理器核的标识分别是2、3、4、
……
、0、1,点对点通信过程如图4b所示。
136.第2轮点对点通信后每个处理器核中的待聚集数据如表二所示。
137.表二、第2轮后每个处理器核中的数据情况
[0138][0139][0140]
在第3轮点对点通信中,m=2,跨度为4,则标识为0、1、2、
……
、14、15的处理器核对应的目标处理器核的标识分别是4、5、6、
……
、2、3,点对点通信过程如图4c所示。
[0141]
第3轮点对点通信后每个处理器核中的待聚集数据如表三所示。
[0142]
表三、第3轮后每个处理器核中的数据情况
[0143]
cpu0d0、d15、d14、d13、d12、d11、d10、d9cpu1d1、d0、d15、d14、d13、d12、d11、d10cpu2d2、d1、d0、d15、d14、d13、d12、d11cpu3d3、d2、d1、d0、d15、d14、d13、d12cpu4d4、d3、d2、d1、d0、d15、d14、d13cpu5d5、d4、d3、d2、d1、d0、d15、d14cpu6d6、d5、d4、d3、d2、d1、d0、d15cpu7d7、d6、d5、d4、d3、d2、d1、d0cpu8d8、d7、d6、d5、d4、d3、d2、d1cpu9d9、d8、d7、d6、d5、d4、d3、d2cpu10d10、d9、d8、d7、d6、d5、d4、d3cpu11d11、d10、d9、d8、d7、d6、d5、d4cpu12d12、d11、d10、d9、d8、d7、d6、d5cpu13d13、d12、d11、d10、d9、d8、d7、d6cpu14d14、d13、d12、d11、d10、d9、d8、d7cpu15d15、d14、d13、d12、d11、d10、d9、d8
[0144]
在第4轮点对点通信中,m=1,跨度为8,则标识为0、1、2、
……
、14、15的处理器核对
应的目标处理器核的标识分别是8、9、10、
……
、6、7,点对点通信过程如图4d所示。
[0145]
第4轮点对点通信后每个处理器核中的待聚集数据如表四所示。
[0146]
表四、第4轮后每个处理器核中的数据情况
[0147][0148][0149]
可以看到,在第4轮点对点通信完成后,每个处理器核中都包含了d0-d15,即通过4轮点对点通信就可以完成数据全聚集处理。
[0150]
本示例中,16个处理器核通过4轮点对点通信就可以完成数据全聚集处理,在每轮点对点通信中,16个处理器核并行的发送待聚集数据给另一个处理器核,并且各自接收另一个处理器核发送来的待聚集数据,即每轮点对点通信中,均并行进行16对处理器核之间的点对点通信,这样极大提高了数据全聚集处理的完成速度,提高了数据处理效率。
[0151]
处理器核为其它个数时,包括不是2的整数次幂的情况时,可以参照本示例实现。
[0152]
示例二、数据聚集处理
[0153]
数据聚集处理是将众核处理器中每个处理器核里的待聚集数据集中在一个指定的处理器核里;指定的处理器核的标识为k,用二进制数表示。
[0154]
本示例中,聚集处理的过程如图5所示,包括步骤201-206:
[0155]
步骤201、令m=n;
[0156]
步骤202、计算本轮数据通信的处理器核标识的跨度为2
n-m
;
[0157]
步骤203、确定本轮发送数据的处理器核,以及对应的进行接收的目标处理器核;
[0158]
其中,发送数据的处理器核的标识s用二进制数表示时,低(n-m)bit与k的低(n-m)bit数值相同,且低(n-m+1)bit与k数值不同;目标处理器核的标识d用二进制数表示时,低(n-m+1)bit与k的低(n-m+1)bit数值相同,且其余bit和s的相应bit相同;
[0159]
步骤203的一个等同替换方式中,可以互换s和d,这样每一轮点对点通信时的跨度仍然为2
n-m
,只不过数据传递方向相反;即,数据传递方向可以是正方向(比如从左到右),也可以是反方向(比如从右到左);
[0160]
步骤204、发送数据的处理器核分别配置对应的dma单元的参数,以进行点对点通信;
[0161]
其中,所配置的参数可以包括:目标处理器核的标识d、数据源地址、数据目的地址以及本次通信的数据长度l
×2(n-m)
;其中,l可以看成一个单位长度,本示例中,l可以是进行全聚集处理前,一个处理器核中待聚集数据的长度(假设每个处理器核中待聚集数据的长度相同),或是进行全聚集处理前,处理器核中最长的待聚集数据的长度(假设每个处理器核中待聚集数据的长度不同);
[0162]
其中,在进行点对点通信时,每个发送数据的处理器核可以分别通过各自对应的dma单元和基于交叉开关的片上网络,将自身的待聚集数据发送到对应的目标处理器核;
[0163]
步骤205、完成点对点通信后,处理器核(包含进行发送或接收的处理器核,以及其它没有进行通信的处理器核)通过同步栅栏装置完成核间同步;
[0164]
步骤206、m=m-1,如果m等于0则表明数据聚集完毕,m不等于0则跳转到步骤202。
[0165]
本示例中n=4,因此m的初始值为4,这意味着将会进行4轮点对点通信,进行4轮步骤202-206。在4轮点对点通信中,m依次为4、3、2、1,跨度相应依次为1、2、4、8。
[0166]
假设数据将聚集到处理器核10中,则4轮点对点通信过程如下:
[0167]
在第1轮点对点通信中,m=4,跨度为1,k为10,二进制表示为1010,进行发送的处理器核的标识最低一位(即右起第一位)与k不同,应当为“1”,则进行发送的处理器核的标识分别是:0001、0011、0101、0111、1001、1011、1101、1111,即进行发送的处理器核的标识是1、3、5、7、9、11、13、15;目标处理器核的标识的最低一位和k相同,为“0”,且对应进行收、发数据的处理器核的标识的高三位相同,因此标识为0001、0011、0101、0111、1001、1011、1101、1111的处理器核对应的目标处理器核的标识分别是:0000、0010、0100、0110、1000、
1010、1100、1110,即标识为1、3、5、7、9、11、13、15的处理器核对应的目标处理器核的标识分别是0、2、4、6、8、10、12、14。第1轮的点对点通信过程如图6a所示。
[0168]
第1轮点对点通信后每个目标处理器核中的待聚集数据如表五所示。
[0169]
表五、第1轮后每个目标处理器核中的数据情况
[0170][0171][0172]
在第2轮点对点通信中,m=3,跨度为2,10的二进制数为1010,进行发送的处理器核的标识最低一位与k相同,为“0”,右起第二位和k不同,为“0”,则进行发送的处理器核的标识分别是:0000、0100、1000、1100,即进行发送的是处理器核0、4、8、12;目标处理器核的标识的低两位和k相同,为“10”,且对应进行收、发数据的处理器核的标识的其余两位(高两位)相同,因此标识为0000、0100、1000、1100的处理器核对应的目标处理器核的标识分别是:0010、0110、1010、1110,即标识为0、4、8、12的处理器核对应的目标处理器核的标识分别是2、6、10、14。第2轮的点对点通信过程如图6b所示。
[0173]
第2轮点对点通信后每个目标处理器核中的待聚集数据如表六所示。
[0174]
表六、第2轮后每个目标处理器核中的数据情况
[0175]
cpu2d2、d3、d0、d1cpu6d6、d7、d4、d5cpu10d10、d11、d8、d9cpu14d14、d15、d12、d13
[0176]
在第3轮点对点通信中,m=2,跨度为4,进行发送的处理器核的标识最低两位与k相同,为“10”,右起第三位和k不同,为“1”,则进行发送的处理器核的标识分别是:0110、1110,即进行发送的是处理器核6和14;目标处理器核的标识的低三位和k相同,为“010”,且对应进行收、发数据的处理器核的标识的其余一位(最高位)相同,因此标识为0110、1110的处理器核对应的目标处理器核的标识分别是:0010、1010,即处理器核6、处理器核14对应的目标处理器核分别是处理器核2、处理器核10。第3轮的点对点通信过程如图6c所示。
[0177]
第3轮点对点通信后每个目标处理器核中的待聚集数据如表七所示。
[0178]
表七、第3轮后每个目标处理器核中的数据情况
[0179]
cpu2d2、d3、d0、d1、d6、d7、d4、d5cpu10d10、d11、d8、d9、d14、d15、d12、d13
[0180]
在第4轮点对点通信中,m=1,跨度为8,进行发送的处理器核的标识最低三位与k相同,为“010”,最高位和k不同,为“0”,则进行发送的处理器核的标识是:0010,即进行发送
的是处理器核2;目标处理器核的标识的四位都和k相同,为“1010”,即处理器核2对应的目标处理器核是处理器核10。第4轮的点对点通信过程如图6d所示。
[0181]
第4轮点对点通信后目标处理器核10中的待聚集数据如表八所示。
[0182]
表八、第4轮后目标处理器核10中的数据情况
[0183][0184]
可以看到,在第4轮点对点通信结束后,处理器核10中包含了d0-d15,即通过4轮点对点通信完成了在处理器核10中的数据聚集处理。
[0185]
本示例中,16个处理器核通过4轮点对点通信就可以将每个处理器核中的待聚集数据集中到处理器核10中,在前3轮点对点通信中,均有两个或以上的处理器核并行的发送待聚集数据给另一个处理器核,即前3轮点对点通信中,每轮均并行进行多对处理器核之间的点对点通信,这样大大提高了数据聚集处理的完成速度,提高了数据处理效率。
[0186]
处理器核为其它个数时,包括不是2的整数次幂的情况时,可以参照本示例实现。
[0187]
示例三、数据广播发送
[0188]
数据广播发送是将众核处理器中存在于一个处理器核里的广播数据发送给其余的处理器核。
[0189]
本示例中,聚集处理的过程如图7所示,包括步骤301-306:
[0190]
步骤301、令m=0;
[0191]
步骤302、计算本轮数据通信的处理器核标识的跨度为2m;
[0192]
步骤303、确定每个拥有广播数据的处理器核本轮中各自对应的目标处理器核;
[0193]
假设本轮已经拥有广播数据的处理器核的标识为p,用二进制数表示,则所确定的目标处理器核的标识为p xor 2m;
[0194]
步骤304、每个拥有广播数据的处理器核分别配置对应的dma单元的参数,以进行点对点通信;
[0195]
其中,所配置的参数包括:目标处理器核的标识d、数据源地址、数据目的地址以及广播数据的长度;
[0196]
其中,在点对点通信中,每个拥有广播数据的处理器核可以分别通过各自对应的dma单元和基于交叉开关的片上网络,将自身拥有的广播数据发送到对应的目标处理器核;
[0197]
步骤305、完成点对点通信后每个处理器核(包含进行发送或接收的处理器核,以及没有进行通信的处理器核)通过同步栅栏装置完成核间同步;
[0198]
步骤306、m=m+1,如果m等于n则表明数据广播发送完毕,m不等于n则跳转到步骤302。
[0199]
本示例中n=4,m的初始值为0,这意味着将会进行4轮点对点通信,进行4轮步骤302-306。在4轮点对点通信中,m依次为0、1、2、3,跨度相应依次为1、2、4、8。假设初始保存有广播数据的是处理器核10,二进制表示为1010,则4轮点对点通信过程如下:
[0200]
在第1轮点对点通信中,m=0,跨度为1,p=1010,则目标处理器核的标识为1010与0001异或的结果:1011,即处理器核11。第1轮的点对点通信过程如图8a所示。在第1轮点对点通信前,仅处理器核10有广播数据,第1轮点对点通信后每个处理器核中广播数据的有无
如表九所示,表九中第一行为处理器核的标识,第二行的“有”代表有广播数据,“无”代表无广播数据。
[0201]
表九、第1轮后每个处理器核中广播数据的情况
[0202]
0123456789101112131415无无无无无无无无无无有有无无无无
[0203]
在第2轮点对点通信中,m=1,跨度为2,p分别是1010、1011,则目标处理器核的标识分别为1010与0010异或的结果、1011与0010异或的结果:1000、1001,即目标处理器核是处理器核8、处理器核9。第2轮的点对点通信过程如图8b所示。第2轮点对点通信后每个处理器核中广播数据的有无如表十所示,表十中第一行为处理器核的标识,第二行的“有”代表有广播数据,“无”代表无广播数据。
[0204]
表十、第2轮后每个处理器核中广播数据的情况
[0205]
0123456789101112131415无无无无无无无无有有有有无无无无
[0206]
在第3轮点对点通信中,m=2,跨度为4,p分别是1000、1001、1010、1011,则目标处理器核的标识分别为1000、1001、1010、1011与0100异或的结果:1100、1101、1110、1111,即目标处理器核为处理器核12-15。第3轮的点对点通信过程如图8c所示。第3轮点对点通信后每个处理器核中广播数据的有无如表十一所示,表十一中第一行为处理器核的标识,第二行的“有”代表有广播数据,“无”代表无广播数据。。
[0207]
表十一、第3轮后每个处理器核中广播数据的情况
[0208]
0123456789101112131415无无无无无无无无有有有有有有有有
[0209]
在第4轮点对点通信中,m=3,跨度为8,p分别是1000、1001、1010、1011、1100、1101、1110、1111,各自与1000异或的结果为:0000、0001、0010、0011、0100、0101、0110、0111,即目标处理器核是处理器核0-7。第4轮的点对点通信过程如图8d所示。第4轮点对点通信后每个处理器核中广播数据的有无如表十二所示,表十二中第一行为处理器核的标识,第二行的“有”代表有广播数据,“无”代表无广播数据。。
[0210]
表十二、第4轮后每个处理器核中广播数据的情况
[0211]
0123456789101112131415有有有有有有有有有有有有有有有有
[0212]
可以看到,在第4轮点对点通信完成后,处理器核10中的广播数据已经发送到了其它处理器核中。
[0213]
本示例中,16个处理器核通过4轮点对点通信就可以将一个处理器核中的广播数据发送到其它15个处理器核中,在后3轮点对点通信中,均有两个或以上的处理器核并行的发送待聚集数据给另一个处理器核,即后3轮点对点通信中,每轮均并行进行多对处理器核之间的点对点通信,这样大大提高了数据广播处理的完成速度,提高了数据处理效率。
[0214]
处理器核为其它个数时,包括不是2的整数次幂的情况时,可以参照本示例实现。
[0215]
示例四、数据分发处理
[0216]
数据分发处理是将众核处理器中一个处理器核里的待分发数据分别发送到其它
cpu7 cpu8 cpu9 cpu10d8、d9、d10、d11、d12、d13、d14、d15cpu11 cpu12 cpu13 cpu14 cpu15 [0232]
在第2轮点对点通信中,m=3,跨度为4,p分别为1010和0010,则目标处理器核的标识分别为1010、0010与0100异或的结果:1110、0110,即处理器核14和处理器核6;14、6分别大于10、2,因此处理器核10、处理器核2均发送后一半数据。第2轮的点对点通信过程如图10b所示。第2轮点对点通信后每个处理器核中的待分发数据如表十四所示。
[0233]
表十四、第2轮后每个处理器核中的待分发数据
[0234]
cpu0 cpu1 cpu2d0、d1、d2、d3cpu3 cpu4 cpu5 cpu6d4、d5、d6、d7cpu7 cpu8 cpu9 cpu10d8、d9、d10、d11cpu11 cpu12 cpu13 cpu14d12、d13、d14、d15cpu15 [0235]
在第3轮点对点通信中,m=2,跨度为2,p分别为1110、1010、0110、0010,与0010异或的结果分别是:1100、1000、0100、0000,即目标处理器核的标识为12、8、4、0;12、8、4、0分别小于14、10、6、2,因此处理器核14、处理器核10、处理器核6、处理器核2均发送前一半数据。第3轮的点对点通信过程如图10c所示。第3轮点对点通信后每个处理器核中的待分发数据如表十五所示。
[0236]
表十五、第3轮后每个处理器核中的待分发数据
[0237][0238][0239]
在第4轮点对点通信中,m=1,跨度为1,p分别为1110、1100、1010、1000、0110、0100、0010,0000,与0001异或的结果分别是:1111、1101、1011、1001、0111、0101、0011、0001,即目标处理器核的标识分别为15、13、11、9、7、5、3、1;15、13、11、9、7、5、3、1分别大于14、12、10、8、6、4、2、0,因此标识为14、12、10、8、6、4、2、0的处理器核均发送后一半数据。第4轮的点对点通信过程如图10d所示。第4轮点对点通信后每个处理器核中的待分发数据如表十六所示。
[0240]
表十六、第4轮点后每个处理器核中的待分发数据
[0241]
cpu0d0cpu1d1cpu2d2cpu3d3cpu4d4cpu5d5cpu6d6cpu7d7cpu8d8cpu9d9cpu10d10cpu11d11cpu12d12cpu13d13cpu14d14
cpu15d15
[0242]
可以看到,在第4轮点对点通信完成后,处理器核10中的待分发数据d0-d15,除了d10保留在处理器核10中以外,其余待分发数据d0-d9、d11-d15已经分发到了标识为0-9、11-15的处理器核中。
[0243]
本示例中,16个处理器核通过4轮点对点通信就可以将一个处理器核中的待分发数据分发到其它15个处理器核中,在后3轮点对点通信中,均有两个或以上的处理器核并行的发送待聚集数据给另一个处理器核,即后3轮点对点通信中,每轮均并行进行多对处理器核之间的点对点通信,这样大大提高了数据分发处理的完成速度,提高了数据处理效率。
[0244]
处理器核为其它个数时,包括不是2的整数次幂的情况时,可以参照本示例实现。
[0245]
上述四个示例分别根据数据全聚集、数据聚集、数据广播、数据分发这四种数据处理操作各自的特点,设计了不同的实现步骤,从而使得包含2n个处理器核的众核处理器能通过n轮点对点通信完成相应的数据处理操作,在基于交叉开关的片上网络只存在点对点通信的条件下,能够大大提高完成数据处理整个过程的效率。
[0246]
下面用示例五说明众核处理器中所包含的处理器核的个数不是2的幂时,如何进行处理。
[0247]
示例五
[0248]
假设众核处理器中包含6个处理器核,标识依次为0-5。本示例中的n满足:2n是大于x的最小整数;比如本示例中x=6,则n为3。
[0249]
以数据广播的情况为例,假设最初拥有广播数据的为处理器核3,即:p=0011。
[0250]
本示例中数据广播可以参考步骤301-306的做法进行,过程如下:
[0251]
m初始为0,第1轮时跨度为1,目标处理器核的标识为0010,即目标处理器核是处理器核2。
[0252]
第2轮时m=1,跨度为2,目标处理器核的标识分别为0001和0000,即处理器核3的目标处理器核是处理器核1,处理器核2的目标处理器核是处理器核0。
[0253]
第3轮时m=2,跨度为4,目标处理器核的标识分别为:0100、0101、0110、0111;其中,0110和0111不存在,因此不需要发送;即,本轮仅有处理器核0和处理器核1进行发送,目标处理器核分别是处理器核4和处理器核5。
[0254]
本示例中,数据分发可以参照步骤401-406的做法进行;与数据广播一样的是,当目标处理器核的标识不存在时,不进行发送。这里不再赘述。本示例中,数据聚集进行3轮点对点通信,跨度依次为4、2、1;假设进行数据聚集的是处理器核3,即k=0011,本示例中所进行的3轮点对点通信情况分别如下:
[0255]
第1轮点对点通信中,处理器核4、5分别发送本身的待聚集数据给处理器核0、1;由于不存在处理器核6、7,因此本轮没有处理器核发送待聚集数据给处理器核2、3;
[0256]
第2轮点对点通信中,处理器核0、1分别发送待聚集数据(包括本身的和第1轮收到的待聚集数据)给处理器核2、3;
[0257]
第3轮点对点通信中,处理器核2发送待聚集数据(包括本身的和第2轮收到的待聚集数据)给处理器核3,完成数据聚集操作。
[0258]
本示例中,数据全聚集进行3轮点对点通信,跨度依次为1、2、4,3轮点对点通信的过程如下:
[0259]
在第1轮点对点通信中,标识为0、1、2、3、4、5的处理器核对应的目标处理器核的标识分别是1、2、3、4、5、0,本轮点对点通信过程如图11a所示。
[0260]
第1轮点对点通信后每个处理器核中的待聚集数据如表十七所示。
[0261]
表十七、第1轮后每个处理器核中的数据情况
[0262]
cpu0d0、d5cpu1d1、d0cpu2d2、d1cpu3d3、d2cpu4d4、d3cpu5d5、d4
[0263]
在第2轮点对点通信中,标识为0、1、2、3、4、5的处理器核对应的目标处理器核的标识分别是2、3、4、5、0、1,本轮点对点通信过程如图11b所示。
[0264]
第2轮点对点通信后每个处理器核中的待聚集数据如表十八所示。
[0265]
表十八、第2轮后每个处理器核中的数据情况
[0266]
cpu0d0、d5、d4、d3cpu1d1、d0、d5、d4cpu2d2、d1、d0、d5cpu3d3、d2、d1、d0cpu4d4、d3、d2、d1cpu5d5、d4、d3、d2
[0267]
在第3轮点对点通信中,标识为0、1、2、3、4、5的处理器核对应的目标处理器核的标识分别是4、5、0、1、2、3,本轮点对点通信过程如图11c所示。
[0268]
第3轮点对点通信后每个处理器核中的待聚集数据如表十九所示,其中括号内为重复的待聚集数据,在本轮通信中可以不发送。
[0269]
表十九、第3轮后每个处理器核中的数据情况
[0270]
cpu0d0、d5、d4、d3、d2、d1、(d0、d5)cpu1d1、d0、d5、d4、d3、d2、(d1、d0)cpu2d2、d1、d0、d5、d4、d3、(d2、d1)cpu3d3、d2、d1、d0、d5、d4、(d3、d2)cpu4d4、d3、d2、d1、d0、d5、(d4、d3)cpu5d5、d4、d3、d2、d1、d0、(d5、d4)
[0271]
可以看到,在第3轮点对点通信完成后,每个处理器核中都包含了d0-d15,即通过3轮点对点通信就可以完成6个处理器核的数据全聚集处理。
[0272]
本示例中,6个处理器核通过3轮点对点通信就可以完成数据全聚集、或数据聚集、或数据广播、或数据分发的处理,通过在至少一轮点对点通信中,并行进行多对处理器核之间的点对点通信,大大提高了处理速度。
[0273]
本文中的附图只涉及本文涉及到的实现方式,其他实现方式可参考设计。在不冲突的情况下,本技术实施例及实施例中的特征可以相互组合以得到新的实施例。
[0274]
本领域的普通技术人员应当理解,可以对本文的技术方案进行修改或者等同替换,而不脱离本文技术方案的精神和范围,均应涵盖在本文的权利要求的范围当中。