CN104375803A - 一种数据处理的方法及装置 - Google Patents
一种数据处理的方法及装置 Download PDFInfo
- Publication number
- CN104375803A CN104375803A CN201310351585.7A CN201310351585A CN104375803A CN 104375803 A CN104375803 A CN 104375803A CN 201310351585 A CN201310351585 A CN 201310351585A CN 104375803 A CN104375803 A CN 104375803A
- Authority
- CN
- China
- Prior art keywords
- register
- data
- data fragmentation
- processor
- instruction
- 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
- 238000003672 processing method Methods 0.000 title abstract 2
- 238000000034 method Methods 0.000 claims abstract description 108
- 230000008569 process Effects 0.000 claims abstract description 80
- 238000005516 engineering process Methods 0.000 claims abstract description 28
- 238000006062 fragmentation reaction Methods 0.000 claims description 172
- 238000013467 fragmentation Methods 0.000 claims description 139
- 238000004891 communication Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明适用于通信技术领域,提供了一种数据处理的方法及装置,所述方法包括:获取多个数据分片,其中,所述数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,所述处理器的多个寄存器所能支持的尽量多数据分片的数量;将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片。通过将串行的指令流并行化执行,实现充分发挥处理器指令级别并行化能力。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种数据处理的方法及装置。
背景技术
基于通用硬件平台的网络转发和业务处理成为学术界的研究热点,涌现出了一批备受瞩目的新技术和原型系统,如Intel的基于Linux的纯软件路由器Routebricks,韩国科学技术院KAIST将GPU用于网络加速处理的PacketShader,以及华为公司的MidlleBox vSGW/CoMb等;另一方面工业界以Arista等为代表的设备厂商采取通用商业芯片+软件的方式构筑的网络设备也逐渐成为一个趋势。
因此,如何基于通用硬件平台做网络处理,如何充分发挥硬件的能力提升软件系统的性能已成为业界迫切需要解决的问题。
发明内容
本发明实施例的目的在于提供一种数据处理的方法,以更大程度地提升软件系统的性能。
为了实现上述目的,本发明实施例提供如下技术方案:
本发明第一方面提供了一种网络数据包处理的方法,所述方法包括:
获取多个数据分片,其中,所述数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,所述处理器的多个寄存器所能支持的尽量多数据分片的数量,并且,所述多个数据分片之间没有数据依赖性;
将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数 据分片。
在第一方面的第一种可能的实现方式中,每个寄存器中存放的数据分片通过一条或多条指令来处理,处理各个寄存器中存放的数据分片的指令之间在算法代码层面为串行的关系;
所述使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片包括:
使得所述处理器的所述指令处理模块能够通过所述ILP技术并行执行相互之间在算法代码层面为串行关系的各条所述指令,以处理存放在所述寄存器中的多个所述数据分片。
结合第一方面或者第一方面的上述任一种可能的实现方式,所述寄存器包括SIMD寄存器以及通用寄存器,所述处理器的多个寄存器所能支持的尽量多数据分片的数量为所述SIMD寄存器的数量加上所述通用寄存器的数量;
所述将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片包括:
将所述多个数据分片放入所述SIMD寄存器以及所述通用寄存器,使得所述指令处理模块能够通过所述ILP技术处理存储在所述SIMD寄存器以及所述通用寄存器中的多个所述数据分片。
结合第一方面或者第一方面的上述任一种可能的实现方式,在第三种可能的实现方式中,多个所述数据分片为来自同一个包的不同数据分片,或者为分别来自不同包的数据分片。
结合第一方面或者第一方面的上述任一种可能的实现方式,在第四种可能的实现方式中,所述将所述多个数据分片放入所述处理器的多个所述寄存器之前,所述方法还包括:
将所述数据分片中处理逻辑相同的数据重新组合成数据集合;
所述将所述多个数据分片放入所述处理器的多个所述寄存器包括:
将所述数据集合中的数据分片放入所述处理器的多个所述寄存器。
本发明第二方面提供了一种网络数据包处理的系统,所述系统包括:
获取单元,用于获取多个数据分片,其中,所述数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,所述处理器的多个寄存器所能支持的尽量多数据分片的数量,并且,所述多个数据分片之间没有数据依赖性;
处理单元,用于将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,每个寄存器中存放的数据分片通过一条或多条指令来处理,处理各个寄存器中存放的数据分片的指令之间在算法代码层面为串行的关系;
所述处理单元,用于使得所述处理器的所述指令处理模块能够通过所述ILP技术并行执行相互之间在算法代码层面为串行关系的各条所述指令,以处理存放在所述寄存器中的多个所述数据分片。
结合第二方面或者第二方面的上述任一种可能的实现方式,在第二种可能的实现方式中,所述寄存器包括SIMD寄存器以及通用寄存器,所述处理器的多个寄存器所能支持的尽量多数据分片的数量为所述SIMD寄存器的数量加上所述通用寄存器的数量;
所述处理单元,用于将所述多个数据分片放入所述SIMD寄存器以及所述通用寄存器,使得所述指令处理模块能够通过所述ILP技术处理存储在所述SIMD寄存器以及所述通用寄存器中的多个所述数据分片。
结合第二方面或者第二方面的上述任一种可能的实现方式,在第三种可能的实现方式中,多个所述数据分片为来自同一个包的不同数据分片,或者为分别来自不同包的数据分片。
结合第二方面或者第二方面的上述任一种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:组合单元,用于将所述数据分片中处理逻辑 相同的数据重新组合成数据集合;
所述处理单元,用于将所述数据集合中的数据分片放入所述处理器的多个所述寄存器。
本发明第三方面提供了一种数据处理的装置,所述装置包括处理器、存储器和总线:其中,所述处理器和所述存储器通过所述总线进行相互间的通信;
所述存储器,用于存储程序;
所述处理器用于执行所述存储器中存储的程序,所述程序在被执行时,用于:
获取多个数据分片,其中,所述数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,所述处理器的多个寄存器所能支持的尽量多数据分片的数量,并且,所述多个数据分片之间没有数据依赖性;
将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片。
在第三方面的第一种可能的实现方式中,在第二种可能的实现方式中,每个寄存器中存放的数据分片通过一条或多条指令来处理,处理各个寄存器中存放的数据分片的指令之间在算法代码层面为串行的关系;
所述处理单元,用于使得所述处理器的所述指令处理模块能够通过所述ILP技术并行执行相互之间在算法代码层面为串行关系的各条所述指令,以处理存放在所述寄存器中的多个所述数据分片。
结合第三方面或者第三方面的上述任一种可能的实现方式,在第二种可能的实现方式中,所述寄存器包括SIMD寄存器以及通用寄存器,所述处理器的多个寄存器所能支持的尽量多数据分片的数量为所述SIMD寄存器的数量加上所述通用寄存器的数量;
所述处理单元,用于将所述多个数据分片放入所述SIMD寄存器以及所述通用寄存器,使得所述指令处理模块能够通过所述ILP技术处理存储在所述 SIMD寄存器以及所述通用寄存器中的多个所述数据分片。
结合第三方面或者第三方面的上述任一种可能的实现方式,在第三种可能的实现方式中,多个所述数据分片为来自同一个包的不同数据分片,或者为分别来自不同包的数据分片。
结合第三方面或者第三方面的上述任一种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:组合单元,用于将所述数据分片中处理逻辑相同的数据重新组合成数据集合;
所述处理单元,用于将所述数据集合中的数据分片放入所述处理器的多个所述寄存器。
本实施例中,获取多个数据分片,数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,将多个数据分片放入处理器的多个寄存器,使得处理器的指令处理模块能够通过ILP技术处理存放在多个寄存器中的多个数据分片,通过将串行的指令流并行化执行,实现充分发挥处理器指令级别并行化能力,从而提升软件处理性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的数据处理的方法的实现的流程图;
图2是本发明实施例一提供的网络数据包处理过程的示意图;
图3是本发明实施例二提供的数据处理的装置的结构图;
图4是本发明实施例四提供的数据处理的装置的硬件结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,通过将所述多个数据分片放入处理器的多个所述寄存器,处理器的指令处理模块能够可以通过ILP技术处理存放在所述寄存器中的多个所述数据分片,使得串行的指令流并行化执行。
以下结合具体实施例对本发明的实现进行详细描述:
实施例一
本实施例的应用场景为网络数据处理系统,其中,网络系统可以看成是一系列的节点通过相连的链路来通信,通信的主要数据单元称作网络数据包,例如,TCP/IP数据,以太网帧数据,IP包数据等,根据网络数据包的功能,可以将网络数据包粗略分为两类,一类是中间节点,负责将收到的网络数据包,分析,处理,并转发到的其他的节点,另一类是端节点,该类结点或者作为终点接收中间节点转发的网络数据包,同时处理并消耗掉数据包或者作为起点生成发送出去的网络数据包,从网络系统角度看,中间节点上网络数据包流入并留出,而端节点网络数据包只流入或流出,然而,无论是哪一类网络系统对于网络数据包的处理都会造成处理单元的计算开销,对于大流量的网络设备来说,为了减少网络数据处理系统处理网络数据可能造成的系统开销,可以根据网络数据的特点,将处理逻辑相同的数据合并处理,以下通过实施例进行具体说明,图1示出了本发明实施例一提供的数据处理的方法的实现的流程图,详述如下:
在S101中,获取多个数据分片;
其中,所述数据分片为待处理数据中的一部分,其中,所述数据可以是网络传输数据。数据分片的数量为支持指令级并行化(Instruction Level Parallelism,ILP)技术的处理器进行数据处理时,处理器的多个寄存器所能支持的尽量多数据分片的数量。本实施例中的“尽量多”在一般情况下即为最多, 例如,假设有10个寄存器,最多支持10个数据分片(每个寄存器处理一个数据分片),那么“尽量多数据分片的数量”的含义在一般情况下即为10个数据分片;此外,“尽量多”也并不严格要求“最多”,例如,只使用10个寄存器中的9个,只要能够取得相似的技术效果(可能稍差一点),也可视为“尽量多”的一种实现方式。
本发明实施例中,多个数据分片之间没有数据依赖性,即针对当前数据的操作并不需要依赖于前面数据的操作结果。在另一实施例中,多个数据分片通过存在至少一个依赖关系的多个原始数据经过解除依赖关系的处理后得到,即接收到的原始数据会有依赖关系,但可以通过一些方法把这些依赖关系进行解释,从而得到没有依赖关系的多个数据分片,具体的解除依赖的方法根据不同的场景有多种方法(如将针对一条流中的网络数据包的并行处理转化成针对多条流的网络数据包的并行处理),这些方法为本领域技术人员公知技术,在此不再赘述。
本实施例中的ILP技术是一项增强处理器性能的技术,它通过增加每个时钟周期执行的指令条数而提高处理器的性能,对于超长指令字(Very Long Instruction Word,VLIW)处理器主要采用编译程序的软件静态调度实现ILP;超标量(Superscalar)处理器则主要通过微处理器的动态执行机制实现ILP。
本实施例中,多个数据分片可以为来自同一个包的不同数据分片,或者为分别来自不同包的数据分片。
本实施例中,所述数据分片还可以是来自多个网络传输数据,也可以来自同一网络传输数据包的不同部分,例如,数据分片可以是来自网络数据包的数据,其中,数据分片可以是来自同一数据包的数据,也可以是来自不同数据包的数据,具体的,可以从网络接口卡获取网络数据包数据;对于发送网络数据包的设备,可以从本地存储设备获取网络数据包数据,例如磁盘或光盘等,也可以从动态生成网络数据包的本地软件或应用程序获取网络数据包数据。
在S102中,将多个数据分片放入处理器的多个寄存器,使得处理器的指令 处理模块能够通过ILP技术处理存放在多个寄存器中的多个数据分片。
本实施例中,指令处理模块是处理器中处理指令的模块,可以将处理器中除寄存器外的跟数据处理密切相关的一些结构模块的集合称为“指令处理模块”,例如,可以包括ALU(Arithmetic Logic Unit,算术逻辑单元),控制单元(Control Unit)以及总线(Bus)。指令处理模块与寄存器一起协助,完成数据的处理。一般情况下,指令处理模块也可以理解为“处理器”,例如,本领域技术人员通常不使用“指令处理模块处理存储在寄存A中的B数据”这种说法,而一般使用“处理器处理存储在寄存器A中的B数据”这种方式进行叙述。本实施例中,也并不对这两种叙述方式进行严格区分,本领域技术人员可以结合上下文清楚知晓具体的实现方式。
本实施例中,每个寄存器中存放的数据分片通过一条或多条指令来处理,即,根据逻辑操作需要对数据分片使用一条或多条指令进行处理,在算法代码层面,处理各个寄存器中存放的数据分片的指令之间为串行的关系,即,程序员在编写软件的时候,数据分片对应的指令之间是串行的,但处理器执行的时候,因为ILP技术,上述指令会被并行执行,例如,在代码层对数据分片a、b、c分别执行指令“a+1”、“b+1”、“c+1”,所述指令为串行执行的指令,但执行的时候,通过ILP技术,所述指令“a+1”、“b+1”、“c+1”为并行执行,即在本实施例S102中,使得处理器的指令处理模块能够通过ILP技术处理存放在多个寄存器中的多个数据分片包括:使得处理器的指令处理模块能够通过ILP技术并行执行相互之间在算法代码层面为串行关系的各条指令,以处理存放在寄存器中的多个数据分片。另外值得说明的是,本实施例中,对数据分片而言,一个数据分片可以与一个指令对应,也可以与多个指令对应。
可选的,在S102之前,方法还包括:将数据分片中处理逻辑相同的数据重新组合成数据集合,S102中,将数据集合中的数据分片放入处理器的多个寄存器,由于将处理逻辑相同的数据分片组合在一个数据集合中并行处理,所以可以共享控制跳转指令,从而减少了数据处理的指令数据,提高了系统效率。
可选的,寄存器包括SIMD寄存器以及通用寄存器,处理器的多个寄存器所能支持的尽量多数据分片的数量为尽量多的SIMD寄存器的数量加上尽量多的通用寄存器的数量(一般情况下为所有的SIMD寄存器的数据以及所有的通用寄存器的数量)。其中,矢量寄存器用来存储跟SIMD指令处理相关的数据,通用寄存器用于存储一般指令处理相关的数据,这里的“一般指令”在本实施例中可以理解为非SIMD指令,即不支持SIMD指令的一些处理器用的普通指令。此时,S102具体为:将所述多个数据分片放入所述SIMD寄存器以及所述通用寄存器,使得所述指令处理模块能够通过SIMD指令处理存储在所述SIMD寄存器,并同时用一般指令处理所述通用寄存器中的多个所述数据分片。即此时SIMD指令与一般指令同时执行,以实现ILP。
此外,本实施例中,放入所述SIMD寄存器的多个数据分片之间具有矢量关系,这种矢量关系可以通过在放入SIMD寄存器前经过处理得到,具体处理方法视具体应用场景而定,本领域技术人员可以结合实际的应用场景来完成这种处理,这里不再赘述。
为了便于理解,以下以对网络数据包的处理为例,对本实施例数据处理的情况进行说明,但不以本实现示例的情况为限,请参阅图2,本实现示例获取多个网络数据包,数据包a,b,…,i,将每个网络数据包数据a,b,…,i划分为三个数据分片,然后从每一网络数据包中分别依次取出一个数据分片组成一个数据集合,例如,可以将数据a1、b1、c1、d1、e1、f1、g1、h1、i1组成一个数据集合,假设本示例中的处理器包括2个SIMD寄存器(SIMD寄存器1和SIMD寄存器2)和一个通用寄存器,则根据处理器的处理能力,可以将数据分成a1、b1、c1、d1,e1、f1、g1、h1,i1,其中,可以把a1、b1、c1、d1,e1、f1、g1、h1分别存储至SIMD寄存器1和SIMD寄存器2,而将i1存储至通用寄存器,然后处理器的指令处理模块能够通过ILP技术处理存放在寄存器中的多个数据分片,此后可以依次并行处理a2、b2、c2、d2、e2、f2、g2、h2、i2,及a3、b3、c3、d3、e3、f3、g3、h3、i3。本示例中,放入SIMD寄存器1 中的a1-d1之间具有矢量关系,同理,放入SIMD寄存器2中的e1-h1之间也具有矢量关系,这种矢量关系可以在前述步骤(如划成a1、b1分片的步骤)中处理后得到。值得说明的是,上述处理器中的寄存器的配置情况仅是为了说明本示例而示出的一种配置方式,具体的可以根据实际需要进行不同的配置。
本实施例中,获取多个数据分片,数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,将多个数据分片放入处理器的多个寄存器,使得处理器的指令处理模块能够通过ILP技术处理存放在多个寄存器中的多个数据分片,通过将串行的指令流并行化执行,实现充分发挥处理器指令级别并行化能力。
实施例二
图3示出了本发明实施例二提供的数据处理的装置的结构图,为了便于说明,仅示出了与本发明实施例相关的部分。
装置包括:获取单元31和处理单元32。
获取单元31,用于获取多个数据分片,其中,数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,处理器的多个寄存器所能支持的尽量多数据分片的数量;
处理单元32,用于将多个数据分片放入处理器的多个寄存器,使得处理器的指令处理模块能够通过ILP技术处理存放在多个寄存器中的多个数据分片。
可选的,每个寄存器中存放的数据分片通过一条或多条指令来处理,在算法代码层面,处理各个寄存器中存放的数据分片的指令之间为串行的关系;
处理单元32,用于使得处理器的指令处理模块能够通过ILP技术并行执行相互之间在算法代码层面为串行关系的各条指令,以处理存放在寄存器中的多个数据分片。
可选的,寄存器包括SIMD寄存器以及通用寄存器,处理器的多个寄存器所能支持的尽量多数据分片的数量为SIMD寄存器的数量加上通用寄存器的数 量;
处理单元32,用于将多个数据分片放入SIMD寄存器以及通用寄存器,使得指令处理模块能够通过ILP技术处理存储在SIMD寄存器以及通用寄存器中的多个数据分片。
可选的,多个数据分片为来自同一个包的不同数据分片,或者为分别来自不同包的数据分片。
可选的,装置还可以包括组合单元,用于将数据分片中处理逻辑相同的数据重新组合成数据集合,此时,处理单元,用于将数据集合中的数据分片放入处理器的多个寄存器。
值得注意的是,上述实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,硬件实现时,上述各个单元实际上也是处理器(例如,CPU)的一部分,即只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
本发明实施例提供的数据处理的装置可以使用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
实施例三
图4示出了本发明实施例三提供的数据处理的装置的硬件结构框图,该系统可以位于网络结点设备中,用于运行本发明图1实施例所述的数据处理的方法。为了便于说明,仅示出了与本实施例相关的部分。
参照图4,该装置包括处理器41、存储器42和总线43,其中,处理器41和存储器42通过总线43进行相互间的通信,存储器42用于存储程序,处理器43用于执行存储器42中存储的程序,所述程序在被执行时,用于:
获取多个数据分片,其中,所述数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,所述处理器的多个寄存器所能支持的尽量多数据分片的数量,并且,所述多个数据分片之间没有数据依赖性;
需要说明的是,本实施例中,获取数据分片是由处理器执行获取的,当然, 在实际的数据处理中,也可以通过独立的器件来获取数据。
将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片。
可选的,每个寄存器中存放的数据分片通过一条或多条指令来处理,在算法代码层面,处理各个寄存器中存放的数据分片的指令之间为串行的关系;
所述使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片包括:
使得所述处理器的所述指令处理模块能够通过所述ILP技术并行执行相互之间在算法代码层面为串行关系的各条所述指令,以处理存放在所述寄存器中的多个所述数据分片。
可选的,所述寄存器包括SIMD寄存器以及通用寄存器,所述处理器的多个寄存器所能支持的尽量多数据分片的数量为所述SIMD寄存器的数量加上所述通用寄存器的数量;
所述将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片包括:
将所述多个数据分片放入所述SIMD寄存器以及所述通用寄存器,使得所述指令处理模块能够通过所述ILP技术处理存储在所述SIMD寄存器以及所述通用寄存器中的多个所述数据分片。
可选的,多个所述数据分片为来自同一个包的不同数据分片,或者为分别来自不同包的数据分片。
可选的,所述将所述多个数据分片放入所述处理器的多个所述寄存器之前,所述方法还包括:
将所述数据分片中处理逻辑相同的数据重新组合成数据集合;
所述将所述多个数据分片放入所述处理器的多个所述寄存器包括:
将所述数据集合中的数据分片放入所述处理器的多个所述寄存器。
值得说明的是,上述存储器42存储的程序都是都由处理器43来完成的,然而,在本发明的其它实施例中,也可以由其他的硬件来完成上述程序的部分功能(例如获取分片数据、数据组织等),但关键的基于ILP的处理肯定得由支持这个能力的硬件处理器来完成。
另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种数据处理的方法,其特征在于,所述方法包括:
获取多个数据分片,其中,所述数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,所述处理器的多个寄存器所能支持的尽量多数据分片的数量,并且,所述多个数据分片之间没有数据依赖性;
将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述多个寄存器中的多个所述数据分片。
2.如权利要求1所述的方法,其特征在于,每个寄存器中存放的数据分片通过一条或多条指令来处理,处理各个寄存器中存放的数据分片的指令之间在算法代码层面为串行的关系;
所述使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片包括:
使得所述处理器的所述指令处理模块能够通过所述ILP技术并行执行相互之间在算法代码层面为串行关系的各条所述指令,以处理存放在所述寄存器中的多个所述数据分片。
3.如权利要求1任一所述的方法,其特征在于:
所述寄存器包括SIMD寄存器以及通用寄存器,所述处理器的多个寄存器所能支持的尽量多数据分片的数量为所述SIMD寄存器的数量加上所述通用寄存器的数量;
所述将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片包括:
将所述多个数据分片放入所述SIMD寄存器以及所述通用寄存器,使得所述指令处理模块能够通过SIMD指令处理存储在所述SIMD寄存器,并同时用一般指令处理所述通用寄存器中的多个所述数据分片。
4.如权利要求3所述的方法,其特征在于:
放入所述SIMD寄存器的多个数据分片之间具有矢量关系。
5.如权利要求1-4任一所述的方法,其特征在于:
多个所述数据分片为来自同一个网络数据包的不同数据分片,或者为分别来自不同网络数据包的数据分片。
6.如权利要求1-5任一所述的方法,其特征在于:
所述多个数据分片通过存在至少一个依赖关系的多个原始数据经过解除依赖关系的处理后得到。
7.一种数据处理的装置,其特征在于,所述系统包括:
获取单元,用于获取多个数据分片,其中,所述数据分片的数量为支持指令级并行化ILP技术的处理器进行数据处理时,所述处理器的多个寄存器所能支持的尽量多数据分片的数量,并且,所述多个数据分片之间没有数据依赖性;
处理单元,用于将所述多个数据分片放入所述处理器的多个所述寄存器,使得所述处理器的指令处理模块能够通过所述ILP技术处理存放在所述寄存器中的多个所述数据分片。
8.如权利要求7所述的装置,其特征在于,每个寄存器中存放的数据分片通过一条或多条指令来处理,处理各个寄存器中存放的数据分片的指令之间在算法代码层面为串行的关系;
所述处理单元,用于使得所述处理器的所述指令处理模块能够通过所述ILP技术并行执行相互之间在算法代码层面为串行关系的各条所述指令,以处理存放在所述寄存器中的多个所述数据分片。
9.如权利要求7任一所述的装置,其特征在于,
所述寄存器包括SIMD寄存器以及通用寄存器,所述处理器的多个寄存器所能支持的尽量多数据分片的数量为所述SIMD寄存器的数量加上所述通用寄存器的数量;
所述处理单元,用于将所述多个数据分片放入所述SIMD寄存器以及所述通用寄存器,使得所述指令处理模块能够通过SIMD指令处理存储在所述SIMD寄存器,并同时用一般指令处理所述通用寄存器中的多个所述数据分片。
10.如权利要求9所述的装置,其特征在于:
放入所述SIMD寄存器的多个数据分片之间具有矢量关系。
11.如权利要求7-10任一所述的装置,其特征在于,多个所述数据分片为来自同一个网络数据包的不同数据分片,或者为分别来自不同网络数据包的数据分片。
12.如权利要求7-11任一所述的装置,其特征在于:
所述多个数据分片通过存在至少一个依赖关系的多个原始数据经过解除依赖关系的处理后得到。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310351585.7A CN104375803B (zh) | 2013-08-13 | 2013-08-13 | 一种数据处理的方法及装置 |
PCT/CN2014/078580 WO2015021803A1 (zh) | 2013-08-13 | 2014-05-28 | 一种数据处理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310351585.7A CN104375803B (zh) | 2013-08-13 | 2013-08-13 | 一种数据处理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104375803A true CN104375803A (zh) | 2015-02-25 |
CN104375803B CN104375803B (zh) | 2017-10-24 |
Family
ID=52467999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310351585.7A Active CN104375803B (zh) | 2013-08-13 | 2013-08-13 | 一种数据处理的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104375803B (zh) |
WO (1) | WO2015021803A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183434A (zh) * | 2015-10-14 | 2015-12-23 | 无锡江南计算技术研究所 | 采用隐式求解的众核流水线并行方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1174353A (zh) * | 1996-08-19 | 1998-02-25 | 三星电子株式会社 | 采用多个向量寄存器组的单指令多数据处理方法及其装置 |
US20020133692A1 (en) * | 2001-02-02 | 2002-09-19 | Masahito Matsuo | Data processor |
CN102053819A (zh) * | 2009-10-26 | 2011-05-11 | 索尼公司 | 信息处理设备和信息处理设备的指令解码器 |
CN102687114A (zh) * | 2009-09-24 | 2012-09-19 | 辛奥普希斯股份有限公司 | 具有行为特征的硬件设计的并发仿真 |
-
2013
- 2013-08-13 CN CN201310351585.7A patent/CN104375803B/zh active Active
-
2014
- 2014-05-28 WO PCT/CN2014/078580 patent/WO2015021803A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1174353A (zh) * | 1996-08-19 | 1998-02-25 | 三星电子株式会社 | 采用多个向量寄存器组的单指令多数据处理方法及其装置 |
US20020133692A1 (en) * | 2001-02-02 | 2002-09-19 | Masahito Matsuo | Data processor |
CN102687114A (zh) * | 2009-09-24 | 2012-09-19 | 辛奥普希斯股份有限公司 | 具有行为特征的硬件设计的并发仿真 |
CN102053819A (zh) * | 2009-10-26 | 2011-05-11 | 索尼公司 | 信息处理设备和信息处理设备的指令解码器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183434A (zh) * | 2015-10-14 | 2015-12-23 | 无锡江南计算技术研究所 | 采用隐式求解的众核流水线并行方法 |
CN105183434B (zh) * | 2015-10-14 | 2017-08-11 | 无锡江南计算技术研究所 | 采用隐式求解的众核流水线并行方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015021803A1 (zh) | 2015-02-19 |
CN104375803B (zh) | 2017-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Das et al. | Distributed deep learning using synchronous stochastic gradient descent | |
EP3005139B1 (en) | Incorporating a spatial array into one or more programmable processor cores | |
US9501318B2 (en) | Scheduling and execution of tasks based on resource availability | |
US7725573B2 (en) | Methods and apparatus for supporting agile run-time network systems via identification and execution of most efficient application code in view of changing network traffic conditions | |
CN110928697B (zh) | 拓扑图转换系统及其方法 | |
CN109791492B (zh) | 流水线相关树查询优化器和调度器 | |
CN106547522B (zh) | 一种流应用优化的方法及装置 | |
CN102306141A (zh) | 一种描述动态可重构阵列配置信息的方法 | |
CN102207904A (zh) | 用于对可重构处理器进行仿真的设备和方法 | |
CN106406820B (zh) | 一种网络处理器微引擎的多发射指令并行处理方法及装置 | |
CN110503179B (zh) | 计算方法以及相关产品 | |
US8832412B2 (en) | Scalable processing unit | |
CN102455932B (zh) | 一种任务实例串行执行方法、装置及系统 | |
US9753769B2 (en) | Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof | |
US20140040594A1 (en) | Programmable device for software defined radio terminal | |
CN104375803A (zh) | 一种数据处理的方法及装置 | |
CN103226480A (zh) | 用于动态地重新配置多核系统的操作系统的设备和方法 | |
CN111027688A (zh) | 一种基于fpga的神经网络计算器生成方法及装置 | |
CN115080496A (zh) | 网络映射方法、数据处理方法及装置、设备、系统和介质 | |
EP4191441A1 (en) | Graph computing apparatus, processing method, and related device | |
JP2013246816A (ja) | ミニコア基盤の再構成可能プロセッサ及びその再構成可能プロセッサを利用した柔軟な多重データ処理方法 | |
CN113076191A (zh) | 一种集群gpu资源调度系统 | |
Ho et al. | Towards FPGA-assisted spark: An SVM training acceleration case study | |
CN105808585A (zh) | 一种流式数据的处理方法和装置 | |
Chen | Task partitioning and mapping algorithms for multi-core packet processing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |