CN101149675A - 乘法器 - Google Patents

乘法器 Download PDF

Info

Publication number
CN101149675A
CN101149675A CNA2006100642259A CN200610064225A CN101149675A CN 101149675 A CN101149675 A CN 101149675A CN A2006100642259 A CNA2006100642259 A CN A2006100642259A CN 200610064225 A CN200610064225 A CN 200610064225A CN 101149675 A CN101149675 A CN 101149675A
Authority
CN
China
Prior art keywords
partial product
multiplier
product value
digital
totalizer
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
Application number
CNA2006100642259A
Other languages
English (en)
Inventor
V·戈帕尔
G·沃尔里希
W·费格哈利
R·奥塔维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101149675A publication Critical patent/CN101149675A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • G06F7/5275Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products using carry save adders

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Holo Graphy (AREA)

Abstract

一种电子实现的方法,包括把数字A和B相乘,其中A由片断ai构成以及B由片断bj构成,其中i和j是大于1的整数。该相乘包括确定至少某些aibj的部分乘积值并且当对于各个i和j的值当ai=bj并且bj=ai时,通过把(1)aibj和(2)ajbi之一乘以2来确定aibj和ajbi的部分乘积值之和。确定针对aibj和ajbi所确定的部分乘积值与所确定的部分乘积值之和的总和并将其存储在存储元件中。

Description

