CN1809805A - 用于比乘法器硬件的位数宽的大整数操作数的有效的乘法序列 - Google Patents

用于比乘法器硬件的位数宽的大整数操作数的有效的乘法序列 Download PDF

Info

Publication number
CN1809805A
CN1809805A CNA2004800091607A CN200480009160A CN1809805A CN 1809805 A CN1809805 A CN 1809805A CN A2004800091607 A CNA2004800091607 A CN A2004800091607A CN 200480009160 A CN200480009160 A CN 200480009160A CN 1809805 A CN1809805 A CN 1809805A
Authority
CN
China
Prior art keywords
operand
word
register
sequence
multiplication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2004800091607A
Other languages
English (en)
Other versions
CN100489764C (zh
Inventor
V·杜帕丘斯
L·帕里斯
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.)
Rumbas
Original Assignee
Atmel 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 Atmel Corp filed Critical Atmel Corp
Publication of CN1809805A publication Critical patent/CN1809805A/zh
Application granted granted Critical
Publication of CN100489764C publication Critical patent/CN100489764C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Abstract

一种操作乘法电路(21)以对多字操作数执行乘法—累加操作的方法,其特征是一个操作序列器(23),它被预编程从而以特定的序列指引在RAM(15)和内部数据寄存器(27,RX,RY,RZ,RR)之间的操作数段的传输。序列(例如,图5A-5C)处理结果字—权相邻的组(队列),通过交替具有稳定地增加或者降低的操作数段权,队列组内的乘法循环以Z字形进行。在具有额外内部缓存寄存器(C_A0,C_A1,C_B0,C_B1,C_B2)的乘法器实施例中,这些缓存寄存器存储经常被使用的操作数段,从而使得它们不必多次地从存储器中重新加载。在这种情况下,组内的序列不需要严格地以Z字形前进,而是可以跳跃到包含至少一个存储于缓存中的操作数段的乘法操作。

Description

