Fpga中密码算法的最大运行频率自动化搜索方法和系统

文档序号:1816582 发布日期:2021-11-09 浏览:36次 >En<

阅读说明:本技术 Fpga中密码算法的最大运行频率自动化搜索方法和系统 (Method and system for automatically searching maximum running frequency of cryptographic algorithm in FPGA (field programmable Gate array) ) 是由 王美琴 吴立轩 樊燕红 于 2021-08-13 设计创作,主要内容包括:本公开提供了一种FPGA中密码算法的最大运行频率自动化搜索方法,包括:获取密码算法中Slack-Period曲线上的初始参考点;判断初始参考点与最大运行频率点的相对位置,寻找新参考点;以初始参考点和新参考点为基础,利用多进程并行向后搜索最大运行频率点;输出最大运行频率;本公开使用静态时序分析和独特的启发式算法来搜索密码算法的最大运行频率,并且利用脚本驱动和多进程并行执行,减少了搜索时间。(The invention provides an automatic searching method for the maximum operating frequency of a cryptographic algorithm in an FPGA (field programmable gate array), which comprises the following steps of: acquiring an initial reference point on a Slack-Period curve in a cryptographic algorithm; judging the relative positions of the initial reference point and the maximum operating frequency point, and searching a new reference point; based on the initial reference point and the new reference point, searching a maximum operating frequency point backwards in parallel by utilizing multiple processes; outputting the maximum running frequency; the present disclosure uses static timing analysis and unique heuristic algorithms to search for the maximum operating frequency of the cryptographic algorithm and utilizes script-driven and multi-process parallel execution, reducing search time.)

FPGA中密码算法的最大运行频率自动化搜索方法和系统

技术领域

本公开属于密码算法集成电路技术领域,尤其涉及一种FPGA中密码算法的最大运行频率自动化搜索方法和系统。

背景技术

本部分的陈述仅仅是提供了与本公开相关的

背景技术

信息,不必然构成在先技术。

在数字化信息时代,密码算法受到越来越多的关注,许多公司正在积极开发能轻量化实现移动端密码算法的硬件,尤其是能够结合未来的物联网应用,对于移动端密码算法硬件的实现方法,FPGA方法是现今硬件密码算法实现的一大主流方向;FPGA是现场可编程逻辑门阵列,是作为ASIC领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点;Xilinx和Altera是全球领先的两大FPGA厂商,而且不同FPGA厂商都拥有自家的EDA开发工具,如Xilinx的Vivado和Altera的QuartusPrime。

在密码算法硬件中,无论是哪一家厂商的FPGA产品,吞吐量都是度量数字电路性能的一个重要参数;其中密码算法能够运行的最大时钟频率,直接影响了这个密码算法的最大吞吐量;在密码算法的硬件设计中,可以在实现过程的不同阶段估计或测量给定RTL代码所能达到的最大时钟频率;主要阶段是综合、布局和布线以及电路板上的实际实验测试。

FPGA工具的静态时序分析功能可以给出综合、布局和布线后的结果,但是,使用硬件描述语言设计并使用FPGA工具实现数字电路的静态时序分析的方法存在以下问题:

(1)Xilinx的EDA工具Vivado不会报告相应代码可以达到的最大频率,该工具只会报告“通过”或“失败”以实现该目标;Altera的EDA工具Quartus Prime会报告最大频率,但是不准确,而且当改变目标频率时,Quartus会返回另一个最大频率,导致该工具报告的最大频率是不准确的;

(2)对硬件代码所支持的最大时钟频率问题,传统的做法是人工不断尝试不同的目标频率;在此过程中,得到的结果也会因人而异,并且这是一个非常枯燥且耗时的过程。

(3)密码算法的slack-period曲线的起伏波动频繁,且毫无规律,搜索密码算法的最大运行频率的难度,无疑会增加FPGA的产品设计周期;slack-period曲线的复杂多样性,导致搜索密码算法的最大运行频率成为了一大难点,且经典的二分法不仅繁琐耗时,而且通常不能得到正确的结果;如图1所示,是SILC_GMU_v1.0密码算法在Altera的Cyclone10LP的10CL016YU256C8G型号的FPGA上的实现的Slack-Period部分曲线,利用传统的二分搜索法,不能找到正确的结果。

发明内容

本公开为了解决上述问题,提出了一种FPGA中密码算法的最大运行频率自动化搜索方法和系统,本公开提出了Fast-Find算法,Fast-Find使用静态时序分析和独特的启发式算法来搜索密码算法的最大运行频率,并且在Fast-Find的算法实现上,利用脚本驱动和多进程并行执行,减少了搜索时间。

为了实现上述目的,本发明是通过如下的技术方案来实现:

第一方面,本公开提供了一种FPGA中密码算法的最大运行频率自动化搜索方法,包括:

获取密码算法中Slack-Period曲线上的初始参考点;

判断初始参考点与最大运行频率点的相对位置,寻找新参考点;

以初始参考点和新参考点为基础,利用多进程并行向后搜索最大运行频率点;

输出最大运行频率。

进一步的,取period-slack值的平均值作为Slack-Period曲线上的初始参考点。

进一步的,搜索过程中,使用最小运行周期来代替最大运行频率;通过FPGA的EDA工具的静态时序分析功能,输出时间余量值;通过TCL脚本驱动EDA工具进行静态时序分析。

进一步的,利用EDA工具的静态时序分析功能,m进程综合初始参考点和向后向前各n个点,其中m=2n+1,初步判断初始参考点与最小运行周期的相对位置;

在m个时间余量值中,把时间余量值大于等于0且周期最小的点进行存储,作为预选值,采用多进程向后递归搜索可能的最小运行周期;

在m个时间余量值都小于零时,增大周期步长,p进程综合初始参考点前p个点;在p个时间余量值中,把时间余量值大于等于0且周期最小的点进行存储,采用多进程向后递归搜索可能的最小运行周期;

在p个时间余量值都小于零时,则以新参考点为基础,采用多进程向后递归搜索可能的最小运行周期。

第二方面,本公开还提供了一种FPGA中密码算法的最大运行频率自动化搜索系统,包括数据采集模块、判断模块、搜索模块和输出模块;

所述数据采集模块,被配置为:获取密码算法中Slack-Period曲线上的初始参考点;

所述判断模块,被配置为:判断初始参考点与最大运行频率点的相对位置,寻找新参考点;

所述搜索模块,被配置为:以初始参考点和新参考点为基础,利用多进程并行向后搜索最大运行频率点;

所述输出模块,被配置为:输出最大运行频率。

进一步的,取period-slack值的平均值作为Slack-Period曲线上的初始参考点。

进一步的,搜索过程中,使用最小运行周期来代替最大运行频率;通过FPGA的EDA工具的静态时序分析功能,输出时间余量值;通过TCL脚本驱动EDA工具进行静态时序分析。

进一步的,利用EDA工具的静态时序分析功能,m进程综合初始参考点和向后向前各n个点,其中m=2n+1,初步判断初始参考点与最小运行周期的位置;

在m个时间余量值中,把时间余量值大于等于0且周期最小的点进行存储,作为预选值,采用多进程向后递归搜索可能的最小运行周期;

在m个时间余量值都小于零时,增大周期步长,p进程综合初始参考点前p个点;在p个时间余量值中,把时间余量值大于等于0且周期最小的点进行存储,采用多进程向后递归搜索可能的最小运行周期;

在p个时间余量值都小于零时,则以新参考点为基础,采用多进程向后递归搜索可能的最小运行周期。

与现有技术相比,本公开的有益效果为:

1.本公开通过预计算获取初始参考点、判断参考点与最大运行频率点的相对位置和多进程并行向后搜索最大运行频率点进行最大运行频率搜索,根据EDA工具返回的slack值,可以在指定周期步长精度下搜索到对应密码算法准确的最大运行频率。

2.本公开使用静态时序分析和独特的启发式算法来搜索密码算法的最大运行频率,并且利用脚本驱动和多进程并行执行,减少了搜索时间。

附图说明

构成本实施例的一部分的说明书附图用来提供对本实施例的进一步理解,本实施例的示意性实施例及其说明用于解释本实施例,并不构成对本实施例的不当限定。

图1为本公开实施例1的slack-period曲线图;

图2为本公开实施例1的Fast-Find算法主体流程图;

图3为本公开的以密码算法的时钟CLK时钟周期0.01ns为精度,给出的Fast-Find算法的流程图;

图4为本公开的以密码算法的时钟CLK时钟周期0.01ns为精度,给的出Get_Pmin算法的流程图。

图5为本公开的以密码算法的时钟CLK时钟周期0.01ns为精度,给的出Multprocessbe_Recu算法的流程图。

具体实施方式

下面结合附图与实施例对本公开作进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

实施例1:

如图3所示,本实施例提供了一种FPGA中密码算法的最大运行频率自动化搜索方法,在本实施例中,采用Fast-Find算法实现FPGA中密码算法的最大运行频率自动化搜索。

在硬件实现领域,面对密码算法的slack-period曲线的复杂无规律性、不同密码算法的slack-period曲线也截然不同以及FPGA内部不同EDA软件(Vivado和QuartusPrime)的特性等的差异,迫切需要一个自动化搜索算法来统一求解一些硬件参数;Fast-Find就是一个可以统一求解FPGA中密码算法最大运行频率的自动化搜索方法,Fast-Find使用静态时序分析和独特的启发式算法来自动化搜索密码算法的最大运行频率;与其他的自动化搜索方法相比,Fast-Find的突出优势有两点:在算法设计上,通过预计算获得参考频率的Get_Pmin算法;在算法实现上,利用脚本驱动和多进程并行执行的方案;正是基于这两大优势,使得Fast-Find的自动化搜索更加快速高效。

如图1所示,Fast-Find算法拥有清晰明了的自动化搜索过程,对实现FPGA中密码算法的最大运行频率自动化搜索的流程为:

获取密码算法中Slack-Period曲线上的初始参考点;

判断初始参考点与最大运行频率点的相对位置,寻找新参考点;

以初始参考点和新参考点为基础,利用多进程并行向后搜索最大运行频率点;

输出最大运行频率。

由于slack-period曲线的复杂波动性,Fast-Find采取先选取曲线上的一个初始参考点,接着判断参考点和最终的最大运行频率点的相对位置,然后再展开多进程并行搜索的方法。

本实施例中,从三个部分来介绍Fast-Find的设计,算法的主体Fast-Find算法、获取初始参考点Get_Pmin算法和多进程向后递归搜索最大运行频率Multprocessbe_Recu算法。

需要说明的是,在调用EDA工具进行静态时序分析的过程中,为了便于综合、布局和布线,密码算法实现中是通过改变时钟CLK的时钟周期来调整密码算法的运行频率的,其中,周期P和频率F满足关系:

当频率达到最大时,周期便达到最小;所以,本实施例中,使用最小运行周期来代替最大运行频率。

通过前面的论述,可以归纳出寻找FPGA中密码算法最大运行频率的一般方式是,不断设置密码算法的CLK时钟的时钟周期,然后通过EDA工具的静态时序分析功能,得到综合、布局布线后的结果,其中主要是判断Slack Time参数是否大于零。

如图3所示,本实施例中,以密码算法的时钟CLK时钟周期0.01ns为精度,对Fast-Find算法实现FPGA中密码算法的最大运行频率自动化搜索的流程进行介绍:

因为FPGA中不同密码算法的Slack-Period曲线是复杂且形态各异的,所以,在本实施例中,先通过Get_Pmin算法找到Slack-Period曲线上的一个切入点pre_per;然后利用EDA工具的静态时序分析功能,m进程并行综合pre_per和向后向前各n个点,其中m=2n+1,这一步的作用是初步判断切入点pre_per与最小运行周期fin_period的相对位置,第一种情况是pre_per>=fin_period,另一种情况是pre_per<fin_period;在前面综合出的m个slack中,若存在slack>=0的情况,Fast-Find便认为是上述第一种情况,把slack>=0且周期最小的点min_period_point作为预选值存储到tmp_period.txt文件中,然后调用Multprocessbe_Recu算法,进一步查找可能的最小运行周期fin_period,其中period_ed是一个存储了已经综合过的period的数组;另一种情况,当然也存在综合出的m个slack都小于零的情况,Fast-Find便认为这是第二种情况,于是以一个较大的间距0.05向前寻找合适的切入点,这里并行综合了p个点,接着判断是否存在slack>=0的情况,若存在,则把slack>=0且周期最小的点min_period_point作为预选值存储到tmp_period.txt文件中,然后调用Multprocessbe_Recu算法,进一步查找可能的最小运行周期fin_period。若这p个slack都小于零,则把pre_per+0.05*p作为切入点,调用Multprocessbe_Recu算法,这是因为利用Get_Pmin算法得到的pre_per和选择合适的p值,满足pre_per+0.05*p>fin_period。

如图4所示,以密码算法CLK时钟的时钟周期0.01ns为精度,给出Get_Pmin算法的流程图。

在本实施例中,Get_Pmin算法是获得Slack-Period曲线切入点的核心算法,曲线切入点距离最终的fin_period越近越好;Get_Pmin算法便致力于此,它的主要思想是

periodref=period-slack

其中period值和slack值分别是静态时序分析的输入参数和输出参数,我们把period-slack的计算结果记作periodref,在此意为最小运行周期的参考值。利用上面的等式,我们可以通过计算period-slack的值来估计密码算法的最小运行周期,经实验测试,这样估计的最小运行周期是不准确的,一方面,一次估计的period-slack值与目标fin_period相去甚远,不具有参考价值;另一方面,两次评估得到的period1-slack1和period2-slack2差异很大,无法得到一个折中的合理切入点。

在本实施例中,发明人发现只有slack<0的period-slack值才具有参考价值,可以理解为只有让EDA工具“竭尽全力”综合的结果才具有参考价值;利用前述方法得到的不同period-slack值的差异减少了很多,为得到一个折中的结果,我们取这些period-slack值的平均值作为最终的Slack-Period曲线切入点。

在本实施例中,可以根据使用的FPGA产品型号和综合的密码算法来相应调整起始参考点periodi的个数和具体值,以获得Slack-Period曲线上的一个较接近fin_period的切入点。

在本实施例中,Multprocessbe_Recu算法是在找到切入点的情况下,向后尝试寻找最小运行周期的算法;在介绍算法的主要思想之前,在本实施例中引入一个假设:

对于时钟CLK的时钟周期精度为0.01ns的情况,如果在一个period点之后的连续t个点的slack都小于零,则认为这个period值就是该密码算法的最小运行周期。

如图5所示,以密码算法CLK时钟的时钟周期0.01ns为精度,给出Multprocessbe_Recu算法的流程图。

基于前面的假设,从min_period_point向后找t个点,如果这t个slack都小于零,则Multprocessbe_Recu算法结束,最终fin_period为tmp_period.txt文件中的周期值;如果在这t个点中有slack大于或等于零的情况,则把slack>=0且周期最小的点作为预选值写入tmp_period.txt文件中,然后递归调用Multprocessbe_Recu算法,直到min_period_point向后的t个点的slack都小于零为止。

在测试t个点的slack中,我们把t个点按照0.02的间隔分为两组,依次进行综合,一旦遇到slack>=0的情况就递归调用算法本身,当然以0.02的间隔分为两组也是在兼容大部分密码算法且搜索速度更快的折中方案。

最后,在Fast-Find算法的实现上,为了更快速的搜索密码算法的最大运行频率,通过TCL脚本驱动EDA工具进行静态时序分析,有效减少了图形化界面的繁琐且复杂的操作、为了避免同一period值的重复综合,在算法中引入period_ed数组来去重、最后也是最重要的,多进程并行综合多个period值,这与单进程多次综合的方案相比,节省了大量的时间。

算法运行结果:

以不同密码算法在Altera的Cyclone10LP的10CL016YU256C8G型号的FPGA上的实现,采用Fast-Find算法自动化搜索密码算法的最大运行频率的运行结果,如下表所示:

在本实施例中,运行时间是在CPU为AMD EPYC 7302 16-Core Processor,运行内存为256G的服务器上的运行时间。

实施例2:

本实施例提供了一种FPGA中密码算法的最大运行频率自动化搜索系统,包括数据采集模块、判断模块、搜索模块和输出模块;

所述数据采集模块,被配置为:获取密码算法中Slack-Period曲线上的初始参考点;

所述判断模块,被配置为:判断初始参考点与最大运行频率点的相对位置,寻找新参考点;

所述搜索模块,被配置为:以初始参考点和新参考点为基础,利用多进程并行向后搜索最大运行频率点;

所述输出模块,被配置为:输出最大运行频率。

在本实施例中,取period-slack值的平均值作为Slack-Period曲线上的初始参考点。

在本实施例中,搜索过程中,使用最小运行周期来代替最大运行频率;通过FPGA的EDA工具的静态时序分析功能,输出时间余量值;通过TCL脚本驱动EDA工具进行静态时序分析。

在本实施例中,利用EDA工具的静态时序分析功能,m进程综合初始参考点和向后向前各n个点,其中m=2n+1,初步判断初始参考点与最小运行周期的相对位置;

在m个时间余量值中,把时间余量值大于等于0且周期最小的点进行存储,作为预选值,采用多进程向后递归搜索可能的最小运行周期;

在m个时间余量值都小于零时,增大周期步长,p进程综合初始参考点前p个点;在p个时间余量值中,把时间余量值大于等于0且周期最小的点进行存储,采用多进程向后递归搜索可能的最小运行周期;

在p个时间余量值都小于零时,则以新参考点为基础,采用多进程向后递归搜索可能的最小运行周期。

实施例3:

本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1所述的FPGA中密码算法的最大运行频率自动化搜索方法方法。

实施例四:

本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例1所述的FPGA中密码算法的最大运行频率自动化搜索方法方法。

以上所述仅为本实施例的优选实施例而已,并不用于限制本实施例,对于本领域的技术人员来说,本实施例可以有各种更改和变化。凡在本实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本实施例的保护范围之内。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种SOC芯片系统老化实验方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类