一种数据处理方法和处理核

文档序号:1815468 发布日期:2021-11-09 浏览:20次 >En<

阅读说明:本技术 一种数据处理方法和处理核 (Data processing method and processing core ) 是由 王雪强 李艺 于 2021-10-12 设计创作,主要内容包括:本发明实施例提供一种数据处理方法和处理核。其中的方法包括:接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。本发明实施例在减小电路面积开销的基础上,可以提高模运算的速度和并发性。(The embodiment of the invention provides a data processing method and a processing core. The method comprises the following steps: receiving a calculation instruction, wherein the calculation instruction carries input data and a calculation type, and the calculation type comprises a modular multiplication type or a modular exponentiation type; determining a state sequence of the state machine according to the calculation type, wherein each state in the state sequence corresponds to a preset operation step; switching the states of the state machine according to the state sequence, and outputting a first control signal to a corresponding multiplexer in each state of the state machine so as to control the calculation data input to the Montgomery calculation unit through the multiplexer in each state, so that the Montgomery calculation unit executes the operation steps corresponding to each state based on the calculation data; wherein the calculation data comprises the input data and/or intermediate results obtained in a previous state; and obtaining a calculation result of the calculation instruction after the operation step corresponding to the last state of the state sequence is executed. The embodiment of the invention can improve the speed and concurrency of modular operation on the basis of reducing the circuit area overhead.)

一种数据处理方法和处理核

技术领域

本发明涉及计算机技术领域,尤其涉及一种数据处理方法和处理核。

背景技术

安全隐私计算采用以半同态或同态加密协议为基础的密码协议进行大数据的密文计算及传输。大整数的模乘运算和模幂运算,是实现半同态、同态加密算法的基础运算单元。此外,在一个典型的半同态、同态算法中,通常是既有模乘运算也有模幂运算,因此,算法的底层实现需要同时支持大整数的模乘运算和大整数的模幂运算。

大整数的模乘运算和模幂运算需要进行多次迭代操作,计算代价较高,若直接通过软件进行计算,计算效率难以满足海量数据的运算场景需求。若通过硬件电路进行计算,由于模乘运算和模幂运算各自为单独的模块,整体电路面积将是各运算单元电路面积之和,导致电路资源开销较大,不仅需要消耗大量的硬件成本,而且影响隐私计算系统的计算性能。

发明内容

本发明实施例提供一种数据处理方法和执行所述数据处理方法的处理核,可以减少电路面积的开销,提高隐私计算系统的计算性能。

为了解决上述问题,本发明实施例公开了一种数据处理方法,所述方法应用于芯片中的处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器,所述方法包括:

接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;

根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;

根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;

在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。

可选地,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。

可选地,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:

在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));

在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));

在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');

在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。

可选地,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:

在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));

在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));

在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);

在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;

在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。

可选地,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。

可选地,所述处理核还包括解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述方法还包括:

在所述状态机的各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。

可选地,所述处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。

另一方面,本发明实施例公开了一种处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器;所述处理核用于执行所述芯片分配的计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型,所述计算类型发送至所述状态机;其中,

所述多路选择器,分别与所述状态机、所述蒙哥马利计算单元、以及相应输入数据的存储器相连,用于在接收到所述状态机输出的第一控制信号时,从相应的存储器中读取计算数据,并将读取的计算数据输入所述蒙哥马利计算单元;

所述状态机,分别与所述多路选择器和所述蒙哥马利计算单元相连,用于根据所述计算类型,确定状态序列,根据所述状态序列切换状态,并在各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;

所述蒙哥马利计算单元,分别与所述多路选择器和所述状态机相连,用于在各状态下接收相应的多路选择器输出的计算数据,并基于接收的计算数据执行各状态对应的运算步骤,在所述状态序列的最后一个状态对应的运算步骤执行完成后,输出所述计算指令的计算结果。

可选地,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。

可选地,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述状态机,具体用于:

在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));

在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));

在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');

在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。

可选地,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述状态机,具体用于:

在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));

在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));

在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);

在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;

在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。

可选地,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。

可选地,所述处理核还包括解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述状态机还用于在各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。

可选地,所述芯片中的处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。

再一方面,本发明实施例公开了一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如前述一个或多个所述的数据处理方法。

本发明实施例包括以下优点:

本发明实施例提出一种应用于芯片处理核的电路结构设计,所述处理核的电路结构包括:状态机、蒙哥马利计算单元、以及多路选择器。处理核接收到计算指令之后,可以识别计算指令中携带的计算类型(模乘类型或者模幂类型),并根据识别的计算类型,确定所述状态机的状态序列,根据所述状态序列切换状态机的状态。在所述状态机的不同状态下,可以向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤。所述状态序列中的各状态对应预设的运算步骤,通过切换状态机的状态,可以控制蒙哥马利计算单元执行不同计算类型下的不同运算步骤。此外,通过切换状态机的状态,可以控制输入所述蒙哥马利计算单元的计算数据。由此,本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以及控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。相较于对模乘运算和模幂运算分别设置独立的电路模块,可以极大减少芯片处理核的电路面积开销,在减小电路面积开销的基础上,可以提高模运算的速度和并发性,进而可以提高隐私计算的效率,提高隐私计算系统的性能。

附图说明

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

图1是本发明的一种数据处理方法实施例的步骤流程图;

图2是本发明的一种状态机的状态序列中各状态转换的示意图;

图3是本发明的一种用于芯片处理核的电路结构示意图;

图4是本发明的一种处理核400实施例的结构框图。

具体实施方式

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

方法实施例

参照图1,示出了本发明的一种数据处理方法实施例的步骤流程图,所述方法应用于芯片中的处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器,所述方法具体可以包括如下步骤:

步骤101、接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;

步骤102、根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;

步骤103、根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;

步骤104、在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。

在以密码学为基础的隐私计算应用中,需要在数据中心或者服务器上进行大量的模运算,如模乘运算、模幂运算等,这些模运算是隐私计算中的基础运算。

本发明的核心在于,提出一种应用于芯片处理核的集成电路设计,该集成电路既可以实现模乘运算又可以实现模幂运算。相较于对模乘运算和模幂运算分别设置独立的电路模块,可以极大减少芯片处理核的电路面积开销。该集成电路可应用于芯片中的处理核,使得芯片中的每个处理核都可以同时支持模乘运算和模幂运算。通过该芯片可以并行处理大数据量的模乘运算和/或模幂运算,在减小电路面积开销的基础上,可以提高模运算的速度和并发性,进而可以提高隐私计算的效率,提高隐私计算系统的性能。

所述芯片可应用于以密码学为基础的隐私计算系统中,例如,一个应用场景是基于该隐私计算系统实现的私有信息检索(Private Information Retrieval,PIR)系统,在进行数据查询时,原始的明文数据首先通过半同态的密码协议,生成相应的密文数据,之后基于密文数据进行查询操作。由此可以实现在用户向数据库提交查询时,可以在用户的私有信息不被泄露计算的情况下完成查询。其中,半同态的密码协议中主要进行了批量的模幂运算。

又如,另一个应用场景是政务大数据的隐私计算应用场景、医疗科研、银行金融业务相关应用场景中,使用多方数据进行XGBoost等机器学习进行建模。具体地,传统机器学习算法中明文的加法运算,通过同态密码协议后,转变为密文的同态加法运算,而密文的同态加法运算需要进行批量的模幂运算。

进一步地,所述芯片可以包括但不限于FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)芯片或ASIC(Application Specific Integrated Circuit,专用集成电路)芯片。

可选地,所述芯片包含的处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。

在具体实施中,每个芯片所包含的运算核的数量,根据芯片大小不同而不同。如FPGA,可以容纳上百个运算核;而定制的ASIC芯片,可以达到上千个运算核。

蒙哥马利模乘是实现模乘运算和模幂运算的基础算子。本发明实施例将蒙哥马利模乘算法记为算法1,算法1的描述如下:

输入:

输出:

初始化:S0=0;

1:

2:

3:

4:

5:end

6:

7: end

8:

算法1为基为r=2k的蒙哥马利模乘算法。算法1中的符号说明如下:

n为输入数据及模数的位数,示例性的,n=2048bit。

k为基的位数,示例性的,k=64bit。以基数k,将n分解成多个块,每个块的大小为k位,如果n=2048bit,k=64bit,那么一个2048bit的大整数将被分解为32个块,每个块的位宽为64bit。

r=2k表示基的大小。

yi表示输入变量Y的第i个块。

xj表示输入变量X的第j个块;x0表示变量X的第0个块。

qi表示在第i次循环中,中间变量q的取值。

pj表示模数P的第j个块。

表示在第i次循环中,中间变量S的第j个块。表示在第i+1次循环中,中间变量S的第j个块。

的求解方式为:先计算中间变量,再计算求出结果。

为便于描述,本发明实施例将蒙哥马利模乘运算用符号mont_mul来表示,则上述算法1的计算可以表示为:

基于算法1的蒙哥马利模乘运算可以实现模幂运算xe(mod P),模幂运算可以由若干个蒙哥马利模乘算法进行反复迭代实现。模幂运算的核心思想是先将原始的输入数据x由初始域(数域)转换至蒙哥马利域;然后根据幂数的位宽,进行若干次蒙哥马利模乘操作;最后再将结果从蒙哥马利域转换回到数域。发明实施例将模幂运算的算法记为算法2,算法2的描述如下:

输入:x、e、p、r,且满足:

输出:

1:

2:

3:

4:

5:

6:

算法2中的符号说明如下:

n为输入数据及模数的位数,示例性的,n=2048bit。

x为输入的长度上限为n的底数。

e为输入的长度上限为n的指数。

P为输入的长度上限为n的模数。

k为基的位数。示例性的,k=64bit。以基数k,将n分解成多个块,每个块的大小为k位,如果n=2048bit,k=64bit,那么一个2048bit的大整数将被分解为32个块,每个块的位宽为64bit。

,其中,是指的上限,如果n能够整除k,那么取,如k=16bit,n=2048bit,;如果n不能够整除k,取相除后的整数上限,如k=20bit,n=2048bit,

在算法2中,mont_mul表示前述的蒙哥马利模乘运算。需要说明的是,在算法2的第1行中增加了“mod P”,是因为r2的值可能超出P,因此需要再对P取模,转回到0~P的范围内。

基于算法1的蒙哥马利模乘运算可以实现模乘运算x*y(mod P)。发明实施例将模乘运算的算法记为算法3,算法3的描述如下:

输入:x、y、p、r,且满足:

输出:

1:

2:

3:

4:

算法3中的符号说明如下:

n为输入数据及模数的位数,示例性的,n=2048bit。

x为输入的长度上限为n的乘数,y为输入的长度上限为n的乘数。

P为输入的长度上限为n的模数。

k为基的位数。示例性的,k=64bit。以基数k,将n分解成多个块,每个块的大小为k位,如果n=2048bit,k=64bit,那么一个2048bit的大整数将被分解为32个块,每个块的位宽为64bit。

,其中,是指的上限,如果n能够整除k,那么取,如k=16bit,n=2048bit,;如果n不能够整除k,取相除后的整数上限,如k=20bit,n=2048bit,

算法2和算法3的第一步操作均为通过计算mont_mul(x, r2(mod p)),将输入数据从初始域转换至蒙哥马利域(其中x是初始域的元素)。算法2和算法3的最后一步操作均为通过计算mont_mul(C,1),将结果从蒙哥马利域转换至初始域(其中C是初始域的元素)。此外,算法2和算法3的中间操作步骤均为蒙哥马利模乘运算,区别在于二者对应不同的输入数据并且模幂运算中包含了循环操作。

本发明实施例根据算法2和算法3中相同的操作步骤和不同的操作步骤,对算法2和算法3进行改进和融合,得到算法4。具体地,提取二者相同的操作步骤,对于不同的操作步骤,通过设置状态机,在不同状态下控制蒙哥马利模乘运算的输入,来实现相应的运算步骤。算法4的描述如下:

输入:x、y、e、p、r,且满足:

输出:

或者

1:

2:

3:

4:

5:

6:

7:

8:

算法4中的符号说明如下:

mode表示计算类型。示例性的,mode=1表示模幂类型,mod=0表示模乘类型。n为输入数据及模数的位数,示例性的,n=2048bit。

x为模幂运算中输入的长度上限为n的底数,或者,x为模乘运算中输入的长度上限为n的乘数。

y为模乘运算中输入的长度上限为n的乘数。

e为模幂运算中输入的长度上限为n的指数。

P 为输入的长度上限为n的模数。

k为基的位数。示例性的,k=64bit。以基数k,将n分解成多个块,每个块的大小为k位,如果n=2048bit,k=64bit,那么一个2048bit的大整数将被分解为32个块,每个块的位宽为64bit。

,其中,是指的上限,如果n能够整除k,那么取,如k=16bit,n=2048bit,;如果n不能够整除k,取相除后的整数上限,如k=20bit,n=2048bit,

在算法4中,当mod=0(模乘运算)时,需要执行第1行、第2行、第4行、第8行的步骤。当mod=1(模幂运算)时,需要执行第1行、第3行、第5行、第6行、第7行、第8行的步骤。本发明实施例基于算法4,实现了一种应用于芯片处理核的集成电路设计。所述处理核的电路结构主要包括如下模块:状态机、蒙哥马利计算单元、以及至少一个多路选择器。其中,所述蒙哥马利计算单元可用于执行上述算法1的蒙哥马利模乘运算。在不同的计算类型下,可以设置不同的状态序列,也即,状态机可以经历不同的状态。在状态机的不同状态下,可以向不同的多路选择器输出第一控制信号以控制输入蒙哥马利计算单元的计算数据。所述状态序列中的各状态对应预设的运算步骤,状态机通过切换自身的状态,可以控制蒙哥马利计算单元接收当前状态下待执行的运算步骤所需的计算数据,并基于接收到的计算数据执行当前状态对应的运算步骤。