用于比乘法器硬件的位数宽的大整数操作数的有效的乘法序列
技术领域
本发明涉及算法处理电路,尤其涉及乘法器硬件,以及对其进行操作从而执行乘法或者乘法-累加操作(及相关的乘方操作)的方法,其中此类操作包含至少一个其位数比乘法器硬件要宽的多字操作数。
本发明特别地涉及对用于有效地执行此类多字操作的乘法序列所进行的硬件控制,其中该方法被表征为一特定的顺序,操作数的字按该顺序被处理。
背景技术
有必要对乘法硬件的尺寸作出一定的限制,通常其被定义为具有一对单-字操作数输入和一个双-字结果输出。为了执行乘法-累加操作,乘法器输出通常连接到一个其宽度至少为两个字加一个比特的累加器电路(补充比特位可以是结果的一部分,或者仅仅作为进位信息,表示在累加操作过程中是否有正溢出或者负溢出)。其基本操作就是R=Z±XY。对于简单乘法,R=XY,累加器输入Z=0。乘方操作时,X=Y。这一基本操作通常被设计用于执行标准整数算法,但是也存在执行多项式算法的乘法硬件,特别是在密码应用中。
在密码和其它一些应用中,需要对包含很多字的大的整数进行乘法运算。为了能采用其位数比乘法硬件大得多的操作数来执行这些操作,操作数必须被分成很多单-字段,并以某一特定的序列将其输入硬件中。这些段采用以上方式被操作,并且其中间结果被累加,因此最终乘积被计算为权重不同的交叉乘积的总和。字-宽操作数段,以及局部结果,被存储在存储器中,该存储器由乘法器硬件的操作序列器来寻址。
典型的序列保持第一操作数段为常量,而其它操作数段以一次一个字的方式被扫描进乘法器;然后第一操作数添加到下一个字-宽段,重复对第二操作数的扫描。如果X=Sixiwi,Y=Sjyjwj,并且Z=Skzkwk,其中w=2n,那么,R=Skrkwk=Z±XY=Skzkwk±Si Sj(xiyj)wi+j其中i+j=k,并且n是以比特为单位所表示的字的大小。所以,在典型的操作序列中,对恒定的字xi,字yj循环依次取所有的j值,然后i加1,并且为新的xi重复字yj的循环。
虽然上述操作直截了当,易于编程,并且可得到正确的结果,但是每一步或者每一循环都需要对于随机访问存储器进行平均3次访问。特别是,每一步都需要从存储器中读出yj和zk,并且将局部结果rk写回到存储器中。
本发明的一个目的就是提供一种更具效率的,用于大整数操作的多-字乘法序列,该序列在每次乘法操作中平均只需要对存储器的进行一次访问。
发明概要
通过一种在两个相邻的结果字-权的组(称之为队列)内处理乘法序列的方法,可以使得本发明的目的得以实现。在一组队列对中,序列通过交替具有稳定增加(或稳定减少)的操作数段权的(称之为Z字形模式)队列来进行,从而来自在前乘法循环的段之一也还被用于当前乘法循环,并且,可能除了在给定组内的第一乘法循环外,在该组的任何乘法循环中,只需要将操作数段中的一个从存储器中读出即可。同一结果权的局部乘积的相加在一个与乘法操作流水作业的累加操作中进行。分离的累加参数的双-字段也可被加在相应组的累加操作的序列的开头或者结尾处。
乘法-累加(MAC)单元在位于乘法硬件中的固件预编程的操作序列器的指引下执行乘法和累加循环,其中,从随机访问存储器(RAM)中读出操作数段,该操作数段通过位于乘法硬件内的寄存器被传输给MAC单元。同样的,中间和最终结果被写进用于累加参数段的内部寄存器,并最终回到RAM。
作为进一步的改进,增加内部缓存寄存器,用于保留经常被使用的、重现于每一组乘法循环的开头或者结尾处的参数段。
本发明相对现有乘法序列的进步在于,它使得乘法器对于参数段的要求与每个乘法循环内的一个读操作和写操作的存储器访问带宽达到高度的匹配,从而可以在最小的循环数内有效地执行多字大整数的总体乘法。乘法操作也可以被延续至几个循环(使用流水线),这时仍可认为,平均来看,由于每个循环有一个乘法结果可用,而且每个循环可以开始一个新的乘法操作,所以一次乘法是在一个循环内被执行的。
附图说明
图1是本发明的包括乘法器引擎的处理系统的主结构示意图。
图2是图示根据本发明的一个典型乘法器引擎的显示寄存器和存储器接口的接口图表。
图3是位于图1中的乘法器引擎内的MAC单元的更详细的示意图。
图4是根据操作数和结果权所安排的字对字的逐字乘法和加法的图表,它被用于描述根据本发明的操作序列。
图5a,5b和5c是示出一个本发明的乘法实施例的操作序列的表格,其中使用了额外的一组共5个用于存储经常被使用的操作段的缓存寄存器。
图6是如图4所示的,根据操作数和结果权所安排的复数字对字的乘法和加法的图表,它被用于示例不同大小的操作数情况下的“正交”乘法-累加操作。
图7a,7b和7c是示出另一个对应于图6的乘法实施例的操作序列的表格,在此情况下使用了1组共7个硬件中的缓存寄存器。
本发明的最佳实施例
参照图1,可以看到,处理系统的主要结构包括主核心处理器11和乘法器引擎13,它们共享随机存储器或者RAM15和乘法器控制寄存器缓存17。乘法器引擎13包括乘法-累加(MAC)单元21,其与MAC21、控制寄存器25和内部数据寄存器27的操作序列器23相连接从而用于向它们发送指令信号。
存储器管理/存储器保护单元(MMU/MPU)14和19作为界面使RAM15和缓存17与处理器11和乘法器引擎13相连接。在我们的优选实施例中,有一个用于处理器核心11的,同时关注于RAM和外围设备访问(为了控制/限制对某些区域/外围设备的访问)的MMU/MPU。在此,乘法器引擎13被视作外围设备。因为乘法器引擎13对RAM15具有直接的访问,这可以成为一种让用户克服在核心一方的MMU/MPU 19中所规定的访问限制的方法。所以,我们提供另一MMU/MPU 14用于控制来自乘法器引擎13的存储器访问。这两个MMU/M PU单元14和19应该以相一致的方法配置,但是他们之间没有连接,而且他们的操作是相互独立的。
乘法器引擎13通常不具有任何专用的ROM,而是由处理器核心11来配置和参数化的。控制寄存器25被连接到控制寄存器缓存17上,并从指令寄存器缓存17那里接收来自处理器核心11的指令。控制寄存器25把控制参数和状态信息发送给操作序列器23,并且,举例来说,与MAC单元21互动,从而为那些可执行两种算法的MAC单元选择MAC模式(标准算法还是多项式算法),选择单-字或者多字MAC操作,以及传达任何来自当前或者前一MAC操作的进位值。
内部数据和地址寄存器27与共享RAM15相连接,以接收和发送MAC操作的操作数参数。根据在此所述的本发明,优选情况下,操作序列器23由固件进行预编程。根据本发明的一个实施例,操作序列器23将命令和地址发送到内部寄存器27,再由此发送到共享RAM15,从而指引被选的字-宽操作数段的按特定的顺序的加载。通常,其结构被构建为当乘法器引擎在运行时被授权访问共享RAM15的特定部分。这使得核心11在一次计算内仍然允许访问共享RAM15的其它部分。或者,在一次计算内,对共享RAM15的访问可以完全交给乘法器引擎13,并且仅当乘法器13未使用它时,处理器核心11可以访问它。
MAC单元21可以基于32比特大小的字。在此情况下,操作数长度总是4字节的倍数,并且操作数排列在32比特字的范围上,并且当必要时带引导零。这一选择便利于对共享RAM15的地址计算,因为处理器11通常工作于字节地址上。MAC单元21具有一对用于乘法器阵列的32比特(字-宽)操作数输入X和Y、双字-宽累加器输入Z、形成第二累加器输入的双字-宽乘法器结果输出、和双字-宽累加器输出R。
尽管MAC单元21仅仅在单-字操作数输入X和Y上操作,但包括已编程的操作序列器23的总体乘法引擎13,可以被视为大(多字)整数乘法器。其支持有效乘法操作,例如N-字数的乘法-累加、N-字数的乘方-累加(乘法器输入Y=X),N-字数的非累加(累加器输入Z=0)乘法或者乘方、以及N-字数的以单-字(或者,甚至可以是单-字节)常数A乘方-累加。
参照图2,借助于接口图表,描述了在带有可变寄存器和缓存的乘法器引擎13与共享RAM15之间的互动情况。RAM 15在特定的地址块内存储了参数X,Y,Z和R,其中这些参数必须在其被指向时才能够访问。操作数的字总是以一个基地址开始,在RAM中首先存储于最低有效位。为了请求一个参数,或者一个特定的操作数段字,相应的地址寄存器X ADDR、Y ADDR、Z ADDR或者R ADDR(图1中的内部寄存器27中的一部分)必须加载这些相关的地址。地址字然后被加载至相应的数据寄存器RX、RY、RZ和RR(更多图1中被MAC单元21使用的内部寄存器),或者从这些数据寄存器中读出。
寄存器25通常包括一个或多个用于确定一个期望操作(乘法、累加乘法、累减乘法、单-字常数乘法、乘方,等等)的操作寄存器、一个或多个指定各种选项(自然模式或多项式模式、全操作或部分操作、进位或进位输入,等等),同时表示操作数长度的控制寄存器、和一个或多个表示各种状态(忙/空闲、正溢出/负溢出/零结果、错误状态,等等)的状态寄存器。
参照图3,图1的MAC单元21由整数乘法器阵列31组成,其中整数乘法器阵列31接收单-字操作数,或者更普遍地,经由数据寄存器RX和RY接收从共享RAM加载的更大多-字操作数的单-字段。乘法器阵列31将输入字相乘所得的两字结果输出到累加器33。累加器33的大小为3个字(96比特)加上足以处理规定的操作数最大值的进位比特数。例如,对于512字的操作数来说,最长的队列有512行的中间乘积需要被加,所以需要9比特的空间用于进位总和。这样本例就要求累加器的总比特宽度为105。累加器33也从数据存储器RZ处接收双-字输入参数,并且把结果输出到结果数据寄存器RR。累加器输出或者数据寄存器RR可提供双-字反馈到累加操作数寄存器RZ,以允许累加操作数段在寄存器RR中的最终结果在被写回RAM前被更新。典型大小的乘法-累加(MAC)单元处理32比特字,其具有由寄存器RX和RY输入到乘法器阵列的32比特操作数、和64比特操作数乘法器阵列输出、和来自/送至寄存器RZ和RR的累加器输入和输出。
假设A代表单-字操作数或者从数据寄存器RX加载到乘法器阵列31的多-字操作数X的段,并假设B代表单-字操作数或者从数据寄存器RY加载到乘法阵列31的多-字操作数Y的段,那么A=Siai2i,B=Sjaj2j其中ai和bj是操作数或者段的独立比特,而i和j在0到31间取值。
当在整数域Zp内做乘法时,
AB=∑i∑jaibj2i+j
当在伽罗瓦域GF(2n)内做乘法时,两个比特的相加以模2递减,从而
AB=∑k=0 2n-2(2k×∑i+j=k(aixbj mod 2) ))))))))))
还可以加上一个输入进位项W。对于进位的处理取决于由上述的寄存器25所表示的选项。同时注意到输入进位项W不需要与来自紧接的现有计算的输出进位项有直接的关系。最后,伽罗瓦域操作对进位处理有影响,该影响在于将输入进位项W加到最低有效位的运算同样是被以2为模来处理的。
多-字操作数X和Y的全范围乘法包含刚才描述过的单-字乘法的序列。X和Y分别是N-字数和M-字数。常规的操作是R=[Z]±((X×Y)+W)。这可以写成如下的乘积的和的形式:
R=[∑k=0 N+M-1Zkbk]±(∑i=0N-1(∑j=0 M-1(XiYjbi+j))+W)。
该公式对于Zp和GF(2n)操作都是有效的,并且b=232。三-字加一进位的累加器在需要时可以计算Acc:=Acc±(Xi×Yj),或者Acc:=Acc±(Xi×Yj×232)。本发明属于单-字乘法发生的特殊次序。
操作序列
参照图4,该图表示出了多字操作数X的第一操作数段A0...A7的逐字乘法操作,与多-字操作数Y的第二操作数段B0...B7的逐字乘法操作的概要。例如,操作数X和操作数Y都是8字-宽,但在目前情况下并非必要。为了得到结果字R0...R15,变量部分乘积最后需要与操作数Z的相应的累加字C0...C15被垂直地加在一起。为了访问存储器,操作数段的加载、他们各自的乘法、以及到累加段的加法都是在结果权邻接的两个队列间进行的。两个队列的每一组的操作都是开始于顶部或者底部,并且逐行地呈Z字形前进。同样,队列对的邻近组并不一定需要在相同的方向上前进。因此,在图4中,乘法序列可以这样排列:
A1B0,A0B0,A0B1;A0B3,A0B2,A1B2,A1B1,A2B1,A2B0,A3B0;A5B0,A4B0,A4B1,A3B 1,A3B2,A2B2,A2B3,A1B3,A1B4,A0B4,A0B5;A0B7,A0B6,A1B6,A1B5,A2B5,A2B4,A3B4,A3B3,A4B3,A4B2,A5B2,A5B1,A6B1,A6B0,A7B0;A7B1,A7B2,A6B2,A6B3,A5B3,A5B4,A4B4,A4B5,A3B5,A3B6,A2B6,A2B7,A1B7;A3B7,A4B7,A4B6,A5B6,A5B5,A6B5,A6B4,A7B4,A7B3;A7B5,A7B6,A6B6,A6B7,A5B7;A7B7(分号在序列列表中分隔开队列对的不同组)。在这一特例中,连续的组在相反的方向前进(从顶部到底部,然后从底部到顶部,然后再从顶部到底部,等等)。注意到由于一个操作数在之前的乘法中已经到位,在阵列可以进行下一次乘法前,只有一个操作数需要被读取。
如果队列对的连续组总是以相同的方向前进,那么可以提供若干缓存寄存器来存储某些经常被使用的操作数段,其中这些操作数段需要避免在位于每个组的开头的前几次乘法中进行两次读操作。在这种情况下,在乘法序列的升序的一半期间(图4中的右半部分,当每个连续组变长时),5个缓存将存储A0、A1、B0、B1和B2。然后,在乘法序列的降序的一半期间,缓存将存储A6、A7、B5、B6和B7(图4的左半部分,当每个连续组变短时)。
图5a、5b和5c通过示出本发明的实施例的乘法序列描述了具有这种缓存的好处。第一队列表示RAM的读访问,第二队列表示乘法器阵列操作,最靠右的五个队列示出了5个缓存在每个乘法循环内的内容。对于一个具有5个缓存的,8×8字的乘法来说,有64个乘法循环,7个缓存只-加载循环,5个其它存储器读循环,加上结束时用于收尾的3个循环,总共加起来79个循环。当对密码应用中很常见的更大的整数做乘法时(例如,1024X1024比特),该先前的序列的优势更加地明显。
每个操作数的字的大小可以是偶数也可以是奇数,并且两个操作数不需要一样。后一情况常被称作“正交乘法”操作。图6、7a、7b和7c通过示例示出了一个正交乘法和累加操作的例子,其中,一个乘法操作数X为奇数(5)字而另一个乘法操作数Y为偶数(14)字,并且累加操作数Z和结果R是奇数(19)字的。在本例中,也有7个用于存储经常被使用的参数段的内部缓存寄存器。全体序列只被示出了一部分,即组R0-R1,R2-R3,R4-R5,R6-R7....(R8至R14被略去)、R12-R13、R14-R15、和R16-R17。在这些组内,乘法模式被重排,以使得最多需要一次RAM读访问和一次RAM写访问。第一队列表示在连续循环内应用的并且被访问的特定RAM地址。对RAM的写操作被用黑框示出,第二和第三队列表示分别由乘法器阵列和累加器所执行的操作。最靠右的七个队列表示被乘法器阵列和累加器所使用的内部缓存寄存器的内容。
该例也示出了乘法序列不需要在整个队列对组中严格地从顶部Z字形地下降到底部,或者从底部Z字形地上升到顶部。而且,这种Z字序列的开头和/或结尾可以被替换,甚至可以从组序列的第一部分以相反的方向进行,因为需要的参数在缓存中可用。因此,在第一组R0-R1中,顺序可以是Y0X0,Y0X1,Y1X0,而非Y0X0,Y1X0,Y0X1这样严格下降的序列,或者也非Y0X1,Y0X0,Y1X0这样严格上升的序列。在第二、第三和第四组,序列分别在Y1X1,Y3X1和Y5X1处的中间开始,以Z字形下降至底部,然后分别朝上跳回到Y2X1,Y4X1和Y6X1,并且最后Z字形地上升到顶部。之所以能够如此,是因为操作数段X1被存储于内部缓存中,所以即使对于分别位于序列中部的,从Y0X3到Y2X1,从Y0X4到Y4X1,和从Y2X4到Y6X1的跳跃而言,仍然只需要一次读操作。对于在图7a-7c中省略的所有组,以及组R12-R13而言也是如此。在组R14-R15中,序列开始于顶部并且严格地以Z字形下降至Y12X3,不过它然后跳跃到Y10X4,最终和Y11X4和Y11X3一起呈Z字形上升。由于参数X4已经在缓存寄存器中可用,所以这种跳跃和序列中方向的改变是允许的。最终的乘法组R16-R17显示为严格下降的Z字形模式,但却能够以任何顺序来执行,因为操作数段X3和X4在缓存寄存器中可用。
乘方操作和乘方累加操作按照与前述例子相同的方式来进行,不过操作数X和操作数Y是相同的。然而,由于X和Y的特定段并非在任何特别的乘法循环中都相同,所以乘方操作和其它操作数X与Y不同的乘法操作被同样地处理。

