加减法无差异并行计算的cbsa硬件加法器及设计方法

文档序号:6459859阅读:287来源:国知局
专利名称:加减法无差异并行计算的cbsa硬件加法器及设计方法
技术领域
本发明涉及数字处理系统中,同时实现具有超长位的加法和减法的并行设 计方法,特别是涉及对加法和减法进行无差异并行计算的硬件加法器及其设计 方法。
背景技术
许多数字处理系统中,需要进行具有超长位的加法和减法计算(此处位和 比特具有相同含义)。例如,信息安全系统中的公开密钥密码体制,如RSA和 ECC算法,其实现涉及到几百位甚至到几千位以上的加法和减法运算。而普通 计算机中CPU的基本运算单元只有几十位(如8、 16、 32位等),利用它们来 处理如此大数的加法或减法将非常慢,显然不能满足应用中的快速响应要求。 因此,为了提高系统处理速度,需要设计具有超长位的加法和减法的硬件加法 器,利用它来协助完成公开密钥密码体制的高速实现。提高系统处理速度,通 常利用硬件部件实现复杂算法的计算。实际中,算法运算最终都转化为反复的 加法和减法等基本运算。加法器是计算机的核心部件之一,加法器处理加减法 的速度决定着计算机的运算性能。而任何加法器的计算性能,都取决于所它所 使用的计算方法。
利用硬件加法器来高速实现超长位的加法计算,常使用比特并行计算技 术。目前实现并行加法计算的加法器,特指进位保存加法器(Carry Save Adders), 以下简记为CSA,基本思想是按比特"异或"、"或"以及"与"等简单逻辑并 行实现任意多次无符号整数的加法操作。每次CSA运算,都输出两个数据,一 个含各位的进位信息C,另一个含各位的异或信息S。因为CSA实现了免链接 进位加法,特别适合超长数据的硬件加法器设计。设通常使用的处理器单元为 m比特,进行L比特长度的CSA运算,则其速度是使用通常加法处理器的L/m 倍以上。
若用标记'@'表示按位'异或'操作,'A'表示按位'与'操作,'V'表示按位' 或,操作。对输入的非负整数x,r,z,进行CSA计算CSA(U Z) = (C,外输出
为c和s,满足2C + s-z+;r+z,则CSA的计算公式为
从公式中可见,以上计算中的各运算操作均可以按位(即按比特)并行方式进
行,任意比特长度的三个非负整数的CSA加法,可在一拍内完成计算。对于需 反复进行许多次加法的操作,可由CSA高效地完成;其缺点是只能用于无符号 整数的并行加法,无法对有符号数进行比特并行计算,即无法做减法。
另外,为保证公开密钥密码体制的安全,应设法减少或避免其实现过程的 信息泄露(比如,利用运算过程中泄露的时间、能量信息,可分析出密钥)。 而计算过程中的比较、进位、借位等操作,常常被攻击者利用来进行时间、能 量信息分析使用。公开密钥密码体制实现,涉及到加法和减法运算,不能单纯 由CSA来完成。因此,在公开密钥密码体制的现有加速器硬件实现中,为适用 减法操作,不可避免的在计算过程中引入了比较、进位、借位等操作,带来了 安全方面的不利影响。为此,寻找、设计、实现高度并行的、统一加法和减法 操作的、超长位加法器硬件,可以有效避免计算过程的信息泄露,成为人们向 往的目标。
统一实现加法和减法操作的通用方法,是使用补运算规则进行的通常加 法,但它不是并行方法。另一个尝试并行处理加法和减法操作的较好方法,为 Radix-2 Signed Digit方法,以下将其简称为SD2,它是利用基数为2的有符号 数字编码技术,实现加法和减法的有限并行操作。SD2使用数字集合^,0,U, 其中1~表示-1。 一个SD2整数^["w…"w。] (^£{1~, 0, 1〉)的值为i:K),…,n-i a,.2'。设万H.Wo], S=[^ j"o],计算5=^+5。任意两个SD2数爿和B 进行加法时,输出结果中的每个数字A都需査找一个规则表得到。依赖这个规 则表,每个数字A能根据被操作数中前两个数字^2和"w以及&2和Z^计算 出来。由于这种前向依赖关系,SD2方法不是按位或比特运算的并行方法。
此外,可统一实现加法和减法运算的方法还有RSD方法,但它不是并行方 法。其思想是 一个整数X表示成两个正整数x+和X-,并且有1=^-义。设义 =(:c+, r= (y+,7.),贝U Z画r = (jc+, x.) - (y+,乂) = (x+, x.) + (y.,_y+), X+r = (x+, x_) + (y+,力。RSD方法可根据x+和x.的最高位直接进行两个整数的比较,省去了减 数补处理问题,并且不用担心操作过程中的进位和借位问题。其缺点是,必须
对分裂的两个正整数X+和JC进行正负标记,在反复进行加法和减法处理时,数
据需不断地进行比较并在正负标记间进行转化。若利用CSA并行技术实现RSD, 则各正负标记需在两个独立的CSA处理模块间进行大流量的迁移,其硬件实现 效率很低。
概括起来,SD2方法具有前向比特有限依赖性(需引入査表等),降低了 硬件并行处理效率,增大了硬件实现难度;而补运算方法和RSD方法不具有并 行性。通过以上分析表明,目前用来统一实现加法和减法操作的各种方法及其 硬件加法器,都不是真正意义上的加法和减法无差异设计、以及严格按比特进 行的并行计算。如何实现加法和减法的无差异化处理,并严格按比特进行并行 计算,又能满足计算过程的随机性,即是本发明要解决的技术难题。

发明内容
本发明的目的在于为用户提供一种加减法无差异并行计算的加法器及其 设计方法,实现对加法和减法无差异处理和并行计算。这种加法器严格按比特 并行方式实现任意整数的加法和减法操作,且可提供计算过程的随机性。适用 于信息安全系统公开密钥密码体制中,涉及超长位的加减法高速计算,达到同 时提高系统运算效率与安全性的能力。
本发明的目的是通过实施下述技术方案实现的
加减法无差异并行计算的CBSA硬件加法器,其特征在于至少由64位并 行的单比特逻辑计算的单元加法器模块组成;其中每位单元加法器模块,包括 有如下逻辑结构
输入比特分别为二义,么的3个无符号数寄存器,
输入比特分别为^的3个冗余数寄存器,
分别与3个i,义,i无符号数寄存器连接、进行(二A义)V(二A么)V(义Ai) 逻辑运算、输出该位进位信息d)尸(iA义)V(^Ai)V(义Ai)的逻辑单元-l,
分别与3个i,义,i.无符号数寄存器连接、进行二. 义. S逻辑运算、输出 该位异或信息s0,-i ,,i的逻辑单元-2,
分别与3个^;i冗余数寄存器连接、进行^ 5@&逻辑运算、输出该 位异或信息sl^^i^M勺逻辑单元-3,
分别与3个i,^, 5冗余数寄存器连接、进行(^AA)V&A^)V&A^)逻 辑运算、输出该位进位信息cl尸(;A5^)VftA5,)V&A^)的逻辑单元-4,
分别与逻辑单元-2和逻辑单元-3连接、将输入的s0,与A进行( (^A( W0》逻辑运算、输出结果为t( (化A("0,)))的逻辑单元-5,
分别与逻辑单元-1和逻辑单元-5连接、将输入的d),与^进行逻辑"与" 运算、获取二= cO,.A 1 A ("0,)))的逻辑与门-1 ,
分别与逻辑单元-2和逻辑单元-5连接、将输入的sO,与^进行逻辑"与" 运算、获取i= A A H> 1, A (~ )))的逻辑与门-2 ,
分别与逻辑单元-3和逻辑单元-5连接、将输入的",与^进行逻辑"与" 运算、获取^^l,A( (化A( sO,)))的逻辑与门-3,
分别与逻辑单元-4和逻辑单元-5连接、将输入的cl,与^进行逻辑"与" 运算、获取3尸cl,A( (化A( sO,)))的逻辑与门-4,
与逻辑与门-1连接的输出比特^寄存器,
与逻辑与门-2连接的输出比特;,寄存器,
与逻辑与门-3连接的输出比特S寄存器,
以及与逻辑与门-4连接的输出比特3,.寄存器;
所述二,么.为任意二进制整数义=(±n…士x! ±xo), r = (±n…士力 ±力),Z= (士z^…士z! ±z0)的无符号数》=(a^…x、x;), f-(j^…、少o), 2= (二, ..Uo)的第/比特,其中壬,£{0,1}, ,,G{0,1},么E(0,1〉; / = 0,1,..""-1,
w为大于64的任意正整数;所述无符号数i、六2为去掉对应x、 r、 z二进
制数中各数字前面的所有正负号后的数表式;
所述i,^为任意二进制整数义=(土x^…士^ ±xo), 7= (±>vi…土少i ±;;0) , Z= (士z"-i…土^ ±z0)的冗余凄史f =... ii)), ,= (^"-i…j^i夕o),
…"o)的第/比特,其中{0,1}, y二e {0,1}, £,E {0,1}; z. = 0,1,…,"画l, "为大于64的任意正整数;所述冗余数f、 f、之为把对应义、7、 Z二进制数 中的各数字前面符号为负的比特标记为1,否则标记为0,而得的数表式;
其中运算符'A'表示按位逻辑'与'运算,,V'表示按位逻辑'或'运算,, ' 表示按位逻辑,异或,运算,"~"表示按位逻辑'取反'运算(即1=~0, 0 = 1)。
利用所述CBSA硬件加法器构成的其它加法器
① 利用所述CBSA硬件加法器构成的实现模乘运算计算单元(r+ a" + & 7V)= (n + 72+Zl,^2)的四进二出加法器,包括有
4个分别存贮数据n, 72,11,^2的输出寄存器, 分别与输出寄存器n, 72, %1连接的第一级CBSA硬件加法器, 分别与第一级CBSA硬件加法器两输出端及^2输出寄存器连接的第二级 CBSA硬件加法器,
与第二级CBSA硬件加法器两输出端连接的输出寄存器(71, 72)单元, 以及控制输出寄存器(n, 72)单元的elk系统时钟信号和rst加法器复位信号。
② 利用所述CBSA硬件加法器构成的实现模乘运算计算单元(n + 72 + 化Bl+a"2 + ^A0的五进二出加法器,包括有
5个分别存贮数据n, 72, a^2,仏W的输出寄存器, 分别与输出寄存器71, 72, 连接的第一级CBSA硬件加法器, 分别与第一级CBSA硬件加法器两输出端及"》2输出寄存器连接的第二级 CBSA硬件加法器,
分别与第二级CBSA硬件加法器两输出端及^V输出寄存器连接的第三级 CBSA硬件加法器,
与第三级CBSA硬件加法器两输出端连接的输出寄存器(71,72)单元, 以及控制输出寄存器(n, 72)单元的elk系统时钟信号和rst加法器复位信号。
实现本发明所述加减法无差异并行计算的CBSA硬件加法器的设计方法, 有以下步骤
第一步,确定CBSA加法器的设计目标,是实现计算CBSA(X, 7, Z) =(C, 5), 并满足C+S:X+y+Z,为此
①把任意整数义,r,z用2进制数表示成;^(士x^…士;d ±x0), ;r=(±
;v卜.士力±^), Z^土^…土^ ±z0),其中x,e(0,1〉, y,e{0,l}, z,e(o,l},
并且有%=1:1=0,..,1(±1,..2') , r-i:H),…,n.K士y,.2') , z=Ei=0,.."n—"士z,.2');
②对于任意输入的三个2进制数义(士;^…士;c! ±x0), y-(士j"-i…士 》士w)和Z二(土^-卜.士a ±^),经cbsa计算后其输出结果(c, s)同样是2 进制数C-(士c".L..士q 士Co)和S^士S^…士^ ±s0); 第二步,^l置二进制数无符号数表式与冗余数表式
1) 设置二进制数无符号数表式
对任意二进制整数义=(±^.1...±& ±x0),去掉各数字前面的所有正负号, 得到义的无符号数表式,将其记为》-(二-L.,:^0),其中二e(0,lh
2) 设置二进制数的冗余数表式
对任意二进制整数^=(±斗1...±义1 ,把x,的各数字前面符号为负的
比特标记为1,否则标记为0,则得到I的冗余数表式,并记为X:(L! ...^50),
第三步,对输入任意位长的整数《y和Z进行cbsa计算 将输入任意位长的二进制整数《F,Z的无符号数表式和冗余数表式,分
别记为龙l; t
cbsa(兀r, Z) =(C, 6)的运算过程如下
(1) 首先并行计算(co,幼)csA(;t么i)和(ci,5i) = csA(l;f,2),
CSA是熟知的进位保存加法器的运算,得到
CO = (c0^…c0! c00), S0= d…A s00), c0,, sO,e {0,1};
(2) 给出cbsa(z, 7,z)=(c,5)结果的无符号数表式和冗余数表式,分别记 为e和G,以及》和^其中
d=(; -i... Ji;o),》=0"—wo), c"&e(0,1) …^0),…^;o), &,;,e{o,i}
(3) 利用上述运算过程(1)得到的结果C0,幼,C1,51的各比特数字,按 如下计算得到cbsa的输出《< , & S的各比特数字
^cO,A( 01,A("0,.))), z' = 0,…,"-l ;,;sO,A( 01,A(D)), ;. = 0,…,w画l . —cl,A( Csl,.A("0,.))), / = 0,…,"-l .<formula>formula see original document page 14</formula>
其中运算符'~'表示按位'取反,(即1=~0, 0 = ~1), ,A,表示按位,与'操 作;考虑到信息安全系统公开密钥密码体制中,涉及超长位的加减法高速计算 需要,正整数"至少取64;可见,在CBSA计算中,第(3)步的运算完全按比 特方法并行进行, 一次CBSA运算,各单比特逻辑单元可在一个节拍内同时完 成。
第四步,CBSA输出数据的恢复处理
实际上,系统进行有限次CBSA计算后,利用其最后一次计算结果C 》,按如下方法恢复出C-(士c^…土c 士co)和5^(士^m…土a ±化)
(1) <formula>formula see original document page 14</formula>
(2) 判断符号若&=0,则。前面的符号为'+ ',否则c,前面的符
号为、';若;,=0,则a前面的符号为< +否则a前面的符号为'-'。 按第四步(1)与(2)的方法,即得到cbsa(X, y,Z)的输出C和S;
(3) 再利用通常方法得到最终结果『=C+S。 从以上各步可以明显看出实现CBSA(AT,r,Z)计算,关键是按第三步的
方法进行下面的简单逻辑运算
<formula>formula see original document page 14</formula><formula>formula see original document page 14</formula><formula>formula see original document page 14</formula><formula>formula see original document page 14</formula><formula>formula see original document page 14</formula><formula>formula see original document page 14</formula><formula>formula see original document page 14</formula><formula>formula see original document page 14</formula>依据这些逻辑运算,可以进行下述CBSA硬件加法器的设计
①依据计算的输入数据二夂,二, ^设计相应的寄存器;
分别存贮数据二.,义,i的三个寄存器称为无符号数寄存器,分别存贮数据 S,的三个寄存器称为冗余数寄存器;
② 依据输入数据^,,^4 ,进行(^,A义)V(^,Ai)V(义Ai)逻辑运算,输 出数据c0,.,设计称为逻辑单元-1的简单逻辑电路结构,并建立二.,义,i.寄存器 与逻辑单元-1的连接,得到逻辑单元-1分别与二,力,i.三个寄存器连接的电路 结构;
③ 依据输入数据4力,i.,进行二④5^i逻辑运算,输出数据sOi.,设
计称为逻辑单元-2的简单逻辑电路结构,并建立A,义,i.寄存器与逻辑单元-2 的连接,得到逻辑单元-2分别与夂, i.三个寄存器连接的电路结构;
④ 依据输入数据二^^进行;.④A④^逻辑运算,输出数据",.,设计称 为逻辑单元-3的简单逻辑电路结构,并建立i, 5,寄存器与逻辑单元-3的连 接,得到逻辑单元-3分别与;.,U,.三个寄存器连接的电路结构;
⑤ 依据输入数据;.,;,,^进行(三AA)V&.Ai)V&.A^h逻辑运算,输出 数据cl,.,设计称为逻辑单元-4的简单逻辑电路结构,并建立;5,i寄存器与 逻辑单元-4的连接,得到逻辑单元-4分别与义,艮三个寄存器连接的电路结 构;
⑥ 依据输入数据s0,.和化.,进行Ksl,.A( s0,)))逻辑运算,输出数据 6,设计称为逻辑单元-5的简单逻辑电路结构,并建立逻辑单元-5分别与逻辑 单元-2和逻辑单元-3的连接,得到逻辑单元-5分别与逻辑单元-2和逻辑单元-3 连接的电路结构;
⑦ 依据输入数据cO,和^,进行cO,A( (sl,.A( s0,)))逻辑运算,输出数 据S,,设计称为逻辑与门-1的简单逻辑电路结构,并建立逻辑与门-1分别与逻 辑单元-1和逻辑单元-5的连接,得到逻辑与门-1分别与逻辑单元-1和逻辑单 元-5连接的电路结构;
⑧ 依据输入数据sO,和^,进行^A( Cyl,.A("0,)))逻辑运算,输出数据 设计称为逻辑与门-2的简单逻辑电路结构,并建立逻辑与门-2分别与逻辑
单元-2和逻辑单元-5的连接,得到逻辑与门-2分别与逻辑单元-2和逻辑单元-5 连接的电路结构;
⑨ 依据输入数据",.和』进行sl,.A( (A.A("0,.)))逻辑运算,输出数据 ,,设计称为逻辑与门-3的简单逻辑电路结构,并建立逻辑与门-3分别与逻辑 单元-3和逻辑单元-5的连接,得到逻辑与门-3分别与逻辑单元-3和逻辑单元-5 连接的电路结构;
⑩依据输入数据cl,和^进行cl,A( (化.A("0,.)))逻辑运算,输出数 据3,,设计称为逻辑与门-4的简单逻辑电路结构,并建立逻辑与门-4分别与逻 辑单元-4和逻辑单元-5的连接,得到逻辑与门-4分别与逻辑单元-4和逻辑单 元-5连接的电路结构;
依据逻辑与门-l输出数据三,逻辑与门-2输出数据^,逻辑与门-3输出数 据^,逻辑与门-4输出数据^设置分别存贮这些数据的输出比特寄存器;
完成这些步骤,就得到了实现加减法无差异并行计算的CBSA硬件加法器。
由这种加法器结构看出对输入任意位长的整数X,F和Z,进行加减法无 差异并行CBSA计算,实质上就是利用二进制输入数据按位进行的逻辑操作, 得到并行的n个单比特逻辑计算的单元加法器模块,每个单元加法器模块的硬 件电路组成由图1给出,而图2给出了 n比特并行计算的加法器模块结构图。
本发明的突出优点在于
实现了加法和减法的无差异处理和并行计算。其特点可概括为严格按比
特并行方式实现任意整数的加法和减法操作,且可提供计算过程的随机性。特 别适用于需要进行超长位加减法计算的数字处理系统,如利用本发明的加法器 协助完成公开密钥密码体制的安全高速实现,可以大大提高公开密钥密码实现 的效率和安全性。
具体而言,本发明给出的对加法和减法进行无差异并行计算的硬件加法器
及其设计方法,其主要优点有
(1) 、可无差异地进行超长整数的加法和减法操作,适应任何整数作为输 入,以简单逻辑进行加法和减法的高速并行计算。在需要大量进行加法和减法
的运算处理系统中,若利用CSA进行并行计算,则需对遇到的减法操作进行单 独处理,明显地将减低了并行计算效率。本发明CBSA将加减法统一进行并行 计算,避免了加减法之间的转换处理过程,其运算效率可得到明显改善。
(2) 、本发明中给出的关于数据的无符号数表式和冗余数表式,可以随机 选择不同的无符号数和冗余数。对于不同的无符号数和冗余数选择,将得到
CBSA两个输出值的不同组合,这使得攻击者将无法准确探测或获取算法在运算 过程中的相关信息。因此,本发明中给出的CBSA加法器可以提供计算过程的随 机性。
(3)、利用本发明CBSA加法器,进行加法和减法无差异运算和随机并行 计算能力,免除了通常加法运算与减法运算间的比较、进位、借位、条件控制 等操作,可显著提高硬件加法器抗物理攻击能力。


图1是本发明单比特逻辑计算的单元加法器计逻辑结构图。 图2是本发明n比特并行计算的加法器组成图。
图3是进行超长比特模幂运算中反复调用计算单元(71+^6 +仏局=(n +
72 + + a"2 +仏AO的5进2出加法器设计框图。
图4是用来计算(r+ +仏AO = (71 + 72 +X1 的4进2出加法器设
计框图。 具体实施例
一种加减法无差异并行计算的CBSA硬件加法器,至少由64位并行的单比 特逻辑计算的单元加法器模块组成;其中每位单元加法器模块,具有如下逻辑 结构
输入比特分别为^么,i的3个无符号数寄存器, 输入比特分别为i A 5,的3个冗余数寄存器,
分别与3个4 ,,,么.无符号数寄存器连接、进行(二.A,,)V(二Ai)V(么Ai) 逻辑运算、输出该位进位信息cO尸(壬,A,,)V(二A么.)V(义A么)的逻辑单元誦l,
分别与3个二,么,i无符号数寄存器连接、进行^@义 么逻辑运算、输出 该位异或信息sO产二 @义 i的逻辑单元-2,
分别与3个i,;,,5,.冗余数寄存器连接、进行i^;^i逻辑运算、输出该 位异或信息sl尸ie;,ei的逻辑单元-3,
分别与3个i,A, i.冗余数寄存器连接、进行(iA^)V(iAi)V&Ai)逻 辑运算、输出该位进位信息cl产(iA^)V(iAi)V&A^)的逻辑单元-4,
分别与逻辑单元-2和逻辑单元-3连接、将输入的数据^与sl,进行( (AA("O,)》逻辑运算、输出结果数据为^( (化.A( W)》的逻辑单元-5,
分别与逻辑单元-1和逻辑单元-5连接、将输入的数据c0,与f,进行逻辑 "与"运算、获取结果数据J尸cO,A( (sl,A("0,.)))的逻辑与门-l,
分别与逻辑单元-2和逻辑单元-5连接、将输入的数据sO,与f,进行逻辑 "与"运算、获取结果数据;尸sO,AK^.A("0,.)))的逻辑与门-2,
分别与逻辑单元-3和逻辑单元-5连接、将输入的数据sl,与^进行逻辑 "与"运算、获取结果数据^sl,A( (sl,A("0,)))的逻辑与门-3,
分别与逻辑单元-4和逻辑单元-5连接、将输入的数据cl,与^进行逻辑 "与"运算、获取结果数据3尸dA( (化A( A)))的逻辑与门-4,
与逻辑与门-l连接的输出比特三寄存器,
与逻辑与门-2连接的输出比特二寄存器,
与逻辑与门-3连接的输出比特S寄存器,
以及与逻辑与门-4连接的输出比特&寄存器;
所述i,,,,乏为任意二进制整数义=(士x^…士:d ±x0), 7= (±n…士
乃土yo) , z=(±z "…士a ±z。)的无符号数》(x^」^0), :Hj^ .;;>。),2=
(二!,.Uo)的第/比特,其中乏£{0,1}, ,,e{0,1}, i.e{0,l}; / = 0,1,...,"國1, "为大于64的任意正整数;所述无符号数》、f、 2为去掉对应Z、 7、 Z二进 制数中各数字前面的所有正负号后的数表式;
所述ii,》,i为任意二进制整数X^士x^…土;d 士xo), 7=(±;; -卜.± 力±_y0) , Z-(士z"-i…士^ ±z0)的冗余凄tX-(三-i…^i)), P=(^-i…j ifo)' 2《J")的第,.比特,其中二£{0,1},《^{0,1},£^{0,1};/ = 0, 1,…,"-L "为大于64的任意正整数;所述冗余数f、 f、之为把对应X、 7、 Z二进制数 中的各数字前面符号为负的比特标记为1,否则标记为0,而得的凄t表式;
其中运算符'A'表示按位逻辑'与'运算,,V'表示按位逻辑'或'运算,, @'表示按位逻辑'异或,运算," "表示按位逻辑'取反'运算(即1=~0,0 = ~1)。
本发明加减法无差异并行计算加法器的设计方法,有以下步骤 第一步,确定CBSA加法器的设计目标,是实现计算CBSA(兀r,Z)=(C,5),满 足C+S:X+7"+Z,为此
① 把任意整数Xr,Z用2进制数表式成义-(士j^…士:q ±x0), 7= (±》-i .. ±力±_y0), Z^士^"…士^ ±z0),其中^{0,1}, y,e{0,l}, z,E{0,l},并且
② 对于任意输入的三个2进制数Z-(士x^…士;q ±x0), 7= (士少^ ...士力 ±为)和Z= (±^ ...±Zl ±z0),经cbsa计算后其输出结果同样是2进制数C = (士c""…士d 土co)和S^土vi…士A ;
第二步,设置二进制数无符号数表式与冗余数表式
1) 设置二进制数无符号数表式
对任意二进制整数1= (士x^…士;q 士X()),去掉各数字前面的所有正负 号,得到X的无符号数表式,将其记为》=(二—.;^。),其中;,6{0,1};
2) 设置二进制数的冗余数表式
对任意二进制整数义-(士x".! ...士;d ±x0),把A的各数字前面符号为负 的比特标记为l,否则标记为0,则得到义的冗余数表式,并记为f = ft^ ..
第三步,对输入任意位长的整数兀r和Z进行cbsa计算
将输入任意位长的整数^ r, Z的无符号数表式和冗余数表式,分别记为
》,1;《F,么z,
CBSA(X, 7, Z) =(C, 5)的运算过程如下
(1) 首先并行计算(co,so) = csa(尤A》和(ci,si) = csA(l;f,2),
CSA是熟知的进位保存加法器的运算,得到
C0:d…cO!cOo), Id…s0"0。), c0,,s0,G(0,l); C卜(d…cl!cl。), 51=01^…;yl"l0), cl,,化e(0,l);
(2) 给出cbsa(;t, r, z) =(c, 5)结果的无符号数表式和冗余数表式,分别记 为d和A以及舒nS;其中
d^("d ... Ji二), 5-(;"國i…";o),三,;,G{0,1}
…^;。),》=(:…3"e(o"
(3) 利用上述运算过程(1)得到的结果CO,幼,Cl, 51的各比特数字,按 如下计算得到cbsa的输出e, C & S的各比特数字<formula>formula see original document page 20</formula>;产sl,A( Csl,A("0,))), 一0,…,w画1 . 其中运算符表示按位,取反,(即1= 0, 0 = ~1), ,A'表示按位,与'操 作;考虑到信息安全系统公开密钥密码体制中,涉及超长位的加减法高速计算 需要,"至少取64;可见,在CBSA计算中,步骤三的运算完全按比特方法并 行进行, 一次CBSA运算可在一个节拍内同时完成。 第四步,CBSA输出数据的恢复处理
实际上,系统进行有限次CBSA计算后,利用其最后一次计算结果d, ^ & S, 按如下方法恢复出C-(土c"d…土c ±c0)和5^(土^-i…士^ ±^):
(1)<formula>formula see original document page 20</formula>(2) 判断符号若二=0,则c,前面的符号为'+ ',否则C面的符号为 若^=0,则^前面的符号为'+ ',否则A前面的符号为'-,。
上面获得CBSA(I, r, Z)的输出c和&
(3) 再利用通常方法得到最终结果『-C+5"。
从以上各步可以明显看出实现CBSA(I,y,Z)计算,关键是按第三步的方 法进行下面的简单逻辑运算
<formula>formula see original document page 20</formula>l . 依据这些逻辑运算,可以进行下述CBSA硬件加法器的设计
① 依据计算的输入数据i,夂,i, ^义,;,设计相应的寄存器;分别存贮数据 i义,i的三个寄存器称为无符号数寄存器,分别存贮数据i,;,, i的三个寄存 器称为冗余数寄存器;
② 依据输入数据4,,,i ,进行(二A,,)V(iAi)V(义Ai)逻辑运算,输 出数据c0,,设计称为逻辑单元-1的简单逻辑电路结构,并建立4义,i寄存器 与逻辑单元-1的连接关系,得到逻辑单元-1分别与i.,义,么.三个寄存器连接的 电路结构;
③ 依据输入数据4义,i ,进行;^义 么逻辑运算,输出数据^,设计 称为逻辑单元-2的简单逻辑电路结构,并建立i,么,i寄存器与逻辑单元-2的 连接,得到逻辑单元-2分别与i, ,,, i三个寄存器连接的电路结构;
④ 依据输入数据^^,S,,进行^ ;,@5.逻辑运算,输出数据",,设计称 为逻辑单元-3的简单逻辑电路结构,并建立二 ;,., 5,寄存器与逻辑单元-3的连 接,得到逻辑单元-3分别与;.,;^三个寄存器连接的电路结构;
⑤ 依据输入数据入;^进行(^A;,)VftA5,)V&A^),.逻辑运算,输出 数据cl,.,设计称为逻辑单元-4的简单逻辑电路结构,并建立i,U,寄存器与 逻辑单元-4的连接,得到逻辑单元-4分别与i., ;,, S,三个寄存器连接的电路结 构;
⑥ 依据输入数据W和",,进行( (sl,A(D))逻辑运算,输出数据 A.,设计称为逻辑单元-5的简单逻辑电路结构,并建立逻辑单元-5分别与逻辑 单元-2和逻辑单元-3的连接,得到逻辑单元-5分别与逻辑单元-2和逻辑单元-3 连接的电路结构;
⑦ 依据输入数据cO,和^进行d),.A( (化.A("0,)))逻辑运算,输出数 据^,设计称为逻辑与门-1的简单逻辑电路结构,并建立逻辑与门-l分别与逻 辑单元-1和逻辑单元-5的连接,得到逻辑与门-1分别与逻辑单元-1和逻辑单 元-5连接的电路结构;
⑧ 依据输入数据sO,和^,进行^A( (化.A("0,)))逻辑运算,输出数据 ;,,设计称为逻辑与门-2的简单逻辑电路结构,并建立逻辑与门-2分别与逻辑 单元-2和逻辑单元-5的连接,得到逻辑与门-2分别与逻辑单元-2和逻辑单元-5 连接的电路结构;
⑨ 依据输入数据sl,和&进行化A( (化A("0,)))逻辑运算,输出数据 ^,设计称为逻辑与门-3的简单逻辑电路结构,并建立逻辑与门-3分别与逻辑 单元-3和逻辑单元-5的连接,得到逻辑与门-3分别与逻辑单元-3和逻辑单元-5 连接的电路结构;
⑩ 依据输入数据cl,和6,进行cl,.A( (化.A("0,.)))逻辑运算,输出数 据二,设计称为逻辑与门-4的简单逻辑电路结构,并建立逻辑与门-4分别与逻 辑单元-4和逻辑单元-5的连接,得到逻辑与门-4分别与逻辑单元-4和逻辑单 元-5连接的电路结构;
依据逻辑与门-l输出数据二,逻辑与门-2输出数据二,逻辑与门-3输出数 据i,逻辑与门-4输出数据&,设置分别存贮这些数据的输出比特寄存器; 完成这些步骤,就得到了实现加减法无差异并行计算的CBSA硬件加法器。 下面结合附图1和附图2给出本发明中的CBSA硬件加法器设计说明。 图1所示本发明的单比特逻辑计算的单元加法器,标记100 105为该加 法器的单比特计算逻辑的6个输入比特i,义,i.,三.,;5,.的寄存器,其中i, ,,, zi. 寄存器为无符号数寄存器,^A,;,寄存器为冗余数寄存器;106为逻辑单元1 , 该单元将二.,义,^寄存器输出的无符号数i, ,,, zi进行(iA义)V(二.Ai)V(义A么) 逻辑运算、输出数据c^ ; 107为逻辑单元2,该单元将"夂,:^寄存器输出的无 符号数i,义,z;进行i.e,^么逻辑运算、输出数据sO" 108为逻辑单元3,该 单元将i,;,, i冗余数寄存器输出的冗余数;,A i进行 A ^逻辑运算、输 出数据109为逻辑单元4,该单元将^;,,5,冗余数寄存器输出的冗余数 进行(^A^)V&A5,)V&A5,)逻辑运算、输出数据cl" lll为逻辑单 元5,该单元将逻辑单元-2和逻辑单元-3输出的A与A进行( Csl,A("0,)》 逻辑运算、输出数据^( (化A( sO,))); 112 115为逻辑,与,门,其中112 为逻辑'与'门1,它将逻辑单元-1和逻辑单元-5输出的d),与f,进行逻辑"与" 运算、获取数据J尸cO,A( (sl,A( ^.))) ; 113为逻辑与门-2,它将逻辑单元 画2和逻辑单元-5输出的s0,与^进行逻辑"与"运算、获取数据;尸^AKs1,. A( ^))); 114为逻辑与门-3,它将逻辑单元-3和逻辑单元-5输出的",与^ 进行逻辑"与"运算、获取数据^sl,A( (化.A( ^),))) ; 115为逻辑与门-4, 它将逻辑单元-4和逻辑单元-5输出的cl,与^进行逻辑"与"运算、获取数据
3尸cl,.A( (sl,.A( s0,.))) ; 116 119为该加法器的单比特计算逻辑的4个输出 比特4;""的寄存器;其中,运算符,A,表示逻辑,与,运算,运算符,V'表 示逻辑'或,运算,运算符'@'表示逻辑'异或'运算,运算符" "表示逻辑,取 反'运算。
图2是本发明n比特并行计算的加法器组成图,特别适于超长位加减法无 差异并行计算,图中标记200 203为CBSA硬件加法器三个输入数据U,Z 的并列n个输入比特单元;204 207为并列n个输入比特单元的比特无符号数 和冗余数寄存器;208 211为并列n个CBSA单比特计算逻辑,其输入由204 207各寄存器单元给出,输出由212 215各寄存器单元给出;212 215为并 列n个CBSA单比特计算逻辑的输出;216 219为CBSA硬件加法器两个输出数 据C, S的并列n个输出比特单元。
如图2所示,本发明加减法无差异并行计算的CBSA硬件加法器,由n个 并列的如图l所示的单比特逻辑计算的单元加法器模块组成,200、 204、 208、
212、 216构成了其中第一块单比特逻辑计算的单元加法器模块,201、 205、 209、
213、 217构成了其中第二块单比特逻辑计算的单元加法器模块,依此类推,203、 207、 211、 215、 219构成了其中第n块单比特逻辑计算的单元加法器模块;由 于各模块运算完全独立,因而CBSA硬件加法器严格按比特并行方式实现任意 整数的加法和减法操作。由于208 211的n个CBSA单比特计算逻辑的输入 数据为无符号数和冗余数,可随意组合,因此CBSA硬件加法器可提供计算过 程的随机性。
下面,我们进一步给出本发明关于CBSA硬件加法器组合设计与应用说明。 公开密钥密码体制的核心运算单元,是进行超长比特数据的大数模乘运算 模块,操作数长度至少在几百比特以上。例如,ECC算法的数据运算长度至少 在200比特以上,RSA算法中的数据运算长度至少在1024比特以上。
利用熟知的Montgomery算法进行模乘运算。若固定模数为N,设模乘运算 的输入数据为^和凡输出数据为r,其中^ = a"Q)。则依赖于各比特 值化和参数仏.,模乘运算过程需反复调用n次计算单元(r+"" +仏A0/2,其
中^,仏6{-1,0,1},仏为r最低位的值,r为输出单元,初始值r-o。将初始 输入数据万和r都随机分裂成两个部分万=^1+32, r=n+72,则可以设计
由三个CBSA加法器组合的5进2出加法器(如图3所示),用来计算(r+ + 仏AO = (71 + 72 + + ""2 +《,JV),其中71和72作为5进2出加法器的输出 寄存器单元。
图3中标记300 304为5进2出加法器的5个输入数据单元71, 72, fli52,仏M 305 307为三个相同的CBSA加法器单元;308为5进2出加法器的 输出寄存器单元(ri, 72); clk为系统时钟信号,rst为5进2出加法器复位信号。 利用5进2出加法器设计,可以在单个时钟周期内实现一次(7+ a" +仏AO /2 运算。系统多次调用5进2出加法器时,则寄存器单元(n, 72)的数据71和72 将反馈到5进2出加法器的输入部分;初始时取71= 0, 72= 0。
进行(r+ a" +仏A0计算,若预先计算出(Zl, J2)= CBSA(fljBl, fljB2,《,N), 则可以设计由两个CBSA加法器组合的4进2出加法器(如图4所示),用来计 算(r+ai5 +仏A0二 (71 + +刃),其中71和T2作为4进2出加法器的
输出寄存器单元。系统多次调用4进2出加法器时,则寄存器单元(n, 72)的 数据71和72将反馈到4进2出加法器的输入部分;初始时取71= 0, Z2= 0。
图4中标记400 403为4进2出加法器的4个输入数据单元71, 72, XI, Z2; 404 405为两个相同的CBSA加法器单元;406为4进2出加法器的输 出寄存器单元(71,72); dk为系统时钟信号,rst为4进2出加法器复位信号。 利用4进2出加法器设计,以及预计算CBSA(化Bl,化B2,仏N)值X1和J2,可 以在单个时钟周期内实现一次(『+ +仏AO /2运算。
与5进2出加法器比较,4进2出加法器少用到1个CBSA加法器逻辑运 算部件,因而运行一次花费的时钟周期要短。
以前关于CT+a" +仏iV)/2计算,其中的所有参数只能取非负整数。使用 本发明给出的5进2出加法器或4进2出加法器,其中的所有参数可以是任何 整数,增强了运算的适应性和安全性。利用4进2出加法器或5进2出加法器 可以在一个时钟节拍内完成两到三次的CBSA加法运算,比单纯循环调用两到 三次CBSA加法器运算节省至少1倍以上时间。如果硬件资源相对丰富时,可 考虑使用4进2出加法器或5进2出加法器。
权利要求
1、一种加减法无差异并行计算的CBSA硬件加法器,其特征在于至少由64位并行的单比特逻辑计算的单元加法器模块组成;其中每位单元加法器模块,包括有如下电路结构输入比特分别为 id="icf0001" file="A2008100460040002C1.tif" wi="14" he="5" top= "54" left = "66" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的3个无符号数寄存器,输入比特分别为 id="icf0002" file="A2008100460040002C2.tif" wi="14" he="5" top= "63" left = "65" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的3个冗余数寄存器,分别与3个 id="icf0003" file="A2008100460040002C3.tif" wi="15" he="5" top= "71" left = "55" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>无符号数寄存器连接、进行 id="icf0004" file="A2008100460040002C4.tif" wi="54" he="5" top= "71" left = "132" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>逻辑运算、输出信息为 id="icf0005" file="A2008100460040002C5.tif" wi="62" he="5" top= "79" left = "71" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的逻辑单元-1,分别与3个 id="icf0006" file="A2008100460040002C6.tif" wi="14" he="5" top= "88" left = "55" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>无符号数寄存器连接、进行 id="icf0007" file="A2008100460040002C7.tif" wi="20" he="5" top= "88" left = "131" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>逻辑运算、输出信息为 id="icf0008" file="A2008100460040002C8.tif" wi="27" he="5" top= "96" left = "35" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的逻辑单元-2,分别与3个 id="icf0009" file="A2008100460040002C9.tif" wi="14" he="5" top= "105" left = "55" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>冗余数寄存器连接、进行 id="icf0010" file="A2008100460040002C10.tif" wi="19" he="5" top= "105" left = "126" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>逻辑运算、输出信息为<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><mi>s</mi><msub> <mn>1</mn> <mi>i</mi></msub><mo>=</mo><msub> <mover><mi>x</mi><mo>~</mo> </mover> <mi>i</mi></msub><mo>&CirclePlus;</mo><msub> <mover><mi>y</mi><mo>~</mo> </mover> <mi>i</mi></msub><mo>&CircleTimes;</mo><msub> <mover><mi>z</mi><mo>~</mo> </mover> <mi>i</mi></msub> </mrow>]]></math> id="icf0011" file="A2008100460040002C11.tif" wi="27" he="5" top= "114" left = "30" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>的逻辑单元-3,分别与3个 id="icf0012" file="A2008100460040002C12.tif" wi="14" he="5" top= "122" left = "55" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>冗余数寄存器连接、进行 id="icf0013" file="A2008100460040002C13.tif" wi="53" he="5" top= "122" left = "125" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>逻辑运算、输出信息为 id="icf0014" file="A2008100460040002C14.tif" wi="63" he="5" top= "130" left = "66" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的逻辑单元-4,分别与逻辑单元-2和逻辑单元-3连接、将输入的s0i与s1i进行(~(s1i∧(~s0i)))逻辑运算、输出信息为ti=(~(s1i∧(~s0i)))的逻辑单元-5,分别与逻辑单元-1和逻辑单元-5连接、将输入的c0i与ti进行逻辑“与”运算、获取信息 id="icf0015" file="A2008100460040002C15.tif" wi="52" he="5" top= "164" left = "56" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的逻辑与门-1,分别与逻辑单元-2和逻辑单元-5连接、将输入的s0i与ti进行逻辑“与”运算、获取信息 id="icf0016" file="A2008100460040002C16.tif" wi="50" he="5" top= "181" left = "56" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的逻辑与门-2,分别与逻辑单元-3和逻辑单元-5连接、将输入的s1i与ti进行逻辑“与”运算、获取信息 id="icf0017" file="A2008100460040002C17.tif" wi="50" he="5" top= "198" left = "56" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的逻辑与门-3,分别与逻辑单元-4和逻辑单元-5连接、将输入的c1i与ti进行逻辑“与”运算、获取信息 id="icf0018" file="A2008100460040002C18.tif" wi="51" he="5" top= "215" left = "56" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的逻辑与门-4,与逻辑与门-1连接的输出比特 id="icf0019" file="A2008100460040002C19.tif" wi="3" he="5" top= "223" left = "99" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>寄存器,与逻辑与门-2连接的输出比特 id="icf0020" file="A2008100460040002C20.tif" wi="2" he="5" top= "232" left = "99" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>寄存器,与逻辑与门-3连接的输出比特 id="icf0021" file="A2008100460040002C21.tif" wi="1" he="4" top= "241" left = "99" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>寄存器,与逻辑与门-4连接的输出比特 id="icf0022" file="A2008100460040003C1.tif" wi="3" he="5" top= "29" left = "96" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>寄存器;所述 id="icf0023" file="A2008100460040003C2.tif" wi="15" he="5" top= "37" left = "41" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>为任意二进制整数X=(±xn-1...±x1±x0),Y=(±yn-1...±y1±y0),Z=(±zn-1...±z1±z0)的无符号数 id="icf0024" file="A2008100460040003C3.tif" wi="34" he="5" top= "45" left = "109" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/> id="icf0025" file="A2008100460040003C4.tif" wi="33" he="5" top= "45" left = "145" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/> id="icf0026" file="A2008100460040003C5.tif" wi="6" he="4" top= "46" left = "180" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/> id="icf0027" file="A2008100460040003C6.tif" wi="23" he="5" top= "54" left = "20" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>的第i项,其中 id="icf0028" file="A2008100460040003C7.tif" wi="20" he="5" top= "54" left = "78" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/> id="icf0029" file="A2008100460040003C8.tif" wi="20" he="4" top= "55" left = "103" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/> id="icf0030" file="A2008100460040003C9.tif" wi="20" he="5" top= "54" left = "127" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>所述 id="icf0031" file="A2008100460040003C10.tif" wi="15" he="5" top= "62" left = "40" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>为任意二进制整数X=(±xn-1...±x1±x0),Y=(±yn-1...±y1±y0),Z=(±zn-1...±z1±z0)的冗余数<maths id="math0002" num="0002" ><math><![CDATA[ <mrow><mover> <mi>X</mi> <mo>~</mo></mover><mo>=</mo><mrow> <mo>(</mo> <msub><mover> <mi>x</mi> <mo>~</mo></mover><mrow> <mi>n</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>.</mo> <mo>.</mo> <mo>.</mo> <msub><mover> <mi>x</mi> <mo>~</mo></mover><mn>1</mn> </msub> <msub><mover> <mi>x</mi> <mo>~</mo></mover><mn>0</mn> </msub> <mo>)</mo></mrow><mo>,</mo> </mrow>]]></math> id="icf0032" file="A2008100460040003C11.tif" wi="34" he="5" top= "71" left = "105" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths><maths id="math0003" num="0003" ><math><![CDATA[ <mrow><mover> <mi>Y</mi> <mo>~</mo></mover><mo>=</mo><mrow> <mo>(</mo> <msub><mover> <mi>y</mi> <mo>~</mo></mover><mrow> <mi>n</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>.</mo> <mo>.</mo> <mo>.</mo> <msub><mover> <mi>y</mi> <mo>~</mo></mover><mn>1</mn> </msub> <msub><mover> <mi>y</mi> <mo>~</mo></mover><mn>0</mn> </msub> <mo>)</mo></mrow><mo>,</mo> </mrow>]]></math> id="icf0033" file="A2008100460040003C12.tif" wi="33" he="5" top= "71" left = "143" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths><maths id="math0004" num="0004" ><math><![CDATA[ <mrow><mover> <mi>Z</mi> <mo>~</mo></mover><mo>=</mo><mrow> <mo>(</mo> <msub><mover> <mi>z</mi> <mo>~</mo></mover><mrow> <mi>n</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>.</mo> <mo>.</mo> <mo>.</mo> <msub><mover> <mi>z</mi> <mo>~</mo></mover><mn>1</mn> </msub> <msub><mover> <mi>z</mi> <mo>~</mo></mover><mn>0</mn> </msub> <mo>)</mo></mrow> </mrow>]]></math> id="icf0034" file="A2008100460040003C14.tif" wi="23" he="5" top= "79" left = "20" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>的第i项,其中<maths id="math0005" num="0005" ><math><![CDATA[ <mrow><msub> <mover><mi>x</mi><mo>~</mo> </mover> <mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><mn>0,1</mn><mo>}</mo><mo>,</mo> </mrow>]]></math> id="icf0035" file="A2008100460040003C15.tif" wi="20" he="5" top= "79" left = "81" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths><maths id="math0006" num="0006" ><math><![CDATA[ <mrow><msub> <mover><mi>y</mi><mo>~</mo> </mover> <mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><mn>0,1</mn><mo>}</mo><mo>,</mo> </mrow>]]></math> id="icf0036" file="A2008100460040003C16.tif" wi="21" he="5" top= "79" left = "104" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths><maths id="math0007" num="0007" ><math><![CDATA[ <mrow><msub> <mover><mi>z</mi><mo>~</mo> </mover> <mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><mn>0,1</mn><mo>}</mo><mo>;</mo> </mrow>]]></math> id="icf0037" file="A2008100460040003C17.tif" wi="20" he="5" top= "79" left = "129" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>n为大于64的任意正整数;所述算符’∧’表示逻辑’与’运算,算符’∨’表示逻辑’或’运算,算符’ id="icf0038" file="A2008100460040003C18.tif" wi="2" he="2" top= "98" left = "176" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>’表示逻辑’异或’运算,算符“~”表示逻辑’取反’运算。
2、 用权利要求1所述CBSA硬件加法器构成的实现模乘运算计算单元(^+ fli5 + ^V)= (Tl + 72+Al,^2)的四进二出加法器,包括有4个分别存贮数据ri, 72,Z1,Z2的输出寄存器, 分别与输出寄存器n, 72,Zl连接的第一级CBSA硬件加法器, 分别与第一级CBSA硬件加法器两输出端及^2输出寄存器连接的第二级 CBSA硬件加法器,与第二级CBSA硬件加法器两输出端连接的输出寄存器(ri,72)单元, 以及控制输出寄存器(n, 72)单元的clk系统时钟信号和rst加法器复位 信号。
3、 用权利要求1所述CBSA硬件加法器构成的实现模乘运算计算单元(71 + 71 + ^51 + "^2 + ^\)的五进二出加法器,包括有5个分别存贮数据71, 72, a"l, a"2,《,JV的输出寄存器, 分别与输出寄存器n, 72, 连接的第一级CBSA硬件加法器, 分别与第一级CBSA硬件加法器两输出端及^52输出寄存器连接的第二级 CBSA硬件加法器,分别与第二级CBSA硬件加法器两输出端及^V输出寄存器连接的第三级 CBSA硬件加法器,与第三级CBSA硬件加法器两输出端连接的输出寄存器(n,72)单元, 以及控制输出寄存器(71, 72)单元的elk系统时钟信号和rst加法器复位 信号。
4、 一种实现权利要求1所述CBSA硬件加法器的设计方法,有以下步骤: 第一步,确定CBSA加法器的设计目标,是实现计算CBSA(X, r, Z) =(C, 5), 并满足C+5^X+7"+Z,为此① 把任意整数X, y,Z用2进制数表示成义-(士xw…士x, ±马),y=(± W ...士力士少o), Z=(±^…士a ±z0),其中x,.e(0,1〉, y,e{0,l}, z,e{0,l}, 并且有X-EH),…,n—K士x,.2') , r-EKu'Jiy^) , Z-Sk),…,w(士z,2');② 对于任意输入的三个2进制数X-(士^…士^ 土xo), 7=(±>^-卜..± 力土少o)和Z-(士^ ...土q ±z0),经CBSA计算后其输出结果(C, S)同样是 2进制数C-(土cw…士d ±&)和&=(±^卜.±^ ±s0);第二步,设置二进制数无符号数表式与冗余数表式1) 设置二进制数无符号数表式对任意二进制整数%= (士x^ ...土;d 士;co),去掉各数字前面的所有正负 号,得到X的无符号数表式,将其记为》-0^…;^。),其中^{0,1};2) 设置二进制数的冗余数表式对任意二进制整数X:(士^ ...士A ±xo),把x,的各数字前面符号为负 的比特标记为1,否则标记为0,则得到I的冗余数表式,并记为f …^ 50),其中三6{0,1};第三步,对输入任意位长的整数《F和Z进行CBSA计算将输入任意位长的二进制整数兀r,z的无符号数表式和冗余数表式,分别记为》,l",f,f,之Z,CBSA(X, 7, Z) =(C, 5)的运算过程如下(1)首先并行计算(C0,幼)=CSA(尤夂》和(Cl,Sl)-CSA(f,f,2),CSA是熟知的进位保存加法器的运算,得到CO = (d…cOi c00),幼=d…A為),c0;,E {0,1};C1-(C1".…Clcl。), 51=^1".!…Sl"l。), C1,,S1,E(0,1);(2) 给出CBSA(义,y, Z) =(C, 5)结果的无符号数表式和冗余数表式,分别 记为e和G,以及绍卩^其中<j=("—t…"j。),…;"o), ";,e{o,i} (^"…;丄;o),》-d..."), 3,,;,e{o,i}(3) 利用上述运算过程(1)得到的结果C0,幼,C1,51的各比特数字,按 如下计算得到CBSA的输出C, ^ & 的各比特数字-—cO,A( 01,A( s0,.))), / = 0,..""-1 .A( (sl,A( 4))), / = 0,…,"-l . 3尸cl,A( 01,A( ^))), / = 0,…,"画1 . ;尸AAHAA("O,))), / = 0,...,"-1 . 其中运算符 < '表示按位'取反'(即1= 0, 0 = ~1), ,A'表示按位,与' 操作;"为大于64的任意正整数;第四步,依据第三步得到的下述简单逻辑运算,进行下述CBSA硬件加 法器的设计cO产(i.A,,.)V(i.A么.)V(^Ai) sO产^ @夕,e么.cl严(i. Ai.) V(;,. Ai.) A;,.) ,=( (化.八( 輔)一cO,AK l,AC))), / = 0,…,w-l.;, CAC))), / = 0,…,"-l.;尸cl,.A( (化.A("o,))), / = 0".,"-1.^-化A( Csl,A("0,.))), / = 0,…,"-l.① 依据计算的输入数据4么,么,二设计相应的寄存器;② 依据输入数据"夕,,i.,进行(i.A义)V(AAi)V(么A么)逻辑运算,输出数据cA.,设计称为逻辑单元-1的简单逻辑电路结构,并建立i义,i寄存器 与逻辑单元-1的连接关系;③依据输入数据二,义,i ,进行A④,,^i逻辑运算,输出数据s0,,设计 称为逻辑单元-2的简单逻辑电路结构,并建立i,义,么.寄存器与逻辑单元-2的 连接关系; 依据输入数据^么5,,进行i④;,④^逻辑运算,输出数据sl,,设计称 为逻辑单元-3的简单逻辑电路结构,并建立;^么.寄存器与逻辑单元-3的连 接关系;⑤ 依据输入数据^U.,进行(三.AA)VftA5,)V&.A5,.),逻辑运算,输出 数据cl,,设计称为逻辑单元-4的简单逻辑电路结构,并建立^义,S,.寄存器与 逻辑单元-4的连接关系;⑥ 依据输入数据s0,.和sl,.,进行( (sl,A( s0,)))逻辑运算,输出数据 f,.,设计称为逻辑单元-5的简单逻辑电路结构,并建立逻辑单元-5分别与逻辑 单元-2和逻辑单元-3的连接关系;⑦ 依据输入数据cO,和f,.,进行cO,A( (sl,A( s0,)》逻辑运算,输出数据 ",设计称为逻辑与门-1的简单逻辑电路结构,并建立逻辑与门-1分别与逻 辑单元-1和逻辑单元-5的连接关系;⑧ 依据输入数据sO,和f,,进行sO,A( (sl,A( s0,)))逻辑运算,输出数据 ;,,设计称为逻辑与门-2的简单逻辑电路结构,并建立逻辑与门-2分别与逻辑 单元-2和逻辑单元-5的连接关系;(D依据输入数据sl,和i进行",A( (化A("0,)))逻辑运算,输出数据 设计称为逻辑与门-3的简单逻辑电路结构,并建立逻辑与门-3分别与逻辑 单元-3和逻辑单元-5的连接关系;⑩依据输入数据cl,和^,进行dA( C^A( 4)))逻辑运算,输出数据 3,,设计称为逻辑与门-4的简单逻辑电路结构,并建立逻辑与门-4分别与逻辑 单元-4和逻辑单元-5的连接关系; 依据逻辑与门-1输出数据",逻辑与门-2输出数据i,逻辑与门-3输出数据^,逻辑与门-4输出数据^,设置分别存贮这些数据的输出比特寄存器;完成这些步骤,就得到了实现加减法无差异并行计算的CBSA硬件加法器。
全文摘要
本发明公开了加减法无差异并行计算加法器及设计方法;该加法器由单比特逻辑并行计算单元加法器模块组成;每位单元加法器模块,包括有x<sub>i</sub>,y<sub>i</sub>,z<sub>i</sub>,x<sub>i</sub>,y<sub>i</sub>,z<sub>i</sub>寄存器;(x<sub>i</sub>∧y<sub>i</sub>)∨(x<sub>i</sub>∧z<sub>i</sub>)∨(y<sub>i</sub>∧z<sub>i</sub>)逻辑运算单元,x<sub>i</sub>⊕y<sub>i</sub>⊕z逻辑运算单元,x<sub>i</sub>⊕y<sub>i</sub>⊕z<sub>i</sub>逻辑运算单元,(x<sub>i</sub>∧y<sub>i</sub>)∨(x<sub>i</sub>∧z<sub>i</sub>)∨(y<sub>i</sub>∧z<sub>i</sub>)逻辑运算单元,(~(s1<sub>i</sub>∧(~s0<sub>i</sub>)))逻辑运算单元,与各逻辑单元连接获取数据c<sub>i</sub>、s<sub>i</sub>、s、c的4个逻辑与门,及与各逻辑与门连接的输出比特寄存器;优点是提高计算效率和抗物理攻击能力。
文档编号G06F7/505GK101349967SQ20081004600
公开日2009年1月21日 申请日期2008年9月8日 优先权日2008年9月8日
发明者王金波 申请人:成都卫士通信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1