在具体实施中,通过包含多个所述处理核的芯片,可以实现批量的模运算。例如,主机侧可以将待进行批量模运算的n份输入数据传输至芯片,芯片中的输入控制模块基于多核调度算法,产生相应的控制信号,将接收到的n份输入数据分配到n个运算核并触发计算指令,以使n个运算核并行进行模运算。每个运算核能够基于算法4独立实现模乘运算或模幂运算。

处理核接收到计算指令之后,可以解析得到计算指令中携带的计算类型,并将计算类型发送至状态机,状态机根据接收到的计算类型确定状态序列,并根据状态序列切换自身的状态。不同状态可以对应不同计算类型下的不同运算步骤。通过状态机所处的不同状态,可以控制蒙哥马利计算单元执行不同计算类型下的不同运算步骤。此外,通过状态机所处的不同状态,可以控制所述蒙哥马利计算单元获取的计算数据。由此,本发明实施例通过切换所述状态机的状态,可以控制蒙哥马利计算单元执行相应计算类型下的相应运算步骤。例如,在mod=0(模乘运算)时,通过切换所述状态机的状态,可以控制蒙哥马利计算单元依次执行算法4中第1行、第2行、第4行、第8行的步骤。在mod=1(模幂运算)时,通过切换所述状态机的状态,可以控制蒙哥马利计算单元依次执行算法4中第1行、第3行、第5行、第6行、第7行、第8行的步骤。

此外,通过切换所述状态机的状态,还可以控制蒙哥马利计算单元在执行某个运算步骤时获取的计算数据。具体地,本发明实施例在所述处理核的电路结构中增加了多路选择器。进一步地,每个输入数据可以存储在独立的存储器中,每个输入数据的存储器可以对应有多路选择器。本发明实施例可以根据状态机的状态,向相应的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据。

一个示例中,在计算模乘运算时,处理核接收到的输入数据包括:x、y、r2、P、以及计算类型mode(如mode=0)。处理核在接收到上述输入数据后,将数据x存储到存储器A中;将数据y存储到存储器B中;将数据r2存储到存储器r2中;将数据P存储到存储器P中。存储器A、存储器B、存储器P分别对应有各自的多路选择器。需要说明的是,每个存储器可以分别对应一个多路选择器,或者,多个存储器可以对应一个多路选择器。

假设在状态机所处的某个状态下,状态机向存储器A对应的多路选择器输出第一控制信号,以控制存储器A对应的多路选择器从存储器A中读取数据x,并将数据x输入所述蒙哥马利计算单元;同时,状态机向存储器r2对应的多路选择器输出第一控制信号,以控制存储器r2对应的多路选择器从存储器r2中读取数据r2,并将数据r2输入所述蒙哥马利计算单元。由此,在该状态下,所述蒙哥马利计算单元获取的计算数据包括输入数据x和r2

在本发明实施例中,所述计算数据可以根据所述输入数据和/或之前状态下计算得到的中间结果所得到。例如,在mod=0(模乘运算)时,蒙哥马利计算单元执行算法4中第1行的步骤时,所需的计算数据为计算指令中携带的输入数据,如x和r2。蒙哥马利计算单元执行算法4中第4行的步骤时,所需的计算数据为之前状态计算得到的中间结果x'和y'。

当最后一个状态对应的运算步骤执行完毕后,可以得到所述计算指令的计算结果,如模乘运算结果或者模幂运算结果。

在本发明的一种可选实施例中,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。

本发明实施例对算法4中的各操作步骤,设置对应状态机的不同状态。参照图2,示出了本发明的一种状态机的状态序列中各状态转换的示意图。

如图2所示,在mode=0(模乘类型)时,状态机的状态序列包括如下状态:状态1、状态2、状态4、以及状态7。状态机启动之后经历如下状态转换:状态1、状态2、状态4、以及状态7。状态7对应的运算步骤执行完成之后即可输出模乘运算的结果。在mode=1(模幂类型)时,状态机的状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7。状态机启动之后经历如下状态转换:状态1、状态3、状态5、状态6、以及状态7。状态7对应的运算步骤执行完成之后即可输出模幂运算的结果。

