一种数据处理方法、装置、系统和FPGA与流程

文档序号:22759277发布日期:2020-10-31 09:57阅读:107来源:国知局
一种数据处理方法、装置、系统和FPGA与流程

本申请涉及数据处理技术领域,特别涉及一种数据处理方法、装置、系统和fpga。



背景技术:

由于fpga具有高吞吐能力,低延时的优势,因此在数据加速领域有着广泛的应用。但是经过fpga处理的数据结果最终需要传递服务器中进行更高层的处理或数据保存,当fpga板卡所产生数据量远大于cpu数据处理能力的时候,例如在fpga云的应用场景下就可能会造成数据包的丢失或积压。相关技术为了避免数据包的丢失或者挤压采用dma进行数据传输,但是数据传输后,单个cpu处理能力差,不能够有效的进行数据处理。

因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。



技术实现要素:

本申请的目的是提供一种数据处理方法、装置、fpga和系统,实现了多核的分布式数据处理,并且基于调度算法保证了每个从核处理数据的均匀性,加快了数据处理速度。其具体方案如下:

本申请提供了一种数据处理方法,包括:

fpga接收到待处理数据,并从处理状态寄存器中读取所有的从核处理状态信息;

根据所述从核处理状态信息利用调度算法确定多个目标起始地址;

根据所述目标起始地址将所述待处理数据映射到用户空间对应的数据映射区域中,以使目标从核从与所述数据映射区域中对应的所述目标起始地址中获取并处理所述待处理数据。

优选地,所述根据所述目标起始地址将所述待处理数据映射到用户空间对应的数据映射区域中,包括:

根据所述目标起始地址将所述待处理数据以dma方式映射到所述用户空间对应的所述数据映射区域中。

优选地,所述从处理状态寄存器中读取所有的从核处理状态信息之前,还包括:

通过pcie接口从fpga设备驱动获取所有从核的控制信息,并存储至信息区域;其中,所述控制信息是主核发送至所述fpga设备驱动的信息,所述控制信息包括所述从核的总数和对应的起始地址。

优选地,所述根据所述目标起始地址将所述待处理数据映射到用户空间对应的数据映射区域中之后,还包括:

当所述目标从核根据传输信息处理完成所述待处理数据后,所述fpga更新所述数据映射区域中的所述处理状态寄存器;所述传输信息是所述目标从核轮询传输状态寄存器后得到的信息。

优选地,所述数据映射区域中的从核对应的地址采用乒乓缓存结构。

优选地,所述fpga接收到待处理数据之前,还包括:

主核将fpga设备地址空间映射到所述用户空间对应的所述数据映射区域中,以使所述从核访问所述fpga设备地址空间;

将所述数据映射区域划分成多个地址对应的地址空间;

启动多个数据处理线程,并将所述数据处理线程绑定到对应的所述从核,以使所述从核根据所述数据处理线程并行的进行数据处理。

优选地,所述主核将fpga设备地址空间映射到所述用户空间对应的所述数据映射区域中之前,还包括:

当所述主核检测到所述fpga插入时,所述主核加载所述fpga设备驱动;

当所述fpga设备驱动挂载后,所述主核获取所述控制信息。

本申请提供了一种数据处理装置,包括:

接收与读取模块,用于fpga接收到待处理数据,并从处理状态寄存器中读取所有的从核处理状态信息;

目标起始地址确定模块,用于根据所述从核处理状态信息利用调度算法确定多个目标起始地址;

映射模块,用于根据所述目标起始地址将所述待处理数据映射到用户空间对应的数据映射区域中,以使目标从核从与所述数据映射区域中对应的所述目标起始地址中获取并处理所述待处理数据。

本申请提供了一种fpga,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上所述数据处理方法的步骤。

本申请提供了一种数据处理系统,包括:

服务器和如上所述的fpga;

所述服务器包括:主核和多个从核。

本申请提供了一种数据处理方法,包括:fpga接收到待处理数据,并从处理状态寄存器中读取所有的从核处理状态信息;根据从核处理状态信息利用调度算法确定多个目标起始地址;根据目标起始地址将待处理数据映射到用户空间对应的数据映射区域中,以使目标从核从与数据映射区域中对应的目标起始地址中获取并处理待处理数据。

可见,本申请通过基于所有的从核处理状态信息,利用调度算法确定目标起始地址,目标起始地址与目标从核对应,然后fpga将待处理数据映射到与目标起始地址对应的数据映射空间中,以使从核能够分布式处理待处理数据,基于调度算法保证了每个从核处理数据的均匀性,加快了数据处理速度。

本申请同时还提供了一种数据处理装置、fpga、数据处理系统,均具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种数据处理方法的流程图;

图2为本申请实施例提供的一种数据处理的流程图;

图3为本申请实施例所提供的一种数据处理装置的结构示意图;

图4为本申请实施例提供的一种fpga的结构示意图;

图5为本申请实施例提供的另一种fpga的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

相关技术为了避免数据包的丢失或者挤压采用dma进行数据传输,但是数据传输后,单个cpu处理能力差,不能够有效的进行数据处理。基于上述技术问题,本实施例提供一种数据处理方法,实现了多核的分布式数据处理,并且基于调度算法保证了每个从核处理数据的均匀性,加快了数据处理速度,具体请参考图1,图1为本申请实施例所提供的一种数据处理方法的流程图,具体包括:

s101、fpga接收到待处理数据,并从处理状态寄存器中读取所有的从核处理状态信息;

本实施例中主要执行主体是fpga。本实施例中提供的数据处理方法对应的数据处理系统,包括服务器和fpga,其中,服务器包括主核、多个从核。主核即主控cpu核,用来打开并初始化fpga设备,启动多个数据处理线程,绑定数据处理线程到其他从核;从核用于运行数据处理线程,以便对待处理数据进行处理。可以理解的是,服务器还包括数据映射区域,该数据映射区域是存储装置,优选的,数据映射区域是mem,当然还可以是其他存储装置,只要是能够实现本实施例的目的即可,数据映射区域进行内存划分,开始的4kb作为寄存器区域(包含数据传输状态,处理状态,可用地址等相关信息),剩余部分作为数据传递区域。本实施例中设置映射关系,以使从核通过访问数据映射区域来访问fpga设备内存,保证了数据的安全性。

本申请不对待处理数据的数据类型及大小进行限定,用户可自定义确定,只要是能够实现本实施例的目的即可。处理状态寄存器是数据映射区域中存储的每一个从核的从核处理状态信息,该从核处理状态信息包括但是不限定于处理情况、数据处理频次、可用的地址。

进一步的,为了高效的数据传输,具体的,从处理状态寄存器中读取所有的从核处理状态信息之前,还包括:

通过pcie接口从fpga设备驱动获取所有从核的控制信息,并存储至信息区域;其中,控制信息是主核发送至fpga设备驱动的信息,控制信息包括从核的总数和对应的起始地址。

其中,本实施例中fpga设备中划分为信息区域(ipcore-ctrl)和数据传输区域(dma),信息区域主要是进行信息的交互,具体可以是从fpga设备驱动获取所有从核的控制信息,该控制信息包括但是不限定于从核的总数和对应起始地址,其中,所有的起始地址中包括目标起始地址。具体的,可以是从核将申请的起始地址发送至主核,主核将对应的控制信息发送至fpga设备驱动中,fpga设备驱动通过pcie接口将控制信息发送至fpga。可见,本实施例中通过将fpga设备划分为两部分,两部分处理对应的数据,避免了相关技术中不对数据进行区分就直接处理造成的效率低得问题的发生。

s102、根据从核处理状态信息利用调度算法确定多个目标起始地址;

其中,根据所有的从核处理状态信息利用调度算法确定多个目标起始地址,目标起始地址对应于数据映射区域中的地址,每一个目标起始地址对应有一个从核。举例说明,当从核总量为5时,那么用户空间对应的数据映射区域划分为5份,每一份对应有一个从核。当从核处理状态信息中确定可以使用从核1、从核2,则得到数据传递的地址即目标起始地址。本实施例不对调度算法进行限定,用户可根据实际需求进行选择,请参考相关技术,只要是能够实现单核的数据处理更加均匀的目的即可,本实施例不再赘述。

s103、根据目标起始地址将待处理数据映射到用户空间对应的数据映射区域中,以使目标从核从与数据映射区域中对应的目标起始地址中获取并处理待处理数据。

根据目标起始地址将待处理数据放到对应的区域中,此时,更新传输状态寄存,以使目标从核对应的数据处理线程轮询传输状态寄存器后,当查看到有数据需要处理,以便进行分布式数据处理,同时,可以更新处理状态寄存器。

进一步的,为了避免数据的搬运,具体的根据目标起始地址将待处理数据映射到用户空间对应的数据映射区域中,包括:根据目标起始地址将待处理数据以dma方式映射到用户空间对应的数据映射区域中。可见,本实施例中采用dma方式进行数据传输,避免了数据的搬运。

进一步的,为了保障能够精准的实现从核的调度,具体的根据目标起始地址将待处理数据映射到用户空间对应的数据映射区域中之后,还包括:当目标从核根据传输信息处理完成待处理数据后,fpga更新数据映射区域中的处理状态寄存器;传输信息是目标从核轮询传输状态寄存器后得到的信息。

可见,本实施例中实施实施更新处理状态寄存器,以便能够获取准确地获取从核处理状态信息,保证调度结果的可靠性。

进一步的,数据映射区域中的从核对应的地址采用乒乓缓存结构。可以理解的是,本实施例中,约定每个从核所用地址均需要分为乒乓区域,作为数据在单核内部的缓存,可以在处理数据的同时,另一个区域传输数据,提高效率。

基于上述技术方案,本实施例通过基于所有的从核处理状态信息,利用调度算法确定目标起始地址,目标起始地址与目标从核对应,然后fpga将待处理数据映射到与目标起始地址对应的数据映射空间中,以使从核能够分布式处理待处理数据,基于调度算法保证了每个从核处理数据的均匀性,加快了数据处理速度

进一步的,fpga接收到待处理数据之前,还包括:主核将fpga设备地址空间映射到用户空间对应的数据映射区域中,以使从核访问fpga设备地址空间;将数据映射区域划分成多个地址对应的地址空间;启动多个数据处理线程,并将数据处理线程绑定到对应的从核,以使从核根据数据处理线程并行的进行数据处理。

可以理解的是,本实施例可以是在linux系统中,主核使用map函数将fpga设备地址空间映射到用户空间,可以直接操作fpga设备的数据,具体是采用将业务处理函数分解到多个数据处理线程,数据处理线分别绑定到指定的从核,以使对应的从核对待处理数据进行并行处理。

进一步的,主核将fpga设备地址空间映射到用户空间对应的数据映射区域中之前,还包括:当主核检测到fpga插入时,主核加载fpga设备驱动;当fpga设备驱动挂载后,主核获取控制信息。

基于上述任一实施例,本实施例提供一种具体的数据处理流程,请参考图2,图2为本申请实施例提供的一种数据处理的流程图,包括;

约定每个从核所用地址均需要分为乒乓区域,作为数据在单核内部的缓存;

1、主核加载fpga设备驱动;

2、主核打开设备,初始化内核数量、寄存器状态等信息;

3、主核将fpga设备地址空间映射到用户空间,并平均划分用户空间对应的数据映射区域;

4、主核启动多个数据处理线程分别绑定到多个从核,获取每一个从核的所用数据映射区域的起始地址;

5、从核的数据处理线程通过轮询“传输状态寄存器”的状态,查看是否有待处理数据需要处理,当有待处理数据时需要更新“处理状态寄存器”;