乘法器
背景技术
密码系统保护数据免受有害的接入。密码系统通常包括数据上的数学运算(加密)使得原始数据(明码文本)无法理解(密码文本)。反向数学运算(解密)可从密码文本中恢复原始数据。密码系统覆盖了加密和解密数据的各种应用。例如,密码系统通常用于认证(即,可靠的确认通信方的身份),数字签名的产生,等。
目前,密码技术严重依赖于密集的数学运算。例如很多方案使用一种被认为模幂(modular exponentiation)算法的模运算,其涉及把较大数字自乘某些次,并且针对一个模来进行简化(即当被给定模数相除时的剩余部分)。数学地,模幂可以被表示为ge mod M,其中e是指数并且M是模。
因此,乘法和模降低是简易(Straight forward)运算。然而,通常,在这些系统中使用的数字非常大。例如,ge中的“e”可以长达几百甚至几千比特。对如此大的数字执行运算在时间和计算资源方面都非常昂贵。
附图说明
图1是乘法器的框图;
图2是阐明由该乘法器所确定的部分乘积的框图;
图3是阐明由并行乘法器所确定的部分乘积的框图;
图4是具有耦合到乘法器的乘法处理单元的部件的框图。
具体实施方式
多种密码运算依靠乘法器。例如,模幂(例如,确定ge mod M)是例如RSA(以Rivest,Shamir和Adelman命名的密码算法)和Diffie-Helman的各种密码算法的核心。例如,在RSA中,公钥是由公指数e-public和模数M构成。私钥是由私指数e-private和模数M构成。为了加密一个消息(例如,分组或分组净荷),执行下面的运算:
ciphertext=cleartexte-public mod M
为了解密一个消息,执行下面的运算:
cleartext=ciphertexte-private mod M
cleartext(明文)、ciphertext(密文)、以及公和私指数可以是非常大的数字,使得这些运算在计算方面非常昂贵。
执行模幂的一般方法以例如从左到右的顺序处理指数e中的比特。对于指数串中的每个“0”比特,程序平方当前结果。对于每个“1”比特,程序平方并乘以g。当较大的数字已经被累计时模降低可以在末端执行或者模降低可以被交织在乘法运算中,例如在处理每个指数比特或每几个指数比特之后。在该示例方案中,尽管指数比特的某些部分可能引起非平方乘法,运行时间被发生在每个比特的平方运算所支配。
上述示例模幂算法示意了加密系统实施的性能严重依赖于乘法的效率,尤其是平方运算的效率。图1阐明了乘法器120的实现例子,其在最合适的时钟速率具有较高性能并且是面积有效的。使用乘法器120可以有效地实现对较大数字的各种模幂算法。除了有效的处理一般的操作数乘法,乘法器120还包括逻辑以提高平方运算的性能,潜在的,降低用于执行平方的时钟周期的数量以及在降低时钟周期外降低功率。
如图1所示,乘法器120对两个操作数A 100a和B 100b进行运算。图1显示了操作数A 100a和B 100b由一组片断ai和bj组成。对于规则大小的片断,操作数可以表示为
Figure A20061006422500061
Figure A20061006422500062
。例如,在图1所示的例子中,其中n=3,A=a3x3+a2x2+a1x1+a0以及B=b3x3+b2x2+b1x1+b0。ai和bj的宽度(例如,x的值)可以基于A 100a和B 100b的宽度以及下面的乘法器120部件的数据路径大小进行选择。例如,对于512比特的A 100a和B 100b,x可以被设定为2128产生的统一128比特大小的片断。
A 100a和B 100b的值可以存储在各自的FIFO(先入先出)队列,该队列缓存操作数100a和100b。FIFO的宽度可以改变。例如,一个512比特的数字可以存储在8个64比特得FIFO项目中。在每个FIFO中的项目数量可以改变。例如,给定的FIFO可以具有足够的项目来缓存多个乘法问题的多个操作数。例如,FIFO可以具有16个64比特项目,从而两个完全乘法问题的两组操作数可以被同时排列。可以排列的操作数的数量是面积(由于更多项目的更大面积)和性能的折中。如下所述,乘法器120可以同时操作多个乘法问题,从而排列多个操作数的能力可以提高性能。
如图所示,乘法器120可以操作为流水线,其在控制逻辑116的控制下通过乘法器120部件馈送中间结果。乘法器120可以通过为每种片断组合aibj计算部分乘积来执行乘法操作。假设512比特A100a和B100b操作数分割为128比特ai和bj片断,乘法器120可以通过对16个aibj的部分乘积求和来计算AxB。
为了确定部分乘积,乘法器120具有并行操作的一组(例如,两个)乘法器102a,102b。乘法器102a,102b可以是NxN无符号整数乘法器(例如,64x64比特乘法器)其中N可以基于操作数的预期大小进行配置。NxN乘法器102a,102b可以是传统的阵列乘法器。如图所示,乘法器102a,102b可以是进位-求和乘法器,其输出两个向量,一个表示结果(不包含到较高有效比特位的任何进位)和一个存储进位。可以推迟两个向量相加,直到需要最后结果时。由于在乘法器120的前端不需要大的进位-传播加法器,该进位/求和结构有利于降低乘法器120所消耗的面积,尽管进位-传播结构可以有选择的被实现。如图1所示,加法器112组合进位以及求和向量从而产生最后的乘法结果。
乘法器102a,102b通过分别在第一周期确定ai(H)bj(L)和ai(L)bj(L)并且在第二周期确定ai(H)bj(H)和ai(L)bj(H)来为aibj确定部分乘积,其中符号(H)(L)指示每个相应片断的高阶(H)和低阶(L)比特。乘法器102a,102b把部分乘积输出到寄存器104a,104b。基于各自ai和bj片断的有效性来移位所述部分乘积。
寄存器104a,104b的输出被馈送到累加器106,累加器106把部分乘积增加到之前存储的部分乘积结果上。潜在的,寄存器104a,104b的输出发生在每个周期。在其他实现中,寄存器104a,104b可以被累加器代替并每两个周期输出到累加器106。再次,累加器106可以以进位/求和的方式操作。返回到上述512比特的例子,假设每个部分乘积需要两个周期,乘法器120使用32个周期来计算使用乘法器102a,102b的16个部分乘积的每一个。在这样的配置中,累加器106可以有260比特的宽度(例如,256比特+4比特来计算可能超过256比特的中间乘积)。
部分乘积的计算顺序可以被排序,以便在准备好时输出最后结果的最低有效比特。例如(如下所述的图2所示)部分乘积可以按照结果的有效性以升序计算。当一组最低有效比特被累加器106存储从而随后的部分乘积计算并不影响该组比特时,累加器106通过寄存器108把这组比特移动到FIFO 110。例如,在计算a0b0后,较低比特(例如,在运行512比特的例子中较低的128比特)可以被移出累加器106,以在FIFO110中排队。累加器106通常并不引出(retire)每个部分乘积计算的比特,因为多个部分乘积可以覆盖最后结果的相同比特。当累加器106引出比特时,累加器106的移位调整存储在累加器106中的数值的有效性并且控制逻辑116相应地调整由乘法器102a,102b馈送入累加器106的部分乘积的移位。最后的部分乘积使得累加器106引出比特串从而清空累加器106。
FIFO 110存储由累加器106引出的进位/保存向量的比特。潜在的,FIFO 110可以实现为一对FIFO,其中一个用于进位向量,另一个用于求和向量。FIFO 110进而馈送入加法器112,加法器112求和进位/保存向量的引出部分。FIFO 110可以平滑到加法器112的比特馈送,从而加法器112可以在每个连续的周期中连续地被馈送以引出部分,直到输出最后的乘法器120结果。如果没有FIFO110,则当一个周期(其不会导致累加器106比特的引出)传输到流水线时,加法器112将停止。相反的,通过用引出的比特填充FIFO 110并且延迟FIFO 110的出列(dequeuing),FIFO 110可以保证加法器112的连续运算。FIFO 110可以被最小化为仅仅存储足够数量的引出比特从而“跳过”的引出周期并不使加法器110停止,加法器110受限于以下的约束条件:FIFO 110必须足够大来容纳最后周期中引出比特的突发串。例如,在运行例子中,4项目的256比特FIFO110足以保证一旦FIFO 110出列开始,加法器112就被激活,假设为64比特加法器112。
加法器112的输出被馈送到寄存器114以聚集成最后乘积。例如,寄存器114可以馈送一个FIFO(没有显示)或其他电子存储元件(例如寄存器或者存储单元),所述元件对最后乘积比特排队,以便由该乘法结果的目的设备接收。
由于流水线结构,当已经完成前一问题并且操作数的足够部分已经被排列时,乘法器120可以开始解决新的问题。即,在加法器112完成前一问题的工作前,可以开始解决新的乘法问题。为了容易实现该问题,乘法器首先排列操作数的最低有效字并且在问题的全部操作数被排列之前就可以潜在地开始针对新问题的工作。
乘法器120的运算在控制逻辑116的控制下进行。逻辑116(除了其它操作之外)控制哪些操作数片断被提供到乘法器102a,102b,寄存器104a,104b中部分乘积的移位,累加器106中比特的引出,以及FIFO 110的进列/出列。如下所述,控制逻辑116可以最优化为提高平方运算的性能。
图2阐明了在乘法202和平方204模式中乘法器的运算。如图2所示,在乘法模式202中,A100a的每一项被B100b的每一项相乘,并且基于各项在其操作数内的有效性来移位所得到的部分乘积。如图所示,运算被排序为202a-202p,从而最后的乘法结果的最低有效值可以被首先确定。在示例的序列202a-202p中,假设每个部分乘积计算需要两个周期,那么计算该组部分乘积202a-202p会花费32周期的部分乘积值。
然而,如果A=B,乘法器120可以降低所确定的部分乘积的数量。即,如果A=B,则aibj=ajbi。因而只需要计算aibj或ajbi之一并且乘2,而不用计算aibj和ajbi。因此,如图2所示,如果A=B,序列204可以为在更一般的乘法序列202中出现的两个数字执行单个部分乘积确定。例如,没有计算a0b1202b和a1b0202c,序列204仅仅需要计算并移位(乘2)a0b1204b。同样的,不用计算a0b2202d和a2b0202f,序列204仅仅需要计算并移位a0b2202c。如图所示,该最优化降低了部分乘积计算的数量,在该例子中从16个202a-202p降低为10个204a-204j。再次,假设每个部分乘积计算需要2个周期,这得到了12周期的速率提高以及与每个操作数100a,100b乘法相关的功率和热量的降低。
即使当A100a和B100b并不相等时上面所示方式的优点也可以适用。例如,只要aibj=ajbi(例如,当ai=aj以及bi=bj或当ai=bj以及aj=bi时)控制逻辑116就可以从以上措施中获益。依赖于比较运算和乘法运算的相对花费,这些片断的比较会使得这种最优化不引人注意。
如图所示,乘法器120可以根据A是否等于B来选择运算的模式。例如,乘法器120可以进行操作数的初始比较运算。例如,乘法器120可以XOR(异或)A100a以及B100b并且对应于0结果选择“平方模式”。然而,该方案需要在开始计算前加载全部的操作数。因此,乘法器120替代地接收一个信号,其指示A=B或在不考虑其他操作数的值的情况下对A102a或B102b进行平方运算。例如,使用乘法器120的可编程处理元件可以具有一条指定平方运算的指令。该处理元件可以响应于该指令执行进而向乘法器120发送平方信号或消息。潜在的,A102a和B102b可以引用同样的一组存储位置(例如,A的地址=B的地址或换言之B就是A)。
图2中所示的技术可以被图1中所示的乘法器120的控制逻辑116实现。例如,在两个512比特数字的乘法模式中,控制逻辑116可以调整乘法器120以计算如序列202所示的部分乘积。一个128比特的最低有效字被移出累加器106并在周期{2,6,12,20,26,30}移入到FIFO 110中。在周期32,2个128比特的4倍长字(quadword)被移进FIFO 110。在初始的等待后,加法器112每周期引出一个64比特的结果字,直到在连续的16周期的突发中写出全部的1024比特结果。加法器在周期20开始,并且在其后的每个周期在FIFO110的最前面以全部进位传输的冗余形式引出128比特(求和/进位)字对。加法器112把结果输出到寄存器114。乘法模式的吞吐量受到部分乘积的产生的限制,他们花费了32个周期;从而新的乘法问题可以每32周期被注入。
在平方模式中,控制逻辑116选择部分乘积计算的不同序列204。尤其的,控制逻辑116可以通过i和j索引的比较确定如何处理部分乘积。即,如果i不等于j,则控制逻辑116把馈送到累加器106的aibj乘法块的输出移位一个比特并跳过ajbi的随后计算。如果i=j,则不发生这样的移位。
与一般的乘法相比,在运行的例子中,控制逻辑116在周期{2,4,8,12,16,18}中使128比特的最低有效4倍长字移入到FIFO 110中。在周期20,2个128比特4倍长字在一个突发中被写入FIFO 110。加法器112在周期8开始并在连续的16周期的突发中传送最后的结果。吞吐量仍受限于部分乘积的产生;尽管这被降低到20周期。
图3阐明了对于操作数ai210a和bj210b进行操作的乘法器102a,102b的运算212。如图所示,ai210a和bj210b是由高和低有效子片段构成-ai210a由子片段ai(H)和ai(L)构成而bj210b由子片段bj(H)和bj(L)构成。在图1所示的乘法器120的示例实现中,其中ai210a和bj210b都是128比特并且乘法块102a,102b是64x64乘法器,子片段ai(H)、ai(L)、bj(H)和bj(L)具有64比特的长度。
如图3所示,乘法器102a,102b可以使用两个周期来计算ai(H)、ai(L)、bj(H)和bj(L)的每个组合。例如,乘法器102a可以计算ai(L)bj(L)212a而乘法器102b同时计算ai(H)bj(L)212b。在随后的周期,乘法器102a和102b可以分别同时计算ai(L)bj(H)212c和ai(H)bj(H)212d。
然而,如图3所示,当ai=bj时,需要更少的部分乘积的乘法。即当ai=bj时,ai(H)bj(L)=ai(L)bj(H)。因此,如图3所示,当ai=bj时,ai(H)bj(L)项可以被计算214b并被移位(例如,乘以2)从而提供ai(H)bj(L)和ai(L)bj(H)的部分乘积。因此,由于这时不再需要乘法块102b中的一个,其可以被断电214c(用φ运算指示)。在所示的例子中,断电一个乘法器102a或102b可以为部分乘积计算获得25%的功率降低从而降低产生的热量。断电乘法块102a,102b可以以多种方式执行。例如,时钟输入可以与控制逻辑116输出的使能比特进行与操作(AND)。
更一般的,当ai(H)=bj(L)以及ai(L)bj(H)时,即使ai≠bj,上述最优化也可以工作。这种实现方式可以将乘法器102a,102b的周期替换为比较运算,其在这些运算的相对时间和功率花费方面是合适的。
上述技术可以以多种方式以及在多种系统中实现。例如,除了图1中所示的乘法器120的结构,该技术可以在其他的专用数字或模拟硬件(例如在诸如Verilog(tm)的硬件描述语言中通过上述的编程技术来确定)、固件、和/或ASIC(特定应用集成电路)或可编程门阵列(PGA)中实现。该技术也可以实现为计算机程序,放置在计算机可读存储介质中,以便由处理器执行。例如,处理器可以是通用处理器。
如图4所示,这些技术可以实现为可以被处理器模块300执行的计算机程序,处理器模块300可以卸下加密运算。如图所示,模块300包括多个可编程处理单元306-312以及一个专用硬件乘法器314。处理单元306-312根据从共享存储逻辑304下载的数据,按照内核302的指示运行程序。其他处理器和/或处理器内核可以向模块300发送命令来指定执行的数据和运算。例如,处理器内核可以向模块300发送命令来根据存储在RAM 316中的g,e和M值来执行模幂。通过向共享存储逻辑304发送指令,内核302可以作出响应,把模幂程序下载到处理单元306-312以及把正进行运算的数据从RAM 316下载到共享存储器304,并且最后下载到处理单元306-312。处理单元306-312依次执行程序指令。尤其的,处理单元306-312可以使用乘法器316来执行程序指令所确定的操作数的乘法或平方。在完成之后,处理单元306-312可以把结果返回到共享存储逻辑304以发送到请求内核。处理器模块300可以被集成在与可编程内核相同的芯片中或不同的芯片中。
如图所示,乘法器314连接到多个处理单元306-312,允许每个单元306-312向乘法器314分派操作数并等待响应。通过使用乘法器314,处理单元306-312可以以各种方式被仲裁。例如,乘法器314可以针对每组操作数而在单元之间进行循环。可选择的,乘法器314在服务其他单元306-312之前可以服务被单个单元排列的所有的未决乘法问题。再次,各种可选方案可以被实现。
图4仅仅阐明了使用上述乘法技术的例子的结构。然而该技术可以被应用在各种其他的结构中,例如一个被编程的传统通用处理器、网络接口卡、网络处理器、图像卡、网络存储设备等。
这里使用的术语电路包括硬连线电路、数字电路、模拟电路、可编程电路等。可编程电路可以操作于计算机程序上。
其他实施例落在下面的权利要求的范围内。

