一种用于有限域GF(2的制作方法
未命名
09-22
阅读:57
评论:0
一种用于有限域gf(2m)的可配置模乘方法及系统
技术领域
1.本技术涉及可配置模乘方法,尤其涉及一种用于有限域gf(2m)的可配置模乘方法及系统,属于硬件信息安全技术领域。
背景技术:
2.非对称密码体系(又称公钥密码体系)作为现代密码学中的重要组成部分不仅有加密信息的编码技术,还有如数字签名和认证等安全服务。椭圆曲线密码算法(ecc)已经成为了公钥密码算法的主流算法。其具有安全性更高、计算速度更快、存储空间更小、带宽要求更低、抵御密码分析能力更强和硬件实现面积更小的特点。ecc已经被诸多国际和国家标准组织采纳为公钥密码标准(fips186-4、ieee p13634、ansi x9、iso/iec和secg等),我国也拥有自主研发的sm2椭圆曲线密码算法标准。在互联网方面,基于ecc的网络安全协议也得到了快速发展,例如ssl,tls,s/mime,wtls等均采用了ecc。影响ecc硬件系统性能的核心指标就是标量乘运算的速度,而有限域模乘作为关键单元,其计算时间大约占到标量乘整体运算时间的90%,因此模乘的性能好坏直接影响着整个ecc硬件系统的性能,模乘的研究也是当下的热点之一。
3.在有限域中元素的所有表示中,多项式基是最常用的,因为它可以匹配到任何没有外部电路的系统,而且比其它形式的基的复杂性要低得多。已经使用各种结构来实现多项式基模乘,如矩阵乘法、位并行、位串行、数字串行、脉动阵列等。其中脉动阵列结构是非常热的话题,因为其结构的简单性、规律性和模块化,以及使用流水线、并行处理等方式产生高吞吐量而拥有巨大潜力,非常适用于高性能加密应用。而上述模乘中大部分的只能支持特定的曲线上的模乘计算,只有小部分能支持多条曲线上的模乘,但是效率相对较低。因此需要构造一种高速且可配置的模乘算法和架构来提高模的计算效率。
技术实现要素:
4.在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
5.鉴于此,为解决现有技术的技术问题,本发明提供一种用于有限域gf(2m)的可配置模乘方法及系统。本发明通过优化原有限域gf(2m)乘法中所需的大数乘法,利用karatsuba算法将原需要9次计算的大数乘法减少至6次,降低了整体有限域gf(2m)模乘的复杂度;并且基于karatsuba算法提出新的分解方法,其分解结果非常适用于脉动阵列的结构;提出一种能够支持计算nist推荐的有限域gf(2m)曲线上模乘的可配置的约减方法,同时提出并行计算多条曲线的方法,在不增加原有面积的基础上,提高硬件资源利用率。提出一种新的基于三项karatsuba分解的可配置模乘算法和其脉动阵列的结构,对于计算复杂度大,寄存器数量多的问题,提出利用共享运算单元和共享寄存器思想,消除冗余的运算单
元和寄存器,以此来减小其面积,可以有效地提高计算效率和硬件利用率。
6.方案一、一种用于有限域gf(2m)的可配置模乘方法,包括以下步骤:
7.s1.输入位宽为571位的操作数a,b,将操作数a,b分别分解为3段192位的子操作数,并计算子操作数加法,当位宽不足时,进行高位补零;
8.s2.将子操作数再次进行分解,得到6组32位的子操作数;将每个32位子操作数继续分解得到8个4位的新子操作数;共得到48个4位的新子操作数,0≤i≤47,每8个4位的新子操作数为一组,共分为6组;
9.s3.计算模乘部分积,每组新子操作数对应一个部分积;t15个周期完成所有部分积计算,得到乘法结果;
10.s4.在t16周期将乘法结果进行约减,约减结果,即为最终的模乘结果。
11.优选的,计算模乘部分积的方法是:
12.同时计算6组新子操作数对应部分积的t1-t15周期,即g1、g2、g3、g4和g5;部分积包括子部分积g
i,j0
、g
i,j1
、g
i,j2
、g
i,j3
、g
i,j4
和g
i,j5
,其中0≤i≤5,0≤j≤7;
13.g
1,00
,g
2,00
,g
3,00
,g
4,00
,g
5,00
在t1周期与g
0,00
并行计算,计算方法如下:
14.在t1周期计算子部分积g
0,00
=ω0b0;
15.在t2周期计算子部分积g
0,01
=ω8b0x
32
+g
0,00
的同时计算g
0,10
=ω1b0;
16.在t3周期计算子部分积g
0,02
=ω
16
b0x
32
+g
0,01
的同时计算g
0,11
=ω9b0x
32
+g
0,10
和g
0,20
=ω2b0;
17.在t4周期计算子部分积g
0,03
=ω
24
b0x
32
+g
0,02
的同时计算g
0,12
=ω
17
b0x
32
+g
0,11
、g
0,21
=ω
10
b0x
32
+g
0,20
和g
0,30
=ω3b0;
18.在t5周期计算子部分积g
0,04
=ω
32
b0x
32
+g
0,03
的同时计算g
0,13
=ω
25
b0x
32
+g
0,12
、g
0,22
=ω
18
b0x
32
+g
0,21
、g
0,31
=ω
11
b0x
32
+g
0,30
和g
0,40
=ω4b0;
19.在t6周期计算子部分积g
0,0
=ω
40
b0x
32
+g
0,04
的同时计算g
0,14
=ω
33
b0x
32
+g
0,13
、g
0,23
=ω
26
b0x
32
+g
0,22
、g
0,32
=ω
19
b0x
32
+g
0,31
、g
0,41
=ω
12
b0x
32
+g
0,40
和g
0,50
=ω5b0;
20.在t7周期计算子部分积g
0,1
=ω
41
b0x
32
+g
0,14
的同时计算g
0,24
=ω
34
b0x
32
+g
0,23
、g
0,33
=ω
27
b0x
32
+g
0,32
、g
0,42
=ω
20
b0x
32
+g
0,41
、g
0,51
=ω
13
b0x
32
+g
0,50
和g
0,60
=ω6b0;
21.在t8周期计算子部分积g
0,2
=ω
42
b0x
32
+g
0,24
的同时计算g
0,34
=ω
35
b0x
32
+g
0,33
、g
0,43
=ω
28b0 x
32
+g
0,42
、g
0,52
=ω
21b0 x
32
+g
0,51
、g
0,61
=ω
14b0 x
32
+g
0,60
和g
0,70
=ω7b0;
22.在t9周期计算子部分积g
0,3
=ω
43
b0x
32
+g
0,34
的同时计算g
0,44
=ω
36
b0x
32
+g
0,43
、g
0,53
=ω
29
b0x
32
+g
0,52
、g
0,62
=ω
22
b0x
32
+g
0,61
和g
0,71
=ω
15
b0x
32
+g
0,70
;
23.在t10周期计算子部分积g
0,4
=ω
44
b0x
32
+g
0,44
的同时计算g
0,54
=ω
37
b0x
32
+g
0,53
、g
0,63
=ω
30
b0x
32
+g
0,62
和g
0,72
=ω
23
b0x
32
+g
0,71
;
24.在t11周期计算子部分积g
0,5
=ω
45
b0x
32
+g
0,54
的同时计算g
0,64
=ω
38
b0x
32
+g
0,63
和g
0,73
=ω
31
b0x
32
+g
0,72
25.在t12周期计算子部分积的g
0,6
=ω
46
b0x
32
+g
0,64
同时计算g
0,74
=ω
39
b0x
32
+g
0,73
;
26.在t13周期计算子部分积g
0,7
=ω
47
b0x
32
+g
0,74
;
27.同时,在t7周期对t6周期计算完成的g
0,0
、g
1,0
、g
2,0
、g
3,0
、g
4,0
和g
5,0
结果进行累加,得到累加部分积g
,0
=g
0,0
+g
1,0
+g
2,0
+g
3,0
+g
4,0
+g
5,0
;
28.在t8周期对t7周期计算完成的g
0,1
、g
1,1
、g
2,1
、g
3,1
、g
4,1
和g
5,1
结果进行累加,得到累
加部分积g
,1
=g
0,1
+g
1,1
+g
2,1
+g
3,1
+g
4,1
+g
5,1
;同时将g
,0
右移四位后与g
,1
相加,得到新的累加部分积g
,1。
29.在t9周期对t8周期计算完成的g
0,2
、g
1,2
、g
2,2
、g
3,2
、g
4,2
和g
5,2
结果进行累加,得到累加部分积g
,2
=g
0,2
+g
1,2
+g
2,2
+g
3,2
+g
4,2
+g
5,2
;同时将g
,1
右移四位后与g
,2
相加,得到新的累加部分积g
,2。
30.在t10周期对t9周期计算完成的g
0,3
、g
1,3
、g
2,3
、g
3,3
、g
4,3
和g
5,3
结果进行累加,得到累加部分基g
,3
=g
0,3
+g
1,3
+g
2,3
+g
3,3
+g
4,3
+g
5,3
;同时将g
,2
右移四位后与g
,3
相加,得到新的累加部分积g
,3。
31.在t11周期对t10周期计算完成的g
0,4
、g
1,4
、g
2,4
、g
3,4
、g
4,4
和g
5,4
结果进行累加,得到累加部分积g
,4
=g
0,4
+g
1,4
+g
2,4
+g
3,4
+g
4,4
+g
5,4
;同时将g
,3
右移四位后与g
,4
相加,得到新的累加部分积g
,4
。
32.在t12周期对t11周期计算完成的g
0,5
、g
1,5
、g
2,5
、g
3,5
、g
4,5
和g
5,5
结果进行累加,得到累加部分积g
,5
=g
0,5
+g
1,5
+g
2,5
+g
3,5
+g
4,5
+g
5,5
;同时将g
,4
右移四位后与g
,5
相加,得到新的累加部分积g
,5。
33.在t13周期对t12周期计算完成的g
0,6
、g
1,6
、g
2,6
、g
3,6
、g
4,6
和g
5,6
结果进行累加,得到累加部分积g
,6
=g
0,6
+g
1,6
+g
2,6
+g
3,6
+g
4,6
+g
5,6
;同时将g
,5
右移四位后与g
,6
相加,得到新的累加部分积g
,6。
34.在t14周期对t13周期计算完成的g
0,7
、g
1,7
、g
2,7
、g
3,7
、g
4,7
和g
5,7
结果进行累加,得到累加部分积g
,7
=g
0,7
+g
1,7
+g
2,7
+g
3,7
+g
4,7
+g
5,7
;同时将g
,6
右移四位后与g
,7
相加,得到新的累加部分积g
,7。
35.在t15周期将g
,7
右移一位,得到最终的乘法结果。
36.方案二、一种可配置模乘的脉动阵列系统,用于实现方案一所述一种用于有限域gf(2m)的可配置模乘方法的可配置模乘的脉动阵列系统,包括,1个预计算加法单元、6组脉动阵列单元、1个累加单元、2个移位运算单元和1个最终模加单元;其中每组阵列由6个处理单元pe组成,共计36个pe单元;
37.所述的预计算单元将输入的操作数a和操作b,分解为6段192位的子操作数a0、a1、a2和b0、b1、b2,并计算子操作数加法,得到a3、a4、a5和b3、b4、b5,当位宽不足时,进行高位补零;
38.所述脉动阵列单元,每组脉动阵列单元相互独立,每组脉动阵列单元中pe1的2个输入端分别获取模乘操作数a、b的两个子操作数,pe2的3个输入段分别获取a、b的两个子操作数和pe1的输出,pe3的3个输入端分别获取a、b的两个子操作数和pe2的输出,pe4的3个输入段分别获取a、b的两个子操作数和pe3的输出,pe5的3个输入段分别获取a、b的两个子操作数和pe4的输出,pe6的3个输入段分别获取a、b的两个子操作数和pe5的输出;
39.所述累加单元的6个输入端分别获取六组脉动阵列单元的输出,对脉动阵列单元的结果进行处理,每个周期处理一轮脉动阵列的结果;
40.所述移位运算单元的2个输入端分别获取累加单元输出的高位和低位,对累加单元的结果进行处理,每个周期处理一轮累加单元的结果;
41.所述最终模加单元的2个输入端分别两个移位运算单元的输出,对移位运算单元的输出进行约减运算,最终输出约减结果,其约减结果即为模乘的输出结果。
42.方案三、一种电子设备,包括存储器和处理器,存储器存储有计算机程序,所述的处理器执行所述计算机程序时实现方案一所述的一种用于有限域gf(2m)的可配置模乘方法的步骤。
43.方案四、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现方案一所述的一种用于有限域gf(2m)的可配置模乘方法。
44.本发明的有益效果如下:本发明可以保证在多条曲线上模乘的高性能计算,提高了模乘算法的灵活性和高性能。其最大频率可达2.0ghz,并且计算以此只需16个周期。总耗时8ns即可完成一次有限域gf(2m)下可配置的模乘运算,提高了模乘的运算速率。
附图说明
45.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
46.图1为一种用于有限域gf(2m)的可配置模乘方法流程示意图。
具体实施方式
47.为了使本技术实施例中的技术方案及优点更加清楚明白,以下结合附图对本技术的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本技术的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
48.实施例1、参照图1说明本实施方式,一种用于有限域gf(2m)的可配置模乘方法,基于三项karatsuba分解的可配置模乘,包括以下步骤:
49.s1.输入位宽为571位的操作数a,b,将操作数a,b分别分解为3段192位的子操作数,并计算子操作数加法,当位宽不足时,进行高位补零;
50.具体的,对操作数a分解得到3个192位的子操作数a0、a1和a2,类似地,对操作数b分解得到3个192位的子操作数b0、b1和b2。计算乘数a的子操作数加法结果包括:a3=a0+a1,a4=a0+a2,a5=a1+a2;即操作数a经过分解和相加一共得到6个子操作数a0、a1、a2、a3、a4和a5。类似的,计算乘数b的子操作数加法结果包括:b3=b0+b1,b4=b0+b2,b5=b1+b2;即操作数b经过分解和相加一共得到6个子操作数b0、b1、b2、b3、b4和b5。
51.具体的,基于karatsuba三项分解方法,执行s1;
52.所述的基于三项karatsuba分解的可配置模乘算法对有限域gf(2m)的模乘运算的特点进行改进,减少了一部分冗余的计算,提高了运算的灵活性,并且提高了运算的并行性减少了计算所需周期,适合完成限域gf(2m)的模乘运算。
53.s2.将子操作数再次进行分解,得到6组32位的子操作数;将每个32位子操作数继续分解得到8个4位的新子操作数;共得到48个4位的新子操作数,0≤i≤47,每8个4位的新子操作数为一组,共分为6组;
54.具体的,基于karatsuba三项分解方法,执行s2;
55.具体的,将子操作数a0、a1、a2、a3、a4和a5再次进行分解,当位宽不足时进行高位补零的操作。对子操作数a0分解得到6组32位的子操作数a
0,0
、a
0,1
、a
0,2
、a
0,3
、a
0,4
和a
0,5
,每个32位子操作数继续分解得到8个4位的新子操作数,对子操作数a
0,0
分解可以得到ω0、ω6、
ω
12
、ω
18
、ω
24
、ω
30
、ω
36
和ω
42
,类似地,对子操作数a
0,1
分解可以得到ω1、ω7、ω
13
、ω
19
、ω
25
、ω
31
、ω
37
和ω
43
,其他子操作数分解方法类似,不再赘述;即子操作数a0分解得到48个4位的新子操作数ωi,0≤i≤47,每8个新子操作数为一组,共分为6组。类似地,a1按照此分解原理进行分解,得到48个4位的新子操作数ωi,0≤i≤47,每8个新子操作数为一组,共分为6组。其余分解a2、a3、a4和a5均与上述方法相同;
56.将乘法计算时的计算复杂度从o(k2)降低至针对此特性,重新设计了的输入为571位的karatsuba算法这使得原需要9次完成的大数乘法计算仅需6次便可完成。然后对其数据进行进一步分解来简化部分积的计算,其分解结果非常适合于脉动阵列的结构。
57.s3.计算模乘部分积,每组新子操作数对应一个部分积;t15个周期完成所有部分积计算,计算模乘部分积的方法是:
58.同时计算6组新子操作数对应部分积的t1-t5周期,即g1、g2、g3、g4和g5;部分积包括子部分积g
i,j0
、g
i,j1
、g
i,j2
、g
i,j3
、g
i,j4
和g
i,j5
,其中0≤i≤5,0≤j≤7;
59.g
1,00
,g
2,00
,g
3,00
,g
4,00
,g
5,00
在t1周期与g
0,00
并行计算,计算方法如下:
60.在t1周期计算子部分积g
0,00
=ω0b0;
61.在t2周期计算子部分积g
0,01
=ω8b0x
32
+g
0,00
的同时计算g
0,10
=ω1b0;
62.在t3周期计算子部分积g
0,02
=ω
16
b0x
32
+g
0,01
的同时计算g
0,11
=ω9b0x
32
+g
0,10
和g
0,20
=ω2b0;
63.在t4周期计算子部分积g
0,03
=ω
24
b0x
32
+g
0,02
的同时计算g
0,12
=ω
17
b0x
32
+g
0,11
、g
0,21
=ω
10
b0x
32
+g
0,20
和g
0,30
=ω3b0;
64.在t5周期计算子部分积g
0,04
=ω
32
b0x
32
+g
0,03
的同时计算g
0,13
=ω
25
b0x
32
+g
0,12
、g
0,22
=ω
18
b0x
32
+g
0,21
、g
0,31
=ω
11
b0x
32
+g
0,30
和g
0,40
=ω4b0;
65.在t6周期计算子部分积g
0,0
=ω
40
b0x
32
+g
0,04
的同时计算g
0,14
=ω
33
b0x
32
+g
0,13
、g
0,23
=ω
26
b0x
32
+g
0,22
、g
0,32
=ω
19
b0x
32
+g
0,31
、g
0,41
=ω
12
b0x
32
+g
0,40
和g
0,50
=ω5b0;
66.在t7周期计算子部分积g
0,1
=ω
41
b0x
32
+g
0,14
的同时计算g
0,24
=ω
34
b0x
32
+g
0,23
、g
0,33
=ω
27
b0x
32
+g
0,32
、g
0,42
=ω
20
b0x
32
+g
0,41
、g
0,51
=ω
13
b0x
32
+g
0,50
和g
0,60
=ω6b0;
67.在t8周期计算子部分积g
0,2
=ω
42
b0x
32
+g
0,24
的同时计算g
0,34
=ω
35
b0x
32
+g
0,33
、g
0,43
=ω
28b0 x
32
+g
0,42
、g
0,52
=ω
21b0 x
32
+g
0,51
、g
0,61
=ω
14b0 x
32
+g
0,60
和g
0,70
=ω7b0;
68.在t9周期计算子部分积g
0,3
=ω
43
b0x
32
+g
0,34
的同时计算g
0,44
=ω
36
b0x
32
+g
0,43
、g
0,53
=ω
29
b0x
32
+g
0,52
、g
0,62
=ω
22
b0x
32
+g
0,61
和g
0,71
=ω
15
b0x
32
+g
0,70
;
69.在t10周期计算子部分积g
0,4
=ω
44
b0x
32
+g
0,44
的同时计算g
0,54
=ω
37
b0x
32
+g
0,53
、g
0,63
=ω
30
b0x
32
+g
0,62
和g
0,72
=ω
23
b0x
32
+g
0,71
;
70.在t11周期计算子部分积g
0,5
=ω
45
b0x
32
+g
0,54
的同时计算g
0,64
=ω
38
b0x
32
+g
0,63
和g
0,73
=ω
31
b0x
32
+g
0,72
71.在t12周期计算子部分积的g
0,6
=ω
46
b0x
32
+g
0,64
同时计算g
0,74
=ω
39
b0x
32
+g
0,73
;
72.在t13周期计算子部分积g
0,7
=ω
47
b0x
32
+g
0,74
;
73.同时,在t7周期对t6周期计算完成的g
0,0
、g
1,0
、g
2,0
、g
3,0
、g
4,0
和g
5,0
结果进行累加,得到累加部分积g
,0
=g
0,0
+g
1,0
+g
2,0
+g
3,0
+g
4,0
+g
5,0
;
74.在t8周期对t7周期计算完成的g
0,1
、g
1,1
、g
2,1
、g
3,1
、g
4,1
和g
5,1
结果进行累加,得到累加部分积g
,1
=g
0,1
+g
1,1
+g
2,1
+g
3,1
+g
4,1
+g
5,1
;同时将g
,0
右移四位后与g
,1
相加,得到新的累加部分积g
,1
。
75.在t9周期对t8周期计算完成的g
0,2
、g
1,2
、g
2,2
、g
3,2
、g
4,2
和g
5,2
结果进行累加,得到累加部分积g
,2
=g
0,2
+g
1,2
+g
2,2
+g
3,2
+g
4,2
+g
5,2
;同时将g
,1
右移四位后与g
,2
相加,得到新的累加部分积g
,2。
76.在t10周期对t9周期计算完成的g
0,3
、g
1,3
、g
2,3
、g
3,3
、g
4,3
和g
5,3
结果进行累加,得到累加部分基g
,3
=g
0,3
+g
1,3
+g
2,3
+g
3,3
+g
4,3
+g
5,3
;同时将g
,2
右移四位后与g
,3
相加,得到新的累加部分积g
,3。
77.在t11周期对t10周期计算完成的g
0,4
、g
1,4
、g
2,4
、g
3,4
、g
4,4
和g
5,4
结果进行累加,得到累加部分积g
,4
=g
0,4
+g
1,4
+g
2,4
+g
3,4
+g
4,4
+g
5,4
;同时将g
,3
右移四位后与g
,4
相加,得到新的累加部分积g
,4
。
78.在t12周期对t11周期计算完成的g
0,5
、g
1,5
、g
2,5
、g
3,5
、g
4,5
和g
5,5
结果进行累加,得到累加部分积g
,5
=g
0,5
+g
1,5
+g
2,5
+g
3,5
+g
4,5
+g
5,5
;同时将g
,4
右移四位后与g
,5
相加,得到新的累加部分积g
,5。
79.在t13周期对t12周期计算完成的g
0,6
、g
1,6
、g
2,6
、g
3,6
、g
4,6
和g
5,6
结果进行累加,得到累加部分积g
,6
=g
0,6
+g
1,6
+g
2,6
+g
3,6
+g
4,6
+g
5,6
;同时将g
,5
右移四位后与g
,6
相加,得到新的累加部分积g
,6。
80.在t14周期对t13周期计算完成的g
0,7
、g
1,7
、g
2,7
、g
3,7
、g
4,7
和g
5,7
结果进行累加,得到累加部分积g
,7
=g
0,7
+g
1,7
+g
2,7
+g
3,7
+g
4,7
+g
5,7
;同时将g
,6
右移四位后与g
,7
相加,得到新的累加部分积g
,7。
81.在t15周期将g
,7
右移一位,得到最终的乘法结果。
82.s4.在t16周期将乘法结果进行约减,约减结果,即为最终的模乘结果。
83.具体的,由于每条需要计算的曲线的不可约多项式基都不相同,首先利用可配置模约减思想,将不同的不可约多项式基整合为一个可配置的不可约多项式,根据控制信号的不同选择曲线,其次,利用共享寄存器的思想,选择一个合适的寄存器代替原本计算每条曲线需要单独寄存器寄存,同样根据控制信号来选择需要寄存的计算完成的结果;最后,为了避免运算单元的浪费,在计算位宽较小的曲线时,在高位和低位同时输入两组操作数,来实现并行计算两组操作数的目的,进一步提高利用率和性能。
84.基于三项karatsuba分解的可配置模乘算法如下所示:
[0085][0086]
实施例2、一种可配置模乘的脉动阵列系统,用于实现一种用于有限域gf(2m)的可配置模乘方法的可配置模乘的脉动阵列系统,包括,1个预计算加法单元、6组脉动阵列单元、1个累加单元、2个移位运算单元和1个最终模加单元;其中每组阵列由6个处理单元pe组成,共计36个pe单元;
[0087]
所述的预计算单元将输入的操作数a和操作b,分解为6段192位的子操作数a0、a1、a2和b0、b1、b2,并计算子操作数加法,得到a3、a4、a5和b3、b4、b5,当位宽不足时,进行高位补零;
[0088]
所述脉动阵列单元,每组脉动阵列单元相互独立,每组脉动阵列单元中pe1的2个输入端分别获取模乘操作数a、b的两个子操作数,pe2的3个输入段分别获取a、b的两个子操作数和pe1的输出,pe3的3个输入端分别获取a、b的两个子操作数和pe2的输出,pe4的3个输入段分别获取a、b的两个子操作数和pe3的输出,pe5的3个输入段分别获取a、b的两个子操作数和pe4的输出,pe6的3个输入段分别获取a、b的两个子操作数和pe5的输出;
[0089]
所述累加单元的6个输入端分别获取六组脉动阵列单元的输出,对脉动阵列单元
的结果进行处理,每个周期处理一轮脉动阵列的结果;
[0090]
所述移位运算单元的2个输入端分别获取累加单元输出的高位和低位,对累加单元的结果进行处理,每个周期处理一轮累加单元的结果;
[0091]
所述最终模加单元的2个输入端分别两个移位运算单元的输出,对移位运算单元的输出进行约减运算,最终输出约减结果,其约减结果即为模乘的输出结果。
[0092]
具体的,一种可配置模乘的脉动阵列系统特点是规则化,结构简单;每六个处理单元组成一组脉动阵列,共六组脉动阵列,每组脉动阵列相互独立,互不干扰;六组脉动阵列并行计算,产生的结果传输到累加单元中;累加单元的功能是将六组脉动阵列的结果按算法中的步骤进行一系列相加整合,累加单元的结果传递给两个移位计算单元中,进行移位相加的计算;然后将移位计算单元的结果传输到最终模加单元中,进行模约减操作,最终得到模乘的输出结果。
[0093]
实施例3、本发明的计算机装置可以是包括有处理器以及存储器等装置,例如包含中央处理器的单片机等。并且,处理器用于执行存储器中存储的计算机程序时实现上述的一种用于有限域gf(2m)的可配置模乘方法的步骤。
[0094]
所称处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0095]
所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0096]
实施例4、计算机可读存储介质实施例
[0097]
本发明的计算机可读存储介质可以是被计算机装置的处理器所读取的任何形式的存储介质,包括但不限于非易失性存储器、易失性存储器、铁电存储器等,计算机可读存储介质上存储有计算机程序,当计算机装置的处理器读取并执行存储器中所存储的计算机程序时,可以实现上述的一种用于有限域gf(2m)的可配置模乘方法的步骤。
[0098]
所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0099]
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域
内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
技术特征:
1.一种用于有限域gf(2
m
)的可配置模乘方法,其特征在于,包括以下步骤:s1.输入位宽为571位的操作数a,b,将操作数a,b分别分解为3段192位的子操作数,并计算子操作数加法,当位宽不足时,进行高位补零;s2.将子操作数再次进行分解,得到6组32位的子操作数;将每个32位子操作数继续分解得到8个4位的新子操作数;共得到48个4位的新子操作数,0≤i≤47,每8个4位的新子操作数为一组,共分为6组;s3.计算模乘部分积,每组新子操作数对应一个部分积;t15个周期完成所有部分积计算,得到乘法结果;s4.在t16周期将乘法结果进行约减,约减结果,即为最终的模乘结果。2.根据权利要求1所述一种用于有限域gf(2
m
)的可配置模乘方法,其特征在于,计算模乘部分积的方法是:同时计算6组新子操作数对应部分积的t1-t15周期,即g1、g2、g3、g4和g5;部分积包括子部分积g
i,j0
、g
i,j1
、g
i,j2
、g
i,j3
、g
i,j4
和g
i,j5
,其中0≤i≤5,0≤j≤7;g
1,00
,g
2,00
,g
3,00
,g
4,00
,g
5,00
在t1周期与g
0,00
并行计算,计算方法如下:在t1周期计算子部分积g
0,00
=ω0b0;在t2周期计算子部分积g
0,01
=ω8b0x
32
+g
0,00
的同时计算g
0,10
=ω1b0;在t3周期计算子部分积g
0,02
=ω
16
b0x
32
+g
0,01
的同时计算g
0,11
=ω9b0x
32
+g
0,10
和g
0,20
=ω2b0;在t4周期计算子部分积g
0,03
=ω
24
b0x
32
+g
0,02
的同时计算g
0,12
=ω
17
b0x
32
+g
0,11
、g
0,21
=ω
10
b0x
32
+g
0,20
和g
0,30
=ω3b0;在t5周期计算子部分积g
0,04
=ω
32
b0x
32
+g
0,03
的同时计算g
0,13
=ω
25
b0x
32
+g
0,12
、g
0,22
=ω
18
b0x
32
+g
0,21
、g
0,31
=ω
11
b0x
32
+g
0,30
和g
0,40
=ω4b0;在t6周期计算子部分积g
0,0
=ω
40
b0x
32
+g
0,04
的同时计算g
0,14
=ω
33
b0x
32
+g
0,13
、g
0,23
=ω
26
b0x
32
+g
0,22
、g
0,32
=ω
19
b0x
32
+g
0,31
、g
0,41
=ω
12
b0x
32
+g
0,40
和g
0,50
=ω5b0;在t7周期计算子部分积g
0,1
=ω
41
b0x
32
+g
0,14
的同时计算g
0,24
=ω
34
b0x
32
+g
0,23
、g
0,33
=ω
27
b0x
32
+g
0,32
、g
0,42
=ω
20
b0x
32
+g
0,41
、g
0,51
=ω
13
b0x
32
+g
0,50
和g
0,60
=ω6b0;在t8周期计算子部分积g
0,2
=ω
42
b0x
32
+g
0,24
的同时计算g
0,34
=ω
35
b0x
32
+g
0,33
、g
0,43
=ω
28
b0x
32
+g
0,42
、g
0,52
=ω
21
b0x
32
+g
0,51
、g
0,61
=ω
14
b0x
32
+g
0,60
和g
0,70
=ω7b0;在t9周期计算子部分积g
0,3
=ω
43
b0x
32
+g
0,34
的同时计算g
0,44
=ω
36
b0x
32
+g
0,43
、g
0,53
=ω
29
b0x
32
+g
0,52
、g
0,62
=ω
22
b0x
32
+g
0,61
和g
0,71
=ω
15
b0x
32
+g
0,70
;在t10周期计算子部分积g
0,4
=ω
44
b0x
32
+g
0,44
的同时计算g
0,54
=ω
37
b0x
32
+g
0,53
、g
0,63
=ω
30
b0x
32
+g
0,62
和g
0,72
=ω
23
b0x
32
+g
0,71
;在t11周期计算子部分积g
0,5
=ω
45
b0x
32
+g
0,54
的同时计算g
0,64
=ω
38
b0x
32
+g
0,63
和g
0,73
=ω
31
b0x
32
+g
0,72
;在t12周期计算子部分积的g
0,6
=ω
46
b0x
32
+g
0,64
同时计算g
0,74
=ω
39
b0x
32
+g
0,73
;在t13周期计算子部分积g
0,7
=ω
47
b0x
32
+g
0,74
。同时,在t7周期对t6周期计算完成的g
0,0
、g
1,0
、g
2,0
、g
3,0
、g
4,0
和g
5,0
结果进行累加,得到累加部分积g
,0
=g
0,0
+g
1,0
+g
2,0
+g
3,0
+g
4,0
+g
5,0
;在t8周期对t7周期计算完成的g
0,1
、g
1,1
、g
2,1
、g
3,1
、g
4,1
和g
5,1
结果进行累加,得到累加部
分积g
,1
=g
0,1
+g
1,1
+g
2,1
+g
3,1
+g
4,1
+g
5,1
;同时将g
,0
右移四位后与g
,1
相加,得到新的累加部分积g
,1
。在t9周期对t8周期计算完成的g
0,2
、g
1,2
、g
2,2
、g
3,2
、g
4,2
和g
5,2
结果进行累加,得到累加部分积g
,2
=g
0,2
+g
1,2
+g
2,2
+g
3,2
+g
4,2
+g
5,2
;同时将g
,1
右移四位后与g
,2
相加,得到新的累加部分积g
,2
。在t10周期对t9周期计算完成的g
0,3
、g
1,3
、g
2,3
、g
3,3
、g
4,3
和g
5,3
结果进行累加,得到累加部分基g
,3
=g
0,3
+g
1,3
+g
2,3
+g
3,3
+g
4,3
+g
5,3
;同时将g
,2
右移四位后与g
,3
相加,得到新的累加部分积g
,3
。在t11周期对t10周期计算完成的g
0,4
、g
1,4
、g
2,4
、g
3,4
、g
4,4
和g
5,4
结果进行累加,得到累加部分积g
,4
=g
0,4
+g
1,4
+g
2,4
+g
3,4
+g
4,4
+g
5,4
;同时将g
,3
右移四位后与g
,4
相加,得到新的累加部分积g
,4
。在t12周期对t11周期计算完成的g
0,5
、g
1,5
、g
2,5
、g
3,5
、g
4,5
和g
5,5
结果进行累加,得到累加部分积g
,5
=g
0,5
+g
1,5
+g
2,5
+g
3,5
+g
4,5
+g
5,5
;同时将g
,4
右移四位后与g
,5
相加,得到新的累加部分积g
,5
。在t13周期对t12周期计算完成的g
0,6
、g
1,6
、g
2,6
、g
3,6
、g
4,6
和g
5,6
结果进行累加,得到累加部分积g
,6
=g
0,6
+g
1,6
+g
2,6
+g
3,6
+g
4,6
+g
5,6
;同时将g
,5
右移四位后与g
,6
相加,得到新的累加部分积g
,6
。在t14周期对t13周期计算完成的g
0,7
、g
1,7
、g
2,7
、g
3,7
、g
4,7
和g
5,7
结果进行累加,得到累加部分积g
,7
=g
0,7
+g
1,7
+g
2,7
+g
3,7
+g
4,7
+g
5,7
;同时将g
,6
右移四位后与g
,7
相加,得到新的累加部分积g
,7
。在t15周期将g
,7
右移一位,得到最终的乘法结果。3.一种可配置模乘的脉动阵列系统,其特征在于,用于实现权利要求1或2所述一种用于有限域gf(2
m
)的可配置模乘方法的可配置模乘的脉动阵列系统,包括,1个预计算加法单元、6组脉动阵列单元、1个累加单元、2个移位运算单元和1个最终模加单元;其中每组阵列由6个处理单元pe组成,共计36个pe单元;所述的预计算单元将输入的操作数a和操作b,分解为6段192位的子操作数a0、a1、a2和b0、b1、b2,并计算子操作数加法,得到a3、a4、a5和b3、b4、b5,当位宽不足时,进行高位补零;所述脉动阵列单元,每组脉动阵列单元相互独立,每组脉动阵列单元中pe1的2个输入端分别获取模乘操作数a、b的两个子操作数,pe2的3个输入段分别获取a、b的两个子操作数和pe1的输出,pe3的3个输入端分别获取a、b的两个子操作数和pe2的输出,pe4的3个输入段分别获取a、b的两个子操作数和pe3的输出,pe5的3个输入段分别获取a、b的两个子操作数和pe4的输出,pe6的3个输入段分别获取a、b的两个子操作数和pe5的输出;所述累加单元的6个输入端分别获取六组脉动阵列单元的输出,对脉动阵列单元的结果进行处理,每个周期处理一轮脉动阵列的结果;所述移位运算单元的2个输入端分别获取累加单元输出的高位和低位,对累加单元的结果进行处理,每个周期处理一轮累加单元的结果;所述最终模加单元的2个输入端分别两个移位运算单元的输出,对移位运算单元的输出进行约减运算,最终输出约减结果,其约减结果即为模乘的输出结果。4.一种电子设备,其特征在于,包括存储器和处理器,存储器存储有计算机程序,所述
的处理器执行所述计算机程序时实现权利要求1或2所述的一种用于有限域gf(2
m
)的可配置模乘方法的步骤。5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1或2所述的一种用于有限域gf(2
m
)的可配置模乘方法。
技术总结
本发明提出一种用于有限域GF(2
技术研发人员:赵石磊 胡殿坤 黄海 刘志伟 于斌 马超 吴英东
受保护的技术使用者:中数(深圳)时代科技有限公司
技术研发日:2023.06.15
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种综合转鼓测试台基础惯量标定计算的方法与流程 下一篇:一种二维Ti3C2T