Claims (8)

1.一种操作乘法电路以计算两个操作数(X和Y)的乘积的方法,其中至少一个操作数的位数比乘法电路要大,该乘法电路具有一对字—宽度操作数输入和一个双—字—宽度字—宽度度乘积输出,其中一个字是特定数量的比特,每个操作数由多个顺序相邻的、由特定的权(k和m)所表征的字—宽度操作数段(xk和ym)组成,乘法电路从事对存储器的访问,该方法包括以下步骤:
以一特定的顺序将两个操作数的字—宽度操作数段从存储器加载到乘法电路中,乘法电路包括至少两个寄存器(RX和RY),其中这两个寄存器从事对所述存储器的访问,以暂时地保留被加载的段;
对加载的段做乘法以得到双字—宽度字—宽度的中间乘积,该中间乘积的权等于加载的段的权的总和;
把相同权的中间乘积加到一个累加器中,该累加器的大小为3个字加上足以处理特定的最大操作数大小的进位比特数,累加器连接到用于暂时地保留任何之前被加的具有特定权的乘积的双字输入寄存器(RZ)和一个用于保留加法步骤的结果的双字输出寄存器(RR),所述寄存器(RZ和RR)从事对所述存储器的访问;以及
至少在累加了所有的特定权的中间乘积之后,将来自所述输出寄存器(RR)的累加结果存储回所述存储器中;
其中加载操作数段到所述寄存器中去的特定顺序是由最终中间乘积的权所定义的序列,其中乘法步骤在两个相邻乘积权的连续组中完成,通过选择组中的序列,使得除了在给定组内的第一个乘法操作外,操作数段中最多有一个需要从存储器中读到寄存器(RX或RY)中,其它操作数段已经通过刚刚在前进行的乘法操作被存储于其它寄存器(RX或RY)中。
2.如权利要求1所述的方法,其特征在于,所述累加器输入寄存器(RZ)加载累加字(Z)的段,该段的权与将要在所述乘法步骤中的形成的中间乘积的权相同,其中这种操作方法对一对乘法操作数和一个累加操作数执行乘法—累加操作。
3.如权利要求1所述的方法,其特征在于,所述序列在组中以操作数段的权稳定增加的Z字形方式进行。
4.如权利要求1所述的方法,器特征在于,所述序列在组中以操作数段的权稳定降低的Z字形方式进行。
5.如权利要求1所述的方法,其特征在于,所述乘法电路还包括一组内部缓存寄存器,所述缓存寄存器从存储器中加载经常被用于乘法操作的操作数段。
6.如权利要求5所述的方法,其特征在于,所述序列在一个组中进行,该组以至少有一个存储于缓存寄存器中的操作数段,并且沿着操作数段的权稳定地增加或降低的第一Z字形方向前进的的一个乘法操作开始,然后该序列跳跃到组内的尚未执行的乘法操作,该乘法操作也至少有一个存储于缓存寄存器中的操作数段,并且沿着操作数段的权稳定地增加或降低的第二Z字形方向进行,直至该组的所有乘法操作完成。
7.如权利要求1所述的方法,其特征在于,特定的顺序被预编程在乘法电路的操作序列器内的固件中,操作数的字长度作为乘法命令的输入参数被包括在内。
8.一种乘法电路,包括:
乘法—累加(MAC)单元,其包括乘法器阵列,该乘法器阵列具有用于接收单—字操作数段以进行乘法操作来形成双—字中间乘积的输入,还包括累加器电路,该累加器电路具有用于从乘法器接收中间乘积第一双—字输入,用于接收累加值的第二双—字输入,和用于提供来自双—字输入的值的总和的、大小为三个字加上足以处理特定最大操作数大小的进位比特数的输出,累加器输出还将两个字反馈至第二双—字输入;
一组用于寻址随机访问存储器的内部地址寄存器;
一组内部数据寄存器(RX、RY、RZ、RR),连接到存储器,用于从所述存储器接收所述操作数的段,及将所述操作数的段发送到所述存储器,还连接到所述乘法器阵列和所述累加器,以向它们的输入提供操作数段,并接收来自它们的输出,每个所述操作数段都有一个特定的权;及
操作序列器,用于控制所述内部地址和数据寄存器对存储器的访问,并控制所述的各个乘法器阵列和累加器的乘法和累加操作的序列;
其中,所述序列由与被执行了乘法操作的操作数段的权的总和相等的结果乘积权所定义,其中乘法操作在两个相邻乘积权的连续组中完成,通过选择组中的序列,使得除了在给定组内的第一个乘法操作外,操作数段中最多有一个需要从存储器中读到寄存器(RX或RY)中,其它操作数段已经通过刚刚在前进行的乘法操作被存储于其它寄存器(RX或RY)中。
CNB2004800091607A 2003-04-07 2004-03-22 用于比乘法器硬件的位数宽的大整数操作数的有效的乘法序列 Expired - Fee Related CN100489764C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0304299A FR2853425B1 (fr) 2003-04-07 2003-04-07 Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur
FR03/04299 2003-04-07

