CN115033293A - 零知识证明硬件加速器及生成方法、电子设备和存储介质 - Google Patents

零知识证明硬件加速器及生成方法、电子设备和存储介质 Download PDF

Info

Publication number
CN115033293A
CN115033293A CN202210692280.1A CN202210692280A CN115033293A CN 115033293 A CN115033293 A CN 115033293A CN 202210692280 A CN202210692280 A CN 202210692280A CN 115033293 A CN115033293 A CN 115033293A
Authority
CN
China
Prior art keywords
fast fourier
fourier transform
polynomial
data
processing module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210692280.1A
Other languages
English (en)
Inventor
张烨
董江彬
毛兴中
任欢庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Zhixin Huaxi Information Technology Co ltd
Original Assignee
Shenzhen Zhixin Huaxi Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Zhixin Huaxi Information Technology Co ltd filed Critical Shenzhen Zhixin Huaxi Information Technology Co ltd
Priority to CN202210692280.1A priority Critical patent/CN115033293A/zh
Publication of CN115033293A publication Critical patent/CN115033293A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种零知识证明硬件加速器及生成方法、电子设备和存储介质。零知识证明硬件加速器包括多项式处理模块、椭圆曲线处理模块和接口控制模块。多项式处理模块用于对第一输入数据进行处理得到多项式系数。多项式处理模块包括多个第一计算单元,每个第一计算单元均可通过流水线方式实现快速傅里叶变换和快速傅里叶逆变换。椭圆曲线处理模块用于对第二输入数据和多项式系数进行椭圆曲线处理得到证明。接口控制模块用于控制多项式处理模块和椭圆曲线处理模块的数据输入接口、参数输入接口和输出接口分别访问不同的存储器。通过多项式处理模块、椭圆曲线处理模块和接口控制模块在证明生成过程中,节省运算过程的资源,加快证明生成的速度。

Description

