基于LLVM的非计数类循环C2VHDL编译技术
需积分: 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编译技术的进步具有重要意义。
215 浏览量
2019-08-15 上传
2010-10-28 上传
2022-06-20 上传
2023-05-23 上传
weixin_38744153
- 粉丝: 347
- 资源: 2万+
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建