Claims (24)

1.一种电子实现方法,包括:
对数字A和B进行相乘,其中A由片断ai构成以及B由片断bj构成,其中i和j是大于1的整数,其中相乘包括:
确定至少某些aibj的部分乘积值;
当对于各个i和j的值有ai=bj并且bj=ai时,通过把(1)aibj和(2)ajbi之一乘以2来确定aibj和ajbi的部分乘积值之和;
确定针对aibj和ajbi所确定的部分乘积值与所确定的部分乘积值之和的总和;以及
把针对aibj和ajbi所确定的部分乘积值与所确定的部分乘积值之和的总和存储在存储元件中。
2.根据权利要求1所述的方法,进一步包括:
接收A=B的指示。
3.根据权利要求1所述的方法,进一步包括:
针对各个i和j的值确定i是否等于j。
4.根据权利要求1所述的方法,其中对数字A和数字B进行相乘包括作为对消息进行加密运算的一部分,以一组运算来执行相乘,以便以指数e对数字x进行求幂。
5.根据权利要求1所述的方法,其中电子实现方法包括一种由乘法器实现的方法,其中乘法器包括并行安排的多个乘法器,多个乘法器中的至少一部分同时确定部分乘积。
6.根据权利要求5所述的方法,其中乘法器包括流水线,包括多个乘法器、接收多个乘法器输出的累加器、缓存累加器输出的队列以及由该队列馈送的加法器。
7.根据权利要求1所述的方法,其中对于ai=bj确定aibj包括:
确定ai(H)bj(H)、ai(L)bi(L),以及确定ai(H)bj(L)和ai(L)bj(H)中的一个。
8.根据权利要求1所述的方法,对数字A和数字B进行相乘包括第一数字A的平方。
9.根据权利要求1所述的方法,其中对于aibj和ajbi之一,当对于各个i和j的值ai=bj并且bj=ai时,aibj和ajbi中的一个不被计算。
10.一种对数字A和数字B进行相乘的设备,其中A由片断ai构成以及B由片断bj构成,其中i和j是大于1的整数,该设备包括逻辑以:
确定至少某些aibj的部分乘积值;
当对于各个i和j的值,当ai=bj并且bj=ai时,通过把(1)aibj和(2)ajbi之一乘以2来确定aibj和ajbi的部分乘积值之和;
确定针对aibj和ajbi所确定的部分乘积值与所确定的部分乘积值之和的总和;以及
把针对aibj和ajbi所确定的部分乘积值与所确定的部分乘积值之和的总和存储在存储元件中。
11.根据权利要求10所述的设备,进一步包括用于接收A=B的指示的逻辑。
12.根据权利要求10所述的设备,其中该设备包括并行安排的多个乘法器,多个乘法器中的至少一部分同时确定aibj的部分乘积。
13.根据权利要求12所述的设备,其中该设备包括一个流水线,包括并行安排的多个乘法器、接收多个乘法器输出的累加器、缓存累加器输出的队列以及由该队列馈送的加法器。
14.根据权利要求10所述的设备,其中对于ai=bj确定aibj包括:
确定ai(H)bj(H)、ai(L)bi(L),以及确定ai(H)bj(L)和ai(L)bj(H)中的仅仅一个。
15.根据权利要求12所述的设备,其中对于ai=bj确定aibj包括:
确定ai(H)bj(H)、ai(L)bi(L)以及ai(H)bj(L)和ai(L)bj(H)中的仅仅一个。
16.根据权利要求10所述的设备,其中相乘包括对数字A进行平方。
17.根据权利要求10所述的设备,其中对于aibj和ajbi之一,当对于i和j的各个值ai=bj并且bj=ai时,aibj和ajbi中的一个不被计算。
18.根据权利要求10所述的设备,该设备具有至少两种乘法模式,第一乘法模式计算每个aibj的部分乘积以及第二平方模式计算少于每个aibj部分乘积。
19.一种计算机程序成品,放置在计算机可读介质上,该程序包括引起数字A的平方的指令,其中A由片断ax构成,x是大于1的整数,其中相乘包括:
确定至少某些aiaj的部分乘积值,其中i和j是大于1的整数;
当对于各个i和j的值当ai=aj并且aj=ai时,通过把(1)aiaj和(2)ajai之一乘以2来确定aiaj和ajai的部分乘积值之和;
确定针对aiaj和ajai所确定的部分乘积值与所确定的部分乘积值之和的总和;以及
把针对aiaj和ajai所确定部分乘积值与所确定的部分乘积值之和的总和存储在存储元件中。
20.根据权利要求19所述的计算机程序,其中相乘进一步包括为各个i和j的值确定i是否等于j。
21.根据权利要求19所述的计算机程序,其中计算机程序包括对一个数字求幂的指令。
22.根据权利要求19所述的计算机程序,其中对于ai=bj确定aibj包括:
确定ai(H)aj(H)、ai(L)ai(L),以及仅仅确定ai(H)aj(L)和ai(L)aj(H)之一。
23.根据权利要求19所述的计算机程序,其中对于aiaj和ajai中的一个,当对于各个i和j的值当ai=aj并且aj=ai时,aiaj和ajai中的一个不被计算。
24.根据权利要求19所述的计算机程序,其中(1)aiaj和(2)ajai之一乘以2包括移位(1)aiaj和(2)ajai之一。
CNA2006100642259A 2005-12-30 2006-12-29 乘法器 Pending CN101149675A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/323994 2005-12-30
US11/323993 2005-12-30
US11/323,994 US8073892B2 (en) 2005-12-30 2005-12-30 Cryptographic system, method and multiplier
US11/636016 2006-12-08

