Az AMD-Xilinx nemrég nyílt forráskódú LLVM-alapú nanocsöves fordítóját, amely remek hálózati célokra használható FPGA-kon.
Az AMD-Xilinx Nanotube fordító eBPF XDP C kódot vesz fel, és az LLVM fordítóveremre építve képes egy csomagfeldolgozó folyamatot létrehozni HLS C++-ban, amely Xilinx FPGA-kon futhat.
“A nanotube fordítói belépők, könyvtárak és API gyűjteménye, amely megkönnyíti az EBPF XDP és hasonló hálózati kódok végrehajtását egy SmartNIC-ben lévő FPGA-n. A fordító az EBPF XDP C kódot használja bemenetként és egy csomagfeldolgozó folyamatot ad ki HLS C++ nyelven. Ez a HLS C++ kód szintetizálható a Vitis HLS segítségével, és elhelyezhető egy FPGA-n.
A fordító különféle átalakításokat hajt végre a programon, kezdve az EBPF hívások fordításával hasonló hívásokra Nanotube API-funkciók. Ezután több lépésben végrehajtja a kód strukturális és különböző API-szintekre történő átalakítását.
…
A Nanotube könyvtár olyan implementációban valósítja meg a csomagalapú hozzáférést és a leképezést, amely szintézisbarát, vagyis elhelyezve az alkalmazásban, és hatékony hardvert fog létrehozni a magas szintű szintézis során.”
A Nanotube fordítótár részeként van egy példakódbázis, amelyet a Facebook/Meta fejlesztett ki. Ezt a példát „Katran”-nak hívják, és Xilinx FPGA-kon futó, nagy teljesítményű 4. rétegű hálózati terheléselosztóként szolgál. Ez a Nanotube fordító bemutatására szolgáló példa egy eBPF GPLv2 licenccel rendelkező kód.
Azok, akik többet szeretnének megtudni erről a nemrég nyílt forráskódú AMD-ről A Xilinx Nanotube fordítója megtalálja a GitHubon.