发明内容
本发明的目的是克服现有技术中的不足,提供一种椭圆曲线密码算法中标量乘的加速系统。
为了达到上述目的,本发明是通过以下技术方案实现的:
一种椭圆曲线密码算法中标量乘的加速系统,包括输入模块、处理模块、输出模块,处理模块包括去零逻辑模块、去零标志缓存模块、去零累加流水缓存模块、点加流水线模块、去零累加缓存模块、点倍流水线模块、点倍缓存模块、解压逻辑模块,所述输入模块与去零逻辑模块相连,所述去零标志缓存模块、去零累加流水缓存模块、点加流水线模块、点倍流水线模块都与去零逻辑模块相连,所述点加流水线模块与去零累加缓存模块相连,所述点倍流水线模块与点倍缓存模块相连,所述去零标志缓存模块、去零累加流水缓存模块、去零累加缓存模块、点倍缓存模块都与解压逻辑模块相连,所述解压逻辑模块与输出模块相连。
作为优选,输入模块用于输入标量比特流(Scalar_bit stream)、点数据P。
作为优选,点加流水线模块用于进行点加操作。
作为优选,点倍流水线模块用于进行点倍操作。
作为优选,解压逻辑模块用于进行解压操作。
作为优选,去零逻辑模块用于对标量比特流Scalar_bit stream进行位压缩,同时将压缩功能的标志进行同步。
作为优选,所述输入模块、输出模块通过DDR4内存条或者PCIE接口进行存储。
本发明的有益效果如下:本发明的标量比特流位判断模块将标量比特流中的无效位消除,极大的减小了点加的计算次数,从而大幅度降低标量乘的计算复杂度,同时除零逻辑模块将压缩标志以及累加结果进行同步,解压逻辑模块根据压缩标志对累加结果进行选择,保证点加和点倍流水线的一致性,提高了标量乘系统的效率。
具体实施方式
下面结合说明书附图对本发明的技术方案作进一步说明:
如图1所示,一种椭圆曲线密码算法中标量乘的加速系统,包括输入模块1、处理模块11、输出模块10,处理模块11包括去零逻辑模块2、去零标志缓存模块3、去零累加流水缓存模块4、点加流水线模块5、去零累加缓存模块7、点倍流水线模块6、点倍缓存模块8、解压逻辑模块9,所述输入模块1与去零逻辑模块2相连,所述去零标志缓存模块3、去零累加流水缓存模块4、点加流水线模块5、点倍流水线模块6都与去零逻辑模块2相连,所述点加流水线模块5与去零累加缓存模块7相连,所述点倍流水线模块6与点倍缓存模块8相连,所述去零标志缓存模块3、去零累加流水缓存模块4、去零累加缓存模块7、点倍缓存模块8都与解压逻辑模块9相连,所述解压逻辑模块9与输出模块10相连。
输入模块1用于输入标量比特流Scalar_bit stream、点数据P。点加流水线模块5用于进行点加操作,点倍流水线模块6用于进行点倍操作,解压逻辑模块9用于进行解压操作,去零逻辑模块2用于对标量(scalar)进行位压缩,同时将压缩功能的标志进行同步。
如图1所示,输入模块1输入的数据遵循AXI流接口协议,输入模块1输入的数据为标量比特流Scalar_bit stream、点数据P,标量(scalar)为n0位大小的数据,假设n0为10位,然后标量(scalar)为10’b10_1010_1010,标量(scalar)的每一位决定“点加”和“点倍”操作是否执行,“标量(scalar)[i]=1”时,进行“点加”和“点倍”操作,否则不执行,scalar[9]、scalar[7]、scalar[5]、scalar[3]执行“点加”操作,scalar[9]、scalar[8]、scalar[7]、scalar[6]、scalar[5]、scalar[4]、scalar[3]、scalar[2]、scalar[1]执行“点倍”操作。如图2所示,输入的数据流经输入模块传输进去零逻辑模块2,压缩处理完成后输入到下一级模块,包括去零标志缓存模块3、去零累加流水缓存模块4、点加流水线模块5、点倍流水线模块6。
如图1所示,去零标志缓存模块3和去零累加流水缓存模块4分别对压缩标志信号、累加信号与流水线进行同步,同步级数取决于流水线深度n2和n3,假设n2为2,n3为3,去零标志缓存模块3中数据依次为1、0、1、0、1、0、1、0、1、0,去零累加流水缓存模块4中数据依次为0、2P、2P、10P、10P、42P、42P、170P、170P、682P。
如图1所示,点加流水线模块5进行点加算法的实现,流水级数为n2,为了方便说明,n2=28,处理完成后,交由去零累加缓存模块3进行缓存。假设标量(scalar)=10’b10_1010_1010,分别进行依次点加操作ACC0(21P+23P)、ACC1(ACC0+25P)、ACC2(ACC1+27P)、ACC3(ACC2+29P);
如图1所示,点倍流水线模块6进行“点倍”算法的实现,流水级数为n3,为了方便说明,n3=19,处理完成后,交由“点倍缓存模块8进行缓存。假设标量(scalar)=10’b10_1010_1010,分别进行依次点倍操作21P、22P、23P、24P、25P、26P、27P、28P、29P。
上述模块处理完成后,交由解压逻辑模块9进行解压操作。解压逻辑模块9输出点加的结果(21P+23P+25P+27P+29P),即scalar*P,点倍的结果21P、22P、23P、24P、25P、26P、27P、28P、29P;
完成后的数据遵循AXI流接口协议进行输出,进行下一轮的“点加”和“点倍”操作。
如图2所示,去零逻辑模块2完成对输入标量(scalar)的位压缩,同时将压缩功能的相关标志进行同步,减少“点加”的操作次数,从而达到减少计算资源的目的。
如图1所示,输入模块1输入的数据为标量比特流Scalar_bit stream、点数据P,标量比特流Scalar_bit stream的标量比特流位进行有效位判断,位有效时进行点加运算并缓存数据,否则跳过点加运算并保存当前数据。解压逻辑模块9根据去零标志缓存模块3进行结果数据切换,有效时选择点加累加缓存模块7的数据作为输出,否则选择去零累加缓存模块4的数据作为输出,将输出缓存。假设标量(scalar)=10’b10_1010_1010,第一步判断Scalar[0]为0,不进行点加计算,点加结果存入去零累加流水缓存模块4中,点倍流水线模块6计算点倍21P;第二步判断Scalar[1]为1,点倍流水线模块6计算点倍22P,点加流水线模块5计算点加(21P+0),结果缓存在去零累加缓存模块7中;第三步判断Scalar[2]为0,点倍流水线模块6计算23P,点加结果写入去零累加流水缓存模块4中;第四步判断Scalar[3]为1,点倍流水线模块6计算点倍(24P),点加流水线模块5计算点加(23P+21P+0),结果缓存在去零累加缓存模块7中,依次类推直到完成Scalar[9]的判断,点加流水线模块5完成点加(29P+27P+25P+23P+21P)。
解压逻辑模块9模块完成对数据流的解压。
如图1所示,解压逻辑模块9根据去零标志缓存模块3进行结果数据切换,有效时选择去零累加缓存模块7的数据作为输出,否则选择去零累加流水缓存模块4的数据作为输出,同时将点倍数据输出缓存。假设Scalar=10’b10_1010_1010,Scalar[0]为0,解压逻辑模块9选择去零累加流水缓存模块4的数据作为输出;Scalar[1]为1,解压逻辑模块9选择去零累加缓存模块7的数据作为输出;Scalar[2]为0,解压逻辑模块9选择去零累加流水缓存模块4的数据作为输出;Scalar[3]为1,解压逻辑模块9选择去零累加缓存模块7的数据作为输出,依次类推直到完成Scalar[9]的判断解压。
输入模块1、输出模块10通过DDR4内存条进行存储。
如图2所示,输入模块1、输出模块10也可通过PCIE接口进行存储,即将图1去掉DDR缓存,采用PCIE接口直接读取数据,如图2所示,处理模块11流水线级数为M,初始时数据读取模块依次读取M个数据包(每个数据包括标量、点数据),数据选择模块14将M个数据包依次送入处理模块11进行处理,完成一次处理循环次数加1,循环次数小于256(标量的位宽为256位)时,结果送入缓存单元;循环次数等于256时,结果送入PCIE接口进行存储。处理模块11输出的数据包括计数器、标量、累加和点倍,循环256次后只将累加和数据送至PCIE接口进行存储,其他数据清零。数据读取模块12根据缓存单元13数据量进行输入数据的读取,缓存单元数据量小于M个时,读取输入数据,否则不读取。数据选择模块按照轮询方式对缓存单元和数据读取模块进行优先级仲裁,选中的数据送入处理模块进行处理。
本发明的标量比特流位判断模块将标量比特流中的无效位消除,极大的减小了点加的计算次数,从而大幅度降低标量乘的计算复杂度,同时除零逻辑模块将压缩标志以及累加结果进行同步,切换开关模块根据压缩标志对累加结果进行选择,保证点加和点倍流水线的一致性,提高了标量乘系统的效率。
需要注意的是,以上列举的仅是本发明的一种具体实施例。显然,本发明不限于以上实施例,还可以有许多变形,总之,本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。