一种数据重排方法及装置与流程

文档序号:12622307阅读:273来源:国知局
一种数据重排方法及装置与流程

本发明涉及芯片设计中矢量处理器相关技术领域,尤其涉及一种数据重排方法及装置。



背景技术:

Benes网络是一种重排无阻塞网络,在数据重排方面有着较好的应用。N-N Benes网络有N个输入数据及N个输出数据,共有2log2N-1级,每级包含N/2个开关电路,每个开关电路为2输入2输出,且每个开关电路包含两个2-1选择器,如图1所示为N=8的8-8Benes网络示意图;图1中每个矩形块代表一个开关电路,所述开关电路的内部电路如图2所示。

现有的Benes网络相对于通常的交叉开关矩阵cross bar节省了较多电路资源,然而仍需要较多电路资源,实现较复杂,因此,提供一种数据重排方案,能够减少N-N Benes网络的电路资源、降低实现成本,已成为亟待解决的问题。



技术实现要素:

有鉴于此,本发明实施例期望提供一种数据重排方法及装置,能够减少N-N Benes网络的电路资源、降低成本,且实现简单、可靠性高。

为达到上述目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种数据重排方法,所述方法包括:

确定当前N-N Benes网络中的N/4个4-4数据重排网络;

依据预设的数据重排规则确定每个4-4数据重排网络的输入数据的序号;

依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据 输出方式将当前4-4数据重排网络的输入数据输出;其中,N为2的n次幂,n为大于1的正整数。

上述方案中,所述确定当前N-N Benes网络中的N/4个4-4数据重排网络包括:

确定当前N-N Benes网络的第(m-1)/2级、第(m+1)/2级及第(m+3)/2级分别作为4-4数据重排网络的第1级、第2级及第3级的N/4个4-4数据重排网络;其中,所述m为当前N-N Benes网络的级数,m=2log2N-1。

上述方案中,确定当前N-N Benes网络中的N/4个4-4数据重排网络之后,所述方法还包括:

获取每个4-4数据重排网络的输入数据及输出数据。

上述方案中,所述依据预设的数据重排规则确定每个4-4数据重排网络的输入数据的序号包括:

依据降序或升序对每个4-4数据重排网络的输出数据进行排序,并依据每个4-4数据重排网络的输出数据的序号确定对应的4-4数据重排网络的输入数据的序号。

上述方案中,所述依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式包括:

比较当前开关电路中第二输入数据对应的序号与第一输入数据对应的序号的大小,依据比较结果确定所述开关电路的数据输出方式为交叉输出或直通输出。

上述方案中,所述按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出,包括:

按照当前4-4数据重排网络中每个开关电路对应的数据输出方式,将当前4-4数据重排网络中第一开关电路的第一输出数据及第二开关电路的第一输出数据分别作为第三开关电路的第一输入数据及第二输入数据,将第一开关电路的第二输出数据及第二开关电路的第二输出数据分别作为第四开关电路的第一输入数据及第二输入数据,输出第三开关电路的第一输出数据及第四开关电路 的第二数据,并将第三开关电路的第二输出数据及第四开关电路的第一输出数据分别作为第五开关电路的第一输入数据及第二输入数据,输出第五开关电路的第一输出数据及第二输出数据。

本发明实施例还提供了一种数据重排装置,所述装置包括:确定模块、排序模块及处理模块;其中,

所述确定模块,用于确定当前N-N Benes网络中的N/4个4-4数据重排网络;

所述排序模块,用于依据预设的数据重排规则确定每个4-4数据重排网络的输入数据的序号;

所述处理模块,用于依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出;其中,N为2的n次幂,n为大于1的正整数。

上述方案中,所述确定模块,具体用于确定当前N-N Benes网络的第(m-1)/2级、第(m+1)/2级及第(m+3)/2级分别作为4-4数据重排网络的第1级、第2级及第3级的N/4个4-4数据重排网络;其中,所述m为当前N-N Benes网络的级数,m=2log2N-1。

上述方案中,所述装置还包括获取模块,用于获取每个4-4数据重排网络的输入数据及输出数据。

上述方案中,所述排序模块,具体用于依据降序或升序对每个4-4数据重排网络的输出数据进行排序,并依据每个4-4数据重排网络的输出数据的序号确定对应的4-4数据重排网络的输入数据的序号。

