基于LLVM的非计数类循环C2VHDL编译技术

需积分: 0 0 下载量 37 浏览量 更新于2024-09-05 收藏 490KB PDF 举报
"这篇论文研究了非计数类循环的C2VHDL编译方法,针对当前大多数C2VHDL编译工具无法有效处理此类循环的问题,提出了基于LLVM的ASCRA编译架构的新方案。该方法利用周期高电平使能信号控制替代复杂的有限状态机(FSM),能够支持嵌套格式的非计数类循环,并展现出良好的可扩展性和转换效果。" 正文: 在当前的计算机科学领域,提高程序运行效率,尤其是在图形图像处理、数据与信息处理、生物信息处理等领域的应用中,已经成为了一个关键问题。随着对高性能计算的需求日益增长,传统的基于时间的串行运算模型,如C语言,已经无法满足这些需求。FPGA(Field-Programmable Gate Array)由于其并行性和快速开发的优势,成为了挖掘算法并行性的理想选择。然而,将C程序直接转换为VHDL代码以便在FPGA上运行,需要大量的手动工作和专业知识。因此,C2VHDL编译工具的研究和发展成为了自动化的热门课题。 循环是C语言编程中的核心元素,分为计数类循环和非计数类循环。计数类循环在循环开始前即可确定其执行次数,而非计数类循环的执行次数在运行时才确定,通常涉及到条件判断。目前市场上的许多C2VHDL编译工具,如ROCCC、SPARK、SPC、DWARV和Garpcc等,虽然在支持计数类循环方面取得了一定进展,但它们大多不支持非计数类循环,或者不包含break和continue这样的控制结构。 这篇论文针对非计数类循环的C2VHDL编译难题,提出了一种新的解决方案。它基于LLVM的ASCRA编译架构,不再依赖于FSM来控制循环,而是采用周期高电平使能信号控制方式。这种方法简化了控制结构,使得编译非计数类循环,包括嵌套循环,变得更加简单和灵活。实验结果显示,这种新方法可以有效地实现各种非计数类循环的C到VHDL转换,而且具备良好的可扩展性,为C2VHDL编译工具的进一步发展提供了新的思路。 通过这种方式,编译器可以更准确地捕捉到C程序中的并行性,并将其转化为FPGA上的并行硬件结构,从而提升执行效率。这种方法不仅解决了现有工具在处理非计数类循环时的局限性,也为未来更复杂的C程序硬件实现提供了可能。这项研究对于优化C程序在FPGA上的执行性能,减少手动转换的工作量,以及推动C2VHDL编译技术的进步具有重要意义。