程序编译方法和程序编译器技术

技术编号:14290749 阅读:122 留言:0更新日期:2016-12-25 21:24
本发明专利技术涉及一种程序编译方法和程序编译器,所述方法包括:响应于用户的程序选择操作,确定属于C语言源程序的待处理应用程序;将所述应用程序处理成HDL程序和C语言软件程序;依据HDL程序生成硬件编译程序脚本,以及,依据C语言软件程序生成软件编译程序脚本;应用户操作,执行硬件编译脚本以将HDL程序处理得到硬件配置文件,以及,应用户操作,执行软件编译脚本以将C语言软件程序处理得到ELF格式的可执行文件。本发明专利技术提供的方案针对PRCA计算平台的特点或特性,将C语言源文件自动转换成可以应用在PRCA计算平台的文件。

【技术实现步骤摘要】

本专利技术涉及计算机程序编译
,更具体的说是涉及一种程序编译方法和程序编译器
技术介绍
本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。近年来,现场可编程门阵列(Field-Programmable Gate Array,FPGA)发展迅速,在某些计算应用中可以取得比CPU快数十倍的计算能力。在传统计算中引入FPGA作为加速部件的可重构计算(Reconfigurable Computing)也随之繁荣,作为研究机构和厂商制造了多种结构各异的可重构计算机。但是,针对这些可重构计算机的编译器开发,一直是可重构技术发展的瓶颈之一。
技术实现思路
专利技术人在实施本专利技术创造过程中,对相关技术进行了研究和分析:软件编程模型依靠典型的串行指令流描述问题,符合人们处理问题的思维,但无法有效描述系统的并行行为;而硬件系统具有天然的并行特性,不易于被人们所理解,也没有有效的形式化方法加以描述。所以,硬件设计在很长时间内,不是通过程序设计方式来完成的,而是通过对物理器件间的直接组合的方式进行。硬件设计语言(Hardware Design Language,HDL)的出现很大程度上改善了硬件设计方式。它具有和高级语言相似的基本特性,又具有一定的灵活
性和抽象性,而且也能有效地描述硬件行为。但是,其抽象程度不高,编程模型与软件模型相比差距较大。因此,对于一般的应用程序开发者,很难入门和使用,并且,HDL语言只能描述硬件行为,不能描述软件程序,所以不能用其进行软硬件协同开发。为了高效、简便地使用可重构计算机,目前高层次综合(High-Level Synthesis,HLS)成为新的研究热点。HLS是指使用高级程序设计语言协同进行软硬件设计,编译器使用高级语言程序综合处可配置的硬件逻辑。将高级语言综合导入现有设计流程。开发者能够迅速地试验多种设计理念,创制工作模型,例如SystemC、Handle-C或Impulse C。其中:SystemC是开放SystemC组织(Open SystemC Initiative,OSCI)组织制定并维护的一种建模平台,编程语言为C++,该平台可以实现通信模块、功能模块、硬件模块和软件模块在门级、寄存器传输级(Register-Transfer Level,RTL)、系统级等层次上的抽象,引进了端口、信号等数据类型描述及时钟、延时等概念。Handle-C由Celoxica公司开发(现已被Mentor Graphics公司收购),编译器包含在DK设计套件中,基于标准C语言,为支持硬件设计增加了一些附带的特征,同时提供了用于并行处理的额外声明和并行程序间通信的结构。其围绕简单的时间模式进行设计,每个分配指令花费一个时钟周期,在设计中,开发者可以充分控制在任何时间点发生的任何事件,软件运行结构可预测且可控。Streams-C是美国洛斯阿拉莫斯国家实验室(Los Alamos National Laboratory,LANL)开发的编程语言,为C语言的一个子集。配套的编译器开放源代码,将用户输入的C程序转换为可综合的超高速集成电路硬件描述语言(Very-High-Speed Integrated Circuit Hardware Description Language,VHDL)代码。Impulse C由Impulse Accelerated Technologies公司开发,参考了Streams-C的编程模型和部分设计思想。其配套编译器为CoDeveloper,可以针对嵌入式处理器平台生成必要的软硬件接口。在对相关技术进行了研究和分析后,专利技术人发现上述编译器无法直接应用于PRCA计算平台中,并且上述编译器仅关注C语言向HDL语言的转化步骤,而对后续步骤的自动化支持不够。以CoDeveloper为例,得到HDL代码后,用户还需手动调用Xilinx ISE套件中的XPS软件建立工程,并经过一系列复杂的操作之后才能最终得到可下载的硬件配置文件。有鉴于此,本专利技术的目的在于提供一种程序编译方法和程序编译器。本专利技术的一方面,公开了一种程序编译方法,包括:响应于用户的程序选择操作,确定属于C语言源程序的待处理应用程序;将所述应用程序处理成HDL程序和C语言软件程序;依据HDL程序生成硬件编译程序脚本,以及,依据C语言软件程序生成软件编译程序脚本;应用户操作,执行硬件编译脚本以将HDL程序处理得到硬件配置文件,以及,应用户操作,执行软件编译脚本以将C语言软件程序处理得到ELF格式的可执行文件。从上述技术方案可以看出,本专利技术提供的方案针对PRCA计算平台的特点或特性,将C语言源文件自动转换成可以应用在PRCA计算平台的硬件配置文件和ELF文件。并且,在开发过程中,用户不需要编写HDL程序,也不需要建立ISE工程,甚至可以完全不具备FPGA编程基础。这样不仅减轻了硬件程序编写的工作量,而且扩大了PRCA计算平台的使用范围。在一些优选实施例中,上述将所述应用程序处理成HDL程序这个过程可以包括以下步骤:预处理,包括依次对所述应用程序进行语法检查,宏替换和内联函数展开,及代码改写以增加临时变量的方式简化较长的语句;对于所述应用程序中的临时变量及用户定义变量,以寄存器定义,对于数组,则对应Block RAM模块,然后对所述应用程序进行模块划分,将划分
的块转换为数据流图,所述模块划分的顺序按照从大到小的顺序进行,直到划分成基本块为止;创建一个有限状态自动机,将每个基本块作为状态机的一个状态,依据基本块之间的连接关系确定状态机之间的转换关系,利用所述状态自动机及所述数据流图,生成HDL程序和C语言软件程序。优选的,所述将所述应用程序处理成HDL程序还包括:生成编译报告,所述编译报告为编译概要或数据流图信息,所述编译概要用于指示编译参数及编译过程中出现的错误或警告。优选的,所述硬件编译程序脚本由批处理文件和脚本文件组成,所述依据HDL程序生成硬件编译脚本包括:调用批处理文件,由批处理文件调用脚本文件,然后由脚本文件调用ISE,完成编译过程。优选的,依据C语言软件程序生成软件编译脚本的过程包括:预先编写一个标准的Makefile文件,并拷贝至预定目录下;在UNIX或Linux环境下调用Make命令,调用软件编译脚本。(这个地方有些混乱。Make命令是用户调用的,目的是通过该命令调用软件编译脚本,这个脚本就是指Makefile文件。)优选的,按照以下步骤将HDL程序处理得到硬件配置文件:硬件编译脚本在执行时调用ISE建立工程,利用所述HDL程序及预设的硬件模块库,经综合、实现过程得到硬件配置文件。优选的,所述将C语言软件程序处理得到ELF格式的可执行文件包括:软件编译脚本调用GCC进行编译,利用所述C语言软件程序和预设的软件函数库,处理得到ELF格式的可执行文件。本专利技术的另一方面,记载了一种程序编译器,其包括编译模块和脚本生成器,其中:所述编译模块用于将用户选定的属于C语言源程序本文档来自技高网
...
程序编译方法和程序编译器