零知识证明硬件加速器及生成方法、电子设备和存储介质
技术领域
本发明涉及消费性电子技术,特别涉及一种零知识证明硬件加速器及生成方法、电子设备和存储介质。
背景技术
零知识证明是一种非常有用的保护隐私的密码学协议,它可以广泛的使用在区块链等诸多应用场景中。证明者可以通过零知识证明向验证者证明自己知道某知识的同时不泄露有关该知识本身的任何信息。
一种叫做非交互简洁零知识证明(zero-knowledge Succinct Non-interactiveArgument of Knowledge,也常被缩写为zk-SNARK)的协议是目前最广泛采用的零知识证明的协议。对于一个给定的程序和结果,证明者可以通过zk-SNARK生成一个常数大小的证明(proof)来向验证者证明该结果为程序正确运行的结果。尽管zk-SNARK协议中验证者的验证时间非常短,但是证明者生成证明的时间非常长。目前实际使用zk-SNARK的最大障碍就是生成证明的过程,它包含了大规模的有限域上的多项式计算和大量的椭圆曲线上的点乘,从而这一过程非常耗时。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明需要提供一种零知识证明硬件加速器及生成方法、电子设备和存储介质。
本申请实施方式提供的零知识证明硬件加速器包括:
多项式处理模块,所述多项式处理模块用于对第一输入数据进行处理得到多项式系数,所述多项式处理模块包括多个第一计算单元,每个所述第一计算单元均可通过流水线方式实现快速傅里叶变换和快速傅里叶逆变换;和
椭圆曲线处理模块,所述椭圆曲线处理模块用于对第二输入数据和所述多项式系数进行椭圆曲线处理得到证明;和
接口控制模块,所述接口控制模块用于控制所述多项式处理模块和所述椭圆曲线处理模块的数据输入接口、参数输入接口和输出接口分别访问不同的存储器。
本申请实施方式的多项式处理模块通过数值域上的快速傅里叶变换(NTT)和快速傅里叶逆变换(INTT)完成多项式计算,降低其计算复杂度,并通过并行算法将大的快速傅里叶变换拆分成适合硬件的多个小尺寸的第一计算单元,然后通过不同深度的先入先出缓冲为第一计算单元定制了高效的流水线硬件模块,将实现快速傅里叶变换和快速傅里叶逆变换两种模式的核合并到一起,在节省资源的同时完成两种模式的运算,并通过并行放置流水线的方法增大了每次访存的数据尺寸,提升了有效带宽。同时通过接口控制模块控制多项式处理模块和椭圆曲线处理模块的数据输入接口、参数输入接口和输出接口分别访问不同的存储器,可以避免出现两路以上的接口同时访问同一个存储器,使得零知识证明硬件加速器可以最大速率的访问存储器,以提高整体的运算速率,进而有利于加快证明生成的速度。
在某些实施方式中,所述第一计算单元包括级联的多个计算电路,每个所述计算电路包括模乘器,所述模乘器的输出端设置有深度为模乘器延时的预设缓冲。
在某些实施方式中,所述模乘器包括一个乘法器,所述第一计算单元通过控制数据流进入顺序以复用所述乘法器,从而使得所述第一计算单元分别在时域和频域实现所述快速傅里叶变换和所述快速傅里叶逆变换。
在某些实施方式中,多个所述第一计算单元分别对所述第一输入数据的多列元素进行处理,所述多项式处理模块用于将多个所述第一计算单元同时输出的处理结果写入预设缓存,所述预设缓存的大小与所述第一计算单元的数量对应。
在某些实施方式中,所述多项式处理模块用于在所述预设缓存写满后,以转置的顺序将每行缓存的处理结果写到预设内存。
在某些实施方式中,所述椭圆曲线处理模块包括:
分组缓存单元,所述分组缓存单元用于对所述多项式系数和所述第二输入数据进行分组得到第一分组数据,以将所述第一分组数据添加到先入先出的缓冲序列;
第二计算单元,所述第二计算单元依次对所述缓冲序列的第一分组数据进行点加流水线处理得到点加流水线处理结果。
在某些实施方式中,所述分组缓存单元还用于对所述点加流水线处理结果进行分组得到第二分组数据,以将所述第二分组数据添加到所述缓冲序列。
在某些实施方式中,所述分组缓存单元包括多个缓存子单元,每个缓存子单元存储与对应系数相关联的所述缓冲序列,所述第二计算单元包括多个计算子单元,一个计算子单元和一个所述缓存子单元相对应,每个所述计算子单元用于对相应的所述缓存子单元的数据进行点加流水线处理。
在某些实施方式中,所述零知识证明硬件加速器采用现场可编程门阵列和中央处理器的异构架构,所述现场可编程门阵列和所述中央处理器通过存储器进行数据转移,所述多项式处理模块在所述现场可编辑门阵列上实现,所述椭圆曲线处理模块在所述现场可编程门阵列和所述中央处理器上实现。
本申请实施方式的零知识证明的生成方法包括:
对第一输入数据进行快速傅里叶变换和快速傅里叶逆变换处理得到多项式系数,所述快速傅里叶变换和所述快速傅里叶逆变换由多个第一计算单元实现,每个所述第一计算单元均可通过流水线方式实现快速傅里叶变换和快速傅里叶逆变换;
对第二输入数据和所述多项式系数进行椭圆曲线处理得到证明。
本申请实施方式的零知识证明的生成方法通过数值域上的快速傅里叶变换(NTT)和快速傅里叶逆变换(INTT)完成多项式计算,降低其计算复杂度,并通过并行算法将大的快速傅里叶变换拆分成适合硬件的多个小尺寸的第一计算单元,然后通过不同深度的先入先出缓冲为第一计算单元定制了高效的流水线硬件模块,将实现快速傅里叶变换和快速傅里叶逆变换两种模式的核合并到一起,在节省资源的同时完成两种模式的运算,并通过并行放置流水线的方法增大了每次访存的数据尺寸,提升了有效带宽,进而有利于加快证明生成的速度。
在某些实施方式中,所述对第一输入数据进行快速傅里叶变换和快速傅里叶逆变换处理得到多项式系数,包括:
所述第一计算单元通过控制数据流进入顺序以复用所述乘法器,从而使得所述第一计算单元分别在时域和频域实现所述快速傅里叶变换和所述快速傅里叶逆变换。
在某些实施方式中,所述对第一输入数据进行快速傅里叶变换和快速傅里叶逆变换处理得到多项式系数,包括:
依次获取所述第一输入数据的多列元素分别输入多个所述第一计算单元进行处理;
将所述第一计算单元输出的处理结果写入预设缓存,所述预设缓存的大小与所述第一计算单元的数量相对应;
在所述预设缓存写满后,以转置的顺序将每行缓存的处理结果写到预设内存。
在某些实施方式中,所述对第二输入数据和所述多项式系数进行椭圆曲线处理得到零知识证明,包括:
对所述多项式系数和所述第二输入数据进行分组得到第一分组数据;
将所述第一分组数据添加到先入先出的缓冲序列;
依次对所述缓冲序列的第一分组数据进行点加流水线处理得到点加流水线处理结果。
在某些实施方式中,所述对第二输入数据和所述多项式系数进行椭圆曲线处理得到零知识证明,包括:
对所述点加流水线处理结果进行分组得到第二分组数据;
将所述第二分组数据添加到所述缓冲序列。
本申请实施方式的电子设备包括处理器和存储器,所述所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述任一实施方式所述的生成方法。
本申请实施方式的电子设备由处理器执行计算机程序,通过数值域上的快速傅里叶变换(NTT)和快速傅里叶逆变换(INTT)完成多项式计算,降低其计算复杂度,并通过并行算法将大的快速傅里叶变换拆分成适合硬件的多个小尺寸的第一计算单元,然后通过不同深度的先入先出缓冲为第一计算单元定制了高效的流水线硬件模块,将实现快速傅里叶变换和快速傅里叶逆变换两种模式的核合并到一起,在节省资源的同时完成两种模式的运算,并通过并行放置流水线的方法增大了每次访存的数据尺寸,提升了有效带宽,进而有利于加快证明生成的速度。
本申请实施方式的存储介质存储有计算机程序,所述计算机程序被一个或多个处理器执行时,实现上述任一实施方式所述的生成方法。
本发明实施方式的的存储介质中,计算机程序被处理器执行时,通过数值域上的快速傅里叶变换(NTT)和快速傅里叶逆变换(INTT)完成多项式计算,降低其计算复杂度,并通过并行算法将大的快速傅里叶变换拆分成适合硬件的多个小尺寸的第一计算单元,然后通过不同深度的先入先出缓冲为第一计算单元定制了高效的流水线硬件模块,将实现快速傅里叶变换和快速傅里叶逆变换两种模式的核合并到一起,在节省资源的同时完成两种模式的运算,并通过并行放置流水线的方法增大了每次访存的数据尺寸,提升了有效带宽,进而有利于加快证明生成的速度。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:
图1是本发明某些实施方式的zk-SNARK整体的计算流的示意图。
图2是本发明某些实施方式的零知识证明硬件加速器的模块示意图。
图3是本发明某些实施方式的第一计算单元的结构示意图。
图4是本发明某些实施方式的零知识证明硬件加速器的数据访问示意图。
图5是本发明某些实施方式的快速傅里叶变换/快速傅里叶逆变换算法分解示意图。
图6是本发明某些实施方式的多项式处理模块的应用场景示意图。
图7是本发明某些实施方式的椭圆曲线处理模块的模块示意图。
图8是本发明某些实施方式的Pippenger算法的应用场景示意图。
图9是本申请某些实施方式的椭圆曲线处理模块的应用场景示意图。
图10是本申请某些实施方式的椭圆曲线处理模块的模块示意图。
图11是本申请某些实施方式的椭圆曲线处理模块的应用场景示意图。
图12是本申请某些实施方式的零知识证明硬件加速器的异构架构示意图。
图13是本申请某些实施方式的零知识证明生成方法的流程示意图。
图14是本申请某些实施方式的零知识证明生成方法的流程示意图。
图15是本申请某些实施方式的零知识证明生成方法的流程示意图。
图16是本申请某些实施方式的零知识证明生成方法的流程示意图。
图17是本申请某些实施方式的零知识证明生成方法的流程示意图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接或可以相互通信;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
下文的公开提供了许多不同的实施方式或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本发明提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
请参阅图1,相关技术中,zk-SNARK整体的计算流包括大规模有限域上的多项式计算部分(POLY)和大规模椭圆曲线的点乘运算(MSM)。其中,大规模有限域上的多项式计算部分的输入为三个数组(An、Bn、Cn),即为三个多项式的系数,快速多项式计算就是通过数值域上的快速傅里叶变换(NTT)和快速傅里叶逆变换(INTT)完成的。大规模椭圆曲线的点乘运算中,椭圆曲线上点的数组(Sn)需要和对应的数字的数组(Hn)做点乘,然后求和后得到最终一个点作为输出。和向量内积类似,点的数组和数的数组都是相应位置做了椭圆曲线点乘(PMULT),然后加起来所有的点。椭圆曲线点乘包括椭圆曲线上的点加(PADD)和倍点(PDBL),点加和倍点又包含了大量的有限域上的大整数计算,这些都让大规模椭圆曲线的点乘运算部分成为了计算量很大的部分。
请参阅图2、图3和图4,本发明实施方式的零知识证明硬件加速器10包括多项式处理模块11、椭圆曲线处理模块13和接口控制模块15(Interface Control)。多项式处理模块11用于对第一输入数据进行处理得到多项式系数。多项式处理模块11包括多个第一计算单元111,每个第一计算单元111均可通过流水线方式实现快速傅里叶变换和快速傅里叶逆变换。椭圆曲线处理模块13用于对第二输入数据和多项式系数进行椭圆曲线处理得到证明。接口控制模块15用于控制多项式处理模块11和椭圆曲线处理模块13的数据输入接口(DataPort)、参数输入接口(Twiddle Port)和输出接口(Out Port)分别访问不同的存储器。
本申请实施方式的多项式处理模块11通过数值域上的快速傅里叶变换和快速傅里叶逆变换完成多项式计算,降低其计算复杂度,并通过并行算法将大的快速傅里叶变换拆分成适合硬件的多个小尺寸的第一计算单元111,然后通过不同深度的先入先出缓冲为第一计算单元111定制了高效的流水线硬件模块,将实现快速傅里叶变换和快速傅里叶逆变换两种模式的核合并到一起,在节省资源的同时完成两种模式的运算,。同时通过接口控制模块控制多项式处理模块和椭圆曲线处理模块的数据输入接口、参数输入接口和输出接口分别访问不同的存储器,可以避免出现两路以上的接口同时访问同一个存储器,使得零知识证明硬件加速器可以最大速率的访问存储器,以提高整体的运算速率,进而有利于加快证明生成的速度。
其中,多个第一计算单元111并行放置以同时对多组数据进行快速傅里叶变换和快速傅里叶逆变换。如此,通过并行放置流水线的方法增大了每次访存的数据尺寸,提升了有效带宽。
第一输入数据可以是三个多项式的系数,即三个数组。每个数组长度可以在百万左右,数组中的每个数字可以是几百比特的大整数。第二输入数据可以是椭圆曲线上的点的数组。
应当理解,与传统多项式计算只利用芯片上的数据进行计算,避开芯片的片下内存访问和存储的方案不同,本申请将多项式计算部分和大规模椭圆曲线的点乘运算部分,在运算过程中产生的大量中间数据在芯片的片下存储器进行存储,例如存储到双倍速率同步动态随机存储器(DDR),需要高速对存储器进行访问以读写数据。本申请的多项式处理模块11和椭圆曲线处理模块13可以包括数据输入接口、参数输入接口和输出接口,通过接口控制模块15控制多项式处理模块11和椭圆曲线处理模块13的数据输入接口、参数输入接口和输出接口分别访问不同的存储器,可以避免出现两路以上的接口同时访问同一个存储器。
在图示所示例子中,接口控制模块15通过数据输入接口、参数输入接口和输出接口连接多项式处理模块11和椭圆曲线处理模块13,且接口控制模块15通过第一读写接口(Port1)连接第一存储器(DDR1),通过第二读写接口(Port2)连接第二存储器(DDR2),以及通过第三读写接口(Port3)连接第三存储器(DDR3)。再某一次运算时刻,接口控制模块15控制多项式处理模块11和椭圆曲线处理模块13的数据输入接口通过第一读写接口读取第一存储器中的数据,控制多项式处理模块11和椭圆曲线处理模块13的参数输入接口通过第二读写接口读取第二存储器中的参数,控制多项式处理模块11和椭圆曲线处理模块13的输出接口通过第三读写接口将中间结果写入第三存储器。在下一次运算时,接口控制模块15控制多项式处理模块11和椭圆曲线处理模块13的数据输入接口通过第三读取接口读取第三存储器中之前计算好的中间结果,控制多项式处理模块11和椭圆曲线处理模块13的参数输入接口通过第二读取接口读取第二存储器的参数,控制多项式处理模块11和椭圆曲线处理模块13的输出接口通过第一读取接口将本次的计算结果写入第一存储器。
请参阅图3,在某些实施方式中,第一计算单元111包括级联的多个计算电路1111,每个计算电路1111包括模乘器11111,模乘器11111的输出端设置有深度为模乘器延时的预设缓冲11113。
如此,本申请在小尺寸的第一计算单元111中,设计较大的模乘器11111,在有限域上计算时,通过模乘器11111的输出端设置有深度为模乘器延时的预设缓冲11113,可以保证第一计算单元111的高效运行。
在某些实施方式中,模乘器11111包括一个乘法器M,第一计算单元111通过控制数据流进入顺序以复用乘法器M,从而使得第一计算单元111分别在时域和频域实现快速傅里叶变换和快速傅里叶逆变换。
本申请实施方式的第一计算单元111中,为满足多项式计算的要求,将实现快速傅里叶变换和快速傅里叶逆变换两种模式的核合并到一起,整个核内部只设置了一个乘法器M,控制数据流的方法复用了模块内部的乘法器M,在节约资源的同时使得第一计算单元111支持频域和时域的两种快速傅里叶变换和快速傅里叶逆变换的计算。
具体地,在图3所示的实施例中,示出了简化的一个大小为N的第一计算单元111,第一计算单元111除了大小为N的数据以外还可以支持所有小于N的数据的快速傅里叶变换计算,只要将数据从对应级数(stage)的多选器输入即可。从而,通过控制数据流进入顺序使其具有很强的通用性。需要说明的是,频域和时域数据进入的顺序是相反的,即连接两个级数的箭头反向。
请参阅图5和图6,在某些实施方式中,多个第一计算单元111分别对第一输入数据的多列元素进行处理,多项式处理模块11用于将多个第一计算单元111同时输出的处理结果写入预设缓存113,预设缓存113的大小与第一计算单元111的数量对应。
可以理解,如图5所示,一个本身大小N=I x J的快速傅里叶变换计算单元可以分解成只需要I和J大小的计算单元,即对每列输入数据做快速傅里叶变换,然后将输出的结果乘以对应的旋转因子的幂次,再对每列做快速傅里叶变换,即可得到最终的结果。这样的分解算法每一步需要的元素都离散的分布在内存内部,极大的降低了有效的带宽。同时由于每个数据都非常大,整体快速傅里叶变换计算单元的尺寸很大。
如图6所示,本申请实施方式通过放置多个预设尺寸的第一计算单元111,即设置多条预设尺寸的快速傅里叶变换流水线,可以同时处理输入数据的多列元素,在预设时钟周期以后流水线开始输出,输出缓存在了一个预设大小的预设缓存113中。
在某些实施方式中,多项式处理模块11用于在预设缓存113写满后,以转置的顺序将每行缓存的处理结果写到预设内存115。
如此,本申请将多个第一计算单元111的输出缓存在了一个预设大小的预设缓存113中,等待与流水线数量相应的时钟周期以后缓存被写满,从而可以以转置的顺序流水线式的将每行写回到预设内存115中。每次读取和写回时候数据都是多个连续的元素,可以增大数据的尺寸从而极大的增加有效的访存带宽。并且在列处理完以后,处理行对应的快速傅里叶变换时,我们可以直接读取连续的多个元素作为每个时钟周期的输出,保持较大的有效带宽。
具体地,多项式处理模块11可以在芯片上设置t个I尺寸的第一计算单元111,即t条I尺寸的快速傅里叶变换流水线,对于尺寸为I*I的输入数据,t条I尺寸的快速傅里叶变换流水线可以同时处理输入数据的t列元素,在I个时钟周期以后快速傅里叶变换流水线开始输出,并将t条快速傅里叶变换流水线的输出缓存在了一个t*t大小的预设缓存113中,再等待t个时钟周期以后预设缓存113被写满,于是可以以转置的顺序流水线式的将每行写回到片下预设内存115中。通过连续不段的列和行的输入数据可以更高效的利用流水线本身的特点,降低中间的延时。
当然,在其他实施方式中,第一计算单元111的设计和结构不限于所述讨论的实施方式,而可以根据实际情况进行变换,从而实现在上层处理时流水线采用并行取数,以及转置写回的方法即可。
请参阅图7至图9,在某些实施方式中,椭圆曲线处理模块13包括分组缓存单元131和第二计算单元133。分组缓存单元131用于对多项式系数和第二输入数据进行分组得到第一分组数据,以将第一分组数据添加到先入先出的缓冲序列。第二计算单元133依次对缓冲序列的第一分组数据进行点加流水线处理得到点加流水线处理结果。
如图8所示,大规模椭圆曲线点乘计算采用Pippenger算法来降低计算任务量,Pippenger算法可以将系数表示在别的基底下,然后将新基底下每个不同的数位(G0、G1、G2)作为每轮的新系数,把数位上对应系数相同的点放在一起提前加好,最后统一跟该数位相乘得到最终的结果。传统的Pippenger算法每个系数下对应的未知个数的点需要加法,需要不定长度的加法链。
如图9所示,本申请通过分组缓存单元131对多项式系数和第二输入数据进行分组,利用先入先出缓冲建立缓冲序列,从而将分组得到的第一分组数据移动到缓冲序列中,由第二计算单元133依次对缓冲序列中的第一分组数据进行点加流水线处理,使得第二计算单元133都处于非闲置状态,避开本身椭圆曲线上不定长加法链的复杂依赖关系,提升资源利用率。
需要说明的是,本申请实施方式的椭圆曲线处理模块13中,通过分组缓存单元131和第二计算单元133将取数据和处理数据分开,分组缓存单元131取数据可以是独立的取并分类,单个计算单元则是不断处理来自不同系数的点加,各组之间没有依赖关系。
在某些实施方式中,分组缓存单元131还用于对点加流水线处理结果进行分组得到第二分组数据,以将第二分组数据添加到缓冲序列。
具体地,本申请实施方式的椭圆曲线处理模块13可以每次只做1024组的椭圆曲线点乘运算。在每个时钟周期,读取两组系数和对应的点,然后根据系数后4比特将其放入不同的分类框中。每当分类框中有2个点,则将该分类框中的数据移动至一个先入先出的缓冲序列中。这一过程可以类似的看成是中央处理器(CPU)的取指令的过程。然后对于第二计算单元133,只放置一个巨大的点加流水线,使其每周期都处理至少一组数据,然后写回到同样的不同稀疏的分类框中,当分类框中有2个点,再将对应分类框中的数据移动到先入先出的缓冲序列中。如此反复以后,可以得到最终的结果。本申请可以通过一套取指令和计算的架构,在数据量过大时分组缓存单元131会发出阻塞命令,暂停继续取指令的过程。在保证计算资源没有空闲的情况下,可以极大地利用所有的资源。
请参阅图10和图11,在某些实施方式中,分组缓存单元131包括多个缓存子单元1311,每个缓存子单元1311存储与对应系数相关联的缓冲序列,第二计算单元133包括多个计算子单元1331,一个计算子单元1331和一个缓存子单元1311相对应,每个计算子单元1331用于对相应的缓存子单元1311的数据进行点加流水线处理。
如此,设置多个缓存子单元1311进行点加流水线处理,将每个第二计算子单元1331和分组缓存子单元1311绑定,然后每个第二计算子单元1331依次处理自己对应位置系数的数据计算。例如,读取两组系数和对应的点,然后根据系数后4比特将其放入不同的分类框中,此时每个分组缓存子单元1311可以包括一定数量的分类框,当分组缓存子单元1311中的分类框中有2个点,则可以将对应分类框中的数据移动到分组缓存子单元1311对应的先入先出的缓存序列中,并由该分组缓存子单元1311对应的第二计算子单元1331进行处理。
其中,由于zk-SNARK中的系数分布高度稀疏,可以通过设计专门针对0 1的预判,第二计算子单元1331只处理非0 1的部分,最后统一一次性处理全部系数为1的部分。针对其他部分,zk-SNARK的系数随机分布,每个第二计算子单元1331对应的系数都是均匀的,并不会造成任何任务不均衡的闲置状态。
本申请实施方式椭圆曲线处理模块13通过点乘时候内部系数的分布规律,简化了控制逻辑,很好地平衡了多个第二计算子单元1331时候任务分配的问题。
请参阅图12,在某些实施方式中,零知识证明硬件加速器10采用现场可编程门阵列(FPGA)和中央处理器(CPU)的异构架构,现场可编程门阵列和中央处理器通过存储器进行数据转移,多项式处理模块11在现场可编辑门阵列上实现,椭圆曲线处理模块13在现场可编程门阵列和中央处理器上实现。
在zk-SNARK中,椭圆曲线处理过程中G2部分稀疏性很大,设计专有硬件存在浪费的情况,如此,本申请实施方式的零知识证明硬件加速器10采用现场可编程门阵列和中央处理器的异构架构,在现场可编程门阵列上做多项式计算和椭圆曲线G1部分的计算形成加速器(Accelerator),在中央处理器上做椭圆曲线G2部分的计算,即多项式处理模块11在现场可编辑门阵列上实现,椭圆曲线处理模块13在现场可编程门阵列和中央处理器上实现。中央处理器和现场可编辑门阵列同时进行运算,中间通过存储器进行数据的转移。同时减少了中央处理器和现场可编辑门阵列的频繁的交互。
在其他实施方式中,零知识证明硬件加速器10采用现场可编程门阵列和中央处理器的异构架构的情况下,还可以是在现场可编程门阵列上做多项式计算,在中央处理器上做椭圆曲线的计算,即多项式处理模块11可以通过设计专有硬件在现场可编程门阵列上实现,椭圆曲线处理模块13在中央处理器上实现。同样地,中央处理器和现场可编辑门阵列同时进行运算,中间通过存储器进行数据的转移。
在其他实施方式中,零知识证明硬件加速器10采用现场可编程门阵列和中央处理器的异构架构的情况下,还可以是在现场可编程门阵列上做椭圆曲线的计算,在中央处理器上做多项式计算,即多项式处理模块11在中央处理器上实现,椭圆曲线处理模块13通过设计专有硬件在现场可编程门阵列上实现。同样地,中央处理器和现场可编辑门阵列同时进行运算,中间通过存储器进行数据的转移。
在某些实施方式中,零知识证明硬件加速器10可以不采用异构架构,而可以在现场可编程门阵列整体做多项式计算和椭圆曲线的计算,即多项式处理模块11和椭圆曲线处理模块13可以通过设计专有硬件在现场可编程门阵列上整体实现。
请参阅图13,本申请实施方式的零知识证明的生成方法包括:
01,对第一输入数据进行快速傅里叶变换和快速傅里叶逆变换处理得到多项式系数,快速傅里叶变换和快速傅里叶逆变换由多个第一计算单元111实现,每个第一计算单元111均可通过流水线方式实现快速快速傅里叶变换和快速快速傅里叶逆变换;
03,对第二输入数据和多项式系数进行椭圆曲线处理得到证明。
本申请实施方式的零知识证明的生成方法通过数值域上的快速快速傅里叶变换和快速快速傅里叶逆变换完成多项式计算,降低其计算复杂度,并通过并行算法将大的快速快速傅里叶变换拆分成适合硬件的多个小尺寸的第一计算单元,然后通过不同深度的先入先出缓冲为第一计算单元111定制了高效的流水线硬件模块,实现快速快速傅里叶变换和快速快速傅里叶逆变换两种模式的合并,在节省资源的同时完成两种模式的运算,并通过并行放置流水线的方法增大了每次访存的数据尺寸,提升了有效带宽,进而有利于加快证明生成的速度。
需要说明的是,步骤01可以由本申请实施方式的多项式处理模块11实现,步骤02可以由本申请实施方式的椭圆曲线处理模块13实现。多项式处理模块11和椭圆曲线处理模块13实现本申请实施方式的零知识证明的生成方法可以参考前述实施方式的说明,在此不再赘述。
请参阅图14,在某些实施方式中,步骤01包括:
011,第一计算单元111通过控制数据流进入顺序以复用乘法器M,从而使得第一计算单元111分别在时域和频域实现快速快速傅里叶变换和快速快速傅里叶逆变换。
如此,通过控制数据流的方法复用了模块内部的乘法器M,在节约资源的同时使得第一计算单元111支持频域和时域的两种快速傅里叶变换和快速傅里叶逆变换的计算。
其中,步骤011可以由本申请实施方式的多项式处理模块11实现。多项式处理模块11实现复用第一计算单元111内的乘法器M的方式可以参考前述实施方式的说明,在此不再赘述。
请参阅图15,在某些实施方式中,步骤01包括:
013,依次获取第一输入数据的多列元素分别输入多个第一计算单元111进行处理;
015,将第一计算单元111输出的处理结果写入预设缓存113,预设缓存113的大小与第一计算单元111的数量相对应;
017,在预设缓存113写满后,以转置的顺序将每行缓存的处理结果写到预设内存115。
如此,本申请将多个第一计算单元111的输出缓存在了一个预设大小的预设缓存113中,等待与流水线数量相应的时钟周期以后预设缓存113被写满,从而可以以转置的顺序流水线式的将每行写回到预设内存115中。每次读取和写回时候数据都是多个连续的元素,可以增大数据的尺寸从而极大的增加有效的访存带宽。
需要说明的是,步骤013、步骤015和步骤017可以由本申请实施方式的多项式处理模块11实现。多项式处理模块11对数据进行处理以及读取和写回时候数据的实现方式可以参考前述实施方式的说明,在此不再赘述。
请参阅图16,在某些实施方式中,步骤03包括:
031,对多项式系数和第二输入数据进行分组得到第一分组数据;
033,将第一分组数据添加到先入先出的缓冲序列;
035,依次对缓冲序列的第一分组数据进行点加流水线处理得到点加流水线处理结果。
如此,本申请通过对多项式系统和第二输入数据进行分组,利用先入先出缓冲建立缓冲序列,从而将分组得到的第一分组数据移动到缓冲序列中,并依次对缓冲序列中的第一分组数据进行点加流水线处理,使得计算单元都处于非闲置状态,避开本身椭圆曲线上不定长加法链的复杂依赖关系,提升资源利用率。
需要说明的是,步骤031和步骤033可以由本申请实施方式的分组缓存单元131实现,步骤035可以由本申请实施方式的第二计算单元133实现。对数据进行分组以及通过缓存序列实现点加流水线处理的方案可以参考前述实施方式的说明,在此不再赘述。
请参阅图17,在某些实施方式中,步骤03还包括:
037,对点加流水线处理结果进行分组得到第二分组数据;
039,将第二分组数据添加到缓冲序列。
如此,如此反复对系数进行点加流水线处理得到最终结果,通过一套取指令和计算的架构,在保证计算资源没有空闲的情况下,可以极大地利用所有的资源。
需要说明的是,步骤037和步骤039可以由本申请实施方式的分组缓存单元131实现。分组缓存单元131对点加流水线处理结果分组的实现可以参考前述实施方式的说明,在此不再赘述。
本申请实施方式的电子设备包括处理器和存储器,存储器存储有计算机程序,计算机程序被处理器执行时,实现上述任一实施方式的生成方法。
在一个实施例中,计算机程序被处理器执行时,实现以下方法步骤:
01,对第一输入数据进行快速傅里叶变换和快速傅里叶逆变换处理得到多项式系数,快速傅里叶变换和快速傅里叶逆变换由多个第一计算单元111实现,每个第一计算单元111均可通过流水线方式实现快速快速傅里叶变换和快速快速傅里叶逆变换;
03,对第二输入数据和多项式系数进行椭圆曲线处理得到证明。
本申请实施方式的电子设备由处理器执行计算机程序,通过数值域上的快速快速傅里叶变换和快速快速傅里叶逆变换完成多项式计算,降低其计算复杂度,并通过并行算法将大的快速快速傅里叶变换拆分成适合硬件的多个小尺寸的第一计算单元111,然后通过不同深度的先入先出缓冲为第一计算单元111定制了高效的流水线硬件模块,实现快速快速傅里叶变换和快速快速傅里叶逆变换两种模式的合并,在节省资源的同时完成两种模式的运算,并通过并行放置流水线的方法增大了每次访存的数据尺寸,提升了有效带宽,进而有利于加快证明生成的速度。
本申请实施方式的存储介质存储有计算机程序,计算机程序被一个或多个处理器执行时,实现上述任一实施方式的生成方法。
在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (16)