状态序列中各状态对应预设的运算步骤。具体地,在mode=0(模乘类型)时,状态1对应运算步骤:x'=mont_mul(x,r2(mod P));状态2对应运算步骤:y'=mont_mul(y,r2(modP));状态4对应运算步骤:C=mont_mul(x',y');状态7对应运算步骤:mont_mul(C,1)。

在mode=1(模幂类型)时,状态1对应运算步骤:x'=mont_mul(x,r2(mod P));状态3对应运算步骤:C=mont_mul(1,r2(mod P));状态5对应运算步骤:C=mont_mul(C,C);状态6对应运算步骤:预设循环操作;状态7对应运算步骤:mont_mul(C,1)。其中,预设循环操作为算法4的第5行至第7行。

其中,状态1对应模乘运算和模幂运算中的从初始域向蒙哥马利域转换的运算步骤,状态7对应模乘运算和模幂运算中的从蒙哥马利域向初始域转换的运算步骤。状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤。状态3和状态5对应模幂运算过程中的蒙哥马利模乘运算步骤。状态6对应模幂运算中的迭代循环运算步骤。

如图2所示,模乘运算中的状态2和状态4,与模幂运算中的状态3和状态5,均对应蒙哥马利模乘运算步骤,但是需要输入的计算数据不同。本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以及控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。

在本发明的一种可选实施例中,所述输入数据中的每个数据可以存储在单独的存储器中;所述处理核的电路结构中包括至少一个多路选择器,每个输入数据的存储器对应有多路选择器。

如图2所示,在状态机的不同状态下,蒙哥马利计算单元执行不同的运算步骤,并且不同的运算步骤所需的计算数据不同。此外,有些计算数据在中间过程中需要再次使用,比如模数P,每一步运算都要使用;又比如模幂运算中的指数e,在整个循环过程中都要使用。因此,本发明实施例将接收到的输入数据中的每个数据存储在单独的存储器中。

一个示例中,在计算模乘运算时,输入数据包括:x、y、r2、P、以及计算类型mode(如mode=0)。处理核在接收到上述输入数据后,将数据x存储到存储器A中;将数据y存储到存储器B中;将数据r2存储到存储器r2中;将数据P存储到存储器P中。

需要说明的是,上述存储器A、存储器B、存储器r2、以及存储器P的名称仅为了便于描述,并不用于限制存储器的种类。所述存储器A、存储器B、存储器r2、以及存储器P可以为半导体存储器,如SRAM(Static Random-Access Memory,静态随机存取存储器)/DRAM(Dynamic Random Access Memory,动态随机存取存储器)。

处理核可以根据状态机的状态,控制相应的多路选择器从相应的存储器中获取数据,并将所述多路选择器获取的数据作为所述蒙哥马利计算单元的输入数据。例如,在状态机启动并进入到状态1时,可以向存储器A对应的多路选择器输出第一控制信号,以控制存储器A对应的多路选择器从存储器A中读取数据x,并将读取的数据x输入至蒙哥马利计算单元;同样地,可以向存储器r2对应的多路选择器输出第一控制信号,以控制存储器r2对应的多路选择器从存储器r2中读取数据r2,并将读取的数据r2输入至蒙哥马利计算单元。

本发明实施例通过多路选择器实现通过不同状态下状态机的输出,来控制多路选择器的输入和输出,使得在不同状态下蒙哥马利计算单元可以获取待执行的操作步骤所需的不同的计算数据,进而可以通过蒙哥马利计算单元执行不同状态下的操作步骤,实现了模乘运算和模幂运算的高度融合。由于多路选择器的体积较小可以忽略,因此,本发明实施例能够在仅增加多路选择器而不增加电路体积的情况下,通过一个电路模块实现模乘运算和模幂运算,在提高模运算效率的同时,可以降低芯片的硬件成本。

在本发明的一种可选实施例中,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:

在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));

在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));

在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');

在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。

在本发明实施例中,当处理核接收到的计算指令中携带的计算类型为模乘类型时,状态机需经历如下状态:状态1、状态2、状态4、以及状态7,每个状态对应蒙哥马利计算单元待执行的各运算步骤,在状态7对应的运算步骤执行完成后,可以输出模乘运算的结果。

参照图3,示出了本发明实施例的一种用于芯片处理核的电路结构示意图。在本发明实施例中,多路选择器用MUX表示。

如图3所示,处理核接收到的计算指令中携带的计算类型为模乘类型(如mode=0)时,输入数据包括:x、y、r2、P、以及mode。其中,数据x存储在存储器A中;数据y存储在存储器B中;数据r2存储在存储器r2中;数据P存储在存储器P中;mode发送至状态机,并启动状态机。