Publications (1)

Publication Number Publication Date
CN101149675A true CN101149675A (zh) 2008-03-26

Family

ID=38093399

Family Applications (2)

Application Number Title Priority Date Filing Date
CNA2006100642259A Pending CN101149675A (zh) 2005-12-30 2006-12-29 乘法器
CNA2006101309997A Pending CN101042639A (zh) 2005-12-30 2006-12-30 乘法器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNA2006101309997A Pending CN101042639A (zh) 2005-12-30 2006-12-30 乘法器

Country Status (6)

Country Link
US (1) US8073892B2 (zh)
EP (1) EP1966680B1 (zh)
CN (2) CN101149675A (zh)
AT (1) ATE484789T1 (zh)
DE (1) DE602006017589D1 (zh)
WO (1) WO2007078939A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104049940A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于减少短整数乘法数量的系统、装置和方法
CN104239279A (zh) * 2014-09-10 2014-12-24 哈尔滨工业大学深圳研究生院 一种乘法器

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8073892B2 (en) 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US9191211B2 (en) * 2009-02-27 2015-11-17 Atmel Corporation Data security system
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US9990201B2 (en) 2009-12-22 2018-06-05 Intel Corporation Multiplication instruction for which execution completes without writing a carry flag
US8892459B2 (en) * 2011-07-25 2014-11-18 BrandVerity Inc. Affiliate investigation system and method
US9251377B2 (en) 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
GB2539881B (en) * 2015-06-24 2018-07-25 Advanced Risc Mach Ltd An apparatus and method for processing floating point values
CN107861709B (zh) * 2017-12-01 2021-04-02 中国兵器装备集团自动化研究所 适应前端高速处理的累加器和功率谱累加器及其累加方法
US10884957B2 (en) * 2018-10-15 2021-01-05 Intel Corporation Pipeline circuit architecture to provide in-memory computation functionality
US20220171604A1 (en) * 2020-12-02 2022-06-02 Flex Logix Technologies, Inc. Multiplier Circuit Array, MAC and MAC Pipeline including Same, and Methods of Configuring Same
WO2022191859A1 (en) * 2021-03-12 2022-09-15 Zeku, Inc. Vector processing using vector-specific data type
CN113946846B (zh) * 2021-10-14 2022-07-12 深圳致星科技有限公司 用于联邦学习和隐私计算的密文计算装置及方法
CN117149129B (zh) * 2023-10-31 2024-01-26 共模半导体技术(苏州)有限公司 专用大整数乘法微控制器

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3515344A (en) * 1966-08-31 1970-06-02 Ibm Apparatus for accumulating the sum of a plurality of operands
JPS57141753A (en) * 1981-02-25 1982-09-02 Nec Corp Multiplication circuit
JPS59113500A (ja) * 1982-12-20 1984-06-30 電子計算機基本技術研究組合 相関関数計算装置
US4594679A (en) * 1983-07-21 1986-06-10 International Business Machines Corporation High speed hardware multiplier for fixed floating point operands
JPS6284335A (ja) 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路
US5073870A (en) * 1989-01-30 1991-12-17 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
US5150322A (en) * 1990-06-05 1992-09-22 Vlsi Technology, Inc. Mixed-radix serial/parallel multipliers
JPH04216126A (ja) 1990-12-14 1992-08-06 Fujitsu Ltd 直並列型乗算器
DE69329260T2 (de) * 1992-06-25 2001-02-22 Canon Kk Gerät zum Multiplizieren von Ganzzahlen mit vielen Ziffern
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5892699A (en) * 1997-09-16 1999-04-06 Integrated Device Technology, Inc. Method and apparatus for optimizing dependent operand flow within a multiplier using recoding logic
US6182233B1 (en) * 1998-11-20 2001-01-30 International Business Machines Corporation Interlocked pipelined CMOS
US6711602B1 (en) * 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
CN1220935C (zh) 2001-09-27 2005-09-28 中国科学院计算技术研究所 提高半规模双精度浮点乘法流水线效率的部件
US20030065699A1 (en) * 2001-10-01 2003-04-03 Koninklijke Philips Electronics N.V. Split multiplier for efficient mixed-precision DSP
US7139787B2 (en) * 2003-01-30 2006-11-21 Sun Microsystems, Inc. Multiply execution unit for performing integer and XOR multiplication
US7266580B2 (en) * 2003-05-12 2007-09-04 International Business Machines Corporation Modular binary multiplier for signed and unsigned operands of variable widths
US20050138366A1 (en) 2003-12-19 2005-06-23 Pan-Loong Loh IPSec acceleration using multiple micro engines
US7543142B2 (en) 2003-12-19 2009-06-02 Intel Corporation Method and apparatus for performing an authentication after cipher operation in a network processor
US7512945B2 (en) 2003-12-29 2009-03-31 Intel Corporation Method and apparatus for scheduling the processing of commands for execution by cryptographic algorithm cores in a programmable network processor
US7467175B2 (en) * 2003-12-29 2008-12-16 Xilinx, Inc. Programmable logic device with pipelined DSP slices
US20050149744A1 (en) 2003-12-29 2005-07-07 Intel Corporation Network processor having cryptographic processing including an authentication buffer
US7171604B2 (en) 2003-12-30 2007-01-30 Intel Corporation Method and apparatus for calculating cyclic redundancy check (CRC) on data using a programmable CRC engine
US7529924B2 (en) 2003-12-30 2009-05-05 Intel Corporation Method and apparatus for aligning ciphered data
KR20050088506A (ko) * 2004-03-02 2005-09-07 삼성전자주식회사 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
US7433469B2 (en) 2004-04-27 2008-10-07 Intel Corporation Apparatus and method for implementing the KASUMI ciphering process
US7653196B2 (en) 2004-04-27 2010-01-26 Intel Corporation Apparatus and method for performing RC4 ciphering
US7627764B2 (en) 2004-06-25 2009-12-01 Intel Corporation Apparatus and method for performing MD5 digesting
US20060059219A1 (en) 2004-09-16 2006-03-16 Koshy Kamal J Method and apparatus for performing modular exponentiations
US7539718B2 (en) 2004-09-16 2009-05-26 Intel Corporation Method and apparatus for performing Montgomery multiplications
FR2884005B1 (fr) * 2005-04-01 2007-06-01 Thales Sa Methode d'implementation de la multiplication modulaire de montgomery et son dispositif
US7720900B2 (en) * 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
US8073892B2 (en) 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104049940A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于减少短整数乘法数量的系统、装置和方法
CN104049940B (zh) * 2013-03-15 2018-08-10 英特尔公司 用于减少短整数乘法数量的系统、装置和方法
CN104239279A (zh) * 2014-09-10 2014-12-24 哈尔滨工业大学深圳研究生院 一种乘法器

