Overview of JetStream: A High-Performance PCIe Streaming Library for FPGA Communication
JetStream is an open-source PCIe streaming library developed for efficient FPGA-to-Host and FPGA-to-FPGA communication. It implements key OSI layers, handles physical and data link layers, and provides mechanisms for chunk transfers and managing outstanding requests. JetStream offers superior performance compared to other commercial solutions, supporting multi-board configurations with high data transfer rates. The system architecture, DMA modes, and related works showcasing JetStream's capabilities are highlighted in the images provided.
Download Presentation
Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
Malte Vesper, Dirk Koch, Vipin Kizheppatt, and Suhaib A. Fahmy JetStream: An Open-Source high-performance PCI Express 3 streaming library for FPGA-to-Host and FPGA-to-FPGA communication https://maltevesper.github.io/JetStream
OSI Layers PCIe implements 3 of 7 OSI layers: Transaction layer Data link layer Physical layer Xilinx/Altera hard IP handles physical and data link layer In the following Xilinx PCIe Gen 3 IP 6
Whats left to the user? Chunk transfers (alignment/max packet sizes) Manage number of outstanding requests Provide mechanisms for channels Create headers Host driver 7
Related work Commercial solutions Expensive Large and monolithic Open source No PCIe 3x8 (except ffLink) Often not multi FPGA details on comparison slide 8
Related Work PCIeGen ZeroCopy DMA Asynchronous transfers Multiboard support Board-to- Board Read MB/s Write MB/s EPEE 2 3280 3198 DyRACT 2 1474 1452 RIFFA 2.2 3x4 3040 3040 ffLink 3x8 6330 7060 Xillybus 3x4 3500 3500 Northwest Logic 3x8 ? ? ? ? 5573 5981 JetStream 3x8 6446 7086 9
Straddling Header Payload Header Payload Payload Header 2 Payload Payload Header Payload Header 2 Payload 11
DMA Modes 12
DMA Modes 13
DMA Modes 14
Speed 17
Stream benchmark 40 35 30 25 [GB/s] 20 15 10 5 0 Copy Add Copy Direct Add Direct 0 1 2 3 4 18
API-Example 19
Features 7 GB/s throughput Direct Board-to-Board transfers Transfer queues User interrupts/registerfiles Different DMA modes 20
Getting JetStream https://maltevesper.github.io/JetStream/ 21
Future Work BlockIP Parameters to disable alignment, chunking, . PCIe 4? straddling on all interfaces Altera port? 22
Thank you for your attention QUESTIONS https://maltevesper.github.io/JetStream