一种用于HLS指令优化的编码方法及终端技术

技术编号:16873535 阅读:78 留言:0更新日期:2017-12-23 11:33
本发明专利技术涉及编程领域,尤其涉及一种编码方法及终端。本发明专利技术提供了一种用于寻找HLS最优指令组合的数据编码格式。在利用HLS工具将高级语言编写的程序转换成硬件描述语言过程中,为了提高硬件电路运行程序的效率,需要尝试各种HLS优化指令组合,而HLS优化指令的组合数量庞大,使用本发明专利技术提供的数据编码格式有利于启发式算法寻找最优的HLS优化指令组合,从而极大程度的提高了寻找最优的HLS优化指令组合的效率。

A coding method and terminal for HLS Instruction Optimization

The invention relates to the field of programming, in particular to a coding method and a terminal. The present invention provides a data encoding format for finding the best combination of HLS instructions. In the use of HLS tools will be written in a high-level language program into hardware description language in the process, in order to improve the efficiency of the hardware circuit of the running program, need to try a variety of HLS optimized instruction combination, combination number and HLS optimizations of large, data encoding format provided by the invention is conducive to optimizing the instruction HLS heuristic algorithm to find the optimal combination. It has greatly improved the efficiency of the HLS optimization to find the optimal combination of instruction.

【技术实现步骤摘要】
一种用于HLS指令优化的编码方法及终端
本专利技术涉及编程领域,尤其涉及一种用于HLS指令优化的编码方法及终端。
技术介绍
为满足现有的算法在硬件上进行加速,传统的硬件描述语言:VerilogHDL和VHDL由于开发难度大、开发周期长已难以迎合现有的需求。HLS的出现解决了这个问题,HLS(HighLevelSynthesis)能将软件开发人员所写的C/C++代码转化到可编程逻辑设计中。而通常算法程序的函数、数组和循环很多,利用HLS提供的20来种优化指令对程序的函数、循环、数组等进行优化所产生的指令组合是爆炸性的。使用现有的方法寻找最优的HLS优化指令组合效率低。
技术实现思路
本专利技术所要解决的技术问题是:如何提高获取将高级语言编写的源码转换为硬件描述语言的最优HLS优化指令组合的效率。为了解决上述技术问题,本专利技术采用的技术方案为:本专利技术提供一种用于HLS指令优化的编码方法,包括:S1、获取源码中一语句的语句类型和语句标号;所述语句类型包括函数、数组、接口数组和循环语句;S2、预设深度变量;当所述类型为函数时,设置所述深度变量的值为与所述语句对应的函数层级;当所述类型为数组时,设置所述深度变量的值为与所述语句对应的维数;当所述类型为循环语句时,设置所述深度变量的值为与所述语句对应的循环嵌套深度;当所述类型为接口数组时,设置所述深度变量的值为与所述语句对应的维数;S3、从与所述语句类型对应的HLS优化指令集合中,随机获取一HLS优化指令的指令编号,得到优化指令标识;S4、根据所述语句类型、所述语句标号、所述深度变量的值和所述优化指令标识得到与预设位数对应的编码;S5、添加所述编码至预设的编码集合;S6、重复执行S1至S5,直至所述编码集合中包含与所述源码的每一语句对应的编码;S7、预设次数执行所述S1至S6,得到一个以上所述编码集合;S8、根据预设的启发式算法对一个以上所述编码集合中的各种组合逐步迭代寻优后,从中选取最优编码组合。本专利技术还提供一种用于HLS指令优化的编码终端,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:S1、获取源码中一语句的语句类型和语句标号;所述语句类型包括函数、数组、接口数组和循环语句;S2、预设深度变量;当所述类型为函数时,设置所述深度变量的值为与所述语句对应的函数层级;当所述类型为数组时,设置所述深度变量的值为与所述语句对应的维数;当所述类型为循环语句时,设置所述深度变量的值为与所述语句对应的循环嵌套深度;当所述类型为接口数组时,设置所述深度变量的值为与所述语句对应的维数;S3、从与所述语句类型对应的HLS优化指令集合中,随机获取一HLS优化指令的指令编号,得到优化指令标识;S4、根据所述语句类型、所述语句标号、所述深度变量的值和所述优化指令标识得到与预设位数对应的编码;S5、添加所述编码至预设的编码集合;S6、重复执行S1至S5,直至所述编码集合中包含与所述源码的每一语句对应的编码;S7、预设次数执行所述S1至S6,得到一个以上所述编码集合;S8、根据预设的启发式算法对一个以上所述编码集合中的各种组合逐步迭代寻优后,从中选取最优编码组合。本专利技术的有益效果在于:本专利技术提供了一种用于寻找HLS最优指令组合的数据编码格式。在利用HLS工具将高级语言编写的程序转换成硬件描述语言过程中,为了提高硬件电路运行程序的效率,需要尝试各种HLS优化指令组合,而HLS优化指令的组合数量庞大,使用本专利技术提供的数据编码格式有利于启发式算法寻找最优的HLS优化指令组合,从而极大程度的提高了寻找最优的HLS优化指令组合的效率。附图说明图1为本专利技术提供的一种用于HLS指令优化的编码方法的具体实施方式的流程框图;图2为本专利技术提供的一种用于HLS指令优化的编码终端的具体实施方式的结构框图;标号说明:1、处理器;2、存储器。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。请参照图1以及图2,如图1所示,本专利技术提供一种用于HLS指令优化的编码方法,包括:S1、获取源码中一语句的语句类型和语句标号;所述语句类型包括函数、数组、接口数组和循环语句;S2、预设深度变量;当所述类型为函数时,设置所述深度变量的值为与所述语句对应的函数层级;当所述类型为数组时,设置所述深度变量的值为与所述语句对应的维数;当所述类型为循环语句时,设置所述深度变量的值为与所述语句对应的循环嵌套深度;当所述类型为接口数组时,设置所述深度变量的值为与所述语句对应的维数;S3、从与所述语句类型对应的HLS优化指令集合中,随机获取一HLS优化指令的指令编号,得到优化指令标识;S4、根据所述语句类型、所述语句标号、所述深度变量的值和所述优化指令标识得到与预设位数对应的编码;S5、添加所述编码至预设的编码集合;S6、重复执行S1至S5,直至所述编码集合中包含与所述源码的每一语句对应的编码;S7、预设次数执行所述S1至S6,得到一个以上所述编码集合;S8、根据预设的启发式算法对一个以上所述编码集合中的各种组合逐步迭代寻优后,从中选取最优编码组合。进一步地,还包括:获取与所述最优编码集合对应的优化指令标识集合;根据所述优化指令标识集合对应的HLS优化指令优化所述源码。由上述描述可知,实现有效减少将使用高级语言编写的源码综合成硬件时所需的硬件资源及时延。进一步地,其特征在于,所述S8具体为:生成与一个以上所述编码集合对应的一个以上TCL脚本文件;根据预设的启发式算法对一个以上所述TCL脚本文件集合进行迭代寻优搜索,从中选取最优TCL脚本文件;获取与所述最优TCL脚本文件对应的编码集合,得到最优编码集合。由上述描述可知,为了便于分析,HLS优化指令并没有嵌入至C/C++源码中,而是保存在TCL指令脚本中。进一步地,还包括:获取与每一所述编码集合对应的时延和资源数量,得到执行结果集合;根据所述执行结果集合生成分析报告。由上述描述可知,启发式算法主要是为了通过迭代的方式逐步找到最优解。依据每个编码集合各成一份TCL文件,该TCL文件引导HLS工具生成由硬件描述语言HDL构成的硬件IP核,并产生一份报表,报表中详细记录着添加与编码集合对应的优化指令所产生的时延以及资源消耗情况,用户可从中挑选出适合实际情况的最优解决方案。如图2所示,本专利技术还提供一种用于HLS指令优化的编码终端,包括一个或多个处理器及存储器2,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:S1、获取源码中一语句的语句类型和语句标号;所述语句类型包括函数、数组、接口数组和循环语句;S2、预设深度变量;当所述类型为函数时,设置所述深度变量的值为与所述语句对应的函数层级;当所述类型为数组时,设置所述深度变量的值为与所述语句对应的维数;当所述类型为循环语句时,设置所述深度变量的值为与所述语句对应的循环嵌套深度;当所述类型为接口数组时,设置所述深度变量的值为与所述语句对应的维数;S3、从与所述语句类型对应的HLS优化指令集合中,随机获取一HLS优化指令的指令编号,得到优化指令标识;S4、根据所述语句类型、所述语句标号、所述深度变量的值和所述优化指令标识得到与预设位数对应的编码;S5、本文档来自技高网
...
一种用于HLS指令优化的编码方法及终端

【技术保护点】
一种用于HLS指令优化的编码方法,其特征在于,包括:S1、获取源码中一语句的语句类型和语句标号;所述语句类型包括函数、数组、接口数组和循环语句;S2、预设深度变量;当所述类型为函数时,设置所述深度变量的值为与所述语句对应的函数层级;当所述类型为数组时,设置所述深度变量的值为与所述语句对应的维数;当所述类型为循环语句时,设置所述深度变量的值为与所述语句对应的循环嵌套深度;当所述类型为接口数组时,设置所述深度变量的值为与所述语句对应的维数;S3、从与所述语句类型对应的HLS优化指令集合中,随机获取一HLS优化指令的指令编号,得到优化指令标识;S4、根据所述语句类型、所述语句标号、所述深度变量的值和所述优化指令标识得到与预设位数对应的编码;S5、添加所述编码至预设的编码集合;S6、重复执行S1至S5,直至所述编码集合中包含与所述源码的每一语句对应的编码;S7、预设次数执行所述S1至S6,得到一个以上所述编码集合;S8、根据预设的启发式算法对一个以上所述编码集合中的各种组合逐步迭代寻优后,从中选取最优编码组合。

【技术特征摘要】
1.一种用于HLS指令优化的编码方法,其特征在于,包括:S1、获取源码中一语句的语句类型和语句标号;所述语句类型包括函数、数组、接口数组和循环语句;S2、预设深度变量;当所述类型为函数时,设置所述深度变量的值为与所述语句对应的函数层级;当所述类型为数组时,设置所述深度变量的值为与所述语句对应的维数;当所述类型为循环语句时,设置所述深度变量的值为与所述语句对应的循环嵌套深度;当所述类型为接口数组时,设置所述深度变量的值为与所述语句对应的维数;S3、从与所述语句类型对应的HLS优化指令集合中,随机获取一HLS优化指令的指令编号,得到优化指令标识;S4、根据所述语句类型、所述语句标号、所述深度变量的值和所述优化指令标识得到与预设位数对应的编码;S5、添加所述编码至预设的编码集合;S6、重复执行S1至S5,直至所述编码集合中包含与所述源码的每一语句对应的编码;S7、预设次数执行所述S1至S6,得到一个以上所述编码集合;S8、根据预设的启发式算法对一个以上所述编码集合中的各种组合逐步迭代寻优后,从中选取最优编码组合。2.根据权利要求1所述的一种用于HLS指令优化的编码方法,其特征在于,还包括:获取与所述最优编码集合对应的优化指令标识集合;根据所述优化指令标识集合对应的HLS优化指令优化所述源码。3.根据权利要求1所述的一种用于HLS指令优化的编码方法,其特征在于,还包括:获取与每一所述编码集合对应的时延和资源数量,得到执行结果集合;根据所述执行结果集合生成分析报告。4.根据权利要求1所述的一种用于HLS指令优化的编码方法,其特征在于,所述S8具体为:生成与一个以上所述编码集合对应的一个以上TCL脚本文件;根据预设的启发式算法对一个以上所述TCL脚本文件集合进行迭代寻优搜索,从中选取最优TCL脚本文件;获取与所述最优TCL脚本文件对应的编码集合,得到最优编码集合。5.一种用于HLS指令优化的编码终端,其特征在...

【专利技术属性】
技术研发人员:黄晞陈宝林郭升挺吴家飞苏浩明
申请(专利权)人:福建师范大学
类型:发明
国别省市:福建,35

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

1