A Linux-based support for developing real-time applications on heterogeneous platforms with dynamic FPGA reconfiguration

A Linux-based support for developing real-time applications on heterogeneous platforms with dynamic FPGA reconfiguration
复制标题

基于 Linux 的支持,支持在具有动态 FPGA 重新配置的异构平台上开发实时应用程序

DOI:
--
复制
发表时间:
2017
期刊:
ACM Symposium on Cloud Computing
影响因子:
--
通讯作者:
G. Buttazzo
G. Buttazzo
中科院分区:
--
文献类型:
--
作者:
Marco Pagani;Alessio Balsini;Alessandro Biondi;Mauro Marinoni;G. Buttazzo

文献摘要

被引文献

相似文献

包括处理器和现场可编程门阵列(fpga)在内的异构计算平台代表了一种有吸引力的解决方案,可以平衡软件灵活性与定制硬件模块的高性能和能效。此外,现代fpga的动态部分重新配置(DPR)功能允许虚拟化可用区域,以分时支持多个硬件模块,从而使它们更具吸引力。FRED框架利用了这一特性,它最近被提议用于支持在此类平台上开发实时应用程序。本文介绍了FRED框架在Xilinx公司生产的Zynq-7000平台上用于Linux操作系统的实现。首先讨论了硬件加速器管理的设计方案。然后,提出了Linux的软件体系结构,它包括(i)支持与硬件加速器的共享内存通信,(ii)改进的驱动程序来处理FPGA重构,(iii)硬件加速请求的调度程序。所提出的解决方案允许利用可用于Linux的大量软件系统(如驱动程序、库、通信堆栈等)和软件的典型编程灵活性,同时依赖于可预测的繁重计算的硬件加速。
Heterogeneous computing platforms including both processors and field programmable gate arrays (FPGAs) represent an attractive solution for balancing software flexibility with high performance and energy efficiency of custom hardware modules. Furthermore, the dynamic partial reconfiguration (DPR) capabilities of modern FPGAs allow virtualizing the available area to support several hardware modules in time sharing, hence making them even more attractive. Such a feature is exploited by the FRED framework, recently proposed to support the development of real-time applications upon such platforms. This paper presents an implementation of the FRED framework for the Linux operating system over the Zynq-7000 platform produced by Xilinx. Design solutions for managing hardware accelerators are first discussed. Then, a software architecture for Linux is presented, which comprises (i) support for shared-memory communication with hardware accelerators, (ii) an improved driver to handle the FPGA reconfiguration and (iii) a scheduler for requests of hardware acceleration. The proposed solution allows exploiting the enormous number of software systems available for Linux (such as drivers, libraries, communication stacks, etc.) and the typical programming flexibility of software, while relying on predictable hardware acceleration of heavy computations.