状态机接收到mode=0的计算类型之后,首先进行状态1,然后向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括输入数据x和r2,以通过蒙哥马利计算单元计算x'=mont_mul(x,r2(mod P))(算法4中第1行)。

在本发明的一种可选实施例中,所述处理核还包括可以解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述方法还可以包括:

在所述状态机的各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。

例如,在该示例中,状态机还可以向解码器(本发明实施例中记为DEMUX)输出第二控制信号,以将蒙哥马利计算单元本次计算输出的中间结果x'通过解码器输出至指定的存储器,如输出到存储器A中。

待状态1对应的运算步骤执行完毕后,状态机切换至状态2,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括输入数据y和r2,以通过蒙哥马利计算单元计算y'=mont_mul(y,r2(mod P))(算法4中第2行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果y'通过解码器输出至指定的存储器,如输出到存储器B中。

待状态2对应的运算步骤执行完毕后,状态机切换至状态4,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过蒙哥马利计算单元计算C=mont_mul(x',y')(算法4中第4行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果C通过解码器输出至指定的存储器,如输出到存储器B中。

待状态4对应的运算步骤执行完毕后,状态机切换至状态7,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括状态4下得到的中间结果C,以通过蒙哥马利计算单元计算mont_mul(C,1)(算法4中第8行),该计算值即为模乘运算的最终结果prod=x*y(modP);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的模乘运算结果prod通过解码器输出至指定的存储器,如输出到存储器B中。

在本发明的一种可选实施例中,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:

在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));

在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));

在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);

在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;

在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。

在本发明实施例中,当处理核接收到的计算指令中携带的计算类型为模幂类型时,状态机需经历如下状态:状态1、状态3、状态5、状态6、以及状态7,每个状态对应蒙哥马利计算单元待执行的各运算步骤,在状态7对应的运算步骤执行完成后,可以输出模幂运算的结果。

如图3所示,处理核接收到的计算指令中携带的计算类型为模幂类型(如mode=1)时,输入数据包括:x、e、r2、P、以及mode。其中,数据x存储在存储器A中;数据e存储在存储器e中;数据r2存储在存储器r2中;数据P存储在存储器P中;数据mode发送至状态机,并启动状态机。

状态机接收到mode=1之后,首先进行状态1,然后向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括输入数据x和r2,以通过蒙哥马利计算单元计算x'=mont_mul(x,r2(mod P))(算法4中第1行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果x'通过解码器输出至指定的存储器,如输出到存储器A中。

