CN102388385A - 数据处理的方法和装置 - Google Patents
数据处理的方法和装置 Download PDFInfo
- Publication number
- CN102388385A CN102388385A CN2011800018832A CN201180001883A CN102388385A CN 102388385 A CN102388385 A CN 102388385A CN 2011800018832 A CN2011800018832 A CN 2011800018832A CN 201180001883 A CN201180001883 A CN 201180001883A CN 102388385 A CN102388385 A CN 102388385A
- Authority
- CN
- China
- Prior art keywords
- data
- packet
- cell
- data cell
- types
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/14—Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
Abstract
本发明实施例提供了一种数据处理的方法和装置。所述数据处理的方法包括:按顺序将对应于当前时钟周期的包含N个数据单元的输入数据分为M个数据段,其中M和N均为正整数,N大于等于2且M小于N;并行地对M个数据段的每一个中的第一类型的数据单元进行对齐操作,使第一类型的数据单元移位至其他类型的数据单元之前,其中其他类型的数据单元均被置为空数据包类型,其中第一类型是需处理的数据包类型,其他类型是不需处理的数据包类型;将对齐处理后的M个数据段组合成包含N个数据单元的输出数据。本发明对可变长包进行分段且并行地对各段进行对齐操作,从而易于维护设计代码,而且提高设计代码验证时的代码覆盖率,同时明显改善时序。
Description
技术领域
本发明实施例涉及领域数据处理领域,并且更具体地,涉及数据处理的方法和装置。
背景技术
在ASIC(APPLICATION SPECIFIC INTEGRATED CIRCUITS,专用集成电路)或者FPGA(FIELD PROGRAMMABLE GATE ARRAY,现场可编程门阵列)设计中,经常需要处理各种的协议规定的数据包,这些数据包可能属于不同的类型,即便属于同一类型,这些数据包也可能具有可变的长度。
QPI(Quick Path Interconnect,快速互联通道)协议中定义了多种数据包,其中有的数据包的长度是一定的,也有的数据包的长度是可变的。例如,NCS(Non Coherent Standard,非一致性标准)包就是一种可变长包,通常由1至3个数据单元(即flit)组成,其中每个数据单元flit是定长的,例如可以为80比特(bit)。可变长的NCS包的长度在第一个flit中可以得到。为了便于描述,“NCS1”表示长度为1个flit的NCS包,即只有一个头flit(header flit);NCS2表示长度为2个flit的NCS包,即包含一个头flit和一个数据flit(dataflit);NCS3表示长度为3个flit的NCS包,即包含一个header flit和两个dataflit。除了NCS包之外,还存在其他类型的数据包,例如空数据包。这些其他类型的数据包可以是定长或变长的。
在某些ASIC或者FPGA应用设计的场景中,需要在多个不同的缓冲器(BUFFER)的一个缓冲器中存储对齐的同类型数据包,因此需要将同类型数据包中的各个数据单元进行对齐操作,其中对齐操作中会将其他类型数据包视作空数据包。所谓“对齐操作”就是“挤掉”上述数据单元之间的空数据包的过程。假设某一时钟周期的输入具有N个数据单元(其中N为正整数),那么这N个数据单元对齐操作时需要考虑约2N种移位可能。此外,设计完成后,若对上述设计的代码进行验证时,假如输入中有L种数据类型(其中L为正整数),那么验证时的输入存在LN种组合情况。显然,如果要想穷举全部组合情况本身并非易事。而且,为了提高代码覆盖率,验证人员不得不利用尽量多的数据单元组合对代码进行校验,势必增加不必要的工作量。同时,时序也很难满足系统的要求。
发明内容
发明实施例提供一种数据处理的方法和装置,能够基于分段并行机制对多个可变长包进行对齐处理。
一方面,提供了一种数据处理的方法,包括:按顺序将对应于当前时钟周期的包含N个数据单元的输入数据分为M个数据段,其中M和N均为正整数,N大于等于2且M小于N;并行地对M个数据段的每一个中的第一类型的数据单元进行对齐操作,使第一类型的数据单元移位至其他类型的数据单元之前,其中其他类型的数据单元均被置为空数据包类型,其中第一类型是需处理的数据包类型,其他类型是不需处理的数据包类型;将对齐处理后的M个数据段组合成包含N个数据单元的输出数据。
另一方面,提供了一种数据处理的装置,包括:分段单元,用于按顺序将对应于当前时钟周期的包含N个数据单元的输入数据分为M个数据段,其中M和N均为正整数,N大于等于2且M小于N;并行处理单元,用于并行地对M个数据段的每一个中的第一类型的数据单元进行对齐操作,使第一类型的数据单元移位至其他类型的数据单元之前,其中其他类型的数据单元均被置为空数据包类型,第一类型是需处理的数据包类型,其他类型是不需处理的数据包类型;组合单元,用于将对齐处理后的M个数据段组合成包含N个数据单元的输出数据。
本发明实施例的数据处理的方法和装置对可变长包进行分段且并行地对各段进行对齐操作,从而易于维护设计代码,而且提高设计代码验证时的代码覆盖率,同时明显改善时序。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的数据处理的方法的流程图。
图2是根据本发明实施例的数据处理的装置的结构图。
图3是根据本发明实施例的并行处理单元的结构图。
图4是根据本发明实施例的数据处理的具体的过程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中对齐操作情况复杂且时序较低的问题,本发明实施例提出将每个时钟周期中的输入数据分为多个数据段,其中各个数据段的长度可以相等也可以不等,例如一个数据段包括2个数据单元,另一个数据段包括3个数据单元,等等。此外,各个数据单元可以属于不同类型,但是属于同种类型的数据单元之间不会存在其他类型的数据单元。并行地对每个时钟周期中的各个数据段的同种类型的多个数据单元进行对齐操作。在得到对齐的数据单元之后,再对这些分段得到的数据段进行逐级组合,最终得到同种类型数据单元对齐的各个时钟周期的输出数据。需要说明的是,由于本发明实施例中的对齐操作仅针对同一类型的数据单元而言,因此不同类型的数据单元可以分别在不同的对齐处理装置中进行对齐操作。即一个对齐处理装置中只会对同一类型的数据单元进行对齐处理,而该对齐处理装置无法处理的数据单元将被视为空数据包。可以理解,同一时钟周期中,针对不同类型的数据单元的对齐操作也可以并行。
以下结合图1描述根据本发明实施例的数据处理的方法。
11,按顺序将对应于当前时钟周期的包含N个数据单元的输入数据分为M个数据段,其中M和N均为正整数,N大于等于2且M小于N。
一般地,如果N为偶数,则容易想到将这N个数据单元以2个数据单元为一个单位分成M=N/2个数据段。由于2个数据单元需要考虑的数据重排的方案最少,所以采用2个数据单元为一个数据段的方式最优。
如果N为奇数,则可以在N个数据单元的最后补充一个为空数据包的数据单元,将这(N+1)个数据单元分成M=(N+1)/2个数据段,由于空数据包在N个数据单元的对齐操作之后都位于N个数据的最后,因此不会影响到这N个数据单元的对齐结果。或者,也可以采用3个数据单元与2个数据单元相组合的方式来解决奇数个数据单元分段的问题。
当然,本领域技术人员也应该理解,对于N个数据单元而言,可以采用各种数据单元的多种数据段组合方式。
12,并行地对M个数据段的每一个中的第一类型的数据单元进行对齐操作,使第一类型的数据单元移位至其他类型的数据单元之前,其中第一类型是需处理的数据包类型,其他类型是不需处理的数据包类型。
对于每个数据段而言,分别基于X个未处理数量标识并行地对当前数据段中的数据单元进行对齐操作,即将当前数据段中其他类型的数据单元也设置为空数据包类型,并使第一类型的数据单元移位至空数据包类型的数据单元之前,从而得到X个重排组合。这里,X对应于第一类型的数据包中包含的数据单元的最大个数,该未处理数量标识用于表示第一类型的数据包中未处理的数据单元个数。
需要说明的是,将数据段中的数据单元直接与X个未处理数量标识相结合得到X个重排组合的方法能够识别该数据段中的数据单元的数据类型。因为数据段中的数据单元的数量是有限的,所以容易穷举数据单元与未处理数据标识的所有组合可能。在以下具体的示例中将给出2个数据单元与3个未处理数量标识相结合以及3个数据单元与3个未处理数量标识相结合的输入输出逻辑表。参照这样的逻辑表,可以直接得到该数据段中的数据单元对齐后的结果。
另外,未处理数量标识用二进制数表示。比如,以NCS包数据类型为例,2’b 00表示没有未处理的NCS包数据单元,2’b 01表示还有1个未处理的NCS包数据单元,2’b 10表示还有2个未处理的NCS包数据单元。再例如,如果其他数据类型的数据包包括5个数据单元,则可以用2’b 100、2’b 011、2’b 010、2’b 001来表示未处理的数据单元数量。
在并行得到X个重排组合后,再依据当前数据段的前一个数据段中数据单元对齐操作后输出的选择标识从X个重排组合中选择一个重排组合,其中选择标识为上述X个未处理数量标识中的一个,用于表示当前数据段中第一类型的数据包中未处理的数据单元的个数。
之后,最后一个数据段输出的选择标识将被锁存,该作为当前时钟周期的下一个时钟周期的第一个数据段对齐操作的选择标识。
13,将对齐处理后的M个数据段组合成包含N个数据单元的输出数据。
可选地,逐级地按顺序将对齐操作后的相邻的两个数据段组合成包含N个数据单元的输出数据,使N个数据单元中第一类型的数据单元移位至其他类型的数据单元之前。
例如,先将相邻的两个数据段进行组合得到新的数据段,然后再将相邻的两个新的数据段进行组合,最终得到包含N个数据单元的输出数据。
本发明实施例的数据处理的方法对可变长包进行分段且并行地对各段进行对齐操作,从而易于维护设计代码,而且提高设计代码验证时的代码覆盖率,同时明显改善时序。
参见图2,描述根据本发明实施例的数据处理的装置。
如图2所示,数据处理的装置20包括分段单元21、并行处理单元22和组合单元23。
具体而言,分段单元21用于按顺序将对应于当前时钟周期的包含N个数据单元的输入数据分为M个数据段,其中M和N均为正整数,N大于等于2且M小于N。并行处理单元22用于并行地对该M个数据段的每一个中的第一类型的数据单元进行对齐操作,使第一类型的数据单元移位至其他类型的数据单元之前,其中其他类型的数据单元可以被置为空数据包类型。这里,第一类型是需处理的数据包类型,其他类型是不需处理的数据包类型。组合单元23用于将对齐处理后的M个数据段组合成包含N个数据单元的输出数据。
同时每个数据段中也可以实现并行处理,并且识别数据的类型。例如,如图3所示,并行处理单元22还包括并行处理模块221和选择模块222。其中,并行处理模块221用于分别基于X个未处理数量标识并行地对当前数据段中的数据单元进行对齐操作,得到X个重排组合,其中X对应于第一类型的数据包中包含的数据单元的最大个数,未处理数量标识用于表示第一类型的数据包中未处理的数据单元个数。并行处理模块221通过与逻辑表的对照完成数据类型的识别,从而将当前数据段中其他类型的数据单元设置为空数据包类型。选择模块222用于依据当前数据段的前一个数据段中数据单元对齐操作后输出的选择标识从X个重排组合中选择一个重排组合,其中选择标识为所述X个未处理数量标识中的一个,用于表示当前数据段中第一类型的数据包中未处理的数据单元的个数。
此外,并行处理单元22还可以包括锁存模块223,其用于锁存最后一个数据段输出的选择标识,作为当前时钟周期的下一个时钟周期的第一个数据段对齐操作的选择标识。
最后,当各个数据段中的数据单元均对齐后,为了将对齐的各个数据段组合成输出数据,数据处理的装置20的组合单元23可以逐级地按顺序将对齐操作后的相邻的两个数据段组合成包含N个数据单元的输出数据,使N个数据单元中第一类型的数据单元移位至其他类型的数据单元之前。
因此,本发明实施例的数据处理的装置对可变长包进行分段且并行地对各段进行对齐操作,从而易于维护设计代码,而且提高设计代码验证时的代码覆盖率,同时明显改善时序。
以下以某些FPGA应用设计的场景中的一个具体实例说明本发明实施例的数据处理的实现过程。
在FPGA应用设计时为了满足速率要求,需要连续并行处理并存储8个flit,而这8个flit可以是任意类型协议包的组合,导致8个flit中含有的同一种类型包有多种可能。以NCS包为例:8个flit中可能有0至8个NCS1,或者有0至4个NCS2,或者有0至3个NCS3,或者是NCS1或NCS2或NCS3的组合,或者NCS包与其他包的组合,而且它们在8个flit中的位置是不定的;且NCS2或者NCS3可能会跨越多个8flit组。
下面的表1给出了对应于时钟N至N+3的8个flit的示意性输入数据。
[表1]并行8个flit的示意性输入数据
时钟 | Flit7 | Flit6 | Flit5 | Flit4 | Flit3 | Flit2 | Flit1 | Flit0 |
N-1 | ||||||||
N | NCS3_1 | NCS3_3 | NCS3_2 | X | X | NCS3_1 | X | NCS1 |
N+1 | X | X | X | X | X | NCS3_2 | X | X |
N+2 | NCS2_2 | NCS2_1 | X | NCS1 | NCS1 | X | X | NCS3_3 |
N+3 | others | others | X | NCS2_2 | NCS2_1 | X | others | others |
其中,“X”表示无须关心的“气泡”,即空数据包,“others”表示除了NCS外的其他数据类型的数据包。“_1”,“_2”,“_3”分别表示属于NCS的第一个flit,第二个flit,第三个flit。
如表1所示,在时钟N时,同时处理的8个flit中含有3个NCS类型的flit,即一个NCS1,两个NCS3。其中,有一个NCS3跨越了8个flit,只有一个flit处于当前处理的8个flit中,另外2个flit不在当前处理的8个flit中。在时钟N+1,同时处理的8个flit中只有一个NCS类型的flit,需要知道此数据是上个时钟周期收到的NCS3中的第几个数据。以此类推。
如表1所示的输入数据经过根据本发明实施例的基于分段并行的数据处理的方法得到的输出数据如下表2所示。
[表2]并行8个flit在处理后的示意性输出数据
时钟 | Flit7 | Flit6 | Flit5 | Flit4 | Flit3 | Flit2 | Flit1 | Flit0 |
N-1 | ||||||||
N | X | X | X | NCS3_1 | NCS3_3 | NCS3_2 | NCS3_1 | NCS1 |
N+1 | X | X | X | X | X | X | X | NCS3_2 |
N+2 | X | X | X | NCS2_2 | NCS2_1 | NCS1 | NCS1 | NCS3_3 |
N+3 | X | X | X | X | X | X | NCS2_2 | NCS2_1 |
通过比较可见,由于仅针对一种类型的数据进行处理,例如示例中仅针对NCS类型数据,因此NCS外的其他类型数据包被识别为空数据包。基于分段并行的数据处理过程就是分段并行地“挤掉”空数据包的过程
采用如本发明实施例的数据处理的方法和装置,假设了最简化的设计方式。首先,将具有8个flit的输入数据分成每2个flit为一个数据段的形式,共生产4个数据段。然后,这4个数据段并行对齐处理,得到4组对齐后的数据段。接着,这4组数据段又以2个为一个单位,并行地组合成具有对齐的4个flit的新的数据段。最后,2个新的数据段再组合成具有对齐的8个flit的输出数据。
具体而言,在4个数据段并行对齐的过程中,其中每个数据段中的2个flit再结合未处理数量标识也并行地进行对齐处理,将得到3个重排组合。如上所述,在分段后同一个NCS数据包中的flit将可能被分入不同的数据段,因此用“未处理数量标识”来表示处理所涉及的NCS数据包中可能还有几个flit未被处理。在本示例中,由于NCS类型中最多会有3个flit,即NCS3,从而用2进制数00、01和10来表示在下一个数据段中存在的未处理的flit的数量分别是0个、1个或2个。
下面的表3给出了并行处理模块对2个flit进行对齐处理的输入输出的全部22种组合。
[表3]PPM处理的输入输出组合(2个flit)
(H:头flit;D:数据flit;X:空数据包)
由表2可知,在处理2个flit的并行处理模块中,只需设计出对当前处理的这2个flit的各种组合情况。因为有可能当前处理的2个flit是属于上个数据段处理的flit中一部分,并且要明确知道是第几个flit,因此需要将每个数据段产生的剩余flit个数的信息传递给下一数据段,最后一个数据段产生的剩余个数信息作为下一个时钟周期时第一数据段的输入,这样不会阻塞后续的8个flit的处理。同时,使8个flit的组合经过分段操作变成4个数据段的输出,其中flit已对齐。再两两数据段进行操作,最终实现复杂度的降低。同时,由于各个长度的数据段的对齐操作都是并行,因此时序大大改善。
同理,对于3个flit的并行处理模块的对齐处理,可以参照表4。其中只有有限的42种组合。
[表4]PPM处理的输入输出组合(3个flit)
(H:头flit;D:数据flit;X:空数据包)
下面将结合图4描述根据本发明实施例的数据处理的过程。图4是根据本发明实施例的数据处理的过程示意图。
在图4中,四个并行处理模块(PPM,Parallel Process Module)的内部处理方式完全相同,只是每个并行处理模块的输入不同。PPM0对flit0/1操作,PPM1对flit2/3操作,PPM2对flit4/5操作,PPM3对flit6/7操作。PPM内部还有三个小的并行处理组(PPG,Parallel Process Group),每个并行处理组的未处理数量标识contx不同,因此导致3种不同的重排组合结果。再根据前一数据段输出的选择标识contx1对当前数据段输出的重拍组合结果进行选择。未处理数量标识contx的范围是0至2,表示来自外部输入数据的未处理完毕的剩余flit个数。此外,最后一个数据段PPM3输出的选择标识contx_q被锁存,作为输入下一个时钟周期的对flit0/1操作的PPM0的选择标识contx1。由于PPG的并行处理过程能够实现对数据类型的识别,因此NCS包类型外的其他数据类型的数据包均被置为空数据包。可见,每次对齐操作都是将不需要的“气泡(空数据包)”挤掉的过程。
以下再结合表3,以表1中时钟为N时的8个flit为例,详细介绍根据本发明实施例的数据处理的方法和装置的处理过程。
假设contx_q的初值为2’b00。
对于PPM0,flit0是NCS1的头flit(H),flit1是空数据包(X),因此参照表3对应于2’b00、2’b01和2’b10在并行处理模块中得到3个重排组合,但选择其选择标识contx1=contx_q=2’b00时的结果作为输出。而通过表3可知,该输出结果为:下一个选择标识contx1=2’b00,该对齐的数据段中的flit个数为1以及flit对齐的结果。
对于PPM1,将PPM0输出的选择标识contx1=2’b00作为其结果选择项,其输出结果为:下一个选择标识contx=2’b10,该对齐的数据段中的flit个数为1以及flit对齐的结果。
对于PPM2,将PPM1的输出的选择标识contx1=2’b10作为其结果选择项,其输出结果为:下一个选择标识contx=2’b01,该对齐的数据段中的flit个数为1以及flit对齐的结果。
对于PPM3,将PPM2的输出的选择标识contx1=2’b01作为其结果选择项,其输出结果为:下一个选择标识contx=2’b10,该对齐的数据段中的flit个数为2以及flit对齐的结果。
PPM3输出的选择标识contx1=2’b10被锁存为contx_q,作为下一个时钟周期(N+1)时PPM0的输入。对时钟为(N+1)时的8个flit的操作与上面描述类似。
在得到4个双flit的对齐操作结果之后,再将相邻的两个数据段分别经过第一级的组合得到新的两个数据段,每个数据段中有4个flit,这4个flit中NCS类型的flit之间的“气泡”没有了。
最后,经过第二级的组合得到最终的包括8个flit的输出数据,这个8个flit中NCS类型的flit之间所有的“气泡”都没有了。并且,可知当前时钟的8个flit中NCS类型的flit个数为5。这为后续的存储操作提供了极大的便利。
由上述具体实施例可知,本发明实施例的数据处理的方法和装置对可变长包进行分段且并行地对各段进行对齐操作,从而易于维护设计代码,而且提高设计代码验证时的代码覆盖率,同时明显改善时序。
根据本发明实施例中,提供了一种程序产品,可以使运行该程序产品的处理器实现以下功能:首先,按顺序将对应于当前时钟周期的包含N个数据单元的输入数据分为M个数据段,其中M和N均为正整数,N大于等于2且M小于N;然后,并行地对M个数据段的每一个中的第一类型的数据单元进行对齐操作,使第一类型的数据单元移位至其他类型的数据单元之前,其中其他类型的数据单元均被置为空数据包类型,其中第一类型是需处理的数据包类型,其他类型是不需处理的数据包类型;最后,将对齐处理后的M个数据段组合成包含N个数据单元的输出数据。
由此得到的各个时钟周期中对齐的输出数据顺序地存储在缓冲器中,由于输出数据的各个需要处理的数据单元之间不存在空数据包数据单元或其他类型的数据单元,因此可以有效地节约存储空间。
根据本发明的另一实施例中,提供了一种信息存储媒体,用于存储上述程序产品。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据处理的方法,其特征在于,包括:
按顺序将对应于当前时钟周期的包含N个数据单元的输入数据分为M个数据段,其中M和N均为正整数,N大于等于2且M小于N;
并行地对所述M个数据段的每一个中的第一类型的数据单元进行对齐操作,使所述第一类型的数据单元移位至其他类型的数据单元之前,其中所述其他类型的数据单元均被置为空数据包类型,其中所述第一类型是需处理的数据包类型,所述其他类型是不需处理的数据包类型;
将对齐处理后的所述M个数据段组合成包含N个数据单元的输出数据。
2.如权利要求1所述的方法,其特征在于,所述并行地对所述M个数据段的每一个中的所述第一类型的数据单元进行对齐操作包括:
分别基于X个未处理数量标识并行地对当前数据段中的数据单元进行对齐操作,得到X个重排组合,其中X对应于第一类型的数据包中包含的数据单元的最大个数,所述未处理数量标识用于表示所述第一类型的数据包中未处理的数据单元个数;
依据所述当前数据段的前一个数据段中数据单元对齐操作后输出的选择标识从所述X个重排组合中选择一个重排组合,其中所述选择标识为所述X个未处理数量标识中的一个,用于表示当前数据段中所述第一类型的数据包中未处理的数据单元的个数。
3.如权利要求2所述的方法,其特征在于,所述并行地对所述M个数据段的每一个中的第一类型的数据单元进行对齐操作还包括:
锁存最后一个数据段输出的选择标识,作为当前时钟周期的下一个时钟周期的第一个数据段对齐操作的选择标识。
4.如权利要求2或3所述的方法,其特征在于,所述分别基于X个未处理数量标识并行地对当前数据段中的数据单元进行对齐操作包括:
将所述当前数据段中所述其他类型的数据单元设置为空数据包类型。
5.如权利要求1至4中任一项所述的方法,其特征在于,所述将对齐处理后的所述M个数据段组合成包含N个数据单元的输出数据包括:
逐级地按顺序将对齐操作后的相邻的两个数据段组合成包含N个数据单元的输出数据,使N个数据单元中所述第一类型的数据单元移位至所述其他类型的数据单元之前。
6.一种数据处理的装置,其特征在于,包括:
分段单元,用于按顺序将对应于当前时钟周期的包含N个数据单元的输入数据分为M个数据段,其中M和N均为正整数,N大于等于2且M小于N;
并行处理单元,用于并行地对所述M个数据段的每一个中的第一类型的数据单元进行对齐操作,使所述第一类型的数据单元移位至其他类型的数据单元之前,其中所述其他类型的数据单元均被置为空数据包类型,其中所述第一类型是需处理的数据包类型,所述其他类型是不需处理的数据包类型;
组合单元,用于将对齐处理后的所述M个数据段组合成包含N个数据单元的输出数据。
7.如权利要求6所述的装置,其特征在于,所述并行处理单元还包括:
并行处理模块,用于分别基于X个未处理数量标识并行地对当前数据段中的数据单元进行对齐操作,得到X个重排组合,其中X对应于第一类型的数据包中包含的数据单元的最大个数,所述未处理数量标识用于表示所述第一类型的数据包中未处理的数据单元个数;
选择模块,用于依据所述当前数据段的前一个数据段中数据单元对齐操作后输出的选择标识从所述X个重排组合中选择一个重排组合,其中所述选择标识为所述X个未处理数量标识中的一个,用于表示当前数据段中所述第一类型的数据包中未处理的数据单元的个数。
8.如权利要求7所述的装置,其特征在于,所述并行处理单元还包括:
锁存模块,用于锁存最后一个数据段输出的选择标识,作为当前时钟周期的下一个时钟周期的第一个数据段对齐操作的选择标识。
9.如权利要求7或8所述的装置,其特征在于,所述并行处理模块进一步用于将所述当前数据段中所述其他类型的数据单元设置为空数据包类型。
10.如权利要求6至9中任一项所述的装置,其特征在于,所述组合单元进一步用于逐级地按顺序将对齐操作后的相邻的两个数据段组合成包含N个数据单元的输出数据,使N个数据单元中所述第一类型的数据单元移位至所述其他类型的数据单元之前。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/080280 WO2012149775A1 (zh) | 2011-09-28 | 2011-09-28 | 数据处理的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102388385A true CN102388385A (zh) | 2012-03-21 |
CN102388385B CN102388385B (zh) | 2013-08-28 |
Family
ID=45826496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180001883.2A Expired - Fee Related CN102388385B (zh) | 2011-09-28 | 2011-09-28 | 数据处理的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102388385B (zh) |
WO (1) | WO2012149775A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579565A (zh) * | 2014-12-31 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 传输系统的数据处理方法和装置 |
CN106796605A (zh) * | 2014-10-06 | 2017-05-31 | 微软技术许可有限责任公司 | 分段数据录入的验证 |
CN110073329A (zh) * | 2016-12-16 | 2019-07-30 | 华为技术有限公司 | 访存设备、计算设备和应用于卷积神经网络运算的设备 |
CN112131182A (zh) * | 2020-08-14 | 2020-12-25 | 陕西千山航空电子有限责任公司 | 一种包采类型的飞参数据的快速对齐处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1506807A (zh) * | 2002-10-25 | 2004-06-23 | ض� | 用于数据的并行右移位合并的方法和装置 |
CN1575464A (zh) * | 1999-06-18 | 2005-02-02 | 奔流系统公司 | 利用事务语义法分段和处理连续数据流 |
US20050080953A1 (en) * | 2003-10-14 | 2005-04-14 | Broadcom Corporation | Fragment storage for data alignment and merger |
US20050132017A1 (en) * | 2003-12-11 | 2005-06-16 | International Business Machines Corporation | Reducing number of write operations relative to delivery of out-of-order RDMA send messages |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102006051866A1 (de) * | 2006-10-31 | 2008-05-08 | Robert Bosch Gmbh | Verfahren zum Senden eines Datenübertragungsblocks und Verfahren und System zum Übertragen eines Datenübtertragungsblocks |
CN101853229B (zh) * | 2010-05-17 | 2012-08-08 | 华为终端有限公司 | 数据搬运方法、装置及数据读操作与写操作的方法 |
-
2011
- 2011-09-28 WO PCT/CN2011/080280 patent/WO2012149775A1/zh active Application Filing
- 2011-09-28 CN CN201180001883.2A patent/CN102388385B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1575464A (zh) * | 1999-06-18 | 2005-02-02 | 奔流系统公司 | 利用事务语义法分段和处理连续数据流 |
CN1506807A (zh) * | 2002-10-25 | 2004-06-23 | ض� | 用于数据的并行右移位合并的方法和装置 |
US20050080953A1 (en) * | 2003-10-14 | 2005-04-14 | Broadcom Corporation | Fragment storage for data alignment and merger |
US20050132017A1 (en) * | 2003-12-11 | 2005-06-16 | International Business Machines Corporation | Reducing number of write operations relative to delivery of out-of-order RDMA send messages |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796605A (zh) * | 2014-10-06 | 2017-05-31 | 微软技术许可有限责任公司 | 分段数据录入的验证 |
CN104579565A (zh) * | 2014-12-31 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 传输系统的数据处理方法和装置 |
CN110073329A (zh) * | 2016-12-16 | 2019-07-30 | 华为技术有限公司 | 访存设备、计算设备和应用于卷积神经网络运算的设备 |
CN110073329B (zh) * | 2016-12-16 | 2021-06-22 | 华为技术有限公司 | 访存设备、计算设备和应用于卷积神经网络运算的设备 |
CN112131182A (zh) * | 2020-08-14 | 2020-12-25 | 陕西千山航空电子有限责任公司 | 一种包采类型的飞参数据的快速对齐处理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2012149775A1 (zh) | 2012-11-08 |
CN102388385B (zh) | 2013-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102388385B (zh) | 数据处理的方法和装置 | |
USRE40684E1 (en) | Fast cyclic redundancy check (CRC) generation | |
US10552732B2 (en) | Multi-layer neural network | |
Jin | An improved FPTAS for 0-1 knapsack | |
CN102664787A (zh) | 决策树的生成方法和装置 | |
US20140245324A1 (en) | All-to-all message exchange in parallel computing systems | |
CN107578055B (zh) | 一种图像预测方法和装置 | |
CN104580202B (zh) | 报文的匹配方法和装置 | |
US20210271736A1 (en) | Method, circuit, and soc for performing matrix multiplication operation | |
CN105359113A (zh) | 用于异构系统的分布式存储分配 | |
CN101207467B (zh) | 循环冗余校验码的生成和数据序列发送、校验方法及装置 | |
CN104809161A (zh) | 一种对稀疏矩阵进行压缩和查询的方法及系统 | |
CN108964671A (zh) | 一种译码方法及译码器 | |
CN101916259B (zh) | 确定自动机状态转换表的空间压缩方法 | |
CN103905310A (zh) | 报文处理的方法及转发设备 | |
CN104854602A (zh) | 根据突触前神经元的激发生成消息 | |
CN103631714A (zh) | 基于矩阵重复度的最小组合测试用例生成方法 | |
CN107220702B (zh) | 一种低计算能力处理设备的计算机视觉处理方法及装置 | |
US11200496B2 (en) | Hardware-software co-design of neurosynaptic systems | |
Downarowicz et al. | Universal systems for entropy intervals | |
Fan et al. | Dismantle large networks through deep reinforcement learning | |
CN101854341A (zh) | 用于数据流的模式匹配方法和装置 | |
CN106209114A (zh) | 译码方法及装置 | |
Mukherjee et al. | Automated deep learning model partitioning for heterogeneous edge devices | |
CN102968382A (zh) | 一种空闲存储单元的查找方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130828 Termination date: 20190928 |