椭圆曲线多标量点乘计算优化方法及优化装置

文档序号:104900 发布日期:2021-10-15 浏览:26次 >En<

阅读说明:本技术 椭圆曲线多标量点乘计算优化方法及优化装置 (Elliptic curve multi-scalar dot multiplication calculation optimization method and optimization device ) 是由 高鸣宇 张烨 董江彬 于 2021-07-13 设计创作,主要内容包括:本申请公开了一种椭圆曲线多标量点乘计算优化方法及优化装置,通过设计桶矩阵,来缓存主计算过程中的中间变量点,避免Pippenger中间量的输出,通过持续地流水地运行和计算,直到最后所有的计算全部结束,再进行横向归约和纵向归约,把串行计算总计算次数从数千次降低至一次,消除了大部分的串并转换和同步锁定等开销,有效提升了流水线持续工作时间,从而提升整体性能。(The application discloses an elliptic curve multi-scalar dot product calculation optimization method and an elliptic curve multi-scalar dot product calculation optimization device, intermediate variable points in the main calculation process are cached by designing a barrel matrix, the output of Pippenger intermediate quantities is avoided, the calculation is continuously performed in a pipeline manner until all final calculations are finished, transverse reduction and longitudinal reduction are performed, the total calculation times of serial calculation are reduced from thousands of times to one time, most of expenses such as serial-parallel conversion and synchronous locking are eliminated, the continuous working time of a production line is effectively prolonged, and therefore the overall performance is improved.)

椭圆曲线多标量点乘计算优化方法及优化装置

技术领域

本申请涉及密码学技术领域,特别涉及一种椭圆曲线多标量点乘计算优化方法及优化装置。

背景技术

在相关技术中,如图1所示,为Pippenger算法,是PipeZK的MSM模块中一轮次计算所采用的算法,在PipeZK中,总共需要执行这样的计算次以产生个点,最后将这个点再次作为输入进行一次计算,从而得出最终结果。其中N是输入数据的总量,M是单一轮次输入数据的总量,前者一般在106数量级上,后者常取1000、1024等值。

在图1中,针对每一个Gi,其桶(Bucket,用于暂存一个点的结果)存储内容均不相同,因而计算不同的Gi时,每次都需要预先清空Bucket。并且进行纵向归约(Qj=∑2Gi)和横向归约(Gi=∑iBi)时,这是算法的串行阶段,暂时没有并行算法能对这一计算过程进行并行计算,因而这一串行阶段总共需要执行次,对于输入数据量为数百万的情况,这一阶段会执行上千次,而且无法并行优化,这会造成一定的性能损失。

因此,相关技术的缺点为:

1)每一轮次计算都需要进行纵向归约,而这一计算过程几乎无法并行化,从而造成性能损失。

2)每一轮次计算都需要进行横向归约,而这一计算过程几乎无法并行化,从而造成性能损失。

3)每一轮次计算都需要写回内存,这一过程会带来额外的逻辑控制,带来实现上的一定困难。

发明内容

本申请旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本申请的一个目的在于提出一种椭圆曲线多标量点乘计算优化方法,该方法有效提升了流水线持续工作时间,从而提升整体性能。

本申请的另一个目的在于提出一种椭圆曲线多标量点乘计算优化装置。

为达到上述目的,本申请一方面实施例提出了一种椭圆曲线多标量点乘计算优化方法,包括:

在主计算过程中,利用桶矩阵的一行来缓存所述主计算过程中的中间变量点;

在取消PipeZK算法中主计算过程末尾的横向归约的同时,将所述桶矩阵中的内容保持下来,并持续到下一位次的主计算过程;

取消每一轮次末尾纵向归约的部分计算过程;

在所有轮次结束后,在所述桶矩阵上进行横向归约和纵向归约计算,通过所述桶矩阵输出椭圆曲线点。

本申请实施例的椭圆曲线多标量点乘计算优化方法,通过设计桶矩阵,来缓存主计算过程中的变量点,避免Pippenger中间量的输出,通过持续地流水地运行和计算,直到最后所有的计算全部结束,再执行横向归约和纵向归约,把串行计算总计算次数从数千次降低至一次,对分批次处理之间的串并转换阶段进行优化,通过消除这一转换以提升算法可并行程度,有效提升了流水线持续工作时间,从而提升整体性能。