待状态1对应的运算步骤执行完毕后,状态机切换至状态3,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括输入数据r2,以通过蒙哥马利计算单元计算C=mont_mul(1,r2(mod P))(算法4中第3行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果C通过解码器输出至指定的存储器,如输出到存储器B中。

待状态3对应的运算步骤执行完毕后,状态机切换至状态5,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括状态3下得到的中间结果C,以通过蒙哥马利计算单元计算C=mont_mul(C,C)(算法4中第6行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果C通过解码器输出至指定的存储器,如输出到存储器B中。

待状态5对应的运算步骤执行完毕后,状态机切换至状态6,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作(算法4中第5行至第7行),循环次数根据e确定;

其中,循环次数根据输入数据中的指数e确定。具体地,可以根据指数e的位宽确定循环次数。比如e的位宽(e_bit_num)为1024,则循环次数为1024次;e的位宽为2048bit,则循环次数为2048次。第i轮循环中输入蒙哥马利计算单元中的计算数据根据e[i]确定。其中,e[i]指e中的第i个位。比如e的二进制表示为011101,那么e[0]=1,e[1]=0,e[2]=1,e[5]=0。

在状态6下,当e[i]=1时,所述蒙哥马利计算单元执行的运算步骤为C=mont_mul(C,x')。

进一步地,如图3所示,所述处理核的电路结构还可以包括循环控制模块。所述循环控制模块分别与状态机以及存储指数e的存储器相连,用于对指数e进行解析,并向状态机输入e[i]。

待状态6对应的运算步骤执行完毕后,状态机切换至状态7,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括状态6下得到的中间结果C,以通过蒙哥马利计算单元计算mont_mul(C,1)(算法4中第8行),该计算值即为模幂运算的最终结果prod=xe(mod P);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的模幂运算结果prod通过解码器输出至指定的存储器,如输出到存储器B中。

进一步地,在蒙哥马利计算单元执行完成当前状态下的运算步骤之后,可以向状态机发送执行完成的通知消息,状态机接收到该通知消息后,切换至下一个状态。在最后一个状态对应的运算步骤完成之后,可以得到模乘运算结果或者模幂运算结果。在本发明实施例中,状态机可用于根据自身的状态控制输入蒙哥马利计算单元的计算数据,以控制蒙哥马利计算单元在不同状态下执行相应的运算步骤。此外,所述处理核的电路结构中还可以包括解码器(DEMUX),如图3所示,所述解码器(DEMUX)分别与蒙哥马利计算单元和状态机相连。所述状态机还可用于根据自身的状态控制将蒙哥马利计算单元输出的计算结果通过解码器输出至指定的存储器。也即,通过状态机可以控制所述电路结构中所有的数据流向。

在本发明的一种可选实施例中,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。由此可以节省模运算过程中所需的存储空间。

在模乘运算过程中,乘数x在状态1对应的运算步骤执行完毕之后,后面的步骤中不再使用乘数x,因此,本发明实施例可以利用乘数x的存储器存储状态1之后计算过程中产生的中间结果。例如,在上述模乘计算的示例中,状态1下得到的中间结果x'复用了乘数x的存储器A,状态2下得到的中间结果y'复用了乘数y的存储器B,状态4下得到的中间结果C复用了乘数y的存储器B。此外,计算结果也可以复用乘数数据的存储器,如模乘计算结果复用了乘数y的存储器B。

同理,乘数y在状态2对应的运算步骤执行完毕之后,后面的步骤中不再使用乘数y,因此,本发明实施例可以利用乘数y的存储器存储状态2之后计算过程中产生的中间结果。

在模幂运算过程中,底数x在状态1对应的运算步骤执行完毕之后,后面的步骤中不再使用底数x,因此,本发明实施例可以利用底数x的存储器存储状态1之后计算过程中产生的中间结果。

综上,本发明实施例提出一种应用于芯片处理核的电路结构设计,所述处理核的电路结构包括:状态机、蒙哥马利计算单元、以及多路选择器。处理核接收到计算指令之后,可以识别计算指令中携带的计算类型(模乘类型或者模幂类型),并根据识别的计算类型,确定所述状态机的状态序列,根据所述状态序列切换状态机的状态。在所述状态机的不同状态下,可以向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤。所述状态序列中的各状态对应预设的运算步骤,通过切换状态机的状态,可以控制蒙哥马利计算单元执行不同计算类型下的不同运算步骤。此外,通过切换状态机的状态,可以控制输入所述蒙哥马利计算单元的计算数据。由此,本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以及控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。相较于对模乘运算和模幂运算分别设置独立的电路模块,可以极大减少芯片处理核的电路面积开销,在减小电路面积开销的基础上,可以提高模运算的速度和并发性,进而可以提高隐私计算的效率,提高隐私计算系统的性能。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

装置实施例

参照图4,示出了本发明的一种处理核400实施例的结构框图,所述处理核应用于芯片,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器;所述处理核用于执行所述芯片分配的计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型,所述计算类型发送至所述状态机;其中,

所述多路选择器403,分别与所述状态机、所述蒙哥马利计算单元、以及相应输入数据的存储器相连,用于在接收到所述状态机输出的第一控制信号时,从相应的存储器中读取计算数据,并将读取的计算数据输入所述蒙哥马利计算单元;

所述状态机401,分别与所述多路选择器和所述蒙哥马利计算单元相连,用于根据所述计算类型,确定状态序列,根据所述状态序列切换状态,并在各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;

所述蒙哥马利计算单元402,分别与所述多路选择器和所述状态机相连,用于在各状态下接收相应的多路选择器输出的计算数据,并基于接收的计算数据执行各状态对应的运算步骤,在所述状态序列的最后一个状态对应的运算步骤执行完成后,输出所述计算指令的计算结果。

如图4所示,所述处理核可以接收芯片分配的计算指令,如模乘类型的计算指令或者模幂类型的计算指令。所述处理核对接收到的计算指令进行解析,将计算指令中携带的输入数据存储到存储器中,以及将计算指令中携带的计算类型输入至状态机,并启动状态机。状态机根据接收到的计算类型,确定状态序列,根据所述状态序列切换自身的状态,并根据自身的状态向相应的多路选择器输出第一控制信号。接收到第一控制信号的多路选择器,从其对应的存储器中读取计算数据,并将所述计算数据输入所述蒙哥马利计算单元。所述蒙哥马利计算单元接收到该计算数据之后,根据接收到的计算数据执行当前状态对应的运算步骤。在蒙哥马利计算单元执行完成当前状态下的运算步骤之后,向状态机发送执行完成的通知消息,状态机接收到该通知消息后,切换至下一个状态。在最后一个状态对应的运算步骤完成之后,可以得到模乘运算结果或者模幂运算结果。

需要说明的是,图4中示出了两个存储器和两个多路选择器,仅作为一种示例,本发明实施例对所述处理核中包含的存储器和多路选择器的数量不做限制。状态机分别与每个多路选择器相连。

本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。由于多路选择器的体积较小可以忽略,因此,本发明实施例能够在仅增加多路选择器而不增加电路体积的情况下,通过一个电路模块实现模乘运算和模幂运算,在提高模运算效率的同时,可以降低芯片的硬件成本。

可选地,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。

可选地,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述状态机,具体用于:

在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));

在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));

