掌桥专利:专业的专利平台
掌桥专利
首页

用于隐私计算的FPGA芯片、异构处理系统及计算方法

文献发布时间:2023-06-19 12:00:51


用于隐私计算的FPGA芯片、异构处理系统及计算方法

技术领域

本申请涉及隐私计算领域,尤其涉及一种用于隐私计算的FPGA芯片、隐私计算异构处理系统及计算方法。

背景技术

FPGA芯片是一种可编程设计的硬件芯片,具有高灵活性、高并行度和低延迟处理的特点。由于计算能力强、延迟低等特点,FPGA芯片在各个领域都发挥着重要的作用,特别是在异构计算领域,FPGA芯片能极大地缓解算法的算力瓶颈。异构隐私计算异构处理系统中,FPGA芯片和上位机通过硬件接口如PCIe进行数据交换,这会产生一定的传输延迟。在机器学习等应用场景中,训练数据往往需要通过多次迭代计算,才能得到最终结果,这也就意味着在训练的过程中,上位机和FPGA芯片之间需要进行多次数据交换,而进行的数据传输越多,造成的时间损耗也就越多。

发明内容

本申请提供了一种用于隐私计算的FPGA芯片、隐私计算异构处理系统及计算方法,以解决上位机和FPGA芯片多次数据传输造成时间损耗的问题。

第一方面,本申请提供了一种用于隐私计算的FPGA芯片,所述FPGA芯片包括:任务管理模块、计算模块、存储器;

所述存储器用于保存上位机发送的源数据;

所述任务管理模块用于接收所述上位机发送的任务信息,根据所述任务信息从所述存储器中读取所述源数据,并发送给所述计算模块;

所述计算模块用于对所述源数据进行计算,得到结果数据;

所述任务管理模块还用于将所述结果数据保存至所述存储器,并根据所述上位机的任务信息读取所述结果数据作为部分源数据或全部源数据进行下次计算。

该FPGA芯片通过把计算的结果数据存储在FPGA芯片的存储器上,在下次执行计算任务时由FPGA芯片从存储器上提取出继续用于执行计算任务,从而减少大量不必要的数据传输,提高了计算效率,且缓解了上位机存储空间的压力。

在一可选的FPGA芯片中,所述任务管理模块包括:读写控制单元、FIFO任务队列缓存、多个寄存器、读数据FIFO和写数据FIFO;

所述FIFO任务队列缓存用于缓存从所述上位机接收的任务信息;

所述读写控制单元用于在检测到所述FIFO任务队列缓存非空时,读取并解析所述任务信息得到任务解析结果,将所述任务解析结果存入所述多个寄存器;

所述读写控制单元还用于根据所述任务解析结果通过所述读数据FIFO从所述存储器读取源数据发送给所述计算模块,以及通过所述写数据FIFO将所述计算模块进行计算得到的结果数据保存至所述存储器。

由此通过在FPGA芯片内设计任务管理模块,FPGA芯片能实现自动解析任务,在FPGA芯片内部实现任务源数据的读取和结果数据的存储,减少了和上位机之间的数据交互,提高了运算效率。

在一可选的FPGA芯片中,所述读数据FIFO的数量为多个,所述写数据FIFO的数量为一个;

所述读写控制单元根据所述任务解析结果确定待读取的源数据的目标数量,从多个所述读数据FIFO选择与所述目标数量对应数量的读数据FIFO从所述存储器读取所述源数据并发送给所述计算模块进行计算,以及通过所述写数据FIFO将结果数据发送给存储器。由于在大部分场景中,需要被执行的都是多元运算,通过在FPGA芯片内设计多个读数据FIFO,实现同时读取多个源数据用于运算,使得FPGA芯片能满足复杂的多元运算场景的需求。

在一可选的FPGA芯片中,所述任务信息包括结果数据的存储地址,所述任务管理模块还用于根据所述结果数据的存储地址将所述结果数据保存至所述存储器。通过在任务信息中发送结果数据的存储地址,上位机可实现管理FPGA芯片对结果的暂存,FPGA芯片也可根据该结果数据的存储地址基于任务的需求读取该结果数据用于下次计算或者读取后发送给上位机。

第二方面,本申请提供了另一种隐私计算的FPGA芯片,所述FPGA芯片包括:任务管理模块、计算模块和存储器;

所述存储器用于接收并保存上位机发送的明文数据;

所述任务管理模块用于接收所述上位机发送的任务信息,根据所述任务信息从所述存储器中读取所述明文数据,并发送给所述计算模块;

所述计算模块用于对所述明文数据进行加密运算,得到第一加密结果;

所述任务管理模块还用于将所述第一加密结果保存至所述存储器;

所述存储器还用于接收并保存上位机发送的密文数据;

所述任务管理模块还用于根据所述上位机的任务信息读取所述密文数据和所述第一加密结果发送给所述计算模块进行加密运算,并将所述计算模块得到的第二加密结果保存至所述存储器中;

所述任务管理模块还用于根据所述上位机的任务信息,持续执行从所述存储器中读取上位机发送的明文数据或密文数据发送给所述计算模块进行加密运算,并将运算结果保存至所述存储器中,作为后续加密运算的部分源数据或全部源数据,直至得到需要的目标结果数据。

在一可选的FPGA芯片中,将所述FPGA芯片用于隐私计算的梯度计算任务时,所述加密运算还包括密态加法运算、密态乘法运算和明文乘法运算。

在隐私计算任务中,往往需要多次运算才能得到目标结果数据,且在先运算的中间结果往往需作为部分源数据或全部源数据用于后续的加密运算,通过将中间结果暂存在FPGA芯片的存储器,任务管理模块根据任务信息直接读取存储器中所需用于计算的中间结果用于后续计算,减少了和上位机之间的数据交互,提高了计算效率。

第三方面,本申请还提供了一种使用FPGA芯片的隐私计算异构处理系统,所述使用FPGA芯片的隐私计算异构处理系统包括:上位机和FPGA芯片,所述FPGA芯片包括存储器、任务管理模块和计算模块;

所述上位机将源数据保存至所述存储器,以及向所述任务管理模块发送任务信息;

所述任务管理模块根据所述任务信息从所述存储器中读取所述源数据,并发送给所述计算模块;

所述计算模块对所述源数据进行计算,得到结果数据;

所述任务管理模块将所述结果数据保存至所述存储器,并根据所述上位机的任务信息读取所述结果数据作为部分源数据或全部源数据进行下次计算。

在一可选的使用FPGA芯片的隐私计算异构处理系统中,所述任务管理模块包括:读写控制单元、FIFO任务队列缓存、多个寄存器、读数据FIFO和写数据FIFO;

所述FIFO任务队列缓存用于缓存从所述上位机接收的任务信息;

所述读写控制单元在检测到所述FIFO任务队列缓存非空时,读取并解析所述任务信息得到任务解析结果,将所述任务解析结果存入所述多个寄存器;

所述读写控制单元还根据所述任务解析结果通过所述读数据FIFO从所述存储器读取源数据发送给所述计算模块,以及通过所述写数据FIFO将所述计算模块进行计算得到的结果数据保存至所述存储器。

通过在FPGA芯片内设计任务管理模块,FPGA芯片能实现自动解析任务,在FPGA芯片内部实现任务源数据的读取和结果数据的存储,减少了和上位机之间的数据交互,提高了隐私计算异构处理系统的运算效率。

在一可选的使用FPGA芯片的隐私计算异构处理系统中,所述读数据FIFO的数量为多个,所述写数据FIFO的数量为一个;

所述读写控制单元根据所述任务解析结果确定待读取的源数据的目标数量,从多个所述读数据FIFO选择与所述目标数量对应数量的读数据FIFO从所述存储器读取所述源数据并发送给所述计算模块进行计算,以及通过所述写数据FIFO将结果数据发送给存储器。

由于在大部分场景中,隐私计算异构处理系统需要完成的都是多元运算,通过在FPGA芯片内设计多个读数据FIFO,实现同时读取多个源数据用于运算,使得FPGA芯片能满足复杂的多元运算场景的需求。

在一可选的使用FPGA芯片的隐私计算异构处理系统中,所述任务信息包括结果数据的存储地址,所述任务管理模块根据所述结果数据的存储地址将所述结果数据保存至所述存储器。通过在任务信息中发送结果数据的存储地址,上位机可实现管理FPGA芯片中结果的暂存,FPGA芯片也可根据该结果数据的存储地址基于任务的需求读取该结果数据用于下次计算或者读取后发送给上位机。

在一可选的使用FPGA芯片的隐私计算异构处理系统中,所述上位机包括:所述存储器的存储空间占用表,所述存储空间占用表用于记录所述存储器的空间使用情况;所述上位机通过所述存储空间占用表对所述存储器的存储空间进行管理。

在一可选的使用FPGA芯片的隐私计算异构处理系统中,所述上位机通过所述存储空间占用表对所述存储器的存储空间进行管理,包括:

根据存储空间分配请求从所述存储空间占用表分配存储空间,并生成存储空间对应的存储地址;和/或,根据存储空间释放请求在所述存储空间占用表中释放存储地址对应的存储空间,并生成存储空间释放的反馈信息。

由此可以通过存储空间占用表,上位机能够实现对FPGA芯片的存储资源进行管理,从而实现源数据和结果数据在FPGA芯片的存储器的暂存,利用了FPGA芯片的存储容量,减少了上位机的存储压力。

第四方面,本申请还提供了一种计算方法,应用于本申请实施例提供的任一项所述的FPGA芯片,所述方法包括:

通过所述存储器保存上位机发送的源数据;

通过所述任务管理模块接收所述上位机发送的任务信息,根据所述任务信息从所述存储器中读取所述源数据,并发送给所述计算模块;

通过所述计算模块对所述源数据进行计算,得到结果数据;

通过所述任务管理模块将所述结果数据保存至所述存储器,并根据所述上位机的任务信息读取所述结果数据作为部分源数据或全部源数据进行下次计算。

本申请公开的用于隐私计算的FPGA芯片、使用FPGA芯片的隐私计算异构处理系统及计算方法,能够充分利用FPGA芯片的存储能力,把计算的结果数据存储在FPGA芯片的存储器上,在下次执行计算任务时由FPGA芯片从存储器上提取出继续用于执行计算任务,从而减少大量不必要的数据传输,提高了计算效率,且缓解了上位机存储空间的压力。

附图说明

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

图1是本申请的实施例提供的一种使用FPGA芯片的隐私计算异构处理系统的示意性框图;

图2是本申请的实施例提供的一种任务管理模块的示意性框图;

图3是本申请的实施例提供的另一种任务管理模块的示意性框图;

图4是本申请的实施例提供的计算任务处理流程的示意图;

图5是本申请的实施例提供的又一种使用FPGA芯片的隐私计算异构处理系统的示意性框图;

图6是本申请的实施例提供的一种FPGA芯片的示意性框图;

图7是本申请的实施例提供的一种计算方法的示意流程图。

具体实施方式

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

附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。

应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

本申请的实施例提供了一种FPGA芯片、使用FPGA芯片的隐私计算异构处理系统及计算方法。该FPGA芯片可以实现把计算的结果数据存储在FPGA芯片的存储器上,在下次执行计算任务从存储器上提取出继续用于执行计算任务,由此可以有效地减少上位机和FPGA芯片之间的数据交换,从而降低计算过程中时间的损耗。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

请参阅图1,图1是本申请的实施例提供的一种使用FPGA芯片的隐私计算异构处理系统的示意性框图。该隐私计算异构处理系统可应用于联邦学习隐私计算,实现计算结果数据在FPGA芯片内部存储器的存储,并支持在下次计算时由FPGA芯片提取和继续使用结果数据,以减少FPGA芯片和上位机之间的数据交互,降低由于多次数据交互而给计算任务带来的时间损耗。

如图1所示,该隐私计算异构处理系统包括FPGA芯片10和上位机20,FPGA芯片10包括存储器101、任务管理模块102、计算模块103。其中,上位机20将源数据保存至存储器101,以及向任务管理模块102发送任务信息;任务管理模块102根据任务信息从存储器101中读取源数据,并发送给计算模块103;计算模块103对源数据进行计算,得到结果数据;任务管理模块102将结果数据保存至存储器101。

需要说明的是,存储器101是FPGA芯片10内部的大容量存储设备,用于在FPGA芯片10上存储计算源数据及结果数据。在一种可能的实施方式中,存储器101为双倍速率同步动态随机存储器(Double Data Rate,DDR)。

首先,上位机根据计算任务所需的数据量,从存储器101中为计算源数据和结果数据申请存储空间,该存储空间需要足够大以满足源数据和结果数据的存储需求。

在一些实施例中,上位机20为源数据和结果数据申请存储空间的具体方式为:上位机20中存有一张记录了FPGA芯片内部的存储器101的空间使用情况的存储空间占用表,上位机20通过存储空间占用表对存储器101的存储空间进行管理。

在一些实施例中,上位机将对存储器101的存储空间管理功能封装成存储管理程序,并向用户层提供申请存储空间、释放存储空间的用户编程接口API。用户层通过调用用户编程接口向上位机发送存储空间分配请求和存储空间释放请求。

具体的,当没有任何计算任务时,存储空间占用表中所有空间的信息均为未占用。当需要执行计算任务时,上位机接收到用户层发起的存储空间分配请求,为计算任务的源数据和结果数据申请存储空间。上位机根据申请空间的大小,从头开始扫描存储空间占用表,找到大小足够且状态为未占用的存储空间,将整块存储空间在存储空间占用表中的状态改写为占用,记录下申请空间的大小,并返回该存储空间对应的存储地址,在一种可能的实施方式中,返回的是该存储空间对应的基地址。当找不到大小足够用于存储源数据和结果数据且状态空间未被占用的存储空间,则返回存储空间申请失败信息。若申请失败,则说明存储器101内部空间不足,需要减少申请的空间大小或释放无用空间后,重新申请空间。

上位机20为计算任务的数据申请到存储空间后,根据返回的存储空间的存储地址,通过与FPGA芯片的数据交互,将计算任务的源数据保存至该存储空间。

在一些实施例中,计算任务的源数据来自上位机20,上位机20根据该源数据在上位机20上的基地址、传输数据量以及用于在存储器101上存储该源数据的存储空间对应的基地址这三个信息,先读取存储在上位机20上的源数据,而后将其发送到存储器101内指定的存储空间。

需要说明的是,源数据除了可以存储在上位机20上,当然也可以存储在其他存储设备,比如用于储存该源数据的数据库。相应地,上位机20根据该源数据在数据库上的基地址、传输数据量以及用于在存储器101上存储该源数据的存储空间对应的基地址这三个信息,先读取存储在数据库上的源数据,而后将其发送到存储器101内指定的存储空间。

上位机20在完成上述计算任务的源数据发放和保存后,发起任务,并将计算任务的类型、计算数据量、源数据存放地址及结果数据存放地址等信息进行整合生成任务信息,并将任务信息转发到FPGA芯片10内部的任务管理模块102。

需要说明的是,这里的整合是指上位机20将直观的信息通过执行常见的进制转换或者数据拷贝等操作,转换为FPGA芯片10所需要的数据格式,而FPGA芯片10所需的数据格式由FPGA芯片10的硬件设计来决定,本申请对此不做限定。

在一个可能的实施例中,上位机20传递的计算任务的种类、计算数据量、源数据和结果数据的存储地址等信息是通过整型int变量下发的,而FPGA芯片10的硬件设计中为了节约空间,需要上位机20将上述信息包装为一整段二进制信息,那么上位机20就需要通过进制转换、数据拼接等操作,将已知的信息转为FPGA芯片10需要的数据格式再发送给任务管理模块102。

任务管理模块102接收到上位机20发送的任务信息后,根据任务信息从存储器101中读取源数据,并转发给计算模块102用于执行计算任务;并在任务计算完毕后,再将结果数据存放在存储器101中。

请参阅图2至图3,在一些实施例中,任务管理模块102包括:FIFO任务队列缓存1021、读写控制单元1022、多个寄存器1023、读数据FIFO1024和写数据FIFO1025。其中,FIFO任务队列缓存1021用于缓存从上位机接收的任务信息。读写控制单元1022用于在检测到FIFO任务队列缓存1021非空时,读取并解析任务信息得到任务解析结果,将任务解析结果存入多个寄存器1023。读写控制单元1022还用于根据任务解析结果通过读数据FIFO1024从存储器101读取源数据发送给计算模块103,以及通过写数据FIFO1025将计算模块103进行计算得到的结果数据保存至存储器101。

具体的,任务管理模块102在接收到从上位机发送的任务信息后,首先将其存入FIFO任务队列缓存1021中,读写控制单元1022检测到FIFO任务队列缓存1021非空,说明存在未处理的任务,则读取FIFO任务队列缓存1021中的任务信息并对其进行解析得到任务解析结果。其中,任务解析结果至少包括:任务类型、计算数据量、源数据地址、结果数据地址等信息,随后任务解析结果被存入对应的多个寄存器1023中。读写控制单元1022根据多个寄存器1023中存放的任务解析结果,从存储器101中读取相应的源数据用于转发给计算模块103进行计算,并在计算模块103完成计算之后,通过写数据FIFO1025将计算模块103进行计算得到的结果数据保存至存储器101。

需要说明的是,计算模块103内包含了FPGA芯片内部所有可用的计算引擎,计算模块103从任务管理模块102接收计算源数据和计算信息后,每次只将少量的源数据暂存在内部的存储单元,在计算完毕后将结果数据返回给任务管理模块102。并再从任务管理模块103读取一定量的源数据进行计算,直到完成所有数据的计算处理。在整个计算过程中数据的计算、读取、发送是流水进行的,可以极大地提高工作的效率。其中,模块内部的存储单元,指的是计算模块103内通过代码例化的FPGA临时存储器,例如可以为RAM或者FIFO,容量不大,不能存储大数据量信息,但读取速度非常快。

请参阅图3,在一些应用场景中,由于FPGA芯片需要用于执行多元运算,即单个任务的计算源数据可能为一份、两份或者多份,且源数据存放在存储器101的不同位置,任务管理模块102中包括多个读数据FIFO1024,读写控制单元1022根据任务解析结果确定待读取的源数据的目标数量,从多个读数据FIFO1024选择与目标数量对应数量的读数据FIFO1024从存储器101读取源数据并发送给计算模块103进行计算,以及通过写数据FIFO1025将结果数据发送给存储器101。

示例性的,若需要将FPGA芯片用于执行一元运算,则任务管理模块102仅使用一个读数据FIFO1024,通过读写控制单元1022接收从对应数据地址读取的源数据,并向计算模块103进行转发。

示例性的,若需要将FPGA芯片用于执行二元运算,则任务管理模块102控制两个读数据FIFO1024,通过读写控制单元1022分别接受从存储器101的不同地址读取的两批源数据,并通过两条数据通道向计算模块103转发。

示例性的,若需要将FPGA芯片用于执行多元运算,则任务管理模块102控制多个读数据FIFO1024,通过读写控制单元1022,分别接受从存储器101的不同地址读取的多批源数据,并通过多条数据通道向计算模块103转发。

在以上的实施例中,通常计算结果只有一元,因此任务管理模块102中有一个写数据FIFO1025,在计算模块103工作结束后,任务管理模块102通过一条数据通道从计算模块103接收运算结果,并通过读写控制单元1022暂存到写数据FIFO1025中,写数据FIFO1025再向存储器101写入结果数据。

在一些实施例中,由于任务信息中包含了上位机20为结果数据预先申请的在存储器101的存储空间,读写控制单元1022根据该结果数据在存储器101的存储空间的基地址,将结果数据通过写数据FIFO1025保存至存储器101中该基地址对应的存储空间。

通过本申请的任务管理模块102的设计,可实现读写控制单元1022根据上位机的任务信息,从存储器101的任意位置读取计算源数据;并向存储器101的任意位置发送结果数据,从而实现计算数据在存储器的暂存。且任务管理模块102通过提供多个读数据FIFO1024,实现可以分别从存储器101的不同位置读取多批源数据,从而满足了FPGA芯片在多元计算场景下的需求。

在一些实施例中,任务管理模块完成结果数据的保存后,还可以生成反馈信息发送给上位机20以通知上位机本次计算任务执行完毕。

请参阅图4,在一些应用场景中,计算任务执行完毕后,上位机需要读取存储在存储器101中的结果数据,此时,上位机20可根据结果数据在存储器101中的存储地址读取结果数据。具体的,上位机20根据结果数据在存储器101中的基地址、上位机20中用于存放结果数据的空间基地址、传输的数据量这三个信息,来读取存储在存储器中的结果数据,并发送到指定的上位机20存储空间中。

在一些应用场景中,计算任务执行完毕后,上位机20不直接读取保存在存储器101中的结果数据,而是需要将结果数据作为下次计算的部分源数据或全部源数据。

在一些可能的实施例中,计算任务执行完毕后,本次计算的结果数据需要作为下次计算的部分源数据,即除了本次计算的结果数据,还需要上位机20发送新的源数据,并将两部分源数据一并作为下次计算的源数据。上位机20将新的源数据保存至FPGA芯片10的存储器101中。在源数据保存之后,上位机20发起任务,并给任务管理模块102发送新的任务信息。此时上位机20所发送的任务信息中所包含的源数据存储地址,包括:上一次计算的结果数据的存储地址和上位机20新发放的源数据的存储地址。

在一些可能的实施例中,需要将之前多次计算的结果数据下次任务计算的部分源数据,此时上位机20所发送的任务信息中所包含的源数据存储地址,包括:所需要的多次计算的结果数据的存储地址和上位机20新发放的源数据的存储地址。

在一些可能的实施例中,计算任务执行完毕后,本次计算的结果数据需要作为下次计算任务的全部源数据使用,即本次计算的结果数据作为下次计算的源数据。需要上位机20发起任务,并给任务管理模块102发送新的任务信息。此时上位机20所发送的任务信息中所包含的源数据存储地址为上一次计算的结果数据的存储地址。

在一些可能的实施例中,需要将之前多次计算的结果数据共同作为下次任务计算的源数据使用,此时上位机20所发送的任务信息中所包含的源数据存储地址为所需要的多次计算的结果数据的存储地址。

通过本申请的隐私计算异构处理系统的设计,可以把计算结果暂存在FPGA芯片的存储器上,在下次计算时提取出继续由FPGA芯片使用,从而减少大量不必要的数据传输,降低了大量数据传输带来的时间损耗,提高了计算的效率,而且充分利用FPGA芯片的存储能力,缓解了上位机存储空间的压力。

在一些实施例中,如图5所示,FPGA芯片10还包括接口模块104,接口模块104用于与上位机的硬件接口层连接实现数据交互。

