CN109032010B - Fpga器件及基于其的数据处理方法 - Google Patents

Fpga器件及基于其的数据处理方法 Download PDF

Info

Publication number
CN109032010B
CN109032010B CN201810783754.7A CN201810783754A CN109032010B CN 109032010 B CN109032010 B CN 109032010B CN 201810783754 A CN201810783754 A CN 201810783754A CN 109032010 B CN109032010 B CN 109032010B
Authority
CN
China
Prior art keywords
data
functional module
sets
output
module
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.)
Active
Application number
CN201810783754.7A
Other languages
English (en)
Other versions
CN109032010A (zh
Inventor
廖恬瑜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Advanced New Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201810783754.7A priority Critical patent/CN109032010B/zh
Publication of CN109032010A publication Critical patent/CN109032010A/zh
Application granted granted Critical
Publication of CN109032010B publication Critical patent/CN109032010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0423Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25257Microcontroller

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本说明书实施例公开一种FPGA器件及基于其的数据处理方法。所述FPGA器件包括至少一个功能模块,一种所述数据处理方法在所述第一功能模块中执行,包括:获取与所述第一功能模块对应的数据包,所述数据包包括顺序排列的多组输入数据;将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元;使用所述多个数据处理单元对输入其中的各组输入数据分别进行第一函数计算,以获得多组输出数据,其中所述第一函数计算为与所述第一功能模块对应的函数计算;根据所述多组输入数据在所述数据包中的排列顺序,依次输出所述多组输出数据;以及发送预定信号,以指示已输出全部所述多组输出数据。

Description

FPGA器件及基于其的数据处理方法
技术领域
本说明书实施例涉及数据处理技术领域,更具体地,涉及FPGA器件及基于其的数据处理方法。
背景技术
在数据中心使用FPGA进行算法加速,已经成为非常常用的一种方法。例如,在蚂蚁金服的数据中心中也有大量类似的应用。例如,可以使用FPGA加速加解密业务。在加解密业务中,涉及到几个计算量巨大的函数,而这些函数非常适合FPGA进行计算,用FPGA实现这些函数往往能够达到比CPU的耗时节省几十倍。传统解决方案中,FPGA包含一个计算模块。服务器中同一时刻只有一个业务进程可以调用FPGA中的计算模块加速一个希望加速的函数。服务器中运行的程序先通过PCIE总线将需要加速的计算的输入数据拷入FPGA上,再通知FPGA开始计算,计算完毕之后FPGA通过PCIE总线的中断告知运行在服务器上面的程序,服务器上的程序最后通过PCIE将FPGA中的结果数据拷贝到服务器中,以完成后面的任务。而在当前,存在这样的需求,希望由多个业务进程同时调用相同的函数,或者在FPGA器件中同时完成对多个不同函数的计算。
因此,需要一种更有效的基于FPGA器件的数据处理方案。
发明内容
本说明书实施例旨在提供一种更有效的基于FPGA器件的数据处理方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种基于FPGA器件的数据处理方法,所述FPGA器件包括至少一个功能模块,每个所述功能模块用于执行与其对应的函数计算,所述方法在所述至少一个功能模块中的第一功能模块中执行,包括:获取与所述第一功能模块对应的数据包,所述数据包包括顺序排列的多组输入数据;将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元;使用所述多个数据处理单元对输入其中的各组输入数据分别进行第一函数计算,以获得多组输出数据,其中所述第一函数计算为与所述第一功能模块对应的函数计算;根据所述多组输入数据在所述数据包中的排列顺序,依次输出所述多组输出数据;以及发送预定信号,以指示已输出全部所述多组输出数据。
在一个实施例中,在所述数据处理方法中,所述FPGA器件与服务器连接,其中,所述多组输入数据分别来自于所述服务器中的多个进程。
在一个实施例中,在所述数据处理方法中,所述FPGA器件还包括DMA控制器,其中获取与所述第一功能模块对应的数据包包括,通过所述DMA控制器中的与所述第一功能模块对应的通道从外部接收数据包。
在一个实施例中,在所述数据处理方法中,所述第一功能模块还包括FIFO缓存器,所述方法还包括,在获取与所述第一功能模块对应的数据包之后,将所述数据包存入所述FIFO缓存器中,以用于向所述多个数据处理单元分发所述多组输入数据。
在一个实施例中,在所述数据处理方法中,将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元包括:根据所述多组输入数据在所述数据包中的排列顺序,对所述多组输入数据顺序分配序号i,其中i为从0开始的整数;根据所述多组输入数据各自的序号i的顺序,将所述多组输入数据分别输入所述多个数据处理单元中空闲的数据处理单元。
在一个实施例中,在所述数据处理方法中,所述第一功能模块还包括随机存储器,所述随机存储器包括顺序排列的M个第一地址,其中,根据所述多组输入数据在所述数据包中的排列顺序,依次输出所述多组输出数据包括:根据所述多组输入数据各自的序号i,对所述多组输出数据分别分配所述M个第一地址中的第(i mod M)+1个第一地址;将所述多组输出数据分别存入分配的第一地址;以及从所述M个第一地址顺序输出存入其中的各组输出数据。
在一个实施例中,在所述数据处理方法中,发送预定信号,以指示已输出全部所述多组输出数据包括,发送预定电平信号,以指示已输出全部所述多组输出数据。
本说明书另一方面提供一种基于FPGA器件的数据处理方法,所述FPGA器件与服务器连接、包括至少一个功能模块,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块中的第一汇聚模块与所述至少一个功能模块中的第一功能模块对应,所述方法在所述第一汇聚模块中执行,包括:获取分别来自多个进程的多组输入数据;基于所述多组输入数据获取数据包,所述数据包包括顺序排列的所述多组输入数据;以及将所述数据包发送给所述第一功能模块。
在一个实施例中,在所述数据处理方法中,所述FPGA器件通过其中的DMA控制器接收数据,所述服务器端包括DMA驱动,其中,将所述数据包发送给所述第一功能模块包括,调用所述DMA驱动,通过所述DMA控制器的与所述第一功能模块对应的通道将所述数据包发送给所述第一功能模块。
本说明书另一方面提供一种基于FPGA器件的数据处理方法,所述FPGA器件与服务器连接、包括至少一个功能模块,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块中的第一汇聚模块与所述至少一个功能模块中的第一功能模块对应,所述第一汇聚模块中预备有顺序排列的多个第二地址,所述方法在所述第一汇聚模块中执行,包括:从所述第一功能模块依次接收通过上述在FPGA端执行的方法依次输出的所述多组输出数据,其中,所述多组输出数据根据其被接收的先后顺序被存入所述多个第二地址中的从前至后的地址中,其中,所述多个第二地址的数目与所述多组输出数据的组数相同;从所述第一功能模块接收预定信号,以确定已接收全部所述多组输出数据;以及根据各组输出数据被存入的第二地址,将所述各组输出数据发送给对应的进程。
在一个实施例中,在所述数据处理方法中,所述第一汇聚模块中还预备有与所述多个第二地址对应的标志位,所述标志位被预置为第一预定值,其中,从所述第一功能模块接收预定信号,以确定已接收全部所述多组输出数据包括:从所述第一功能模块接收预定电平信号,以用于将所述标志位置为第二预定值,从而确定已接收全部所述多组输出数据。
本说明书另一方面提供一种FPGA器件,包括:接口模块,配置为,与外部进行通信;以及至少一个功能模块,其中,每个功能模块用于执行与其对应的函数计算,其中,所述至少一个功能模块中包括第一功能模块,所述第一功能模块配置为通过所述接口模块获取与所述第一功能模块对应的数据包,所述数据包包括顺序排列的多组输入数据,其中,所述第一功能模块包括:分发单元,配置为,将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元;多个数据处理单元,其中,各个数据处理单元配置为对输入其中的各组输入数据分别进行第一函数计算,以获得多组输出数据,其中所述第一函数计算为与所述第一功能模块对应的函数计算;以及输出单元,配置为,根据所述多组输入数据在数据包中的排列顺序,通过所述接口模块依次输出所述多组输出数据,以及,通过所述接口模块发送预定信号,以指示已输出全部所述多组输出数据。
本说明书另一方面提供一种基于FPGA器件的数据处理装置,所述FPGA器件与服务器连接、包括至少一个功能模块,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块中的第一汇聚模块与所述至少一个功能模块中的第一功能模块对应,所述装置在所述第一汇聚模块中实施,包括:第一获取单元,配置为,获取分别来自多个进程的多组输入数据;第二获取单元,配置为,基于所述多组输入数据获取数据包,所述数据包包括顺序排列的所述多组输入数据;以及发送单元,配置为,将所述数据包发送给所述第一功能模块。
本说明书另一方面提供一种基于FPGA器件的数据处理装置,所述FPGA器件与服务器连接、包括至少一个功能模块,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块中的第一汇聚模块与所述至少一个功能模块中的第一功能模块对应,所述第一汇聚模块中预备有顺序排列的多个第二地址,所述装置在所述第一汇聚模块中实施,包括:第一接收单元,配置为,从所述第一功能模块依次接收通过上述在FPGA端执行的方法依次输出的所述多组输出数据,其中,所述多组输出数据根据其被接收的先后顺序被存入所述多个第二地址中的从前至后的地址中,其中,所述多个第二地址的数目与所述多组输出数据的组数相同;第二接收单元,配置为,从所述第一功能模块接收预定信号,以确定已接收全部所述多组输出数据;以及发送单元,配置为,根据各组输出数据被存入的第二地址,将所述各组输出数据发送给对应的进程。
通过根据本说明书实施例的FPGA器件及数据处理方法,可支持服务器中多个业务进程共同使用FPGA器件,以进行相同函数的加速;可以对不同的函数进行加速,还可以减少服务器与FPGA器件的交互,提高了硬件性能。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1示出根据本说明书实施例的基于FPGA器件的加速系统100的示意图;
图2示出了根据本说明书实施例的一种基于FPGA器件的数据处理方法的流程图;
图3示意示出了根据本说明书实施例的数据包;
图4示出了一种基于FPGA器件的数据处理方法的流程图;
图5示出根据本说明书实施例的一种基于FPGA器件的数据处理方法的流程图;
图6示出了根据本说明书实施例的多个第二地址的示意图;
图7示出了根据本说明书实施例的一种FPGA器件700;
图8示出根据本说明书实施例的一种基于FPGA器件的数据处理装置800;以及
图9示出根据本说明书实施例的一种基于FPGA器件的数据处理装置900。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的基于FPGA器件(现场可编程门阵列器件)的加速系统100的示意图。如图所示,系统100包括服务器11和FPGA器件12。服务器11中包括驱动层111和业务层112。驱动层111包括至少一个汇聚模块,图1中以汇聚模块1和和汇聚模块2示意示出。业务层112包括多个业务进程,图1中以进程1、进程2、进程3和进程4示意示出。FPGA器件12中包括至少一个功能模块,图1中以功能模块1和功能模块2示意示出。功能模块1和功能模块2用于进行不同的函数计算,例如功能模块1用于计算函数1,功能模块2用于计算函数2。
FPGA器件12与服务器11连接,例如,FPGA器件12以PCIE卡的形式插在服务器11上,通过PCIE通道和软件部分(图1中的DMA驱动)进行通信。其中,汇聚模块1与功能模块1之间进行数据的交互,汇聚模块2与功能模块2之间进行数据的交互。当业务进程中需要计算函数1或函数2时,可通过调用驱动层111中汇聚模块1或汇聚模块2,而调用FPGA器件完成对函数1或函数2的计算。以汇聚模块1为例,当进程1-进程4同时调用汇聚模块1时,汇聚模块1将分别来自进程1-进程4的四组输入数据按一定顺序汇聚成数据包,并将该数据包发送给功能模块1。功能模块1中包括多个相同的数据处理单元,其分别对数据包中的四组数据数据进行处理,从而获得四组输出数据。然后,功能模块1将四组输出数据以与四组输入数据在数据包中的顺序相同的顺序发回汇聚模块1。从而,汇聚模块1可依据所述顺序将各组输出数据发回给对应的进程。
图2示出了根据本说明书实施例的一种基于FPGA器件的数据处理方法的流程图。所述FPGA器件包括至少一个功能模块,其中,每个功能模块用于执行与其对应的函数计算。所述方法在所述至少一个功能模块中的第一功能模块中执行,包括:
在步骤S202,获取与所述第一功能模块对应的数据包,所述数据包包括顺序排列的多组输入数据;
在步骤S204,将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元;
在步骤S206,使用所述多个数据处理单元对输入其中的各组输入数据分别进行第一函数计算,以获得多组输出数据,其中所述第一函数计算为与所述第一功能模块对应的函数计算;
在步骤S208,根据所述多组输入数据在所述数据包中的排列顺序,依次输出所述多组输出数据;以及
在步骤S210,发送预定信号,以指示已输出全部所述多组输出数据。
首先,在步骤S202,获取与所述第一功能模块对应的数据包,所述数据包包括顺序排列的多组输入数据。
在一个实施例中,所述FPGA器件通过DMA(直接内存存取)控制器与服务器连接。其中第一功能模块例如为图1中的功能模块1,用于计算函数1,其如图1所示从服务器中的汇聚模块1接收输入数据。可以理解,FPGA器件不限定为包括DMA控制器,DMA控制器(即PCIE接口)只是一种示例的接口形式,FPGA器件的接口可通过编程而实现为不同接口形式。因此,FPGA器件还可以包括其它各种接口形式,如SATA接口、GE接口、204B接口等。另外,FPGA器件不限于与服务器连接,例如,其可以实现为可输入数据的独立的计算硬件,也可以与不同的用户终端(如手机、Pad等)连接。
在该实施例中,例如,进程1-进程N需要进行函数1的计算,其通过调用汇聚模块1,而把其各自的一组输入数据传输给汇聚模块1。每组输入数据例如包括3个数值,其为用于计算函数1的输入值。汇聚模块1例如按照进程1到进程N的顺序,将来自于其的各组输入数据顺序排列,从而获得一个数据流。图3示意示出了根据本说明书实施例的数据包,如图3所示,该数据包中包括顺序排列的N组输入数据,例如,输入数据0为对应于进程1的一组数据,输入数据1为对应于进程2的一组数据,输入数据2为对应于进程3的一组数据,输入数据N-1为对应于进程N的一组数据。这里,可以根据业务需要和硬件结构对N进行配置。
汇聚模块1在获得如图3所示的输入数据流之后,调用本地的DMA驱动,从而通过FPGA器件的DMA控制器中与函数1对应的通道,将所述数据流以数据包的形式发送给功能模块1。这里,DMA接口可包括多个通道,每个通道与FPGA中的一个功能模块对应。从而,功能模块1通过DMA控制器从外部获取与其对应的数据包。这里,功能模块1获取数据包的方式只是示意性的,如上文所述,FPGA器件不限于与服务器连接,也不限于包括DMA控制器,从而可根据其接口形式和其连接形式,以不同的方式获取数据包。
在步骤S204,将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元。
在一个实施例中,根据所述多组输入数据在所述数据包中的排列顺序,对所述多组输入数据顺序分配序号i(i为大于等于0的整数),并根据所述多组输入数据各自的序号i的顺序,将所述多组输入数据分别输入所述多个数据处理单元中空闲的数据处理单元。例如,所述多组输入数据为如图3所示的N组输入数据,根据其排列顺序,对图3中的从左边开始的第1组输入数据分配序号0,对第2组输入数据分配序号1,对第3组输入数据分配序号2等等。然后按照序号的顺序依次将输入数据0-输入数据N-1输入空闲的数据处理单元中进行处理。这里,对多个数据处理单元的数目不特别限定,例如第一功能模块中有5个数据处理单元,并且这5个数据处理单元都是空闲状态,输入数据的组数N为4,则可将输入数据0-输入数据3以序号的顺序输入其中的4个数据处理单元中。再例如,第一功能模块有3个数据处理单元,并且都处于空闲状态,N为4,则首先将输入数据0-输入数据2顺序输入这3个数据处理单元,并在这3个数据处理单元中的一个结束计算空闲出来时,将输入数据4输入该空闲的数据处理单元进行处理。
上述实施例只是该方法的一种实施方式,该方法不限于上述实施方式。例如,可将多组输入数据的组数N设定为小于等于功能模块中的数据处理单元的个数,并使用与各组输入数据的排列顺序对应的处理单元对其进行处理。例如,设定使用第1个数据处理单元处理输入数据0,使用第2个数据处理单元处理输入数据1,使用第3个数据处理单元处理输入数据2等等。
在步骤S206,使用所述多个数据处理单元对输入其中的各组输入数据分别进行第一函数计算,以获得多组输出数据,其中所述第一函数计算为与所述第一功能模块对应的函数计算。
FPGA器件中的不同功能模块执行不同的函数计算,例如,第一功能模块执行第一函数的计算。所述函数计算通常是计算量大的函数,例如加解密计算等,如果用服务器的CPU计算会耗时比较大,因此通过调用FPGA器件来进行所述函数计算。在功能模块中,在各个数据处理单元中进行函数计算。例如,第一功能模块包括多个数据处理单元,每个数据处理单元都对输入其中的数据进行第一函数计算。从而,通过该结构,可近乎同时地对来自多个进程的多组输入数据进行相同的计算,以获得多组输出数据。从而充分有效地利用了FPGA器件的资源,节省了计算时间。
在步骤S208,根据所述多组输入数据在所述数据包中的排列顺序,依次输出所述多组输出数据。
在一个实施例中,所述第一功能模块还包括随机存储器(RAM),所述随机存储器包括顺序排列的M个第一地址。在上述对所述多组输入数据分配序号i的实施例中,根据所述多组输入数据各自的序号i,对所述多组输出数据分别分配所述M个第一地址中的第(i modM)+1个第一地址,将所述多组输出数据分别存入分配的第一地址,以及从所述M个第一地址顺序输出存入其中的各组输出数据。
例如,假设M=4,假设4个第一地址分别为地址0-地址3,对于输入数据0-输入数据3,对其输出数据0-3分别分配地址:地址0-地址3。第一功能模块轮询检查地址0,当确定地址0中新存入输出数据0时,立即输出该输出数据0。在确定地址0中存入输出数据0之后,再轮询检查地址1,当确定地址1中新存入输出数据1时,立即输出输出数据1,并类似地输出输出数据2和输出数据3。
而对于输入数据4-输入数据7,也对其输出数据4-7分别分配地址:地址0-地址3。同样地,在第一功能模块中,在输出输出数据3之后,重新对地址0检查其中是否新存入输出数据。当确定地址0中新存入输出数据4时,立即输出输出数据4。在确定地址0中存入输出数据4之后,再检查地址1,当确定地址1中新存入输出数据5时,立即输出输出数据5,并类似地输出输出数据6和输出数据7。
从而,通过该实施例中的方法,即可保证多组输出数据的输出顺序与多组输入数据的在数据包中的排列顺序是对应的,即,输出顺序为输出数据0、输出数据1、输出数据2…输出数据N-1,其与输入数据的排列顺序(输入数据0、输入数据1、输入数据2…输入数据N-1)相对应。
该实施例只是该方法的一种实施方式,该方法还可以包括其它实施方式。例如,在上述使用与各组输入数据的排列顺序对应的处理单元对其进行处理的实施例中,可将N设定为与M相等。可设定第1个数据处理单元将其结果0输入至地址0,第2个数据处理单元将其结果输入至地址1等等,第N个数据处理单元将其结果输入值地址M-1。从而,当从地址0-地址M-1顺序输出结果时,也可保证多组输出数据的输出顺序与多组输入数据在数据包中的排列顺序相对应。
在步骤S208,发送预定信号,以指示已输出全部所述多组输出数据。
在一个实施例中,第一功能模块发送预定电平信号,例如,发送电平1,以指示已输出全部所述多组输出数据,从而在输出结果的过程中不需要中断FPGA器件。然而,本发明不限于该实施方式,例如,也可以通过发送中断信号来指示已输出全部所述多组输出数据。
在一个实施例中,第一功能模块中还包括FIFO缓存器。从而在获取与所述第一功能模块对应的数据包之后,将所述数据包存入所述FIFO缓存器中,以用于向所述多个数据处理单元分发所述多组输入数据。通过这种方式,FPGA器件不需要处理完一个数据包,再接收下一个数据包,并可以根据数据包的接收顺序对其顺序处理。
上述通过以第一功能模块的运作为例说明了FPGA器件端的数据处理流程。可以理解,FPGA器件中包括至少一个功能模块,各个功能模块所执行的函数计算不同,但是其所包含的单元结构相同,并且其各自的数据处理流程是一样的,都是如图2所示的流程。
图4示出了一种基于FPGA器件的数据处理方法的流程图。所述FPGA器件与服务器连接,包括至少一个功能模块,其中,每个功能模块用于执行与其对应的函数计算,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块与所述至少一个功能模块分别对应,所述至少一个汇聚模块中包括第一汇聚模块,所述第一汇聚模块与所述至少一个功能模块中的第一功能模块对应.所述方法在所述第一汇聚模块中执行,包括以下步骤S402-S406。
在步骤S402,获取分别来自多个进程的多组输入数据,以作为所述第一功能模块中包括的多个数据处理单元的输入。如图1示意示出,服务器中的多个进程通过调用汇聚模块1(即第一汇聚模块),将其各自的一组输入数据发送给第一汇聚模块。该多组输入数据将被发送给第一功能模块,并由第一功能模块中包括的多个数据处理单元分别对其进行相同的函数计算。
在步骤S404,基于所述多组输入数据获取数据包,所述数据包包括顺序排列的所述多组输入数据。数据包的一种示例形式如图3所示,其为通过顺序排列所述多组输入数据所获取的数据流。其中,每组输入数据例如包括3个数值,以用作第一功能模块中计算的函数的输入值。在对各个数据处理单元输入一组输入数据时,从该数据流中每次取出3个数值输入一个数据处理单元进行处理。该方法中的数据包不限于上述形式,对于输入数值的个数不确定的函数计算,在所述数据流中还可以在每组输入数据中嵌入起始位、结束位等等。或者,可对每组输入数据标上序号,并将其打包成数据包。
在步骤S406,将所述数据包发送给所述第一功能模块。如上文所述,在服务器与FPGA通过DMA控制器进行连接的情况下,第一汇聚模块通过调用DMA驱动,而从与第一功能模块对应的通道将数据包发送给第一功能模块。在其它接口的情况下,可依据接口的特性进行所述发送。
图5示出根据本说明书实施例的一种基于FPGA器件的数据处理方法的流程图。所述FPGA器件与服务器连接,包括至少一个功能模块,其中,每个功能模块用于执行与其对应的函数计算,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块与所述至少一个功能模块分别对应,所述至少一个汇聚模块中包括第一汇聚模块,所述第一汇聚模块与所述至少一个功能模块中的第一功能模块对应,所述第一汇聚模块中预备有顺序排列的多个第二地址。所述方法在所述第一汇聚模块中执行,包括以下步骤S502-S506。
在步骤S502,从所述第一功能模块依次接收通过图2所示方法依次输出的所述多组输出数据,其中,所述多组输出数据根据其被接收的先后顺序被存入所述多个第二地址中的从前至后的地址中,其中,所述多个第二地址的数目与所述多组输出数据的组数相同。图6示出了根据本说明书实施例的多个第二地址的示意图。其中包括N个第二地址,与多组输出数据的组数相同。如上文参考图2所述,根据多组输入数据在数据包中的排列顺序,依次输出多组输出数据,从而使得在多个第二地址接收多组输出数据的顺序与多组输入数据的排列顺序对应。通过将该多组输出数据以其输出顺序存入多个第二地址中的从前至后的地址中,从而可明确每个地址对应哪输入数据,即,可明确每个地址对应哪个进程(即输入数据对应的进程)。如图6所示,在N个第二地址中,第1个地址存储结果0(即输出数据0),其对应于图3中的输入数据0,第2个地址存储结果1(即输出数据1),其对应于图3中的输入数据1,类似地,结果2对应于输入数据2,结果N-1对应于输入数据N-1。
在步骤S504,从所述第一功能模块接收预定信号,以确定已接收全部所述多组输出数据。在一个实施例中,所述预定信号是预定电平信号。所述第一汇聚模块中还预备有与所述多个第二地址对应的标志位,如图6中的最右边的框所示。所述标志位被初始预置为第一预定值,例如,被预置为0(或者1)。从而,当从所述第一功能模块接收例如为1的预定电平信号时,该电平信号将将所述标志位置为第二预定值,即1,从而通知第一汇聚模块,已输出全部多组输出数据。然而,该标志位不是必需的,例如,在第一功能模块通过中断来通知第一汇聚模块的情况下,不需要该标志位。
在步骤S506,根据各组输出数据被存入的第二地址,将所述各组输出数据发送给对应的进程。如上文在步骤S502中所述,通过上述步骤S502,可确定各个第二地址所对应的进程,从而可将各个第二地址总存入的一组输出数据发送给对应的进程。
图4和图5以第一汇聚模块为例说明了在服务器端中的汇聚模块中的数据处理流程,可以理解,服务器端包括至少一个汇聚模块,其都与第一汇聚模块相同地执行图4和图5所示的数据处理方法流程。
图7示出了根据本说明书实施例的一种FPGA器件700,包括:
接口模块71,配置为,与外部进行通信;以及
至少一个功能模块72,其中,每个功能模块用于执行与其对应的函数计算,
其中,所述至少一个功能模块中包括第一功能模块72,所述第一功能模块配置为通过所述接口模块71获取与所述第一功能模块对应的数据包,所述数据包包括顺序排列的多组输入数据,其中,所述第一功能模块包括:
分发单元721,配置为,将所述多组输入数据分发给所述第一功能模块包括的多个数据处理单元;
多个数据处理单元(PE)722,其中,各个数据处理单元对输入其中的各组输入数据分别进行第一函数计算,以获得多组输出数据,其中所述第一函数计算为与所述第一功能模块对应的函数计算;以及
输出单元723,配置为,根据所述多组输入数据在数据包中的排列顺序,通过所述接口模块依次输出所述多组输出数据,以及,通过所述接口模块发送预定信号,以指示已输出全部所述多组输出数据。
其中,所述接口模块71为可编程输入输出单元,其通过软件的配置,可适配不同的电气标准与I/O物理特性。所述分发单元721、数据处理单元(PE)722和输出单元723都可通过FPGA器件中的可配置逻辑块(CLB)实现,其具体实现过程是本领域技术人员所公知的,在此不再赘述。
在一个实施例中,所述FPGA器件用于与服务器连接,其中,所述多组输入数据分别来自于所述服务器中的多个进程。
在一个实施例中,所述接口模块71包括DMA控制器,其中,所述第一功能模块还配置为,通过所述DMA控制器中与所述第一功能模块对应的通道从外部接收所述数据包。
在一个实施例中,所述第一功能模块72还包括FIFO缓存器724,配置为,存储通过所述接口模块获取的所述数据包,并将所述数据包输出给所述分发单元。
在一个实施例中,所述分发单元721还配置为,
根据所述多组输入数据在所述数据包中的排列顺序,对所述多组输入数据顺序分配序号i,其中i为从0开始的整数;
根据所述多组输入数据各自的序号i,将所述多组输入数据分别输入所述多个数据处理单元中空闲的数据处理单元,以处理所述多组输入数据。
在一个实施例中,所述输出单元723还包括随机存储器,所述随机存储器包括顺序排列的M个第一地址,其中,所述输出单元723还配置为:根据所述多组输入数据各自的序号i的顺序,对所述多组输出数据分别分配所述M个第一地址中的第(i mod M)+1个第一地址;将所述多组输出数据分别存入分配的第一地址;以及从所述M个第一地址顺序输出存入其中的各组输出数据。
在一个实施例中,所述输出单元723还配置为,发送预定电平信号,以指示已输出全部所述多组输出数据。
图8示出根据本说明书实施例的一种基于FPGA器件的数据处理装置800。所述FPGA器件与服务器连接,包括至少一个功能模块,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块中的第一汇聚模块与所述至少一个功能模块中的第一功能模块对应。所述装置800在所述第一汇聚模块中实施,包括:
第一获取单元81,配置为,获取分别来自多个进程的多组输入数据,以作为所述第一功能模块中包括的多个数据处理单元的输入;
第二获取单元82,配置为,基于所述多组输入数据获取数据包,所述数据包包括顺序排列的所述多组输入数据;以及
发送单元83,配置为,将所述数据包发送给所述第一功能模块。
在一个实施例中,所述FPGA器件通过其中的DMA控制器接收数据,所述服务器端包括DMA驱动,其中,所述发送单元83还配置为,调用所述DMA驱动,通过所述DMA控制器的与所述第一功能模块对应的通道将所述数据包发送给所述第一功能模块。
图9示出根据本说明书实施例的一种基于FPGA器件的数据处理装置900。所述FPGA器件与服务器连接,包括至少一个功能模块,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块中的第一汇聚模块与所述至少一个功能模块中的第一功能模块对应,所述第一汇聚模块中预备有顺序排列的多个第二地址。所述装置900在所述第一汇聚模块中实施,包括:
第一接收单元91,配置为,从所述第一功能模块依次接收通过图2所示的方法依次输出的所述多组输出数据,其中,所述多组输出数据根据其被接收的先后顺序被存入所述多个第二地址中的从前至后的地址中,其中,所述多个第二地址的数目与所述多组输出数据的组数相同;
第二接收单元92,配置为,从所述第一功能模块接收预定信号,以确定已接收全部所述多组输出数据;以及
发送单元93,配置为,根据各组输出数据被存入的第二地址,将所述各组输出数据发送给对应的进程。
在一个实施例中,所述第一汇聚模块中还预备有与所述多个第二地址对应的标志位,所述标志位被预置为第一预定值,其中,所述第二接收单元82还配置为:
从所述第一功能模块接收预定电平信号,以用于将所述标志位置为第二预定值,从而确定已接收全部所述多组输出数据。
通过根据本说明书实施例的FPGA器件及数据处理方法,通过在FPGA器件中的每个功能模块中设置多个数据处理单元(PE),可支持服务器中多个业务进程共同使用FPGA器件,以进行相同函数的加速;通过设置多个功能模块,可以对不同的函数进行加速,即实施不同的函数计算,满足了不同业务的需求;另外,通过本说明书实施例的方案,可减少服务器与FPGA器件的交互,提高了硬件性能。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种基于FPGA器件的数据处理方法,所述FPGA器件与服务器连接、包括至少一个功能模块,每个所述功能模块用于执行与其对应的函数计算,所述至少一个功能模块包括第一功能模块,所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块中的第一汇聚模块与所述至少一个功能模块中的第一功能模块对应,所述第一汇聚模块中预备有顺序排列的多个第二地址,所述方法包括:
第一功能模块进行以下操作:获取与所述第一功能模块对应的数据包,所述数据包包括顺序排列的多组输入数据;
将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元;
使用所述多个数据处理单元对输入其中的各组输入数据分别进行第一函数计算,以获得多组输出数据,其中所述第一函数计算为与所述第一功能模块对应的函数计算;
根据所述多组输入数据在所述数据包中的排列顺序,依次输出所述多组输出数据;以及
发送预定信号,以指示已输出全部所述多组输出数据;
第一汇聚模块进行以下操作:从所述第一功能模块依次接收所述多组输出数据,其中,所述多组输出数据根据其被接收的先后顺序被存入所述多个第二地址中的从前至后的地址中,其中,所述多个第二地址的数目与所述多组输出数据的组数相同;
从所述第一功能模块接收预定信号,以确定已接收全部所述多组输出数据;以及
根据各组输出数据被存入的第二地址,将所述各组输出数据发送给对应的进程。
2.根据权利要求1所述的数据处理方法,其中,所述多组输入数据分别来自于所述服务器中的多个进程。
3.根据权利要求1所述的数据处理方法,其中,所述FPGA器件还包括DMA控制器,其中获取与所述第一功能模块对应的数据包包括,通过所述DMA控制器中的与所述第一功能模块对应的通道从外部接收数据包。
4.根据权利要求1所述的数据处理方法,其中,所述第一功能模块还包括FIFO缓存器,所述方法还包括,在获取与所述第一功能模块对应的数据包之后,将所述数据包存入所述FIFO缓存器中,以用于向所述多个数据处理单元分发所述多组输入数据。
5.根据权利要求1所述的数据处理方法,其中,将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元包括:
根据所述多组输入数据在所述数据包中的排列顺序,对所述多组输入数据顺序分配序号i,其中i为从0开始的整数;
根据所述多组输入数据各自的序号i的顺序,将所述多组输入数据分别输入所述多个数据处理单元中空闲的数据处理单元。
6.根据权利要求5所述的数据处理方法,其中,所述第一功能模块还包括随机存储器,所述随机存储器包括顺序排列的M个第一地址,其中,根据所述多组输入数据在所述数据包中的排列顺序,依次输出所述多组输出数据包括:
根据所述多组输入数据各自的序号i,对所述多组输出数据分别分配所述M个第一地址中的第(i mod M)+1个第一地址;
将所述多组输出数据分别存入分配的第一地址;以及
从所述M个第一地址顺序输出存入其中的各组输出数据。
7.根据权利要求1所述的数据处理方法,其中,发送预定信号,以指示已输出全部所述多组输出数据包括,发送预定电平信号,以指示已输出全部所述多组输出数据。
8.根据权利要求1所述的数据处理方法,其中,所述第一汇聚模块中还预备有与所述多个第二地址对应的标志位,所述标志位被预置为第一预定值,其中,从所述第一功能模块接收预定信号,以确定已接收全部所述多组输出数据包括:
从所述第一功能模块接收预定电平信号,以用于将所述标志位置为第二预定值,从而确定已接收全部所述多组输出数据。
9.一种基于FPGA器件的数据处理装置,所述FPGA器件与服务器连接,
所述FPGA器件,包括:
接口模块,配置为,与外部进行通信;以及
至少一个功能模块,其中,每个功能模块用于执行与其对应的函数计算,
其中,所述至少一个功能模块中包括第一功能模块,所述第一功能模块配置为通过所述接口模块获取与所述第一功能模块对应的数据包,所述数据包包括顺序排列的多组输入数据,其中,所述第一功能模块包括:
分发单元,配置为,将所述多组输入数据分发给所述第一功能模块中包括的多个数据处理单元;
多个数据处理单元,其中,各个数据处理单元配置为对输入其中的各组输入数据分别进行第一函数计算,以获得多组输出数据,其中所述第一函数计算为与所述第一功能模块对应的函数计算;以及
输出单元,配置为,根据所述多组输入数据在数据包中的排列顺序,通过所述接口模块依次输出所述多组输出数据,以及,通过所述接口模块发送预定信号,以指示已输出全部所述多组输出数据;
所述服务器中包括至少一个汇聚模块,其中所述至少一个汇聚模块中的第一汇聚模块与所述至少一个功能模块中的第一功能模块对应,所述第一汇聚模块中预备有顺序排列的多个第二地址,所述装置在所述第一汇聚模块中实施,包括:
第一接收单元,配置为,从所述第一功能模块依次接收所述多组输出数据,其中,所述多组输出数据根据其被接收的先后顺序被存入所述多个第二地址中的从前至后的地址中,其中,所述多个第二地址的数目与所述多组输出数据的组数相同;
第二接收单元,配置为,从所述第一功能模块接收预定信号,以确定已接收全部所述多组输出数据;以及
发送单元,配置为,根据各组输出数据被存入的第二地址,将所述各组输出数据发送给对应的进程。
10.根据权利要求9所述的FPGA器件,其中,所述多组输入数据分别来自于所述服务器中的多个进程。
11.根据权利要求9所述的FPGA器件,其中,所述接口模块包括DMA控制器,其中,所述第一功能模块还配置为,通过所述DMA控制器中与所述第一功能模块对应的通道从外部接收所述数据包。
12.根据权利要求9所述的FPGA器件,其中,所述第一功能模块还包括FIFO缓存器,配置为,存储通过所述接口模块获取的所述数据包,并将所述数据包输出给所述分发单元。
13.根据权利要求9所述的FPGA器件,所述分发单元还配置为,
根据所述多组输入数据在所述数据包中的排列顺序,对所述多组输入数据顺序分配序号i,其中i为从0开始的整数;
根据所述多组输入数据各自的序号i的顺序,将所述多组输入数据分别输入所述多个数据处理单元中空闲的数据处理单元,以处理所述多组输入数据。
14.根据权利要求13所述的FPGA器件,其中,所述输出单元还包括随机存储器,所述随机存储器包括顺序排列的M个第一地址,其中,所述输出单元还配置为:
根据所述多组输入数据各自的序号i,对所述多组输出数据分别分配所述M个第一地址中的第(i mod M)+1个第一地址;
将所述多组输出数据分别存入分配的第一地址;以及
从所述M个第一地址顺序输出存入其中的各组输出数据。
15.根据权利要求9所述的FPGA器件,其中,所述输出单元还配置为,发送预定电平信号,以指示已输出全部所述多组输出数据。
16.根据权利要求9所述的数据处理装置,其中,所述第一汇聚模块中还预备有与所述多个第二地址对应的标志位,所述标志位被预置为第一预定值,其中,所述第二接收单元还配置为:
从所述第一功能模块接收预定电平信号,以用于将所述标志位置为第二预定值,从而确定已接收全部所述多组输出数据。
CN201810783754.7A 2018-07-17 2018-07-17 Fpga器件及基于其的数据处理方法 Active CN109032010B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810783754.7A CN109032010B (zh) 2018-07-17 2018-07-17 Fpga器件及基于其的数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810783754.7A CN109032010B (zh) 2018-07-17 2018-07-17 Fpga器件及基于其的数据处理方法

Publications (2)

Publication Number Publication Date
CN109032010A CN109032010A (zh) 2018-12-18
CN109032010B true CN109032010B (zh) 2021-04-20

Family

ID=64643535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810783754.7A Active CN109032010B (zh) 2018-07-17 2018-07-17 Fpga器件及基于其的数据处理方法

Country Status (1)

Country Link
CN (1) CN109032010B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110083461B (zh) * 2019-03-29 2021-09-24 郑州信大捷安信息技术股份有限公司 一种基于fpga的多任务处理系统及方法
CN110222519B (zh) * 2019-06-05 2021-02-05 郑州信大捷安信息技术股份有限公司 一种可配置通道的数据处理系统及方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014154935A (ja) * 2013-02-05 2014-08-25 Ricoh Co Ltd 再構成可能デバイス、及びそれを備えた画像形成装置
CN104102604B (zh) * 2013-04-12 2017-07-04 杭州迪普科技股份有限公司 一种业务处理装置
CN105579959B (zh) * 2013-09-24 2019-06-07 渥太华大学 硬件加速器虚拟化
CN105260164B (zh) * 2015-09-25 2017-05-10 北京航空航天大学 一种支持多任务并行的多核SoC架构设计方法
CN105224482B (zh) * 2015-10-16 2018-05-25 浪潮(北京)电子信息产业有限公司 一种fpga加速卡高速存储系统
CN205507633U (zh) * 2016-03-31 2016-08-24 无锡市同威软件有限公司 一种基于FPGA的高性能运算PCI-e加速卡
CN105868388B (zh) * 2016-04-14 2019-03-19 中国人民大学 一种基于fpga的内存olap查询优化方法
CN106502935A (zh) * 2016-11-04 2017-03-15 郑州云海信息技术有限公司 Fpga异构加速系统、数据传输方法及fpga
CN107423030A (zh) * 2017-07-28 2017-12-01 郑州云海信息技术有限公司 基于fpga异构平台的马尔科夫蒙特卡洛算法加速方法
CN107679409B (zh) * 2017-09-29 2021-02-23 深圳大学 一种数据加密的加速方法和系统

Also Published As

Publication number Publication date
CN109032010A (zh) 2018-12-18

Similar Documents

Publication Publication Date Title
CN105511954B (zh) 一种报文处理方法及装置
US10341264B2 (en) Technologies for scalable packet reception and transmission
CN110291502B (zh) 一种调度加速资源的方法、装置及加速系统
CN109032010B (zh) Fpga器件及基于其的数据处理方法
CN109902059B (zh) 一种cpu与gpu之间的数据传输方法
US11671678B2 (en) Method and device, equipment, and storage medium for data processing
CN113031920B (zh) 一种芯片和用于芯片的批量模运算方法
CN106685429B (zh) 整数压缩方法及装置
CN105094981A (zh) 一种数据处理的方法及装置
CN111338787B (zh) 一种数据处理方法及装置、存储介质、电子装置
CN113986969A (zh) 数据处理方法、装置、电子设备和存储介质
CN111475250A (zh) 一种云环境下的网络优化方法和装置
KR20160037737A (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
CN116070240B (zh) 多芯片调用机制的数据加密处理方法及装置
CN115795522A (zh) 多核并发的高速密码引擎数据处理方法及装置
CN115801221A (zh) 加速设备、计算系统及加速方法
CN114328619A (zh) 多要素数据匹配方法及装置
CN107562670B (zh) 一种利用串口传输数据的方法及装置
CN112114971A (zh) 一种任务分配方法、装置及设备
CN110618966A (zh) 一种报文的处理方法、装置及电子设备
CN110912832A (zh) 流量负载均衡的处理方法、装置、电子设备及存储介质
CN115866092B (zh) 数据转发方法、装置、设备及存储介质
CN115002133B (zh) 基于多个接口的数据传输确定方法及装置
RU2781916C1 (ru) Способ модификации данных при сетевой пакетной коммутации
CN114827016B (zh) 切换链路聚合方案的方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40001881

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200930

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200930

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

GR01 Patent grant
GR01 Patent grant