论文标题

用于数据包处理管道的高级合成

High-Level Synthesis for Packet-Processing Pipelines

论文作者

Gao, Xiangyu, Raghunathan, Divya, Fang, Ruijie, Wang, Tao, Zhu, Xiaotong, Sivaraman, Anirudh, Narayana, Srinivas, Gupta, Aarti

论文摘要

编译高级程序以针对高速数据包处理管道是一个具有挑战性的组合优化问题。编译器必须配置管道的资源以匹配程序的高级语义,同时将所有程序的所有计算都包装到管道有限的资源中。艺术的方法解决了这个问题的各个方面。但是,他们错过了有效产生全球高质量结果的机会。我们认为,以前应用于ASIC/FPGA设计的高级合成(HLS)是将管道的编译问题分解为具有模块化溶液的较小零件的正确框架。我们设计了一个基于HLS的编译器,该编译器在三个阶段工作。转换重写程序以使用更丰富的管道资源,避免稀缺的管道资源。合成将复杂的交易代码分解为管道计算单元的配置。分配将程序的计算和内存映射到硬件资源。我们在编译器的CAT中原型制作了这些想法,该编译器针对RMT管道的Verilog硬件模型的Tofino Pipeline和循环精确的模拟器。 CAT可以处理现有编译器当前无法在管道上运行的程序,在使用较少的管道资源的同时,比现有编译器更快地生成代码。

Compiling high-level programs to target high-speed packet-processing pipelines is a challenging combinatorial optimization problem. The compiler must configure the pipeline's resources to match the high-level semantics of the program, while packing all of the program's computation into the pipeline's limited resources. State of the art approaches tackle individual aspects of this problem. Yet, they miss opportunities to efficiently produce globally high-quality outcomes. We argue that High-Level Synthesis (HLS), previously applied to ASIC/FPGA design, is the right framework to decompose the compilation problem for pipelines into smaller pieces with modular solutions. We design an HLS-based compiler that works in three phases. Transformation rewrites programs to use more abundant pipeline resources, avoiding scarce ones. Synthesis breaks complex transactional code into configurations of pipelined compute units. Allocation maps the program's compute and memory to the hardware resources. We prototype these ideas in a compiler, CaT, which targets the Tofino pipeline and a cycle-accurate simulator of a Verilog hardware model of an RMT pipeline. CaT can handle programs that existing compilers cannot currently run on pipelines, generating code faster than existing compilers, while using fewer pipeline resources.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源