【技术保护点】
一种程序编译方法,其特征在于,包括:响应于用户的程序选择操作,确定属于C语言源程序的待处理应用程序;将所述应用程序处理成HDL程序和C语言软件程序;依据HDL程序生成硬件编译程序脚本,以及,依据C语言软件程序生成软件编译程序脚本;应用户操作,执行硬件编译脚本以将HDL程序处理得到硬件配置文件,以及,应用户操作,执行软件编译脚本以将C语言软件程序处理得到ELF格式的可执行文件。

【技术特征摘要】
1.一种程序编译方法,其特征在于,包括:响应于用户的程序选择操作,确定属于C语言源程序的待处理应用程序;将所述应用程序处理成HDL程序和C语言软件程序;依据HDL程序生成硬件编译程序脚本,以及,依据C语言软件程序生成软件编译程序脚本;应用户操作,执行硬件编译脚本以将HDL程序处理得到硬件配置文件,以及,应用户操作,执行软件编译脚本以将C语言软件程序处理得到ELF格式的可执行文件。2.根据权利要求1所述的程序编译方法,其特征在于,所述将所述应用程序处理成HDL程序包括:预处理,包括依次对所述应用程序进行语法检查,宏替换和内联函数展开,及代码改写以增加临时变量的方式简化较长的语句;对于所述应用程序中的临时变量及用户定义变量,以寄存器定义,对于数组,则对应Block RAM模块,然后对所述应用程序进行模块划分,将划分的块转换为数据流图,所述模块划分的顺序按照从大到小的顺序进行,直到划分成基本块为止;创建一个有限状态自动机,将每个基本块作为状态机的一个状态,依据基本块之间的连接关系确定状态机之间的转换关系,利用所述状态自动机及所述数据流图,生成HDL程序和C语言软件程序。3.根据权利要求2所述的程序编译方法,其特征在于,所述将所述应用程序处理成HDL程序还包括:生成编译报告,所述编译报告为编译概要或数据流图信息,所述编译概要用于指示编译参数及编译过程中出现的错误或警告。4.根据权利要求1所述的程序编译方法,其特征在于,所述硬件编译程序脚本由批处理文件和脚本文件组成,所述依据HDL程序生成硬件编译脚本包括:调用批处理文件,由批处理文件调用脚本文件,然后由脚本文件调用ISE,完成编译过程。5.根据权利要求1所述的程序编译方法,其特征在于,依据C语言软件程序生成软件编译脚本的过程包括:预先编写一个标准的Makefile文件,并拷贝至预定目录下;在UNIX或Linux环境下调用Make命令,调用软件编译脚本。6.根据权利要求1所述的程序编译方法,...

【专利技术属性】
技术研发人员:邬江兴罗兴国庞建民斯雪明于锦涛王俊超杨劲齐宁党林玉
申请(专利权)人:上海红神信息技术有限公司
类型:发明
国别省市:上海;31

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

1