另外,根据本申请上述实施例的椭圆曲线多标量点乘计算优化方法还可以具有以下附加的技术特征:

进一步地,在本申请的一个实施例中,所述桶矩阵共有行,共有2ζ-1列,其中λ为系数的位宽,ζ为位段宽度。

进一步地,在本申请的一个实施例中,所述在所述桶矩阵上进行横向归约和纵向归约计算包括:对所述桶矩阵的每一行做横向归约,得到多个椭圆曲线点,再对所述多个椭圆曲线点做纵向归约。

进一步地,在本申请的一个实施例中,所述在所述桶矩阵上进行横向归约和纵向归约计算包括:对所述桶矩阵的每一列做纵向归约,得到多个椭圆曲线点,再对所述多个椭圆曲线点做横向归约。

进一步地,在本申请的一个实施例中,在所述横向归约计算中,不同行的计算为并行执行或串行执行;在所述纵向归约计算中,不同列的计算为并行执行或串行执行。

为达到上述目的,本申请另一方面实施例提出了一种椭圆曲线多标量点乘计算优化装置,包括:

缓存模块,用于在主计算过程中,利用桶矩阵的一行来缓存所述主计算过程中的中间变量点;

第一优化模块,用于在取消PipeZK算法中主计算过程末尾的横向归约的同时,将所述桶矩阵中的内容保持下来,并持续到下一位次的主计算过程;

第二优化模块,用于取消每一轮次末尾纵向归约的部分计算过程;

输出模块,用于在所有轮次结束后,在所述桶矩阵上进行横向归约和纵向归约计算,通过所述桶矩阵输出椭圆曲线点。

本申请实施例的椭圆曲线多标量点乘计算优化装置,通过设计桶矩阵,来缓存主计算过程中的变量点,避免Pippenger中间量的输出,通过持续地流水地运行和计算,直到最后所有的计算全部结束,再执行横向归约和纵向归约,把串行计算总计算次数从数千次降低至一次,对分批次处理之间的串并转换阶段进行优化,通过消除这一转换以提升算法可并行程度,有效提升了流水线持续工作时间,从而提升整体性能。

另外,根据本申请上述实施例的椭圆曲线多标量点乘计算优化装置还可以具有以下附加的技术特征:

进一步地,在本申请的一个实施例中,所述桶矩阵共有行,共有2ζ-1列,其中λ为系数的位宽,ζ为位段宽度。

进一步地,在本申请的一个实施例中,所述在所述桶矩阵上进行横向归约和纵向归约计算包括:对所述桶矩阵的每一行做横向归约,得到多个椭圆曲线点,再对所述多个椭圆曲线点做纵向归约。

进一步地,在本申请的一个实施例中,所述在所述桶矩阵上进行横向归约和纵向归约计算包括:对所述桶矩阵的每一列做纵向归约,得到多个椭圆曲线点,再对所述多个椭圆曲线点做横向归约。

进一步地,在本申请的一个实施例中,在所述横向归约计算中,不同行的计算为并行执行或串行执行;在所述纵向归约计算中,不同列的计算为并行执行或串行执行。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为现有的技术方案计算过程示意图;

图2为根据本申请实施例的椭圆曲线多标量点乘计算优化方法流程示意图;

图3为根据本申请实施例的椭圆曲线多标量点乘计算优化方法计算流程示意图;

图4为根据本申请实施例的硬件架构和计算流程示意图;

图5为根据本申请实施例的各个轮次中对系数数据的访问顺序的示意图;

图6为根据本申请实施例的在所有轮次计算完毕后,求解最终结果时对Bucket的访问顺序的示意图;

图7为根据本申请实施例的椭圆曲线多标量点乘计算优化装置结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

首先介绍本申请中的定义及相关用语。

位段:

位段是指某一个数在二进制表示下的一部分,例如“二进制数101011的第2~4位”就是这个数的一个位段。

下文采用如下记法表示位段:

a[p:q]

其中a是某一个数,p是位段的最低位下标,q是位段的最高位下标,下标从0开始,0表示最低位。例如:

a[0:3]

表示数字a的二进制第0位至第3位组成的位段,这个位段的宽度为4

横向归约:

横向归约是指如下计算过程:

其中G是该计算过程的输出,类型为椭圆曲线点;Bi是该计算过程的输入,每个Bi的类型都是椭圆曲线点,总个数为2ζ-1;ζ是位段宽度,是该计算过程的一个常数参数,常取4。

