当前位置: 首页 > 专利查询>中山大学专利>正文

一种多标量乘法器及加速方法技术

技术编号:39250239 阅读:9 留言:0更新日期:2023-10-30 12:02
本发明专利技术涉及多标量乘法技术领域,公开了一种多标量乘法器及加速方法,多标量乘法器包括主控状态机、桶数据存储器、桶状态存储器、桶读写控制器、双入单出队列、点加法器、标量分割器和点取反器,通过判断状态可以检测到对某一累加中间过程的桶的多次碰撞,并运用加法结合律加快运算,提高点加法器的利用率,提升性能,在桶累加状态中通过追踪每个累加中间过程的桶的状态来对碰撞进行检测和处理,降低了设计难度。度。度。

【技术实现步骤摘要】
一种多标量乘法器及加速方法


[0001]本专利技术涉及多标量乘法
,特别是涉及一种多标量乘法器及加速方法。

技术介绍

[0002]pippenger算法是一种可以有效加速多标量乘法运算的算法。多标量乘法广泛应用于零知识证明,椭圆曲线密码学等领域。
[0003]多标量乘法指的是如下所示的运算:
[0004][0005]其中是一个由N个位宽为W的标量组成的向量,是一个由N个提前确定好的椭圆曲线上的点组成的向量。它们的多标量乘法结果Q即为它们的向量内积。椭圆曲线是一种常用的密码学原语,其上的点所支持的基本运算操作包括点加(PADD,Point Addition)和标量点乘(PMULT,Point Multiplication)。通过类似于移位加法的方式,PMULT操作可以被拆分为多个PADD操作。PADD操作由一系列的大位宽有限域计算组成,例如对于BLS12

377椭圆曲线,其上的PADD操作由12次位宽为377的模乘操作组成。如果使用这样的加法运算来构建乘法,假设标量的每一位是1的概率为50%,则进行一次PMULT所需的PADD操作次数约为1.5W,进行一次多标量乘法所需的PADD操作次数约为1.5WN,在N和W很大时,这样的一个计算将相当耗时。
[0006]面对这样的问题,pippenger算法被提出,pippenger算法共分为三步,分别是桶累加步骤,桶聚合步骤和块聚合步骤。在桶累加步骤,对于标量位宽为W的多标量乘法,将每个标量都分成G块位宽为s的标量,其中准备G组,每组数量为2
s
的桶,第j组的第k个桶用于存储所有第j块标量为k的点的累加结果。在所有桶都将属于自己的点累加完成后,进入桶聚合步骤,将每一块中的所有桶中的数据乘以该桶所对应的标量值后再累加,得到每一块的计算结果。最后进入块聚合步骤,将第j个块的累加结果翻倍js次,最后将所有翻倍后的块累加,即可得到多标量乘法的结果。为了节省内存,可将每块标量都视作一个有符号数,这样每组桶的数量都可以降到2
s
‑1个。在N很大时,该方法所需要的PADD操作次数约为可以为多标量乘法带来巨大的性能提升。
[0007]pippenger算法同样适用于在FPGA上加速多标量乘法。FPGA上通常使用吞吐率为每周期1个点的点加法器执行PADD操作,该加法器通常有较高的延迟,而较高的延迟容易带来桶碰撞的问题,即某个桶中的点正处于计算阶段,还未被加法器输出时,一个新的属于该桶的点被输入。现有技术的解决方法一般都是追踪流水线中的数据,当数据碰撞发生时在加法器流水线中插入气泡等待计算完成或使用一个缓存暂存该点。这样做经常会带来性能的下降,且当加法器流水线级数增加时,也会带来设计复杂度的提升。
[0008]现有技术公开了一种基于FPGA的低成本流水线型FFT处理器实现方法,包括多个
连接在一起形成数据处理流水线的FFT运算处理单元,每个所述FFT运算处理单元包括:一由基2频率抽取FFT算法产生的蝶形运算单元、一MSR

CORDIC处理器、一组用于延时和暂存数据的移位寄存器;所述MSR

CORDIC处理器由一用于存储建模得到的控制字的查找表控制,该现有技术存在通过追踪加法器流水线来判定是否发生碰撞会带来性能下降和设计难度提升的问题。

技术实现思路

[0009]本专利技术的目的是:提供一种多标量乘法器及加速方法,以解决现有技术中存在通过追踪加法器流水线来判定是否发生碰撞会带来性能下降和设计难度提升的问题。
[0010]为了实现上述目的,本专利技术提供了一种多标量乘法器,包括:
[0011]主控状态机,用于根据计算步骤控制电路的工作状态;
[0012]桶数据存储器,用于在桶累加步骤中为每一个累加中间过程的桶提供一个点的位宽大小的存储空间,为深度为2
s
‑1G,宽度为一个点的位宽大小的真双口随机存取存储器,有两个独立的端口,每周期分别可以执行一次读操作或一次写操作,每个累加中间过程的桶的存储空间用于暂存该桶累加过程中的中间结果;
[0013]桶状态存储器,为一个深度为2
s
‑1G、宽度为1比特的存储器,对外提供两个读端口,读出的内容是该编号下的桶中目前的数据是否有效,这两个读端口分别用于在桶累加阶段为外界的输入和来自点加法器的输出提供累加中间过程的桶的状态查询服务,并可以被更新;
[0014]桶读写控制器,用于根据主控状态机的状态以及桶状态存储器的输出对桶数据存储器进行操作;
[0015]双入单出队列,用于缓存来自桶读写控制器的两个加法请求并在每个周期向点加法器发起一次加法请求;
[0016]点加法器,用于在每个周期执行一次椭圆曲线上的点之间的加法,并存储当前正在进行计算的每个数据的标量块编号和标量桶编号;
[0017]标量分割器,用于将标量分割为多个长度为s的标量块;
[0018]点取反器,用于对点进行取反计算。
[0019]本专利技术还提供一种上述的多标量乘法器的加速方法,包括:
[0020]S1、获取参与计算的标量和点,主控状态机位于刷新状态,桶状态存储器的所有地址的值置0,刷新状态结束后,主控状态机进入桶累加状态,参与计算的标量和点依次输入标量分割器;
[0021]S2、参与计算的标量被标量分割器分割成标量块,所述标量块包含标量块编号和标量桶编号,参与计算的点输入点取反器;
[0022]S3、经过点取反器取反后的点和标量块编号、标量桶编号输入桶状态存储器,从桶状态存储器中读出状态并更新状态,并根据输出的状态判断是否需要将点写入桶数据存储器或从桶数据存储器中读出点与之相加,同时,点加法器的输出端也在计算完成后,输出点和标量块编号、标量桶编号到桶状态存储器中,由桶状态存储器判断状态,并根据输出的状态判断是否需要将点写入桶数据存储器或从桶数据存储器中读出点与之相加,获得累加桶;
[0023]S4、在所有参与计算的标量和点都输入后,等待双入单出队列变空,当双入单出队列连续变空的时钟周期超过点加法器的延迟时,桶累加状态结束,主控状态机进入桶聚合状态;
[0024]S5、桶聚合状态下,对累加桶进行聚合,桶读写控制器会从对应地址读出需要计算的累加桶,并将计算得到的结果写回到桶数据存储器中,获得聚合块;
[0025]S6、桶聚合状态结束,主控状态机进入块聚合状态,对聚合块进行聚合,即可得到多标量乘法的计算结果。
[0026]优选的,在步骤S2中,标量分割器根据pippenger算法将标量分割为多个长度为s的标量块;
[0027]在步骤S5中,对每个标量块中的2
s
‑1个累加桶进行聚合,桶读写控制器会从对应地址读出需要计算的累加桶,并将计算得到的结果写回到桶数据存储器中,获得G个聚合块;
[0028]在步骤S6中,对G个聚合块进行聚合。
[0029]优选的,在步骤S2中,所述标量块编号和本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多标量乘法器,包括:主控状态机,用于根据计算步骤控制电路的工作状态;桶数据存储器,用于在桶累加步骤中为每一个累加中间过程的桶提供一个点的位宽大小的存储空间,为深度为2
s
‑1G,宽度为一个点的位宽大小的真双口随机存取存储器,有两个独立的端口,每周期分别可以执行一次读操作或一次写操作,每个累加中间过程的桶的存储空间用于暂存该桶累加过程中的中间结果;桶状态存储器,为一个深度为2
s
‑1G、宽度为1比特的存储器,对外提供两个读端口,读出的内容是该编号下的桶中目前的数据是否有效,这两个读端口分别用于在桶累加阶段为外界的输入和来自点加法器的输出提供累加中间过程的桶的状态查询服务,并可以被更新;桶读写控制器,用于根据主控状态机的状态以及桶状态存储器的输出对桶数据存储器进行操作;双入单出队列,用于缓存来自桶读写控制器的两个加法请求并在每个周期向点加法器发起一次加法请求;点加法器,用于在每个周期执行一次椭圆曲线上的点之间的加法,并存储当前正在进行计算的每个数据的标量块编号和标量桶编号;标量分割器,用于将标量分割为多个长度为s的标量块;点取反器,用于对点进行取反计算。2.一种基于权利要求1所述的多标量乘法器的加速方法,包括:S1、获取参与计算的标量和点,主控状态机位于刷新状态,桶状态存储器的所有地址的值置0,刷新状态结束后,主控状态机进入桶累加状态,参与计算的标量和点依次输入标量分割器;S2、参与计算的标量被标量分割器分割成标量块,所述标量块包含标量块编号和标量桶编号,参与计算的点输入点取反器;S3、经过点取反器取反后的点和标量块编号、标量桶编号输入桶状态存储器,从桶状态存储器中读出状态并更新状态,并根据输出的状态判断是否需要将点写入桶数据存储器或从桶数据存储器中读出点与之相加,同时,点加法器的输出端也在计算完成后,输出点和标量块编号、标量桶编号到桶状态存储器中,由桶状态存储器判断状态,并根据输出的状态判断是否需要将点写入桶数据存储器或从桶数据存储器中读出点与之相加,获得累加桶;S4、在所有参与计算的标量和点都输入后,等待双入单出队列变空,当双入单出队列连续变空的时钟周期超过点加法器的延迟时,桶累加状态结束,主控状态机进入桶聚合状态;S5、桶聚合状态下,对累加桶进行聚合,桶读写控制器会从对应地址读出需要计算的累加桶,并将计算得到的结果写回到桶数据存储器中,获得聚合块;S6、桶聚合状态结束,主控状态机进入块聚合状态,对聚合块进行聚合,即可得到多标量乘法的计算结果。3.根据权利要求2所述的一种多标量乘法器的加速方法,其特征在于:在步骤S2中,标量分割器根据pippenger算法将标量分割为多个长度为s的标量块;在步骤S5中,对每个标量块中的2
s
‑1个累加桶进行聚合,桶读写控制器会从对应地址读出需要计算的累加桶,并将计算得到的结果写回到桶数据存储器中,获得G个聚合块;在步骤S6中,对G个聚合块进行聚合。
4.根据权利要求2所述的一种多标量乘法器的加速方法,其特征在于:在步骤S...

【专利技术属性】
技术研发人员:黄以华赵宝泽
申请(专利权)人:中山大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1