[发明专利]一种用于可扩展指令集的编译器及编译方法有效
申请号: | 201911298413.1 | 申请日: | 2019-12-17 |
公开(公告)号: | CN111078290B | 公开(公告)日: | 2023-03-14 |
发明(设计)人: | 蔡觉平;张芳芳 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F8/41 |
代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 田文英;王品华 |
地址: | 710071*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 扩展 指令 编译器 编译 方法 | ||
本发明公开了一种用于可扩展指令集的编译器及编译方法。本发明的编译器包括:输入模块、嵌入模块、编译模块。本发明的步骤包括:获取并解析指令集描述文件,获取并解析编译策略文件,生成匹配函数,在编译器中嵌入匹配函数,获取源代码,将源代码中的特殊代码段编译为扩展指令序列,普通代码段编译为基础指令序列。本发明可以简化用户在已有的编译系统添加扩展指令的工作,提高程序的执行效率。
技术领域
本发明涉及物理技术领域,更进一步涉及计算机技术领域中的一种用于可扩展指令集的编译器及编译方法。本发明可用于解决开放可扩展指令集处理器的编译工具开发困难且效率低的问题。
背景技术
通用处理器可以运行各种程序,处理各种数据,但在一些专用领域CPU的处理效率低下;专用处理器则对于特定应用领域处理效率高,但其开发周期长且应用范围窄。所以近年来部分指令集架构的开发者们将目光转向了开放可扩展的CPU架构。允许在CPU内核中加入自定义的指令意味着芯片设计厂商与高校研究人员可以创建自己的优化算法,然后直接在CPU上运行,从而有机会进一步提高性能和效率。
处理器的的开发设计离不开工具链的支持,功能强大且被广泛使用的编译器工具链如GNU与LLVM虽然能在在一定程度上能支持用户添加新的指令,但是对于一些比较特殊的指令,如向量操作或矩阵操作,工具链的修改非常困难。对于硬件开发人员来说,要攻克代码量庞大且结构复杂的编译器工具几乎是不现实的,在这种情况下的一个常用的解决办法是在高级语言程序的编译器中不增加对新指令的支持,而是直接在高级语言代码中嵌入汇编代码,例如传统的编译器如GCC、C++及Clang都提供了内联汇编代码的功能,在GCC中这些汇编代码被称作GCC Inline ASM,这种技术非常有用,但提高了对程序员的要求,破坏了代码的可移植性。另一种方法是在编译器中添加intrinsic核函数,例如LLVM编译框架提供了在已有的编译体系中添加intrinsic函数的接口,该方法需要修改编译框架内多个文件,要求开发人员具备一定的编译原理知识与对编译器结构有一定的了解。
华为科技有限公司在其申请的专利文献“一种硬件加速方法、编译器以及设备”(专利申请专利号:201510373054.7,专利公开号:CN 106325967 A)提出了一种用于异构设备的编译器。该编译器包括获取单元、确定单元与编译单元。获取单元读取源代码与编译策略信息,获取的策略信息包含从源代码特征集合到不同目标处理器的映射,确定单元通过获取的策略信息确定属于第一代码类型的第一代码段与属于第二代码类型的第二代码段发往第一处理器,将第一代码段编译为第一可执行代码,并将第二代码段编译为第二可执行代码发往第二处理器。该编译器存在的不足之处在于,确定单元只能实现不同的源代码段到不同的处理器设备的匹配,不能实现不同源代码段到同一处理器的不同指令集的匹配,缺失细粒度的指令匹配功能;获取单元不具备动态添加指令集的接口,编译器扩展能力不足。
松下电器产业株式会社在其申请的专利文献“编译装置和编译方法”(专利申请号:03152256.4,专利公开号:1312582C)中提供了一种的编译方法。该方法通过在源程序中包括运算符定义文件将源程序翻译成机器语言程序,运算符定义文件中包括各种定点类型运算符的定义。该编译方法由产生中间编码的中间编码产生单元、用专用指令替换原运算符对应的中间代码的指令替代单元和以替换为专用指令的中间代码为优化目标的优化单元组成。该编译方法可以通过运算符定义文件分析编译源代码产生对应处理器执行的高级和专用指令,并通过扩展函数等来作出改进,而不频繁地重复编译方法本身的版本的更新。该编译方法存在的不足之处在于,只能在编译生成中间代码阶段替换定点运算的中间代码为运算符定义文件中定义的专用指令集,即只能对具备一定模式的源码操作进行指令替换,限制了可进行指令替换的运算操作的范围;不具备动态添加指令接口,只能替换源码操作为已有的指令集,限制可选的替换目标。
发明内容
本发明的目的是针对上述现有技术的问题,提供一种能根据用户提供的编译策略自动调度自定义指令集的编译器及编译方法,以解决编译器规模庞大结构复杂,对用户自定义指令集支持较差且修改困难的问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911298413.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种无人机塑料外壳原料处理设备
- 下一篇:虚拟车厢连接方法、装置及电子设备