上述方案中,所述处理模块,具体用于比较当前开关电路中第二输入数据对应的序号与第一输入数据对应的序号的大小,依据比较结果确定所述开关电路的数据输出方式为交叉输出或直通输出。

上述方案中,所述处理模块,具体用于按照当前4-4数据重排网络中每个开关电路对应的数据输出方式,将当前4-4数据重排网络中第一开关电路的第 一输出数据及第二开关电路的第一输出数据分别作为第三开关电路的第一输入数据及第二输入数据,将第一开关电路的第二输出数据及第二开关电路的第二输出数据分别作为第四开关电路的第一输入数据及第二输入数据,输出第三开关电路的第一输出数据及第四开关电路的第二数据,并将第三开关电路的第二输出数据及第四开关电路的第一输出数据分别作为第五开关电路的第一输入数据及第二输入数据,输出第五开关电路的第一输出数据及第二输出数据。

本发明实施例所提供的数据重排方法及装置,确定当前N-N Benes网络中的N/4个4-4数据重排网络;依据预设的数据重排规则确定每个4-4数据重排网络的输入数据的序号;依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出;其中,N为2的n次幂,n为大于1的正整数。如此,通过输入数据对应的序号确定开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出,能够减少4-4数据重排网络的电路资源,进而减少整个N-N Benes网络的电路资源,降低实现成本,且实现简单、可靠性高。

附图说明

图1为现有8-8Benes网络示意图;

图2为现有8-8Benes网络中开关电路内部电路示意图;

图3为本发明实施例一数据重排方法流程示意图;

图4为本发明实施例8-8Benes网络示意图;

图5为本发明实施例二数据重排方法流程示意图;

图6为本发明实施例数据重排装置组成结构示意图。

具体实施方式

在本发明实施例中,确定当前N-N Benes网络中的N/4个4-4数据重排网 络;依据预设的数据重排规则确定每个4-4数据重排网络的输入数据的序号;依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出;其中,N为2的n次幂,n为大于1的正整数。

图3所示为本发明实施例一数据重排方法流程示意图;如图3所示,本发明实施例数据重排方法包括:

步骤301:确定当前N-N Benes网络中的N/4个4-4数据重排网络;

本步骤具体包括:确定当前N-N Benes网络的第(m-1)/2级、第(m+1)/2级及第(m+3)/2级分别作为4-4数据重排网络的第1级、第2级及第3级的N/4个4-4数据重排网络;其中,所述m为当前N-N Benes网络的级数,m=2log2N-1;例如:当前为8-8Benes网络,共有m=2log2N-1=5级,则以所述8-8Benes网络的第2级、第3级及第4级作为4-4数据重排网络的第1级、第2级及第3级的2个4-4数据重排网络,为确定的当前N-N Benes网络中的N/4个4-4数据重排网络,如图4所示为本发明实施例8-8Benes网络示意图,图中的两个虚线框中的部分为确定的两个4-4数据重排网络。

步骤302:依据预设的数据重排规则确定每个4-4数据重排网络的输入数据的序号;

本步骤具体包括:依据降序或升序对每个4-4数据重排网络的输出数据进行排序,并依据每个4-4数据重排网络的输出数据的序号确定对应的4-4数据重排网络的输入数据的序号;

例如:当前4-4数据重排网络的输出数据为8、1、4、6,这里所述8、1、4、6可为实际输出数据的序号,依据降序对所述输出数据进行排序为8(4)、1(3)、4(2)、6(1),若所述4-4数据重排网络的输入数据为1、4、6、8,这里所述1、4、6、8可为实际输入数据的序号,则依据每个4-4数据重排网络的输出数据的序号确定对应的4-4数据重排网络的输入数据的序号为:1(3)、4(2)、6(1)、8(4);其中,括号内的数字为相应数据的序号。

进一步的,本步骤之前,所述方法还包括:获取每个4-4数据重排网络的输入数据及输出数据;

这里,获取所述每个4-4数据重排网络的输入数据及输出数据可以采用现有技术中多种方法,在本发明实施例中,采用寻找互斥对的方法获取所述每个4-4数据重排网络的输入数据及输出数据;