纵向归约:

纵向归约是指如下计算过程:

其中Q是该计算过程的输出,类型为椭圆曲线点;Gi是该计算过程的输入,每个Gi的类型都是椭圆曲线点,总个数为λ是系数域二进制位宽度,和输入相关,常见值有256、384、512等;ζ是位段宽度,是该计算过程的一个常数参数,常取4。

轮次:

轮次是指该算法外循环中的某一次循环,具体来说该算法包括外循环和内循环两层,外循环每一次都会需要读入M个椭圆曲线点和M个系数,M常取1K。轮次即指这部分循环迭代的过程中的某一次。

下文用第k轮次来表示和区分各个轮次,其中k称为轮次号或轮次下标,该下标从0开始,最大值为N为整个算法的输入大小,表示对的结果向上取整。

位次:

位次是指算法内循环中的某一次循环,具体来说该算法包括外循环和内循环两层,内循环每次都会读入以p和q为位段参数的M个系数的对应位段和M个椭圆曲线,即总共读入M个位段和M个系数,M常取1K,p、q与循环参数相关。位次即指这部分循环迭代过程中的某一次。

下文用第k位次来表示和区分各个位次,其中k称为位次号或位次下标,该下标从0开始,最大值为

某一位次对应位段的最低位下标和最高位下标与位次号存在函数关系,下文称位次号到位段最低位下标的函数关系为低位下标映射,称位次号到位段最高位下标的函数关系为高位下标映射,称位次号到以最低位下标和最高位下标组成的元组的函数关系为下标映射。

主计算过程:

主计算过程是该算法的内循环中的主要计算过程,它接收若干个椭圆曲线点和等数量的系数的位段,输出为2ζ-1个椭圆曲线点。其主要过程为对每个椭圆曲线点对应的系数位段进行检查,以该位段的值为下标将椭圆曲线点传递至对应标号的桶中。传递至对应标号的桶时,若桶中没有椭圆曲线点,则直接将这个椭圆曲线点填入该桶;若桶中已有椭圆曲线点,则将桶中的椭圆曲线点和当前椭圆曲线点的椭圆曲线点加运算结果填入该桶。直到所有的椭圆曲线点和系数都遍历完毕,该过程结束,此时所有的桶内的结果即为输出。

该计算过程需要指定输入的椭圆曲线点、输入的系数、系数位段参数、桶位置。

本申请主要是针对PipeZK加速器架构设计在MSM模块上的优化。即现有技术实现方案就是“PipeZK:Accelerating Zero-Knowledge Proof with a PipelinedArchitecture”论文中的方案,除此以外的技术方案主要为利用分布式系统、利用GPU进行加速,或者利用FPGA但是并不针对椭圆曲线上的多标量点乘。原方案和该方案都属于利用FPGA对椭圆曲线上多标量点乘计算的加速,在原方案中,对于输入数据大小为N时,将把数据划分为若干个长度相同的数组,分批次处理,其中数组长度和数组总长度尽量保持相等,每次产生一个椭圆曲线点坐标,最后将产生的若干个个椭圆曲线点再进行一次处理,得到最终的一个点,这个点就是MSM模块的输出。

零知识证明:零知识证明是一种非常有用的保护隐私的密码学协议,它可以广泛的使用在区块链等诸多应用场景中。证明者可以通过零知识证明向验证者证明自己知道某知识的同时不泄露有关该知识本身的任何信息。

PipeZK:PipeZK加速器是针对零知识算法中的一种叫做非交互简洁零知识证明(zero-knowledge Succinct Non-interactive Argument of Knowledge,也常被缩写为zk-SNARK)算法的加速器。目前能对zk-SNARK加速的方案有采用分布式系统的,有利用GPU的,也有使用FPGA的,前两种情况和本申请并没有任何重叠之处,而第三种采用FPGA加速的,目前主要都为针对椭圆曲线上的运算加速,而没有直接针对多标量点乘这一计算过程进行加速的。

