CN113467750A - 用于基数为4的srt算法的大整数位宽除法电路及方法 - Google Patents
用于基数为4的srt算法的大整数位宽除法电路及方法 Download PDFInfo
- Publication number
- CN113467750A CN113467750A CN202110599193.7A CN202110599193A CN113467750A CN 113467750 A CN113467750 A CN 113467750A CN 202110599193 A CN202110599193 A CN 202110599193A CN 113467750 A CN113467750 A CN 113467750A
- Authority
- CN
- China
- Prior art keywords
- parameter
- bits
- dividend
- quotient
- shift
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
- G06F7/537—Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
- G06F7/5375—Non restoring calculation, where each digit is either negative, zero or positive, e.g. SRT
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)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及数据安全和隐私保护技术领域,具体涉及一种用于基数为4的SRT算法的大整数位宽除法电路及方法。该除法电路包括:迭代计算模块,用于进行一次或者多次迭代计算直至迭代计算模块的迭代计算次数达到预设迭代总次数;和商和余数生成器,用于生成在被除数和除数之间进行除法运算而得到的商和余数。针对所述一次或者多次迭代计算中的每一次迭代计算,迭代计算模块用于:根据转换参数来选择商值并根据所选择的商值来更新商的中间结果,和根据转换参数来选择中间参数并根据所选择的中间参数来更新转换参数以用于与该迭代计算相应的下一次迭代计算。如此,通过复用转换参数,有利于简化电路结构,减少耗时和提升计算性能。
Description
技术领域
本申请涉及数据安全和隐私保护技术领域,具体涉及一种用于基数为4的SRT算法的大整数位宽除法电路及方法。
背景技术
随着人工智能和大数据挖掘分析等应用领域的发展,对数据量的需求越来越大。例如训练人工智能的应用模型需要使用大量带有合适的数据标签或者特征数值的训练数据。高质量的数据往往来源于经营活动中产生和积累的应用数据。但是应用数据往往分散在不同的组织和个体手上,例如交易数据分散在各个金融机构,医疗诊断数据分散在各个医疗机构。跨行业跨领域的应用数据往往也是分散的,例如互联网领域的社交属性数据和电商交易数据往往由不同实体掌控。随着数据所有权的重要性、用户隐私和数据安全等受到更多重视,也随着法律法规对数据收集处理提出更严格的约束和要求,掌握应用数据的各个组织或个体往往不愿意或者没有合适手段进行彼此之间的合作,从而很难让各自掌握的应用数据共同发挥作用。这种数据分享和协同合作方面的困境被称之为数据孤岛现象。为了解决跨行业跨组织的数据合作难题,尤其是关键的隐私保护及数据安全的问题,提出了联邦学习的概念。联邦学习指的是拥有数据的各个参与方,在不共享受保护的隐私数据且自有数据不传递到外部的前提下,通过加密的方式交换模型相关信息从而实现协同优化联邦学习模型。其中,联邦学习根据训练数据在不同参与方之间的数据特征空间和样本空间的分布情况,可以划分为在数据特征空间重叠较大而在样本空间重叠较小的横向联邦学习,在数据特征空间重叠较小而在样本空间重叠较大的纵向联邦学习,以及在数据特征空间和样本空间均重叠较小的联邦迁移学习。
在联邦学习相关应用场景中,拥有数据的各个参与方通过隐私保护技术来保护数据安全和用户隐私,例如采用同态加密方法对原始数据也叫明文进行加密后再将加密后的密态数据也叫密文用在模型训练、梯度计算、参数计算等。同态加密方法允许直接在密文上进行代数运算等有效操作例如加法运算和乘法运算,并且直接对密文进行计算的结果等效于解密后对明文进行计算的结果,从而仅根据公钥和密文进行计算而无需知道密钥。这些数据加密技术和密态运算技术统称为隐私计算。隐私计算需要使用大量复杂算子操作,其中包括大整数位宽的除法运算。例如,常见的一种同态加密方法是Paillier算法,Paillier算法的解密计算需要对大整数位宽的被除数和除数进行除法运算,并且被除数和除数的位宽可以是1024比特、2048比特、4096比特或者更大的位宽。另一方面,一种通过计算机进行除法运算的算法是数字迭代(Sweeney Robertson and Tocher,SRT)算法。其中,SRT算法在每次迭代运算时通过加减法操作和移位操作,获得固定位数的商位结果,例如基数为4的SRT算法在每次迭代运算获得2比特的商位结果。然而,面对大整数位宽的被除数和除数,基数为4的SRT算法的整体迭代次数多,且往往需要通过软件层面算法对大整数位宽数据进行拆分处理,导致用于实现SRT算法的电路结构复杂延迟大。
为此,需要一种用于基数为4的SRT算法的大整数位宽除法电路及方法,既能用于大整数位宽的被除数和除数之间的除法运算又具有电路结构简单和延时小以及便于通过硬件电路实现的技术效果。
发明内容
本申请实施例为了解决既能用于大整数位宽的被除数和除数之间的除法运算又具有电路结构简单和延时小以及便于通过硬件电路实现的需求,通过提供了用于基数为4的SRT算法的大整数位宽除法电路及方法,从而实现了有利于简化电路结构,减少耗时和提升计算性能。
第一方面,本申请实施例提供了一种用于在数据处理单元中执行算术运算的方法。所述方法包括:通过所述数据处理单元进行一次或者多次迭代计算直至所述数据处理单元的迭代计算次数达到预设迭代总次数,其中,针对所述一次或者多次迭代计算中的每一次迭代计算,所述数据处理单元用于:根据转换参数确定与该迭代计算对应的所述算术运算的最终结果的一部分以及与该迭代计算对应的中间参数,其中,所述转换参数和所述中间参数均是二进制化,所述转换参数和所述中间参数分别按照预设位宽参数从最高位到最低位被拆分成一个或者多个具有相同长度且等于所述预设位宽参数的存储块;将所述转换参数与所述中间参数相加得到与该迭代计算对应的相加结果,其中,所述相加结果按照所述预设位宽参数从最高位到最低位被拆分成一个或者多个具有相同长度且等于所述预设位宽参数的存储块;和对与所述相加结果对应的一个或者多个存储块的每一个存储块进行位移拼接操作,从而得到更新后转换参数,所述更新后转换参数用于与该迭代计算相应的下一次迭代计算。
第一方面所描述的技术方案,通过以位宽转换后的数据为基础进行算术运算,以及通过围绕转换参数在每次迭代计算过程中的持续更新而做出的优化设计,实现了通过复用转换参数和移位拼接操作,来简化电路硬件结构、减少耗时和提升计算性能,有利于减少软硬件交互次数,从而提高流水处理效率和时钟频率。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了对与所述相加结果对应的一个或者多个存储块的每一个存储块进行位移拼接操作,从而得到所述更新后转换参数,包括,针对与所述相加结果对应的一个或者多个存储块的每一个存储块:截取该存储块的最高两个比特位用于在与该迭代计算相应的下一次迭代计算;将该存储块被截取后剩下的比特位整体向左位移两位;和将在与该迭代计算相应的上一次迭代计算中所截取的该存储块的最高两个比特位从低位拼接到该存储块。如此,通过位移拼接操作实现了简化电路硬件结构。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了所述算术运算是基数为4的SRT算法的除法运算,所述算术运算的最终结果包括被除数和除数之间进行除法运算得到的商和余数,所述预设迭代总次数根据所述被除数的位宽和所述除数的位宽确定,所述中间参数是多个预设参数中的一个,所述多个预设参数根据所述除数确定,其中,在所述一次或者多次迭代计算中的第一次迭代计算开始时,所述转换参数的初始值通过根据所述被除数的位宽和所述除数的位宽来提取所述被除数的部分比特位得到。如此,通过位宽转换实现了简化电路硬件结构。
第二方面,本申请实施例提供了一种用于基数为4的SRT算法的除法运算的除法电路。所述除法电路包括:迭代计算模块,其中,所述迭代计算模块用于进行一次或者多次迭代计算直至所述迭代计算模块的迭代计算次数达到预设迭代总次数;和商和余数生成器,其中,所述商和余数生成器用于生成在被除数和除数之间进行除法运算而得到的商和余数,其中,针对所述一次或者多次迭代计算中的每一次迭代计算,所述迭代计算模块用于:根据转换参数来选择商值并根据所选择的商值来更新所述商的中间结果,和根据所述转换参数来选择中间参数并根据所选择的中间参数来更新所述转换参数以用于与该迭代计算相应的下一次迭代计算,其中,所述商和余数生成器还用于,根据在所述迭代计算模块的迭代计算次数达到所述预设迭代总次数之后的所述转换参数和所述商的中间结果确定所述商。
第二方面所描述的技术方案,通过围绕转换参数在每次迭代计算过程中的持续更新而做出的优化设计,实现了通过复用转换参数来简化电路硬件结构、减少耗时和提升计算性能,有利于减少软硬件交互次数,从而提高流水处理效率和时钟频率。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了所述迭代计算模块包括:转换参数缓存器,其中,所述转换参数缓存器用于存储所述转换参数;加法器,其中,所述加法器用于将所述转换参数与所述中间参数相加得到与该迭代计算对应的相加结果;高位缓存器;和移位拼接器,其中,所述转换参数、所述中间参数以及所述相加结果均是二进制化,其中,所述转换参数、所述中间参数以及所述相加结果分别按照预设位宽参数从最高位到最低位被拆分成一个或者多个具有相同长度且等于所述预设位宽参数的存储块。如此,通过位宽转换实现了简化电路硬件结构。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了根据所选择的中间参数来更新所述转换参数,包括:通过所述高位缓存器和所述移位拼接器对与所述相加结果对应的一个或者多个存储块的每一个存储块进行位移拼接操作,从而得到移位拼接后的相加结果,所述移位拼接后的相加结果用于替换所述转换参数以用于与该迭代计算相应的下一次迭代计算。如此,通过位移拼接操作实现了简化电路硬件结构。
第三方面,本申请实施例提供了一种处理装置,应用于隐私计算。所述处理装置包括根据第二方面中任一项所述的除法电路,所述处理装置还包括多个运算装置用于与所述除法电路协同完成特定算子操作。
第三方面所描述的技术方案,通过围绕转换参数在每次迭代计算过程中的持续更新而做出的优化设计,实现了通过复用转换参数来简化电路硬件结构、减少耗时和提升计算性能,有利于减少软硬件交互次数,从而提高流水处理效率和时钟频率。
附图说明
为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1示出了本申请实施例提供的一种实施方式的基数为4的SRT算法的除法运算方法的流程示意图。
图2示出了本申请实施例提供的另一种实施方式的基数为4的SRT算法的除法运算方法的流程示意图。
图3示出了本申请实施例提供的用于实现图2所示的除法运算方法的除法电路的结构示意图。
图4示出了本申请实施例提供的包括图3所示的除法电路的处理装置的结构示意图。
具体实施方式
本申请实施例为了解决既能用于大整数位宽的被除数和除数之间的除法运算又具有电路结构简单和延时小以及便于通过硬件电路实现的需求,提供了用于在数据处理单元中执行算术运算的方法、用于基数为4的SRT算法的除法运算的除法电路以及处理装置,从而实现了有利于简化电路结构,减少耗时和提升计算性能。
本申请实施例可用于以下应用场景,包括但是不限于,联邦学习,隐私计算,同态加密解密算法,Paillier解密算法,大整数位宽的除法运算,或者其它任意需要高速高效流水式处理多个批次数据的除法运算操作的应用场景。
本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。
请参阅图1,图1示出了本申请实施例提供的一种实施方式的基数为4的SRT算法的除法运算方法的流程示意图。如图1所示,除法运算方法100包括以下步骤。
步骤S102:获得二进制化的被除数Z和除数D,判断被除数Z的位宽n和除数D的位宽m是否满足(n-m)mod 2=0的约束条件,如果不满足该约束条件则通过在被除数Z的高位补零以满足该约束条件并用高位补零后的结果来更新被除数Z和相应位宽n。
其中,被除数Z和除数D的除法运算可以通过任意合适的硬件平台实现,为此需要获得二进制化的被除数Z和除数D,其中二进制化的被除数Z具有位宽n,也就是说二进制化的被除数Z表示为n个比特位。类似的,二进制化的除数D具有位宽m,也就是说二进制化的除数D表示为m个比特位。这里,根据被除数Z的位宽n和除数D的位宽m可以判断是否满足约束条件(n-m)mod 2=0,该约束条件意味着n减去m的差可以被2整除。假设该约束条件不满足,则通过在被除数Z的高位补零的方式,等效于增加了被除数Z的位宽n,从而满足该约束条件。应当理解的是,通过高位补零的方式来增加被除数Z的位宽n并更新被除数Z和相应的位宽n,不会对被除数Z和除数D的除法运算结果带来影响,仅仅只是便于后续的对特定比特位的操作。
步骤S104:将被除数Z扩充得到扩充后被除数EZ和将除数D扩充得到扩充后除数ED。
其中,满足该约束条件的被除数Z从最高位到最低位表示成Z(n-1,n-2,n-3…0),其中Z(j)表示被除数Z第j+1位的值,j是不大于n-1且不小于零的整数;满足该约束条件的除数D从最高位到最低位表示成D(m-1,m-2,m-3…0),其中D(k)表示除数D第k+1位的值,k是不大于m-1且不小于零的整数;将被除数Z扩充得到扩充后被除数EZ(n+2,n+1,n,n-1,n-2,n-3…0),其中扩充后被除数EZ的最低n个比特位与被除数Z相同,也就是EZ(n-1,n-2,n-3…0)等于Z(n-1,n-2,n-3…0),而扩充后被除数EZ的最高3个比特位的初始值为零,也就是EZ(n+2,n+1,n)均为零;将除数D扩充得到扩充后除数ED(m+2,m+1,m,m-1,m-2,m-3…0),其中扩充后除数ED的最低m个比特位与除数D相同,也就是ED(m-1,m-2,m-3…0)等于D(m-1,m-2,m-3…0),而扩充后除数ED的最高3个比特位的初始值为零,也就是ED(m+2,m+1,m)均为零。
继续参阅步骤S104,假设被除数Z和除数D满足步骤S102所提及的约束条件,也就是n减去m的差可以被2整除,则在步骤S104分别对被除数Z和除数D进行扩充得到扩充后被除数EZ和扩充后除数D。应当理解的是,步骤S104的扩充操作是通过在高位补零的方式,具体地在被除数Z的高位补充3个零从而使得扩充后被除数EZ的最高3个比特位的初始值为零,而在除数D的高位补充3个零从而使得扩充后除数ED的最高3个比特位的初始值为零。这种高位补零的方式不会改变最终除法运算结果,仅仅只是便于后续的对特定比特位的操作。经过扩充操作,得到的初始化的扩充后被除数EZ可以表示成{0,0,0,Z(n-1:0)},这意味着扩充后被除数EZ的最低n个比特位与被除数Z相同,而最高3个比特位为0。类似的,经过扩充操作,得到的初始化的扩充后除数ED可以表示成{0,0,0,D(m-1:0)},这意味着扩充后除数ED的最低m个比特位与除数D相同,而最高3个比特位为0。
步骤S106:根据扩充后除数ED(m+2,m+1,m,m-1,m-2,m-3…0)计算六个参数,六个参数分别为DX1,DX2,DX3以及它们的补码DX1C,DX2C,DX3C。
其中,DX1是{ED(m+2:0)},DX2是{ED(m+1:0),0},DX3是DX1+DX2,DX1C是DX1+1,DX2C是DX2+1,DX3是DX3+1。换句话说,参数DX1是扩充后除数ED,表示为{ED(m+2:0)}。参数DX2是扩充后除数ED的低m+1位左移一位后再在最低位补零,表示为{ED(m+1:0),0}。参数DX3是参数DX1和参数DX2相加之和。与参数DX1对应的补码DX1C是参数DX1进行取反后加1操作,也即参数DX1C是参数DX1的补码。类似地,与参数DX2对应的补码DX2C是参数DX2进行取反后加1操作。与参数DX3对应的补码DX3C是参数DX3进行取反后加1操作。应当理解的是,这六个参数的计算是基于扩充后除数ED,且在步骤S106的扩充后除数ED是初始化的,也就是表示成{0,0,0,D(m-1:0)}。
步骤S108:通过预设查找表算法,根据扩充后被除数EZ(n+2,n+1,n,n-1)的值和扩充后除数ED(m-2)的值,来选择商值S和中间参数MID,商值S和中间参数MID用来计算商Q和余数R。
其中,商值S是-3,-2,-1,1,2,3中的一个,中间参数MID根据在步骤S106所计算的六个参数中的一个参数确定。从步骤S108开始进行循环计算,在每一次的循环中计算商值S并更新最终的商Q,以及更新扩充后被除数EZ。在第一次执行步骤S108时,扩充后被除数EZ是初始化的,也就是表示成{0,0,0,Z(n-1:0)}。预设查找表算法是通过下面表1所示的各种情况,根据扩充后被除数EZ(n+2,n+1,n,n-1)的值和扩充后除数ED(m-2)的值来确定对应的情况以及相应的商值S和中间参数MID。接下来结合表1进一步说明。
表1
如表1所示,扩充后除数ED(m-2)的值为1或者0,根据扩充后除数ED(m-2)的值以及扩充后被除数EZ(n+2,n+1,n,n-1)的值可以在表1中确定对应的商值S和中间参数MID。其中,商值S是-3,-2,-1,1,2,3中的一个,可以表示为2比特。中间参数MID是在步骤S106所计算得到的六个参数DX1,DX2,DX3以及它们的补码DX1C,DX2C,DX3C中的一个。如此,通过表1所示的预设查找表算法,根据扩充后被除数EZ(n+2,n+1,n,n-1)的值和扩充后除数ED(m-2)的值确定商值S和中间参数MID。应当理解的是,表1所示的预设查找表算法可以通过其它任意合适的算法或者技术手段实现,这些可以根据实际应用情况调整,在此不做具体限定。
步骤S110:计算{EZ(n+2:n-m)}与中间参数MID的相加结果,并用该相加结果更新EZ的最高m+2位也就是EZ(n+2:n-m)。
其中,在步骤S108中确定的中间参数MID用于在步骤S110的相加运算,将EZ的最高m+2位提取出来得到{EZ(n+2:n-m)},计算EZ(n+2:n-m)}与中间参数MID的相加结果,并用该相加结果更新EZ的最高m+2位,从而更新EZ。
步骤S112:判断所选择的商值S是否大于0,如果商值S大于0则执行步骤S114,如果商值S不大于0则执行步骤S116。
其中,商值S是-3,-2,-1,1,2,3中的一个,在步骤S108根据扩充后被除数EZ(n+2,n+1,n,n-1)的值和扩充后除数ED(m-2)的值确定。当商值S大于0也就是商值S为1、2或者3时执行步骤S114,当商值S不大于0也就是商值S为-3、-2或者-1时执行步骤S116。应当理解的是,因为商值S是多个预设值中的一个,所以在步骤S112判断商值S是否大于0的操作也可以等效为将商值S与多个预设值匹配并根据匹配结果执行相应步骤。
步骤S114:将商Q的部分比特位{Q(n–m+1:n-m-2x i)}左移2位再加上商值S,用得到的结果更新商Q。
其中,计数i是用于控制循环计算进程的计数,初始值为1。在步骤S114,商Q的部分比特位是从商Q中按照从高位到低位次序提取从第n–m+1位到第n-m-2x i位的值,而商Q的最低比特位设为Q(0)。因此,根据被除数Z的位宽n和除数D的位宽m以及当前计数i,可以确定商Q的部分比特位,并进行移位运算和相加运算,从而更新商Q。
步骤S116:将商Q的部分比特位{Q(n–m+1:n-m-2x i)}减去1再左移2位然后加上商值S+4,用得到的结果更新商Q。
其中,计数i是用于控制循环计算进程的计数,初始值为1。在步骤S116,商Q的部分比特位是从商Q中按照从高位到低位次序提取从第n–m+1位到第n-m-2x i位的值,而商Q的最低比特位设为Q(0)。因此,根据被除数Z的位宽n和除数D的位宽m以及当前计数i,可以确定商Q的部分比特位,并进行移位运算和相加运算,从而更新商Q。
步骤S118:将扩充后被除数EZ(n+2,n+1,n,n-1,n-2,n-3…0)左移2位。
其中,对扩充后被除数EZ进行移位运算并更新扩充后被除数EZ。
步骤S120:判断计数i是否等于循环总次数(n-m)/2,如果计数i等于循环总次数则终止循环并执行步骤S130,如果计数i小于循环总次数则执行步骤S122,其中计数i的初始值为1。
其中,计数i是用于控制循环计算进程的计数,初始值为1。在步骤S120判断计数i是否等于预设的循环总次数,这里循环总次数为被除数Z的位宽n减去除数D的位宽m的差再被2除的结果。假设被除数Z的位宽n等于除数D的位宽m,则循环总次数仍设为1,也就是说循环总次数至少为1。如果计数i达到了循环总次数,则终止循环并执行步骤S130。应当理解的是,前面提到要求被除数Z的位宽n和除数D的位宽m满足(n-m)mod 2=0的约束条件,如果不满足该约束条件则通过对被除数Z的高位补零的方式来满足该约束条件。因此,这里对循环总次数的计算应以满足约束条件后的被除数Z的位宽n及除数D的位宽m作为基础,也就是说当需要高位补零的时候则以高位补零后满足约束条件的被除数位宽作为基础。仅出于描述简略的目的,在此统一用循环总次数(n-m)/2来表示。
步骤S122:将计数i加1,然后开始新的循环并执行步骤S108。
其中,在步骤S120判断计数i小于循环总次数,因此进行下一次循环计算,并将计数i加1。如此,步骤S108、步骤S110、步骤S112、步骤S114、步骤S116以及步骤S118构成了一次循环计算的过程。其中,在步骤S112根据商值S来选择性的通过步骤S114或者步骤S116来到达步骤S118。在步骤S120判断计数i是否达到了循环总次数,如果未达到则从步骤S108开始新的循环计算,并将计数i加1。应当理解的是,在每次循环计算时,都会计算商值S并更新最终的商Q,也会更新扩充后被除数EZ。
步骤S130:判断扩充后被除数EZ(n+2)的值也就是EZ最高比特位是否为0,如果EZ(n+2)等于0则执行步骤S140,如果EZ(n+2)不等于0则执行步骤S150。
其中,在终止循环计算后,根据当前的扩充后被除数EZ判断选择性执行步骤S140或者步骤S150从而得到最终的商Q和余数。
步骤S140:判断{EZ(n+1:n–m+2)}是否等于{ED(m-1:0)},如果{EZ(n+1:n–m+2)}等于{ED(m-1:0)},则被除数Z和除数D进行除法运算的最终结果的商为商Q加1,而余数为0;如果{EZ(n+1:n–m+2)}不等于{ED(m-1:0)},则被除数Z和除数D进行除法运算的最终结果的商为商Q,而余数为{EZ(n+1:n–m+2)}。
其中,在步骤S130当判断扩充后被除数EZ(n+2)也就是EZ最高比特位的值为0时执行步骤S140,并进一步将EZ的部分比特位{EZ(n+1:n–m+2)}与ED部分比特位{ED(m-1:0)}进行比较,并根据比较结果而分别确定商Q和余数。
步骤S150:被除数Z和除数D进行除法运算的最终结果的商为商Q减1,而余数为{EZ(n+1:n–m+2)}加上{ED(m-1:0)}。
其中,在步骤S130当判断扩充后被除数EZ(n+2)也就是EZ最高比特位的值不为0也就是为1时执行步骤S150,并确定商Q和余数。
请继续参阅图1,其中从步骤S108到步骤S118构成一次循环计算的过程,在每一次循环计算过程中涉及多次的移位操作和加减法操作,并且在步骤S114和步骤S116还需要根据当前循环计算过程的计数i来确定所选取的商Q的部分比特位再进行移位操作和加减法操作。一般来说,固定位数的移位操作和拼接操作在耗时上和电路结构上均优于加减法操作。另外,对于位宽变化的数据而言,特别对于大整数位宽数据如1024比特或者2048比特而言,固定位数的移位操作和拼接操作便于实现,也便于通过插入寄存器进行流水设计以达到更高的时钟频率。因此,步骤S108到步骤S118的循环计算过程可以通过位宽转换和优化设计从而尽量将其中的加减法操作替换成移位操作和拼接操作,有利于提升计算性能。另外,通过处理器技术来实现SRT算法如基数为4的SRT算法时,需要根据实际需求将大位宽数据拆分成较小位宽数据。例如,通过现场可编程门阵列(Field Programmable Gate Array,FPGA)来进行加速隐私计算时,可能需要在某些情况下先进行拆分处理再进行具体运算操作,这可能是为了防止数据溢出导致错误,也可能是基于有限的硬件资源或者接口规格。然而这些对大位宽数据进行拆分的操作,往往需要通过软件层面算法实现,所以会引入进行拆分操作的软件与进行除法运算的电路硬件之间交互的时间成本和资源消耗。因此,在一些示例性实施例中,图1所示的除法运算方法100可以通过位宽转换和优化设计,将相关的大整数位宽数据预先转换成特定位宽的数据(例如64比特或者128比特),然后以位宽转换后的数据为基础进行SRT算法的循环计算,这样可以将大量的加减法操作替换成固定位数的移位操作和拼接操作,从而不仅具有较简单的电路硬件结构,而且省下了在软件层算法拆分大位宽数据的操作,减少了软硬件的交互次数,有利于提升计算性能,便于通过插入寄存器进行流水设计以达到更高的时钟频率。
请参阅图2,图2示出了本申请实施例提供的另一种实施方式的基数为4的SRT算法的除法运算方法的流程示意图。如图2所示,除法运算方法200包括以下步骤。
步骤S202:获得二进制化的被除数Z和除数D,判断被除数Z的位宽n和除数D的位宽m是否满足(n-m)mod 2=0的约束条件,如果不满足该约束条件则通过在被除数Z的高位补零以满足该约束条件并用高位补零后的结果来更新被除数Z和相应位宽n。
其中,步骤S202与图1所示的步骤S102细节相似,在此不再赘述。
步骤S204:将被除数Z扩充得到扩充后被除数EZ和将除数D扩充得到扩充后除数ED。
其中,步骤S204的细节与图1所示的步骤S104细节相似,在此不再赘述。
步骤S206:根据扩充后除数ED(m+2,m+1,m,m-1,m-2,m-3…0)计算六个参数,六个参数分别为DX1,DX2,DX3以及它们的补码DX1C,DX2C,DX3C。
其中,步骤S206的细节与图1所示的步骤S106的细节相似,在此不再赘述。
步骤S207:提取扩充后被除数EZ(n+2,n+1,n,n-1,n-2,n-3…0)的部分比特位EZ{(n+2:n-m)}得到被除数转换参数Z_SHIFT,将被除数转换参数Z_SHIFT和在步骤S206计算得到的六个参数(参数DX1、参数DX2、参数DX3以及相应的补码DX1C、DX2C、DX3C)分别按照预设位宽参数进行位宽转换,从而得到位宽转换后的被除数转换参数Z_SHIFT和六个参数,其中,按照预设位宽参数进行位宽转换意味着从最低位到最高位拆分成一个或者多个具有相同长度且等于预设位宽参数的存储块并在高位补零。
在本实施例中,设预设位宽参数是64比特。其中,扩充后被除数EZ(n+2,n+1,n,n-1,n-2,n-3…0)总共具有n+3个比特位,其中从EZ(n+2)到EZ(n-m)的部分比特位被提取出来后,作为被除数转换参数Z_SHIFT。也就是说,被除数转换参数Z_SHIFT是根据被除数Z的位宽n和除数D的位宽m,从扩充后被除数EZ中提取部分比特位而得到。也就是说被除数转换参数Z_SHIFT等于EZ{(n+2:n-m)},总共具有m+3个比特位。将被除数转换参数Z_SHIFT和六个参数(参数DX1、参数DX2、参数DX3以及相应的补码DX1C、DX2C、DX3C)分别按照预设位宽参数进行位宽转换,意味着各自按照从最低位到最高位拆分成一个或者多个具有相同长度且等于预设位宽参数的存储块并在高位补零。例如,假设被除数转换参数Z_SHIFT有60个比特位,则通过高位补零方式得到一个具有64比特长度的存储块来表示被除数转换参数Z_SHIFT。再例如,假设被除数转换参数Z_SHIFT有128个比特位,则可以拆分成两个都具有64比特长度的存储块来表示被除数转换参数Z_SHIFT。多个64比特长度的存储块以拼接的方式来表示位宽转换后的被除数转换参数Z_SHIFT。类似地,六个参数(参数DX1、参数DX2、参数DX3以及相应的补码DX1C、DX2C、DX3C)也分别照从最低位到最高位拆分成一个或者多个64比特长度的存储块并在高位补零。应当理解的是,在本实施例中预设位宽参数是64比特,在另一些示例性实施例中,预设位宽参数可以是64比特的整数倍数,例如64比特的2倍为128比特,或者64比特的3倍为192比特。当采用除了64比特以外的预设位宽参数时,相应的也将按照不同的长度来拆分成一个或者多个存储块。例如,当预设位宽参数是128比特时,假设被除数转换参数Z_SHIFT有128个比特位,则可以拆分成1个具有128比特长度的存储块来表示被除数转换参数Z_SHIFT。
步骤S208:根据被除数转换参数Z_SHIFT确定扩充后被除数EZ(n+2,n+1,n,n-1)的值,再通过预设查找表算法和扩充后除数ED(m-2)的值,来选择商值S和中间参数MID,商值S和中间参数MID用来计算商Q和余数R。
其中,因为m是除数D的位宽,所以可以根据被除数转换参数Z_SHIFT也就是EZ{(n+2:n-m)}确定EZ的最高4个比特位也就是EZ(n+2,n+1,n,n-1)。步骤S208与图1所示的步骤S108的其它细节相似,在此不再赘述。应当理解的是,表1所示的预设查找表算法可以通过其它任意合适的算法或者技术手段实现,这些可以根据实际应用情况调整,在此不做具体限定。
步骤S210:将被除数转换参数Z_SHIFT和中间参数MID相加,得到相加结果Z_ADD_DX,其中,相加结果Z_ADD_DX表示为一个或多个具有相同长度且等于预设位宽参数的存储块,针对相加结果Z_ADD_DX的每一个存储块,截取该存储块的最高2个比特位并将剩下的比特位向左位移两位,再将在上一次迭代周期在该存储块所截取的2个比特位从低位拼接到该存储块,从而得到移位拼接后的相加结果Z_ADD_DX_2,用移位拼接后的相加结果Z_ADD_DX_2来更新被除数转换参数Z_SHIFT。
其中,中间参数MID从位宽转换后的六个参数中选择,所以被除数转换参数Z_SHIFT和中间参数MID的相加运算等效于被除数转换参数Z_SHIFT被位宽转换后的一个或多个存储块与中间参数MID被位宽转换后的一个或多个存储块之间的相加运算,最后得到相加结果Z_ADD_DX(未示出)也必然表示为一个或多个具有相同长度且等于预设位宽参数的存储块。其中,移位拼接后的相加结果Z_ADD_DX_2(未示出)通过针对相加结果Z_ADD_DX的每一个存储块进行移位拼接操作。具体的,以预设位宽参数为64比特为例,相加结果Z_ADD_DX的每一个存储块的最高2个比特位被截取用于下一次迭代周期,而剩下的比特位也就是低62比特位向左位移两位,再将上一次迭代周期在该存储块所截取的2个比特位从低位拼接到该存储块。再设以预设位宽参数为128比特为例,相加结果Z_ADD_DX的每一个存储块的最高2个比特位被截取用于下一次迭代周期,而剩下的比特位也就是低126比特位向左位移两位,再将上一次迭代周期在该存储块所截取的2个比特位从低位拼接到该存储块。这里,因为被除数转换参数Z_SHIFT也就是EZ{(n+2:n-m)},所以用移位拼接后的相加结果Z_ADD_DX_2来更新被除数转换参数Z_SHIFT等效于用移位拼接后的相加结果Z_ADD_DX_2来更新扩充后被除数EZ的最高m+2位也就是EZ(n+2:n-m)。
步骤S212:判断所选择的商值S是否大于0,如果商值S大于0则执行步骤S214,如果商值S不大于0则执行步骤S216。
其中,商值S是-3,-2,-1,1,2,3中的一个,在步骤S108根据扩充后被除数EZ(n+2,n+1,n,n-1)的值和扩充后除数ED(m-2)的值确定。当商值S大于0也就是商值S为1、2或者3时执行步骤S114,当商值S不大于0也就是商值S为-3、-2或者-1时执行步骤S116。应当理解的是,因为商值S是多个预设值中的一个,所以在步骤S112判断商值S是否大于0的操作也可以等效为将商值S与多个预设值匹配并根据匹配结果执行相应步骤。
步骤S214:将商Q的部分比特位{Q(n–m+1:n-m-2x i)}左移2位,再将所选择的商值S所表示的2个比特位从低位拼接到该存储块,从而更新商Q。
其中,i是控制迭代进程的计数,初始值为1。商Q的部分比特位是从商Q中按照从高位到低位次序提取从第n–m+1位到第n-m-2x i位的值,而商Q的最低比特位设为Q(0)。因此,根据被除数Z的位宽n和除数D的位宽m以及当前计数i,可以确定商Q的部分比特位。当商值S大于0时,这意味着商值S是1、2或者3,则可以表示为2个比特位01、10或者11。通过对商Q的部分比特位左移2位后再将所选择的商值S所表示的2个比特位进行低位拼接,从而更新商Q。
步骤S216:将商Q的部分比特位{Q(n–m+1:n-m-2x i)}减去1再左移2位,再将所选择的商值S的补码所表示的2个比特位从低位拼接到该存储块,从而更新商Q。
其中,i是控制迭代进程的计数,初始值为1。商Q的部分比特位是从商Q中按照从高位到低位次序提取从第n–m+1位到第n-m-2x i位的值,而商Q的最低比特位设为Q(0)。因此,根据被除数Z的位宽n和除数D的位宽m以及当前计数i,可以确定商Q的部分比特位。当商值S不大于0时,这意味着商值S是-1、-2或者-3,而商值S加上4的结果为3、2或者1,这样商值S加上4就是商值S的补码并且可以表示为2个比特位11、10或者01。通过对商Q的部分比特位左移2位后再将所选择的商值S的补码所表示的2个比特位进行低位拼接,从而更新商Q。
步骤S220:判断计数i是否等于迭代总次数(n-m)/2,如果计数i等于迭代总次数则终止迭代并执行步骤S230,如果计数i小于迭代总次数则执行步骤S222,其中计数i的初始值为1。
其中,步骤S220与图1所示的步骤S120细节相似,在此不再赘述。
步骤S222:将计数i加1,然后执行步骤S208。
其中,步骤S222与图1所示的步骤S122细节相似,在此不再赘述。
步骤S230:判断被除数转换参数Z_SHIFT的最高比特位的值是否为0,如果等于0则执行步骤S240,如果不等于0则执行步骤S250。
其中,因为被除数转换参数Z_SHIFT也就是EZ{(n+2:n-m)},所以判断扩充后被除数EZ(n+2)也就是EZ最高比特位的值是否为0等效于判断被除数转换参数Z_SHIFT的最高比特位的值是否为0。步骤S230的其它细节与图1所示的步骤S130相似,在此不再赘述。
步骤S240:根据被除数转换参数Z_SHIFT确定{EZ(n+1:n–m+2)},再判断{EZ(n+1:n–m+2)}是否等于{ED(m-1:0)},如果{EZ(n+1:n–m+2)}等于{ED(m-1:0)},则被除数Z和除数D进行除法运算的最终结果的商为商Q加1,而余数为0;如果{EZ(n+1:n–m+2)}不等于{ED(m-1:0)},则被除数Z和除数D进行除法运算的最终结果的商为商Q,而余数为{EZ(n+1:n–m+2)}。
其中,因为被除数转换参数Z_SHIFT也就是EZ{(n+2:n-m)},所以可以根据被除数转换参数Z_SHIFT确定{EZ(n+1:n–m+2)},也就是提取被除数转换参数Z_SHIFT中从第二最高比特位到第三最低比特位之间的部分比特位,步骤S24的其它细节与图1所示的步骤S140相似,在此不再赘述。
步骤S250:根据被除数转换参数Z_SHIFT确定{EZ(n+1:n–m+2)},被除数Z和除数D进行除法运算的最终结果的商为商Q减1,而余数为{EZ(n+1:n–m+2)}加上{ED(m-1:0)}。
其中,因为被除数转换参数Z_SHIFT也就是EZ{(n+2:n-m)},所以可以根据被除数转换参数Z_SHIFT确定{EZ(n+1:n–m+2)}。步骤S250的其它细节与图1所示的步骤S150相似,在此不再赘述。
请参阅图2,从步骤S208到步骤S216构成一次迭代计算的过程,通过计数i和迭代总次数的比较来控制进行迭代计算的总次数,在每一次的迭代计算的过程中,都会通过预设查找表算法和扩充后被除数EZ的最高4个比特位来确定商值S和中间参数MID,并且根据中间参数MID来更新被除数转换参数Z_SHIFT,而更新后的被除数转换参数Z_SHIFT用来更新EZ的最高m+2个比特位。因为m是除数D的位宽,所以可以认为更新后的被除数转换参数Z_SHIFT必然包括了更新后的EZ的最高4个比特位,也就是说,在开始第一次迭代计算之前在步骤S207从初始化的EZ提取得到初始化的被除数转换参数Z_SHIFT,然后就可以在第一次迭代计算以及之后的多次迭代计算的过程中根据被除数转换参数Z_SHIFT来确定商值S和中间参数MID,并持续更新被除数转换参数Z_SHIFT。具体地,步骤S208包括:根据被除数转换参数Z_SHIFT确定扩充后被除数EZ(n+2,n+1,n,n-1)的值也即EZ最高4个比特位的值,再通过预设查找表算法和扩充后除数ED(m-2)的值,来选择商值S和中间参数MID,商值S和中间参数MID用来计算商Q和余数R。另外,通过将被除数转换参数Z_SHIFT和六个参数(参数DX1、参数DX2、参数DX3以及相应的补码DX1C、DX2C、DX3C)分别按照预设位宽参数进行位宽转换,使得后续的相加结果Z_ADD_DX的运算操作可以通过对多个存储块的移位拼接完成。并且移位拼接后的相加结果Z_ADD_DX_2用来更新扩充后被除数EZ的最高m+2位也就是EZ(n+2:n-m),这等效于用移位拼接后的相加结果Z_ADD_DX_2来更新被除数转换参数Z_SHIFT。因此,被除数转换参数Z_SHIFT在开始第一次迭代计算之前通过提取EZ{(n+2:n-m)}从而完成初始化,然后在第一次迭代计算和后续的每一次迭代计算中,在步骤S208被用来选择商值S和中间参数MID,然后在步骤S210根据所选择的中间参数MID进行更新。
请继续参阅图2,因为经过位宽转换的缘故,步骤S210除了被除数转换参数Z_SHIFT和中间参数MID的相加运算操作,其它运算操作都是通过固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)。并且,步骤S214也是对商Q的部分比特位进行固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)。步骤S216除了减1的操作,也是通过固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)。这意味着,从步骤S208到步骤S216所构成的一次迭代计算的过程,其中涉及的大部分运算操作已经被优化设计为容易实现的固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)。而且即使预设位宽参数发生了变化(例如从64比特变成128比特),仍然适用固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位),只需要在拆分成一个或者多个存储块时确保每个存储块具有相同长度且等于预设位宽参数。具体应用场景下的预设位宽参数可以根据移位器的接口规格或者其它硬件资源的配置决定,从而使得整个除法运算方法200具有更灵活的适配性。并且,固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)可以通过模块复用和寄存器等硬件技术实现,有利于提高整体计算性能和节约硬件资源。如此,通过以位宽转换后的数据为基础进行基数为4的SRT算法的迭代计算,以及通过围绕被除数转换参数Z_SHIFT在每次迭代计算过程中的持续更新而做出的优化设计,实现了将大量的加减法操作替换成固定位数的移位操作和拼接操作,有利于简化电路硬件结构,有利于减少耗时和提升计算性能,以及有利于减少了软硬件的交互次数,从而便于通过模块复用和寄存器等硬件技术实现除法运算而提高流水处理效率和时钟频率。
请参阅图3,图3示出了本申请实施例提供的用于实现图2所示的除法运算方法的除法电路的结构示意图。如图3所示,除法电路300包括扩充器302,参数计算器304,迭代计算模块310以及商Q和余数R生成器320。其中,除法电路300从外部接收用于除法运算的被除数Z和除数D,并传输被除数Z和除数D到扩充器302用于执行与图2所示的步骤S202和步骤S204相关的功能,包括:判断被除数Z的位宽n和除数D的位宽m是否满足(n-m)mod 2=0的约束条件,如果不满足该约束条件则通过在被除数Z的高位补零以满足该约束条件并用高位补零后的结果来更新被除数Z和相应位宽n;和将被除数Z扩充得到扩充后被除数EZ和将除数D扩充得到扩充后除数ED。应当理解的是,扩充器302的功能可以通过单个功能模块或者多个功能模块或者任意合适的电路硬件或集成电路实现,在此不做具体限定。扩充器302将扩充后除数ED传输给参数计算器304。参数计算器304用于执行与图2所示的步骤S206相关的功能,包括根据扩充后除数ED计算六个参数,分别为DX1,DX2,DX3以及它们的补码DX1C,DX2C,DX3C。参数计算器304将计算得到的六个参数发送给迭代计算模块310,扩充器302将扩充后被除数EZ和扩充后除数ED发送给迭代计算模块310。
请继续参阅图3,迭代计算模块310用于实现SRT算法中的迭代计算过程,包括图2所示的从步骤S208到步骤S216所构成的一次迭代计算的过程。迭代计算模块310根据充后被除数EZ和扩充后除数ED以及所计算的六个参数(参数DX1、参数DX2、参数DX3以及相应的补码DX1C、DX2C、DX3C)完成迭代计算过程,并将迭代计算过程终止后也就是计数i达到迭代总次数后的被除数转换参数Z_SHIFT和商Q发送给商Q和余数R生成器320。商Q和余数R生成器320用于执行与图2所示的步骤S230、步骤S240和步骤S250相关的功能,也就是根据被除数转换参数Z_SHIFT、商Q以及扩充后除数ED来确定最终结果的商Q和余数R。这样,商Q和余数R生成器320将最终结果的商Q和余数R输出到除法电路300的外部,从而完成了被除数Z和除数D的除法运算并输出最终结果的商Q和余数R。下面结合图3详细说明迭代计算模块310的结构和运行原理。
迭代计算模块310包括被除数转换参数Z_SHIFT缓存器312、查找表算法控制器313、加法器314、高位缓存器315、移位拼接器316、商Q移位拼接器318以及迭代控制器319。其中,扩充后被除数EZ的部分比特位EZ{(n+2:n-m)}被提取后作为被除数转换参数Z_SHIFT的初始值也就是用来初始化被除数转换参数Z_SHIFT缓存器312。具体地,被除数转换参数Z_SHIFT的初始值是根据被除数Z的位宽n和除数D的位宽m,从扩充后被除数EZ中提取部分比特位而得到,而这一生成被除数转换参数Z_SHIFT的初始值的操作可以由迭代计算模块310在图3中所示的某个功能模块例如被除数转换参数Z_SHIFT缓存器312实现,或者由图3中未示出的在迭代计算模块310内部或者不在迭代计算模块310内部的某个功能模块或者器件实现,例如扩充器302可以从扩充后被除数EZ中提取部分比特位而得到被除数转换参数Z_SHIFT的初始值并将该被除数转换参数Z_SHIFT的初始值发送到被除数转换参数Z_SHIFT缓存器312,再例如扩充器302可以发送扩充后被除数EZ给被除数转换参数Z_SHIFT缓存器312再由被除数转换参数Z_SHIFT缓存器312提取部分比特位而得到被除数转换参数Z_SHIFT的初始值,再例如扩充器302可以扩充后被除数EZ发送给图3中未出的某个模块,由该模块提取部分比特位而得到被除数转换参数Z_SHIFT的初始值并将该被除数转换参数Z_SHIFT的初始值发送到被除数转换参数Z_SHIFT缓存器312。
请继续参阅图3,在开始第一次迭代计算之前,被除数转换参数Z_SHIFT缓存器312所存储的被除数转换参数Z_SHIFT的初始值等于EZ{(n+2:n-m)},总共具有m+3个比特位,接下来在第一次迭代计算以及之后的多次迭代计算的过程中,被除数转换参数Z_SHIFT缓存器312所存储的被除数转换参数Z_SHIFT被用来来确定商值S和中间参数MID并且被持续更新,并且在所有的迭代计算终止后,被除数转换参数Z_SHIFT缓存器312所存储的被除数转换参数Z_SHIFT被用来确定最终结果的商Q和余数R,从而围绕被除数转换参数Z_SHIFT缓存器312而设计了具有模块复用和数据复用的结构,有利于提高流水处理效率和时钟频率。应当理解的是,图2所示的步骤S207所提及的将被除数转换参数Z_SHIFT和参数计算器304所计算得到的六个参数(参数DX1、参数DX2、参数DX3以及相应的补码DX1C、DX2C、DX3C)分别按照预设位宽参数进行位宽转换,这一操作可以通过任意合适的技术手段实现,可以通过图3中所示的某个功能模块实现,也可以通过图3中未示出的在迭代计算模块310内部或者不在迭代计算模块310内部的某个功能模块或者器件实现。例如,除法电路300可以包括预设位宽参数寄存器(未示出),用来存储用于进行位宽转换的预设位宽参数,并且可以通过外部控制手段来改变所存储的预设位宽参数,而参数计算器304或者其它合适的模块则根据该预设位宽参数寄存器所存储的预设位宽参数来对计算得到的六个参数分别进行位宽转换。关于按照预设位宽参数进行位宽转换的其它细节,请参考上述步骤S207的相关描述,在此不再赘述。经过位宽转换后的数据从最低位到最高位拆分成一个或者多个具有相同长度且等于预设位宽参数的存储块并在高位补零。下面结合图2和图3详细说明围绕被除数转换参数Z_SHIFT缓存器312在迭代计算模块310中的运行原理。
请继续参阅图3,查找表算法控制器313用于执行与图2所示的步骤S208相关的功能,也就是根据被除数转换参数Z_SHIFT确定扩充后被除数EZ(n+2,n+1,n,n-1)的值也即EZ最高4个比特位的值,再通过预设查找表算法和扩充后除数ED(m-2)的值,来选择商值S和中间参数MID。查找表算法控制器313与被除数转换参数Z_SHIFT缓存器312连接并接收被除数转换参数Z_SHIFT缓存器312所存储的被除数转换参数Z_SHIFT。扩充后除数ED(m-2)的值通过扩充器302或者其它合适模块传输给查找表算法控制器313。预设查找表算法是通过上述表1所示的各种情况,根据扩充后被除数EZ(n+2,n+1,n,n-1)的值和扩充后除数ED(m-2)的值来确定对应的情况以及相应的商值S和中间参数MID,这些细节可以参考图1所示的步骤S108和图2所示的步骤S208,在此不再赘述。查找表算法控制器313将所选择的中间参数MID发送给加法器314,将所选择的商值S发送给商Q移位拼接器318。应当理解的是,表1所示的预设查找表算法可以通过其它任意合适的算法或者技术手段实现,这些可以根据实际应用情况调整,在此不做具体限定。在另一些示例性实施例中,与图2所示的步骤S208相关的功能,可以通过其它合适技术手段实现,而查找表算法控制器313也可以被替换成具有必需的电路硬件和结构的模块。
请继续参阅图3,加法器314与被除数转换参数Z_SHIFT缓存器312连接并接收被除数转换参数Z_SHIFT缓存器312所存储的被除数转换参数Z_SHIFT,还从查找表算法控制器313获取根据该被除数转换参数Z_SHIFT所确定的中间参数MID。加法器314、高位缓存器315和移位拼接器316一起用于执行与图2所示的步骤S210相关的功能,也就是:将被除数转换参数Z_SHIFT和中间参数MID相加,得到相加结果Z_ADD_DX,其中,相加结果Z_ADD_DX表示为一个或多个具有相同长度且等于预设位宽参数的存储块,针对相加结果Z_ADD_DX的每一个存储块,截取该存储块的最高2个比特位并将剩下的比特位向左位移两位,再将在上一次迭代周期在该存储块所截取的2个比特位从低位拼接到该存储块,从而得到移位拼接后的相加结果Z_ADD_DX_2,用移位拼接后的相加结果Z_ADD_DX_2来更新被除数转换参数Z_SHIFT。具体地,以预设位宽参数为64比特为例,加法器314用于将被除数转换参数Z_SHIFT和中间参数MID相加,得到相加结果Z_ADD_DX。其中,因为被除数转换参数Z_SHIFT和中间参数MID在之前都经过位宽转换而表示为一个或多个具有相同长度且等于预设位宽参数的存储块,因此,相加结果Z_ADD_DX也表示为一个或多个具有相同长度且等于预设位宽参数的存储块。针对相加结果Z_ADD_DX的每一个存储块,高位缓存器315与加法器314连接,用于截取该存储块的最高2个比特位并存储被截取的最高2个比特位以用在下一次迭代计算的过程,并将上一次迭代计算的过程中所截取的2个比特位发送给移位拼接器316;移位拼接器316与加法器314和高位缓存器315连接,用于将相加结果Z_ADD_DX的每一个存储块的最高2个比特位被截取后剩下的比特位也就是低62比特位向左位移两位,再将上一次迭代计算的过程中所截取的2个比特位从低位拼接到该存储块,从而得到移位拼接后的相加结果Z_ADD_DX_2,用移位拼接后的相加结果Z_ADD_DX_2来更新被除数转换参数Z_SHIFT。如此,加法器314、高位缓存器315和移位拼接器316一起完成了一次迭代计算的过程中对被除数转换参数Z_SHIFT的更新,而更新后的被除数转换参数Z_SHIFT用于在下一次迭代计算的过程中来选择商值S和中间参数MID。其中,高位缓存器315可以采用类似先进先出(First Input FirstOutput,FIFO)的存储机制。每次迭代计算时,先截取当前迭代计算的过程中的该存储块的最高2个比特位并写入高位缓存器315的待读取的序列最尾端,并将上一次迭代计算的过程中所截取的2个比特位往前转移到待读取的序列最顶端,然后由移位拼接器316读取上一次迭代计算的过程中所截取的2个比特位来完成拼接。
请继续参阅图3,商Q移位拼接器318从查找表算法控制器313接收所选择的商值S,用于执行与图2所示的步骤S212、步骤S214和步骤S216相关的功能,从而在一次迭代计算的过程中更新商Q。这些细节可以参考图2所示的步骤S212、步骤S214和步骤S216,在此不再赘述。迭代控制器319用于执行与图2所示的步骤S220和步骤S222相关的功能,也就是通过比较计数和迭代总次数来控制是否终止迭代计算的过程。如图3所示,迭代控制器319与移位拼接器316和商Q移位拼接器318连接,用于在执行完步骤S210以及执行完步骤S214或者步骤S216后进行判断来确定是否要终止迭代计算。在另一些示例性实施例中,迭代控制器319可以与迭代计算模块310的部分或者全部模块连接,用于全局控制迭代计算的过程。在另一些示例性实施例中,可以将用于控制迭代计算的过程的相关信息作为控制码或者控制流加入到数据流中,从而让迭代计算模块310的每一个模块在执行相关运算操作前可以判断是否要终止迭代计算。在另一些示例性实施例中,迭代计算模块310的与图2所示的步骤S220和步骤S222相关的功能可以通过任意适合的技术手段实现,在此不做具体限定。
请继续参阅图3,在迭代计算终止后,商Q和余数R生成器320用于执行与图2所示的步骤S230、步骤S240和步骤S250相关的功能,根据在迭代计算终止后存储在被除数转换参数Z_SHIFT缓存器312的被除数转换参数Z_SHIFT来确定最终结果的商Q和余数R。商Q和余数R生成器320还与扩充器302连接,用于接收扩充后除数ED的部分或者全部。这些细节可以参考图1所示的步骤S130、步骤S140和步骤S150以及图2所示的步骤S230、步骤S240和步骤S250,在此不再赘述。
请继续参阅图3,迭代计算模块310围绕被除数转换参数Z_SHIFT缓存器312而具有便于执行图2所示的从步骤S208到步骤S216所构成的一次迭代计算的过程的结构。并且,因为经过位宽转换的缘故,除了被除数转换参数Z_SHIFT和中间参数MID的相加运算操作,每次迭代计算的过程中所涉及的大部分运算操作都是通过固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)可以实现。例如,商Q移位拼接器318在执行步骤S214相关运算时,对商Q的部分比特位进行固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位),在执行步骤S216相关运算时,除了减1的操作也是通过固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)。而且,被除数转换参数Z_SHIFT在开始第一次迭代计算之前通过提取EZ{(n+2:n-m)}从而完成初始化,然后在第一次迭代计算和后续的每一次迭代计算中,用来选择商值S和中间参数MID然后根据所选择的中间参数MID进行更新,因此实现了复用被除数转换参数Z_SHIFT缓存器312以及复用被除数转换参数Z_SHIFT缓存器312所存储的被除数转换参数Z_SHIFT。如此,迭代计算模块310围绕被除数转换参数Z_SHIFT缓存器312而通过便于实现的固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)来完成多次迭代计算的过程。并且,即使预设位宽参数发生了变化(例如从64比特变成128比特),仍然适用固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位),只需要在拆分成一个或者多个存储块时确保每个存储块具有相同长度且等于预设位宽参数。具体应用场景下的预设位宽参数可以根据移位器的接口规格或者其它硬件资源的配置决定,从而使得整个迭代计算模块310具有更灵活的适配性。并且,固定位数的移位操作(左移2位)和拼接操作(从低位拼接2个比特位)可以通过模块复用和寄存器等硬件技术实现,有利于提高整体计算性能和节约硬件资源。如此,通过以位宽转换后的数据为基础进行基数为4的SRT算法的迭代计算,以及通过围绕被除数转换参数Z_SHIFT在每次迭代计算过程中的持续更新而做出的优化设计,实现了将大量的加减法操作替换成固定位数的移位操作和拼接操作,有利于简化电路硬件结构,有利于减少耗时和提升计算性能,以及有利于减少了软硬件的交互次数,从而便于通过模块复用和寄存器等硬件技术实现除法运算而提高流水处理效率和时钟频率。
请参阅图4,图4示出了本申请实施例提供的包括图3所示的除法电路的处理装置的结构示意图。如图4所示,处理装置400包括收发接口401、主存储器402、主处理器403和除法电路410。其中,除法电路410具有与图3所示的除法电路300相似的结构,在此不再赘述,除法电路410用于接收被除数和除数并输出除法运算结果。处理装置400还包括多个用于其他运算操作的模块从而与除法电路410协同完成特定的算法需求。仅出于示例性而不是限制性,处理装置400可以包括模幂运算装置420用于模幂运算操作,减法运算装置421用于减法运算操作,模乘运算装置423用于模乘运算操作,乘加运算装置424用于乘加运算操作,模减运算装置425用于模减运算操作,以及取模运算装置426用于取模运算操作。应当理解的是,这些运算装置的各自的功能或者结构可以重新组合或者改进或者调整。这些可以根据实际需求进行调整,在此不做具体限定。例如,一种Paillier解密算法包括依次进行模幂运算操作,减法运算操作,除法运算操作,以及模乘运算操作。其中的除法运算操作需要以公钥为除数。处理装置400可以调用模幂运算装置420、减法运算装置421和模乘运算装置423,从而与除法电路410协同完成Paillier解密算法。再例如,另一种Paillier解密算法包括依次进行模幂运算操作,除法运算操作,模乘运算操作,模减运算操作,模乘运算操作,乘加运算操作以及取模运算操作。处理装置400可以调用模幂运算装置420,模乘运算装置423,模减运算装置425,乘加运算装置424以及取模运算装置426,从而与除法电路410协同完成另一种Paillier解密算法。处理装置400还可以包括进行其它运算操作的装置,例如用于蒙哥马利化运算操作的蒙哥马利化运算装置(未示出),用于去蒙哥马利化运算操作的去蒙哥马利化运算装置(未示出)或者其它任何合适的部件。处理装置400用于流水式处理隐私计算相关的数据,其中收发接口401用于从外部接收数据并输出结果,例如可以用于从外部接收用于Paillier解密的密文并输出解密后的明文。处理装置400的主存储器402和主处理器403用于配合完成特定的算法需求。例如,主存储器402可以保存处理装置400的初始化配置。主处理器403可以用于各种参数的计算并将计算好的参数传递给相应的执行运算操作的模块。应当理解的是,图4所示的处理装置400内各种用于执行运算操作的模块可以根据实际需求进行增加、删除、调整或者重新组合,从而与除法电路410一起完成特定算法需求。这些可以根据实际需要进行调整,在此不做具体限定。
请参阅图1至图4,用于执行图1或者图2所示的除法运算方法,或者与图3或者图4所示的除法电路具有相似结构和功能的器件或者模块,也可以称为数据处理单元、除法运算模块或者其它名称。例如,图3的除法电路300也可以称为数据处理单元300。另外,本申请实施例以基数为4的SRT算法进行除法运算作为例子,在另一些示例性实施例中,也可以适用于其它基数的SRT算法或者其它利用迭代计算来进行算术运算的算法。
本申请提供的具体实施例可以用硬件,软件,固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理,控制和/或专用电路来实现。本申请具体实施例提供的设备或装置可以包括一个或多个处理器(例如,微处理器,控制器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)等),这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本申请具体实施例提供的设备或装置可以包括将各个组件耦合在一起的系统总线或数据传输系统。系统总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,外围总线,通用串行总线和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本申请具体实施例提供的设备或装置可以是单独提供,也可以是系统的一部分,也可以是其它设备或装置的一部分。
本申请提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本申请具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本申请具体实施例提供的设备或装置中或属于公共系统。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(RAM),闪存,只读存储器(ROM),可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(CD),数字多功能光盘(DVD),大容量存储介质设备或任何其他形式的合适存储介质。
以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本申请另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
Claims (16)
1.一种用于在数据处理单元中执行算术运算的方法,其特征在于,所述方法包括:
通过所述数据处理单元进行一次或者多次迭代计算直至所述数据处理单元的迭代计算次数达到预设迭代总次数,
其中,针对所述一次或者多次迭代计算中的每一次迭代计算,所述数据处理单元用于:
根据转换参数确定与该迭代计算对应的所述算术运算的最终结果的一部分以及与该迭代计算对应的中间参数,其中,所述转换参数和所述中间参数均是二进制化,所述转换参数和所述中间参数分别按照预设位宽参数从最高位到最低位被拆分成一个或者多个具有相同长度且等于所述预设位宽参数的存储块;
将所述转换参数与所述中间参数相加得到与该迭代计算对应的相加结果,其中,所述相加结果按照所述预设位宽参数从最高位到最低位被拆分成一个或者多个具有相同长度且等于所述预设位宽参数的存储块;和
对与所述相加结果对应的一个或者多个存储块的每一个存储块进行位移拼接操作,从而得到更新后转换参数,所述更新后转换参数用于与该迭代计算相应的下一次迭代计算。
2.根据权利要求1所述的方法,其特征在于,所述算术运算基于SRT算法。
3.根据权利要求1所述的方法,其特征在于,所述算术运算是除法运算。
4.根据权利要求1所述的方法,其特征在于,所述预设位宽参数是64比特或者128比特。
5.根据权利要求1至4中任一项所述的方法,其特征在于,对与所述相加结果对应的一个或者多个存储块的每一个存储块进行位移拼接操作,从而得到所述更新后转换参数,包括,针对与所述相加结果对应的一个或者多个存储块的每一个存储块:
截取该存储块的最高两个比特位用于在与该迭代计算相应的下一次迭代计算;
将该存储块被截取后剩下的比特位整体向左位移两位;和
将在与该迭代计算相应的上一次迭代计算中所截取的该存储块的最高两个比特位从低位拼接到该存储块。
6.根据权利要求1所述的方法,其特征在于,所述算术运算是基数为4的SRT算法的除法运算,所述算术运算的最终结果包括被除数和除数之间进行除法运算得到的商和余数,所述预设迭代总次数根据所述被除数的位宽和所述除数的位宽确定,所述中间参数是多个预设参数中的一个,所述多个预设参数根据所述除数确定,其中,在所述一次或者多次迭代计算中的第一次迭代计算开始时,所述转换参数的初始值通过根据所述被除数的位宽和所述除数的位宽来提取所述被除数的部分比特位得到。
7.根据权利要求6所述的方法,其特征在于,所述算术运算的最终结果的所述商根据在所述数据处理单元的迭代计算次数达到所述预设迭代总次数之后的所述转换参数确定。
8.一种用于基数为4的SRT算法的除法运算的除法电路,其特征在于,所述除法电路包括:
迭代计算模块,其中,所述迭代计算模块用于进行一次或者多次迭代计算直至所述迭代计算模块的迭代计算次数达到预设迭代总次数;和
商和余数生成器,其中,所述商和余数生成器用于生成在被除数和除数之间进行除法运算而得到的商和余数,
其中,针对所述一次或者多次迭代计算中的每一次迭代计算,所述迭代计算模块用于:
根据转换参数来选择商值并根据所选择的商值来更新所述商的中间结果,和
根据所述转换参数来选择中间参数并根据所选择的中间参数来更新所述转换参数以用于与该迭代计算相应的下一次迭代计算,
其中,所述商和余数生成器还用于,根据在所述迭代计算模块的迭代计算次数达到所述预设迭代总次数之后的所述转换参数和所述商的中间结果确定所述商。
9.根据权利要求8所述的除法电路,其特征在于,所述迭代计算模块包括:
转换参数缓存器,其中,所述转换参数缓存器用于存储所述转换参数;
加法器,其中,所述加法器用于将所述转换参数与所述中间参数相加得到与该迭代计算对应的相加结果;
高位缓存器;和
移位拼接器,
其中,所述转换参数、所述中间参数以及所述相加结果均是二进制化,
其中,所述转换参数、所述中间参数以及所述相加结果分别按照预设位宽参数从最高位到最低位被拆分成一个或者多个具有相同长度且等于所述预设位宽参数的存储块。
10.根据权利要求9所述的除法电路,其特征在于,根据所选择的中间参数来更新所述转换参数,包括:
通过所述高位缓存器和所述移位拼接器对与所述相加结果对应的一个或者多个存储块的每一个存储块进行位移拼接操作,从而得到移位拼接后的相加结果,所述移位拼接后的相加结果用于替换所述转换参数以用于与该迭代计算相应的下一次迭代计算。
11.根据权利要求10所述的除法电路,其特征在于,通过所述高位缓存器和所述移位拼接器对与所述相加结果对应的一个或者多个存储块的每一个存储块进行位移拼接操作,从而得到所述移位拼接后的相加结果,包括,针对与所述相加结果对应的一个或者多个存储块的每一个存储块:
截取该存储块的最高两个比特位并且存储在所述高位缓存器中用于在与该迭代计算相应的下一次迭代计算;
通过所述移位拼接器,将该存储块被截取后剩下的比特位整体向左位移两位;和
通过所述移位拼接器,将在与该迭代计算相应的上一次迭代计算中所截取的该存储块的最高两个比特位从低位拼接到该存储块。
12.根据权利要求11所述的除法电路,其特征在于,所述高位缓存器是FIFO缓存器。
13.根据权利要求8至12中任一项所述的除法电路,其特征在于,所述预设位宽参数是64比特或者128比特。
14.根据权利要求8至12中任一项所述的除法电路,其特征在于,所述预设迭代总次数根据所述被除数的位宽和所述除数的位宽确定,所述中间参数是多个预设参数中的一个,所述多个预设参数根据所述除数确定。
15.一种处理装置,应用于隐私计算,其特征在于,所述处理装置包括根据权利要求8至14中任一项所述的除法电路,所述处理装置还包括多个运算装置用于与所述除法电路协同完成特定算子操作。
16.根据权利要求15所述的处理装置,其特征在于,所述处理装置用于Paillier解密,所述多个运算装置包括模幂运算装置,减法运算装置以及模乘运算装置,所述除法电路用于以公钥为除数的除法运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110599193.7A CN113467750A (zh) | 2021-05-31 | 2021-05-31 | 用于基数为4的srt算法的大整数位宽除法电路及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110599193.7A CN113467750A (zh) | 2021-05-31 | 2021-05-31 | 用于基数为4的srt算法的大整数位宽除法电路及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113467750A true CN113467750A (zh) | 2021-10-01 |
Family
ID=77871920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110599193.7A Pending CN113467750A (zh) | 2021-05-31 | 2021-05-31 | 用于基数为4的srt算法的大整数位宽除法电路及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467750A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584285A (zh) * | 2022-05-05 | 2022-06-03 | 深圳市洞见智慧科技有限公司 | 安全多方处理方法及相关设备 |
CN117521581A (zh) * | 2024-01-08 | 2024-02-06 | 成都北中网芯科技有限公司 | 一种除法器及其运用方法、除法运算系统 |
CN117785116A (zh) * | 2023-12-26 | 2024-03-29 | 合芯科技(苏州)有限公司 | 基于srt4实现srt16的开方运算电路 |
CN117785115A (zh) * | 2023-12-26 | 2024-03-29 | 合芯科技(苏州)有限公司 | Srt运算电路、方法、装置、芯片及电子设备 |
-
2021
- 2021-05-31 CN CN202110599193.7A patent/CN113467750A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584285A (zh) * | 2022-05-05 | 2022-06-03 | 深圳市洞见智慧科技有限公司 | 安全多方处理方法及相关设备 |
CN117785116A (zh) * | 2023-12-26 | 2024-03-29 | 合芯科技(苏州)有限公司 | 基于srt4实现srt16的开方运算电路 |
CN117785115A (zh) * | 2023-12-26 | 2024-03-29 | 合芯科技(苏州)有限公司 | Srt运算电路、方法、装置、芯片及电子设备 |
CN117521581A (zh) * | 2024-01-08 | 2024-02-06 | 成都北中网芯科技有限公司 | 一种除法器及其运用方法、除法运算系统 |
CN117521581B (zh) * | 2024-01-08 | 2024-04-02 | 成都北中网芯科技有限公司 | 一种除法器及其运用方法、除法运算系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113467750A (zh) | 用于基数为4的srt算法的大整数位宽除法电路及方法 | |
EP0801345B1 (en) | Circuit for modulo multiplication and exponentiation arithmetic | |
JP4870932B2 (ja) | 多重精度を支援する拡張型モンゴメリモジュラ掛け算器 | |
CN110351087B (zh) | 流水线型的蒙哥马利模乘运算方法 | |
Erdem et al. | A general digit-serial architecture for montgomery modular multiplication | |
CN112200713B (zh) | 一种联邦学习中的业务数据处理方法、装置以及设备 | |
CN115344237A (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
EP1217512B1 (en) | Arithmetic circuit and arithmetic method | |
KR100442218B1 (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
KR102653018B1 (ko) | 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법 | |
US8781112B2 (en) | Signed montgomery arithmetic | |
Dong et al. | Utilizing the double-precision floating-point computing power of GPUs for RSA acceleration | |
CN113467752B (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
CN117155572A (zh) | 一种基于gpu并行实现密码技术中大整数乘法的方法 | |
Parihar et al. | Fast Montgomery modular multiplier for rivest–shamir–adleman cryptosystem | |
KR101247164B1 (ko) | 큰 수 곱셈 방법 및 디바이스 | |
US7113593B2 (en) | Recursive cryptoaccelerator and recursive VHDL design of logic circuits | |
WO2023003737A2 (en) | Multi-lane cryptographic engine and operations thereof | |
KR100946256B1 (ko) | 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기 | |
KR100974624B1 (ko) | 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 | |
KR20070062901A (ko) | 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법 | |
KR100858559B1 (ko) | 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기 | |
KR100564764B1 (ko) | 유한체 다항식 곱셈 장치 및 그 방법 | |
WO2023141933A1 (en) | Techniques, devices, and instruction set architecture for efficient modular division and inversion | |
KR20000009759A (ko) | 모듈러 곱셈기 |
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 |