例如:当前8-8Benes网络的输入数据为1、2、3、4、5、6、7、8,配置的经第5级最终的输出数据为8、3、1、5、4、2、7、6,则输入互斥对为:O1={1,2},O2={3,4},O3={5,6},O4={7,8};输出互斥对为:P1={8,3},P2={1,5},P3={4,2},P4={7,6};则第一级输出时走上半路径的数据选取过程包括:先从输入组1任意选择1,在输出组找到1走上半路径,则5必走下半路径,不能选;在输入组找到5,则6必走上半路径,选取6;在输出组找到6,则7必走下半路径,不能选;在输入组找到7,则8必走上半路径,选取8;在输出组找到8,则3必走下半路径,不能选;在输入组找到3,则4必走上半路径,选取4;如此,从输入组-输出组-输入组-输出组反复选取得到上半路径选择的数据为1、4、6、8,剩下的4个数据走下半路径,然后可确定第一级及第五级的开关电路的数据输出方式,进而可确定第二级的输入数据及第四级的输出数据,即可确定当前8-8Benes网络中两个数据重排网络的输入数据及输出数据;其中,所述数据输出方式包括:交叉输出及直通输出;如图2中,当out1=int1、out2=int2时,为直通输出;当out1=int2、out2=int1时,为交叉输出;

进一步的,对于N-N Benes网络,采用互斥对的方法获取每个4-4数据重排网络的输入数据及输出数据的过程,可确定第一级至第(m-3)/2级及第(m+5)/2级至第m级的数据输出方式,以及第二级至第(m-1)/2级的输入数据、第(m+3)/2级至第m-1级的输出数据。

步骤303:依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出;

这里,所述依据4-4数据重排网络中开关电路的输入数据对应的序号确定 所述开关电路的数据输出方式包括:

比较当前开关电路中第二输入数据对应的序号与第一输入数据对应的序号的大小,依据比较结果确定所述开关电路的数据输出方式为交叉输出或直通输出;

其中,依据比较结果确定所述开关电路的数据输出方式为交叉输出或直通输出包括:

若第二输入数据对应的序号大于第一输入数据对应的序号,即in2>in1,则确定所述开关电路的数据输出方式为交叉输出;否则,确定所述开关电路的数据输出方式为直通输出;例如:当前开关电路中第二输入数据对应的序号为2,第一输入数据对应的序号为3,则确定所述开关电路的数据输出方式为直通输出。

进一步的,所述按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出包括:

按照当前4-4数据重排网络中每个开关电路对应的数据输出方式,将当前4-4数据重排网络中第一开关电路的第一输出数据及第二开关电路的第一输出数据分别作为第三开关电路的第一输入数据及第二输入数据,将第一开关电路的第二输出数据及第二开关电路的第二输出数据分别作为第四开关电路的第一输入数据及第二输入数据,输出第三开关电路的第一输出数据及第四开关电路的第二数据,并将第三开关电路的第二输出数据及第四开关电路的第一输出数据分别作为第五开关电路的第一输入数据及第二输入数据,输出第五开关电路的第一输出数据及第二输出数据;如此,通过输入数据对应的序号确定开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出,可使每个4-4数据重排网络相较现有的Benes网络节省一个开关电路资源,通过对比图4及图2可明显看出,对于8-8Benes网络,采用本发明实施例所述数据重排方法可比现有8-8Benes网络节省两个开关电路资源,即节省四个选择器资源;进而可得,对于N-N Benes网络,采用本发明实施例所述数据重排方法可比现有N-N Benes 网络节省N/4个开关电路资源,即节省N/2个选择器资源。

在本发明实施例中,当实现将当前4-4数据重排网络的输入数据输出后,再通过采用互斥对确定的第一级至第(m-3)/2级及第(m+5)/2级至第m级的数据输出方式,实现当前N-N Benes网络预设的输出数据的输出。

图5为本发明实施例二数据重排方法流程示意图;如图5所示,本发明实施例数据重排方法包括:

步骤501:确定当前N-N Benes网络中的N/4个4-4数据重排网络;

