arrow
Return

PoCo: Extending Task-Parallel HLS Programming with Shared Multi-Producer Multi-Consumer Buffer Support

delete2025-12-01
delete0
PRE
AI
A
Akhil Raj Baranwal
Z
Zhenman Fang *
DOI:10.1145/3771938delete
deleteOriginal
deleteOriginal request for help
deleteShare
deleteSave
Abstract

Abstract

En 中文
Advancements in High-Level Synthesis (HLS) tools have enabled task-level parallelism on FPGAs. However,prevailing frameworks predominantly employ Single-Producer-Single-Consumer (SPSC) models for taskcommunication, thus limiting application scenarios. Analysis of designs becomes non-trivial with an increasingnumber of tasks in task-parallel systems. Adding features to existing designs often requires re-profiling ofseveral task interfaces, redesign of the overall inter-task connectivity, and describing a new floorplan. Thisarticle proposes PoCo, a novel framework to design scalable Multi-Producer-Multi-Consumer (MPMC) modelson task-parallel systems. PoCo introduces a shared-buffer abstraction that facilitates dynamic and high-bandwidth access to share on-chip memory resources, incorporates latency-insensitive communication,and implements placement-aware design strategies to mitigate routing congestion. The frontend providesconvenient APIs to access the buffer memory, while the backend features an optimized and pipelined datapath.Empirical evaluations demonstrate that PoCo achieves up to 50% reduction in on-chip memory utilizationon SPSC models without performance degradation. Additionally, three case studies on distinct real-worldapplications reveal up to 1.5xfrequency improvements and simplified dataflow management in heterogeneousFPGA accelerator designs.
Keywords:
Multi-producer multi-consumer
buffer optimization
floorplan optimization
multi-die FPGA
high-level synthesis

Journal

ACM Transactions on Reconfigurable Technology and Systems cover
ACM Transactions on Reconfigurable Technology and Systems
IF:
2.8
Papers:
597
Citations:
810

Organization

S
simon fraser university
Scholars:
1.6K
Papers: 835
Citations: 0