MSM(Multi-scalar multiplication):椭圆曲线点乘计算(即多标量点乘),输入为一组系数和一组椭圆曲线上点的坐标,输出为一个椭圆曲线点,计算公式为每个系数和对应的椭圆曲线上点相乘,再把每个乘法结果相加。即Q=∑kiPi中ki是第i个系数,Pi是第i个椭圆曲线点,加粗表示椭圆曲线点,非加粗表示普通数字。PipeZK除了MSM模块还有一个POLY模块,本申请只针对MSM进行优化。

椭圆曲线:密码学领域的一个重要基本理论,大部分基于椭圆曲线的密码学算法都依赖于Q=kP的分解困难而设计的(类似的有著名的RSA算法依赖于两个大质数的乘积的分解困难而设计)。椭圆曲线上可以进行这样两种运算:两个椭圆曲线点相加、一个普通正整数乘以一个椭圆曲线点。具体计算公式并不是直接相加和相乘,有相对复杂的求解过程,这一求解过程本身计算量就比较大。因而MSM这种往往会有百万个椭圆曲线点进行计算的情况,计算开销会变得非常庞大。

下面参照附图描述根据本申请实施例提出的椭圆曲线多标量点乘计算优化方法。

图2为根据本申请实施例的椭圆曲线多标量点乘计算优化方法。

如图1所示,该椭圆曲线多标量点乘计算优化方法包括以下步骤:

步骤S1,在主计算过程中,利用桶矩阵的一行来缓存主计算过程中的中间变量点。

具体地,本申请通过设计桶矩阵而不是一组桶,来缓存不同主计算过程中的中间变量点,从而避免Pippenger中间量的输出,而是持续地流水地运行和计算,直到最后所有的计算全部结束,再执行横向归约和纵向归约,因而可以把这一串行计算总计算次数从数千次降低至一次,消除大部分的串并转换和同步锁定等开销,从而提升MSM的计算性能。

需要说明的是,桶(Bucket)是对一个椭圆曲线点的存储单元的称呼。Pippenger是椭圆曲线上多标量点乘的一种计算方法。

进一步地,在本申请的一个实施例中,桶矩阵共有行,共有2ζ-1列,其中λ为系数的位宽,ζ为位段宽度。

具体地,设λ为系数的位宽(也就是说,每个系数都是二进制下的λ位数),常见取值有256、384、512等;ζ为位段宽度,常见取值有4等。设计一个桶矩阵,总共行,2ζ-1列。

步骤S2,在取消PipeZK算法中主计算过程末尾的横向归约的同时,将桶矩阵中的内容保持下来,并持续到下一位次的主计算过程。

步骤S3,取消每一轮次末尾纵向归约的部分计算过程。

步骤S4,在所有轮次结束后,在桶矩阵上进行横向归约和纵向归约计算,通过桶矩阵输出椭圆曲线点。

进一步地,在本申请的一个实施例中,在桶矩阵上进行横向归约和纵向归约计算包括:对桶矩阵的每一行做横向归约,得到多个椭圆曲线点,再对多个椭圆曲线点做纵向归约。

进一步地,在本申请的一个实施例中,在桶矩阵上进行横向归约和纵向归约计算包括:对桶矩阵的每一列做纵向归约,得到多个椭圆曲线点,再对多个椭圆曲线点做横向归约。

进一步地,在本申请的一个实施例中,在横向归约计算中,不同行的计算为并行执行或串行执行;在纵向归约计算中,不同列的计算为并行执行或串行执行。

具体地,在所有轮次结束后,在桶矩阵上进行横向归约和纵向归约计算有两种类型,两种归约都会输出一个椭圆曲线点。

其中,第一种归约类型为先进行横向归约,后进行纵向归约。在桶矩阵上,对每一行做横向归约,得到个椭圆曲线点。再对这个椭圆曲线点做一次纵向归约。其中不同行进行横向归约的过程中,各行之间一般是并行执行的,但也可以串行执行,同时各行之间执行先后顺序没有影响。

第二种归约类型为先进行纵向归约,后进行横向归约。在桶矩阵上,对每一列做纵向归约,得到2ζ-1个椭圆曲线点,再对这2ζ-1个椭圆曲线点做一次横向归约。其中不同列进行纵向归约的过程中,各列之间一般是并行执行的,但也可以串行执行,同时各列之间执行先后顺序没有影响。

如图3所示,展示了椭圆曲线多标量点乘计算优化方法中计算过程。

