[论文解读] Transparent Live Code Offloading on FPGA
本文提出了一种透明的、运行时框架,可在无需代码修改或预先部署比特流的情况下,将计算密集型代码片段动态卸载到FPGA上。通过在运行时分析LLVM中间表示(IR),系统识别热点,利用即时编译(JIT)对预编程的数据流叠加(DFE)进行运行时重构,并实现极低开销的即时加速,从而支持自适应、应用感知的硬件加速。
Even though it seems that FPGAs have finally made the transition from research labs to the consumer devices' market, programming them remains challenging. Despite the improvements made by High-Level Synthesis (HLS), which removed the language and paradigm barriers that prevented many computer scientists from working with them, producing a new design typically requires at least several hours, making data- and context-dependent adaptations virtually impossible. In this paper we present a new framework that off-loads, on-the-fly and transparently to both the user and the developer, computationally-intensive code fragments to FPGAs. While the performance should not surpass that of hand-crafted HDL code, or even code produced by HLS, our results come with no additional development costs and do not require producing and deploying a new bit-stream to the FPGA each time a change is made. Moreover, since optimizations are made at run-time, they may fit particular datasets or usage scenarios, something which is rarely foreseeable at design or compile time. Our proposal revolves around an overlay architecture that is pre-programmed on the FPGA and dynamically reconfigured by our framework to execute code fragments extracted from the Data Flow Graph (DFG) of computational intensive routines. We validated our solution using standard benchmarks and proved we are able to off-load to FPGAs without developer's intervention.
研究动机与目标
- 为解决传统FPGA编程的高开发成本和灵活性不足问题,特别是高层次综合(HLS)带来的长编译和部署周期问题。
- 实现在运行时自动、透明地将计算密集型代码片段卸载到FPGA上,而无需修改应用代码或添加pragma注释。
- 根据实际工作负载和输入数据动态调整FPGA功能,克服静态优化和预编译比特流的局限性。
- 通过使硬件加速与编程语言无关且对开发者和最终用户透明,降低FPGA采用门槛。
- 展示一个完全动态、即时重构的系统,能够实时识别、分析并加速性能关键的代码区域。
提出的方法
- 该框架使用轻量级性能监控器在运行时监控应用程序执行,检测资源消耗最高的代码片段(如执行时间或内存访问次数)。
- 从LLVM中间表示(IR)中提取识别出的关键代码区域的控制流图(CFG)和数据流图(DFG)。
- 一个即时编译(JIT)编译器生成桩代码,并将DFG编译为预编程数据流叠加(DFE)在FPGA上的硬件配置。
- 通过PCIe接口使用DMA传输实现DFE的即时重构,数据传输协议设计简洁灵活,但由于缺乏压缩,导致75%的带宽开销。
- 系统采用异步、非阻塞数据传输,最大限度减少CPU参与,配置和数据传输与主应用流程独立处理。
- 该框架具有通用性,支持所有FPGA,DFE设计为可参数化大小,以适配可用资源。
实验结果
研究问题
- RQ1是否可以无需开发者干预,在运行时自动检测并卸载计算密集型代码片段到FPGA?
- RQ2是否可以实现极低性能开销的即时FPGA重构,且无需预先部署新比特流?
- RQ3与静态HLS编译相比,动态、数据感知的优化能在多大程度上提升性能?
- RQ4在真实工作负载中,系统如何权衡运行时重构开销与性能增益?
- RQ5是否可以构建一个完全在LLVM IR层运行的、与编程语言无关且透明的加速框架?
主要发现
- 系统成功实现实时将代码片段卸载到FPGA上,整个重构过程(包括布局布线)在评估案例中耗时约1.18秒。
- JIT编译阶段耗时16.7ms,最终DFE配置下载仅耗时2.1ms,表明运行时重构延迟极低。
- 数据传输协议因每32位数据需发送128位,导致75%的开销,有效PCIe带宽降至约230MB/s(考虑压缩效率低下后约为57.5MB/s)。
- 尽管存在这些限制,系统在视频处理基准测试中实现了31帧/秒的帧率,而纯软件实现为83帧/秒,表明通过优化数据传输仍有显著提升空间。
- 该框架成功识别并卸载了一个包含17个输入、1个输出和16个计算节点的卷积核,证明了在DFG级别实现动态代码卸载的可行性。
- 系统运行完全透明:无需代码修改、无需pragma注释,开发者和用户均无需感知FPGA的存在,实现无缝硬件加速。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。