文章来源:OpenFPGA
前言
随着人工智能、机器人、计算机视觉和高性能计算的发展,传统 CPU/GPU 架构正在面临新的挑战:
数据搬运成本越来越高;
内存访问成为性能瓶颈;
专用加速器开发周期长;
面对不同算法需求时缺乏灵活性。
FPGA 凭借可重构、高并行和低延迟优势,成为加速计算的重要方向。
来自瑞士洛桑联邦理工学院(EPFL)VCA 实验室的 FSA(Flexible Spatial Accelerator)项目,正是针对这一问题提出的一种新型 FPGA 加速架构。
它希望探索:
如何让 FPGA 加速器拥有更高的灵活性,同时保持接近专用硬件的性能。
什么是 FSA?
FSA 全称:
Flexible Spatial Accelerator
即:
灵活空间加速器。
FSA:在单个收缩期阵列中融合 FlashAttention
FSA 在单个脉动数组内执行所有FlashAttention 操作——无需向量单元!
享受使用矩阵乘法 FLOP 计算非矩阵乘法运算的乐趣。
为了最大限度地减少执行延迟,注意力操作在脉动数组中逐元素重叠。
与torch.nn.functional.scaled_dot_product_attentionon相比,FSA 达到了 1e-3 的精度fp16。
FSA架构
RTL 实现位于src文件夹下。顶层模块是AXI4FSA.scala。FSA指令的硬件行为在ExecutionPlan.scala中描述,控制逻辑会据此自动生成。
集成选项
提供两种将FSA集成到Chipyard中的方案:
TileLink 集成:将 FSA AXI4 内存通道连接到 Chipyard 的 TileLink MBus。如果 FSA 与其他 Chipyard 组件共享底层内存,则应使用此功能。相应的配置名称 FSAMxNConfig位于FSAConfig.scala.
直接 AXI4 集成:将 FSA AXI4 内存通道直接连接到后端内存(例如 DRAMSim、HBM),无需将 AXI4 转换为 TileLink。如果 FSA 不需要共享 MBus,建议使用此方法。相应的配置名称 AXI4FSAMxNConfig位于FSAConfig.scala.
FPGA 支持
本项目支持AMD U55C FPGA 开发板。
1. FPGA 位生成
请确保已安装Vivado,然后运行以下命令:
cd chipyard-fsa/fpga
make SUB_PROJECT=u55c CONFIG=EmptyU55CConfig TOP=EmptyChipTop bitstream生成的比特流文件位于[ chipyard-fsa/fpga/generated-src/chipyard.fpga.u55c.U55CFPGATestHarness.EmptyU55CConfig/U55CFPGATestHarness.bit]。可以使用 Vivado 将此文件烧录到 FPGA 开发板上。强烈建议使用除安装 FPGA 卡的机器(主机)之外的其他机器进行烧录。
2. FPGA主机配置
请确保主机已安装并加载 Xilinx 的XDMA 驱动程序(https://github.com/Xilinx/dma_ip_drivers)。每次烧录比特流时,都应使用以下命令重新扫描 PCIe 总线:
echo 1 > /sys/class/pci_bus/0000:01/device/remove
echo 1 > /sys/bus/pci/rescan
现在应该可以看到xdma0_c2h_0、xdma0_h2c_0和xdma0_user设备/dev。
3. 运行FPGA测试
仍在主机上,运行以下命令启动测试:
cd chipyard-fsa/generators/fsa/python
uv run main.py --seq_q 16 --seq_kv 16 --config EmptyU55CConfig --engine FPGA示例输出:
Loading config from: ../../../fpga/generated-src/chipyard.fpga.u55c.U55CFPGATestHarness.EmptyU55CConfig/chipyard.fpga.u55c.U55CFPGATestHarness.EmptyU55CConfig.FSAConfig.json
Device finished execution
Performance counters:
Execution time: 9414 cycles
Max bubble cycles: 6535 cycles
Max active cycles: 179 cycles
DMA active cycles: 233 cycles
Raw instructions: 32
Max instructions: 5
DMA instructions: 4
Fence instructions: 1
Enqueue instructions: 32
Dequeue instructions: 32
Reading back output tensor from addr 0x80000600, size 1024
Comparing with Torch...
Error of FSA vs torch: {'MAE': np.float32(9.4124e-05), 'MSE': np.float32(1.3156206e-08), 'MaxErr': np.float32(0.00031119585), 'RelErr': np.float32(0.00018823991)}要进行另一次测试运行,请从步骤 2 重新开始以重置 FPGA 系统。
参考链接
开源项目地址
https://github.com/VCA-EPFL/FSA?utm_source=chatgpt.com
项目配套论文
http://arxiv.org/abs/2507.11331
总结
EPFL VCA 实验室推出的 FSA(Flexible Spatial Accelerator) 项目,通过空间计算架构重新思考 FPGA 加速器设计,希望在性能和灵活性之间找到新的平衡。
FSA 并不是单纯提供几个 RTL 模块,而是完整实现了一套 Flexible Systolic Array(柔性脉动阵列) 架构。
它不仅展示了一种新的 FPGA 加速方法,也代表了未来可重构计算的发展趋势:
FPGA 不只是用来实现电路,而正在成为一种能够动态适应算法变化的计算平台。
除了 RTL 代码之外,开源仓库还提供了较完整的开发环境,包括:
Chisel 硬件描述
Verilator 仿真
FPGA 实现工程
软件运行环境
Benchmark 示例
AI 工作负载测试
对于希望学习现代 AI 加速器设计的开发者来说,不仅可以阅读架构论文,还可以直接查看硬件实现细节,理解从架构设计、RTL 实现到 FPGA 验证的完整流程。