在主计算过程中,需要将原始输入划分为若干个子集,一般的划分方法为尽可能均匀地划分为个子集,使每个子集大约包含M个椭圆曲线点和M个系数。但划分也可以乱序地、不均匀地划分而不影响计算结果,划分出的子集个数也不影响最终结果。划分子集仅仅要求子集中每个椭圆曲线点和其系数的对应关系不被破坏,并且每个椭圆曲线点和每个系数都被恰好使用过一次即可。

存在一种极端的通过改变数据输入绕过上述划分特征的方法,即将某个椭圆曲线点重复多次或合并重复的椭圆曲线点,并令其对应系数和与原对应系数相等。

在图3中的主计算过程部分,位段的下标映射存在多种映射方法。

设轮次号为i,位次号为j,除图3中所示的以jζ为位段最低位下标、jζ+ζ-1为位段最高位下标,也可以以为位段最低为下标、为位段最高位下标进行计算,则对应选择的桶位置应当改为选择桶矩阵的第行。

对于其他的位段选择方法,对应桶位置也会相应变化,但选择的核心特征是:第一、位段不会重叠;第二、所有选择出的位段求并集恰好就是系数的整个位段;第三、桶位置不会重叠;第四、所有选择的桶位置求并集恰好就是整个桶矩阵。满足以上四个条件的位段选择和桶位置选择方法都能得到正确结果。

桶矩阵行、列下标存在多种映射方法:除上述的位段和同位置同时地、协同地变更的方法外,也可以在主计算过程中直接将结果存入其他指定的桶矩阵位置,并同时调整横向归约或者纵向归约的输入方式,从而绕开图3中所示的下标关系。

这种方法的特征在于:第一、主计算过程中所访问的桶,其对应访问系数位段的值,和横向归约中相乘的系数一定相等。第二、主计算过程中所访问的桶,其对应访问位段的最低位下标,和纵向归约中相乘系数的以2为底的对数一定相等。满足以上条件的桶位置选择方法,皆可以实现本申请实施例的椭圆曲线多标量点乘计算优化方法。

具体来说,如图4所示,为本申请所优化的MSM模块的主要组成部分和计算流程示意图,图4仅示意了一轮计算的流程和相关组件。在图4中,系数位宽为256比特,椭圆曲线点坐标每个分量位宽为768比特,N为1048576,因而单轮次数据量为1024。(注意,以上参数仅为该示意图中所描述的,实际技术方案完全可以更改为其他合理的值)。

图4中左上方“1024Scalar”表示系数部分的数据,右上角的“1024Point”表示椭圆曲线点部分的数据,左下角的若干个圆柱体表示缓存区,即Bucket矩阵,每个圆柱体是一个Bucket,能够存储一个椭圆曲线点,右下角的PADD部分表示椭圆曲线点加计算单元,能执行两个椭圆曲线点的加法并输出一个椭圆曲线点,右下角3个框的部分表示FIFO队列,用于缓存PADD需要计算的所有椭圆曲线对。

在优化前的方案中,Bucket仅有一行,以系数中某一段的数值确定某个椭圆曲线点存放到哪个Bucket中。在优化后的方案中,Bucket共有行,2ζ-1列,λ为系数的位宽。原理上参数ζ可以变化,具体实现上ζ参数越大资源开销也就越大,选择ζ=4作为位段宽度是一个资源性能平衡上一个折衷的选择。

以这一轮次的计算为例,总共有1024个系数,如图5所示其中idx0表示第一个系数,idx1表示第二个系数,直到idx1023表示第1024个系数。每个系数位宽为256比特,以4比特为一组切片,总共有64个切片。每个系数最高位在左边,最低位在右边,从右到左分别记为第0组,第1组直到第63组。

具体计算流程是,首先访问第63组,即最左边那一侧的那一组,从上往下依次访问idx0、idx1直到idx1023,在这个过程中,若这一切片的数值为0,则丢弃这个系数对应的椭圆曲线点,如果为1,则把这个系数对应的椭圆曲线点放入第一行的第一个Bucket中,如果为2,则放入第一行的第二个Bucket中,依次类推。当第63组共1024个系数全部访问完毕,回到第一个系数,访问第62组,如果为0,丢弃点,如果为1,放入第二行第一个Bucket中,如果为2,放入第二行第二个Bucket中,如果为3,放入第二行第三个Bucket中,以此类推。

