CN114385112A - 处理模数乘法的装置及方法 - Google Patents
处理模数乘法的装置及方法 Download PDFInfo
- Publication number
- CN114385112A CN114385112A CN202111145915.8A CN202111145915A CN114385112A CN 114385112 A CN114385112 A CN 114385112A CN 202111145915 A CN202111145915 A CN 202111145915A CN 114385112 A CN114385112 A CN 114385112A
- Authority
- CN
- China
- Prior art keywords
- results
- sum
- carry
- block
- result
- 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
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
-
- 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/523—Multiplying only
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Paper (AREA)
- Auxiliary Devices For And Details Of Packaging Control (AREA)
- Types And Forms Of Lifts (AREA)
Abstract
一种用来处理模数乘法的模数运算装置,包含有:一控制器,设置以将一被乘数划分为多个被乘数字元,将一乘数划分为多个乘数字元,以及将一模数划分为多个模数字元;第一多个处理组件,耦接所述控制器,设置以计算第一多个更新进位结果及第一多个更新总和结果;第二多个处理组件,耦接所述控制器,设置以计算第二多个更新进位结果及第二多个更新总和结果;以及一简化组件,耦接所述控制器,设置以根据所述第二多个更新进位结果及所述第二多个更新总和结果计算一结果余数。
Description
技术领域
本发明相关于一种计算装置,尤其涉及一种模数运算装置及处理模数乘法(modular multiplication)的方法。
背景技术
具大量运算数(operand)的模数乘法被广泛使用在公钥密码***(public-keycryptosystem)中。举例来说,模数乘法的运算可包含有迭代地计算进位结果(carryresult)及总和结果(sum result),以及根据所述总和结果,可计算结果余数(resultingremainder)。然而,对应于字元(word)的进位结果及总和结果的计算依赖于对应于其他字元的其他进位结果及其他总和结果,造成模数乘法的实现效率低下。因此,有效率的模数乘法为亟待解决的问题。
发明内容
因此,本发明提供处理模数乘法的装置及方法,以解决上述问题。
本发明实施例公开一种用来处理模数乘法的模数运算装置(modular operationdevice),包含有:一控制器(controller),设置以将一被乘数(multiplicand)划分为多个被乘数字元(multiplicand word),将一乘数(multiplier)划分为多个乘数字元(multiplier word),以及将一模数(modulus)划分为多个模数字元(modulus word);第一多个处理组件(processing element),耦接所述控制器,设置以根据所述多个被乘数字元、所述多个乘数字元的一乘数字元、第一多个进位结果及第一多个总和结果计算第一多个更新进位结果(updated carry result)及第一多个更新总和结果(updated sum result),其中所述第一多个处理组件的至少两个处理组件根据所述乘数字元及所述多个被乘数字元的至少两个被乘数字元平行计算所述第一多个更新进位结果的至少两个更新进位结果,以及所述至少两个处理组件根据所述乘数字元及所述至少两个被乘数字元平行计算所述第一多个更新总和结果的至少两个更新总和结果;第二多个处理组件,耦接所述控制器,设置以根据所述多个模数字元、所述第一多个更新进位结果及所述第一多个更新总和结果计算第二多个更新进位结果及第二多个更新总和结果;以及一简化组件(reduction element),耦接所述控制器,设置以根据所述第二多个更新进位结果及所述第二多个更新总和结果计算一结果余数。
本发明实施例还公开来处理一模数乘法的模数运算装置,包含有:一控制器,设置以将一被乘数划分为多个被乘数区块(multiplicand block),将一乘数划分为多个乘数区块(multiplier block),以及将一模数划分为多个模数区块(modulus block);一处理组件(processing unit),耦接所述控制器,设置以执行以下指令:根据所述多个被乘数区块的一第一被乘数区块、所述多个乘数区块的一第一乘数区块及所述多个模数区块的一第一模数区块,计算第一多个总和结果;根据所述多个被乘数区块的一第二被乘数区块、所述第一乘数区块及所述多个模数区块的一第二模数区块,计算第二多个总和结果及多个延迟总和结果(delayed sum result);根据所述第一多个总和结果、所述多个延迟总和结果、所述第一被乘数区块、所述多个乘数区块的一第二乘数区块及所述第一模数区块,计算第一多个更新总和结果;以及根据所述第二多个总和结果、所述第二被乘数区块、所述第二乘数区块及所述第二模数区块,计算第二多个更新总和结果及多个更新延迟总和结果(updateddelayed sum result);以及一简化组件,耦接所述控制器及所述处理组件,设置以根据所述第一多个更新总和结果、所述第二多个更新总和结果及所述多个更新延迟总和结果计算一结果余数。
附图说明
图1为本发明实施例一模数运算装置的示意图。
图2为本发明实施例一模数运算装置的运算的示意图。
图3为本发明实施例处理组件的平行处理的表格。
图4为本发明实施例处理组件的平行处理的数据流的示意图。
图5为本发明实施例处理组件的示意图。
图6为本发明实施例进位结果及总和结果的数据相依性的示意图。
图7为本发明实施例一模数乘法运算的调度表。
图8为本发明实施例一流程的流程图。
图9为本发明实施例一模算装置的运算的示意图。
图10为本发明实施例一模算装置的运算的示意图。
图11为本发明实施例一模数乘法运算的调度表。
图12为本发明实施例进位结果及总和结果的数据相依性的示意图。
图13为本发明实施例进位结果及总和结果的数据相依性的示意图。
图14为本发明实施例进位结果及总和结果的数据相依性的示意图。
图15为本发明实施例一流程的流程图。
图16为本发明实施例一流程的流程图。
图17为本发明实施例一流程的流程图。
图18为本发明实施例处理组件的数据流的示意图。
其中,附图标记说明如下:
10、20、90、101:模数运算装置
100:至少一处理电路
110、220、920、1020:至少一储存装置
114:程序代码
120:通信接口装置
130:至少一快取内存
140、200、900、1000:控制器
C、Sc:进位结果
S、Ss:总和结果
PE:处理组件
210、910、1010:简化组件
A:被乘数
B:乘数
P:模数
AW:被乘数字元
BW:乘数字元
PW:模数字元
Mc’、Sc’:更新进位结果
Ms’、Ss’、S’:更新总和结果
30:表格
(S_s)~:移位总和结果
q:额外商数
(M_c)~':移位更新进位结果
70、110:调度表
80、150、160、170:流程
800~820、1500~1524、1600~1618、1700~1716:步骤
1040:多个快取内存
AB:被乘数区块
BB:乘数区块
PB:模数区块
L:延迟总和结果
L’:更新延迟总和结果
H:延迟进位结果
具体实施方式
图1为本发明实施例一模数运算装置(modular operation device)10的示意图。模数运算装置10可包含有至少一处理电路(例如单元或组件)100、至少一储存装置110、至少一通信接口装置120、至少一快取内存(cache memory)130及至少一控制器(controller)140。至少一处理电路100可为一(微)处理器、多核心处理器(multi-core processor)、特定应用集成电路(Application Specific Integrated Circuit,ASIC)或中央处理单元(Central Processing Unit,CPU)。至少一储存装置110可为任意储存装置,用来储存一程序代码114,至少一处理电路100可通过至少一储存装置110读取及执行程序代码114。至少一储存装置110可为任一数据储存装置,举例来说,至少一储存装置110包含有用户识别模块(Subscriber Identity Module,SIM)、只读式内存(Read-Only Memory,ROM)、快闪内存(flash memory)、随机接入内存(Random-Access Memory,RAM)、只读记忆光盘(CompactDisc Read-Only Memory,CD-ROM)、只读记忆数字多功能光盘(digital versatile disc-ROM,DVD-ROM)、只读记忆蓝光光盘(Blu-ray Disc-ROM,BD-ROM)、磁带(magnetic tape)、硬盘(hard disk)、光学数据储存装置(optical data storage device)、非挥发性储存装置(non-volatile storage device)、非暂态计算机可读取介质(non-transitory computer-readable medium)(例如具体媒体(tangible media))等,而不限于此。至少一通信接口装置120可为一无线收发器,其是根据至少一处理电路100的处理结果,用来传送及接收信号(例如数据、消息及/或分组)。至少一快取内存130可为任意类型的快取内存(L1/L2/L3/L4/L5/L#)。至少一快取内存130被至少一处理电路100读取及执行,以及可直接与至少一处理电路100连接、紧邻或整合为至少一处理电路100的一部分。至少一控制器140可控制包含在模数运算装置10中的成分。
根据一模数乘法(modular multiplication),实施模数乘法的运算包含有迭代地(iteratively)计算进位结果(carry result)及总和结果(sum result),以及根据所述总和结果,可计算一结果余数(resulting remainder)。举例来说,对应于一较低有效字元(less significant word)(例如32位元或64位元)的进位结果Cj-1、进位结果Cj及对应于一字元的总和结果Sj,以及对应于一较高有效字元(more significant word)的总和结果Sj+1被迭代地计算。然而,总和结果Sj是基于进位结果Cj-1被计算。此外,第i次迭代中的总和结果Sj是基于第(i-1)次迭代中的总和结果Sj+1被计算。所述模数乘法可为一蒙哥马利乘法(Montgomery multiplication),但不限于此。
图2为本发明实施例一模数运算装置20的运算的示意图。在图2中,模数运算装置20包含有K个处理组件PE0~PEK-1,K个处理组件PEK~PE2K-1、一控制器200、一简化组件(reduction element)210及至少一储存装置(例如主要内存)220,其中K≥2。控制器200耦接在处理组件PE0~PEK-1,处理组件PEK~PE2K-1、简化组件210及至少一储存装置220。
详细来说,基于蒙哥马利乘法演算法,模数运算装置20被使用在计算一被乘数(multiplicand)A及一乘数(multiplier)B相对于一模数(modulus)P的模数乘法(即余数)。控制器200将被乘数A分割为(e+1)个被乘数字元(multiplicand word)AW0~AWe,将乘数B分割为(e+1)个乘数字元(multiplier word)BW0~BWe,以及将模数P分割为(e+1)个模数字元(modulus word)PW0~PWe,其中e≥1。根据(例如个别的)被乘数字元AW0~AWe、(e+1)个乘数字元BW0~BWe的一乘数字元、(e+1)个进位结果Sc0~Sce及(e+1)个总和结果Ss0~Sse,处理组件PE0~PEK-1计算(e+1)个更新进位结果(updated carry result)Mc0’~Mce’以及(e+1)个更新总和结果(updated sum result)Ms0’~Mse’。根据(例如个别的)模数字元PW0~PWe、(e+1)个更新进位结果Mc0’~Mce’及(e+1)个更新总和结果Ms0’~Mse’,处理组件PEK~PE2K-1计算(e+1)个更新进位结果Sc0’~Sce’以及(e+1)个更新总和结果Ss0’~Sse’。接着,根据更新进位结果Sc0’~Sce’以及更新总和结果Ss0’~Sse’,简化组件210计算结果余数S。也就是说,两步骤方法被使用于计算进位结果及总和结果。因此,关于计算迭代进位结果及总和结果的问题可被解决。
在一实施例中,处理组件PE0~PEK-1与处理组件PEK~PE2K-1相同。
在一实施例中,被乘数A为一n位整数。在一实施例中,被乘数字元AW0~AWe的每个被乘数字元为一w位整数。在一实施例中,根据w,获得(e+1)个被乘数字元AW0~AWe的一字元数量(e+1)。举例来说,其中为一上取整函数(ceiling function)。需注意的是,根据***要求,(e+1)个被乘数字元AW0~AWe、(e+1)个乘数字元BW0~BWe及(e+1)个模数字元PW0~PWe的字元数量及位元长度可被改变,但不限于此。
在一实施例中,被乘数字元AW0~AWe、更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’之间具有一(一对一)对应。在一实施例中,模数字元PW0~PWe’、更新进位结果Sc0’~Sce’及更新总和结果Ss0’~Sse’之间具有一(一对一)对应。
图3为本发明实施例处理组件的平行处理的表格30。详细来说,处理组件PE0~PEK-1的一组件数量K不大于(e+1)个被乘数字元AW0~AWe的一字元数量(e+1)。也就是说,处理组件PE0~PEK-1的一处理组件计算更新进位结果Mc0’~Mce’的至少一更新进位结果及更新总和结果Ms0’~Mse’的至少一总和结果。在一实施例中,根据字元数量(e+1)及组件数量K,获得更新进位结果Mc0’~Mce’的至少一更新进位结果的一数量f及更新总和结果Ms0’~Mse’的至少一总和结果的一数量f。举例来说,处理组件PE0计算更新进位结果Mc0’,McK’,…,Mcf-K’,其中在一实施例中,根据所述组件数量、对应于处理组件PE0~PEK-1的多个组件指标(element index)及对应于被乘数字元AW0~AWe的多个字元指标(word index),处理组件PE0~PEK-1计算更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’。在一实施例中,对应到组件指标k的处理组件PEk计算对应到指标j的一更新进位结果Mcj’及一更新总和结果Msj’,其中组件指标k等于将指标j除以组件数量所获得的余数,即k=j(mod K)。在一实施例中,根据乘数字元BWi及(e+1)个被乘数字元AW0~AWe的至少两个被乘数字元,处理组件PE0~PEK-1的至少两个处理组件平行(例如同时)计算更新进位结果Mc0’~Mce’的至少两个更新进位结果,以及根据乘数字元BWi及所述至少两个被乘数字元,处理组件PE0~PEK-1的至少两个处理组件平行计算更新总和结果Ms0’~Mse’的至少两个更新总和结果。在一实施例中,处理组件PE0~PEK-1的至少两个处理组件的数量、更新进位结果Mc0’~Mce’的至少两个更新进位结果的数量及更新总和结果Ms0’~Mse’的至少两个更新总和结果的数量相同。需注意的是,处理组件PE0~PEK-1的所述至少两个处理组件可执行至少一次平行计算。举例来说,处理组件PE0~PE1平行计算更新进位结果Mc0’~Mc1’,以及平行计算更新进位结果Mcf-K’~Mcf-K+1’。
在一实施例中,处理组件PEK~PE2K-1的一组件数量K不大于(e+1)个模数字元PW0~PWe的一字元数量(e+1)。也就是说,处理组件PEK~PE2K-1的一处理组件计算更新进位结果Sc0’~Sce’的至少一更新进位结果及更新总和结果Ss0’~Sse’的至少一总和结果。在一实施例中,根据字元数量(e+1)及组件数量K,获得更新进位结果Sc0’~Sce’的至少一更新进位结果的一数量f及更新总和结果Ss0’~Sse’的至少一总和结果的一数量f。举例来说,处理组件PEK计算更新进位结果Sc0’,ScK’,…,Scf-K’,其中在一实施例中,根据所述组件数量、对应于处理组件PEK~PE2K-1的多个组件指标及对应于模数字元PW0~PWe的多个字元指标,处理组件PEK~PE2K-1计算更新进位结果Sc0’~Sce’及更新总和结果Ss0’~Sse’。在一实施例中,对应到组件指标k的处理组件PEk计算对应到指标j的一更新进位结果Scj’及一更新总和结果Ssj’,其中组件指标k等于将指标j除以组件数量所获得的余数,即k=j(mod K)。在一实施例中,根据更新进位结果Mc0’~Mce’的至少两个更新进位结果及更新总和结果Ms0’~Mse’的至少两个更新总和结果,处理组件PEK~PE2K-1的至少两个处理组件平行(例如同时)计算更新进位结果Sc0’~Sce’的至少两个更新进位结果,以及平行计算更新总和结果Ss0’~Sse’的至少两个更新总和结果。在一实施例中,处理组件PEK~PE2K-1的至少两个处理组件的数量、更新进位结果Sc0’~Sce’的至少两个更新进位结果的数量及更新总和结果Ss0’~Sse’的至少两个更新总和结果的数量相同。需注意的是,处理组件PEK~PE2K-1的所述至少两个处理组件可执行至少一次平行计算。例如处理组件PEK~PEK+1平行计算更新进位结果Sc0’~Sc1’,以及平行计算更新进位结果Sc2’~Sc3’。需注意的是,为了简化实施例,图3中的K个处理组件PE0~PEK-1及K个处理组件PEK~PE2K-1假设为相同,但不限于此。
根据上述说明,处理组件的平行处理的数据流如图4所示。
在一实施例中,根据(例如个别的)乘数字元BW0~BWe、被乘数字元AW0~AWe,进位结果Sc0~Sce及总和结果Ss0~Sse的(e+1)个移位总和结果(shifted sum result)处理组件PE0~PEK-1计算更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’。在一实施例中,通过将总和结果Ss0~Sse除以一基数(radix)2w(即一字元的右移位)(例如一基数2w***),移位总和结果被获得。举例来说,需注意的是,移位总和结果的一最高有效移位总和结果(most significant shifted sum result)为0。实际上,根据至少一延迟组件(delay element)、至少一正反器或至少一暂存器(register),获得移位总和结果
在一实施例中,根据以下指令,计算更新进位结果Mc0’~Mce’的每一更新进位结果及更新总和结果Ms0’~Mse’的每一更新总和结果:将多个被乘数字元的一被乘数字元AWj与乘数字元BWi相乘(multiply),以获得一乘积(multiplication);将进位结果Sc0~Sce的一进位结果Scj及移位总和结果的一移位总和结果与所述乘积相加,以获得一数字;将所述数字除以一基数2w,以获得一商数(quotient)及一余数(remainder);决定(determine)所述商数为更新进位结果Mc0’~Mce’的一更新进位结果Mcj’;以及决定所述余数为更新总和结果Ms0’~Mse’的一更新总和结果Msj’。需注意的是,i为一乘数字元指标(multiplier word index)。因此,上述说明可以以下方程式呈现:
AWj×BWi+Scj+Ssj+1=Mcj′2w+Msj′
(式1)
在一实施例中,处理组件PE0~PEK-1还被设定根据更新总和结果Ms0’~Mse’的一最低有效结果(least significant result)Ms0’及一逆字元(inverse word),计算一额外商数(extra quotient)qi。所述逆字元为模数字元PW0~PWe的一最低有效字元(leastsignificant word)PW0的一倒数(inverse)除以一基数2w的一余数。因此,额外商数qi的计算可以以下方程式呈现:
(Ms0′×(-PW0 -1mod 2w))mod 2w=qi (式2)
在一实施例中,在额外商数qi及乘数字元BW0~BWe的一乘数字元BWi之间具有一(一对一)对应,其中根据乘数字元BWi,计算最低有效结果Ms0’。在一实施例中,在一对应于乘数字元BWi的一迭代中(例如在所述迭代期间),处理组件PE0~PEK-1计算额外商数qi一次。在一实施例中,进位结果Sc0~Sce的所有进位结果及总和结果Ss0~Sse的所有总和结果被初始化为0。
在一实施例中,根据(例如个别的)额外商数qi、模数字元PW0~PWe、更新进位结果Mc0’~Mce’的(e+1)个移位更新进位结果(shifted updated carry result)及更新总和结果Ms0’~Mse’,处理组件PEK~PE2K-1计算更新进位结果Sc0’~Sce’及更新总和结果Ss0’~Sse’。在一实施例中,通过将更新进位结果Mc0’~Mce’乘上基数2w(即一字元的左移位),获得移位更新进位结果举例来说,需注意的是,移位更新进位结果的最低有效进位结果为0。实际上,根据至少一延迟组件、至少一正反器或至少一暂存器,获得移位更新进位结果
在一实施例中,根据以下指令,计算更新进位结果Sc0’~Sce’的每一更新进位结果及更新总和结果Ss0’~Sse’的每一更新总和结果:将模数字元PW0~PWe的模数字元PWj与额外商数qi相乘,以获得一乘积;将移位更新进位结果的一移位更新进位结果及更新总和结果Ms0’~Mse’的一总和结果Msj’与所述乘积相加,以获得一数字;将所述数字除以基数2w,以获得一商数及一余数;决定所述商数为更新进位结果Sc0’~Sce’的一更新进位结果Scj’;以及决定所述余数为更新总和结果Ss0’~Sse’的一更新总和结果Ssj’。根据更新总和结果Ms0’~Mse’的一最低有效结果及一逆字元,额外商数qi被产生,以及所述逆字元为模数字元PW0~PWe的一最低有效字元的一倒数除以基数2w的一余数。因此,上述说明可以以下方程式呈现:
PWj×qi+Mcj-1′+Msj′=Scj′2w+Ssj′ (式3)
图5为本发明实施例处理组件的示意图。详细来说,处理组件PE0~PEK-1的每个处理组件包含有用于将被乘数字元AWj及乘数字元BWi相乘的乘法器(multiplier),以及用于将进位结果Scj、移位总和结果及所述乘积相加的加法器(adder)。也就是说,处理组件PE0~PEK-1的每个处理组件执行一乘积累加(multiply and accumulation,MAC)运算。此外,处理组件PEK~PE2K-1的每个处理组件包含有用于将模数字元PWj及额外商数qi相乘的乘法器,以及用于将移位更新进位结果总和结果Msj’及所述乘积相加的加法器。也就是说,处理组件PEK~PE2K-1的每个处理组件执行一乘积累加运算。需注意的是,方程式(式2)中的额外商数qi的计算可被图5中的乘法器执行,或者可被一额外乘法器执行(未绘示于图5中)。
根据上述说明,以下方程式可被获得:
在一实施例中,在对应于乘数字元BW0~BWe的第一字元BWi的第i个迭代(iteration)中,处理组件PEK~PE2K-1计算进位结果Sc0~Sce及总和结果Ss0~Sse。接着,在对应于乘数字元BW0~BWe的第二字元(例如下一个字元)BWi+1的第(i+1)个迭代中,处理组件PE0~PEK-1计算更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’,以及处理组件PEK~PE2K-1计算更新进位结果更新总和结果Ss0’~Sse’。
根据以上说明,本发明实施例进位结果及总和结果的数据相依性(datadependency)如图6所示。在图6中,被处理组件PE0执行的运作以C task表示。被处理组件PE1~PEK-1执行的运作以D task表示。被处理组件PEK~PE2K-1执行的运作以H task表示。需注意的是,为了简化实施例,被乘数字元AW0~AW3的数量、乘数字元BW0~BW3的数量及处理组件的数量(即4个)假设为相同,但不限于此。
在一实施例中,在处理组件PEK~PE2K-1在对应于乘数字元BW0~BWe的一最高有效字元BWe的一最后迭代中计算更新进位结果Sc0’~Sce’及更新总和结果Ss0’~Sse’之后,简化组件210计算结果余数S。在一实施例中,根据对应于更新进位结果Sc0’~Sce’的多个权重(weighting)及对应于更新总和结果Ss0’~Sse’的多个权重,简化组件210计算结果余数S。举例来说,权重2jw对应于更新进位结果Scj’的权重及对应于更新总和结果Ssj+1’。因此,上述说明可以以下方程式呈现:
图7为本发明实施例模数乘法运算的调度表70。详细来说,在接入(例如读取)在至少一储存装置220中(例如载入、储存)的被乘数字元AW0~AWe、进位结果Sc0~Sce及总和结果Ss0~Sse之后,处理组件PE0~PEK-1计算更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’。在接入在至少一储存装置220中的模数字元PW0~PWe、更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’之后,处理组件PEK~PE2K-1计算更新进位结果Sc0’~Sce’及更新总和结果Ss0’~Sse’。在接入在至少一储存装置220中的更新进位结果Sc0’~Sce’及更新总和结果Ss0’~Sse’之后,简化组件210计算结果余数S。此外,在计算更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’之后,处理组件PE0~PEK-1在至少一储存装置220的一第一顺位(order)中储存(例如写入)更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’。在计算更新进位结果Sc0’~Sce’及更新总和结果Ss0’~Sse’之后,处理组件PEK~PE2K-1在至少一储存装置220的一第二顺位中储存更新进位结果Sc0’~Sce’及更新总和结果Ss0’~Sse’。接着,在计算结果余数S之后,简化组件210在至少一储存装置220中储存结果余数S。需注意的是,根据***需求,图7中用来储存迭代总和结果及迭代进位结果的顺序可被改变,但不限于此。
上述模数运算装置的运算实施例可总结为图8的流程80,以及可编译为程序代码114。流程80包含有以下步骤:
步骤800:开始。
步骤802:控制器将A分割为AW0~AWe,将B分割为BW0~BWe,以及将P分割为PW0~PWe。
步骤804:控制器将Sc0~Sce及Ss0~Sse初始化为0。
步骤806:根据在第i个外迭代(outer iteration)及第u个内迭代(inneriteration)中的AWuK+j×BWi+ScuK+j+SsuK+j+1,处理组件PE0~PEK-1的每个处理组件PEj计算McuK+j及MsuK+j。
步骤808:根据第i个外迭代及第0个内迭代中的Ms0,处理组件PE0计算qi。
步骤810:控制器决定f个内迭代是否完成。若是,执行步骤812,否则执行步骤806。
步骤812:根据在第i个外迭代及第v个内迭代中的PWvK+j×qi+McvK+j-1+MsvK+j,每个处理组件PEj计算ScvK+j及SsvK+j。
步骤814:控制器决定f个内迭代是否完成。若是,执行步骤816,否则执行步骤812。
步骤816:控制器决定(e+1)个外迭代是否完成。若是,执行步骤818,否则执行步骤806。
步骤818:根据Sc0~Sce及Ss0~Sse,简化组件计算S。
步骤820:结束。
流程80的运作细节及变化可参考上述说明,在此不赘述。
图9为本发明实施例模数运算装置90的运作的示意图。在图9中,模数运算装置包含有两个处理组件PE0~PE1、一控制器900、一简化组件910及至少一储存装置920。控制器900耦接处理组件PE0~PE1、简化组件910及至少一储存装置920。
详细来说,基于蒙哥马利乘法演算法,模数运算装置90被使用在计算一被乘数A及一乘数B相对于一模数P的模数乘法(即余数)。控制器900将被乘数A分割为(e+1)个被乘数字元AW0~AWe,将乘数B分割为(e+1)个乘数字元BW0~BWe,以及将模数P分割为(e+1)个模数字元PW0~PWe,其中e≥1。根据(例如个别的)(e+1)个乘数字元BW0~BWe的一乘数字元、被乘数字元AW0~AWe、(e+1)个进位结果Sc0~Sce及(e+1)个总和结果Ss0~Sse,处理组件PE0计算额外商数qi、(e+1)个更新进位结果Mc0’~Mce’以及(e+1)个更新总和结果Ms0’~Mse’。根据(例如个别的)额外商数qi、模数字元PW0~PWe、更新进位结果Mc0’~Mce’及更新总和结果Ms0’~Mse’,处理组件PE1被设定计算(e+1)个更新进位结果Sc0’~Sce’以及(e+1)个更新总和结果Ss0’~Sse’。接着,根据更新进位结果Sc0’~Sce’以及更新总和结果Ss0’~Sse’,简化组件910计算结果余数S。也就是说,使用两步骤方法(two-step method)被使用于计算进位结果及总和结果。因此,关于计算迭代进位结果及总和结果的问题可被解决。
在一实施例中,处理组件PE0与处理组件PE1为相同的处理组件。
流程90的运作细节及变化可参考上述说明,在此不赘述。
图10为本发明实施例模数运算装置101的运作的示意图。在图10中,模数运算装置101包含有一处理组件PE、一控制器1000、一简化组件1010、至少一储存装置(例如主要内存)1020及多个快取内存1040。控制器1000耦接处理组件PE、简化组件1010、至少一储存装置1020及多个快取内存1040。
详细来说,基于蒙哥马利乘法演算法,模数运算装置101被使用在计算一被乘数A及一乘数B相对于一模数P的模数乘法(即余数)。控制器1000将被乘数A分割为K个被乘数区块(multiplicand block)AB0~ABK-1,将乘数B分割为K个乘数区块(multiplier block)BB0~BBK-1,以及将模数P分割为K个模数区块(modulus block)PB0~PBK-1,其中K≥2。处理组件PE被设定执行指令。所述指令包含有根据被乘数区块AB0~ABK-1的被乘数区块ABj、模数区块PB0~PBK-1的模数区块PBj及乘数区块BB0~BBK-1的乘数区块BBi,计算f个总和结果Sjf~S(j+1)f-1,其中f≥2。所述指令包含有根据被乘数区块AB0~ABK-1的被乘数区块ABj+1、模数区块PB0~PBK-1的模数区块PBj+1及乘数区块BBi,计算f个总和结果S(j+1)f~S(j+2)f-1及f个延迟总和结果(delayed sum result)Ljf~L(j+1)f-1。所述指令包含有根据总和结果Sjf~S(j+1)f-1、延迟总和结果Ljf~L(j+1)f-1、被乘数区块ABj、模数区块PBj及BB0~BBK-1的乘数区块BBi+1,计算f个更新总和结果Sjf’~S(j+1)f-1’。所述指令包含有根据总和结果S(j+1)f~S(j+2)f-1、被乘数区块ABj+1、模数区块PBj+1及乘数区块BBi+1,计算更新总和结果S(j+1)f’~S(j+2)f-1’及更新延迟总和结果(updated delayed sum result)Ljf’~L(j+1)f-1’。接着,简化组件1010设置以根据更新总和结果Sjf’~S(j+1)f-1’、更新总和结果S(j+1)f’~S(j+2)f-1’及更新延迟总和结果Ljf’~L(j+1)f-1’计算一结果余数S。也就是说,后处理方法(post processing method)被使用于计算进位结果及总和结果。因此,关于计算迭代进位结果及总和结果的问题可被解决。
在一实施例中,根据被乘数区块ABj+1、模数区块PBj+1、乘数区块BBi+1及f个额外商数qif~q(i+1)f-1,处理组件PE计算延迟总和结果Ljf~L(j+1)f-1。
在一实施例中,被乘数A为一n位整数。在一实施例中,被乘数区块AB0~ABK-1的每个被乘数区块为一b位整数,以及包含有f个被乘数字元。在一实施例中,每个被乘数字元为一w位整数,即以及需注意的是,根据***要求,被乘数区块AB0~ABK-1的、乘数区块BB0~BBK-1及模数区块PB0~PBK-1的区块数量及位数长度可被改变,但不限于此。
在一实施例中,总和结果Sjf~S(j+1)f-1、更新总和结果Sjf’~S(j+1)f-1’及被乘数区块ABj的f个被乘数字元AWjf~AW(j+1)f-1之间具有一(一对一)对应。在一实施例中,总和结果S(j+1)f~S(j+2)f-1、更新总和结果S(j+1)f’~S(j+2)f-1’及被乘数区块ABj+1的f个被乘数字元AW(j+1)f~AW(j+2)f-1之间具有一(一对一)对应。
在一实施例中,延迟总和结果Ljf~L(j+1)f-1及总和结果Sjf~S(j+1)f-1之间具有一对应。在一实施例中,延迟总和结果Ljf~L(j+1)f-1的数量与总和结果Sjf~S(j+1)f-1的数量相同。在一实施例中,延迟总和结果Ljf~L(j+1)f-1的数量小于总和结果Sjf~S(j+1)f-1的数量。在一实施例中,延迟总和结果Ljf~L(j+1)f-1及乘数区块BBi的f个乘数字元BWif~BW(i+1)f-1之间具有一对应。在一实施例中,更新延迟总和结果Ljf’~L(j+1)f-1’及乘数区块BBi+1的f个乘数字元BW(i+1)f~BW(i+2)f-1之间具有一对应。
在一实施例中,模数运算装置101还包含有耦接控制器1000的一载入及储存组件(loading and storing element),所述载入及储存组件设置以执行指令。所述指令包含有在处理组件计算总和结果Sjf~S(j+1)f-1之前,从至少一储存装置1020,载入(或复制)被乘数区块ABj及模数区块PBj到多个快取内存1040(即被乘数区块ABj及模数区块PBj从储存装置被载入,以及被储存在快取内存)。所述指令包含有在处理组件计算总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1之前,从至少一储存装置1020,载入被乘数区块ABj+1及模数区块PBj+1到快取内存1040。所述指令包含有在处理组件计算更新总和结果Sjf’~S(j+1)f-1’之前,从至少一储存装置1020,载入总和结果Sjf~S(j+1)f-1、延迟总和结果Ljf~L(j+1)f-1、被乘数区块ABj及模数区块PBj到多个快取内存1040。所述指令包含有在处理组件计算更新总和结果S(j+1)f’~S(j+2)f-1’及更新延迟总和结果Ljf’~L(j+1)f-1’之前,从至少一储存装置1020,载入总和结果S(j+1)f~S(j+2)f-1、被乘数区块ABj+1及模数区块PBj+1到多个快取内存1040。在一实施例中,在接入(例如读取)多个快取内存1040中的(例如被载入的)被乘数区块ABj之后,处理组件计算总和结果Sjf~S(j+1)f-1。在接入多个快取内存1040中的被乘数区块ABj+1之后,处理组件计算总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1。在接入多个快取内存1040中的总和结果Sjf~S(j+1)f-1、延迟总和结果Ljf~L(j+1)f-1及被乘数区块ABj之后,处理组件计算更新总和结果Sjf’~S(j+1)f-1’。在接入多个快取内存1040中的总和结果S(j+1)f~S(j+2)f-1及被乘数区块ABj+1之后,处理组件计算更新总和结果S(j+1)f’~S(j+2)f-1’。也就是说,用于在每一区块中计算的数据(例如被乘数区块的被乘数字元)仅被载入到快取内存一次。换言之,可减少快取未命中(cache miss)的发生次数。
在一实施例中,处理组件执行的指令包含有在计算总和结果Sjf~S(j+1)f-1之后,在多个快取内存1040中储存(例如写入)总和结果Sjf~S(j+1)f-1。所述指令包含有在计算总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1之后,在多个快取内存1040中储存总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1。所述指令包含有在计算更新总和结果Sjf’~S(j+1)f-1’之后,在多个快取内存1040中储存更新总和结果Sjf’~S(j+1)f-1’。所述指令包含有在计算更新总和结果S(j+1)f’~S(j+2)f-1’之后,在多个快取内存1040中储存更新总和结果S(j+1)f’~S(j+2)f-1’。在一实施例中,所述载入及储存组件被设定执行的指令。所述指令包含有在处理组件计算总和结果Sjf~S(j+1)f-1之后,将总和结果Sjf~S(j+1)f-1储存到至少一储存装置1020中。所述指令包含有在处理组件计算总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1之后,将总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1储存到至少一储存装置1020中。所述指令包含有在处理组件计算更新总和结果Sjf’~S(j+1)f-1’之后,将更新总和结果Sjf’~S(j+1)f-1’储存到至少一储存装置1020中。所述指令包含有在处理组件计算更新总和结果S(j+1)f’~S(j+2)f-1’之后,将更新总和结果S(j+1)f’~S(j+2)f-1’储存到至少一储存装置1020中。
在一实施例中,所述储存及载入组件还执行的指令包含有载入被乘数区块ABj及模数区块PBj到多个快取内存1040的一第一快取内存。所述指令包含有当处理组件计算总和结果Sjf~S(j+1)f-1时,载入被乘数区块ABj+1及模数区块PBj+1到多个快取内存1040的一第二快取内存。所述指令包含有当处理组件计算总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1时,载入总和结果Sjf~S(j+1)f-1、延迟总和结果Ljf~L(j+1)f-1、被乘数区块ABj及模数区块PBj到所述第一快取内存。所述指令包含有当处理组件计算更新总和结果Sjf’~S(j+1)f-1’时,载入所述总和结果S(j+1)f~S(j+2)f-1、被乘数区块ABj+1及模数区块PBj+1到所述第二快取内存。
图11为本发明实施例模数乘法运算的调度表110。详细来说,在处理组件计算总和结果Sjf~S(j+1)f-1之前,所述载入及储存组件载入被乘数区块ABj及模数区块PBj到所述第一快取内存。当处理组件计算总和结果Sjf~S(j+1)f-1时,所述载入及储存组件载入被乘数区块ABj+1及模数区块PBj+1到所述第二快取内存。当处理组件计算总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1时,所述载入及储存组件储存(例如被储存的)总和结果Sjf~S(j+1)f-1到至少一储存装置1020中的所述第一快取内存。在处理组件计算更新总和结果Sjf’~S(j+1)f-1’之前,所述载入及储存组件载入被乘数区块ABj及模数区块PBj到所述第一快取内存。当处理组件计算更新总和结果Sjf’~S(j+1)f-1’时,所述载入及储存组件载入被乘数区块ABj+1及模数区块PBj+1到所述第二快取内存。当处理组件计算更新总和结果Sjf’~S(j+1)f-1’时,所述载入及储存组件储存总和结果S(j+1)f~S(j+2)f-1及延迟总和结果Ljf~L(j+1)f-1到至少一储存装置1020中的所述第二快取内存。当处理组件计算更新总和结果S(j+1)f’~S(j+2)f-1’时,所述载入及储存组件储存更新总和结果Sjf’~S(j+1)f-1’到至少一储存装置1020中的所述第一快取内存。所述载入及储存组件储存更新总和结果S(j+1)f’~S(j+2)f-1’到至少一储存装置1020中的所述第二快取内存。也就是说,在所述模数乘法中,乒乓快取内存(Ping-pong cache memory)(例如乒乓缓冲器(Ping-pong buffer))被使用于计算总和结果。
在一实施例中,处理组件还执行的指令包含有根据被乘数区块ABj的一最高有效字元(most significant word)AW(j+1)f-1及乘数区块BBi,计算f个延迟进位结果(delayedcarry result)Hif~H(i+1)f-1。所述指令包含有根据最高有效字元AW(j+1)f-1及乘数区块BBi+1,计算f个延迟进位结果H(i+1)f~H(i+2)f-1。在一实施例中,所述简化组件还被设定执行以下指令:根据更新总和结果Sjf’~S(j+1)f-1’、更新总和结果S(j+1)f’~S(j+2)f-1’、更新延迟总和结果Ljf’~L(j+1)f-1’,计算结果余数S。在一实施例中,根据被乘数区块ABj+1的一最低有效字元AW(j+1)f及乘数区块BBi,处理组件计算延迟总和结果Ljf~L(j+1)f-1,以及根据最低有效字元AW(j+1)f及乘数区块BBi+1,处理组件计算更新延迟总和结果Ljf’~L(j+1)f-1’。在一实施例中,根据(例如仅根据)最低有效字元AW(j+1)f、乘数区块BBi、模数区块PB(j+1)f、f个额外商数qif~q(i+1)f-1及第一多个暂时进位结果(temporary carry result),处理组件计算延迟总和结果Ljf~L(j+1)f-1。根据(例如仅根据)最低有效字元AW(j+1)f、乘数区块BBi+1、及第二多个暂时进位结果,处理组件计算更新延迟总和结果Ljf’~L(j+1)f-1’,其中根据被乘数区块ABj+1的一最低有效字元AW(j+1)f+1,计算所述第一多个暂时进位结果及所述第二多个暂时进位结果。举例来说,延迟进位结果Hif~H(i+1)f-1是根据被乘数区块ABj的一最高有效字元AW(j+1)f-1计算所得,处理组件不根据延迟进位结果Hif~H(i+1)f-1计算延迟总和结果Ljf~L(j+1)f-1。并且,延迟进位结果H(i+1)f~H(i+2)f-1是根据最高有效字元AW(j+1)f-1计算所得,处理组件不根据延迟进位结果Hif~H(i+1)f-1计算更新延迟总和结果Ljf’~L(j+1)f-1’。
在一实施例中,处理组件还执行的指令包含有根据被乘数区块ABj的一最高有效字元AW(j+1)f-1及乘数区块BBi的最高有效字元BW(i+1)f-1,计算延迟进位结果H(i+1)f-1;决定延迟进位结果H(i+1)f-1为总和结果Sjf~S(j+1)f-1的一最高有效结果(most significantresult)S(j+1)f-1。所述指令包含有根据被乘数区块ABj的最高有效字元AW(j+2)f-1及乘数区块BBi的最高有效字元BW(i+1)f-1,计算延迟进位结果H(i+1)f-1’;以及决定延迟进位结果H(i+1)f-1’为总和结果S(j+1)f~S(j+2)f-1的一最高有效结果S(j+2)f-1。
在一实施例中,计算更新总和结果Sjf’~S(j+1)f-1’的指令包含有:根据总和结果Sjf~S(j+1)f-1、延迟总和结果Ljf~L(j+1)f-1、被乘数区块ABj及乘数区块BBi+1的一第一字元,计算多个暂时总和结果(temporary sum result);以及根据所述多个暂时总和结果、被乘数区块ABj及乘数区块BBi+1的一第二字元,计算更新总和结果Sjf’~S(j+1)f-1’。在一实施例中,乘数区块BBi+1的所述第一字元为乘数区块BBi+1的最低有效字元BW(i+1)f(即迭代总和结果即迭代延迟总和结果的先前处理)。
在一实施例中,处理组件还执行以下指令:根据总和结果S0~Sf-1的一最低有效结果S0、延迟总和结果L0~Lf-1的一最低有效结果L0及对应于乘数区块BBi的一最低有效字元BWif+u的一迭代中的一逆字元,计算额外商数qif+u,其中所述逆字元为模数区块PB0~PBK-1的一最低有效字元PB0的一倒数除以一基数2w的余数。
在一实施例中,额外商数区块qBi及乘数区块BB0~BBK-1的一乘数区块BBi之间具有一对应,其中根据乘数区块BBi,计算最低有效结果Sjf。在一实施例中,在对应于乘数区块BBi的一迭代中,处理组件计算额外商数区块qBi一次。
根据以上所述,虚拟代码(pseudo code)的一范例如下所示:
Initialize S to 0.
Initialize carry out resultsL,L_n,Ca and Cb to 0.
for(i=0:k-1)begin
Perform a block_0process.//Process a least significant block.
for(j=1:k-1)begin
Perform at least one block_1process.//Process other blocks.
end
Determine L_nas L(k-1)f.
Determine Ca[k-1]as L_n.
Determine Cb[k-2:0]as Ca[k-2:0].
end
//Post process of S+L.
Determine 0 as Cc and Ca[-1].
for(i=0:k-1)begin
Compute Cc and Sj according to Sj+Lj+Ca[i-1]+Cc.
for(j=0:f-1)begin
Compute Cc and Sjaccording to Sj+Lj+Cc.
end
end
Determine Cc+L_n as Sfk.
Ca[k-1]is a(k-1)-th bit of Ca,and Cb[k-2:0]is a segment with a mostsignificant bit(k-2)and a least significant bit 0.
In addition,the block_0 process can be obtained as follows:
Initialize Cb[0]to 0.
for(v=0:f-1)begin
Compute Cb[0]and Svaccording to Sv+Lv+Cb[0].
end
for(u=0:f-1)begin
//X task
Determine AW0×BWif+u+S0as T.
Determine T[w-1:0]as S0.
Determine T[2w-1:w]as Mc.
Determine S0×tas qjf+u.
Determine PW0×qif+u+S0as T′.
Determine T′[2w-1:w]as Sc.
for(v=1:f-1)begin//Y task
Determine AWv×BWif+u+Sv+Mc as T.
Determine T[w-1:0]as Sv.
Determine T[2w-1:w]as Mc.
Determine PWv×qif+u+Sv+Sc as T′.
Determine T′[w-1:0]as Sv-1.
Determine T′[2w-1:w]as Sc.
end
Compute Cb[0]and Sf-1 according to Cb[0]+Mc+Sc.
end
In addition,the block_1 process can be obtained as follows:
Initialize Cb[j]to Ca[j-1].
for(v=0:f-1)begin
Compute Cb[j]and Sjf+v according to Sjf+v+Ljf+v+Cb[j].
end
for(u=0:f-1)begin
//X task
Determine AWjf×BWif+u+Sjf as T.
Determine T[w-1:0]as Sjf.
Determine T[2w-1:w]as Mc.
Determine PWjf×qif+u+Sjfas T′.
Determine T′[w-1:0]as L(j-1)f+u.
Determine T′[2w-1:w]as Sc.
for(v=1:f-1)begin//Y task
Determine AWjf+v×BWif+u+Sjf+v+Mc as T.
Determine T[w-1:0]as Sjf+v.
Determine T[2w-1:w]as Mc.
Determine PWjf+v×qif+u+Sjf+v+Sc as T′.Determine T′[w-1:0]as Sjf+v-1.
Determine T′[2w-1:w]as Sc.
end
Compute Cb[j]and Sjf+f-1 according to Cb[j]+Mc+Sc.
end
根据以上所述,本发明实施例进位结果及总和结果的数据相依性如图12所示。需注意的是,被乘数区块AB0~AB3的数量及乘数区块BB0~BB4的数量不限于此。
详细来说,在一block_0流程中进位结果及总和结果的数据相依性如图13。此外,在一block_1流程中进位结果及总和结果的数据相依性如图14所示。
上述模数运算装置的运算实施例可总结为图15的流程150,以及可编译为程序代码114。流程1500包含有以下步骤:
步骤1500:开始。
步骤1502:控制器将A分割为AB0~ABK-1,将B分割为BB0~BBK-1,以及将P分割为PB0~PBK-1。
步骤1504:在第i个外迭代中,载入及储存组件载入BBi到快取内存。
步骤1506:在第i个外迭代及第j个内迭代中,载入及储存组件载入Ljf~L(j+1)f-1到快取内存。
步骤1508:在第i个外迭代及第j个内迭代中,载入及储存组件载入ABj、PBj及Sjf~S(j+1)f-1。
步骤1510:控制器决定j是否为0。若是,执行步骤1512,否则执行步骤1514。
步骤1512:通过执行block_0流程,处理组件计算S0~Sf-1,以及在第i个外迭代及第j个内迭代中,储存S0~Sf-1。执行步骤1516。
步骤1514:通过执行block_1流程,处理组件计算Sjf~S(j+1)f-1及L(j-1)f~Ljf-1,以及在第i个外迭代及第j个内迭代中,储存Sjf~S(j+1)f-1及L(j-1)f~Ljf-1。
步骤1516:控制器决定K个内迭代是否完成。若是,执行步骤1520,否则执行步骤1518。
步骤1518:控制器决定(K-1)个内迭代是否完成。若是,执行步骤1508,否则执行步骤1506。
步骤1520:控制器决定K个外迭代是否完成。若是,执行步骤1522,否则执行步骤1504。
步骤1522:根据S0~SKf-1及L0~L(K-1)f-1,通过执行后处理,简化组件计算S。
步骤1524:结束。
图15中的步骤1512的block_0流程可以图16中的流程160来实现。流程160包含有以下步骤:
步骤1600:开始。
步骤1602:控制器初始化Mc为0。
步骤1604:根据在第u个外迭代及第v个内迭代中的AWv×BWif+u+Sv+Mc,处理组件计算Sv及Mc。
步骤1606:根据在第u个外迭代及第0个内迭代中的S0,处理组件计算qif+u。
步骤1608:控制器决定f个内迭代是否完成。若是,执行步骤1610,否则执行步骤1604。
步骤1610:控制器初始化Sc为0。
步骤1612:根据在第u个外迭代及第v个内迭代中的PWv×qif+u+Sv+Sc,处理组件计算Sv及Sc。
步骤1614:控制器决定f个内迭代是否完成。若是,执行步骤1616,否则执行步骤1612。
步骤1616:控制器决定f个外迭代是否完成。若是,执行步骤1618,否则执行步骤1602。
步骤1618:结束。
图15中的步骤1514的block_1流程可以图17中的流程170来实现。流程170包含有以下步骤:
步骤1700:开始。
步骤1702:控制器初始化Mc为0。
步骤1704:根据在第u个外迭代及第v个内迭代中的AWjf+v×BWif+u+Sjf+v+Mc,处理组件计算Sv及Mc。
步骤1706:控制器决定f个内迭代是否完成。若是,执行步骤1708,否则执行步骤1704。
步骤1708:控制器初始化Sc为0。
步骤1710:根据在第u个外迭代及第v个内迭代中的PWjf+v×qif+u+Sjf+v+Sc,处理组件计算Sv及Sc。
步骤1712:控制器决定f个内迭代是否完成。若是,执行步骤1714,否则执行步骤1710。
步骤1714:控制器决定f个外迭代是否完成。若是,执行步骤1716,否则执行步骤1702。
步骤1716:结束。
流程150、160及170的运作细节及变化可参考上述说明,在此不赘述。
根据以上所述,处理组件的数据流如图18所示。在图18中,t=-PW0 -1mod2w。
需注意的是,本发明中提供的模数乘法可视为改进及有效率的蒙哥马利模数乘法。
上述运作所述的「决定(determine)」可被取代为「计算(compute/calculate)」、「获得(obtain)」、「产生(generate)」、「输出(output)」、「使用(use)」、「选择(choose/select)」或「决定(decide)」。上述的术语「根据(according to)」可被取代为「以回应(inresponse to)」。
本领域技术人员当可依本发明的精神加以结合、修饰及/或变化以上所述的实施例。前述的陈述、步骤及/或流程(包含建议步骤)可通过装置实现,装置可为硬件、软件、固件(为硬件装置与计算机指令与数据的结合,且计算机指令与数据属于硬件装置上的只读软件)、电子***、或上述装置的组合。举例来说,装置可为模数运算装置10。
硬件可为类比电路、数字电路及/或混合式电路。例如,硬件可为特定应用集成电路、现场可程序逻辑闸阵列(Field Programmable Gate Array,FPGA)、可程序化逻辑组件(programmable logic device)、耦接的硬件组件,或上述硬件的组合。在其他实施例中,硬件可为通用处理器(general-purpose processor)、微处理器、控制器、数字信号处理器(digital signal processor,DSP),或上述硬件的组合。
软件可为程序代码的组合、指令的组合及/或函数(功能)的组合,其储存在一储存单元中,例如一计算机可读取介质(computer-readable medium)。举例来说,计算机可读取介质可为用户识别模块、只读式内存、快闪内存、随机接入内存、光盘只读内存(CD-ROM/DVD-ROM/BD-ROM)、磁带、硬盘、光学数据储存装置、非挥发性内存(non-volatile storageunit),或上述组件的组合。计算机可读取介质(如储存单元)可以内建地方式耦接在至少一处理器(如与计算机可读取介质整合的处理器)或以外接地方式耦接在至少一处理器(如与计算机可读取介质独立的处理器)。上述至少一处理器可包含有一或多个模块,以执行计算机可读取介质所储存的软件。程序代码的组合、指令的组合及/或函数(功能)的组合可使至少一处理器、一或多个模块、硬件及/或电子***执行相关的步骤。
电子***可为***单晶片(system on chip,SoC)、***级封装(system inpackage,SiP)、嵌入式计算机(computer on module,CoM)、计算机可程序产品、装置、移动电话、笔记型计算机、平板计算机、电子书、可携式计算机***,以及模数运算装置10。
根据以上所述,本发明提供处理模数乘法的装置及方法。被模数运算装置执行的运作被定义。两步骤方法被使用在计算进位结果及总和结果。因此,有关计算迭代进位结果及总和结果的问题可被解决。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种模数运算装置,用来处理一模数乘法,包含:
一控制器,设置以将一被乘数划分为多个被乘数字元,将一乘数划分为多个乘数字元,以及将一模数划分为多个模数字元;
第一多个处理组件,耦接所述控制器,设置以根据所述多个被乘数字元、所述多个乘数字元的一乘数字元、第一多个进位结果及第一多个总和结果计算第一多个更新进位结果及第一多个更新总和结果,其中所述第一多个处理组件的至少两个处理组件根据所述乘数字元及所述多个被乘数字元的至少两个被乘数字元平行计算所述第一多个更新进位结果的至少两个更新进位结果,以及所述至少两个处理组件根据所述乘数字元及所述至少两个被乘数字元平行计算所述第一多个更新总和结果的至少两个更新总和结果;
第二多个处理组件,耦接所述控制器,设置以根据所述多个模数字元、所述第一多个更新进位结果及所述第一多个更新总和结果计算第二多个更新进位结果及第二多个更新总和结果;以及
一简化组件,耦接所述控制器,设置以根据所述第二多个更新进位结果及所述第二多个更新总和结果计算一结果余数。
2.如权利要求1所述的模数运算装置,其特征在于,所述第二多个处理组件的至少两个处理组件根据所述第一多个更新进位结果的至少两个更新进位结果及所述第一多个更新总和结果的至少两个更新总和结果平行计算所述第二多个更新进位结果的至少两个更新进位结果,以及平行计算所述第二多个更新总和结果的至少两个更新总和结果。
3.如权利要求1所述的模数运算装置,其特征在于,所述第一多个处理组件根据所述多个被乘数字元、所述多个乘数字元、所述第一多个进位结果及所述第一多个总和结果的多个移位总和结果计算所述第一多个更新进位结果及所述第一多个更新总和结果。
4.如权利要求3所述的模数运算装置,其特征在于,根据以下指令,计算所述第一多个更新进位结果的每一更新进位结果及所述第一多个更新总和结果的每一更新总和结果:
将所述多个被乘数字元的一被乘数字元与所述乘数字元相乘,以获得一乘积;
将所述第一多个进位结果的一进位结果及所述多个移位总和结果的一移位总和结果与所述乘积相加,以获得一数字;
将所述数字除以一基数,以获得一商数及一余数;
决定所述商数为所述第一多个更新进位结果的一更新进位结果;以及
决定所述余数为所述第一多个更新总和结果的一更新总和结果。
5.如权利要求1所述的模数运算装置,其特征在于,所述第一多个处理组件还被设定以执行以下指令:
根据所述第一多个更新总和结果的一最低有效结果及一逆字元,计算一额外商数,其特征在于,所述逆字元为所述多个模数字元的一最低有效字元的一倒数除以一基数的一余数。
6.如权利要求1所述的模数运算装置,其特征在于,根据所述多个模数字元、所述第一多个更新进位结果的多个移位更新进位结果及所述第一多个更新总和结果,所述第二多个处理组件计算所述第二多个更新进位结果及所述第二多个更新总和结果。
7.如权利要求6所述的模数运算装置,其特征在于,根据以下指令,计算所述第二多个更新进位结果的每一更新进位结果及所述第二多个更新总和结果的每一更新总和结果:
将所述多个模数字元的一模数字元与一额外商数相乘,以获得一乘积;
将所述多个移位更新进位结果的一移位更新进位结果及所述第一多个更新总和结果的一总和结果与所述乘积相加,以获得一数字;
将所述数字除以一基数,以获得一商数及一余数;
决定所述商数为所述第二多个更新进位结果的一更新进位结果;以及
决定所述余数为所述第二多个更新总和结果的一更新总和结果;
其中根据所述第一多个更新总和结果的一最低有效结果及一逆字元产生所述额外商数,以及所述逆字元为所述多个模数字元的一最低有效字元的一倒数除以一基数的一余数。
8.如权利要求1所述的模数运算装置,其特征在于,:
在对应于所述多个乘数字元的一第一字元的一第一迭代中,所述第二多个处理组件计算所述第一多个进位结果及所述第一多个总和结果;
在对应于所述多个乘数字元的一第二字元的一第二迭代中,所述第一多个处理组件计算所述第一多个更新进位结果及所述第一多个更新总和结果;以及
在所述第二迭代中,所述第二多个处理组件计算所述第二多个更新进位结果及所述第二多个更新总和结果。
9.一种模数运算装置,用来处理一模数乘法,包含:
一控制器,设置以将一被乘数划分为多个被乘数区块,将一乘数划分为多个乘数区块,以及将一模数划分为多个模数区块;
一处理组件,耦接所述控制器,设置以执行以下指令:
根据所述多个被乘数区块的一第一被乘数区块、所述多个乘数区块的一第一乘数区块及所述多个模数区块的一第一模数区块,计算第一多个总和结果;
根据所述多个被乘数区块的一第二被乘数区块、所述第一乘数区块及所述多个模数区块的一第二模数区块,计算第二多个总和结果及多个延迟总和结果;
根据所述第一多个总和结果、所述多个延迟总和结果、所述第一被乘数区块、所述多个乘数区块的一第二乘数区块及所述第一模数区块,计算第一多个更新总和结果;以及
根据所述第二多个总和结果、所述第二被乘数区块、所述第二乘数区块及所述第二模数区块,计算第二多个更新总和结果及多个更新延迟总和结果;以及
一简化组件,耦接所述控制器及所述处理组件,设置以根据所述第一多个更新总和结果、所述第二多个更新总和结果及所述多个更新延迟总和结果计算一结果余数。
10.如权利要求9所述的模数运算装置,其特征在于,所述多个延迟总和结果的一数量与所述第一多个总和结果的一数量相同。
11.如权利要求9所述的模数运算装置,还包含:
至少一储存装置;
多个快取内存;以及
一载入及储存组件,耦接所述控制器,设置以执行以下指令:
在所述处理组件计算所述第一多个总和结果之前,从所述至少一储存装置,载入所述第一被乘数区块及所述第一模数区块到所述多个快取内存;
在所述处理组件计算所述第二多个总和结果及所述多个延迟总和结果之前,从所述至少一储存装置载入所述第二被乘数区块及所述第二模数区块到所述多个快取内存;
在所述处理组件计算所述第一多个更新总和结果之前,从所述至少一储存装置,载入所述第一多个总和结果、所述多个延迟总和结果、所述第一被乘数区块及所述第一模数区块到所述多个快取内存;以及
在所述处理组件计算所述第二多个更新总和结果及所述多个更新延迟总和结果之前,从所述至少一储存装置,载入所述第二多个总和结果、所述第二被乘数区块及所述第二模数区块到所述多个快取内存。
12.如权利要求11所述的模数运算装置,其特征在于,所述载入及储存组件还设置以执行以下指令:
载入所述第一被乘数区块及所述第一模数区块到所述多个快取内存的一第一快取内存;
当所述处理组件计算所述第一多个总和结果时,载入所述第二被乘数区块及所述第二模数区块到所述多个快取内存的一第二快取内存;
当所述处理组件计算所述第二多个总和结果及所述多个延迟总和结果时,载入所述第一多个总和结果、所述多个延迟总和结果、所述第一被乘数区块及所述第一模数区块到所述第一快取内存;以及
当所述处理组件计算所述第一多个更新总和结果时,载入所述第二多个总和结果、所述第二被乘数区块及所述第二模数区块到所述第二快取内存。
13.如权利要求9所述的模数运算装置,其特征在于,所述处理组件还设置以执行以下指令:
根据所述第一被乘数区块的一最高有效字元及所述第一乘数区块,计算第一多个延迟进位结果;以及
根据所述最高有效字元及所述第二乘数区块,计算第二多个延迟进位结果。
14.如权利要求13所述的模数运算装置,其特征在于,所述简化组件还设置以执行以下指令:
根据所述第一多个更新总和结果、所述第二多个更新总和结果、所述多个更新延迟总和结果、所述第一多个延迟进位结果及所述第二多个延迟进位结果,计算所述结果余数。
15.如权利要求9所述的模数运算装置,其特征在于,所述处理组件根据所述第二被乘数区块的一最低有效字元及所述第一乘数区块计算所述多个延迟总和结果,以及所述处理组件根据所述最低有效字元及所述第一乘数区块计算所述多个更新延迟总和结果。
16.如权利要求9所述的模数运算装置,其特征在于,所述处理组件还被设定执行以下指令:
根据所述第一被乘数区块的一最高有效字元及所述第一乘数区块的一最高有效字元,计算一第一延迟进位结果;
决定所述第一延迟进位结果为所述第一多个总和结果的一最高有效结果;
根据所述第二被乘数区块的一最高有效字元及所述第一乘数区块的所述最高有效字元,计算一第二延迟进位结果;以及
决定所述第二延迟进位结果为所述第二多个总和结果的一最高有效结果。
17.如权利要求9所述的模数运算装置,其特征在于,计算所述第一多个更新总和结果的指令包含:
根据所述第一多个总和结果、所述多个延迟总和结果、所述第一被乘数区块及所述第二乘数区块的一第一字元,计算多个暂时总和结果;以及
根据所述多个暂时总和结果、所述第一被乘数区块及所述第二乘数区块的一第二字元,计算所述第一多个更新总和结果。
18.如权利要求17所述的模数运算装置,其特征在于,所述第二乘数区块的所述第一字元为所述第二乘数区块的一最低有效字元。
19.如权利要求9所述的模数运算装置,其特征在于,所述处理组件还设置以执行以下指令:
根据所述第一多个总和结果的一最低有效结果、所述多个延迟总和结果的一最低有效结果及对应于所述第二乘数区块的一最低有效字元的一迭代中的一逆字元,计算一额外商数,其中所述逆字元为所述多个模数区块的一最低有效字元的一倒数除以一基数的一余数。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063094355P | 2020-10-21 | 2020-10-21 | |
US63/094,355 | 2020-10-21 | ||
US17/389,362 | 2021-07-30 | ||
US17/389,362 US20220121424A1 (en) | 2020-10-21 | 2021-07-30 | Device and Method of Handling a Modular Multiplication |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385112A true CN114385112A (zh) | 2022-04-22 |
Family
ID=81185103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111145915.8A Pending CN114385112A (zh) | 2020-10-21 | 2021-09-28 | 处理模数乘法的装置及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220121424A1 (zh) |
CN (1) | CN114385112A (zh) |
TW (1) | TWI786841B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033205B (zh) * | 2022-08-11 | 2022-10-28 | 深圳市爱普特微电子有限公司 | 一种低延迟高精度定值除法器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6820105B2 (en) * | 2000-05-11 | 2004-11-16 | Cyberguard Corporation | Accelerated montgomery exponentiation using plural multipliers |
US6697831B2 (en) * | 2002-02-28 | 2004-02-24 | Ess Technology, Inc. | Device and method for performing multiple modulus conversion using inverse modulus multiplication |
DE10219158B4 (de) * | 2002-04-29 | 2004-12-09 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation |
DE10219164B4 (de) * | 2002-04-29 | 2004-12-02 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten |
FR2853424B1 (fr) * | 2003-04-04 | 2005-10-21 | Atmel Corp | Architecture de multiplicateurs polynomial et naturel combines |
DE102006025673B9 (de) * | 2005-10-28 | 2010-12-16 | Infineon Technologies Ag | Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls |
KR101326078B1 (ko) * | 2007-10-11 | 2013-11-08 | 삼성전자주식회사 | 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템 |
US9355068B2 (en) * | 2012-06-29 | 2016-05-31 | Intel Corporation | Vector multiplication with operand base system conversion and re-conversion |
-
2021
- 2021-07-30 US US17/389,362 patent/US20220121424A1/en active Pending
- 2021-09-22 TW TW110135069A patent/TWI786841B/zh active
- 2021-09-28 CN CN202111145915.8A patent/CN114385112A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI786841B (zh) | 2022-12-11 |
TW202217551A (zh) | 2022-05-01 |
US20220121424A1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3689183B2 (ja) | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 | |
US20160313976A1 (en) | High performance division and root computation unit | |
JP2012069123A (ja) | 選択可能な下位精度を有する浮動小数点プロセッサ | |
KR102581403B1 (ko) | 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법 | |
EP3769208B1 (en) | Stochastic rounding logic | |
US20050273481A1 (en) | Pipelined real or complex ALU | |
US8019805B1 (en) | Apparatus and method for multiple pass extended precision floating point multiplication | |
US6941334B2 (en) | Higher precision divide and square root approximations | |
CN114385112A (zh) | 处理模数乘法的装置及方法 | |
JP4273071B2 (ja) | 除算・開平演算器 | |
Ercegovac et al. | Very high radix division with selection by rounding and prescaling | |
US6912559B1 (en) | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit | |
CN113032723A (zh) | 一种矩阵乘法器的实现方法及矩阵乘法器装置 | |
Sreedhar et al. | A fast large-integer extended GCD algorithm and hardware design for verifiable delay functions and modular inversion | |
US20230086090A1 (en) | Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit | |
US9612800B2 (en) | Implementing a square root operation in a computer system | |
TW202333041A (zh) | 執行浮點運算的系統及方法 | |
Son et al. | Design and implementation of scalable low-power Montgomery multiplier | |
US7167885B2 (en) | Emod a fast modulus calculation for computer systems | |
Chen et al. | Arithmetic Unit for Finite Field ${\rm GF}(2^{m}) $ | |
Biji et al. | Performance analysis of Vedic mathematics algorithms on re-configurable hardware platform | |
JPH04172526A (ja) | 浮動小数点除算器 | |
Amaricai et al. | SRT radix-2 dividers with (5, 4) redundant representation of partial remainder | |
Chang et al. | Fixed-point computing element design for transcendental functions and primary operations in speech processing | |
Latha et al. | Residue-to-Binary converters for the seven moduli set {2 n-5-1, 2 n-3-1, 2 n-2+ 1, 2 n-1-1, 2 n-1+ 1, 2n, 2 n+ 1} for n even |
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 |