CN115809051A - 一种基于定制高级c语言的可重构密码算法的解释器 - Google Patents
一种基于定制高级c语言的可重构密码算法的解释器 Download PDFInfo
- Publication number
- CN115809051A CN115809051A CN202211710678.XA CN202211710678A CN115809051A CN 115809051 A CN115809051 A CN 115809051A CN 202211710678 A CN202211710678 A CN 202211710678A CN 115809051 A CN115809051 A CN 115809051A
- Authority
- CN
- China
- Prior art keywords
- language
- function
- hardware
- level
- interpreter
- 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
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 50
- 230000006870 function Effects 0.000 claims abstract description 67
- 238000013507 mapping Methods 0.000 claims abstract description 58
- 238000005457 optimization Methods 0.000 claims abstract description 22
- 238000010586 diagram Methods 0.000 claims abstract description 6
- 239000010410 layer Substances 0.000 claims description 24
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000000034 method Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 239000002356 single layer Substances 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 230000009466 transformation Effects 0.000 claims description 3
- 230000006835 compression Effects 0.000 claims description 2
- 238000007906 compression Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 10
- 238000011160 research Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 2
- ROXBGBWUWZTYLZ-UHFFFAOYSA-N [6-[[10-formyl-5,14-dihydroxy-13-methyl-17-(5-oxo-2h-furan-3-yl)-2,3,4,6,7,8,9,11,12,15,16,17-dodecahydro-1h-cyclopenta[a]phenanthren-3-yl]oxy]-4-methoxy-2-methyloxan-3-yl] 4-[2-(4-azido-3-iodophenyl)ethylamino]-4-oxobutanoate Chemical compound O1C(C)C(OC(=O)CCC(=O)NCCC=2C=C(I)C(N=[N+]=[N-])=CC=2)C(OC)CC1OC(CC1(O)CCC2C3(O)CC4)CCC1(C=O)C2CCC3(C)C4C1=CC(=O)OC1 ROXBGBWUWZTYLZ-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000010230 functional analysis Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种基于定制高级C语言的可重构密码算法的解释器,属于信息安全技术领域。该解释器包括密码算法定制语言的输入程序、编译优化模块、中间文件及数据流图的生成模块,映射模块以及阵列生成配置码模块。本发明提供了一款针对可重构处理器的自动映射工具,可以将定制的高级C语言作为输入,解释器根据输入的高级C程序,将算子等计算单元按照程序设定的方式进行排列与连接,从而完成整个计算功能的映射,此方式不仅可以缩短可重构系统的开发周期,还能降低对用户的硬件掌握程度的需要,从而以更优化的方式将各部分的计算功能单元映射到可重构处理器上,进一步有效地提高可重构处理器的性能。
Description
技术领域
本发明涉及面向信息安全应用的可重构系统芯片编译器的设计,具体涉及一种基于定制高级C语言的可重构密码算法的解释器,属于信息安全技术领域。
背景技术
可重构处理器能效比优势明显,兼具了专用集成电路(Application SpecificIntegrated Circuit,ASIC)的高性能和通用处理器(General PurposeProcessors,GPP)的灵活性,从而受到各界广泛关注。对于可重构处理器来说,其灵活性体现在用户可以对硬件的计算功能进行配置,高性能的原因是采用硬件并行的计算方式,而在实现某个计算功能时,其配置方案往往成为影响计算性能的关键。由于可重构处理器的计算单元和存储资源在时间和空间上需要结合应用程序的特征,增加算法映射的难度。在这样的背景下,算法在可重构处理器上的映射过程常采用手动的方式完成。但人工配置的方式具有时间长、效果不稳定、错误率高等缺点,传统的编译技术主要针对基于指令集的串行通用处理器,无法满足基于数据流图(Data Flow Graph,DFG)的并行可重构处理器的映射问题,故如何结合可重构处理的结构特点和资源特点,将计算功能有效且高效地映射到可重构处理器上成为当下可重构领域的研究热点和难点。针对可重构处理器的自动映射工具不仅可以缩短可重构系统的开发周期,还能将用户需要的计算功能以更优化的方式映射到可重构处理器上,从而有效地提高性能,因此已经成为可重构系统中不可或缺的一部分。
密码算法的实现是高性能处理器设计与应用的重要目标之一,密码算法可重构处理器是专有领域可重构处理器结构的典型代表,与其他计算功能不同,密码算法具有“混淆”和“扩散”的特性,数据计算交错复杂,因此针对密码算法可重构自动映射技术的研究更具挑战性,也更具价值。
可重构处理器在计算能力上具有和ASIC同样的特性,直接由电路进行并行计算和数据传输,因此同样具备很高的计算性能,但是和AISC不同的地方在于,可重构处理器的计算功能可以通过其内部的重构操作而产生变化。计算功能的可变性使得可重构处理器有着和GPP一样的灵活特性,不过相比于GPP串行的一维的功能配置来说,可重构处理器中并行的二维的功能配置拥有更高的难度。在可重构处理器中,负责计算的通常是一块二维的阵列,如图1所示,称为可重构计算阵列(Reconfigurable ComputingArray,RCA),RCA中分布着许多功能可配置的计算单元(Processing Element,PE)和线路可配置的路由模块(Interface of Router,IR),前者实现数据的计算,后者实现数据的流通。将计算功能配置到RCA上的操作称为映射,映射的目的是要将计算功能正确且高效地在RCA中配置实现出来,因此映射效果的好坏才是可重构处理器是否能发挥高性能特性的关键。
在没有自动映射工具的情况下,手动映射是用户使用可重构处理器时唯一的选择,目前自动映射技术并不成熟,因此也导致了手动映射成为一些小型机构当下的选择。但是,手工映射存在以下几点明显的缺点:
(1).对映射人员要求高,需要对计算功能和阵列结构都十分熟悉。
(2).映射时间成本高,需要花费大量时间进行功能分析、阵列分析、布局布线和调整等。
(3).映射效果不好或参差不齐,不同的映射人员得出的配置结果也不一样。
(4).对硬件的变化缺少包容性,当阵列结构发生变化就必须重新进行手动映射。
相比而言,自动映射具有速度快、效果好的特点,避免了手工映射的缺点,因此成为可重构系统中不可或缺的一部分,并且传统的成熟的编译技术不能直接用在可重构映射问题上,使得自动映射技术成为目前可重构领域中的研究热点。
目前,面向专用领域的可重构处理器结构的研究是一个热点方向,而密码算法广泛的应用场景,使得面向密码算法的可重构处理器成为其中的一个典型代表。普通的计算为了实现一般的功能,其计算形式往往简单明了,而密码算法作为安全领域的算法,为了提高密文的安全程度,必须尽量将密文和明文解耦因此通常都会进行大量且错综复杂的数据计算,可见相比普通计算来说,对密码算法进行手动映射在对映射人员的要求、映射时间和映射效果等方面的缺点都有过之而无不及。目前阶段,针对密码算法可重构技术的研究更多地偏向于其阵列结构的研究,其他的也有针对具体密码算法的手动映射方案的研究,而对其自动映射技术的研究并不多,导致了手工映射成为一些机构目前的唯一选择,严重拖延了系统开发周期,因此面向密码算法的可重构处理器自动映射技术的研究还十分迫切,其重要性不言而喻。
基于以上背景,面向信息安全的可重构密码芯片的编译器的设计已经成为研究关注的一个热点问题。现有基于密码算法的可重构芯片的编译器工具设计已经得到了一定程度的优化,但是在实际的应用中由于硬件的结构不同,以及输入语言不同其编译器的设计方案也存在一定的差别。
发明内容
为解决上述问题,本发明提出一种基于定制高级C语言的可重构密码算法的解释器,解决现有映射技术不够成熟的情况下,对映射人员要求高,时间周期长,映射效果不好以及对硬件变化包容性差的问题。
为了达到上述目的,本发明提供如下技术方案:
一种基于定制高级C语言的可重构密码算法的解释器,包括密码算法定制语言的输入程序、编译优化模块、中间文件和/或数据流图的生成模块,映射模块以及阵列生成配置码模块;
所述密码算法定制语言的输入程序为采用定制高级C语言编写的输入程序;所述编译优化模块包括软硬件划分单元、硬件代码优化单元、硬件代码编译单元以及软件编译链接单元,所述软硬件划分单元用于为循环体添加注释从而标记硬件代码;所述硬件代码优化单元用于根据硬件功能实现的代码规范,改写标记后的所述硬件代码;所述硬件代码编译单元包含源文件,并包含若干用于编译代码的功能单元;所述软件编译链接单元用于把不同编译单元中产生的符号联系起来,构成一个可执行的程序;所述中间文件生成模块用于将输入程序经过前端编译优化模块生成的数据包转化为固定格式的中间文件;所述映射模块用于将输入的中间文件按照固定的映射方式,映射为相应算法的流程图;所述阵列生成配置码模块用于从映射后的流程图提取配置信息,并将配置信息经过压缩转化为用于配置对应的硬件架构的配置码。
进一步的,所述硬件代码优化单元采用BFU,SBOX,BENES算子进行代码优化。
进一步的,所述采用BFU算子进行优化的过程包括:
1:根据算法需要,确定需要进行运算的操作数、处理的模运算模式,分别赋值函数的3个输入A、B、T以及需要处理的模运算mode;
2:根据BFU算子功能实现方案选择确定需要实现的BFU功能,并将参数传递给算子功能func,函数内部将根据该参数选择具体的计算算子;
3:在函数底层对具体需要实现的算子,规定相关输入输出参数,根据BFU算子功能实现方案进行设定,并完成最后封装;
4:将要输出的参数传递给结果输出X,旁路输出Y。
进一步的,所述采用SBOX算子进行优化的过程包括:
1:尽可能利用查找表资源,每个查找表分为上下两张256x32的子查找表,根据1bit的group配置选择查找不同的子查找表或根据2bit的byte_sel配置选择使用32bit中的哪些bit作为有效数据输出;
2:每个SBOX内部有四张表,每张表根据group配置和byte_sel配置将表分成八个小的表;
3:函数底层根据SBOX功能实现方案表进行相关封装。
进一步的,所述采用BENES算子进行优化的过程包括:
1:确定输入输出函数参数;
2:函数底层使用一个NxN的BENES置换单元实现N输入、N输出的所有的选择变换,即NxN置换单元的N个输出中的任何一个能够选择N个输入中的任何一个,BENES128所需要的配置位数由公式BENES(N).length=(n/2)*(2*log2(n)-1)确定;
3:将置换之后的数据单元保存,等待后续使用。
进一步的,所述硬件代码优化单元改写的代码最多支持两级For循环嵌套。
进一步的,当只有一级循环的Loop时,使用单层for循环实现,For循环根据软硬件划分规范加tag标记循环;当存在二级循环的Loop时,使用两层For循环实现,外层对应二级循环,内层对应一级循环,外层For循环不需要加tag,内层For循环根据软硬件划分规范加tag标记循环。
进一步的,所述标记用于提取最内层循环体,最内层循环体被映射到阵列上进行处理,循环体的外部由软件运行。
进一步的,所述BENES算子用于实现非线性运算位的置换功能
进一步的,所述映射模块将相应的算子函数映射为固定的算子图标。
与现有技术相比,本发明具有如下优点和有益效果:
1.本发明提供了一款针对可重构处理器的自动映射工具,可以将定制的高级C语言作为输入,解释器根据输入的高级C程序,将算子等计算单元按照程序设定的方式进行排列与连接,从而完成整个计算功能的映射,此方式不仅可以缩短可重构系统的开发周期,还能降低对用户的硬件掌握程度的需要,从而以更优化的方式将各部分的计算功能单元映射到可重构处理器上,进一步有效地提高可重构处理器的性能。
2.本发明提供的基于定制高级C语言的可重构密码算法的解释器实现自动映射,具有速度快、效果好的特点,克服了对映射算法的人员要求高,必须对计算功能和阵列都十分熟悉的缺陷。
3.采用基于定制类型语言的设计输入,只需要编写相应的软件代码,不需要花费大量的时间进行功能分析,阵列分析,布局布线和调整算子等步骤,大大降低了映射成本。
4.避免产生不同的映射人员配置出的算法性能结构不一致的问题,避免了映射效果的参差不齐。
5.本发明方案对硬件包容性佳,当阵列结构发生变化时,不需要重新手工映射改动方案。
附图说明
图1为可重构计算单元RCA结构示意图。
图2为实现本发明的整体编译框架和可重构映射的简化编译框架,其中(a)为整体编译框架,(b)为可重构映射的简化编译框架。
图3为本发明软硬件划分的标记循环示例。
图4为本发明BFU计算模块的结构示意图。
图5为本发明SBOX查找表示意图。
图6为本发明BENES128bit示意图。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
实现本发明的整体编译框架如图2中的(a)所示,本发明提供的基于定制高级C语言的可重构密码算法的解释器,是基于(a)中虚线椭圆框部分进行改进,具体包括:密码算法定制语言的输入程序、前端的编译优化模块、中间文件生成模块,后端的映射模块以及阵列生成配置码的模块。
密码算法定制语言的输入程序包含了以标准C语言为基础的扩展的专用领域语言,输入程序中包含BFU,SBOX,BENES等内置函数的编写,为了提高映射后的硬件电路的性能,设计了标准C语言的扩展语言作为输入语言。扩展的C语言设计应该注意以下几点:
(1).不需要逻辑判断语句,因为密码算法中没有不可避免的逻辑判断语句,而计算阵列中也没有相应功能;
(2).不需要包含复杂逻辑判断的循环语句,需要包含循环次数信息的循环语句,其中二级循环的需要注意以下两点:
◆只有一级循环的Loop,使用单层for循环实现。For循环根据软硬件代码划分规范加tag标记循环。
◆存在二级循环的Loop,使用两层For循环实现。外层对应二级循环,内层对应一级循环。
外层For循环不需要加tag,内层For循环根据软硬件代码划分规范加tag标记循环。参照编程示例。
(3).需要特殊的内置函数来代表一些特殊计算。其中LU,SU,AU,MU几种算子功能都是简单运算的组合,可以通过普通表达式表示出来,而类似于查表和置换这种非线性操作却不能,因此需要为它们专门设计内置函数。
前端的编译优化模块包括软硬件划分单元,硬件代码优化单元,硬件代码编译单元以及软件编译链接单元。
其中,软硬件划分单元用于为循环体添加注释(//DFGloop),标记硬件代码,RCA只提取最内层循环体映射到阵列进行处理。图3为软件件划分的标记循环的代码示例,在源码中需要按照要求对循环进行标记,用标记来提取最内层循环体,将循环体映射到阵列上进行处理,循环体的外部由软件运行。
硬件代码优化单元用于根据硬件功能实现的代码规范,改写上述标记硬件代码。
硬件代码编译单元含有所有必要信息的单个源文件,并包含用于编译所有内容(源文件的所包含的内容,如头文件等)以及自身内容(自身程序)的必要单元。
软件编译链接单元用于把不同编译单元中产生的符号联系起来,构成一个可执行的程序。
基于上述扩展的C语言设计可知,代码规范为:最多只支持两层For循环嵌套,不支持while等非规则循环;循环体内部编码不支持指针,不支持使用递归调用;使用BFU,SBOX,BENES算子进行编程。
如图4所示,BFU算子能够实现加法运算(AU),逻辑运算(LU),移位运算(SU)以及乘法运算(MU)。其中,每个BFU单元有3个32bit的输入,有2个32bit的输出。BFU的3个输入分别命名为A、B、T,输出命名为X,Y,其中X为结果输出,Y为旁路输出。算子中的REG寄存器单元,可以将BFU计算的计算结构暂时寄存,等到收到输出或者调用CMD时,可以将X\Y输出。函数的定义为int*BFU(int a,intb,int t,char*func,char*exp,int bypass,char*bypassExp,int mode);其中,a,b,t为BFU算子输入参数;func为BFU算子功能:lu、au、su、mu;exp为BFU实现的表达式:如A^B;bypass为输入,取值0~3,0:A,1:B,2:T,3:B;bypassExp为bypass表达式;mode为需要处理的模运算,取值为0~3,0:232,1:216,2:28,3:231-1;返回值为int指针指向BFU的两个输出,BFU函数调用后直接使用。BFU算子具体实现流程如下所示:
1:根据算法需要,确定需要进行运算的操作数、处理的模运算模式,分别赋值函数的A、B、T以及mode;
2:根据BFU算子功能实现方案选择确定需要实现的BFU功能,并将参数传递给func,函数内部将根据该参数选择具体的计算算子;
3:在函数底层对具体需要实现的算子,规定相关输入输出参数,根据表1中的BFU算子功能实现方案进行设定,其中关于AU、MU算子的具体实现方案如AU算子实现方案表2、MU算子实现方案表3所示,LU、SU根据相关逻辑功能要求实现即可,并完成最后封装;
4:将要输出的参数传递给X,Y;
表1
表2
表3
如图5所示,SBOX作为一个非线性的查找单元,一个可重构配置行内有四个SBOX,每个SBOX里有4个查找表,考虑尽可能的利用查找表资源,每个查找表分为上下两张子查找表,根据1bit的group配置选择查找不同的子查找表,同时SBOX有不同的模式,实现不同的查找功能。函数的定义为int*SBOX(int a,int mode,char*src,int id0,int id1,intid2,int id3);其中,a为SBOX算子输入参数;mode为SBOX的拼接模式,取值为0~7,0:4->4拼接,1:6->4拼接,2:8->8拼接,3:8->8异或,4:8->32,5:9->9一路,6:10->8一路,7:12->8一路;src为SBOX数据源文件名称;id0~id3分别对应SBOX的四个group取值,取值范围为:0~3;返回值int指针指向SBOX的四个输出,SBOX函数调用后直接使用。SBOX具体实现流程包括如下步骤:
1:考虑尽可能地利用查找表资源,每个查找表分为上下两张256(D)x32(W)的子查找表,根据1bit的group配置选择查找不同的子查找表。某些查表模式下,可以根据2bit的byte_sel配置选择使用32bit中的哪些bit作为有效数据输出;
2:每个SBOX内部有四张表,每张表根据group配置和byte_sel配置可以将表分成八个小的表;
3:每个表的实现功能如SBOX功能实现方案表4所示,函数底层根据该表进行相关封装。
表4
如图6所示BENES算子,用于实现非线性运算位的置换功能,BENES的输入4个32bit操作数,输出4个32bit数据,实现128bit数据的任意bit置换,RCU包含1个128位的BENES,用于比特置换。函数的定义为,int*BENES(int a,intb,int c,int d,char*src),其中,a,b,c,d为BENES算子四个输入参数;src为BENES数据源文件名称;返回值int指针指向BENES的四个输出,BENES函数调用后直接使用。BENSE具体实现方案如下所示:
1:确定输入输出函数参数,即输入4个32bit操作数,a,b,c,d;
2:函数底层使用一个NxN的BENES置换单元应该实现N输入、N输出的所有的选择变换,即NxN置换单元的N个输出中的任何一个能够选择N个输入中的任何一个。BENES128所需要的配置位数由公式BENES(N).length=(n/2)*(2*log2(n)-1)=832bit,其中n为BENES单元输入的位数,即128。
3:将置换之后的数据单元保存,等待后续使用。
中间文件生成模块用于将输入程序经过前端编译优化模块生成的数据包转化为固定格式的中间文件,其中中间文件包括数据流图。
映射模块用于将输入的中间文件按照固定的映射方式,映射为相应算法的流程图。在本部分,本发明将会将基于定制的C语言,进行一一转换,将相应的算子函数映射为固定的算子图标,比如将BFU算子函数映射到阵列中对应的BFU算子图标。
阵列生成配置码模块:从程序映射后的数据流程图提取配置信息,并将配置信息经过一定方式进行压缩转化为配置码,配置码可以用于配置对应的硬件架构,即RCA可用的阵列配置码。
本发明可以将定制的高级C语言作为输入,编译器根据输入的高级C程序,将算子等计算单元按照程序设定的方式进行排列与连接,从而完成整个计算功能的映射。本发明方案集成在一个开源的CGRA-ME评估框架中,编译生成目标硬件架构所需的数据流表示的目标架构文件。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种基于定制高级C语言的可重构密码算法的解释器,其特征在于,包括密码算法定制语言的输入程序、编译优化模块、中间文件及数据流图的生成模块,映射模块以及阵列生成配置码模块;
所述密码算法定制语言的输入程序为采用定制高级C语言编写的输入程序;所述编译优化模块包括软硬件划分单元、硬件代码优化单元、硬件代码编译单元以及软件编译链接单元,所述软硬件划分单元用于为循环体添加注释从而标记硬件代码;所述硬件代码优化单元用于根据硬件功能实现的代码规范,改写标记后的所述硬件代码;所述硬件代码编译单元包含源文件,并包含若干用于编译代码的功能单元;所述软件编译链接单元用于把不同编译单元中产生的符号联系起来,构成一个可执行的程序;所述中间文件生成模块用于将输入程序经过前端编译优化模块生成的数据包转化为固定格式的中间文件;所述映射模块用于将输入的中间文件按照固定的映射方式,映射为相应算法的流程图;所述阵列生成配置码模块用于从映射后的流程图提取配置信息,并将配置信息经过压缩转化为用于配置对应的硬件架构的配置码。
2.根据权利要求1所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,所述硬件代码优化单元采用BFU,SBOX,BENES算子进行代码优化。
3.根据权利要求2所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,所述采用BFU算子进行优化的过程包括:
1:根据算法需要,确定需要进行运算的操作数、处理的模运算模式,分别赋值函数的3个输入A、B、T以及需要处理的模运算mode;
2:根据BFU算子功能实现方案选择确定需要实现的BFU功能,并将参数传递给算子功能func,函数内部将根据该参数选择具体的计算算子;
3:在函数底层对具体需要实现的算子,规定相关输入输出参数,根据BFU算子功能实现方案进行设定,并完成最后封装;
4:将要输出的参数传递给结果输出X,旁路输出Y。
4.根据权利要求2所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,所述采用SBOX算子进行优化的过程包括:
1:尽可能利用查找表资源,每个查找表分为上下两张256x32的子查找表,根据1bit的group配置选择查找不同的子查找表或根据2bit的byte_sel配置选择使用32bit中的哪些bit作为有效数据输出;
2:每个SBOX内部有四张表,每张表根据group配置和byte_sel配置将表分成八个小的表;
3:函数底层根据SBOX功能实现方案表进行相关封装。
5.根据权利要求2所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,所述采用BENES算子进行优化的过程包括:
1:确定输入输出函数参数;
2:函数底层使用一个NxN的BENES置换单元实现N输入、N输出的所有的选择变换,即NxN置换单元的N个输出中的任何一个能够选择N个输入中的任何一个,BENES128所需要的配置位数由公式BENES(N).length=(n/2)*(2*log2(n)-1)确定;
3:将置换之后的数据单元保存,等待后续使用。
6.根据权利要求1所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,所述硬件代码优化单元改写的代码最多支持两级For循环嵌套。
7.根据权利要求6所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,当只有一级循环的Loop时,使用单层for循环实现,For循环根据软硬件划分规范加tag标记循环;当存在二级循环的Loop时,使用两层For循环实现,外层对应二级循环,内层对应一级循环,外层For循环不需要加tag,内层For循环根据软硬件划分规范加tag标记循环。
8.根据权利要求1或6所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,所述标记用于提取最内层循环体,最内层循环体被映射到阵列上进行处理,循环体的外部由软件运行。
9.根据权利要求2所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,所述BENES算子用于实现非线性运算位的置换功能。
10.根据权利要求1所述的基于定制高级C语言的可重构密码算法的解释器,其特征在于,所述映射模块将相应的算子函数映射为固定的算子图标。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211710678.XA CN115809051A (zh) | 2022-12-29 | 2022-12-29 | 一种基于定制高级c语言的可重构密码算法的解释器 |
US18/223,724 US20230359448A1 (en) | 2022-12-29 | 2023-07-19 | Interpreter for reconfigurable cryptographic algorthms based on customized high-level c language |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211710678.XA CN115809051A (zh) | 2022-12-29 | 2022-12-29 | 一种基于定制高级c语言的可重构密码算法的解释器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115809051A true CN115809051A (zh) | 2023-03-17 |
Family
ID=85487093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211710678.XA Pending CN115809051A (zh) | 2022-12-29 | 2022-12-29 | 一种基于定制高级c语言的可重构密码算法的解释器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230359448A1 (zh) |
CN (1) | CN115809051A (zh) |
-
2022
- 2022-12-29 CN CN202211710678.XA patent/CN115809051A/zh active Pending
-
2023
- 2023-07-19 US US18/223,724 patent/US20230359448A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230359448A1 (en) | 2023-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lanneer et al. | CHESS: Retargetable code generation for embedded DSP processors | |
US8738892B2 (en) | Very long instruction word (VLIW) computer having efficient instruction code format | |
CN108268278A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
US8055881B2 (en) | Computing nodes for executing groups of instructions | |
US20050166038A1 (en) | High-performance hybrid processor with configurable execution units | |
US8904366B2 (en) | Use of vectorization instruction sets | |
CN105468568B (zh) | 高效的粗粒度可重构计算系统 | |
CN104461503B (zh) | 动态组成软件界面的方法与系统 | |
CN111125440B (zh) | 一种基于Monad的持久层复合条件查询方法与存储介质 | |
CN102163248B (zh) | 一种集成电路的高级综合方法 | |
CN110704364A (zh) | 基于现场可编程门阵列的自动化动态重构方法及系统 | |
CN103235724A (zh) | 基于原子操作语义描述的多源二进制代码一体化翻译方法 | |
CN115080055A (zh) | 面向信息安全的可重构系统芯片编译器、自动编译方法 | |
CN104820393A (zh) | 一种基于plc梯形图矩阵编译解释方法 | |
Xiao et al. | Fast linking of separately-compiled FPGA blocks without a NoC | |
Gokhale et al. | High level compilation for fine grained FPGAs | |
CN105574269B (zh) | 一种专用指令处理器的设计验证方法 | |
CN115809051A (zh) | 一种基于定制高级c语言的可重构密码算法的解释器 | |
CN105447285A (zh) | 一种提高OpenCL硬件执行效率的方法 | |
US7802005B2 (en) | Method and apparatus for configuring buffers for streaming data transfer | |
CN103942035B (zh) | 处理指令的方法、编译器及指令处理器 | |
CN101650648A (zh) | 动态调用功能模块的系统及方法 | |
CN103761213A (zh) | 基于循环流水计算的片上阵列系统 | |
Seo et al. | Memory allocation and mapping in high-level synthesis-an integrated approach | |
Muri et al. | Embedded Processor-In-Memory architecture for accelerating arithmetic operations |
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 |