面向信息安全的可重构系统芯片编译器、自动编译方法

文档序号:31597898发布日期:2022-09-21 07:35阅读:176来源:国知局
面向信息安全的可重构系统芯片编译器、自动编译方法

1.本发明涉及一种面向信息安全应用的可重构系统芯片编译器及自动编译方法,属于可重构系统芯片编译技术领域。


背景技术:

2.随着信息技术的发展及创新,信息爆炸时代应用对数据的处理能力需求不断提升,而传统的计算方式主要有两种,一种是asic(application specific integratedcircuit, 专用集成电路 ), asic因其专用性及生产特性,导致其一旦投入生产则硬件电路无法改变,随着硅制造工艺复杂度的不断提升,一次性投入代价变得极为昂贵,因此,当asic产量达不到一定规模时,全定制的asic加速单元只能被少数拥有大量应用场合的计算逻辑采用;另一种是gpp(general purpose processor, 通用处理器 ),通过指令集方式执行特定的计算任务,通过修改指令集序列完成不同功能计算任务,而硬件电路无需进行修改。因此gpp具有良好的灵活性。但是,gpp为了完成一个计算任务,需从存储器中读取指令和数据,并进行译码和执行,指令每次执行都需要很大的性能开销,所以gpp的性能一般远远落后于asic。
3.cgra( coarse-grained reconfigurable architecture,可重构计算)本质上可以看作是“在gpp高灵活性和asic高性能之间的折衷,时间计算和空间计算的一种结合”。同时,与gpp和asic相比,可重构计算系统实现了在灵活度、性能、面积、功耗之间的折衷,但是,其复杂性也提高了应用开发成本。可重构编译系统的目标是将应用程序自动编译生成可重构计算系统,通过高度并行的硬件逻辑单元执行应用程序中计算密集的部分,提高应用的执行性能,为高效能计算任务提供硬件支持,结合具有高度灵活性的通用处理器gpp协同工作,完成计算任务。并且随着信息技术的发展,可重构体系架构应用计算复杂度也在成倍增长,尤其是在计算密集型的密码算法中显得尤为重要,纯手工方法实现应用到可重构计算平台的部署也变得不现实,因此,研究如何提高面向信息安全的可重构编译器自动化映射是十分重要的,在近几年来,已经成为可重构计算相关领域的一个研究热点。
4.可重构处理器编译系统是将用户用高级语言描述的应用行为,翻译为功能等价、可被目标硬件识别的二进制机器代码的软件系统。编译器最重要的指标是正确性,需要保证源程序可以在硬件上正确地执行。此外,优秀的cgra编译系统还应具有以下特征:1)易于编程:即提供用户良好的上层编程接口,不过多地向上暴露底层硬件特征,编程人员可在不了解硬件的前提下进行应用功能实现,这样可以提高编程人员的生产力并且缩短算法开发周期;2)开发更多的并行性:cgra提供了丰富的计算单元,可在时域和空域上进行并行计算,编译器需要有效地挖掘硬件潜能和源程序的并行空间,加速源程序的执行,提高硬件资源的利用率;3)编译时间短:显然,编译时间开销越小越好,在某些需要动态重构硬件的应用中,编译时间要求更为严格。总之,编译器要为用户提供更加方便快捷且高效地使用芯片中
硬件资源的方法。
5.基于以上背景,面向信息安全的可重构密码芯片的编译器的设计已经成为研究关注的一个热点问题。现有基于密码算法的可重构芯片的编译器工具设计已经得到了一定程度的优化,但是在实际的应用中由于算法开发人员对硬件的结构以及算法协议的了解程度不同,其算法映射的时间以及性能也存在一定的差别。


技术实现要素:

6.本发明所要解决的技术问题是:针对上述现有技术,提出一种面向信息安全的可重构系统芯片编译器自动化映射简易流程的设计,解决现有映射技术不够成熟的情况下,对算法映射人员要求高,算法映射时间周期长,仿真调试困难以及对硬件变化包容性差的问题。
7.本发明为了解决上述技术问题而采用以下技术方案:本发明首先提出一种面向信息安全的可重构系统芯片编译器自动编译方法,包括:s1、输入密码算法的源程序:基于密码算法特征所设计的含有特殊标记的高级语言来描述源程序文件;s2、执行源程序的软件编译功能语法检查:针对输入的算法描述语言进行功能验证,模拟硬件的执行行为,并验证功能是否正确,如果是则进入下一步,如果否,则返回上一步;s3、进行编译器编译映射:将功能验证正确的源文件通过编译器的编译得到具有数据依赖关系的数据流图;s4、通过仿真器运行仿真执行密码算法:将编译器编译生成的具有数据依赖关系的数据流图执行得到仿真结果;s5、由仿真器阵列生成配置码:将运行结果正确的阵列映射生成硬件所能识别执行的二进制语言文件,s6、执行硬件调试:使用仿真器生成的二进制配置码文件来指导硬件行为操作。
8.进一步的,本发明所提出的可重构系统芯片编译器自动编译方法,步骤s1中,运用带标记的高级c语言描述密码算法,其最多支持两层for循环嵌套,不支持包括while的非规则循环,使用特殊基本功能单元bfu、查找单元sbox、比特置换单元benes算子函数进行编程。
9.进一步的,本发明所提出的可重构系统芯片编译器自动编译方法,步骤s2中,模拟硬件的执行行为包含硬件电路逻辑的执行规则以及执行的方案,其中包含基本功能单元bfu算子编程函数、查找单元sbox算子编程函数、比特置换单元benes算子编程函数的功能与硬件电路描述一致的函数编写。
10.进一步的,本发明所提出的可重构系统芯片编译器自动编译方法,bfu算子编程函数能够实现多种运算,符合计算密集型的密码算法的特征。
11.进一步的,本发明所提出的可重构系统芯片编译器自动编译方法,bfu算子编程函数能够实现加法au,逻辑运算lu,移位运算su以及乘法运算mu;其中,每个bfu单元有3个32bit的输入,有2个32bit的输出;bfu的3个输入分别命名为a、b、t,输出命名为x,y,其中x
为结果输出,y为旁路输出。
12.进一步的,本发明所提出的可重构系统芯片编译器自动编译方法,一个可重构配置行内有四个sbox,每个sbox里有4个查找表,每个查找表分为上下两张子查找表,根据不同的配置选择查找不同的子查找表,同时sbox有不同的查找模式,分别实现不同的查找功能。
13.进一步的,本发明所提出的可重构系统芯片编译器自动编译方法,benes算子编程函数的输入4个32bit操作数,输出4个32bit数据,实现128bit数据的任意bit置换,每行可重构配置行包含1个128位的benes,用于非线性的比特置换。
14.进一步的,本发明所提出的可重构系统芯片编译器自动编译方法,步骤s4中,仿真器将通过验证的源程序生成的具有数据依赖关系的映射图翻译生成图形界面的形式,并生成目标硬件所识别的二进制机器代码供硬件所使用。
15.为解决技术问题,本发明还提出一种面向信息安全的可重构系统芯片编译器,包括:源程序输入模块,其被配置用于:基于密码算法特征所设计的含有特殊标记的高级语言来描述源程序文件;软件编译功能验证模块,其被配置用于:针对输入的算法描述语言进行功能验证,模拟硬件的执行行为,并验证功能是否正确;编译映射模块,其被配置用于:将将功能验证正确的源文件通过编译器的编译得到具有数据依赖关系的数据流图;仿真执行模块,其被配置用于:将编译器编译生成的具有数据依赖关系的数据流图执行得到仿真结果;配置码生成模块,其被配置用于:将运行结果正确的阵列映射生成硬件所能识别执行的二进制语言文件;硬件调试模块,其被配置用于:使用仿真器生成的二进制配置码文件来指导硬件行为操作。
16.进一步的,本发明所提出的面向信息安全的可重构系统芯片编译器,软件编译功能验证模块,包含输入输出fifo模块,带移位的sreg存储单元模块,imd立即数存储单元,mem数据缓存模块,bfu算子计算模块,sbox非线性查找表单元,benes比特置换单元模块的执行函数;其中输入输出fifo模块,输入fifo模块接收128bit宽度的数据,存放到内部存储器里,等待算子读取接口上的数据之后更新数据;输出fifo模块,接收来自计算算子的输出数据。
17.imd立即数存储单元,用于存储配置数据。
18.带移位的sreg存储单元模块,用于中间过程的缓存及移位计算;mem数据缓存模块,用于存储初始化的数据以及中间过程的缓存数据;bfu算子计算模块,其被配置用于实现加法au,逻辑运算lu,移位运算su以及乘法运算mu;其中,每个bfu单元有3个32bit的输入,有2个32bit的输出;bfu的3个输入分别命名为a、b、t,输出命名为x,y,其中x为结果输出,y为旁路输出;sbox非线性查找表单元,其被配置用于根据不同的配置选择查找不同的子查找表,并根据不同的查找模式,实现不同的查找功能;
benes比特置换单元模块的执行函数,其被配置用于输入4个32bit操作数,输出4个32bit数据,实现128bit数据的任意bit置换,每行可重构配置行包含1个128位的benes,用于非线性的比特置换。
19.本发明采用以上技术方案与现有技术相比具有以下有益效果:1、解决了对算法映射人员要求高的问题,相比于传统的可重构编译器自动化映射流程,本发明对算法映射人员要求更低,同时软件编译调试相比于硬件仿真运行更具有一定的灵活性。
20.2、相比于传统的可重构编译器自动化映射流程,本发明解决了在密码算法源代码编写过程中,由于用户对算法理解不透彻,软件代码编写经验不足所带来的语法及功能编写错误而反复进行映射仿真调试这一系列操作所耗费的时间问题。
21.3、相比于传统的可重构编译器自动化映射流程,本发明在进行软件预编译的过程中可以将算法实现过程的中间数据在算子端口上展现出来,这一效果为后续的硬件仿真调试以及数据流的更新提供标准数据。
22.4、相比于传统的可重构编译器自动化映射流程,软件调试的过程相对较简单,同时在对源代码进行调试的过程中可以查看每个周期的运行结果,即硬件接口或者数据缓存器上每个周期的数据。
23.5、相比于传统的可重构编译器自动化映射流程,软件便于调试的过程不需要关注映射的方案、算子映射布局以及连线等问题,这大大降低了对算法开发人员的要求,进一步的缩短了开发周期。
附图说明
24.图1为传统的可重构架构编译自动化映射流程图。
25.图2为本发明可重构架构编译自动化映射流程图。
26.图3为本发明bfu计算模块的结构示意图。
27.图4为本发明sbox查找表示意图。
28.图5为本发明benes128bit示意图。
29.图6为本发明软件编译环境所包含的内置函数模块示意图。
具体实施方式
30.下面结合附图对本发明的具体实施方式做更进一步的解释。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
31.本发明公开了一种面向信息安全的可重构系统芯片编译框架的简化流程设计,其灵活性体现在用户可以对硬件的计算功能进行配置,高性能的原因是采用硬件并行的计算方式,而在实现某个计算功能时,其配置方案往往成为影响计算性能的关键。为了解决人工配置时间长、效果不稳定、硬件包容性差等缺点,可重构处理器一般通过将定制的高级语言作为输入来缩短可重构系统的开发周期,降低对用户的硬件掌握程度的需要,以更优化的方式将各部分的计算功能单元映射到可重构处理器上,是可重构系统中不可或缺的一部分。
32.传统的编译器映射调试方案是由高级语言编译到仿真器仿真调试的过程,在这一
过程中无法保证源代码的语法和功能的正确性,然而仿真器调试运行的过程是一个非常耗时耗力的过程,并且没有中间过程结果相对应难以纠错,为解决这一问题本发明提出一种软件编译执行的方案来进一步加快可重构自动化映射的流程,进一步降低对硬件掌握程度的要求。
33.如图1所示,传统的可重构架构编译自动化映射流程图,首先用户通过算法协议来编写硬件相关的高级语言表示,其次将编写好的源程序进行编译器的编译,再将编译出来的带有一定数据依赖的数据流图进行模拟器的仿真运行操作,最后将仿真运行结果正确的映射图生成配置码给硬件所使用,在这一过程中,如果对编写的源程序有一些小的改动则需要重新进行以上步骤,这个过程是一个耗时耗力的过程。
34.因此为了进一步节约时间,进一步降低对算法映射人员的要求,本发明提出一种基于密码算法的可重构编译自动化映射的预编译检查模块;如图2所示,通过增加源代码预编译的流程来确保编写的密码算法的功能正确性,其中,软件编译具有很强的灵活性,能够节约大量的编译器仿真器的调试时间;首先用户通过算法协议来编写硬件相关的高级语言,在此过程中用户可能对协议及硬件结构的了解不够充分而在编写过程中存在很多问题和错误,通过增加此流程即可保证密码算法源程序正确执行后才进行编译器的编译,可以直接将编译正确的映射进行仿真器仿真生成配置码供硬件所使用。
35.软件编译功能验证模块环境的搭建包含了硬件执行逻辑的方案,其中包含输入输出fifo模块,带移位的sreg存储单元模块,imd立即数存储单元,mem数据缓存模块,bfu算子计算模块,sbox非线性查找表单元,benes比特置换单元模块的执行函数。某个密码算法编写完成后通过调用这些函数进行软件执行,提前模拟计算结果,并且软件调试具有一定的通用性灵活性,可以通过打印的方式将输入输出结果以及中间过程的结果打印输出,用于查看硬件接口上的数据生成,在保证算法映射正确的前提下进一步缩短算法的开发周期。
36.如图3所示,bfu(basic function unit, 基本功能单元)的模块示意图,其有三个32bit输入两个32bit输出,分别用a,b,t,x,y来表示,其能够实现加法(au),逻辑运算(lu),移位运算(su)以及乘法运算(mu)。在一个可重构配置行计算单元内包含8个bfu,可实现的逻辑运算包括,与、或、异或以及三输入的任意组合;可实现的移位运算包括,逻辑左移、逻辑右移、循环左移、循环右移;可实现的加法运算包括,实现可选择并行4路模28加法、并行2路模2
16
加法、模2
32
加法、模2
32
ꢀ‑
1加法,同时支持带进位的加法操作,进行x=a+b+t操作,其中32位加模式下t第0位有效;可实现的乘法运算包括,实现16位乘法,x[31:0] = a[15:0] * b[15:0]、实现8位乘法,x[31:0] = {8’b0, a[7:0]} *{8’b0, b[7:0]};将实现这些功能的逻辑函数在预编译验证环境中表示出来,源程序通过软件编译的形式将进一步验证其功能的正确性,相比于硬件调试软件调试能够缩短大量的时间。
[0037]
如图4所示,sbox作为一个非线性的查找单元,其一个可重构配置行内有四个sbox,每个sbox里有4个查找表,考虑尽可能的利用查找表资源,每个查找表分为上下两张子查找表,根据不同的配置选择查找不同的子查找表,同时sbox有不同的模式,实现不同的查找功能。在软件编译的框架中,编写sbox的内置函数,并添加其各密码算法所使用的查找表资源文件,通过函数的调用即可按照一定的规则进行查表运算。
[0038]
如图5所示benes算子,用于实现非线性运算位的置换功能,在一个可重构配置行计算单元内包含1个benes ,benes的输入4个32bit操作数,输出4个32bit数据,实现128bit
数据的任意bit置换。在软件编译的框架中,编写benes的内置函数,并添加其各密码算法所使用的置换单元的资源文件,通过函数的调用即可按照一定的规则进行比特置换运算。
[0039]
本发明的实施例还提供一种面向信息安全的可重构系统芯片编译器,包括:源程序输入模块,其被配置用于:基于密码算法特征所设计的含有特殊标记的高级语言来描述源程序文件;软件编译功能验证模块,其被配置用于:针对输入的算法描述语言进行功能验证,模拟硬件的执行行为,并验证功能是否正确;编译映射模块,其被配置用于:将将功能验证正确的源文件通过编译器的编译得到具有数据依赖关系的数据流图;仿真执行模块,其被配置用于:将编译器编译生成的具有数据依赖关系的数据流图执行得到仿真结果;配置码生成模块,其被配置用于:将运行结果正确的阵列映射生成硬件所能识别执行的二进制语言文件;硬件调试模块,其被配置用于:使用仿真器生成的二进制配置码文件来指导硬件行为操作。
[0040]
如图6所示软件编译环境所包含的内置函数模块,其中包含基本的计算单元模块bfu,其可实现的逻辑有加法、算数逻辑运算、移位运算以及乘法运算、查找表单元sbox实现更复杂的非线性运算、benes单元实现单bit的置换、存储单元模块mem用于存储初始化的数据以及中间过程的缓存数据,带有移位功能的缓存单元sreg用于中间过程的缓存及移位计算、输入存储单元ififo、输出存储单元ofifo、以及可细粒度移位的功能单元lfsr模块。在软件编译环境中将这些功能模块单元按照硬件的逻辑实现,将算法映射人员编写的源代码进行模拟执行验证其功能的正确性,同时可以查看中间过程中的结果,进一步缩短算法的开发周期。
[0041]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1