本步骤具体包括:确定当前N-N Benes网络的第(m-1)/2级、第(m+1)/2级及第(m+3)/2级分别作为4-4数据重排网络的第1级、第2级及第3级的N/4个4-4数据重排网络;其中,所述m为当前N-N Benes网络的级数,m=2log2N-1;

在本实施例中,所述N-N Benes网络为16-16Benes网络,共有m=2log2N-1=7级,则以所述16-16Benes网络的第3级、第4级及第5级作为4-4数据重排网络的第1级、第2级及第3级的4个4-4数据重排网络,为确定的当前16-16Benes网络中的4个4-4数据重排网络。

步骤502:获取每个4-4数据重排网络的输入数据及输出数据;

这里,获取所述每个4-4数据重排网络的输入数据及输出数据可以采用现有技术中多种方法,在本发明实施例中,采用寻找互斥对的方法获取所述每个4-4数据重排网络的输入数据及输出数据;

采用互斥对的方法从输入组-输出组-输入组-输出组反复选取得到上半路径选择的数据,剩下的数据则走下半路径,然后可确定第一级及第七级、第二级及第六级的开关电路的数据输出方式,进而可确定第三级的输入数据及第五级的输出数据,即可确定当前16-16Benes网络中四个数据重排网络的输入数据及输出数据;其中,所述数据输出方式包括:交叉输出及直通输出;如图2中,当out1=int1、out2=int2时,为直通输出;当out1=int2、out2=int1时,为交叉输出。

步骤503:依据预设的数据重排规则确定每个4-4数据重排网络的输入数据的序号;

本步骤具体包括:依据降序或升序对每个4-4数据重排网络的输出数据进行排序,并依据每个4-4数据重排网络的输出数据的序号确定对应的4-4数据重排网络的输入数据的序号;

例如:获得的当前4-4数据重排网络的输出数据为8、1、4、6,这里所述8、1、4、6可为实际输出数据的序号,依据升序对所述输出数据进行排序为8(1)、1(2)、4(3)、6(4),若获得的所述4-4数据重排网络的输入数据为1、4、6、8,这里所述1、4、6、8可为实际输入数据的序号,则依据每个4-4数据重排网络的输出数据的序号确定对应的4-4数据重排网络的输入数据的序号为:1(2)、4(3)、6(4)、8(1);其中,括号内的数字为相应数据的序号。

步骤504:依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出;

这里,所述依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式包括:

比较当前开关电路中第二输入数据对应的序号与第一输入数据对应的序号的大小,依据比较结果确定所述开关电路的数据输出方式为交叉输出或直通输出;

其中,依据比较结果确定所述开关电路的数据输出方式为交叉输出或直通输出包括:

若第二输入数据对应的序号大于第一输入数据对应的序号,即in2>in1,则确定所述开关电路的数据输出方式为交叉输出;否则,确定所述开关电路的数据输出方式为直通输出;例如:当前开关电路中第二输入数据对应的序号为3,第一输入数据对应的序号为2,则确定所述开关电路的数据输出方式为交叉输出。

进一步的,所述按照当前4-4数据重排网络中每个开关电路对应的数据输 出方式将当前4-4数据重排网络的输入数据输出包括:

按照当前4-4数据重排网络中每个开关电路对应的数据输出方式,将当前4-4数据重排网络中第一开关电路的第一输出数据及第二开关电路的第一输出数据分别作为第三开关电路的第一输入数据及第二输入数据,将第一开关电路的第二输出数据及第二开关电路的第二输出数据分别作为第四开关电路的第一输入数据及第二输入数据,输出第三开关电路的第一输出数据及第四开关电路的第二数据,并将第三开关电路的第二输出数据及第四开关电路的第一输出数据分别作为第五开关电路的第一输入数据及第二输入数据,输出第五开关电路的第一输出数据及第二输出数据;进而,在本实施例中,通过采用寻找互斥对的方法确定的第六级及第七级的数据输出方式可实现当前的16-16Benes网络预设的输出数据的输出。

图6为本发明实施例数据重排装置组成结构示意图;如图6所示,本发明实施例数据重排装置包括:确定模块61、排序模块62及处理模块63;其中,

所述确定模块61,用于确定当前N-N Benes网络中的N/4个4-4数据重排网络;

所述排序模块62,用于依据预设的数据重排规则确定每个4-4数据重排网络的输入数据的序号;