1.一种零知识证明硬件加速器,其特征在于,包括:
多项式处理模块,所述多项式处理模块用于对第一输入数据进行处理得到多项式系数,所述多项式处理模块包括多个第一计算单元,每个所述第一计算单元均可通过流水线方式实现快速傅里叶变换和快速傅里叶逆变换;
椭圆曲线处理模块,所述椭圆曲线处理模块用于对第二输入数据和所述多项式系数进行椭圆曲线处理得到证明;和
接口控制模块,所述接口控制模块用于控制所述多项式处理模块和所述椭圆曲线处理模块的数据输入接口、参数输入接口和输出接口分别访问不同的存储器。
2.根据权利要求1所述的零知识证明硬件加速器,其特征在于,所述第一计算单元包括级联的多个计算电路,每个所述计算电路包括模乘器,所述模乘器的输出端设置有深度为模乘器延时的预设缓冲。
3.根据权利要求2所述的零知识证明硬件加速器,其特征在于,所述模乘器包括一个乘法器,所述第一计算单元通过控制数据流进入顺序以复用所述乘法器,从而使得所述第一计算单元分别在时域和频域实现所述快速傅里叶变换和所述快速傅里叶逆变换。
4.根据权利要求1所述的零知识证明硬件加速器,其特征在于,多个所述第一计算单元分别对所述第一输入数据的多列元素进行处理,所述多项式处理模块用于将多个所述第一计算单元同时输出的处理结果写入预设缓存,所述预设缓存的大小与所述第一计算单元的数量对应。
5.根据权利要求4所述的零知识证明硬件加速器,其特征在于,所述多项式处理模块用于在所述预设缓存写满后,以转置的顺序将每行缓存的处理结果写到预设内存。
6.根据权利要求1所述的零知识证明硬件加速器,其特征在于,所述椭圆曲线处理模块包括:
分组缓存单元,所述分组缓存单元用于对所述多项式系数和所述第二输入数据进行分组得到第一分组数据,以将所述第一分组数据添加到先入先出的缓冲序列;
第二计算单元,所述第二计算单元依次对所述缓冲序列的第一分组数据进行点加流水线处理得到点加流水线处理结果。
7.根据权利要求6所述的零知识证明硬件加速器,其特征在于,所述分组缓存单元还用于对所述点加流水线处理结果进行分组得到第二分组数据,以将所述第二分组数据添加到所述缓冲序列。
8.根据权利要求6所述的零知识证明硬件加速器,其特征在于,所述分组缓存单元包括多个缓存子单元,每个缓存子单元存储与对应系数相关联的所述缓冲序列,所述第二计算单元包括多个计算子单元,一个计算子单元和一个所述缓存子单元相对应,每个所述计算子单元用于对相应的所述缓存子单元的数据进行点加流水线处理。
9.根据权利要求1所述的零知识证明硬件加速器,其特征在于,所述零知识证明硬件加速器采用现场可编程门阵列和中央处理器的异构架构,所述现场可编程门阵列和所述中央处理器通过存储器进行数据转移,所述多项式处理模块在所述现场可编辑门阵列上实现,所述椭圆曲线处理模块在所述现场可编程门阵列和所述中央处理器上实现。
10.一种零知识证明的生成方法,其特征在于,包括:
对第一输入数据进行快速傅里叶变换和快速傅里叶逆变换处理得到多项式系数,所述快速傅里叶变换和所述快速傅里叶逆变换由多个第一计算单元实现,每个所述第一计算单元均可通过流水线方式实现快速傅里叶变换和快速傅里叶逆变换;
对第二输入数据和所述多项式系数进行椭圆曲线处理得到证明。
11.根据权利要求10所述的生成方法,其特征在于,所述对第一输入数据进行快速傅里叶变换和快速傅里叶逆变换处理得到多项式系数,包括:
所述第一计算单元通过控制数据流进入顺序以复用所述乘法器,从而使得所述第一计算单元分别在时域和频域实现所述快速傅里叶变换和所述快速傅里叶逆变换。
12.根据权利要求10所述的生成方法,其特征在于,所述对第一输入数据进行快速傅里叶变换和快速傅里叶逆变换处理得到多项式系数,包括:
依次获取所述第一输入数据的多列元素分别输入多个所述第一计算单元进行处理;
将所述第一计算单元输出的处理结果写入预设缓存,所述预设缓存的大小与所述第一计算单元的数量相对应;
在所述预设缓存写满后,以转置的顺序将每行缓存的处理结果写到预设内存。
13.根据权利要求10所述的生成方法,其特征在于,所述对第二输入数据和所述多项式系数进行椭圆曲线处理得到零知识证明,包括:
对所述多项式系数和所述第二输入数据进行分组得到第一分组数据;
将所述第一分组数据添加到先入先出的缓冲序列;
依次对所述缓冲序列的第一分组数据进行点加流水线处理得到点加流水线处理结果。
14.根据权利要求13所述的生成方法,其特征在于,所述对第二输入数据和所述多项式系数进行椭圆曲线处理得到零知识证明,包括:
对所述点加流水线处理结果进行分组得到第二分组数据;
将所述第二分组数据添加到所述缓冲序列。
15.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求10-14任一项所述的生成方法。
16.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被一个或多个处理器执行时,实现权利要求10-14任一项所述的生成方法。
CN202210692280.1A 2022-06-17 2022-06-17 零知识证明硬件加速器及生成方法、电子设备和存储介质 Pending CN115033293A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210692280.1A CN115033293A (zh) 2022-06-17 2022-06-17 零知识证明硬件加速器及生成方法、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210692280.1A CN115033293A (zh) 2022-06-17 2022-06-17 零知识证明硬件加速器及生成方法、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN115033293A true CN115033293A (zh) 2022-09-09