具体的,接口模块104是连接FPGA芯片10内部逻辑和硬件接口电路的模块,负责完成FPGA芯片10与上位机20之间的数据交换,该数据包括交互的任务信息、任务源数据、任务结果数据等。

在一些实施例中,如图5所示,上位机包括:用户层、驱动层以及硬件接口层。硬件接口层是上位机与FPGA芯片进行数据交换的硬件结构,可以是PCIe等有线接口,也可以是SFP等网络接口,硬件接口层负责上位机和FPGA芯片之间所有的交互以及数据传递。驱动层负责连接用户层和硬件接口层的工作,驱动层包括驱动程序模块、存储管理程序模块以及接口程序模块。

其中,驱动程序模块负责将任务配置信息和任务源数据向硬件接口层进行转发,并接收从硬件接口层返回的数据。存储管理程序模块负责对FPGA芯片内部的存储器进行存储资源的管理。接口程序模块负责与用户层进行对接,将驱动层所有的功能封装为编程接口,向用户层提供申请存储空间、释放存储空间、数据发送、数据接收、任务计算等功能。用户层是上层开发人员或用户使用FPGA芯片时建立的软件工程,用户层与驱动层通过API(用户编程接口)连接。用户根据自身的工作需求,结合使用驱动层提供的编程接口,向FPGA芯片发送源数据、发起计算任务的执行、从FPGA芯片读取结果数据,从而得到任务结果。

请参阅图6,图6是本申请的实施例提供的一种FPGA芯片的示意性框图,可应用于进行联邦学习隐私计算。

该FPGA芯片10包括存储器101、任务管理模块102、计算模块103。其中,存储器101接收并保存上位机20发送的源数据,任务管理模块102根据上位机20的任务信息从存储器101中读取源数据,并发送给计算模块103;计算模块103对源数据进行计算,得到结果数据;任务管理模块102将结果数据保存至存储器101,并根据所述上位机20的任务信息读取所述结果数据作为部分源数据或全部源数据进行下次计算。

本申请的实施例提供的FPGA芯片10在应用于隐秘计算时,具体为存储器101用于接收并保存上位机20发送的明文数据。任务管理模块102用于接收上位机20发送的任务信息,根据任务信息从存储器101中读取所述明文数据,并发送给计算模块。计算模块103用于对所述明文数据进行加密运算,得到第一加密结果。任务管理模块102还用于将第一加密结果保存至存储器101。存储器101还用于接收并保存上位机发送的密文数据。任务管理模块102还用于根据上位机20的任务信息读取密文数据和第一加密结果发送给计算模块103进行加密运算,并将计算模块103得到的第二加密结果保存至存储器101中。任务管理模块102用于根据上位机20的任务信息,持续执行从存储器101读取上位机发送的明文数据或密文数据发送给计算模块103进行加密运算,并将运算结果保存至存储器101中,作为后续加密运算的部分源数据或全部源数据,直至得到需要的目标结果数据。

在一些实施例中,加密运算还包括密态加法运算、密态乘法运算和明文乘法运算。

示例性的,结果实例化应用场景,对前述实施例进行进一步描述。将本申请实施例提供的用于隐私计算的FPGA芯片,应用在纵向联邦的逻辑回归模型中,纵向联邦的逻辑回归模型中有Arbiter、Host、Guest进行联合学习。将上位机20实例化为Guest,为了计算梯度,Guest方需要首先计算参数fore_gradient,fore_gradient的计算公式如下:fore_gradient=0.25*(wx_guest+wx_host)-0.5*y。其中,wx_guest和y均为Guest方可以计算出或者可以直接得到的明文数据,而wx_host为Host计算出的参数,Host对wx_host加密后通过通信传输给Guest。因此,为了完成该表达式的计算,Guest方及FPGA芯片需要执行如下步骤:

1)、将明文wx_guest发送到FPGA芯片中,具体保存在FPGA芯片的存储器中,并对wx_guest执行加密运算,将该加密结果暂存在FPGA芯片内的存储器中;

2)、将密文wx_host发送到FPGA芯片中,具体保存在FPGA芯片的存储器中,并对其与存储器中暂存的wx_guest的加密结果执行密态加法,得到密文wx_guest+wx_host,将该密文暂存在FPGA芯片内的存储器中;

3)、将明文0.25发送到FPGA芯片中,具体保存在FPGA芯片的存储器中并与密文wx_guest+wx_host执行密态乘法运算,得到密文0.25*(wx_guest+wx_host),将运算结果暂存在FPGA芯片内的存储器中;

4)、将明文-0.5和明文y分别发送到FPGA芯片中,具体保存在FPGA芯片的存储器中,执行明文乘法得到明文-0.5*y,并将运算结果暂存在FPGA芯片内的存储器中;

5)、FPGA芯片对明文-0.5*y执行加密运算,得到密文-0.5*y,并将密文暂存在FPGA芯片内的存储器中;

6)、FPGA芯片对密文0.25*(wx_guest+wx_host)和密文-0.5*y执行密态加法的操作,得到密文0.25*(wx_guest+wx_host)-0.5*y,也就是目标结果密文fore_gradient;

7)、将目标结果密文fore_gradient从FPGA芯片内部的存储器中读出。

在以上Guest执行梯度计算任务的实例中,多个中间的运算结果被暂存在FPGA芯片内的存储器,FPGA芯片基于计算任务的需求,接收Guest发送的新的源数据和/或读取中间的运算结果用于执行后续的运算,并在所有运算步骤均完成之后,Guest才读取最终的运算结果。

需要说明的是,存储器101、任务管理模块102、计算模块103的具体描述可以参照上述实施例的具体描述,比如存储器101、任务管理模块102、计算模块103的具体设计及其相互配合的工作方式,可参照上述的具体描述,在此不做详细介绍。

本申请提供的FPGA芯片,支持计算结果在FPGA芯片内部存储器上的存储,可以由FPGA芯片从其内部的存储器中读取该结果数据用于下次计算,减少FPGA芯片与上位机的数据交互,降低了时间损耗,提高了计算效率。

请参阅图7,本申请的实施例提供的一种使用FPGA芯片的计算方法的示意流程图,该计算方法可应用于上述实施例中的FPGA芯片。可以实现计算结果在FPGA芯片上内部存储器上的存储,并支持FPGA芯片在下次任务时从其内部的存储器提取出来用于执行计算,从而减少FPGA芯片与上位机之间的数据交互,降低因为多次数据交互带来的时间损耗,提高了计算的效率。该计算方法包括步骤S101至S104:

S101:通过存储器保存上位机发送的源数据;

S102:通过任务管理模块接收上位机发送的任务信息,根据任务信息从存储器中读取源数据,并发送给计算模块;

S103:通过计算模块对源数据进行计算,得到结果数据;

S104:通过任务管理模块将结果数据保存至存储器,并根据所述上位机的任务信息读取所述结果数据作为部分源数据或全部源数据进行下次计算。

需要说明的是,在该计算方法中,FPGA芯片的各个部件(存储器、任务管理模块和计算模块)的具体工作方式以及涉及的上位机的工作方式,以及该计算方法所达到的技术效果,均可以参照上述实施例的具体描述,在此不做详细介绍。

本申请提供的使用FPGA芯片的计算方法,可以实现计算结果数据在FPGA芯片内部存储器的存储,并支持由FPGA芯片从其内部的存储器提取出来用于下次计算任务,从而既充分利用了FPGA芯片内部的存储能力,又减少了FPGA芯片与上位机之间的数据交互,提高了计算效率。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 用于隐私计算的FPGA芯片、异构处理系统及计算方法
  • 用于联邦学习和隐私计算的异构处理系统
技术分类

06120113135661