一种基于并行循环压缩的余数运算电路及方法

文档序号:1627714 发布日期:2020-01-14 浏览:17次 >En<

阅读说明:本技术 一种基于并行循环压缩的余数运算电路及方法 (Remainder operation circuit and method based on parallel cyclic compression ) 是由 刘骁 赵冠一 张昆 唐勇 谢军 朱巍 王之辰 于 2019-09-12 设计创作,主要内容包括:本发明属于计算机整数乘法校验设计技术领域,特别涉及一种基于并行压缩循环的余数运算电路及方法。包括多个输入端,分别用于输入多个同位宽的二进制数;模加法器,用于输出求余结果;一层或多层进位保留加法器组件,设置在多个输入端和模加法器之间;每一层进位保留加法器组件包括一个或者多个进位保留加法器;最上层的进位保留加法器的两个输出连接至模加法器的输入,其余每层进位保留加法器的和输出作为下层进位保留加法器的输入,其余每层进位保留加法器的进位输出向最左移动1位以后作为下层进位保留加法器的输入;同位宽的二进制数由整数拆分而成。仅在最后输出一级采用了模加法器,而中间级均采用进位保留加法器提高了电路的时序性能。(The invention belongs to the technical field of computer integer multiplication check design, and particularly relates to a remainder operation circuit and method based on parallel compression cycle. The input end is used for inputting a plurality of binary numbers with the same bit width; the modulus adder is used for outputting a remainder result; one or more layers of carry-save adder components disposed between the plurality of inputs and the modulo adder; each layer of carry-save adder components comprises one or more carry-save adders; the two outputs of the carry-save adder at the uppermost layer are connected to the inputs of the modulo adders, the sum output of the carry-save adders at each other layer is used as the input of the carry-save adder at the lower layer, and the carry output of the carry-save adders at each other layer is used as the input of the carry-save adder at the lower layer after moving 1 bit to the leftmost; binary numbers with the same bit width are formed by integer splitting. The modulo adder is adopted only in the last output stage, and the carry-retaining adders are adopted in the middle stages, so that the time sequence performance of the circuit is improved.)

一种基于并行循环压缩的余数运算电路及方法

技术领域

本发明属于计算机整数乘法校验设计技术领域,特别涉及一种基于并行循环压缩的余数运算电路及方法。

背景技术

整数乘法部件时序紧张,其可靠运行能力对全芯片影响巨大。通过对整数乘法部件进行实时检错,可实现进一步的容错操作。余数编码校验是整数运算部件中常用的检错技术,通过对输入数据、运算结果进行编码和校验,能达到对运算过程进行检错的目的。但由于校验过程需要对运算结果进行实时余数编码和比较,对整数乘法校验部件的时序提出了较高的要求。

现有技术中,通常采用模数M=2k-1对整数乘法的运算结果进行校验。对于n位的二进制数X=(xn-1,xn-2,…,x1,x0),若n=mk,可得

Figure DEST_PATH_IMAGE001

。其中,

Figure 499020DEST_PATH_IMAGE002

,所以

Figure DEST_PATH_IMAGE003

在余数码生成逻辑中实现移位操作会导致较大面积开销。针对这一问题,可以根据性质2-1,将余数码中的p位左移等效为

Figure 353843DEST_PATH_IMAGE004

位左移,从而相应减少移位器开销,即

本实施例中以32位二进制数的余数求解为例进行描述。由公式

Figure 789373DEST_PATH_IMAGE006

可知,一个32位数X除以M(=15)求余数的求解可由一个4层的模15加法器树实现。基于模15加法器树的余数生成逻辑如图1所示,由于每个模加法器的延迟要大于同位宽的并行加法器及2:1多路选择器的延迟,基于模加法器树的余数生成逻辑的时序列一般较为紧张。常用的并行加法器有行波进位(RIP)加法器、跳跃进位加法器(CSKA:Carry-SKip Adders)、进位选择加法器(CSLA:Caurry-SeLect AdderS)、超前进位加法器(CLA:Carry-LookaheadAdders)等。

发明内容

本发明为了解决上述技术问题,对余数运算电路进行组织优化,提供一种基于并行循环压缩的余数运算电路及方法。

一种基于并行循环压缩的余数运算电路,其特征在于,包括:

多个输入端,分别用于输入多个同位宽的二进制数;

模加法器,用于输出求余结果;

一层或多层进位保留加法器组件,设置在所述多个输入端和所述模加法器之间;

每一层所述进位保留加法器组件包括一个或者多个进位保留加法器;

