您现在的位置是:首页 > 文章详情

AMD-Xilinx 开源基于 LLVM 的 Nanotube 编译器

日期:2023-03-30点击:252

AMD-Xilinx 最近开源了他们基于 LLVM 的 Nanotube 编译器。根据介绍,AMD-Xilinx Nanotube 编译器采用 eBPF XDP C 代码,并构建在 LLVM 编译器堆栈之上,然后能够在 HLS C++ 中生成一个可在 Xilinx FPGA 上运行的数据包处理管道。

Nanotube 是编译器通道、库和 API 的集合,用于促进 EBPF XDP 和 similar networking 代码在 SmartNIC 的 FPGA 上执行。编译器将 EBPF XDP C 代码作为输入,并在 HLS C++ 中输出数据包处理管道。然后可以使用 Vitis HLS 合成此 HLS C++ 代码并将其放置在 FPGA 上。

编译器对程序进行各种转换;从将 EBPF 调用转换为对类似 Nanotube API 函数的调用开始。然后它在结构上和不同的 API 级别上执行多个阶段的代码转换:

  • mem2req:将 C 语言风格的指针访问(加载和存储)转换为对 map 和 packet data 的显式访问
  • optreq:将相邻的  map / packet 访问合并为更少的广泛访问
  • converge:理顺围绕 Nanotube API 调用的控制流图
  • pipeline:将单个数据包处理功能拆分为多个粗粒度管道阶段,并将应用程序逻辑更改为处理流经的 packet words,而不是内存中的 flat packet 表示
  • hls:从 LLVM IR 创建 HLS C++ 代码,用于 Vitis HLS 的合成

Nanotube 库以一种综合友好的实现方式实现了数据包访问和映射,这意味着它将被置于应用程序中,并将在 high-level synthesis 中创建高效的硬件。

此外,作为 Nanotube 编译器存储库的一部分,还有一个由 Facebook/Meta 开发的示例代码库。此示例被称为“Katran”,是一个在 Xilinx FPGA 上运行的高性能第 4 层网络负载均衡器。这个用于展示 Nanotube 编译器的示例是 eBPF GPLv2 许可代码。 

原文链接:https://www.oschina.net/news/234671/amd-xilinx-nanotube-compiler
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章