Publications (2)

Publication Number Publication Date
CN1809805A true CN1809805A (zh) 2006-07-26
CN100489764C CN100489764C (zh) 2009-05-20

Family

ID=32982290

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800091607A Expired - Fee Related CN100489764C (zh) 2003-04-07 2004-03-22 用于比乘法器硬件的位数宽的大整数操作数的有效的乘法序列

Country Status (7)

Country Link
US (1) US7392276B2 (zh)
EP (1) EP1614027B1 (zh)
CN (1) CN100489764C (zh)
DE (1) DE602004023067D1 (zh)
FR (1) FR2853425B1 (zh)
TW (1) TWI338858B (zh)
WO (1) WO2004095234A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271570B (zh) * 2008-05-07 2011-08-17 威盛电子股份有限公司 用于绘图处理单元中的大整数乘法运算的装置和方法
CN101562594B (zh) * 2009-05-25 2011-09-07 哈尔滨工业大学 基于流水线操作的相位因子结合电路
CN102193773A (zh) * 2010-03-01 2011-09-21 英赛瑟库尔公司 针对水平旁路分析而受到保护的集成电路

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
US20110106872A1 (en) * 2008-06-06 2011-05-05 William Hasenplaugh Method and apparatus for providing an area-efficient large unsigned integer multiplier
US8495125B2 (en) * 2009-05-27 2013-07-23 Microchip Technology Incorporated DSP engine with implicit mixed sign operands
EP2761430B1 (en) 2011-09-27 2015-07-29 Technische Universität Graz Multiplication of large operands
CN106371808B (zh) * 2015-07-22 2019-07-12 华为技术有限公司 一种并行计算的方法及终端
CN115480730A (zh) * 2016-10-20 2022-12-16 英特尔公司 用于经融合的乘加的系统、装置和方法
US11599334B2 (en) * 2020-06-09 2023-03-07 VeriSilicon Microelectronics Enhanced multiply accumulate device for neural networks

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4240144A (en) 1979-01-02 1980-12-16 Honeywell Information Systems Inc. Long operand alignment and merge operation
JPH061438B2 (ja) * 1984-04-26 1994-01-05 日本電気株式会社 倍精度乗算器
US4809212A (en) * 1985-06-19 1989-02-28 Advanced Micro Devices, Inc. High throughput extended-precision multiplier
US4754421A (en) 1985-09-06 1988-06-28 Texas Instruments Incorporated Multiple precision multiplication device
US4876660A (en) 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
US4893268A (en) 1988-04-15 1990-01-09 Motorola, Inc. Circuit and method for accumulating partial products of a single, double or mixed precision multiplication
US5121431A (en) 1990-07-02 1992-06-09 Northern Telecom Limited Processor method of multiplying large numbers
JPH0612229A (ja) 1992-06-10 1994-01-21 Nec Corp 乗累算回路
US5606677A (en) 1992-11-30 1997-02-25 Texas Instruments Incorporated Packed word pair multiply operation forming output including most significant bits of product and other bits of one input
EP0924601B1 (en) 1993-11-23 2001-09-26 Hewlett-Packard Company, A Delaware Corporation Parallel data processing in a single processor
US5446651A (en) 1993-11-30 1995-08-29 Texas Instruments Incorporated Split multiply operation
US6295599B1 (en) 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5862067A (en) 1995-12-29 1999-01-19 Intel Corporation Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations
DE19637369C2 (de) 1996-09-13 2001-11-15 Micronas Gmbh Digitaler Signalprozessor mit Multipliziereinrichtung und -Verfahren
US5996066A (en) 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US5943250A (en) 1996-10-21 1999-08-24 Samsung Electronics Co., Ltd. Parallel multiplier that supports multiple numbers with different bit lengths
KR100222032B1 (ko) * 1996-12-24 1999-10-01 윤종용 디지탈 신호 처리기에서의 2배 정밀도 곱셈연산 수행방법
US6233597B1 (en) 1997-07-09 2001-05-15 Matsushita Electric Industrial Co., Ltd. Computing apparatus for double-precision multiplication
US6026421A (en) 1997-11-26 2000-02-15 Atmel Corporation Apparatus for multiprecision integer arithmetic
US6202077B1 (en) 1998-02-24 2001-03-13 Motorola, Inc. SIMD data processing extended precision arithmetic operand format
US6055554A (en) 1998-03-04 2000-04-25 Internatinal Business Machines Corporation Floating point binary quad word format multiply instruction unit
US6523055B1 (en) * 1999-01-20 2003-02-18 Lsi Logic Corporation Circuit and method for multiplying and accumulating the sum of two products in a single cycle

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271570B (zh) * 2008-05-07 2011-08-17 威盛电子股份有限公司 用于绘图处理单元中的大整数乘法运算的装置和方法
CN101562594B (zh) * 2009-05-25 2011-09-07 哈尔滨工业大学 基于流水线操作的相位因子结合电路
CN102193773A (zh) * 2010-03-01 2011-09-21 英赛瑟库尔公司 针对水平旁路分析而受到保护的集成电路