最上层的进位保留加法器的两个输出连接至所述模加法器的输入,其余每一层进位保留加法器的和输出作为下层进位保留加法器的输入,其余每一层进位保留加法器的进位输出向最左循环移动1位以后作为下层进位保留加法器的输入;

所述同位宽的二进制数由整数拆分而成。

上述技术方案中,仅在最后输出一级采用了模加法器,而中间级均采用进位保留加法器提高了电路的时序性能。

进一步的,所述多个输入端分别连接最底层的进位保留加法器的输入。

进一步的,所述多个输入端分别连接最底层的进位保留加法器的输入以及一个倒数第二层的进位保留加法器的输入。

作为优选,所述进位保留加法器为3:2进位保留加法器。

作为优选,所述进位保留加法器为4:2进位保留加法器。

作为优选,所述同位宽的二进制数的位数为k;所述模加法器为2k-1模加法器。

本发明还提供一种基于并行循环压缩的余数运算方法,其特征在于,包括:

步骤S1,将整数拆分为等位宽的多个二进制数并列进行进位保留运算;

步骤S2,将并列进行的一个或者多个进位保留运算的进位输出向最高位循环移1位以后的结果,以及,一个或者多个进位保留运算的和输出进行进位保留运算;

步骤S3,重复步骤S2直到仅剩一个进位输出和一个和输出;

步骤S4,将所述步骤S3得到的所述进位输出向最高位循环移1位以后的结果,以及,步骤S3得到的和输出进行模加法运算;

步骤S5,将步骤S4模加法运算的结果输出作为余数结果。

上述技术方案中,仅在最后输出步骤中进行模加法运算,而中间步骤均采用进位保留加法运算提高了电路的时序性能。

作为优选,所述步骤S2中,将每三个二进制数组合在一起进行进位保留运算。

作为优选,所述步骤S2中,将每四个二进制数组合在一起进行进位保留运算。

作为优选,所述步骤S1中,将整数拆分成多个k位二进制数并列进行进位保留运算;所述步骤S3中,将所述步骤S3得到的所述进位输出向最高位循环移1位以后的结果,以及,步骤S3得到的和输出进行模2k-1加法运算。

本发明具有下述有益效果:

本申请的余数电路减少了模加法器的使用,能在面积开销基本不增加的情况下,优化余数生成的逻辑时序。

附图说明

图 1是现有技术的余数电路示意图。

图2是本申请实施例的余数电路示意图。

具体实施方式

这里使用的术语仅用于描述特定实施例的目的,而不意图限制本发明。 除非另外定义,否则本文使用的所有术语具有与本发明所属领域的普通技术人员通常理解的相同的含义。 将进一步理解的是,常用术语应该被解释为具有与其在相关领域和本公开内容中的含义一致的含义。本公开将被认为是本发明的示例,并且不旨在将本发明限制到特定实施例。

实施例一

一种基于并行循环压缩的余数运算方法,其特征在于,包括:

步骤S1,将整数拆分为等位宽的多个二进制数并列进行进位保留运算。整数乘法运算的结果通常为32位或者64位整数。本实施例中以32位整数取余为例进行描述,可以将32位整数由按照高位至低位方向或者由低位至高位方向每4bit作为一个二进制数,从而将这个整数拆分成8个4bit的二进制数。当然,也可以将32位整采用相似的方法拆分成16个2bit的二进制数,或者4个8bit的二进制数,甚至也可以通过补位的方式拆分成11个3bit的二进制数。

步骤S2,将并列进行的一个或者多个进位保留运算的进位输出向最高位循环移1位以后的结果,以及,一个或者多个进位保留运算的和输出进行进位保留运算。当采用3:2进位保留加法器(Carry Save Adder,CSA)时,步骤S1中拆分出的多个二进制数每3个组成一组,每组二进制数中的3个二进制数被输入到同一个3:2CSA中,得到一个和输出和一个进位输出。当采用4:2进位保留加法器(Carry Save Adder,CSA)时,则步骤S1中拆分出的多个二进制数每4个组成一组,每组二进制数中的4个二进制数被输入到同一个4:2CSA中得到一个和输出和一个进位输出,和输出以及进位输出同样也为4bit二进制数。下文以采用3:2CSA进行进位保留加法运算为例进行描述,采用4:2CSA进行进位保留加法的运算与其类似,将不再赘述。

步骤S3,重复步骤S2直到仅剩一个进位输出和一个和输出。各进CSA的进位输出朝着最高位方向循环移动1位的结果,各CSA的和输出,以及如果步骤S1中拆分出的二进制数的个数不是3的整数时(例如拆分成8个4bit二进制数时)则还包括多余的两个4bit二进制数,再次每3个数组成一组输出到另外一批3:2CSA中得到输出。由于3:2CSA输入3个数以后仅输出2个数作为结果,因此每通过步骤S2进行一次并行的进位保留加法运算,并行输出的输出值数量会减少一部分。再在并行输出的输出值基础上重复步骤S2,如此循环直到仅剩一个和输出及其对应的进位输出。