如图6所示,纵向归约这一计算步骤应当由硬件实现较为高效,但也可以通过软件方法计算,仍能比一般的计算方法高效。具体来说,对于每一列,从上往下进行计算,取这一列的第一个点,乘以2ζ,然后再加上这一列的第二个点,再乘以2ζ,然后再加上这一列的第三个点,以此类推。(加上最后一行的点以后,不用再乘以2ζ),将这一计算结果写回这一列的第一行中,也就是写入row0中。若采用硬件实现,则乘以2ζ的操作应该分解为ζ次倍点操作,软件实现类似。

最后将row0中的内容取出,计算即可。这一步骤有硬件实现和软件实现两种方法,均有较好的效果。具体来说,第一列乘以1,第二列乘以2,第三列乘以3依次类推,最终相加即可。常数乘以椭圆曲线点的方法应该被分解为倍点和点加的操作。

由于原方案中,横向归约和纵向归约的过程是无法并行化的部分,只能串行执行,因而后续的计算必须等待这一计算过程结束,并且串行计算时硬件大部分部件处于闲置状态。而本申请消除了这一串行计算开销,从上千次降低至仅有一次,使得硬件几乎持续在工作状态,也不需要等待前置计算结束,从而提升整体加速性能。

作为另一种可能实现的方式,可能通过仅消除循环中的横向归约或者仅消除循环中的纵向归约来得到同样的计算结果,对应桶矩阵和相关存储结构也可能会发生相应的改变。这一加速效果没有桶矩阵加速效果好,但仍比PipeZK性能高。

根据本申请实施例提出的椭圆曲线多标量点乘计算优化方法,通过设计桶矩阵,来缓存主计算过程中的中间变量点,避免Pippenger中间量的输出,通过持续地流水地运行和计算,直到最后所有的计算全部结束,再进行横向归约和纵向归约,把串行计算总计算次数从数千次降低至一次,对分批次处理之间的串并转换阶段进行优化,通过消除这一转换以提升算法可并行程度,有效提升了流水线持续工作时间,从而提升整体性能。

其次参照附图描述根据本发明实施例提出的椭圆曲线多标量点乘计算优化装置。

图7为根据本发明一个实施例的椭圆曲线多标量点乘计算优化装置结构示意图。

如图7所示,该椭圆曲线多标量点乘计算优化装置包括:缓存模块100、第一优化模块200、第二优化模块300和输出模块400。

缓存模块100,用于在主计算过程中,利用桶矩阵的一行来缓存主计算过程中的中间变量点。

第一优化模块200,用于在取消PipeZK算法中主计算过程末尾的横向归约的同时,将桶矩阵中的内容保持下来,并持续到下一位次的主计算过程。

第二优化模块300,用于取消每一轮次末尾纵向归约的部分计算过程。

输出模块400,用于在所有轮次结束后,在桶矩阵上进行横向归约和纵向归约计算,通过桶矩阵输出椭圆曲线点。

进一步地,在本申请的一个实施例中,桶矩阵共有行,共有2ζ-1列,其中λ为系数的位宽,ζ为位段宽度。

进一步地,在本申请的一个实施例中,在桶矩阵上进行横向归约和纵向归约计算包括:对桶矩阵的每一行做横向归约,得到多个椭圆曲线点,再对多个椭圆曲线点做纵向归约。

进一步地,在本申请的一个实施例中,在桶矩阵上进行横向归约和纵向归约计算包括:对桶矩阵的每一列做纵向归约,得到多个椭圆曲线点,再对多个椭圆曲线点做横向归约。

进一步地,在本申请的一个实施例中,在横向归约计算中,不同行的计算为并行执行或串行执行;在纵向归约计算中,不同列的计算为并行执行或串行执行。

需要说明的是,前述对方法实施例的解释说明也适用于该实施例的装置,此处不再赘述。

根据本申请实施例提出的椭圆曲线多标量点乘计算优化装置,通过设计桶矩阵,来缓存主计算过程中的中间变量点,避免Pippenger中间量的输出,通过持续地流水地运行和计算,直到最后所有的计算全部结束,再进行横向归约和纵向归约,把串行计算总计算次数从数千次降低至一次,对分批次处理之间的串并转换阶段进行优化,通过消除这一转换以提升算法可并行程度,有效提升了流水线持续工作时间,从而提升整体性能。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种应用程序的业务数据处理方法、装置及移动终端

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类