所述处理模块63,用于依据4-4数据重排网络中开关电路的输入数据对应的序号确定所述开关电路的数据输出方式,并按照当前4-4数据重排网络中每个开关电路对应的数据输出方式将当前4-4数据重排网络的输入数据输出;其中,N为2的n次幂,n为大于1的正整数。

进一步的,所述确定模块61,具体用于确定当前N-N Benes网络的第(m-1)/2级、第(m+1)/2级及第(m+3)/2级分别作为4-4数据重排网络的第1级、第2级及第3级的N/4个4-4数据重排网络;其中,所述m为当前N-N Benes网络的级数,m=2log2N-1。例如:当前为8-8Benes网络,共有m=2log2N-1=5级,则以所述8-8Benes网络的第2级、第3级及第4级作为4-4数据重排网络的第1级、第2级及第3级的2个4-4数据重排网络,为确定的当前N-N Benes 网络中的N/4个4-4数据重排网络,如图4所示为本发明实施例8-8Benes网络示意图,图中的两个虚线框中的部分为确定的两个4-4数据重排网络。

进一步的,所述装置还包括获取模块64,用于获取每个4-4数据重排网络的输入数据及输出数据;

所述获取模块64,具体用于采用寻找互斥对的方法获取每个4-4数据重排网络的输入数据及输出数据;相应的,所述获取模块74,还用于确定当前N-N Benes网络的第一级至第(m-3)/2级及第(m+5)/2级至第m级的数据输出方式,以及第二级至第(m-1)/2级的输入数据、第(m+3)/2级至第m-1级的输出数据。

进一步的,所述排序模块62,具体用于依据降序或升序对每个4-4数据重排网络的输出数据进行排序,并依据每个4-4数据重排网络的输出数据的序号确定对应的4-4数据重排网络的输入数据的序号;

例如:当前4-4数据重排网络的输出数据为8、1、4、6,这里所述8、1、4、6可为实际输出数据的序号,依据降序对所述输出数据进行排序为8(4)、1(3)、4(2)、6(1),若所述4-4数据重排网络的输入数据为1、4、6、8,这里所述1、4、6、8可为实际输入数据的序号,则依据每个4-4数据重排网络的输出数据的序号确定对应的4-4数据重排网络的输入数据的序号为:1(3)、4(2)、6(1)、8(4);其中,括号内的数字为相应数据的序号。

进一步的,所述处理模块63,具体用于比较当前开关电路中第二输入数据对应的序号与第一输入数据对应的序号的大小,依据比较结果确定所述开关电路的数据输出方式为交叉输出或直通输出;

其中,所述处理模块63依据比较结果确定所述开关电路的数据输出方式为交叉输出或直通输出,包括:

所述处理模块63判断若第二输入数据对应的序号大于第一输入数据对应的序号,即in2>in1,则确定所述开关电路的数据输出方式为交叉输出;否则,确定所述开关电路的数据输出方式为直通输出。

进一步的,所述处理模块63,具体用于按照当前4-4数据重排网络中每个 开关电路对应的数据输出方式,将当前4-4数据重排网络中第一开关电路的第一输出数据及第二开关电路的第一输出数据分别作为第三开关电路的第一输入数据及第二输入数据,将第一开关电路的第二输出数据及第二开关电路的第二输出数据分别作为第四开关电路的第一输入数据及第二输入数据,输出第三开关电路的第一输出数据及第四开关电路的第二数据,并将第三开关电路的第二输出数据及第四开关电路的第一输出数据分别作为第五开关电路的第一输入数据及第二输入数据,输出第五开关电路的第一输出数据及第二输出数据。

进一步的,所述处理模块63,还用于通过确定的第一级至第(m-3)/2级及第(m+5)/2级至第m级的数据输出方式,实现控制当前N-N Benes网络预设的输出数据的输出。

在本发明实施例中,所述确定模块61、排序模块62、处理模块63及获取模块64均可由终端中的中央处理器(CPU,Central Processing Unit)或数字信号处理器(DSP,Digital Signal Processor)、或现场可编程门阵列(FPGA,Field Programmable Gate Array)、或集成电路(ASIC,Application Specific Integrated Circuit)实现。

以上所述,仅为本发明较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1