FPGAs are increasingly common in modern applications, and cloud providers now support on-demand FPGA acceleration in data centers. Applications in data centers run on virtual infrastructure, where consolidation, multi-tenancy, and workload migration enable economies of scale that are fundamental to the provider's business. However, a general strategy for virtualizing FPGAs has yet to emerge. While manufacturers struggle with hardware-based approaches, we propose a compiler/runtime-based solution called Synergy. We show a compiler transformation for Verilog programs that produces code able to yield control to software at sub-clock-tick granularity according to the semantics of the original program. Synergy uses this property to efficiently support core virtualization primitives: suspend and resume, program migration, and spatial/temporal multiplexing, on hardware which is available today. We use Synergy to virtualize FPGA workloads across a cluster of Altera SoCs and Xilinx FPGAs on Amazon F1. The workloads require no modification, run within 3-4x of unvirtualized performance, and incur a modest increase in FPGA fabric utilization.
翻译:FPGA在现代应用中越来越普遍,云端提供者现在支持在数据中心按需加速FPGA。数据中心的应用是在虚拟基础设施上运行的,在虚拟基础设施上,合并、多租赁和工作量迁移使规模经济成为提供者业务的根本。然而,尚未出现一个使FPGA虚拟化的总体战略。在制造商与硬件基办法斗争的同时,我们提议了一个名为协同的汇编/运行时间解决方案。我们展示了Verilog程序的一个编译器转换,根据原方案的语义,它生成了能够对低时制微粒软件进行控制的代码。协同利用这种属性来高效支持核心虚拟化原始技术:暂停和恢复、程序迁移以及空间/时空多交,目前已有硬件。我们利用协同效应将FPGA工作量虚拟化为亚马逊 F1 的Altera SoCs 和 Xilinx FPGAs 组合。工作量不需要修改,在3-4x的不精准性性表现范围内进行,并且使FAFGA的利用略有增加。