CN114510217A - 处理数据的方法、装置和设备 - Google Patents
处理数据的方法、装置和设备 Download PDFInfo
- Publication number
- CN114510217A CN114510217A CN202011457275.XA CN202011457275A CN114510217A CN 114510217 A CN114510217 A CN 114510217A CN 202011457275 A CN202011457275 A CN 202011457275A CN 114510217 A CN114510217 A CN 114510217A
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- blocks
- block
- multiplication
- 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
Images
Classifications
-
- 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
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
提供了一种处理数据的方法、装置和设备,能够在保证性能的基础上降低芯片的功耗。该方法包括:获取待处理数据;将该待处理数据划分为均等分成s个块;利用Karatsuba算法,将该s个块中的第i个块的数据和该第i个块的数据相乘,以得到多个第一数据,0≤i≤s‑1;基于该第i个块的数据和该s个块中第j个块的数据,得到多个第二数据,i+1≤j≤s‑1;基于该多个第一数据和该多个第二数据,确定该待处理数据和该待处理数据的乘积;基于该待处理数据和该待处理数据的乘积,进行蒙哥马利模乘运算,以得到处理结果。通过平方算法和Karatsuba算法,能够在保证性能的基础上,减小芯片的功耗。
Description
技术领域
本申请实施例涉及数据处理技术领域,并且更具体地,涉及处理数据的方法、装置和设备。
背景技术
目前,公钥协处理器中的乘法器可以使用比较大的乘法器,比如64*64 或32*32的乘法器,也可以使用比较小的乘法器,比如8*8或16*16的乘法器,前者的优点是运算效率比较高,但功耗比较大,导致对模拟电路对负载电流突变的抗压要求比较高,最终使得芯片面积比较大。而后者电路的功耗比较小,但运算时间比较长,运算的效率比较低。因此,在实际的芯片设计中,往往只能满足其中的一项做折中,根据芯片的使用情况,在低功耗和高性能中选择一项来满足。
但是,改变乘法器大小的方案,不能够在提高性能的同时又降低功耗,即只能根据芯片的使用情况,选择较大的乘法器以满足高性能的需求,或者选择比较小的乘法器以满足低功耗的需求。
因此,如何在保证性能的基础上降低芯片的功耗是本领域急需解决的技术问题。
发明内容
提供一种处理数据的方法、装置和设备,能够在保证性能的基础上降低芯片的功耗。
第一方面,提供了一种处理数据的方法,包括:
获取待处理数据;
将所述待处理数据均等分成s个块,s为大于0的整数,所述s个块按照位置顺序标识为第0个块至第s-1个块;
利用Karatsuba算法,将所述s个块中的第i个块的数据和所述第i个块的数据相乘,以得到多个第一数据,0≤i≤s-1;
基于所述第i个块的数据和所述s个块中第j个块的数据,得到多个第二数据,i+1≤j≤s-1;
基于所述多个第一数据和所述多个第二数据,确定所述待处理数据和所述待处理数据的乘积;
基于所述待处理数据和所述待处理数据的乘积,进行蒙哥马利模乘运算,以得到处理结果。
第二方面,提供了一种处理数据的装置,用于执行上述第一方面或其各实现方式中的方法。具体地,所述装置包括用于执行上述第一方面或其各实现方式中的方法的功能模块。
第三方面,提供了一种芯片,用于实现上述第一方面或其各实现方式中的方法。具体地,所述芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如上述第一方面或其各实现方式中的方法。
第四方面,提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行上述第一方面或其各实现方式中的方法。
第五方面,提供了一种计算机程序产品,包括计算机程序指令,所述计算机程序指令使得计算机执行上述第一方面或其各实现方式中的方法。
基于以上技术方案,通过将所述待处理数据均等分成s个块,相当于将大数进行分割,以进行分步运算,能够在保证性能的基础上减小芯片的功耗。
此外,将所述s个块中的第i个块的数据和所述第i个块的数据相乘的过程中,利用Karatsuba算法,进一步将大数的乘法转换为多个小数的乘法,能够在保证性能的基础上,进一步减小芯片的功耗。
另外,由于进行乘方运算,原本的运算A[i]*B[j]和B[i]*A[j],均等效为 A[i]*A[j],基于此,通过i+1≤j≤s-1,能够避免重复计算,进而,能够在保证性能的基础上,进一步减小芯片的功耗。
综上所述,本申请实施例中,将所述待处理数据均等分成s个块后,通过平方算法和Karatsuba算法,能够最大程度的优化算法过程,进而,能够在保证性能的基础上,减小芯片的功耗。
附图说明
图1是本申请实施例提供的处理数据的方法的示意性流程图。
图2是本申请实施例提供的处理数据的装置的示意性流程图。
图3是本申请实施例提供的芯片的示意性框图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
应理解,本申请实施例可应用于各种需要进行大数处理的乘法。例如,申请实施例可应用于集成电路安全芯片领域,具体涉及密码算法、安全芯片领域。
模幂运算是RSA的核心算法,最直接地决定了RSA算法的性能。
传统的模乘分为两步进行:首先计算乘法,即Y=A*B,然后计算求模,即T=A*Bmod N。求模通常需要用到除法,而除法运算开销大,速度慢,也不适宜硬件实现。
蒙哥马利(Montgomery)算法是一种不带除法的模乘运算,是公钥算法实现中的一个核心算法,其主要作用是为模乘运算加速。
蒙哥马利模乘的数学表达是A*B*R-1mod N,
换言之,蒙哥马利模乘的结果并不是A*B mod N,而是A*B*R-1mod N。或者说,蒙哥马利模乘使用A*B*R-1mod N代替A*B mod N。
在应用中,需要预先将乘数转化为A′=A*R mod N和B′=B*R mod N的形式,模乘结果为:T′=T*R mod N。基于此,在连续模乘时,能够保证模乘结果是X*R mod N的形式,由此,最终可通过模乘变换将模乘结果变换回正常形式。
需要说明的是,蒙哥马利模乘并不适合在资源受限的条件下实现,例如, RSA算法中参与运算的数据长达1024甚至2048位,大数运算会消耗大量的计算和存储单元。
本申请提供的蒙哥马利模乘是进行改进后的算法。
本申请实施例中,在进行乘法运算之前,先需要将w位的大数分成s块。例如,w为1024或2408。例如,s块的位长可以为32。应当理解,A包括 s个块也可以称为A包括s个字。例如,A可以包括s个字,其中所述S个字中的每一个子可包括一定数量的位。例如32位。
换言之,N=(ns-1…n1n0),A=(as-1…a1a0),B=(bs-1…b1b0)。
通过将w位的大数划分成s块,相当于,将大数进行分割,以进行分步运算,能够减小芯片的面积和功耗。
此外,本申请提供的改进后的算法为蒙哥马利模平方算法,即将模幂中的模乘进行了分类,根据乘数是否相同选择模乘算法或者是模平方算法,从而将模幂进行加速。例如,乘数不相同的情况下,选择模乘算法;乘数相同的情况下,选择模平方算法。
表1.Montgomery模平方算法
需要说明的是,本申请实施例中,基于A*A的结果可进行蒙哥马利模乘运算,以输出基于蒙哥马利模乘运算的处理结果。
本申请提供的实施例基于Karatsuba算法原理,可以在将w位的大数划分成s块后进行蒙哥马利模乘运算的基础上,能够进一步降低芯片的功耗。
为便于对本申请的理解,下面对Karatsuba乘法进行说明。
Karatsuba算法是一种快速乘法。此算法可用于两个大数相乘。普通乘法的复杂度是n2,而Karatsuba算法的复杂度仅为3nlog3≈3n1.585(log3是以2 为底的)。
Karatsuba算法主要应用于两个大数的相乘,原理是将大数分成两段后变成较小的数位,然后做三次乘法,并附带少量的加法操作和移位操作。
根据Karatsuba乘法公式:
M1=AL*BL;
M2=AH*BH;
M3=(AH-AL)*(BH-BL);
其中,AL*BL分别表示A和B的低位,AH*BH分别表示A和B的高位,A和B表示所述s个块中的不相同的两个块。
基于此,2w位的乘法A*B可以转换为3个w位的乘法,即:
A*B=M2*22w+(M1+M2-M3)*2W+M1
此时,乘法时钟周期数为:3*(2(s/2)2+s/2)=1.5s2+1.5s。
通过Karatsuba乘法公式虽然保证了M3乘法器的两个操作数的位长不会超过w,但是AH-AL以及BH-BL有可能产生负数,相应的,M3在进行运算时需要考虑符号的问题,需要保证乘法器的性能要求,导致乘法器的设计过于复杂。
为了降低乘法器的复杂度,本申请提供了一种改进的Karatsuba乘法公式,该改进的Karatsuba乘法公式如下:
M1=AL*BL;
M2=AH*BH;
M3=(AH+AL)*(BH+BL);
其中,AL*BL分别表示A和B的低位,AH*BH分别表示A和B的高位,A和B表示所述s个块中的不相同的两个块。
基于此,2w位的乘法A*B可以转换为3个w位的乘法,即:
A*B=M2*22w+(M3-M1-M2)*2W+M1
此时,乘法时钟周期数为:3*(2(s/2)2+s/2)=1.5s2+1.5s。
通过改进的Karatsuba乘法公式,将减法运算转换为加法运算,相当于,将符号处理问题转换为仅为运算,能够避免符号处理问题,进而,能够降低乘法器的复杂度。
换言之,改进的Karatsuba算法将1个2w位的乘法化简为三次w或w+1 位的乘法,而代价是增加一些加法。
图1是本申请实施例提供的处理数据的方法100的示意性流程图。
如图1所示,所述方法100可包括:
S110,获取待处理数据;
S120,将所述待处理数据均等分成s个块,s为大于0的整数,所述s 个块按照位置顺序标识为第0个块至第s-1个块;
S130,利用Karatsuba算法,将所述s个块中的第i个块的数据和所述第 i个块的数据相乘,以得到多个第一数据,0≤i≤s-1;
S140,基于所述第i个块的数据和所述s个块中第j个块的数据,得到多个第二数据,i+1≤j≤s-1;
S150,基于所述多个第一数据和所述多个第二数据,确定所述待处理数据和所述待处理数据的乘积;
S160,基于所述待处理数据和所述待处理数据的乘积,进行蒙哥马利模乘运算,以得到处理结果。
通过将所述待处理数据均等分成s个块,相当于将大数进行分割,以进行分步运算,能够在保证性能的基础上减小芯片的功耗。
此外,将所述s个块中的第i个块的数据和所述第i个块的数据相乘的过程中,利用Karatsuba算法,进一步将大数的乘法转换为多个小数的乘法,能够在保证性能的基础上,进一步减小芯片的功耗。
另外,由于进行乘方运算,原本的运算A[i]*B[j]和B[i]*A[j],均等效为 A[i]*A[j],基于此,通过i+1≤j≤s-1,能够避免重复计算,进而,能够在保证性能的基础上,进一步减小芯片的功耗。
需要说明的是,i+1≤j≤s-1,相当于利用平方算法的原理降低芯片的功耗。
下面结合表2对平方算法的原理进行说明。
表2.平方算法原理
A[0] | A[1] | A[2] | A[3] | |
A[0] | A[0]*A[0] | A[0]*A[1] | A[0]*A[2] | A[0]*A[3] |
A[1] | A[1]*A[1] | A[1]*A[2] | A[1]*A[3] | |
A[2] | A[2]*A[2] | A[2]*A[3] | ||
A[3] | A[3]*A[3] |
如表2所示,s个块可以包括A[0]、A[1]、A[2]、A[3]。
基于此,可以获取第将第i个块的数据和所述第i个块的数据相乘,以得到多个第一数据,即A[0]*A[0]、A[1]*A[1]、A[2]*A[2]、A[3]*A[3]。此外,可以基于所述第i个块的数据和所述s个块中第j个块的数据,得到多个第二数据,即A[0]*A[1]、A[0]*A[2]、A[0]*A[3]、A[1]*A[2]、A[1]*A[3]、A[2]* A[3]。
可以发现,将所述多个第二数据中的每一个第二数据乘以2,可以避免6 次乘法运算,能够有效降低芯片的功耗。
综上所述,本申请实施例中,将所述待处理数据均等分成s个块后,通过平方算法和Karatsuba算法,能够最大程度的优化算法过程,进而,能够在保证性能的基础上,减小芯片的功耗。
下面结合表3基于运算时间和时钟周期对本申请提供的技术方案的性能进行说明。
表3.性能对比列表
如表1所示,假设所述待处理数据的位数k为1024,s个块中每一个块的位数w为32,s=1024/32=32,由表3可见,如果采用普通的蒙哥马利模乘算法,采用32位乘法器,1024位的乘法运算运算时间为2080个时钟周期,如果将乘法优化,采用乘方运算,则性能提升24%;而将Karatsuba乘法和平方运算相结合,性能进一步提升,最终达到41%。
需要说明的是,在表3中,运算时间中的s可用于标识一个内循环或外循环的运行时长,即s个块中的每一个块基于同一运算规则运算一次所形成的一个循环。
此外,需要说明的是,基于Karatsuba和平方算法优化后,能够优化运算性能,而由于运算性能得到提升,即使使用比较小的乘法器,降低芯片的功耗,也能够保证芯片的运算性能。
即,所述待处理数据划分为均等分成s个块后,通过平方算法和Karatsuba 算法,能够最大程度的优化算法过程,进而,能够在保证性能的基础上,减小芯片的功耗。
在本申请的一些实施例中,所述S150可包括:
将所述多个第二数据中的每一个第二数据乘以2,以得到多个第三数据;
基于所述多个第一数据和所述多个第三数据,确定所述待处理数据和所述待处理数据的乘积。
将所述多个第二数据中的每一个第二数据乘以2,相当于,将所述第i 个块的数据和所述s个块中第j个块的数据的乘积,等同于所述第j个块的数据和所述s个块中第i个块的数据的乘积,可避免重复计算,能够有效降低芯片的功耗。
在本申请的一些实施例中,所述S150可包括:
利用所述Karatsuba算法,将所述第i个块的数据和所述s个块中第j个块的数据相乘,以得到所述多个第二数据。
通过Karatsuba算法,将所述第i个块的数据和所述s个块中第j个块的数据相乘,能够进一步将大数的乘法转换为多个小数的乘法,能够在保证性能的基础上,进一步减小芯片的功耗。
在本申请的一些实施例中,所述s个块中每一个块的位数为2w,w为非负整数;所述利用Karatsuba算法用于将乘数的位数为2w的乘法转换为三次乘法,所述三次乘法中的每次乘法的乘数的位数为w或w+1的乘法。
换言之,利用所述Karatsuba算法,可将乘数的位数为2w的乘法转换为三次乘数的位数为w或w+1的乘法,以得到所述多个第一数据。例如,通过 Karatsuba算法,可将1个2w位的乘法化简为三次w或w+1位的乘法,而代价是增加一些加法。
由于加法的功耗较小,相当于,通过3个小的乘法器实现一个大的乘法器,能够有效降低芯片的功能。
需要说明的是,在芯片电路中,如果数字电路的某个时钟周期内的运算比前一个或者后一个时钟周期内的运算多很多,也就是说,在这个时钟周期内出现了电流激增,模拟电路需要使用比较大的电容来应对负载电流突变的抗压需求,由此,需要增大芯片的面积。因此,在芯片电路设计中,为了降低芯片面积,需要尽量平滑功耗曲线,降低瞬态电流来降低模拟电路对负载电流突变的抗压要求。
在本申请的一些实施例中,所述S150可包括:
利用所述Karatsuba算法,在一个时钟周期内,运行所述三次乘法中的一次乘法和以下中的至少一项:至少一次加数的位数为w、2w+2或3w的加法、至少一次的被减数的位数为3w的减法,以得到所述多个第一数据。
换言之,通过在一个时钟周期内仅进行一次乘法运算,可尽量平滑功耗曲线,降低瞬态电流来降低模拟电路对负载电流突变的抗压要求,由此,可降低芯片面积。
需要说明的是,三次乘数的位数为w的乘法、至少一次加数的位数为w、 2w+2或3w的加法、至少一次的被减数的位数为3w的减法可以理解为 Karatsuba算法的中间过程或中间结果。
下面结合表4对上述3个时钟周期进行说明。
表4.时钟周期示例
如表4所示,3个时钟周期分别为Clk1、Clk2、Clk3。M1、M2、M3分别表示乘法器的输出结果,(Ca2,S)、S2、S3、(C,SH)、C表示加法器或减法器的输出结果,C表示低位的存储器。如表4可见,每个时钟周期内的运算比较均衡,各个运算单元产生的功耗总和相差不大,所以功耗曲线比较平滑,没有电流突变,由此,可降低芯片面积。
在本申请的一些实施例中,所述S160可包括:
基于所述待处理数据和所述待处理数据的乘积,利用所述Karatsuba算法进行蒙哥马利模乘运算,以得到所述处理结果。
换言之,除第i个块的数据和所述第i个块的数据的乘法运算、以及所述第i个块的数据和所述第j个块的数据的乘法运算之外,还可以利用Karatsuba 算法,将蒙哥马利模乘运算中的其他大数的乘法转换为多个小数的乘法,能够在保证性能的基础上,进一步减小芯片的功耗。
作为示例,本申请实施例提供的Montgomery模平方-Karatsuba算法可如表5所示:
表5.Montgomery模平方-Karatsuba算法
需要说明的是,表5是基于Karatsuba算法对表1中的乘法进行的变形,为避免重复,表5中省略了对算法的含义的说明。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
换言之,本申请提供的实施例仅用于说明本申请,本申请提供的实施例的软硬件平台架构、开发环境、开发语言、消息获取源头等的选取都是可以变化的,在本申请提供的技术方案的基础上,凡根据本发明原理对某个部分进行的改进和等同变换,均不应排除在本发明的保护范围之外。
还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文结合图1,详细描述了本申请的方法实施例,下文结合图2至图3,详细描述本申请的装置实施例。
图2是本申请实施例提供的处理数据的装置200的示意性框图。
如图2所示,所述装置200可包括:
获取单元210,用于获取待处理数据;
划分单元220,用于将所述待处理数据均等分成s个块,s为大于0的整数,所述s个块按照位置顺序标识为第0个块至第s-1个块;
第一乘法单元230,用于利用Karatsuba算法,将所述s个块中的第i个块的数据和所述第i个块的数据相乘,以得到多个第一数据,0≤i≤s-1;
第二乘法单元240,用于基于所述第i个块的数据和所述s个块中第j个块的数据,i+1≤j≤s-1;
确定单元250,用于基于所述多个第一数据和所述多个第二数据,确定所述待处理数据和所述待处理数据的乘积;
运算单元260,用于基于所述待处理数据和所述待处理数据的乘积,进行蒙哥马利模乘运算,以得到处理结果。
在本申请的一些实施例中,所述确定单元250具体用于:
将所述多个第二数据中的每一个第二数据乘以2,以得到多个第三数据;
基于所述多个第一数据和所述多个第三数据,确定所述待处理数据和所述待处理数据的乘积。
在本申请的一些实施例中,所述第二乘法单元240具体用于:
利用所述Karatsuba算法,将所述第i个块的数据和所述s个块中第j个块的数据相乘,以得到所述多个第二数据。
在本申请的一些实施例中,所述s个块中每一个块的位数为2w,w为非负整数;所述利用Karatsuba算法用于将乘数的位数为2w的乘法转换为三次乘法,所述三次乘法中的每次乘法的乘数的位数为w或w+1的乘法。
在本申请的一些实施例中,所述第一乘法单元230具体用于:
利用所述Karatsuba算法,在一个时钟周期内,运行所述三次乘法中的一次乘法和以下中的至少一项:至少一次加数的位数为w、2w+2或3w的加法、至少一次的被减数的位数为3w的减法,以得到所述多个第一数据。
在本申请的一些实施例中,所述运算单元260具体用于:
基于所述待处理数据和所述待处理数据的乘积,利用所述Karatsuba算法进行蒙哥马利模乘运算,以得到所述处理结果。
应理解,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图2所示的装置200可以对应于执行本申请实施例的方法100中的相应主体,并且装置200中的各个模块的前述和其它操作和/或功能分别为了实现图1中的各个方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置200。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图3是本申请实施例提供的芯片300的示意性框图。
如图3所示,该芯片300可包括:
存储器310和处理器320,该存储器310用于存储计算机程序311,并将该程序代码311传输给该处理器320。换言之,该处理器320可以从存储器 310中调用并运行计算机程序311,以实现本申请实施例中的方法。
例如,该处理器320可用于根据该计算机程序311中的指令执行上述方法200中的步骤。
在本申请的一些实施例中,该处理器320可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列 (FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器310包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM, PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM, DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleData Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序311可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器310中,并由该处理器320执行,以完成本申请提供的芯片测试的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序311 在该芯片300中的执行过程。
如图3所示,该芯片300还可包括:
收发器330,该收发器330可连接至该处理器320或存储器310。
其中,处理器320可以控制该收发器330与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器330可以包括发射机和接收机。收发器330还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该芯片300中的各个组件通过总线***相连,其中,总线***除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
还应当理解,该芯片300可为本申请实施例的装置200,并且该芯片300 可以实现本申请实施例的各个方法中由装置200实现的相应流程,也就是说,本申请实施例的芯片300可以对应于执行根据本申请实施例的方法中的相应主体,为了简洁,在此不再赘述。
根据本申请的一个方面,提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
根据本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法实施例的方法。
换言之,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (9)
1.一种处理数据的方法,其特征在于,包括:
获取待处理数据;
将所述待处理数据均等分成s个块,s为大于0的整数,所述s个块按照位置顺序标识为第0个块至第s-1个块;
利用Karatsuba算法,将所述s个块中的第i个块的数据和所述第i个块的数据相乘,以得到多个第一数据,0≤i≤s-1;
基于所述第i个块的数据和所述s个块中第j个块的数据,得到多个第二数据,i+1≤j≤s-1;
基于所述多个第一数据和所述多个第二数据,确定所述待处理数据和所述待处理数据的乘积;
基于所述待处理数据和所述待处理数据的乘积,进行蒙哥马利模乘运算,以得到处理结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述多个第一数据和所述多个第二数据,确定所述待处理数据和所述待处理数据的乘积,包括:
将所述多个第二数据中的每一个第二数据乘以2,以得到多个第三数据;
基于所述多个第一数据和所述多个第三数据,确定所述待处理数据和所述待处理数据的乘积。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第i个块的数据和所述s个块中第j个块的数据,得到多个第二数据,包括:
利用所述Karatsuba算法,将所述第i个块的数据和所述s个块中第j个块的数据相乘,以得到所述多个第二数据。
4.根据权利要求1所述的方法,其特征在于,所述s个块中每一个块的位数为2w,w为非负整数;所述利用Karatsuba算法用于将乘数的位数为2w的乘法转换为三次乘法,所述三次乘法中的每次乘法的乘数的位数为w或w+1的乘法。
5.根据权利要求4所述的方法,其特征在于,所述利用Karatsuba算法,将所述s个块中的第i个块的数据和所述第i个块的数据相乘,以得到多个第一数据,包括:
利用所述Karatsuba算法,在一个时钟周期内,运行所述三次乘法中的一次乘法和以下中的至少一项:至少一次加数的位数为w、2w+2或3w的加法、至少一次的被减数的位数为3w的减法,以得到所述多个第一数据。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述基于所述待处理数据和所述待处理数据的乘积,进行蒙哥马利模乘运算,以得到处理结果,包括:
基于所述待处理数据和所述待处理数据的乘积,利用所述Karatsuba算法进行蒙哥马利模乘运算,以得到所述处理结果。
7.一种处理数据的装置,其特征在于,包括:
获取单元,用于获取待处理数据;
划分单元,用于将所述待处理数据均等分成s个块,s为大于0的整数,所述s个块按照位置顺序标识为第0个块至第s-1个块;
第一乘法单元,用于利用Karatsuba算法,将所述s个块中的第i个块的数据和所述第i个块的数据相乘,以得到多个第一数据,0≤i≤s-1;
第二乘法单元,用于基于所述第i个块的数据和所述s个块中第j个块的数据,i+1≤j≤s-1;
确定单元,用于基于所述多个第一数据和所述多个第二数据,确定所述待处理数据和所述待处理数据的乘积;
运算单元,用于基于所述待处理数据和所述待处理数据的乘积,进行蒙哥马利模乘运算,以得到处理结果。
8.一种芯片,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1至6中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011283836 | 2020-11-17 | ||
CN2020112838369 | 2020-11-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114510217A true CN114510217A (zh) | 2022-05-17 |
Family
ID=81546589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011457275.XA Pending CN114510217A (zh) | 2020-11-17 | 2020-12-10 | 处理数据的方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114510217A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023226173A1 (zh) * | 2022-05-24 | 2023-11-30 | 上海阵方科技有限公司 | 一种数论变换素数下的模乘运算方法 |
-
2020
- 2020-12-10 CN CN202011457275.XA patent/CN114510217A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023226173A1 (zh) * | 2022-05-24 | 2023-11-30 | 上海阵方科技有限公司 | 一种数论变换素数下的模乘运算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062611B (zh) | 神经网络处理装置及其执行向量缩放指令的方法 | |
CN107608715B (zh) | 用于执行人工神经网络正向运算的装置及方法 | |
CN109543832B (zh) | 一种计算装置及板卡 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN103226461B (zh) | 一种用于电路的蒙哥马利模乘方法及其电路 | |
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
CN111915001A (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
Xie et al. | Hardware-efficient realization of prime-length DCT based on distributed arithmetic | |
CN103761068A (zh) | 优化的蒙哥马利模乘方法、模平方方法和模乘硬件 | |
US11922133B2 (en) | Processor and method for processing mask data | |
Ye et al. | Low-complexity VLSI design of large integer multipliers for fully homomorphic encryption | |
Ito et al. | A special-purpose computer for gravitational many-body systems: GRAPE-2 | |
CN109144472B (zh) | 一种二元扩域椭圆曲线的标量乘法及其实现电路 | |
CN114510217A (zh) | 处理数据的方法、装置和设备 | |
US7693926B2 (en) | Modular multiplication acceleration circuit and method for data encryption/decryption | |
CN111445016B (zh) | 加速非线性数学计算的***及方法 | |
Selianinau | Computationally efficient approach to implementation of the Chinese Remainder Theorem algorithm in minimally redundant Residue Number System | |
CN111178513B (zh) | 神经网络的卷积实现方法、卷积实现装置及终端设备 | |
WO2013095558A1 (en) | Method, apparatus and system for execution of a vector calculation instruction | |
WO2023124371A1 (zh) | 数据处理装置、方法、芯片、计算机设备及存储介质 | |
CN116488788A (zh) | 全同态加密算法的硬件加速器、同态加密方法及电子设备 | |
US6609142B1 (en) | Method of performing multiplication with accumulation in a Galois body | |
CN116225369A (zh) | Sm2算法标量乘运算优化方法及*** | |
US11961420B2 (en) | Efficient squaring with loop equalization in arithmetic logic units | |
CN209895329U (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 |