本技術(shù)涉及計(jì)算機(jī),尤其涉及一種蝶形運(yùn)算單元和蝶形運(yùn)算單元陣列。
背景技術(shù):
1、公鑰密碼學(xué)逐漸成為現(xiàn)代信息社會(huì)的底層支撐技術(shù),為系統(tǒng)及其數(shù)據(jù)提供安全保障。然而,廣泛使用的公鑰密碼協(xié)議將因量子計(jì)算機(jī)的興起而變得不安全,對(duì)此,業(yè)內(nèi)啟動(dòng)了后量子密碼(post-quantum?cryptography,pqc)標(biāo)準(zhǔn)化進(jìn)程,為下一代密碼系統(tǒng)建立量子安全的公鑰密碼標(biāo)準(zhǔn)。
2、其中,kyber密鑰封裝機(jī)制和dilithium數(shù)字簽名方案這兩種基于格的算法,被用作量子安全的公鑰密碼標(biāo)準(zhǔn)。kyber和dilithium的安全基礎(chǔ)都建立在模格帶誤差學(xué)習(xí)(modular?learning-with-error,mlwe)問題上,因此兩種算法均涉及多項(xiàng)式矩陣-向量乘操作,該操作包含大量多項(xiàng)式環(huán)上的多項(xiàng)式乘法操作和多項(xiàng)式累加操作,其中多項(xiàng)式系數(shù)的逐點(diǎn)加、減、乘操作均定義在有限域上。作為后量子密碼算法主要標(biāo)準(zhǔn),kyber和dilithium共同的性能瓶頸是通過計(jì)算機(jī)cpu執(zhí)行多項(xiàng)式矩陣-向量乘操作時(shí)的計(jì)算速度瓶頸。
技術(shù)實(shí)現(xiàn)思路
1、針對(duì)上述技術(shù)現(xiàn)狀,本技術(shù)提出一種蝶形運(yùn)算單元和蝶形運(yùn)算單元陣列,能夠提高多項(xiàng)式矩陣-向量乘操作的計(jì)算速度。
2、本技術(shù)第一方面提出一種蝶形運(yùn)算單元,包括:
3、模乘運(yùn)算模塊、模減運(yùn)算模塊和模加運(yùn)算模塊;
4、其中,在第一運(yùn)算模式下,所述模乘運(yùn)算模塊對(duì)接收的第一系數(shù)和第二系數(shù)進(jìn)行模減運(yùn)算得到模減結(jié)果,對(duì)所述模減結(jié)果的模乘1/2結(jié)果和旋轉(zhuǎn)因子進(jìn)行模乘運(yùn)算輸出第二模乘運(yùn)算結(jié)果,所述模減運(yùn)算模塊接收所述第二模乘運(yùn)算結(jié)果并輸出所述第二模乘運(yùn)算結(jié)果,所述模加運(yùn)算模塊對(duì)接收的所述第一系數(shù)和所述第二系數(shù)進(jìn)行模加運(yùn)算得到第二模加運(yùn)算結(jié)果,并輸出所述第二模加運(yùn)算結(jié)果的模乘1/2結(jié)果;
5、或者,
6、在第二運(yùn)算模式下,所述模乘運(yùn)算模塊對(duì)接收的第二系數(shù)和旋轉(zhuǎn)因子進(jìn)行模乘運(yùn)算輸出第一模乘運(yùn)算結(jié)果,所述模減運(yùn)算模塊對(duì)接收的第一系數(shù)和所述第一模乘運(yùn)算結(jié)果進(jìn)行模減運(yùn)算輸出第一模減運(yùn)算結(jié)果,所述模加運(yùn)算模塊對(duì)接收的所述第一系數(shù)和所述第一模乘運(yùn)算結(jié)果進(jìn)行模加運(yùn)算輸出第一模加運(yùn)算結(jié)果。
7、在一些實(shí)現(xiàn)方式中,所述模乘運(yùn)算模塊,包括:
8、第一模減器、第一模乘1/2器、模乘器;
9、所述第一模減器對(duì)接收的第一系數(shù)和第二系數(shù)進(jìn)行模減運(yùn)算輸出模減結(jié)果,所述第一模乘1/2器對(duì)所述模減結(jié)果進(jìn)行運(yùn)算輸出所述模減結(jié)果的模乘1/2結(jié)果;
10、所述模乘器對(duì)接收的所述第二系數(shù)和旋轉(zhuǎn)因子進(jìn)行模乘運(yùn)算輸出第一模乘運(yùn)算結(jié)果,或者,對(duì)所述模減結(jié)果的模乘1/2結(jié)果和所述旋轉(zhuǎn)因子進(jìn)行模乘運(yùn)算輸出第二模乘運(yùn)算結(jié)果。
11、在一些實(shí)現(xiàn)方式中,所述模乘運(yùn)算模塊還包括第一多選器;
12、所述第一多選器的第一輸入端與所述第一模乘1/2器的輸出端相連,所述第一多選器的第二輸入端與所述第二系數(shù)的輸入端相連,所述第一多選器的輸出端與所述模乘器的輸入端相連;
13、所述第一多選器的控制端口與選通控制信號(hào)輸入端相連,在所述第一運(yùn)算模式下,所述第一多選器的控制端口接收第一選通控制信號(hào),所述第一多選器的第一輸入端與所述第一多選器的輸出端導(dǎo)通;在所述第二運(yùn)算模式下,所述第一多選器的控制端口接收第二選通控制信號(hào),所述第一多選器的第二輸入端與所述第一多選器的輸出端導(dǎo)通。
14、在一些實(shí)現(xiàn)方式中,所述模加運(yùn)算模塊,包括:
15、模加器和第二模乘1/2器;
16、所述模加器對(duì)接收的所述第一系數(shù)和所述第一模乘運(yùn)算結(jié)果進(jìn)行模加運(yùn)算輸出第一模加運(yùn)算結(jié)果,或者,對(duì)接收的所述第一系數(shù)和所述第二系數(shù)進(jìn)行模加運(yùn)算得到第二模加運(yùn)算結(jié)果;
17、所述第二模乘1/2器對(duì)所述模加器輸出的模加運(yùn)算結(jié)果進(jìn)行模乘1/2運(yùn)算輸出模加運(yùn)算結(jié)果的模乘1/2結(jié)果。
18、在一些實(shí)現(xiàn)方式中,所述模加運(yùn)算模塊,還包括:
19、第二多選器和第三多選器;
20、所述第二多選器的第一輸入端與所述第二系數(shù)的輸入端相連,所述第二多選器的第二輸入端與所述模乘運(yùn)算模塊的輸出端相連,所述第二多選器的輸出端與所述模加器的輸入端相連;
21、所述第三多選器的第一輸入端與所述第二模乘1/2器的輸出端相連,所述第三多選器的第二輸入端與所述模加器的輸出端相連;
22、所述第二多選器的控制端口和所述第三多選器的控制端口分別與選通控制信號(hào)輸入端相連;
23、在所述第一運(yùn)算模式下,所述第二多選器的控制端口和所述第三多選器的控制端口分別接收第一選通控制信號(hào),所述第二多選器的第一輸入端與所述第二多選器的輸出端相連,所述第三多選器的第一輸入端與所述第三多選器的輸出端導(dǎo)通;
24、在所述第二運(yùn)算模式下,所述第二多選器的控制端口和所述第三多選器的控制端口分別接收第二選通控制信號(hào),所述第二多選器的第二輸入端與所述第二多選器的輸出端導(dǎo)通,所述第三多選器的第二輸入端與所述第三多選器的輸出端導(dǎo)通。
25、在一些實(shí)現(xiàn)方式中,所述模減運(yùn)算模塊,包括:
26、第二模減器,用于對(duì)接收的所述第一系數(shù)和所述第一模乘運(yùn)算結(jié)果進(jìn)行模減運(yùn)算輸出第一模減運(yùn)算結(jié)果;
27、所述第二模減器的控制端口與減法控制信號(hào)輸入端相連;
28、在所述第二運(yùn)算模式下,所述第二模減器的控制端口接收第一減法控制信號(hào),所述減法器計(jì)算所述第一系數(shù)減去所述第一模乘運(yùn)算結(jié)果的差,得到第一模減運(yùn)算結(jié)果。
29、在一些實(shí)現(xiàn)方式中,所述模減運(yùn)算模塊還包括第四多選器;
30、所述第四多選器的第一輸入端與所述模乘運(yùn)算模塊的輸出端相連,所述第四多選器的第二輸入端與所述第二模減器的輸出端相連;
31、所述第四多選器的控制端口與選通控制信號(hào)輸入端相連;
32、在所述第一運(yùn)算模式下,所述第四多選器的控制端口接收第一選通控制信號(hào),所述第四多選器的第一輸入端與所述第四多選器的輸出端導(dǎo)通;
33、在所述第二運(yùn)算模式下,所述第四多選器的控制端口接收第二選通控制信號(hào),所述第四多選器的第二輸入端與所述第四多選器的輸出端導(dǎo)通。
34、在一些實(shí)現(xiàn)方式中,還包括:
35、第一寄存器和第二寄存器;
36、所述第一寄存器的輸入端與所述模加運(yùn)算模塊的輸出端相連,用于對(duì)所述模加運(yùn)算模塊的輸出信號(hào)進(jìn)行時(shí)序優(yōu)化;
37、所述第二寄存器的輸入端與所述模減運(yùn)算模塊的輸出端相連,用于對(duì)所述模減運(yùn)算模塊的輸出信號(hào)進(jìn)行時(shí)序優(yōu)化。
38、本技術(shù)第二方面提出一種蝶形運(yùn)算單元陣列,包括:
39、第一多選器組件、第二多選器組件、第一蝶形運(yùn)算單元和第二蝶形運(yùn)算單元,所述第一蝶形運(yùn)算單元和所述第二蝶形運(yùn)算單元均采用上述的蝶形運(yùn)算單元的結(jié)構(gòu);所述第一多選器組件和所述第二多選器組件分別包括多個(gè)級(jí)聯(lián)的多選器;
40、所述第一多選器組件與所述第一蝶形運(yùn)算單元相連,所述第二多選器組件與所述第二蝶形運(yùn)算單元相連;
41、在所述第一蝶形運(yùn)算單元和所述第二蝶形運(yùn)算單元處于所述第二運(yùn)算模式的情況下,所述第一多選器組件將第i個(gè)第一系數(shù)和第i個(gè)第二系數(shù)輸入所述第一蝶形運(yùn)算單元,所述第一蝶形運(yùn)算單元對(duì)所述第i個(gè)第一系數(shù)和所述第i個(gè)第二系數(shù)進(jìn)行模加運(yùn)算、模減運(yùn)算和模乘運(yùn)算中的至少一種運(yùn)算;所述第二多選器組件將第i+1個(gè)第一系數(shù)和第i+1個(gè)第二系數(shù)輸入所述第二蝶形運(yùn)算單元,所述第二蝶形運(yùn)算單元對(duì)所述第i+1個(gè)第一系數(shù)和所述第i+1格第二系數(shù)進(jìn)行模加運(yùn)算、模減運(yùn)算和模乘運(yùn)算中的至少一種運(yùn)算;所述i為正整數(shù)。
42、在一些實(shí)現(xiàn)方式中,所述蝶形運(yùn)算單元陣列還包括:
43、或者,在所述第一蝶形運(yùn)算單元和所述第二蝶形運(yùn)算單元處于所述第二運(yùn)算模式的情況下,所述第一多選器組件將第i個(gè)第一系數(shù)、第i個(gè)第二系數(shù)以及前i個(gè)第一系數(shù)和第二系數(shù)的累加和輸入所述第一蝶形運(yùn)算單元,所述第一蝶形運(yùn)算單元對(duì)所述第i個(gè)第一系數(shù)、所述第i個(gè)第二系數(shù)以及所述前i個(gè)第一系數(shù)和第二系數(shù)的累加和進(jìn)行模乘累加運(yùn)算;所述第二多選器組件將第i+1個(gè)第一系數(shù)、第i+1個(gè)第二系數(shù)以及前i+1個(gè)第一系數(shù)和第二系數(shù)的累加和輸入所述第二蝶形運(yùn)算單元,所述第二蝶形運(yùn)算單元對(duì)所述第i+1個(gè)第一系數(shù)、所述第i+1個(gè)第二系數(shù)以及所述前i+1個(gè)第一系數(shù)和第二系數(shù)的累加和進(jìn)行模乘累加運(yùn)算。
44、在一些實(shí)現(xiàn)方式中,所述蝶形運(yùn)算單元陣列還包括:
45、第三蝶形運(yùn)算單元、第四蝶形運(yùn)算單元、第五蝶形運(yùn)算單元和第六蝶形運(yùn)算單元;所述第三蝶形運(yùn)算單元、所述第四蝶形運(yùn)算單元、所述第五蝶形運(yùn)算單元和所述第六蝶形運(yùn)算單元均采用上述的蝶形運(yùn)算單元的結(jié)構(gòu);
46、所述第三蝶形運(yùn)算單元的第一系數(shù)輸入端與所述第一蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端相連,所述第三蝶形運(yùn)算單元的第二系數(shù)輸入端與所述第二蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端相連;
47、所述第四蝶形運(yùn)算單元的第一系數(shù)輸入端與所述第一蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端和所述第二蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端相連,所述第四蝶形運(yùn)算單元的第二系數(shù)輸入端與所述第二蝶形運(yùn)算單元的模加運(yùn)算模塊的輸出端相連;
48、所述第五蝶形運(yùn)算單元的第一系數(shù)輸入端與所述第三蝶形運(yùn)算單元的模加運(yùn)算模塊的輸出端相連;
49、所述第六蝶形運(yùn)算單元的第一系數(shù)輸入端與所述第四蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端相連;
50、在所述第一蝶形運(yùn)算單元和所述第二蝶形運(yùn)算單元處于第三運(yùn)算模式,并且所述第三蝶形運(yùn)算單元和所述第四蝶形運(yùn)算單元的模減器的控制端口接收第二減法控制信號(hào)的情況下,所述第一多選器組件將第2i個(gè)第一系數(shù)、第2i個(gè)第二系數(shù)和第2i+1個(gè)第一系數(shù)輸入所述第一蝶形運(yùn)算單元,所述第二多選器組件將第2i個(gè)第二系數(shù)、第2i+1個(gè)第一系數(shù)和第2i+1個(gè)第二系數(shù)輸入所述第二蝶形運(yùn)算單元,所述蝶形運(yùn)算單元陣列執(zhí)行對(duì)第一系數(shù)和第二系數(shù)的基模乘累加運(yùn)算。
51、在一些實(shí)現(xiàn)方式中,所述第一多選器組件,包括:
52、第五多選器、第六多選器、第七多選器、第八多選器、第九多選器、第十多選器;
53、所述第五多選器的第一輸入端與前i個(gè)第一系數(shù)和第二系數(shù)的累加和信號(hào)輸入端相連,所述第五多選器的第二輸入端與0信號(hào)輸入端相連,所述第五多選器的輸出端與所述第六多選器的第一輸入端相連;
54、所述第六多選器的輸出端與所述第一蝶形運(yùn)算單元的第一系數(shù)輸入端相連,所述第六多選器的第二輸入端與所述第七多選器的輸出端相連;
55、所述第七多選器的第一輸入端與第i個(gè)第一系數(shù)的輸入端相連,所述第七多選器的第二輸入端與第2i+1個(gè)第一系數(shù)的輸入端相連;
56、所述第八多選器的第一輸入端與1信號(hào)輸入端相連,所述第八多選器的第二輸入端與第2i個(gè)第二系數(shù)的輸入端相連,所述第八多選器的輸出端與第九多選器的第二輸入端相連;
57、所述第九多選器的第一輸入端與第i個(gè)第一系數(shù)的輸入端相連,所述第九多選器的輸出端與所述第一蝶形運(yùn)算單元的旋轉(zhuǎn)因子輸入端相連;
58、所述第十多選器的第一輸入端與第i個(gè)第二系數(shù)的輸入端相連,所述第十多選器的第二輸入端與第2i個(gè)第一系數(shù)的輸入端相連,所述第十多選器的輸出端與所述第一蝶形運(yùn)算單元的第二系數(shù)的輸入端相連;
59、所述第五多選器、所述第六多選器、所述第七多選器、所述第八多選器、所述第九多選器、所述第十多選器各自的控制端口在接收到第一選通控制信號(hào)的情況下,其第二輸入端與其輸出端導(dǎo)通;所述第五多選器、所述第六多選器、所述第七多選器、所述第八多選器、所述第九多選器、所述第十多選器各自的控制端口在接收到第二選通控制信號(hào)的情況下,其第一輸入端與其輸出端導(dǎo)通。
60、在一些實(shí)現(xiàn)方式中,所述第二多選器組件,包括:
61、第十一多選器、第十二多選器、第十三多選器、第十四多選器、第十五多選器、第十六多選器;
62、所述第十一多選器的第一輸入端與前i+1個(gè)第一系數(shù)和第二系數(shù)的累加和信號(hào)輸入端相連,所述第十一多選器的第二輸入端與0信號(hào)輸入端相連,所述第十一多選器的輸出端與所述第十二多選器的第一輸入端相連;
63、所述第十二多選器的輸出端與所述第二蝶形運(yùn)算單元的第一系數(shù)輸入端相連,所述第十二多選器的第二輸入端與所述第十三多選器的輸出端相連;
64、所述第十三多選器的第一輸入端與第i+1個(gè)第一系數(shù)的輸入端相連,所述第十三多選器的第二輸入端與第2i個(gè)第二系數(shù)的輸入端相連;
65、所述第十四多選器的第一輸入端與1信號(hào)輸入端相連,所述第十四多選器的第二輸入端與第2i+1個(gè)第一系數(shù)的輸入端相連,所述第十四多選器的輸出端與第十五多選器的第二輸入端相連;
66、所述第十五多選器的第一輸入端與第i+1個(gè)第一系數(shù)的輸入端相連,所述第十五多選器的輸出端與所述第二蝶形運(yùn)算單元的旋轉(zhuǎn)因子輸入端相連;
67、所述第十六多選器的第一輸入端與第i+1個(gè)第二系數(shù)的輸入端相連,所述第十六多選器的第二輸入端與第2i+1個(gè)第二系數(shù)的輸入端相連,所述第十六多選器的輸出端與所述第二蝶形運(yùn)算單元的第二系數(shù)的輸入端相連;
68、所述第十一多選器、所述第十二多選器、所述第十三多選器、所述第十四多選器、所述第十五多選器、所述第十六多選器各自的控制端口在接收到第一選通控制信號(hào)的情況下,其第二輸入端與其輸出端導(dǎo)通;所述第十一多選器、所述第十二多選器、所述第十三多選器、所述第十四多選器、所述第十五多選器、所述第十六多選器各自的控制端口在接收到第二選通控制信號(hào)的情況下,其第一輸入端與其輸出端導(dǎo)通。
69、在一些實(shí)現(xiàn)方式中,所述蝶形運(yùn)算單元這列還包括一個(gè)獨(dú)立模加器,
70、所述第四蝶形運(yùn)算單元的第一系數(shù)輸入端與所述第一蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端和所述第二蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端相連,包括:
71、所述第一蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端和所述第二蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端與所述獨(dú)立模加器的輸入端相連,所述獨(dú)立模加器的輸出端與所述第四蝶形運(yùn)算單元的第一系數(shù)輸入端相連。
72、在一些實(shí)現(xiàn)方式中,還包括第十七多選器、第十八多選器、第十九多選器和第二十多選器;
73、所述第十七多選器的第一輸入端與前2i個(gè)第一系數(shù)和第二系數(shù)的累加和信號(hào)的輸入端相連,所述第十七多選器的第二輸入端與0信號(hào)的輸入端相連;
74、所述第十八多選器的第一輸入端與前2i+1個(gè)第一系數(shù)和第二系數(shù)的累加和信號(hào)的輸入端相連,所述第十七多選器的第二輸入端與0信號(hào)的輸入端相連;
75、所述第十九多選器的第一輸入端與所述第一蝶形運(yùn)算單元的模加運(yùn)算模塊的輸出端相連,所述第十九多選器的第二輸入端與所述第一蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端相連,所述第十九多選器的第三輸入端與所述第五蝶形運(yùn)算單元的模加運(yùn)算模塊的輸出端相連;
76、所述第二十多選器的第一輸入端與所述第二蝶形運(yùn)算單元的模加運(yùn)算模塊的輸出端相連,所述第二十多選器的第二輸入端與所述第二蝶形運(yùn)算單元的模減運(yùn)算模塊的輸出端相連,所述第二十多選器的第三輸入端與所述第六蝶形運(yùn)算單元的模加運(yùn)算模塊的輸出端相連;
77、所述第十七多選器、所述第十八多選器各自的控制端口在接收到第一選通控制信號(hào)的情況下,其第二輸入端與其輸出端導(dǎo)通;所述第十七多選器、所述第十八多選器各自的控制端口在接收到第二選通控制信號(hào)的情況下,其第一輸入端與其輸出端導(dǎo)通;
78、所述第十九多選器、所述第二十多選器各自的控制端口在接收到第一選通控制信號(hào)的情況下,其第二輸入端與其輸出端導(dǎo)通;所述第十九多選器、所述第二十多選器各自的控制端口在接收到第二選通控制信號(hào)的情況下,其第一輸入端與其輸出端導(dǎo)通;所述第十九多選器、所述第二十多選器各自的控制端口在接收到第三選通控制信號(hào)的情況下,其第三輸入端與其輸出端導(dǎo)通。
79、本技術(shù)提出的蝶形運(yùn)算單元可以實(shí)現(xiàn)ntt算法的運(yùn)算,具體可以實(shí)現(xiàn)nwc-ntt的ct蝶形運(yùn)算,還能夠?qū)崿F(xiàn)nwc-inverse?ntt的gs蝶形運(yùn)算。因此,將該蝶形運(yùn)算單元用于執(zhí)行多項(xiàng)式矩陣-向量乘操作可以降低計(jì)算復(fù)雜度,實(shí)現(xiàn)ntt運(yùn)算的硬件加速,提高多項(xiàng)式矩陣-向量乘操作的計(jì)算速度。
80、并且,本技術(shù)將多個(gè)上述的蝶形運(yùn)算單元級(jí)聯(lián)構(gòu)成蝶形運(yùn)算單元陣列,該蝶形運(yùn)算單元陣列在控制吸納后的控制下,可以執(zhí)行多種格基后量子密碼所使用的有限域上的多項(xiàng)式操作,包括模加、模減、模乘、以及復(fù)雜的bma操作,從而進(jìn)一步提高了蝶形運(yùn)算單元中運(yùn)算資源的利用率,以及擴(kuò)大了蝶形運(yùn)算單元的應(yīng)用范圍。