适用于模除算法的新架构及非交织一维脉动架构的制作方法与工艺

文档序号:11782326阅读:339来源:国知局
适用于模除算法的新架构及非交织一维脉动架构的制作方法与工艺
本实用新型涉及密码芯片领域,特别是指一种适用于模除算法的新架构及非交织一维脉动架构。

背景技术:
在芯片内部的电路中需要进行信号的各种变换处理,即进行二进制的加减乘除操作,加减乘除的运算速度对芯片内部电路的处理速度与面积有着直接的影响。由于乘除运算均可归结为加减运算,所以加减运算的进位传播速度,决定了运算的关键延时与性能。现有技术中,为了消除加减运算的进位传播,采用基于Takagi的扩展加减算法,并采用冗余数算术消除进位传播。然而,在Takagi算法中,不平衡的流水线导致在不同的情况下,分配到一个时钟周期内的计算量不同,使得某些周期内的时间被浪费;并且由于使用了冗余数算术,Takagi算法的硬件实现需要更复杂的逻辑,更大的面积。Takagi算法中一次迭代要计算a←(a+qb)/4和r←(r+qs)/4(modm),这些计算比算法ModDiv中的要复杂。在硬件实现中,一次迭代中的计算被分配到一个时钟周期内完成。Takagi算法势必会导致更多的硬件资源和更长的关键路径延时。对于Takagi算法的一次迭代,如果a是偶数,只需要计算a←a/2和r←r/2(modm)。而如果a是奇数,需要计算a←(a+qb)/4和r←(r+qs)/4(modm),比a是偶数的情形复杂。这就导致硬件实现的流水线在各次迭代中不平衡。对于a是偶数的情形,一部分时钟周期就被浪费了。在Takagi算法中,这两个计算分别还依赖于ai+2,bi+2和ri+2si+2,mi+2。因此,如果Takagi算法被用最优调度向量映射为脉动架构,这个相对复杂的依赖关系会降低硬件利用率。

技术实现要素:
本实用新型要解决的技术问题是提供一种实现更小的关键路径延时和计算时间的适用于模除算法的新架构及非交织一维脉动架构。为解决上述技术问题,本实用新型提供技术方案如下:一种适用于模除算法的新架构,包括MxN的单元序列,M为迭代次数加一,N为处理的模数位长加一,前M-1行运算单元中的每一行均能够完成一次迭代,第M行的运算单元能够完成最后的修正,其中:对于第一行运算单元:第一行运算单元包括位于最右侧有1个单元B和左侧的N-1个单元A,最右侧的单元B为单元B(0,0),B(0,0)有九个输入,从左到右分别是除数y1位、模数m1位、被除数x1位、0、模数m1位、除数y0位、模数m0位、被除数x0位和0,单元B(0,0)有13个输出信号,其中,有8个信号经过一个寄存器后传入与单元B(0,0)左侧相邻的单元A(0,1),这8个信号包括五个控制信号v[1]、s[1]、v[2]、s[2]、swap和三个进位信号c10、c20、c30,另外5个信号经过两个寄存器后连入第二行的单元B(1,0)的输入端,分别为与单元B(0,0)左侧相邻的单元A(0,1)同样有九个输入,从左到右分别为除数y2位、模数m2位、被除数x2位和0经过1个寄存器作为单元A(0,1)输入,以及模数m2位、除数y1位、模数m1位、被除数x1位、0经过1个寄存器作为单元A(0,1)的输入,单元A(0,1)有13个输出信号,其中,8个信号经过一个寄存器后传入与单元A(0,1)左侧相邻的单元A(0,2),分别是五个控制信号v[1]、s[1]、v[2]、s[2]、swap和三个进位信号c11、c21、c31,另外5个信号经过两个寄存器后连入第二行的与单元A(0,1)的下面对应的单元A(1,1)的输入,分别为单元A(0,2)有九个输入,从左到右分别是除数y3位、模数m3位、被除数x3位、0经过2个寄存器作为A(0,2)的输入,以及模数m3位、除数y2位、模数m2位、被除数x2位、0经过2个寄存器作为A(0,2)的输入,单元A(0,2)有13个输出信号,其中,8个信号经过一个寄存器后传入单元A(0,2)左侧相邻的单元A(0,3),这8个信号包括五个控制信号v[1]、s[1]、v[2]、s[2]、swap和三个进位信号c12、c22、c32,另外5个信号经过两个寄存器后连入第二行的与单元A(0,2)的下面对应的单元A(1,2)的输入,分别为单元A(0,3)有九个输入,从左到右分别是除数y3位、模数m3位、被除数x3位、0经过3个寄存器作为A(0,3)的输入,以及模数m3位、除数y3位、模数m3位、被除数x3位、0经过3个寄存器作为A(0,2)的输入,单元A(0,3)有13个输出信号,其中,8个信号经过一个寄存器后传入单元A(0,3)左侧相邻的单元A(0,4),这8个信号包括五个控制信号v[1]、s[1]、v[2]、s[2]、swap和三个进位信号c13、c23、c33,另外5个信号z0、经过两个寄存器后连入第二行的与单元A(0,3)的下面对应的下面单元A(1,3);单元A(0,4)和后续单元A的信号输入和连接方式均和单元A(0,1)、A(0,2)、A(0,3)相同;对于第二至第M-1行运算单元:第二至第M-1行运算单元的单元组合、信号连接方式分别和第一行相同;对于第M行运算单元:第M行运算单元包括位于最右侧的1个单元D和左侧的N-1个单元C,单元D、C为符号扩展位,其中,单元D的输入为b1、s0,b1为A(2,1)的输出信号经过三个寄存器的输出,s0为B(2,0)的输出信号经过4个寄存器的输出,单元D的输出为s3、z0,其中,s3和连入单元C的输入s3和单元D左侧的第一个单元C除了从单元D传来的信号外,还有一个输入信号来自单元A(2,1)的输出信号经过三个寄存器的输出,单元D左侧的第一个单元C的输出为s3、z1,其中,s3和连入下一个单元C的输入s3和si,左侧其他的单元C连接方式均和它相同;上述的单元A包括3个异或XOR-AND门、2个数据选择器MUX和3个全加器FullAdder,3个XOR-AND门和2个MUX从左向右依次排列,从左向右依次为第一XOR-AND门、第二XOR-AND门、第三XOR-AND门、第一MUX和第二MUX,第一XOR-AND门、第二XOR-AND门、第三XOR-AND门的下方分别对应的设置第一FullAdder、第二FullAdder和第三FullAdder,第二MUX输入分别为ri、si、swap,其中,swap作为地址输入信号,第二MUX的输出为第一MUX输入分别为ai、bi、swap,其中,swap作为地址输入信号,第二MUX的输出为bi,第三XOR-AND门包括第三XOR门和第三AND门,第三XOR门的输入为mi+1、s2,第三XOR门的输出连接第三AND门的被加数输入端,第三AND门的加数端输入v2,第三AND门的输出端连接第三FullAdder的加数输入端,第三FullAdder的被加数输入端为第二FullAdder的本位和输出,第三FullAdder的进位信号输入为c3i-1,进位信号输出为c3i,第三FullAdder的本位输出为第二XOR-AND门包括第二XOR门和第二AND门,第二XOR门的输入为si+1、s1,第二XOR门的输出连接第二AND门的被加数输入端,第二AND门的加数输入端输入ri+1,第二AND门的输出端连接第二FullAdder的加数输入端,第二FullAdder的被加数输入端输入ri+1,第二FullAdder的进位信号输入为c2i-1,其进位信号输出为c2i,第一XOR-AND门包括第一XOR门和第一AND门,第一XOR门的输入为bi+1、s1,第一XOR门的输出连接第一AND门的被加数输入,第一AND门的加数输入为v1,第一AND门的输出连接第一FullAdder的加数输入端,第一FullAdder的被加数输入端为ai+1,进位信号输入为c1i.其进位信号输出为上述的单元B包括单元A和控制单元Ctrl组成,控制单元Ctrl的输入为a1、b1、a0、r0、s0,控制单元Ctrl的输出v1、s1、v2、s2、swap、c1、c2和c3的初始值连接至单元A的同名端;单元C和单元D所完成的运算是求相反数,其中,单元C由异或门和半加器连接组成,其中异或门输入为si、s3,输出连入半加器的被加数输入端,另加数输入信号是进位信号c4i-1,其本位输出为进位为s1,单元D由单元C组成,其中,输入信号si为s0,c4i-1连接b1,传入单元C的输出为s3、c40,本位输出为进一步的,第一行至第M-1行中的每一行,从右到左,每两个相邻的单元组合成了一个单元组合,构成一个单元组合的两个单元之间的流水线寄存器均去掉。上述的适用于模除算法的新架构得到的非交织一维脉动架构,所述非交织一维脉动构架由所述适用于模除算法的新架构沿着向量方向投影得到,包括从左向右依次连接的2个运算单元E和1个运算单元F,其中:运算单元E包括2个左右设置的单元A,以及8个MUX组成,输入从左到右依次为m2i+2、a2i+1、b2i+1、r2i+1、s2i+1、m2i+1、a2i、b2i、r2i、s2i,其中,a2i+1、b2i+1、r2i+1、s2i+1、a2i、b2i、r2i、s2i分别是从左到右每个MUX的一个数据输入端,它们的另一个数据输入端分别是单元A的输出地址选择信号均为运算单元F的输出init信号,8个MUX的输出经过一个寄存器后分别为单元E的输出a′2i+1、b′2i+1、r′2i+1、s′2i+1、a′2i、b′2i、r′2i、s′2i,其中,a′2i+1、b′2i+1、r′2i+1、s′2i+1分别连入左侧单元A的输入a2i+1、b2i+1、r2i+1、s2i+1端及右边单元A的输入端a2i+1、b2i+1、r2i+1、s2i+1,a′2i、b′2i、r′2i、s′2i连入右侧单元A的输入端a2i、b2i、r2i、s2i,运算单元E的输出信号a2i+2、b2i+2、r2i+2、s2i+2连入左侧单元A的同名输入端,m2i+2与单元A的m2i+2相连,右侧单元A的输出信号v1、s1、v2、s2、swap、c12i、c22i、c32i连接左侧单元A的同名输入端,单元A的输出信号v1、s1、v2、s2、swap、c12i+1、c22i+1、c32i+1连入下一个运算单元E;运算单元F包括单元A、B和8个MUX,其中,运算单元F的输入从左到右依次为m2、a1(y1)、b1(m1)、r1(x1)、s1(0)、m1、si(y0)、b0(m0)、r0(x0)、s0(0),init第一周期为1,以后均为0,其中,init为新的控制信号,它为1表示该周期初始化该运算单元的寄存器,即从外部接收输入数据,从左到右每个MUX的一个数据输入端分别为a1、b1、r1、s1、a0、b0、r0和s0,它们的另一个数据输入端分别是单元A的输出地址选择信号均为init信号,8个MUX的输出经过一个寄存器后分别为运算单元F的输出a′1、b′1、r′1、s′1、a′0、b′0、r′0、s′0,其中,a′1、b′1、r′1、s′1分别连入单元A的输入端ai、bi、ri、si及单元B的输入端a1、b1、r1、s1,a′0、b′0、r′0、s′0连入单元B的输入端a0、b0、r0、s0,相邻运算单元E的输出信号a2、b2、r2、s2连入单元A的输入ai+1、bi+1、ri+1、si+1,m2与单元A的mi+1相连,单元B的输出信号v1、s1、v2、s2、swap、c10、c20、c30连接单元A的同名输入端,单元A的输出信号v1、s1、v2、s2、swap、c11、c21、c31连入下一个运算单元E。本实用新型的实施例具有以下有益效果:本实用新型中,采用ModDiv算法得到一个适用于模除算法的新架构,ModDiv算法与Tagaki算法都是基于扩展了的加减算法。然而,这两种算法在控制r的增长方面用的方法不同。Takagi将两次迭代组合成一次迭代,将前一次迭代的r←(r+qs)/2(modm)和后一次迭代的r←r/2(modm)组合成r←(r+qs)/4(modm),相应地,a←(a+qb)/2和a←a/4组合成a←(a+qb)/4。这样就保证执行r←(r+qs)/4(modm)之后,|r|<m。然而,这种方法给硬件实现带来两点明显的不利,第一,Takagi算法中一次迭代要计算a←(a+qb)/4和r←(r+qs)/4(modm),这些计算比算法ModDiv复杂,在硬件实现中,一次迭代中的计算被分配到一个时钟周期内完成。Takagi算法势必会导致更多的硬件资源和更长的关键路径延时;第二,a是奇数比a是偶数的情形复杂,这就导致硬件实现的流水线在各次迭代中不平衡,对于a是偶数得情形,一部分时钟周期就被浪费了。本实用新型的算法ModDiv,计算ai和ri分别只依赖于ai+1、bi+1、ri+1、si+1和mi+1,但在Takagi算法中,这两个计算分别还依赖于ai+2、bi+2、ri+2、si+2和mi+2。因此,如果Takagi算法被用最优调度向量映射为脉动架构,这个相对复杂的依赖关系会降低硬件利用率。通过比较Takagi算法和算法ModDiv,可以得出算法ModDiv适合脉动架构实现的优点。与现有技术相比,本实用新型能够实现更小的关键路径延时和计算时间的优点。附图说明图1为本实用新型的适用于模除算法的新架构的结构示意图;图2为本实用新型的适用于模除算法的新架构的单元A的结构示意图;图3为本实用新型的适用于模除算法的新架构的单元B的结构示意图;图4为本实用新型的适用于模除算法的新架构的单元C的结构示意图;图5为本实用新型的适用于模除算法的新架构的单元D的结构示意图;图6为本实用新型的适用于模除算法的新架构的配对后的结构示意图;图7为本实用新型的非交织一维脉动架构的结构示意图;图8为本实用新型的非交织一维脉动架构的单元E的结构示意图;图9为本实用新型的非交织一维脉动架构的单元F的结构示意图。具体实施方式为使本实用新型要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。一方面,本实用新型提供一种适用于模除算法的新架构,包括MxN的单元序列,M为迭代次数加一,N为处理的模数位长加一,为了简明起见,如图1所示,提供了一个4x5的单元序列的实施例,该实施例可以完成3次迭代,可以处理的模数位长为4个字节,前三行运算单元中的每一行均能够完成一次迭代,第四行的运算单元能够完成最后的修正,其中:对于第一行运算单元:第一行运算单元包括位于最右侧有1个单元B和左侧的4个单元A,最右侧的单元B为单元B(0,0),B(0,0)有九个输入,从左到右分别是除数y1位、模数m1位、被除数x1位、0、模数m1位、除数y0位、模数m0位、被除数x0位和0,单元B(0,0)有13个输出信号,其中,有8个信号经过一个寄存器(寄存器为通用寄存器,该寄存器是边沿触发的寄存器,是时序电路的基本组成部分,用于同步输入信号。下文中的寄存器均为该通用寄存器)后传入与单元B(0,0)左侧相邻的单元A(0,1),这8个信号包括五个控制信号v[1]、s[1]、v[2]、s[2]、swap和三个进位信号c10、c20、c30,另外5个信号经过两个寄存器后连入第二行的单元B(1,0)的输入端,分别为与单元B(0,0)左侧相邻的单元A(0,1)同样有九个输入,从左到右分别为除数y2位、模数m2位、被除数x2位和0经过1个寄存器作为单元A(0,1)输入,以及模数m2位、除数y1位、模数m1位、被除数x1位、0经过1个寄存器作为单元A(0,1)的输入,单元A(0,1)有13个输出信号,其中,8个信号经过一个寄存器后传入与单元A(0,1)左侧相邻的单元A(0,2),分别是五个控制信号v[1]、s[1]、v[2]、s[2]、swap和三个进位信号c11、c21、c31,另外5个信号经过两个寄存器后连入第二行的与单元A(0,1)的下面对应的单元A(1,1)的输入,分别为单元A(0,2)有九个输入,从左到右分别是除数y3位、模数m3位、被除数x3位、0经过2个寄存器作为A(0,2)的输入,以及模数m3位、除数y2位、模数m2位、被除数x2位、0经过2个寄存器作为A(0,2)的输入,单元A(0,2)有13个输出信号,其中,8个信号经过一个寄存器后传入单元A(0,2)左侧相邻的单元A(0,3),这8个信号包括五个控制信号v[1]、s[1]、v[2]、s[2]、swap和三个进位信号c12、c22、c32,另外5个信号经过两个寄存器后连入第二行的与单元A(0,2)的下面对应的单元A(1,2)的输入,分别为单元A(0,3)有九个输入,从左到右分别是除数y3位、模数m3位、被除数x3位、0经过3个寄存器作为A(0,3)的输入,以及模数m3位、除数y3位、模数m3位、被除数x3位、0经过3个寄存器作为A(0,2)的输入,单元A(0,3)有13个输出信号,其中,8个信号经过一个寄存器后传入单元A(0,3)左侧相邻的单元A(0,4),这8个信号包括五个控制信号v[1]、s[1]、v[2]、s[2]、swap和三个进位信号c13、c23、c33,另外5个信号z0、经过两个寄存器后连入第二行的与单元A(0,3)的下面对应的下面单元A(1,3);单元A(0,4)和后续单元A的信号输入和连接方式均和单元A(0,1)、A(0,2)、A(0,3)相同;对于第二、三行运算单元:第二行和第三行运算单元的单元组合、信号连接方式分别和第一行相同;对于第四行运算单元:第四行运算单元包括位于最右侧的1个单元D和左侧的4个单元C,单元D、C为符号扩展位,其中,单元D的输入为b1、s0,b1为A(2,1)的输出信号经过三个寄存器的输出,s0为B(2,0)的输出信号经过4个寄存器的输出,单元D的输出为s3、z0,其中,s3和连入单元C的输入s3和,单元D左侧的第一个单元C除了从单元D传来的信号外,还有一个输入信号来自单元A(2,1)的输出信号经过三个寄存器的输出,单元D左侧的第一个单元C的输出为s3、z1,其中,s3和连入下一个单元C的输入s3和si,左侧其他的单元C连接方式均和它相同;如图2所示,上述的单元A包括3个异或XOR-AND门、2个数据选择器MUX和3个全加器FullAdder,3个XOR-AND门和2个MUX从左向右依次排列,从左向右依次为第一XOR-AND门、第二XOR-AND门、第三XOR-AND门、第一MUX和第二MUX,第一XOR-AND门、第二XOR-AND门、第三XOR-AND门的下方分别对应的设置第一FullAdder、第二FullAdder和第三FullAdder,第二MUX输入分别为ri、si、swap,其中,swap作为地址输入信号,第二MUX的输出为第一MUX输入分别为ai、bi、swap,其中,swap作为地址输入信号,第二MUX的输出为bi,第三XOR-AND门包括第三XOR门和第三AND门,第三XOR门的输入为mi+1、s2,第三XOR门的输出连接第三AND门的被加数输入端,第三AND门的加数端输入v2,第三AND门的输出端连接第三FullAdder的加数输入端,第三FullAdder的被加数输入端为第二FullAdder的本位和输出,第三FullAdder的进位信号输入为c3i-1,进位信号输出为c3i,第三FullAdder的本位输出为第二XOR-AND门包括第二XOR门和第二AND门,第二XOR门的输入为si+1、s1,第二XOR门的输出连接第二AND门的被加数输入端,第二AND门的加数输入端输入ri+1,第二AND门的输出端连接第二FullAdder的加数输入端,第二FullAdder的被加数输入端输入ri+1,第二FullAdder的进位信号输入为c2i-1,其进位信号输出为C2i,第一XOR-AND门包括第一XOR门和第一AND门,第一XOR门的输入为bi+1、s1,第一XOR门的输出连接第一AND门的被加数输入,第一AND门的加数输入为v1,第一AND门的输出连接第一FullAdder的加数输入端,第一FullAdder的被加数输入端为ai+1,进位信号输入为c1i.其进位信号输出为如图3所示,上述的单元B包括单元A和控制单元Ctrl组成,控制单元Ctrl的输入为a1、b1、a0、r0、s0,控制单元Ctrl的输出v1、s1、v2、s2、swap、c1、c2和c3的初始值连接至单元A的同名端;单元C和单元D所完成的运算是求相反数,如图4-5所示,单元C由异或门和半加器连接组成,其中异或门输入为si、s3,输出连入半加器的被加数输入端,另加数输入信号是进位信号c4i-1,其本位输出为进位为s1,单元D由单元C组成,其中,输入信号si为s0,c4i-1连接b1,传入单元C的输出为s3、c40,本位输出为本实施例中,采用ModDiv算法得到一个适用于模除算法的新架构,ModDiv算法与Tagaki算法都是基于扩展了的加减算法。然而,这两种算法在控制r的增长方面用的方法不同。Takagi将两次迭代组合成一次迭代,将前一次迭代的r←(r+qs)/2(modm)和后一次迭代的r←r/2(modm)组合成r←(r+qs)/4(modm),相应地,a←(a+qb)/2和a←a/4组合成a←(a+qb)/4。这样就保证执行r←(r+qs)/4(modm)之后,|r|<m。然而,这种方法给硬件实现带来两点明显的不利,第一,Takagi算法中一次迭代要计算a←(a+qb)/4和r←(r+qs)/4(modm),这些计算比算法ModDiv复杂,在硬件实现中,一次迭代中的计算被分配到一个时钟周期内完成。Takagi算法势必会导致更多的硬件资源和更长的关键路径延时;第二,a是奇数比a是偶数的情形复杂,这就导致硬件实现的流水线在各次迭代中不平衡,对于a是偶数得情形,一部分时钟周期就被浪费了。本实施例的算法ModDiv,计算ai和ri分别只依赖于ai+1、bi+1、ri+1、si+1和mi+1,但在Takagi算法中,这两个计算分别还依赖于ai+2、bi+2、ri+2、si+2和mi+2。因此,如果Takagi算法被用最优调度向量映射为脉动架构,这个相对复杂的依赖关系会降低硬件利用率。通过比较Takagi算法和算法ModDiv,可以得出算法ModDiv适合脉动架构实现的优点。与现有技术相比,本实施例能够实现更小的关键路径延时和计算时间的优点。作为本上述实施例的一种改进,如图6所示,第一行、第二行和第三行中的每一行,从右到左,每两个相邻的单元组合成了一个单元组合,构成一个单元组合的两个单元之间的流水线寄存器均去掉。本实施例对于大多数应用,特别是ECC应用,以交织的方式执行两个互相无关的计算是不实际的。用直接映射的方法得到的脉动架构总是存在一个周期的空闲。本实施例中,采用配对技术,推导出一个非交织的脉动架构,如图5所示,对于每一行,从右到左,每两个相邻的单元被组合成一个单元,这两个单元之间的流水线寄存器去除(如图5空心方框所示)。按照线性映射的表达方式,这个调度方法所对应的调度向量是坐标为x的单元在时刻被调度,硬件利用率为另一方面,本实用新型的实施例还提供一种由上述的适用于模除算法的新架构得到的非交织一维脉动架构,如图7所示,非交织一维脉动构架由适用于模除算法的新架构沿着向量方向投影得到,包括从左向右依次连接的2个运算单元E和1个运算单元F,其中:如图8所示,运算单元E包括2个左右设置的单元A,以及8个MUX组成,输入从左到右依次为m2i+2、a2i+1、b2i+1、r2i+1、s2i+1、m2i+1、a2i、b2i、r2i、s2i,其中,a2i+1、b2i+1、r2i+1、s2i+1、a2i、b2i、r2i、s2i分别是从左到右每个MUX的一个数据输入端,它们的另一个数据输入端分别是单元A的输出地址选择信号均为运算单元F的输出init信号,8个MUX的输出经过一个寄存器后分别为单元E的输出a′2i+1、b′2i+1、r′2i+1、s′2i+1、a′2i、b′2i、r′2i、s′2i,其中,a′2i+1、b′2i+1、r′2i+1、s′2i+1分别连入左侧单元A的输入a2i+1、b2i+1、r2i+1、s2i+1端及右边单元A的输入端a2i+1、b2i+1、r2i+1、s2i+1,a′2i、b′2i、r′2i、s′2i连入右侧单元A的输入端a2i、b2i、r2i、s2i,运算单元E的输出信号a2i+2、b2i+2、r2i+2、s2i+2连入左侧单元A的同名输入端,m2i+2与单元A的m2i+2相连,右侧单元A的输出信号v1、s1、v2、s2、swap、c12i、c22i、c32i连接左侧单元A的同名输入端,单元A的输出信号v1、s1、v2、s2、swap、c12i+1、c22i+1、c32i+1连入下一个运算单元E;如图9所示,运算单元F包括单元A、B和8个MUX,其中,运算单元F的输入从左到右依次为m2、a1(y1)、b1(m1)、r1(x1)、s1(0)、m1、si(y0)、b0(m0)、r0(x0)、s0(0),init第一周期为1,以后均为0,其中,init为新的控制信号,它为1表示该周期初始化该运算单元的寄存器,即从外部接收输入数据,从左到右每个MUX的一个数据输入端分别为a1、b1、r1、s1、a0、b0、r0和s0,它们的另一个数据输入端分别是单元A的输出地址选择信号均为init信号,8个MUX的输出经过一个寄存器后分别为运算单元F的输出a′1、b′1、r′1、s′1、a′0、b′0、r′0、s′0,其中,a′1、b′1、r′1、s′1分别连入单元A的输入端ai、bi、ri、si及单元B的输入端a1、b1、r1、s1,a′0、b′0、r′0、s′0连入单元B的输入端a0、b0、r0、s0,相邻运算单元E的输出信号a2、b2、r2、s2连入单元A的输入ai+1、bi+1、ri+1、si+1,m2与单元A的mi+1相连,单元B的输出信号v1、s1、v2、s2、swap、c10、c20、c30连接单元A的同名输入端,单元A的输出信号v1、s1、v2、s2、swap、c11、c21、c31连入下一个运算单元E。本实施例中,调度向量的选择取决于该运算单元在什么时刻投入运算。考虑任意一次迭代,如相邻运算单元间流水,则纵坐标加一,被调度时间也加一;如相邻单元配对,则纵坐标加二,调度时间才加一。下面再考虑迭代所用时间,除第一次迭代外,每个运算单元的输入都取决于上一行两个相邻运算单元的输出,若相邻流水,则每次迭代增加两周期;若相邻配对,则每次迭代增加一周期。所以权2调度向量选为(1,1/2)。而投影向量的选择要满足最高但不超过100%的硬件使用率。选择权3的投影向量,该一维脉动架构的硬件利用率是这说明对于一个运算来说,达到100%的硬件利用率;如果我们选择该一维脉动架构的硬件利用率超过100%,有控制冒险(controlhazard),即同一个硬件资源同一时间被复用的情况,是不允许的。因此,本实施例中的投影向量选择本实施例的计算单元和控制单元内的数据通路更加简单,因此关键路径延时更短,与Takagi算法的架构相比,本实施例的架构的计算速度能够比Takagi的架构提高一倍,这将有效地缓解当今ECC处理器中普遍存在的素域除法性能瓶颈。本实施例能够在更高的工作频率下工作、实现更小的关键路径延时和计算时间,所以具有更好的性能。上述实施例中,均是以4x5的单元序列的实施例进行说明的,为适应迭代次数的要求,单元序列MxN中的M可以为2以上的任意整数,为适应模数位长的要求,单元序列MxN中的N可以为小于等于384的任意8的倍数(该设计处理的最大位长为384bit,最小单位为byte)。所以M的取值范围可以是2,3,4…N的取值范围可以是8,16,24,32…384,因此,本实用新型的适用于模除算法的新架构可以根据迭代次数和处理模数位长的要求选取相应的MxN单元序列。下面,本实用新型提供一种完整的实施例:关于模除问题的基本描述是:给定三个整数x,y,m满足gcd(y,m)=1,那么x除以y模m就是找出一个整数z使得yz≡x(modm)。本实用新型提出了一个适合于脉动架构的模除算法,如表1,注意到输入输出的界限由于硬件实现的问题被特意指出。子函数,带有特征的模除以2算法。在硬件实现中,数据的范围决定了所需数据通路的位宽和存储单元的位宽,范围越大所需要的位宽就越大。在算法ExtPM中,输入x,y满足|x|,|y|<m。但是经过算法ExtPM的变换后,并不能保证输出z满足|z|<m也就是说:算法输入和输出的范围不一致。算法输入和输出范围一致的要求在一些需要多次迭代调用模除的应用(包括椭圆曲线算数)中是必须的。表1扩展加减算法而得的模除算法为了解决这个问题,注意到导致z值的范围变大的原因在于子算法ModDiv2的第4行总是加m。引入一个取值为±1的标志f。当该标志为正时,算法ModDiv2的第4行加m;否则减m。并且,每次算法ModDiv2的第4行被执行时,改变f的符号,这样就保证算法ModDiv2的第4行的加m和减m交替进行,从而保证输出z满足|z|<m。在算法ExtPM中引入上文介绍的标志f,得到表1的模除算法ModDiv。此项提出的算法是加减算法的延伸,此种算法和模除算法一模一样,除了使用带有特征的模除以2算法。把(r+qs)/2(modm)用硬件实现,我们应用了如果(r+qs)为奇数,我们算出r←(r+qs+m)/2或者r←(r+qs)/2因为得到r的觉得值可能比m大,我们必须把r值降到范围(-m,m)内。比较时涉及一些加、减条件。然而,在脉动架构中,进位链为流水结构,一次比较有一段很长的延时,模除运算相对于这个延时会拖延流水线的正常运行。为了解决这个问题,我们引进了一个信号控制是加m(如果p=1)还是减m(如果p=-1)当被除数在模除运算中是奇数,一个所谓的,带有特征的模除以2算法,如表2,如果被除数是奇数这个信号会被取反,关于m的加减操作会交替进行,因此,我们可以确信在运算r←MODDIV2FLAG(r+qs,m)及运算r←MODDIV2FLAG(r,m)后|z|<m。Input:x,m,p:misodd.Output:y:2y=x(modm).(1)ifx≡0(mod2)theny←x/2;(2)elsey←(x+pm)/2;p=-p;表2带有标志的模除以2算法ModDiv算法正确性证明:为了证明模除算法的后置条件,我们提出以下引理:引理1:在算法ModDiv每次迭代开始时,b是奇数。引理2:在算法ModDiv中,引入两个辅助变量α和β,并且在第一行插入α←n和β←n,在第6行插入α←α-1,在第13行插入那么在每次迭代开始时,|a|<2α,|b|<2β,φ=min(α,β),并且δ=α-β。引理3:在算法ModDiv中,当第4行被执行|r|<m,当第14行被执行后|s|<m。引理4:在算法ModDiv每次迭代开始时,xa≡yr(modm),xb≡ys(modm)。引理5:在算法ModDiv每次迭代中,gcd(a,b)保持不变。这些引理的证明是显而易见的,所以省略了。基于这些引理,可以证明算法的正确性。因为相邻两次迭代中第6行至少被执行一次,那么根据引理2,至多经过4n次迭代后,φ变为0,算法终止。a=0,|b|=gcd(y,m)=1(运用引理1,2,5),|s|<m(运用引理3),并且ys≡xb=±x(modm)(运用引理4)。经过第16行的修正之后,我们有ys≡x(modm)。综上,输出z满足yz≡x(modm),|z|<m。我们的算法和Tagaki算法相比,改善是显著的。两种算法都是基于扩展了的加减算法。然而,这两种算法在控制r的增长方面用的方法不同。Takagi将两次迭代组合成一次迭代,将前一次迭代的r←(r+qs)/2(modm)和后一次迭代的r←r/2(modm)组合成r←(r+qs)/4(modm),相应地a←(a+qb)/2和a←a/4组合成a←(a+qb)/4。这样就保证执行r←(r+qs)/4(modm)之后,|r|<m。然而,这种方法给硬件实现带来两点明显的不利。第一,Takagi算法中一次迭代要计算a←(a+qb)/4和r←(r+qs)/4(modm),这些计算比算法ModDiv中的要复杂。在硬件实现中,一次迭代中的计算被分配到一个时钟周期内完成。Takagi算法势必会导致更多的硬件资源和更长的关键路径延时。第二,a是奇数比a是偶数的情形复杂。这就导致硬件实现的流水线在各次迭代中不平衡。对于a是偶数得情形,一部分时钟周期就被浪费了。而且,在算法ModDiv中,计算ai和ri分别只依赖于ai+1,bi+1和ri+1,si+1,mi+1。但在Takagi算法中,这两个计算分别还依赖于ai+2,bi+2和ri+2,si+2,mi+2。因此,如果Takagi算法被用最优调度向量映射为脉动架构,这个相对复杂的依赖关系会降低硬件利用率。通过比较Takagi算法和算法ModDiv,可以看出算法ModDiv适合脉动架构实现的优点。而ModDiv算法需要的总迭代次数更多。直接映射所得的脉动架构:本实用新型,在算法ModDiv的脉动架构实现中,变量a,b,r,s,m,δ用2的补码表示,φ用原码表示因为φ是非负数。假设n是模数m的位长(即)。对于变量a、b、s和m,n+1位就足够了。因为那么对于r来说,n+2位就足够了。从引理2可知,φ和|δ|不会超过n,因此表示φ和δ分别需要和位。将硬件算法映射到脉动架构的第一步是将算法转换成位级依赖图。算法ModDiv的位级依赖图如图1所示,该依赖图示出了一个5×4的单元阵列,可以处理的模数位长n=3,可以完成3次迭代。其中f1-f6是控制信号,c1-c4代表进位信号。其中,每个运算单元向前传FA表示全加器,HA表示半加器,Ctrl表示控制逻辑。图3中的控制单元Ctrl生成f1-f6和c1-c3的初始值。Ctrl包含寄存器p(实际上是算法ModDiv2Flag中标志p的符号)、计数器φ、计数器δ。控制信号和进位信号的值由下列式子给出:f1=a[0],f4=p,f5=a[0]sδ,c1[-1]=f1,c2[-1]=f2,寄存器和计数器的初始值由算法ModDiv给出,按照下列逻辑更新:1)如果f3=1,那么否则p保持不变。2)如果f5=1,δ←-δ;否则如果a[0]=0,δ←δ-1。3)如果a[0]=0,φ≠0,δ≤0,那么φ=φ-1;否则φ保持不变。图1最底一行的单元C和单元D所进行的计算(算法ModDiv第16行)是求相反数。这个计算可以由模除脉动架构所在的算术单元中的加法器或减法器来实现。我们用z′表示未经过这个计算的模除结果。图1中建立了一个二维坐标系。每个单元被分配了一个坐标。利用线性映射技术,选择最优调度向量投影向量将依赖图映射为一维脉动架构。在图3中,相邻的调度平面之间放置了流水线寄存器(如图中实心方框所示),形成了一个二维脉动架构。沿着的方向将这个二维脉动架构投影成一维脉动架构的处理单元。该一维脉动架构的硬件利用率是这说明对于一个运算来说,每两个时钟周期有一个周期空闲。这也就意味着必须有两个互相无关的计算以交织的方式被脉动架构执行,才能达到100%的硬件利用率,或者,如果我们选择如果没有两个互相无关的计算先后进入脉动架构被执行,那么脉动架构中有一半的PE空闲。非交织的脉动架构:对于大多数应用,特别是ECC应用,以交织的方式执行两个互相无关的计算是不实际的。用直接映射的方法得到的脉动架构总是存在一个周期的空闲。下文将采用配对技术,推导出一个非交织的脉动架构。配对的过程如图5所示。对于每一行,右到左,每两个相邻的单元被组合成一个单元,这两个单元之间的流水线寄存器被删除(如图空心方框表示)。按照线性映射的表达方式,这个调度方法所对应的调度向量是坐标为x的单元在时刻被调度。硬件利用率因此为沿着之前投影向量的方向,得到一个非交织的一维脉动架构,如图6所示。每个单元的内部细节如图7所示,图中实心方框表示流水线寄存器。一个新的控制信号f7被引入了,它表示PE的寄存器的初始化,从外部接收输入数据。非交织脉动架构中的流水线寄存器数是直接映射所得的架构中的流水线寄存器数的一半,因此芯片面积更小。在假设不允许进行交织计算的前提下,非交织架构进行一次计算所需要的周期数是直接映射所得的架构的周期数的一半。直接映射所得的架构的关键路径延时在单元B中,非交织的脉动架构的关键路径在相邻的两个单元E之间。门级仿真后的时间分析表明,运用直接映射所得的关键路径延时大概是非交织的架构的0.7(大于0.5)。因此非交织的脉动架构需要更少的运算时间。该脉动架构的面积复杂度是O(n)。关键路径延时与n无关。当n变大使得计数器φ和δ中的加法器成为整体的关键路径时,可以用移位器代替加法器,移位器的延时与n无关,空间复杂度是O(n)。该算法ModDiv至多经过4n个迭代终止,所以时间复杂度是O(n)。本实用新型技术方案带来的有益效果:与Takagi算法的架构相比,本实用新型的计算单元和控制单元内的数据通路更加简单,因此关键路径延时更短,尽管每次运算所需的时钟周期数较多,平均计算时间只是Takagi的架构的46%,最大计算时间是它的50%。本实用新型的架构的计算速度比Takagi的架构提高一倍,这将有效地缓解当今ECC处理器中普遍存在的素域除法性能瓶颈。本实用新型能够在更高的工作频率下工作,所以具有更好的性能。为了评估本文提出的非交织脉动架构的性能,并将它与Kaihara和Takagi提出的基于Takagi算法并采用冗余数算术的模除架构相比较,用VHDL描述了本文的架构,在0.35μmCMOS标准单元工艺下,评估了综合后的面积和关键路径。本实用新型和文献【10】架构相比的等效门数和关键路径延时。文献【10】提出的架构完成一次模除最多需要2n+5个时钟周期。对于本文的架构,完成一次模除所需的最大时钟周期未知。但是,在文献【11】中被证明最大时钟周期数不超过表1中将这个值作为本文架构的最大时钟周期数。另外,基于以随机数据为输入的仿真,表1给出了【10】中的架构和本文的架构完成一次模除的平均计算时间(分别是1.72n和2.44n个时钟周期)。从表1中可以看出:本文的架构的面积比文献【10】的架构的面积大17%-21%。文献【10】的架构采用的是Takagi算法。与本文算法相比,Takagi算法每次迭代的计算更加复杂,而且采用冗余数算术导致几近双倍的硬件资源需求。但是,本文的脉动架构的细粒度流水线需要大量的流水线寄存器,数据信号和控制信号都需要用寄存器锁存,所以,导致本文架构增加。然而,由于本文架构的计算单元和控制单元内的数据通路更加简单,因此关键路径延时更短。因此,平均计算时间和最大计算时间只是文献【10】架构的46%和50%。这个提升有效地缓解了当今模除吞吐量的瓶颈。本实用新型,通过比较Takagi算法,改进扩展后的欧几里得算法,改进计算Montgomery逆的算法,及基于加减算法提出的统一的双域除法算法的几种架构,可以看出本文架构能够在更高的工作频率下工作,所以具有更好的性能。本实用新型中,模除算法及将算法映射到一个非交织的一维脉动架构。及扩展该架构之后,使其成为一个统一的支持双域乘法和除法的脉动架构。模除脉动架构里,数据均以2的补码表示。为了与此兼容,扩展Montgomery模乘算法,使之能够处理2的补码表示的数据。扩展后的Montgomery模乘算法见表8,y-1=0,并且y被符号扩展为n+1位。Input:x,y,m:misodd,|x|<m,and|y|<m.Output:z:z≡xy2-n-2(modm),and|z|<m.(1)z←0;(2)fori←0ton+1(3)z←ModDiv2Flag(z+x(y[i-1]-y[i]),m)表8扩展后的Montgomery模乘算法算法Montgomery中的变量z和x分别被映射到模除架构中的寄存器r和s。由控制单元B生成的各种控制信号以及进位信号的初始值由下式给出:f4=p,f5=0,c2[-1]=f3,其他信号不需要被考虑。对于计算单元A,不需做任何修改,这样架构就实现了运算(z,f)←ModDiv2Flag(z+x(y[i-1]-y[i]),m)。除了这些修改之外,还需要增加一个计数器i。如果我们将寄存器r和s分别初始化为0和x,将m并行输入到端口m,将y串行输入到单元B,那么经过n+2个时钟周期之后,寄存器r中就得到Montgomery模乘的结果。上述的修改所增加的硬件资源非常小,修改后的构架面积增加不到3%。另外,修改前后关键路径延时不变,因为修改前的架构中的关键路径在相邻的两个单元E之间,上述的修改并未改动单元E。因此,从面积和时间两方面来看,将模除脉动架构扩展成统一的乘法除法架构是相当高效的。下面,对本实用新型的附图进行说明:图1为模除算法的位级依赖图,每个单元都依赖于下一个单元的输入,相邻单元之间相互交织。最低位的运算单元输入为x0、y0、x1、y1、m0、m1,输出为控制信号f1、f2、f3、f4、f5和进位信号c1、c2、c3。八个输出信号经过寄存器后,作为输入信号被传入下一个运算单元。图2表明了图1中单元A的内部细节结构图。其中,单元A包括XOR-AND、XNOR-AND、MUX和FullAdder几种逻辑单元,三个carry信号分别接到FullAdder的carry输入,得到三个carry输出,传到下一个运算单元。图3表明了图1中单元B的内部细节结构图。其中,单元B包括运算单元A和控制单元Ctrl,控制单元的输入为a1、b1、a0、r0、s0,输出为v1、s1、v2、s2、swap以及c1、c2、c3的初始值。其中,组合逻辑包括与门,异或门;时序逻辑包括寄存器f、计数器φ和计数器δ。如图4-5所示,分别为图1中单元C和单元D的内部细节结构图。单元C和单元D所完成的运算是求相反数,其中,单元C由异或门和半加器连接组成,s3、si信号经过异或门后的输出作为半加器的一个输入,另一个输入信号是低位传来的进位信号ci-1。图6为配对后的模除依赖图,对于每一行,从右到左,每两个相邻的单元被组合成了一个单元,这两个单元之间的流水线寄存器被删除。现在,最低位运算单元的输入为x0、m0、y0、m1、x1、y1、m2、x2、y2和m3,输出为五个控制信号f1、f2、f3、f4、f5和三个进位信号c1、c2、c3,它们被传入下一个配对后的运算单元。图7为非交织的模除脉动架构。图6实施例沿着之前投影向量的方向,得到图7中非交织的一维脉动架构。最低两位对应的运算单元输入信号为x0、m0、y0、m1、x1、y1、m2,传入下一个运算单元的输出是五个控制信号和三个进位信号。在一个周期内,处理两比特数据,得到两比特结果。图8展示的是图7中单元E的内部细节结构图。单元E包括两个单元A和8个数据选择器(MUX)。这里引入新的控制信号f7,作为每个数据选择器的选择信号,用来表示该运算单元寄存器的初始化,从外部接收输入数据。运算单元A之间的连接不变,A的四个输出信号分别作为数据选择器的一个输入,另一端输入来自于外部,用于寄存器初始化的过程。图9展示的是图7中单元F的内部细节结构图。单元F由单元A,B以及八个数据选择器组成,信号间的连接和运算单元E完全相同。参考文献[1]R.L.Rivest,A.Shamir,andL.Adleman,“AMethodforObtainingDigitalSignaturesandPublic-KeyCryptosystems,”Comm.ACM,vol.21,no.2,pp.120-126,Feb.1978.[2]T.ElGamal,“APublicKeyCryptosystemandaSignatureSchemeBasedonDiscreteLogarithms,”IEEETrans.InformationTheory,vol.31,no.4,pp.469-472,July1985.[3]N.Koblitz,“EllipticCurveCryptosystems,”Math.Computation,vol.48,no.177,pp.203-209,Jan.1987.[4]P.L.Montgomery,“ModularMultiplicationwithoutTrialDivision,”Math.Computation,vol.44,no.170,pp.519-521,Apr.1985.[5]C.D.Walter,“SystolicModularMultiplication,”IEEETrans.Computers,vol.42,no.3,pp.376-378,Mar.1993.[6]D.E.Knuth,SeminumericalAlgorithms,vol.2,thirded.Addison-Wesley,1997.[7]J.Stein,“ComputationalProblemsAssociatedwithRacahAlgebra,”J.ComputationalPhysics,vol.1,pp.397-405,1967.[8]R.P.BrentandH.T.Kung,“SystolicVLSIArraysforLinear-TimeGCDComputation,”Proc.VLSI’83,pp.145-154,Aug.1983.[9]N.Takagi,“AVLSIAlgorithmforModularDivisionBasedontheBinaryGCDAlgorithm,”IEICETrans.Fundamentals,vol.E8l-A,no.5,pp.724-728,May1998.[10]M.E.KaiharaandN.Takagi,“AHardwareAlgorithmforModularMultiplication/Division,”IEEETrans.Computers,vol.54,no.1,pp.12-21,Jan.2005.[11]R.P.BrentandH.T.Kung,“ASystolicAlgorithmforIntegerGCDComputation,”Proc.SeventhSymp.ComputerArithmetic,pp.118-125,June1985.[12]T.Jebelean,“DesigningSystolicArraysforIntegerGCDComputation,”Proc.Int’lConf.ApplicationSpecificArrayProcessors,pp.295-301,Aug.1994.[13]W.-C.Tsai,C.B.Shung,andS.-J.Wang,“TwoSystolicArchitecturesforModularMultiplication,”IEEETrans.VLSISystems,vol.8,no.1,pp.103-107,Feb.2000.以上所述是本实用新型的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本实用新型所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本实用新型的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1