Also Published As

Publication number Publication date
DE602006017589D1 (de) 2010-11-25
US20110264720A1 (en) 2011-10-27
EP1966680A2 (en) 2008-09-10
WO2007078939A2 (en) 2007-07-12
EP1966680B1 (en) 2010-10-13
CN101042639A (zh) 2007-09-26
US8073892B2 (en) 2011-12-06
ATE484789T1 (de) 2010-10-15
WO2007078939A3 (en) 2007-11-15

Similar Documents

Publication Publication Date Title
CN101149675A (zh) 乘法器
EP0576262B1 (en) Apparatus for multiplying integers of many figures
US6397241B1 (en) Multiplier cell and method of computing
EP0531158B1 (en) Method of and apparatus for encryption and decryption of communication data
US5742530A (en) Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
CN112988237B (zh) 一种Paillier解密系统、芯片和方法
EP0947914B1 (en) Computationally efficient modular multiplication method and apparatus
US8781110B2 (en) Unified system architecture for elliptic-curve cryptography
US5210710A (en) Modulo arithmetic processor chip
CN112070222B (zh) 用于联邦学习的处理装置、加速器及方法
US8078661B2 (en) Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit
CN103942031B (zh) 椭圆域曲线运算方法
WO1993002413A1 (en) High-speed modulo exponentiator device
US20090006512A1 (en) NORMAL-BASIS TO CANONICAL-BASIS TRANSFORMATION FOR BINARY GALOIS-FIELDS GF(2m)
US20080140753A1 (en) Multiplier
US20110208976A1 (en) Method And Apparatus For Processing Arbitrary Key Bit Length Encryption Operations With Similar Efficiencies
US5121429A (en) Digital signal processing
KR101925868B1 (ko) 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
US7912886B2 (en) Configurable exponent FIFO
CN103780381A (zh) 基于高基脉动阵列的蒙哥马利算法的实现装置及方法
US8005210B2 (en) Modulus scaling for elliptic-curve cryptography
US7266577B2 (en) Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
KR20100067590A (ko) 타원곡선 암호 연산 방법
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20080326