在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');

在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。

可选地,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述状态机,具体用于:

在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));

在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));

在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);

在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;

在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。

参照图3,示出了本发明的一种用于芯片处理核的电路结构示意图。如图3所示,所述电路结构包括如下模块:状态机、蒙哥马利计算单元、各输入数据对应的存储器、各存储器对应的多路选择器、以及解码器。

如图3所示,处理核接收到的计算指令中携带的计算类型为模乘类型(如mode=0)时,输入数据包括:x、y、r2、P、以及mode。其中,数据x存储在存储器A中;数据y存储在存储器B中;数据r2存储在存储器r2中;数据P存储在存储器P中;数据mode发送至状态机,并启动状态机。

状态机接收到mode=0的计算类型之后,根据该计算类型切换自身的状态。在mode=0时,状态机需经历如下状态:状态1、状态2、状态4、以及状态7,各状态对应算法4中模乘运算的各运算步骤,在状态7对应的运算步骤执行完成后,可以输出模乘运算的结果。状态机在经历状态1、状态2、状态4、以及状态7中的每个状态时,分别向相应的多路选择器输出相应的第一控制信号,以控制在模乘运算对应的各状态下输入至蒙哥马利计算单元的计算数据,进而控制蒙哥马利计算单元在模乘运算对应的各状态下执行的运算步骤。由此,通过图3所示的电路结构可以执行模乘运算。

同理,状态机接收到mode=1的计算类型之后,根据该计算类型切换自身的状态。在mode=1时,状态机需经历如下状态:状态1、状态3、状态5、状态6、以及状态7,各状态对应算法4中模幂运算的各运算步骤,在状态7对应的运算步骤执行完成后,可以输出模幂运算的结果。状态机在经历状态1、状态3、状态5、状态6、以及状态7中的每个状态时,分别向相应的多路选择器输出相应的第一控制信号,以控制在模幂运算的各状态下输入至蒙哥马利计算单元的计算数据,进而控制蒙哥马利计算单元在模幂运算的各状态下执行的运算步骤。由此,通过图3所示的电路结构可以执行模幂运算。

在本发明实施例中,状态机可用于根据自身的状态控制输入蒙哥马利计算单元的计算数据,以控制蒙哥马利计算单元在不同状态下执行的操作步骤。此外,所述处理核的电路结构中还可以包括解码器(DEMUX),如图3所示,所述解码器(DEMUX)分别与蒙哥马利计算单元和状态机相连。所述状态机还可用于根据自身的状态控制将蒙哥马利计算单元输出的计算结果通过解码器输出至指定的存储器。也即,状态机可以控制所述电路结构中所有的数据流向。

可选地,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。

可选地,所述处理核还包括解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述状态机还用于在各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。

可选地,所述芯片中所述处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。

可选地,所述芯片包括现场可编程逻辑门阵列FPGA芯片或专用集成电路ASIC芯片。

本发明实施例提出一种应用于芯片处理核的电路结构设计,所述处理核的电路结构包括:状态机、蒙哥马利计算单元、以及多路选择器。处理核接收到计算指令之后,可以识别计算指令中携带的计算类型(模乘类型或者模幂类型),并根据识别的计算类型,确定所述状态机的状态序列,根据所述状态序列切换状态机的状态。在所述状态机的不同状态下,可以向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤。所述状态序列中的各状态对应预设的运算步骤,通过切换状态机的状态,可以控制蒙哥马利计算单元执行不同计算类型下的不同运算步骤。此外,通过切换状态机的状态,可以控制输入所述蒙哥马利计算单元的计算数据。由此,本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以及控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。相较于对模乘运算和模幂运算分别设置独立的电路模块,可以极大减少芯片处理核的电路面积开销,在减小电路面积开销的基础上,可以提高模运算的速度和并发性,进而可以提高隐私计算的效率,提高隐私计算系统的性能。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行图1所示的数据处理方法。

一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行一种数据处理方法,所述方法应用于芯片中的处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器,所述方法包括:接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

以上对本发明所提供的一种数据处理方法、一种数据处理装置和一种用于数据处理的装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种自适应获取数据的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类