CN113704174A - 一种芯片和数据处理方法 - Google Patents
一种芯片和数据处理方法 Download PDFInfo
- Publication number
- CN113704174A CN113704174A CN202111242097.3A CN202111242097A CN113704174A CN 113704174 A CN113704174 A CN 113704174A CN 202111242097 A CN202111242097 A CN 202111242097A CN 113704174 A CN113704174 A CN 113704174A
- Authority
- CN
- China
- Prior art keywords
- core
- result
- modular
- control module
- composite
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 14
- 239000002131 composite material Substances 0.000 claims abstract description 170
- 238000004364 calculation method Methods 0.000 claims abstract description 75
- 238000009825 accumulation Methods 0.000 claims abstract description 63
- 238000004458 analytical method Methods 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 29
- 239000000047 product Substances 0.000 description 68
- 238000010586 diagram Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 4
- 150000001875 compounds Chemical class 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000006854 communication Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供一种芯片和数据处理方法,所述芯片包括输入控制模块、复合计算模块、以及至少两个运算核;所述输入控制模块,用于接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核;所述运算核,用于根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果,所述核运算结果包括模乘结果或模幂结果;在所述运算核接收到的操作类型为复合类型时,所述运算核还用于将所述核运算结果和所述操作类型发送至所述复合计算模块;所述复合计算模块,用于根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。本发明实施例可以大幅提高复合算子模运算的执行效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种芯片和数据处理方法。
背景技术
在隐私计算领域,模幂运算和模乘运算是实现密码协议的基础运算。基于该基础运算的复合运算,如模乘之和(对多个模乘计算结果进行积累求和)以及模幂之积(对多个模幂计算结果进行积累求积),这两种符合运算是隐私计算场景中的重要运算。例如,在联邦学习中对机器学习算法梯度的更新,需要用到大量的模乘之和运算以及大量的模幂之积运算。
目前是通过编写软件程序来实现上述复合运算,然而模乘运算和模幂运算通常是大整数(如1024bit/2048bit/4096bit)运算,计算开销本身较大。再对这两种基础运算进行模乘之和、模幂之积等复合操作,会进一步增加CPU(Central Processing Unit,中央处理器)的负载,降低***的整体性能。
发明内容
本发明实施例提供一种芯片、数据处理方法、以及机器可读介质,可以在提高基础算子模运算的执行效率的同时,大幅提高复合算子模运算的执行效率,减轻CPU负载,提高计算***的性能。
为了解决上述问题,本发明实施例公开了一种芯片,所述芯片包括输入控制模块、复合计算模块、以及至少两个运算核,其中,
所述输入控制模块,用于接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核;所述输入数据帧中包括操作类型和操作数据,所述操作类型包括单类型或复合类型,所述单类型包括模乘或模幂,所述复合类型包括模乘之和或模幂之积;
所述运算核,用于根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果,所述核运算结果包括模乘结果或模幂结果;在所述运算核接收到的操作类型为复合类型时,所述运算核还用于将所述核运算结果和所述操作类型发送至所述复合计算模块;
所述复合计算模块,用于根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。
可选地,所述复合计算模块包括多路选择器、累加单元、以及累乘单元;其中,
所述多路选择器,用于接收所述运算核在所述操作类型为模乘之和时输出的模乘结果,并将接收到的模乘结果发送至所述累加单元;或者,用于接收所述运算核在所述操作类型为模幂之积时输出的模幂结果,并将接收到的模幂结果发送至所述累乘单元;
所述累加单元,用于接收所述多路选择器传输的模乘结果,并对接收到的模乘结果执行累加操作,得到模乘之和结果;
所述累乘单元,用于接收所述多路选择器传输的模幂结果,并对接收到的模幂结果执行累乘操作,得到模幂之积结果。
可选地,所述运算核,还用于在接收到操作类型为复合类型,且所述运算核的模运算执行完成时,向所述复合计算模块发送握手请求信号,在接收到所述复合计算模块返回的握手响应信号时,将计算得到的核运算结果发送至所述复合计算模块。
可选地,所述操作类型还包括输出模乘之和结果或输出模幂之积结果,所述复合计算模块,还用于在接收到输出模乘之和结果或输出模幂之积结果的操作类型时,输出计算得到的模乘之和结果或模幂之积结果。
可选地,所述芯片还包括仲裁电路,用于依据仲裁算法在当前时刻从有效状态的运算核中选择一个进行输出,所述有效状态的运算核指已发送握手请求信号的运算核。
可选地,所述复合计算模块还包括状态机,用于轮询各运算核的状态,在确定存在有效状态的运算核时,启动仲裁电路。
可选地,所述芯片还包括第一输出控制模块和第二输出控制模块;其中,
所述第一输出控制模块,用于接收所述运算核输出的核运算结果,并将接收到的核运算结果输出至所述第二输出控制模块;
所述第二输出控制模块,用于将所述第一输出控制模块输出的核运算结果传输至所述主机侧,或者,将所述复合计算模块输出的模乘之和结果或模幂之积结果传输至所述主机侧。
可选地,所述运算核与所述第一输出控制模块之间,所述运算核与所述复合计算模块之间,所述复合计算模块与所述第二输出控制模块之间,以及所述第一输出控制模块与所述第二输出控制模块之间,通过握手信号交换数据。
可选地,所述运算核,还用于在接收到操作类型为单类型,且所述运算核的模运算执行完成时,向所述第一输出控制模块发送握手请求信号,在接收到所述第一输出控制模块返回的握手响应信号时,将计算得到的核运算结果输出至所述第一输出控制模块。
可选地,所述复合计算模块,还用于在累加操作或累乘操作执行完成时,向所述第二输出控制模块发送握手请求信号,在接收到所述第二输出控制模块返回的握手响应信号时,将计算得到的模乘之和结果或模幂之积结果输出至所述第二输出控制模块。
可选地,所述芯片包括现场可编程逻辑门阵列FPGA芯片或专用集成电路ASIC芯片。
另一方面,本发明实施例公开了一种数据处理方法,所述方法应用于芯片,所述芯片包括输入控制模块、复合计算模块、以及至少两个运算核,所述方法包括:
通过所述输入控制模块接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核;所述输入数据帧中包括操作类型和操作数据,所述操作类型包括单类型或复合类型,所述单类型包括模乘或模幂,所述复合类型包括模乘之和或模幂之积;
通过所述运算核根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果,所述核运算结果包括模乘结果或模幂结果;在所述运算核接收到的操作类型为复合类型时,还通过所述运算核将所述核运算结果和所述操作类型发送至所述复合计算模块;
通过所述复合计算模块根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。
可选地,所述复合计算模块包括多路选择器、累加单元、以及累乘单元,所述方法还包括:
通过所述多路选择器接收所述运算核在所述操作类型为模乘之和时输出的模乘结果,并将接收到的模乘结果发送至所述累加单元;或者,通过多路选择器接收所述运算核在所述操作类型为模幂之积时输出的模幂结果,并将接收到的模幂结果发送至所述累乘单元;
通过所述累加单元接收所述多路选择器传输的模乘结果,并对接收到的模乘结果执行累加操作,得到模乘之和结果;
通过所述累乘单元接收所述多路选择器传输的模幂结果,并对接收到的模幂结果执行累乘操作,得到模幂之积结果。
可选地,所述方法还包括:
通过所述运算核在接收到操作类型为复合类型,且所述运算核的模运算执行完成时,向所述复合计算模块发送握手请求信号,在接收到所述复合计算模块返回的握手响应信号时,将计算得到的核运算结果发送至所述复合计算模块。
可选地,所述操作类型还包括输出模乘之和结果或输出模幂之积结果,所述方法还包括:
通过所述复合计算模块在接收到输出模乘之和结果或输出模幂之积结果的操作类型时,输出计算得到的模乘之和结果或模幂之积结果。
可选地,所述芯片还包括仲裁电路,所述方法还包括:
通过所述仲裁电路依据仲裁算法在当前时刻从有效状态的运算核中选择一个进行输出,所述有效状态的运算核指已发送握手请求信号的运算核。
可选地,所述复合计算模块还包括状态机,所述方法还包括:
通过所述状态机轮询各运算核的状态,在确定存在有效状态的运算核时,启动仲裁电路。
可选地,所述芯片还包括第一输出控制模块和第二输出控制模块,所述方法还包括:
通过所述第一输出控制模块接收所述运算核输出的核运算结果,并将接收到的核运算结果输出至所述第二输出控制模块;
通过所述第二输出控制模块将所述第一输出控制模块输出的核运算结果传输至所述主机侧,或者,将所述复合计算模块输出的模乘之和结果或模幂之积结果传输至所述主机侧。
可选地,所述运算核与所述第一输出控制模块之间,所述运算核与所述复合计算模块之间,所述复合计算模块与所述第二输出控制模块之间,以及所述第一输出控制模块与所述第二输出控制模块之间,通过握手信号交换数据。
可选地,所述方法还包括:
通过所述运算核在接收到操作类型为单类型,且所述运算核的模运算执行完成时,向所述第一输出控制模块发送握手请求信号,在接收到所述第一输出控制模块返回的握手响应信号时,将计算得到的核运算结果输出至所述第一输出控制模块。
可选地,所述方法还包括:
通过所述复合计算模块在累加操作或累乘操作执行完成时,向所述第二输出控制模块发送握手请求信号,在接收到所述第二输出控制模块返回的握手响应信号时,将计算得到的模乘之和结果或模幂之积结果输出至所述第二输出控制模块。
可选地,所述芯片包括现场可编程逻辑门阵列FPGA芯片或专用集成电路ASIC芯片。
再一方面,本发明实施例公开了一种机器可读介质,其上存储有指令,当所述指令由装置的一个或多个处理器执行时,使得装置执行如前述一个或多个所述的数据处理方法。
本发明实施例包括以下优点:
本发明实施例提供了一种芯片,该芯片包括输入控制模块、复合计算模块、以及至少两个运算核,每个运算核可以独立实现模乘运算或模幂运算。输入控制模块可以接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核执行模乘或模幂运算。所述运算核根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果;在所述运算核接收到的操作类型为复合类型时,所述运算核还用于将所述核运算结果和所述操作类型发送至所述复合计算模块。所述复合计算模块根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。本发明实施例的芯片通过包含至少两个运算核的多核阵列以及复合计算模块,可以实现大规模的并行化执行基础算子的模运算(如模乘或模幂),以及实现高速执行运算量较大的复合算子的模运算(如模乘之和或模幂之积),将运算量较大的模运算在硬件(芯片)中进行,可以在提高基础算子模运算的执行效率的同时,大幅提高复合算子模运算的执行效率,可以进一步减轻CPU负载,提高计算***的性能,满足更高要求的计算场景。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种芯片100实施例的结构框图;
图2是本发明的一种输入数据帧的结构示意图;
图3是本发明的一种芯片100和主机侧200通过PCIe总线通信的示意图;
图4是本发明的另一种芯片100实施例的结构框图;
图5是本发明的又一种芯片100实施例的结构框图;
图6是本发明的一种数据处理方法实施例的步骤流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
参照图1,示出了本发明的一种芯片100实施例的结构框图,所述芯片100包括输入控制模块101、复合计算模块102、以及至少两个运算核103,其中,
所述输入控制模块101,用于接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核;所述输入数据帧中包括操作类型和操作数据,所述操作类型包括单类型或复合类型,所述单类型包括模乘或模幂,所述复合类型包括模乘之和或模幂之积;
所述运算核103,用于根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果,所述核运算结果包括模乘结果或模幂结果;在所述运算核接收到的操作类型为复合类型时,所述运算核还用于将所述核运算结果和所述操作类型发送至所述复合计算模块;
所述复合计算模块102,用于根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。
在以密码学为基础的隐私计算应用中,需要在数据中心或者服务器上进行大量的模运算,如模乘、模幂、模乘之和、模幂之积等运算,这些模运算是隐私计算中的基础运算。
模运算的计算量较大,通常需要耗费大量时间,为了提高隐私计算的效率,可以采用蒙哥马利算法对这些模运算进行加速。然而,当运算数据量很大的时候,即便使用了蒙哥马利算法进行加速,在实际应用场景中隐私计算***的性能仍难以满足隐私计算的需求。
为解决该问题,本发明提出一种实现模运算指令的芯片,该芯片可以为多核异构芯片。多核指该芯片包括至少两个运算核,每个运算核可以独立实现模乘运算或模幂运算。异构指相比传统的电脑/服务器主机的CPU-内存-硬盘体系结构,该芯片具有大规模并行处理的结构,这与传统的电脑/服务器特征相异。
进一步地,所述芯片可以包括但不限于FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)芯片或ASIC(Application Specific Integrated Circuit,专用集成电路)芯片。
在具体实施中,每个芯片所包含的运算核的数量,根据芯片大小不同而不同。如FPGA,可以容纳上百个运算核;而定制的ASIC芯片,可以达到上千个运算核。
在本发明实施例中,芯片100中的输入控制模块101,可用于接收并存储来自主机侧的模运算指令。本发明实施例对所述模运算指令设置了统一的数据帧格式。在主机侧,应用层调用后台的软件程序,生成输入数据帧格式的模运算指令,并启动后台的调度算法,实现通信进程的数据传输,驱动层通过PCIe(Peripheral Component InterconnectExpress,高速串行计算机扩展总线标准)总线与芯片进行通信。
输入控制模块101接收来自主机侧的输入数据帧,并对接收到的每个输入数据帧进行解析,得到其中的操作类型和操作数据。所述输入数据帧为对主机侧的模运算指令进行统一封装的数据帧。所述模运算指令可以包括基础算子的模运算指令或者复合算子的模运算指令。其中,基础算子的模运算指令包括模乘运算指令或模幂运算指令。复合算子的模运算指令包括模乘之和运算指令或者模幂之积运算指令。
参照图2,示出了本发明的一种输入数据帧的结构示意图。如图2所示,一个输入数据帧可以包括包头(Head)和数据体(Data)。包头中可以包括操作码(OpCode)、操作的数据位宽(PBitCount)、幂指数的数据位宽(EbitCount)等信息。其中,不同的操作码用于表示不同的操作类型。数据体(Data)中包含参与模运算指令的操作数据,如d1~dn。
主机侧可以通过高速传输总线向芯片100发送输入数据帧,该输入数据帧中包括模运算指令对应的操作类型和执行该模运算指令所需的操作数据。主机侧还通过高速传输总线接收芯片100执行该模运算指令返回的计算结果。所述高速传输总线可以为PCIe总线。
参照图3,示出了本发明的一种芯片100和主机侧200通过PCIe总线通信的示意图。如图3所示,芯片100通过输入控制模块101接收并存储来自主机侧的输入数据帧,并对接收到的每个输入数据帧进行解析,得到其中的操作类型和操作数据。输入控制模块101将解析得到的操作类型和操作数据发送至运算核。需要说明的是,输入控制模块101将解析得到的操作类型和操作数据发送至参与执行当前模运算指令的运算核。例如,芯片100中设置有500个运算核,当前模运算指令需要使用300个运算核,则输入控制模块101可以将解析得到的操作类型和操作数据发送至300个运算核。其中,参与执行当前模运算指令的运算核可以通过调度算法确定。本发明实施例中的运算核指参与执行当前模运算指令的运算核。
若当前模运算指令用于执行批量的模运算,包含n份操作数据,则输入控制模块101可以基于多核调度算法,产生相应的控制信号,将接收到的n份操作数据分配到n个运算核进行并行的模运算。
参照表1,示出了本发明实施例的一种输入数据帧中操作码与操作类型之间的对应关系的示例。
表1
操作码OpCode | 操作类型 |
0001 | 模乘 |
0010 | 模幂 |
0011 | 模乘之和 |
0100 | 模幂之积 |
0101 | 输出模乘之和结果 |
0110 | 输出模幂之积结果 |
在本发明实施例中,所述操作类型可以包括单类型或复合类型,所述单类型可以包括但不限于模乘(0001)或模幂(0010),所述复合类型可以包括但不限于模乘之和(0011)或模幂之积(0100)。
本发明实施例提供的芯片100可以为多核异构芯片,芯片100至少包括输入控制模块、复合计算模块、以及至少两个运算核。所述输入控制模块用于接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至参与执行当前模运算指令的运算核。每个运算核根据接收到的操作类型对接收到的操作数据执行模运算,例如,若运算核接收到的操作类型为模乘,则该运算核对接收到的操作数据执行模乘运算;若运算核接收到的操作类型为模幂,则该运算核对接收到的操作数据执行模幂运算。多个运算核并行执行各自的模运算,得到各自的核运算结果,所述核运算结果包括模乘结果或模幂结果。
进一步地,所述芯片100中的至少两个运算核可以组成多核阵列,该阵列中的每个运算核能够独立实现模乘运算:,以及独立实现模幂运算:。主机侧可以同时向芯片100批量发送多个模运算指令,以通过芯片100批量执行多个模运算指令。
如果解析来自主机侧的输入数据帧,得到当前模运算指令的操作类型为单类型,则多个运算核执行完成自身的模运算后,可以得到各自的核运算结果。例如,假设芯片100接收到n条模运算指令,且操作类型为模乘,则可以分配n个运算核并行执行n个模乘运算:,n个运算核可以得到n个模乘结果。又如,假设芯片100接收到n条模运算指令,且操作类型为模幂,则可以分配n个运算核并行执行n个模幂运算:,n个运算核可以得到n个模幂结果。当前模运算指令的操作类型为单类型时,多个运算核执行完成自身的模运算后,可以直接将各自的核运算结果输出至输出控制模块,以通过输出控制模块将该核运算结果输出至主机侧。
如果解析来自主机侧的输入数据帧,得到当前模运算指令的操作类型为复合类型,多个运算核执行完成自身的模运算后,还需要将自身的核运算结果和自身接收到的操作类型发送至所述复合计算模块102,以通过所述复合计算模块102继续执行计算。
所述复合计算模块102根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,可以得到模乘之和结果或模幂之积结果。
一个示例中,假设当前模运算指令的操作类型为复合类型且为模乘之和,操作数包括ai、bi、以及p,i取值为[1,n]。先通过多核阵列计算出n个模乘的单独结果:,再通过复合计算模块102对n个模乘的单独结果进行累加,实现模乘之和:,得到最终的模乘之和结果S。另一个示例中,假设当前模运算指令的操作类型为复合类型且为模幂之积,操作数包括ai、ei、以及p,i取值为[1,n]。先通过多核阵列计算出n个模幂的单独结果:,再通过复合计算模块102对n个模幂的单独结果进行累乘,实现模幂之积:,得到最终的模幂之积结果x。
所述复合计算模块102将计算得到的模乘之和结果或模幂之积结果输出至输出控制模块,以通过输出控制模块将该模乘之和结果或模幂之积结果输出至主机侧。
由此,通过本发明实施例提供的芯片100可以加速执行基础算子的模运算(如模乘或模幂)以及加速执行复合算子的模运算(如模乘之和或模幂之积)。通过本发明实施例,可以利用硬件(芯片)运算速度快的特点,将运算量较大的模运算在硬件(芯片)中进行,进而可以在硬件上高效实现半同态加密隐私计算,极大提高半同态加密隐私计算的效率。尤其地,对于运算环境要求较高的模乘之和、模幂之积等复合算子的模运算,通过多核异构芯片的硬件环境执行,可以大幅提高执行模乘之和运算以及模幂之积运算的速度。进而在联邦学习场景中,可以提高机器学习算法的梯度更新速度。
此外,本发明实施例提供的芯片可以为多核异构芯片,通过多核阵列以及复合计算模块,可以实现大规模的并行化执行基础算子的模运算(如模乘或模幂),以及实现高速执行运算量较大的复合算子的模运算(如模乘之和或模幂之积),在提高基础算子模运算的执行效率的同时,可以大幅提高复合算子模运算的执行效率,可以进一步减轻CPU负载,提高计算***的性能,满足更高要求的计算场景。
进一步地,所述复合计算模块可以包括多路选择器、累加单元、以及累乘单元;其中,
所述多路选择器,用于接收所述运算核在所述操作类型为模乘之和时输出的模乘结果,并将接收到的模乘结果发送至所述累加单元;或者,用于接收所述运算核在所述操作类型为模幂之积时输出的模幂结果,并将接收到的模幂结果发送至所述累乘单元;
所述累加单元,用于接收所述多路选择器传输的模乘结果,并对接收到的模乘结果执行累加操作,得到模乘之和结果;
所述累乘单元,用于接收所述多路选择器传输的模幂结果,并对接收到的模幂结果执行累乘操作,得到模幂之积结果。
在本发明实施例中,所述复合计算模块可以包括多路选择器、累加单元、以及累乘单元。进一步地,所述复合计算模块还可以包括仲裁电路,以确定在某一时刻多路选择器选择接收哪个运算核输出的核运算结果(模乘结果或模幂结果)。
如果当前模运算指令的操作类型为复合类型,则复合计算模块能够将多个运算核输出的模乘结果,先在模块内的累加单元进行累加,再将累加得到的模乘之和结果进行输出,输出至输出控制模块;如果当前模运算指令的操作类型为复合类型,复合计算模块能够将多个运算核输出的模幂结果,先在模块内的累乘单元进行累乘,再将累乘得到的模幂之积结果进行输出,输出至输出控制模块。
在本发明的一种可选实施例中,所述芯片还可以包括第一输出控制模块和第二输出控制模块;其中,
所述第一输出控制模块,用于接收所述运算核输出的核运算结果,并将接收到的核运算结果输出至所述第二输出控制模块;
所述第二输出控制模块,用于将所述第一输出控制模块输出的核运算结果传输至所述主机侧,或者,将所述复合计算模块输出的模乘之和结果或模幂之积结果传输至所述主机侧。
在本发明实施例中,芯片100中的输出控制模块可以包括第一输出控制模块和第二输出控制模块。参照图4,示出了本发明的另一种芯片100实施例的结构框图。如图4所示,该芯片100包括输入控制模块101、复合计算模块102、以及至少两个运算核103,至少两个运算核103组成多核阵列,该芯片100还包括第一输出控制模块104和第二输出控制模块105。
第一输出控制模块104,用于在操作类型为单类型时,接收各运算核输出的核运算结果,并控制将接收到的各运算核的核运算结果输出至第二输出控制模块。
第二输出控制模块105,用于在操作类型为单类型时,接收第一输出控制模块输出的各运算核的核运算结果,并控制将接收到的各运算核的核运算结果(如模乘结果或模幂结果)传输至主机侧。第二输出控制模块还用于在操作类型为复合类型时,接收所述复合计算模块输出的模乘之和结果或模幂之积结果,并控制将接收到的模乘之和结果或模幂之积结果传输至主机侧。
在本发明的一种可选实施例中,所述操作类型还可以包括输出模乘之和结果或输出模幂之积结果。所述复合计算模块,还用于在接收到的操作类型为输出模乘之和结果时,输出计算得到的模乘之和结果;或者,所述复合计算模块,还用于在接收到的操作类型为输出模幂之积结果时,输出计算得到的模幂之积结果。
如表1所示,操作码0101表示操作类型为输出模乘之和结果。包含该操作码的模运算指令用于触发复合计算模块输出其计算得到的模乘之和结果。复合计算模块在接收到包含操作码0101的模运算指令时,向第二输出控制模块输出模乘之和结果。操作码0110表示操作类型为输出模幂之积结果。包含该操作码的模运算指令用于触发复合计算模块输出其计算得到的模幂之积结果。复合计算模块在接收到包含操作码0110的模运算指令时,向第二输出控制模块输出模幂之积结果。
在本发明的一种可选实施例中,所述运算核与所述第一输出控制模块之间,所述运算核与所述复合计算模块之间,所述复合计算模块与所述第二输出控制模块之间,以及所述第一输出控制模块与所述第二输出控制模块之间,均可以通过握手信号交换数据。
在本发明实施例中,一种握手信号组的实现可以包含valid信号、ready信号、以及data信号。valid信号为握手请求信号,ready信号为握手响应信号,data信号为数据传输信号。对于某个运算核,其发出的data信号中可以携带有模乘结果或者模幂结果。对于复合计算模块,其发出的data信号中可以携带有模乘之和结果或者模幂之积结果。在本发明实施例中,各模块之间可以通过握手信号交换数据,以保证数据交换的有序性和准确性。
一个示例中,某个运算核(假设记为核1)在完成自身的模运算,得到自身的核运算结果时,可以发送valid信号。以当前模运算指令的操作类型为单类型为例,核1可以向第一输出控制模块发送valid信号,在核1接收到第一输出控制模块返回的ready信号时,表示第一输出控制模块已经准备好,可以接收数据,此时,核1可以向第一输出控制模块发送data信号,该data信号中携带有核1的核运算结果。以当前模运算指令的操作类型为复合类型为例,核1可以向复合计算模块发送valid信号,在核1接收到复合计算模块返回的ready信号时,表示复合计算模块已经准备好,可以接收数据,此时,核1可以向复合计算模块发送data信号,该data信号中携带有核1的核运算结果。
在本发明的一种可选实施例中,所述运算核,还用于在接收到操作类型为复合类型,且所述运算核的模运算执行完成时,向所述复合计算模块发送握手请求信号,在接收到所述复合计算模块返回的握手响应信号时,将计算得到的核运算结果发送至所述复合计算模块。
在本发明实施例中,运算核的输出可以通过握手信号组与下一级(如第一输出控制模块或者复合计算模块)进行互连。
运算核发出握手请求信号(valid信号)时说明该运算核已经完成模运算并得到核运算结果(如模乘结果或模幂结果),表示该运算核可以向接收方发送核运算结果。
在操作类型为复合类型时,运算核的下一级为复合计算模块,运算核在完成模运算得到核运算结果时,可以向所述复合计算模块发送握手请求信号(valid信号),并且在接收到所述复合计算模块返回的握手响应信号(ready信号)时,可以向所述复合计算模块发送data信号,该data信号中携带有该运算核的核运算结果。
进一步地,在某个运算核发送的valid信号和接收的ready信号同时有效时,该运算核的核运算结果可以传输至下一级。
在本发明的一种可选实施例中,所述运算核,还用于在接收到操作类型为单类型,且所述运算核的模运算执行完成时,向所述第一输出控制模块发送握手请求信号,在接收到所述第一输出控制模块返回的握手响应信号时,将计算得到的核运算结果输出至所述第一输出控制模块。
在本发明实施例中,每个运算核可以包括两组握手控制信号,分别与下一级(复合计算模块)或者下一级(第一输出控制模块)进行互连。
以n个运算核中的核1为例,在核1接收到的操作类型为单类型,且核1的模运算执行完成时,核1可以向第一输出控制模块发送握手请求信号(如core1_valid_1),在核1接收到所述第一输出控制模块返回的握手响应信号(如core1_ready_1)时,核1可以向所述第一输出控制模块发送core1_data信号,该core1_data信号中携带有核1的核运算结果。在核1接收到的操作类型为复合类型,且核1的模运算执行完成时,核1可以向复合计算模块发送握手请求信号(如core1_valid_2),在核1接收到所述复合计算模块返回的握手响应信号(如core1_ready_2)时,核1可以向所述复合计算模块发送core1_data信号,该core1_data信号中携带有核1的核运算结果。
在本发明的一种可选实施例中,所述复合计算模块,还用于在累加操作或累乘操作执行完成时,向所述第二输出控制模块发送握手请求信号,在接收到所述第二输出控制模块返回的握手响应信号时,将计算得到的模乘之和结果或模幂之积结果输出至所述第二输出控制模块。
同样地,复合计算模块与第二输出控制模块之间可以通过握手信号组进行互连。第二输出控制模块的输入包括两路握手信号组。一路来自第一输出控制模块,另一路来自复合计算模块。
如果当前模运算指令的操作类型为单类型,第二输出控制模块会接收到来自第一输出控制模块的握手请求信号(valid信号),响应于该握手请求信号(valid信号),第二输出控制模块可以向第一输出控制模块返回握手响应信号(ready信号),第一输出控制模块接收到该握手响应信号(ready信号)后,可以向第二输出控制模块发送携带核运算结果的data信号。
如果当前模运算指令的操作类型为复合类型,第二输出控制模块会接收到来自复合计算模块的握手请求信号(valid信号)。响应于该握手请求信号(valid信号),第二输出控制模块可以向复合计算模块返回握手响应信号(ready信号),复合计算模块接收到该握手响应信号(ready信号)后,可以向第二输出控制模块发送携带模乘之和结果或者模幂之积结果的data信号。
第二输出控制模块可以保存第一输出控制模块输出的各运算核的核运算结果,或者,第二输出控制模块可以保存复合计算模块输出的模乘之和结果或者模幂之积结果。第二输出控制模块等待主机侧通过PCIe总线读取其保存的计算结果。
在本发明的一种可选实施例中,所述芯片还可以包括仲裁电路,用于依据仲裁算法在当前时刻从有效状态的运算核中选择一个进行输出,所述有效状态的运算核指已发送握手请求信号的运算核。
在本发明实施例中,芯片100可以通过多个运算核并行执行来自主机侧的批量模运算指令。由于多个运算核完成运算的时间可能是乱序的,因此,在多个运算核的valid信号(如core1_valid_1, core2_valid_1, … core_n_valid_1)均有效时,可以通过仲裁电路来决定选择哪一个运算核进行输出,生成相应的core1_ready_1, core2_ready_1, …core_n_ready_1信号,这n个握手响应信号中只有一个有效,并返回给各个运算核。只有在某个运算核发送的valid信号和接收的ready信号同时有效时,该运算核可以输出其核运算结果。
需要说明的是,本发明实施例对仲裁电路采用的仲裁算法不做限制。例如可以采用round-robin的方式,或者采用按照运算核的编号从高向低逐次选择的方式等。
在本发明的一种可选实施例中,所述复合计算模块还可以包括状态机,用于轮询各运算核的状态,在确定存在有效状态的运算核时,启动仲裁电路。
参照图5,示出了本发明又一种芯片100实施例的结构框图。如图5所示,该芯片100包括输入控制模块101、复合计算模块102、至少两个运算核103、第一输出控制模块104和第二输出控制模块105,其中,至少两个运算核103可以组成多核阵列。如图5所示,复合计算模块102中包括累加单元和累乘单元,还包括仲裁电路、多路选择器、状态机、以及输出控制逻辑电路。第一输出控制模块104中包括仲裁电路、多路选择器、状态机、以及输出控制逻辑电路。在复合计算模块102中,状态机用于轮询各运算核的状态,在确定存在有效状态的运算核时,启动复合计算模块102中的仲裁电路,该仲裁电路从有效状态的运算核中选择一个通过复合计算模块102中的输出控制逻辑电路输出至第二输出控制模块,此时输出的是模乘之和结果或者模幂之积结果。在第一输出控制模块104中,状态机用于轮询各运算核的状态,在确定存在有效状态的运算核时,启动第一输出控制模块104中的仲裁电路,该仲裁电路从有效状态的运算核中选择一个通过第一输出控制模块104中的输出控制逻辑电路输出至第二输出控制模块,此时输出的是模乘结果或者模幂结果。
综上,本发明实施例提供了一种芯片,该芯片包括输入控制模块、复合计算模块、以及至少两个运算核,每个运算核可以独立实现模乘运算或模幂运算。输入控制模块可以接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核执行模乘或模幂运算。所述运算核根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果;在所述运算核接收到的操作类型为复合类型时,所述运算核还用于将所述核运算结果和所述操作类型发送至所述复合计算模块。所述复合计算模块根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。本发明实施例的芯片通过包含至少两个运算核的多核阵列以及复合计算模块,可以实现大规模的并行化执行基础算子的模运算(如模乘或模幂),以及实现高速执行运算量较大的复合算子的模运算(如模乘之和或模幂之积),将运算量较大的模运算在硬件(芯片)中进行,可以在提高基础算子模运算的执行效率的同时,大幅提高复合算子模运算的执行效率,可以进一步减轻CPU负载,提高计算***的性能,满足更高要求的计算场景。
参照图6,示出了本发明的一种数据处理方法实施例的步骤流程图,所述方法可应用于芯片,所述芯片包括输入控制模块、复合计算模块、以及至少两个运算核,所述方法可以包括如下步骤:
步骤601、通过所述输入控制模块接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核;所述输入数据帧中包括操作类型和操作数据,所述操作类型包括单类型或复合类型,所述单类型包括模乘或模幂,所述复合类型包括模乘之和或模幂之积;
步骤602、通过所述运算核根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果,所述核运算结果包括模乘结果或模幂结果;在所述运算核接收到的操作类型为复合类型时,还通过所述运算核将所述核运算结果和所述操作类型发送至所述复合计算模块;
步骤603、通过所述复合计算模块根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。
可选地,所述复合计算模块包括多路选择器、累加单元、以及累乘单元,所述方法还包括:
通过所述多路选择器接收所述运算核在所述操作类型为模乘之和时输出的模乘结果,并将接收到的模乘结果发送至所述累加单元;或者,通过多路选择器接收所述运算核在所述操作类型为模幂之积时输出的模幂结果,并将接收到的模幂结果发送至所述累乘单元;
通过所述累加单元接收所述多路选择器传输的模乘结果,并对接收到的模乘结果执行累加操作,得到模乘之和结果;
通过所述累乘单元接收所述多路选择器传输的模幂结果,并对接收到的模幂结果执行累乘操作,得到模幂之积结果。
可选地,所述方法还包括:
通过所述运算核在接收到操作类型为复合类型,且所述运算核的模运算执行完成时,向所述复合计算模块发送握手请求信号,在接收到所述复合计算模块返回的握手响应信号时,将计算得到的核运算结果发送至所述复合计算模块。
可选地,所述操作类型还包括输出模乘之和结果或输出模幂之积结果,所述方法还包括:
通过所述复合计算模块在接收到输出模乘之和结果或输出模幂之积结果的操作类型时,输出计算得到的模乘之和结果或模幂之积结果。
可选地,所述芯片还包括仲裁电路,所述方法还包括:
通过所述仲裁电路依据仲裁算法在当前时刻从有效状态的运算核中选择一个进行输出,所述有效状态的运算核指已发送握手请求信号的运算核。
可选地,所述复合计算模块还包括状态机,所述方法还包括:
通过所述状态机轮询各运算核的状态,在确定存在有效状态的运算核时,启动仲裁电路。
可选地,所述芯片还包括第一输出控制模块和第二输出控制模块,所述方法还包括:
通过所述第一输出控制模块接收所述运算核输出的核运算结果,并将接收到的核运算结果输出至所述第二输出控制模块;
通过所述第二输出控制模块将所述第一输出控制模块输出的核运算结果传输至所述主机侧,或者,将所述复合计算模块输出的模乘之和结果或模幂之积结果传输至所述主机侧。
可选地,所述运算核与所述第一输出控制模块之间,所述运算核与所述复合计算模块之间,所述复合计算模块与所述第二输出控制模块之间,以及所述第一输出控制模块与所述第二输出控制模块之间,通过握手信号交换数据。
可选地,所述方法还包括:
通过所述运算核在接收到操作类型为单类型,且所述运算核的模运算执行完成时,向所述第一输出控制模块发送握手请求信号,在接收到所述第一输出控制模块返回的握手响应信号时,将计算得到的核运算结果输出至所述第一输出控制模块。
可选地,所述方法还包括:
通过所述复合计算模块在累加操作或累乘操作执行完成时,向所述第二输出控制模块发送握手请求信号,在接收到所述第二输出控制模块返回的握手响应信号时,将计算得到的模乘之和结果或模幂之积结果输出至所述第二输出控制模块。
可选地,所述芯片包括现场可编程逻辑门阵列FPGA芯片或专用集成电路ASIC芯片。
本发明实施例提供了一种芯片,该芯片包括输入控制模块、复合计算模块、以及至少两个运算核,每个运算核可以独立实现模乘运算或模幂运算。输入控制模块可以接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核执行模乘或模幂运算。所述运算核根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果;在所述运算核接收到的操作类型为复合类型时,所述运算核还用于将所述核运算结果和所述操作类型发送至所述复合计算模块。所述复合计算模块根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。本发明实施例的芯片通过包含至少两个运算核的多核阵列以及复合计算模块,可以实现大规模的并行化执行基础算子的模运算(如模乘或模幂),以及实现高速执行运算量较大的复合算子的模运算(如模乘之和或模幂之积),将运算量较大的模运算在硬件(芯片)中进行,可以在提高基础算子模运算的执行效率的同时,大幅提高复合算子模运算的执行效率,可以进一步减轻CPU负载,提高计算***的性能,满足更高要求的计算场景。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
对于方法实施例而言,由于其与装置实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行图6所示的数据处理方法。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行一种数据处理方法,所述方法应用于芯片,所述芯片包括输入控制模块、复合计算模块、以及至少两个运算核,所述方法包括:通过所述输入控制模块接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核;所述输入数据帧中包括操作类型和操作数据,所述操作类型包括单类型或复合类型,所述单类型包括模乘或模幂,所述复合类型包括模乘之和或模幂之积;通过所述运算核根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果,所述核运算结果包括模乘结果或模幂结果;在所述运算核接收到的操作类型为复合类型时,还通过所述运算核将所述核运算结果和所述操作类型发送至所述复合计算模块;通过所述复合计算模块根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
以上对本发明所提供的一种芯片和数据处理方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (23)
1.一种芯片,其特征在于,所述芯片包括输入控制模块、复合计算模块、以及至少两个运算核,其中,
所述输入控制模块,用于接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核;所述输入数据帧中包括操作类型和操作数据,所述操作类型包括单类型或复合类型,所述单类型包括模乘或模幂,所述复合类型包括模乘之和或模幂之积;
所述运算核,用于根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果,所述核运算结果包括模乘结果或模幂结果;在所述运算核接收到的操作类型为复合类型时,所述运算核还用于将所述核运算结果和所述操作类型发送至所述复合计算模块;
所述复合计算模块,用于根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。
2.根据权利要求1所述的芯片,其特征在于,所述复合计算模块包括多路选择器、累加单元、以及累乘单元;其中,
所述多路选择器,用于接收所述运算核在所述操作类型为模乘之和时输出的模乘结果,并将接收到的模乘结果发送至所述累加单元;或者,用于接收所述运算核在所述操作类型为模幂之积时输出的模幂结果,并将接收到的模幂结果发送至所述累乘单元;
所述累加单元,用于接收所述多路选择器传输的模乘结果,并对接收到的模乘结果执行累加操作,得到模乘之和结果;
所述累乘单元,用于接收所述多路选择器传输的模幂结果,并对接收到的模幂结果执行累乘操作,得到模幂之积结果。
3.根据权利要求1所述的芯片,其特征在于,所述运算核,还用于在接收到操作类型为复合类型,且所述运算核的模运算执行完成时,向所述复合计算模块发送握手请求信号,在接收到所述复合计算模块返回的握手响应信号时,将计算得到的核运算结果发送至所述复合计算模块。
4.根据权利要求1所述的芯片,其特征在于,所述操作类型还包括输出模乘之和结果或输出模幂之积结果,所述复合计算模块,还用于在接收到输出模乘之和结果或输出模幂之积结果的操作类型时,输出计算得到的模乘之和结果或模幂之积结果。
5.根据权利要求1所述的芯片,其特征在于,所述芯片还包括仲裁电路,用于依据仲裁算法在当前时刻从有效状态的运算核中选择一个进行输出,所述有效状态的运算核指已发送握手请求信号的运算核。
6.根据权利要求5所述的芯片,其特征在于,所述复合计算模块还包括状态机,用于轮询各运算核的状态,在确定存在有效状态的运算核时,启动仲裁电路。
7.根据权利要求1所述的芯片,其特征在于,所述芯片还包括第一输出控制模块和第二输出控制模块;其中,
所述第一输出控制模块,用于接收所述运算核输出的核运算结果,并将接收到的核运算结果输出至所述第二输出控制模块;
所述第二输出控制模块,用于将所述第一输出控制模块输出的核运算结果传输至所述主机侧,或者,将所述复合计算模块输出的模乘之和结果或模幂之积结果传输至所述主机侧。
8.根据权利要求7所述的芯片,其特征在于,所述运算核与所述第一输出控制模块之间,所述运算核与所述复合计算模块之间,所述复合计算模块与所述第二输出控制模块之间,以及所述第一输出控制模块与所述第二输出控制模块之间,通过握手信号交换数据。
9.根据权利要求7所述的芯片,其特征在于,所述运算核,还用于在接收到操作类型为单类型,且所述运算核的模运算执行完成时,向所述第一输出控制模块发送握手请求信号,在接收到所述第一输出控制模块返回的握手响应信号时,将计算得到的核运算结果输出至所述第一输出控制模块。
10.据权利要求7所述的芯片,其特征在于,所述复合计算模块,还用于在累加操作或累乘操作执行完成时,向所述第二输出控制模块发送握手请求信号,在接收到所述第二输出控制模块返回的握手响应信号时,将计算得到的模乘之和结果或模幂之积结果输出至所述第二输出控制模块。
11.根据权利要求1所述的芯片,其特征在于,所述芯片包括现场可编程逻辑门阵列FPGA芯片或专用集成电路ASIC芯片。
12.一种数据处理方法,其特征在于,所述方法应用于芯片,所述芯片包括输入控制模块、复合计算模块、以及至少两个运算核,所述方法包括:
通过所述输入控制模块接收并解析来自主机侧的输入数据帧,并将解析得到的操作类型和操作数据发送至运算核;所述输入数据帧中包括操作类型和操作数据,所述操作类型包括单类型或复合类型,所述单类型包括模乘或模幂,所述复合类型包括模乘之和或模幂之积;
通过所述运算核根据接收到的操作类型对接收到的操作数据执行模运算,得到核运算结果,所述核运算结果包括模乘结果或模幂结果;在所述运算核接收到的操作类型为复合类型时,还通过所述运算核将所述核运算结果和所述操作类型发送至所述复合计算模块;
通过所述复合计算模块根据接收到的操作类型对接收到的核运算结果进行累加操作或累乘操作,得到模乘之和结果或模幂之积结果。
13.根据权利要求12所述的方法,其特征在于,所述复合计算模块包括多路选择器、累加单元、以及累乘单元,所述方法还包括:
通过所述多路选择器接收所述运算核在所述操作类型为模乘之和时输出的模乘结果,并将接收到的模乘结果发送至所述累加单元;或者,通过多路选择器接收所述运算核在所述操作类型为模幂之积时输出的模幂结果,并将接收到的模幂结果发送至所述累乘单元;
通过所述累加单元接收所述多路选择器传输的模乘结果,并对接收到的模乘结果执行累加操作,得到模乘之和结果;
通过所述累乘单元接收所述多路选择器传输的模幂结果,并对接收到的模幂结果执行累乘操作,得到模幂之积结果。
14.根据权利要求12所述的方法,其特征在于,所述方法还包括:
通过所述运算核在接收到操作类型为复合类型,且所述运算核的模运算执行完成时,向所述复合计算模块发送握手请求信号,在接收到所述复合计算模块返回的握手响应信号时,将计算得到的核运算结果发送至所述复合计算模块。
15.根据权利要求12所述的方法,其特征在于,所述操作类型还包括输出模乘之和结果或输出模幂之积结果,所述方法还包括:
通过所述复合计算模块在接收到输出模乘之和结果或输出模幂之积结果的操作类型时,输出计算得到的模乘之和结果或模幂之积结果。
16.根据权利要求12所述的方法,其特征在于,所述芯片还包括仲裁电路,所述方法还包括:
通过所述仲裁电路依据仲裁算法在当前时刻从有效状态的运算核中选择一个进行输出,所述有效状态的运算核指已发送握手请求信号的运算核。
17.根据权利要求16所述的方法,其特征在于,所述复合计算模块还包括状态机,所述方法还包括:
通过所述状态机轮询各运算核的状态,在确定存在有效状态的运算核时,启动仲裁电路。
18.根据权利要求12所述的方法,其特征在于,所述芯片还包括第一输出控制模块和第二输出控制模块,所述方法还包括:
通过所述第一输出控制模块接收所述运算核输出的核运算结果,并将接收到的核运算结果输出至所述第二输出控制模块;
通过所述第二输出控制模块将所述第一输出控制模块输出的核运算结果传输至所述主机侧,或者,将所述复合计算模块输出的模乘之和结果或模幂之积结果传输至所述主机侧。
19.根据权利要求18所述的方法,其特征在于,所述运算核与所述第一输出控制模块之间,所述运算核与所述复合计算模块之间,所述复合计算模块与所述第二输出控制模块之间,以及所述第一输出控制模块与所述第二输出控制模块之间,通过握手信号交换数据。
20.根据权利要求18所述的方法,其特征在于,所述方法还包括:
通过所述运算核在接收到操作类型为单类型,且所述运算核的模运算执行完成时,向所述第一输出控制模块发送握手请求信号,在接收到所述第一输出控制模块返回的握手响应信号时,将计算得到的核运算结果输出至所述第一输出控制模块。
21.据权利要求18所述的方法,其特征在于,所述方法还包括:
通过所述复合计算模块在累加操作或累乘操作执行完成时,向所述第二输出控制模块发送握手请求信号,在接收到所述第二输出控制模块返回的握手响应信号时,将计算得到的模乘之和结果或模幂之积结果输出至所述第二输出控制模块。
22.根据权利要求12所述的方法,其特征在于,所述芯片包括现场可编程逻辑门阵列FPGA芯片或专用集成电路ASIC芯片。
23.一种机器可读介质,其上存储有指令,当所述指令由装置的一个或多个处理器执行时,使得装置执行如权利要求12至22任一所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111242097.3A CN113704174A (zh) | 2021-10-25 | 2021-10-25 | 一种芯片和数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111242097.3A CN113704174A (zh) | 2021-10-25 | 2021-10-25 | 一种芯片和数据处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113704174A true CN113704174A (zh) | 2021-11-26 |
Family
ID=78646811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111242097.3A Pending CN113704174A (zh) | 2021-10-25 | 2021-10-25 | 一种芯片和数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113704174A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880686A (zh) * | 2022-05-30 | 2022-08-09 | 杭州医康慧联科技股份有限公司 | 基于联邦学习的硬件加速数据传输方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113031920A (zh) * | 2021-05-20 | 2021-06-25 | 华控清交信息科技(北京)有限公司 | 一种芯片和用于芯片的批量模运算方法 |
CN113032846A (zh) * | 2021-05-20 | 2021-06-25 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN113032848A (zh) * | 2021-05-20 | 2021-06-25 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法和用于数据处理的芯片 |
US20210200548A1 (en) * | 2019-12-30 | 2021-07-01 | Montage Technology Co., Ltd. | Processing devices and distributed processing systems |
-
2021
- 2021-10-25 CN CN202111242097.3A patent/CN113704174A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210200548A1 (en) * | 2019-12-30 | 2021-07-01 | Montage Technology Co., Ltd. | Processing devices and distributed processing systems |
CN113031920A (zh) * | 2021-05-20 | 2021-06-25 | 华控清交信息科技(北京)有限公司 | 一种芯片和用于芯片的批量模运算方法 |
CN113032846A (zh) * | 2021-05-20 | 2021-06-25 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN113032848A (zh) * | 2021-05-20 | 2021-06-25 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法和用于数据处理的芯片 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880686A (zh) * | 2022-05-30 | 2022-08-09 | 杭州医康慧联科技股份有限公司 | 基于联邦学习的硬件加速数据传输方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105930902A (zh) | 一种神经网络的处理方法、*** | |
CN113031920B (zh) | 一种芯片和用于芯片的批量模运算方法 | |
CN114281521B (zh) | 优化深度学习异构资源通信效率方法、***、设备及介质 | |
CN115880132A (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
Peng et al. | Diversity vs. parallelism in distributed computing with redundancy | |
CN113704174A (zh) | 一种芯片和数据处理方法 | |
Chen et al. | A parallel implementation of montgomery multiplication on multicore systems: algorithm, analysis, and prototype | |
EP4310700A1 (en) | Matrix multiplier, matrix computing method, and related device | |
CN112446007A (zh) | 一种矩阵运算方法、运算装置以及处理器 | |
CN114237878A (zh) | 指令控制方法、电路、装置及相关设备 | |
CN115408061B (zh) | 复数矩阵运算的硬件加速方法、装置、芯片及存储介质 | |
CN109460535B (zh) | 一种基于云的有限域矩阵求逆装置及求逆方法 | |
CN111078286A (zh) | 数据通信方法、计算***和存储介质 | |
CN101561858A (zh) | 密码认证设备、***和方法 | |
CN104156332A (zh) | 基于外部pci-e连接的高性能并行计算方法 | |
Ma et al. | Accelerating SVD computation on FPGAs for DSP systems | |
CN114172644A (zh) | 一种pci密码卡的优化椭圆曲线公钥密码的方法及*** | |
De Stefani | Communication-optimal parallel standard and karatsuba integer multiplication in the distributed memory model | |
EP4042271B1 (en) | Method for performing mutualized calculations of multiple cryptographic operations | |
CN115529364B (zh) | 一种5g物理层的任务处理方法、装置、设备及存储介质 | |
CN108596332A (zh) | 有符号整数求积方法、终端设备及计算机可读存储介质 | |
CN113535637B (zh) | 一种运算加速单元及其运行方法 | |
CN115113848B (zh) | 签名/验签电路、装置、设备、方法及坐标还原电路 | |
CN111740820B (zh) | 基于ecc的有限域运算调度方法、装置、设备、介质及*** | |
CN114265873A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211126 |