Page 77 - 《软件学报》2025年第10期
P. 77

4474                                                      软件学报  2025  年第  36  卷第  10  期


                                                         (0,l×32), 可完整遍历  BRAM_y 单元的所有地址位, 读取数据
                 算需求. 具体地, 计数器     raddr RO  的工作范围设定为
                 并进行对应的重排序操作, 并基于表           1  给出的映射规则和时钟延迟生成           BRAM_RO  单元的写地址     waddr RO . 另一
                                                               ctr k  启动并完成一次  32  时钟周期的循环遍历, 用于生
                 方面, 矩阵   A 中的一个完整的多项式采样生成后, 主计数器
                 成  BRAM_RO  单元的读地址. 在此基础上, 辅计数器          ctr k_v2  在延迟  8  个时钟周期后开始启动, 并生成    32  个自然顺
                 序排列的写地址数据, 从而完成一次完整的点乘运算. 需要注意的是, 重排序操作持续运行并先于第                              1  次点乘运算
                 启动时间至少     32  个时钟周期, 这样的设计可避免两个过程的时序冲突, 确保运算结果的正确性.

                       cycle#  1 2 3 4  5 6 7 8 9  ...  33 34 35 36 37 38 39 40 41  42 34 35 36 37 38 39 40 41  ...
                      raddr_2  0 1 2 3 4 5 6 7 8  ...  32 33 34 35 36 37 38 39 40  41 42 43 44 45 46 47 48 49  ...
                               delay 4 cycles    ...                                             ...
                      waddr_2          0 8 16 24 1   7 15 23 31 32 40 48 56 33  41 49 57 34 42 50 58 19 43
                      raddr_1   delay 32 cycles, reorder the first poly   0  1 2  3  4  5  6 7  8  9 10 11 12 13 14 15 16 17  ...
                                                             delay 8 cycles                      ...
                      waddr_1                                            0  1  2  3  4  5  6  7 8  9
                                         图 7 针对乘法累加运算的同步访存逻辑运算规则

                  3.7   分段式时序状态设计
                    根据第   3.1  节关于脉动阵列单元的设计特点可知, 在硬件延迟时间固定的前提下, 增加单次参与运算的数据
                 量可有效提升时钟周期资源的利用率. 本文以脉动阵列单元的运算特点为基础, 以向量而非多项式为运算的基本
                 单位, 并充分考虑签名运算的具体过程, 提出一种分段式时序状态控制逻辑 (如图                        8  所示), 其核心思路是将签名运
                 算的核心计算流程进行细粒度的解构, 根据运算类型的差异将其重组为多个专用运算组并统一参与运算, 极大地
                 提高了核心运算单元的吞吐率, 从而提升了硬件架构的整体运行效率.


                   Zeta      Sigma
                                                       Rho                                    Rho
                                                                                                   tr
                  Hash_0  SHAKE 256  SHAKE 256  …  SHAKE 128   …           SHAKE 256       SHAKE 256

                                             1 s                                          s 2
                  Sample_0             CBD                ExpandA  A               CBD

                  Hash_1       SHAKE 256  …       SHAKE 128   …             SHAKE 256

                  Sample_1             CBD                ExpandA  A               CBD   2 s

                                           1 s
                                                                                            =
                  PolyArith                     sˆ 1 = NTT(s 1 )  ˆ t = ˆ  1 s · A ˆ  t=NTT −1 (t) ˆ  t+ s 2
                  PowerRound                                                              t 0  t 1
                                                       K                                          Secret key
                                                                                                  Public key
                                               图 8 密钥生成算法时序控制逻辑

                    将上述的时序控制设计思路在签名运算过程中进行具象化实现, 以数据量最大的安全等级                              5  为例. 首先, 将向

                 量组  (s 1 , s 2 , t 0 ) 中的多项式系数统一送入脉动阵列单元进行正向数论变换, 输入端共消耗             732  个时钟周期, 综合考
                 虑  96  个时钟周期的固定延迟时间, 此运算过程的有效时间利用率为                  88%. 其次, 采样运算同步进行并生成向量           y
                 的多项式系数, 同样使用脉动阵列单元实现正向数论变换, 此时输入端消耗                        224  个时钟周期, 有效时间利用率为
   72   73   74   75   76   77   78   79   80   81   82