Also Published As

Publication number Publication date
FR2853425A1 (fr) 2004-10-08
TWI338858B (en) 2011-03-11
FR2853425B1 (fr) 2006-01-13
TW200504593A (en) 2005-02-01
EP1614027A2 (en) 2006-01-11
WO2004095234A2 (en) 2004-11-04
US20040199562A1 (en) 2004-10-07
DE602004023067D1 (de) 2009-10-22
US7392276B2 (en) 2008-06-24
CN100489764C (zh) 2009-05-20
WO2004095234A3 (en) 2005-11-03
EP1614027B1 (en) 2009-09-09
EP1614027A4 (en) 2006-06-21

Similar Documents

Publication Publication Date Title
KR102120396B1 (ko) 심층 신경망용 가속기
EP0282070B1 (en) Vector access to memories
CN100489764C (zh) 用于比乘法器硬件的位数宽的大整数操作数的有效的乘法序列
US20210406030A1 (en) Computer system using a plurality of single instruction multiple data (simd) engines for efficient matrix operations
US20120221788A1 (en) Multi-dimensional array manipulation
US20210081173A1 (en) Concurrent multi-bit adder
US6804771B1 (en) Processor with register file accessible by row column to achieve data array transposition
CN112506567B (zh) 数据读取方法和数据读取电路
US6694407B1 (en) Cache memory with data transfer control and method of operating same
CN113721982A (zh) 稀疏矩阵存储方法、向量计算方法和电子设备
US5200912A (en) Apparatus for providing power to selected portions of a multiplying device
CN116167424B (zh) 基于cim的神经网络加速器、方法、存算处理系统与设备
US20230244600A1 (en) Process for Generation of Addresses in Multi-Level Data Access
CN116842304A (zh) 一种不规则稀疏矩阵的计算方法及系统
EP0888586B1 (en) Array indexing
CN1164900A (zh) 存储器件中存储数据的方法和系统
US20060036801A1 (en) Scalable matrix register file
US20230244599A1 (en) Programmable Multi-Level Data Access Address Generator
Shu Parallel implementation of a sparse simplex algorithm on MIMD distributed memory computers
US5136537A (en) Method and apparatus for determining the product of two numbers
US20230077616A1 (en) Hardware acceleration of affine transformations
WO2023146611A1 (en) Programmable multi-level data access address generator
US11610095B2 (en) Systems and methods for energy-efficient data processing
CN1158668A (zh) 存储器件中存储数据的方法和系统
Cui et al. ARES: A Mapping Framework of DNNs Towards Diverse PIMs with General Abstractions

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: YINSAI KANGTAI LAISI CO.

Effective date: 20110824

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20110824

Address after: Aix-en-Provence

Patentee after: Inzai Contailes

Address before: California, USA

Patentee before: Atmel Corp.

C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: French Meileyi

Patentee after: INSIDE SECURE

Address before: Aix-en-Provence

Patentee before: Inzai Contailes

CP01 Change in the name or title of a patent holder

Address after: Fa Guomeileyi

Patentee after: Weimei Anshi Co.,Ltd.

Address before: Fa Guomeileyi

Patentee before: Inside Secure

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20200306

Address after: California, USA

Patentee after: Rumbas

Address before: Fa Guomeileyi

Patentee before: Weimei Anshi Co.,Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090520