CN101866278B - 一种异步迭代的64位整型乘法器及其计算方法 - Google Patents
一种异步迭代的64位整型乘法器及其计算方法 Download PDFInfo
- Publication number
- CN101866278B CN101866278B CN 201010204727 CN201010204727A CN101866278B CN 101866278 B CN101866278 B CN 101866278B CN 201010204727 CN201010204727 CN 201010204727 CN 201010204727 A CN201010204727 A CN 201010204727A CN 101866278 B CN101866278 B CN 101866278B
- Authority
- CN
- China
- Prior art keywords
- multiplier
- clk
- addition
- shift register
- bit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明属于64位计算机乘法器领域。特别涉及一种异步迭代的64位整型乘法器,一种异步迭代的多位整型乘法器及其计算方法。本发明电路包括一个用于存放被乘数的寄存器R1,一个用于存放乘数和中间计算值的移位寄存器R2,一个用于进行迭代加法的加法器A1,移位寄存器R2在移位信号R2_CLK的作用下向右移动移位;寄存器R1和R2都与初始化信号Req连接;还包括一个用于检测乘数高位零的个数,从而动态改变迭代乘法器累加次数的加法循环次数控制器,所述加法循环次数控制器通过移位信号R2_CLK与移位寄存器R2连接。本发明采用循环次数控制器检测高位零的个数,动态改变迭代乘法器累加的次数,加快乘法器的速度,使得该乘法器可以节省大量的运算时间。
Description
技术领域
本发明属于64位计算机乘法器领域。特别涉及一种异步迭代的64位整型乘法器;本发明还包括该乘法器的计算方法。
背景技术
乘法器是现代计算机的基本组成部分,其性能的高低直接影响到计算机的整体运算和处理能力。现有乘法器的数学原理比较简单——扫描乘数的每一位,产生部分积,然后将部分积进行累加,得到最终的结果。
上面的例子将5个部分积同时相加,需要4(5-1)个加法器。这是一种阵列乘法器的结构,n位阵列乘法器需要n-1个加法器,所需要的硬件较多。为了节省硬件资源,可以采用一种迭代的结构,将n个部分积用同一个加法器进行加法运算,迭代计算n-1次,其原理如下例所示:
迭代乘法器需要较少的硬件资源,但是其速度较慢——n位乘法器需要进行n-1次迭代的加法运算。这种劣势在64位计算机中尤其突出,64位乘法器需要63次迭代,用64位二进制能表示的最大无符号自然数为264-1=1844 67440737 0955 1615,18千亿亿!人们极少使用如此大的数字。而人们经常使用的数字完全可以用较少的位数表示,例如1000只用10个二进制数表示即可。但是由于64位CPU采用统一的表达形式,即使像1000这样的数字也需要用64位表示,即0000...000 1111101000,前面有54个0。这样,即使对于1000这样较小的数字,普通的迭代乘法器也需要63次迭代。这63次迭代中,只有前9次有意义,而后54次所产生的部分积都为零。也就是说后54次加法运算只是进行无谓的加0运算,浪费了整个乘法器的运算时间。
随着计算机进入到64位时代,计算机每次运算的范围扩大了,运算能力也增强了。乘法器作为一个基本的运算单元,性能也急需得到改善。
发明内容
本发明的目的在于克服现有技术的不足,设计一种能有效节省运算时间的异步迭代的64位整型乘法器,本发明还包括该乘法器的计算方法。
本发明包括如下技术特征:一种异步迭代的多位整型乘法器,包括一个用于存放被乘数的寄存器R1,一个用于存放乘数和中间计算值的移位寄存器R2,一个用于进行迭代加法的加法器A1,移位寄存器R2在移位信号R2_CLK的作用下向右移动移位;寄存器R1和R2都与初始化信号Req连接;还包括一个用于检测乘数高位零的个数,从而动态改变迭代乘法器累加次数的加法循环次数控制器,所述加法循环次数控制器通过移位信号R2_CLK与移位寄存器R2连接。
更进一步的,所述循环次数控制器包括一个八分频电路、一个八位移位寄存器、或门连接电路;以及一个选择器与门;
所述八分频电路输入端与加法时钟信号连接,其输出端与八位移位寄存器连接;
或门连接电路包括八个八输入或门和七个二输入或门,所述八个八输入或门的输入端与乘数的每个数位连接;每一个八输入或门的输出端分别与一个二输入或门和八位移位寄存器连接;所述八位移位寄存器与选择器与门连接;
所述选择器与门的输入端为CLK_add信号输入端和CLK_shif信号输入端,所述CLK_add信号为一个时钟周期可以满足一次64位的加法运算;CLK_shif信号为不需要做加法运算时,一个时钟周期满足一次移位操作;所述选择器与门的输出端分别连接移位信号R2_CLK输出端和64分频器,所述64分频器的输出端为结果信号端Ack。
本发明还包括一种异步迭代的多位整型乘法器的计算方法,先是扫描乘数MR,产生部分积,然后将部分积进行累加,最后得到结果;还通过一个循环次数控制器检测乘数高位零的个数,从而动态改变迭代乘法器累加的次数。
跟进一步的,乘法器将64位的乘数MR按照8位一组分为8组,用一个八输入或门检测该组是否都为0;用Zg(7..0)表示;
Do(i)表示需不需要对第i组进行迭代加法运算,Do(i)的逻辑关系为:Do(i)=Do(i+1)|Zg(i),其中i=0..6,|表示逻辑或;Do(7)=Zg(7);
如果对于第i组,Do(i)=1,那么当j<i,Do(j)都为1;即如果一组需要进行迭代运算,比它低位的部分积都需要进行迭代运算;
如果对于第i组,Do(i)=0,那么当j>i,Do(j)都为0;即如果发现某个i,第一次出现Do(i)=0,迭代加法运算就结束了;
移位寄存器R2的移位信号R2_CLK的间隔时间由选择与门控制;如果需要做迭代加法运算,时钟周期为CLK_add,一个时钟周期可以满足一次64位的加法运算;如果不需要做加法运算,时钟周期为CLK_shif,一个时钟周期满足一次移位操作;CLK_shif时钟周期是CLK_add时钟周期的1/20;
Do(7)..Do(0)都被放在一个八位移位寄存器内;乘法器每做完一组的运算,CLK/8使得八位移位寄存器向右边移一位;如果八位移位寄存器的最低位为1表示乘数的下一组仍然需要运算,R2_CLK为CLK_add;
如果Do(7)..Do(0)移位寄存器最低位为0,表示乘数的下一组以及其它高位的组都为0,不需要再做迭代加法运算,运算结果经过多次正确的移位后即可输出,移位寄存器R2的移位信号R2_CLK为CLK_shif;
如果R2_CLK出现了64个时钟脉冲,表示运算结束;64分频器将Ack置为1。
本发明与现有技术相比,采用循环次数控制器检测高位零的个数,动态改变迭代乘法器累加的次数,加快乘法器的速度,使得该乘法器可以节省大量的运算时间,并且在64位计算机时代比在32位计算机时代更能发挥其速度优势。
附图说明
图1乘法器输入输出接口定义;
图2乘法器内部电路结构;
具体实施方式
图1为乘法器的输入输出信号定义:MD是64位被乘数输入;MR是64位乘数输入;CLK_add为乘法器的加法运算时钟输入,其时钟周期必须满足一次迭代加法和一次移位的时间;CLK_shif为乘法器的移位时钟输入,其时钟周期必须满足一次移位寄存器的移位的时间;CLK_shif的时钟周期比CLK_add的时钟周期小的多,实验数据表明,CLK_shif的时钟周期是CLK_add时钟周期的1/20;Req为乘法请求的输入信号。Result是128位结果输出;Ack是乘法器是否完成运算的信号输出。它与外围电路的接口方式为:CLK_add和CLK_shif由外部时钟电路产生,电路启动就一直有效;外围电路检测Ack为0,说明乘法器空闲,它向乘法器输出被乘数MD和乘数MR,并且将Req信号变为1,初始化R1、R2和Do7..Do0移位寄存器,启动一次乘法运算;乘法器对MD和MR进行相乘运算,得到结果Result后将Ack变为1,告诉外围电路乘法完成;外围电路取走结果Result,并将Req清0,结束请求;乘法器将Ack变0,等待下一次运算。图1显示的是一种异步握手电路。
图2为乘法器内部电路结构。其工作原理如下:被乘数MD放在一个普通64位寄存器R1中;乘数MR放在一个128位移位寄存器R2的后64位中;运算过程变量和最终结果放在R2中。一次乘法运算之前必须初始化,使得R1=MD,R2的前半部分为0,后半部分为MR。
如果Do(7)..Do(0)移位寄存器的最低位为1,做加法迭代运算。每次加法迭代运算中,R2的最后一位和MD进行逻辑与运算(and)产生部分积,部分积与R2的前64位进行相加,然后把结果放回到R2中,随后R2在移位信号R2_CLK的作用下向右移动移位;准备进行下一次迭代运算。
如果Do(7)..Do(0)移位寄存器的最低位为0,不需要做加法迭代运算,只需要做移位操作。每次移位操作,R2在移位信号R2_CLK的作用下向右移一位。
一次乘法运算由若干次加法迭代运算和若干次移位操作组成。加法迭代运算和移位操作的总数为64次。
对于普通迭代乘法器,每一次运算要进行64次迭代加法,哪怕最后进行多次加0的迭代加法运算。本乘法器考虑到高位的MR产生的部分积为0,不需要再进行加法运算,结果可以提前给出。为了达到这个目的,本乘法器设计了一个全新的加法循环次数控制器。
加法循环次数控制器是本乘法器的重要组成部分,图2左边是新循环次数控制器的结构,下面介绍它的工作原理。乘法器将64位的乘数MR按照8位一组分为8组,用一个8输入或门检测该组是否都为0;用Zg(7..0)表示;其中,Zg(7)=0表示MR[63..56]都为0;Zg(7)=1表示MR[63..56]不全为0;Zg(6)对应MR[55..48];...;Zg(0)对应MR[7..0]。
Do(i)表示需不需要对第i组进行迭代加法运算,Do(i)的逻辑关系为:Do(i)=Do(i+1)|Zg(i)(当i=0..6,|表示逻辑或);Do(7)=Zg(7)。如果第i组,Do(i)=1,那么对于j<i,Do(j)都为1;这意味着如果某一组需要进行迭代运算,比它低位的部分积都需要进行迭代运算。如果第i组,Do(i)=0,那么对于j>i,Do(j)都为0;这意味着如果发现某个i,第一次出现Do(i)=0,迭代加法运算就结束了。不需要再做迭代加法运算,运算结果经过正确的移位后即可输出。
Do(7)..Do(0)的值被放到一个8位移位寄存器“Do7..Do0移位寄存器”中,加法循环次数控制器利用Do(7)..Do(0)移位寄存器的最低位控制数据通路的时间间隔,完成不同的操作。如果最低位为1,数据通路做1次加法迭代运算和1次移位操作;如果最低位为0,数据通路不需要做加法迭代运算只需要做1次移位操作。
下面举例说明:
乘数MR=00000000 00000000 00000000 00000000 01101100 0000000000000000 01010011
得到:Zg(7)=0;Zg(6)=0;Zg(5)=0;Zg(4)=0;Zg(3)=1;Zg(2)=0;Zg(1)=0;Zg(0)=1
得到:Do(7)=0;Do(6)=0;Do(5)=0;Do(4)=0;Do(3)=1;Do(2)=1;Do(1)=1;Do(0)=1;
对于这个乘数,乘法器需要做4组,总共是32次迭代加法运算(而传统方法需要做64次迭代加法运算),和32次移位操作,根据实验数据,1次移位操作的时间仅仅是加法运算时间的1/20,利用本方法,只需要一般乘法运算时间52.5%。
Claims (2)
1.一种异步迭代的64位整型乘法器,包括一个用于存放被乘数的寄存器R1,一个用于存放乘数和中间计算值的移位寄存器R2,一个用于进行迭代加法的加法器A1,移位寄存器R2在移位信号R2_CLK的作用下向右移动移位;寄存器R1和R2都与初始化信号Req连接;
其特征在于:还包括一个加法循环次数控制器,加法循环次数控制器通过检测乘数左边连续零的个数决定迭代乘法器累加的次数,通过控制加法时钟或者是移位时钟,实现动态改变迭代乘法器累加次数,所述加法循环次数控制器通过移位信号R2_CLK与移位寄存器R2连接;所述加法循环次数控制器包括一个八分频电路、一个八位移位寄存器、或门连接电路;以及一个选择器与门;
所述八分频电路输入端与加法时钟信号连接,其输出端与八位移位寄存器连接;
或门连接电路包括八个八输入或门和七个二输入或门,所述八个八输入或门的输入端与乘数的每个数位连接;每一个八输入或门的输出端分别与一个二输入或门和八位移位寄存器连接;所述八位移位寄存器与选择器与门连接;
所述选择器与门的输入端为加法时钟信号输入端和CLK_shif信号输入端,所述加法时钟信号为一个时钟周期可以满足一次64位的加法运算;CLK_shif信号为不需要做加法运算时,一个时钟周期满足一次移位操作;所述选择器与门的输出端分别连接移位信号R2_CLK输出端和64分频器,所述64分频器的输出端为结果信号端Ack。
2.一种异步迭代的64位整型乘法器的计算方法,其特征在于:乘法器将64位的乘数MR按照8位一组分为8组,用一个8输入或门检测该组是否 都为0;用Zg(7..0)表示;其中,Zg(7)=0表示MR[63..56]都为0;Zg(7)=1表示MR[63..56]不全为0;Zg(6)对应MR[55..48];...;Zg(0)对应MR[7..0] ;
Do(i)表示需不需要对第i组进行迭代加法运算,Do(i)的逻辑关系为:Do(i)=Do(i+1)|Zg(i),其中i=0..6,|表示逻辑或;Do(7)=Zg(7);
如果对于第i组,Do(i)=1,那么当j<i,Do(j)都为1;即如果一组需要进行迭代运算,比它低位的部分积都需要进行迭代运算;
如果对于第i组,Do(i)=0,那么当j>i,Do(j)都为0;即如果发现某个i,第一次出现Do(i)=0,迭代加法运算就结束了;
移位寄存器R2的移位信号R2_CLK的间隔时间由选择与门控制;如果需要做迭代加法运算,时钟周期为CLK_add,一个时钟周期可以满足一次64位的加法运算;如果不需要做加法运算,时钟周期为CLK_shif,一个时钟周期满足一次移位操作;CLK_shif时钟周期是CLK_add时钟周期的1/20;
Do(7)..Do(0)都被放在一个八位移位寄存器内;乘法器每做完一组的运算,使八位移位寄存器向右边移一位;如果八位移位寄存器的最低位为1,表示乘数的下一组仍然需要运算,R2_CLK为CLK_add;
如果Do(7)..Do(0)移位寄存器最低位为0,表示乘数的下一组以及其它高位的组都为0,不需要再做迭代加法运算,运算结果经过多次正确的移位后即可输出,移位寄存器R2的移位信号R2_CLK为CLK_shif;
如果R2_CLK出现了64个时钟脉冲,表示运算结束;64分频器将Ack置为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010204727 CN101866278B (zh) | 2010-06-18 | 2010-06-18 | 一种异步迭代的64位整型乘法器及其计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010204727 CN101866278B (zh) | 2010-06-18 | 2010-06-18 | 一种异步迭代的64位整型乘法器及其计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101866278A CN101866278A (zh) | 2010-10-20 |
CN101866278B true CN101866278B (zh) | 2013-05-15 |
Family
ID=42958016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010204727 Expired - Fee Related CN101866278B (zh) | 2010-06-18 | 2010-06-18 | 一种异步迭代的64位整型乘法器及其计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101866278B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103236857B (zh) * | 2013-04-19 | 2016-03-16 | 荣成市鼎通电子信息科技有限公司 | 无需存储器的准循环矩阵高速乘法器 |
GB2535426B (en) * | 2014-10-31 | 2021-08-11 | Advanced Risc Mach Ltd | Apparatus, method and program for calculating the result of a repeating iterative sum |
CN107404380B (zh) * | 2017-06-30 | 2020-09-11 | 吴尽昭 | 一种基于异步数据通路的rsa算法 |
CN112286490B (zh) * | 2020-11-11 | 2024-04-02 | 南京大学 | 一种循环迭代乘加运算的硬件架构及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1545652A (zh) * | 2001-08-17 | 2004-11-10 | ���ȿ���ͨ�Źɷ�����˾ | 乘法器电路 |
US20060179101A1 (en) * | 2005-02-09 | 2006-08-10 | International Business Machines Corporation | System and method for providing a decimal multiply algorithm using a double adder |
CN1306390C (zh) * | 2000-10-16 | 2007-03-21 | 诺基亚公司 | 使用带符号的数位表示的乘法器 |
-
2010
- 2010-06-18 CN CN 201010204727 patent/CN101866278B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306390C (zh) * | 2000-10-16 | 2007-03-21 | 诺基亚公司 | 使用带符号的数位表示的乘法器 |
CN1545652A (zh) * | 2001-08-17 | 2004-11-10 | ���ȿ���ͨ�Źɷ�����˾ | 乘法器电路 |
US20060179101A1 (en) * | 2005-02-09 | 2006-08-10 | International Business Machines Corporation | System and method for providing a decimal multiply algorithm using a double adder |
Also Published As
Publication number | Publication date |
---|---|
CN101866278A (zh) | 2010-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chang et al. | A low power radix-4 booth multiplier with pre-encoded mechanism | |
CN105955706B (zh) | 一种除法器及除法运算方法 | |
CN102681815B (zh) | 用加法器树状结构的有符号乘累加算法的方法 | |
CN105468335A (zh) | 流水级运算装置、数据处理方法及片上网络芯片 | |
CN104375802A (zh) | 一种乘除法器及运算方法 | |
CN112487750A (zh) | 一种基于存内计算的卷积加速计算系统及方法 | |
CN101866278B (zh) | 一种异步迭代的64位整型乘法器及其计算方法 | |
Olivieri | Design of synchronous and asynchronous variable-latency pipelined multipliers | |
CN110647309A (zh) | 一种高速大位宽乘法器 | |
CN104090737B (zh) | 一种改进型部分并行架构乘法器及其处理方法 | |
CN102799412A (zh) | 基于并行流水线设计的cordic加速器 | |
CN107092462B (zh) | 一种基于fpga的64位异步乘法器 | |
TWI688895B (zh) | 快速向量乘累加電路 | |
Neeraja et al. | Design of an area efficient braun multiplier using high speed parallel prefix adder in cadence | |
CN114138233B (zh) | 串行移位补码乘加器 | |
CN117311446A (zh) | 基于寄存器分组的时钟门控方法、系统、存储介质及设备 | |
CN204143432U (zh) | 一种乘除法器 | |
CN205281474U (zh) | 一种可配置的两级流水线六操作数快速加法器 | |
CN110506255A (zh) | 节能型可变功率加法器及其使用方法 | |
CN106873941B (zh) | 一种快速模乘和模平方电路及其实现方法 | |
CN102929575B (zh) | 一种模(2n+3)乘法器 | |
Raghul et al. | Design and Implementation of Approximate Truncated adder using kogge stone adder for low power applications | |
Puneeth et al. | Design and Implementation of High Frequency 16-bit full adder on FPGA Families | |
CN205899527U (zh) | 一种除法器 | |
Basiri et al. | Memory based multiplier design in custom and FPGA implementation |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130515 Termination date: 20140618 |
|
EXPY | Termination of patent right or utility model |