6、fpga端需要根据“处理状态寄存器”,结合保证调度算法,判断dma下一次传输的目标起始地址,同时更新“传输状态寄存器”。

本实施例提出了一种基于多核绑定技术的fpga板卡数据快速处理方法,使用多核绑定技术并行处理fpga数据,并在fpga端使用保证调度算法使单核的数据处理更加均匀。可见,本实施例将数据处理线程分别并绑定到多核,分布式处理数据,加快了数据处理速度;fpga端通过对“处理状态寄存器”的判断以及保证调度算法,使单核的数据处理更加均匀,本实施例还提高了;fpga板卡数据的处理能力,避免了数据丢包,使得板卡在实际应用场景中更加稳定。

下面对本申请实施例提供的一种数据处理装置进行介绍,下文描述的数据处理装置与上文描述的数据处理方法可相互对应参照,参考图3,图3为本申请实施例所提供的一种数据处理装置的结构示意图,包括:

接收与读取模块301,用于fpga接收到待处理数据,并从处理状态寄存器中读取所有的从核处理状态信息;

目标起始地址确定模块302,用于根据从核处理状态信息利用调度算法确定多个目标起始地址;

映射模块303,用于根据目标起始地址将待处理数据映射到用户空间对应的数据映射区域中,以使目标从核从与数据映射区域中对应的目标起始地址中获取并处理待处理数据。

优选地,映射模块303,包括:

映射单元,用于根据目标起始地址将待处理数据以dma方式映射到用户空间对应的数据映射区域中。

优选地,还包括:

存储模块,用于通过pcie接口从fpga设备驱动获取所有从核的控制信息,并存储至信息区域;其中,控制信息是主核发送至fpga设备驱动的信息,控制信息包括从核的总数和对应的起始地址。

优选地,还包括:

更新模块,用于当目标从核根据传输信息处理完成待处理数据后,fpga更新数据映射区域中的处理状态寄存器;传输信息是目标从核轮询传输状态寄存器后得到的信息。

优选地,数据映射区域中的从核对应的地址采用乒乓缓存结构。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

下面对本申请实施例提供的一种fpga进行介绍,下文描述的fpga与上文描述的数据处理方法可相互对应参照。

图4为本申请实施例提供的一种fpga的结构示意图,包括:

存储器401,用于存储计算机程序;

处理器402,用于执行计算机程序时实现如上述数据处理方法的步骤。具体的,存储器401包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器402在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,为fpga提供计算和控制能力,执行存储器401中保存的计算机程序时,可以实现前述任一实施例公开的数据处理方法的步骤。

在上述实施例的基础上,作为优选实施方式,参见图5所示,图5为本申请实施例提供的另一种fpga的结构示意图,fpga还包括:

输入接口403,与处理器402相连,用于获取外部导入的计算机程序、参数和指令,经处理器402控制保存至存储器401中。该输入接口403可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。

显示单元404,与处理器402相连,用于显示处理器402处理的数据以及用于显示可视化的用户界面。该显示单元404可以为led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。

网络端口405,与处理器402相连,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术等。

图5仅示出了具有组件401-405的fpga,本领域技术人员可以理解的是,图5示出的结构并不构成对fpga的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

由于fpga部分的实施例与数据处理方法部分的实施例相互对应,因此fpga部分的实施例请参见数据处理方法部分的实施例的描述,这里暂不赘述。

下面对本申请实施例提供的一种数据处理系统进行介绍,下文描述的数据处理系统与上文描述的方法可相互对应参照。

本实施例提供一种数据处理系统,包括:服务器和如上述的fpga;服务器包括:主核和多个从核。

本实施例不对从核的数量进行限定,只要是能够实现本实施例的目的即可。

由于数据处理系统部分的实施例与方法部分的实施例相互对应,因此数据处理系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种数据处理方法、装置、系统和fpga及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

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