步骤S4,将所述步骤S3得到的所述进位输出向最高位循环移1位以后的结果,以及,步骤S3得到的和输出进行模加法运算。如果步骤S1中将整数拆分成多个k位二进制数,则该步骤中将步骤S3中进行模2k-1加法运算。例如,本实施例的步骤S1中将整数拆分成8个4bit二进制数时,步骤S3中则对应进行模15加法运算。

步骤S5,将步骤S3模加法运算的结果输出作为余数结果。

4bit的3:2CSA的运算可以表示为:

inputA[3:0]+inputB[3:0]+inputC[3:0]=SUM[3:0]+{CARRY[3:0],1'b0};

其中,inputA[3:0]、inputB[3:0]、inputC[3:0],分别表示输入3:2CSA的三个4bit二进制数A、B、C;

SUM[3:0]表示3:2CSA的和输出;

CARRY[3:0]表示3:2的进位输出;

{CARRY[3:0],1'b0}表示将CARRY[3:0]朝着最高位方向移1位的结果。

由于(inputA[3:0]+ inputB[3:0]+ inputC[3:0])的余数码和(SUM[3:0]+{CARRY[3:0],1'b0})的余数码是相同的。结合公式

Figure 872998DEST_PATH_IMAGE007

可以得知,模加法运算中{CARRY[3:0],1'b0}与 {CARRY[2:0], CARRY[3]}的余数码一致。基于以上推导,可以采用CSA代替模加法器搭建树结构,仅在最顶层的输出级采用一个模加法器进行模加运算即可。

实施例二

一种基于并行循环压缩的余数运算电路,用于实现实施例一所述的余数运算方法,可用于对整数乘法部件进行余数校验。如图2所示,本实施例的余数运算电路包括多个输入端、一个模加法器、以及设置在该模加法器和多个输入端之间的一层或多层CSA组件。多个输入端,分别用于输入整数拆分成的多个同位宽的二进制数,例如在本实施例中用于输入32位整数拆成的8个4bit二进制数。每一层CSA组件包括一个或者多个CSA器件,例如,为3:2CSA或者为4:2CSA。本实施例中最低层的CSA组件包括两个3:2CSA器件,倒数第二层CSA组件也包括两个3:2CSA器件,倒数第三层CSA组件包括一个3:2CSA器件,最上层CSA组件也包括一个3:2CSA器件。

最上层的进位保留加法器的两个输出连接至模加法器的输入,模加法器对两个输入进行模加法运算以后的输出结果作为被拆分的整数的取余结果被输出。当输入的二进制数为整数拆分成的多个k位二进制数时,模加法器相应地为模2k-1加法器。

在输入端和模加法器之间的CSA器件的搭建规则为:其余每一层CSA的和输出SUM[3:0]作为下层CSA(下一层CSA或者下面第二层CSA)的输入,其余每一层CSA的进位输出CARRY[3:0]向最左循环移动1位以后(即{CARRY[2:0], CARRY[3]})作为下一层CSA的输入。例如本实施例中,将8个输入端输入的二进制数每3个一组(总共两组,并剩余两个输入端)输入到最底层的同一个3:2CSA中;最底层的两个3:2CSA的和输出SUM[3:0]、最底层两个3:2CSA的进位输出CARRY[3:0]向最左循环移动1位以后(即{CARRY[2:0], CARRY[3]})、以及剩余的两个输入端输入的2个二进制数据每3个一组,总共分为两组输入到倒数第二层的两个3:2CSA;倒数第二层的两个3:2CSA的和输出SUM[3:0]、最底层两个3:2CSA的进位输出CARRY[3:0]向最左循环移动1位以后(即{CARRY[2:0], CARRY[3]}),总共分为一组输入到倒数第三层的两个3:2CSA中;倒数第三层的3:2CSA的和输出SUM[3:0]、进位输出CARRY[3:0]向最左循环移动1位以后(即{CARRY[2:0], CARRY[3]})、以及倒数第二层剩余的一个输出总共分为一组输入到最顶层的3:2CSA中;最顶层的3:2CSA的和输出SUM[3:0]、进位输出CARRY[3:0]向最左循环移动1位以后输入到模加法器中。

虽然描述了本发明的实施方式,但是本领域普通技术人员可以在所附权利要求的范围内做出各种变形或修改。

7页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种无人机SDK开发平台的构建方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类