Family

ID=83125454

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210692280.1A Pending CN115033293A (zh) 2022-06-17 2022-06-17 零知识证明硬件加速器及生成方法、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN115033293A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116049619A (zh) * 2022-12-28 2023-05-02 声龙(新加坡)私人有限公司 针对marlin零知识证明协议的矩阵计算装置、方法及设备
WO2024145835A1 (zh) * 2023-01-04 2024-07-11 声龙(新加坡)私人有限公司 零知识证明验证方法、装置、终端及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116049619A (zh) * 2022-12-28 2023-05-02 声龙(新加坡)私人有限公司 针对marlin零知识证明协议的矩阵计算装置、方法及设备
CN116049619B (zh) * 2022-12-28 2023-08-04 声龙(新加坡)私人有限公司 针对marlin零知识证明协议的矩阵计算装置、方法及设备
WO2024145835A1 (zh) * 2023-01-04 2024-07-11 声龙(新加坡)私人有限公司 零知识证明验证方法、装置、终端及存储介质

Similar Documents

Publication Publication Date Title
US11456856B2 (en) Method of operation for a configurable number theoretic transform (NTT) butterfly circuit for homomorphic encryption
CN115033293A (zh) 零知识证明硬件加速器及生成方法、电子设备和存储介质
US6366936B1 (en) Pipelined fast fourier transform (FFT) processor having convergent block floating point (CBFP) algorithm
JP2008506191A5 (zh)
WO2013097219A1 (zh) 一种用于并行fft计算的数据存取方法及装置
CN103218348A (zh) 快速傅里叶变换处理方法和系统
US9262378B2 (en) Methods and devices for multi-granularity parallel FFT butterfly computation
US7543010B2 (en) Modular pipeline fast Fourier transform
CN113378108B (zh) 音频处理装置的快速傅立叶变换电路
Lenart et al. A 2048 complex point FFT processor using a novel data scaling approach
US20210318869A1 (en) Ntt processor including a plurality of memory banks
WO2008132510A2 (en) Fft processor
US9268744B2 (en) Parallel bit reversal devices and methods
CN115344526B (zh) 一种数据流架构的硬件加速方法及装置
WO2021026196A1 (en) Configuring a reduced instruction set computer processor architecture to execute a fully homomorphic encryption algorithm
US8484273B1 (en) Processing system and method for transform
CN113591022B (zh) 一种可分解数据的读写调度处理方法和装置
CN114880618A (zh) 一种数论变换装置
El-Khashab et al. An architecture for a radix-4 modular pipeline fast Fourier transform
US7447722B2 (en) Low latency computation in real time utilizing a DSP processor
Wu et al. An Efficient Hardware Implementation of Crystal-Dilithium on FPGA
Long et al. A low-complexity generalized memory addressing scheme for continuous-flow fast Fourier transform
TWI281619B (en) Data processing structure and method for fast Fourier transformation/inverse fast Fourier transformation
EP4307138A1 (en) Self-ordering fast fourier transform for single instruction multiple data engines
US6564236B1 (en) Device and associated method for calculating the direct or inverse fourier transform of the product of a complex symbol times a complex sinusoidal waveform

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination