FPGA并行化架构在伊辛机中的优化设计与实现
2026/6/25 14:28:44 网站建设 项目流程

1. FPGA并行化架构在伊辛机中的核心设计思路

伊辛机(Ising Machine)作为一种解决组合优化问题的专用计算架构,其核心计算模块包括矩阵向量乘法(Matrix-vector Multiplication, MM)和时间演化(Time Evolution, TE)。在FPGA实现中,这两个模块的并行化设计直接决定了整体计算效率。我们的设计采用了三级并行化策略:

  • Pr(并行乘法器数量):控制每个MM模块中MAC(Multiply-ACcumulate)单元的数量,直接影响矩阵-向量乘法的计算吞吐量。例如在256-spin问题中,Pr=16表示每个时钟周期可同时计算16个Ji,j·sgn(xj)乘积。

  • Pc(系数并行读取宽度):决定从J矩阵存储器中每周期可读取的系数数量。当Pc=16时,每个MAC单元可同时获取16个J系数,与Pr协同实现全流水线操作。

  • Pb(模块复制数量):通过实例化多个MMTE(MM+TE组合模块)实现任务级并行。在KV260平台上,Pb=4表示同时运行4组独立的计算单元。

关键设计准则:根据公式nspin/Pc ≥ Pr确定参数关系,确保MM和TE模块能完全流水线化。当nspin/Pc = Pr时(如256/16=16),可实现计算资源的100%利用率。

2. 矩阵向量乘法单元的硬件实现细节

2.1 MAC单元的结构优化

每个MM模块包含Pr个MAC单元,其核心运算逻辑如图9所示。特殊设计的MAC单元采用以下优化技术:

  1. 符号位快速处理:通过多路选择器实现J系数与sgn(xj)的乘积运算。当sgn(xj)为负时,自动选择J系数的1's补码(即按位取反),避免实际执行乘法操作。

  2. 树形加法器结构:采用两级二进制树加法器(Tree1和Tree2)实现多操作数累加:

    • Tree1:对Pc个部分积进行求和(如16个8-bit数的加法)
    • Tree2:并行计算符号位和的2's补码修正项
    • 最终通过一个加法器完成结果整合,减少关键路径延迟
  3. 累加器共享:输出多路选择器允许Pr个路径共享同一个TE逻辑(DP模块),显著节省寄存器资源。

2.2 存储架构设计挑战

存储子系统是资源消耗的主要来源(占93% BRAM),其架构如图10所示:

存储器类型位宽设计并行访问需求实现方式
XMEM/YMEMPb×Xbits每周期Pb次读写简单双端口RAM
J MemoryPb×Pr×Jbits×Pc每周期Pb×Pr×Pc个系数分布式Block RAM
SGNXMEM2×Pb×Pr符号位双缓冲寄存器文件

实际实现中面临的主要矛盾是:并行度提升会导致存储带宽呈平方增长(Pr×Pc)。例如当Pr=Pc=16时,需要同时访问256个J系数,这对FPGA的布线资源和时序收敛带来严峻挑战。

3. 流水线时序优化与性能分析

3.1 四种执行模式的对比

图8展示了从顺序执行到全并行化的演进过程:

  1. 顺序执行:MM和TE串行操作,耗时最长(约N² cycles)
  2. 循环展开:通过Pr和Pc提升并行度,加速MM模块
  3. 流水线重叠:让TE模块利用MM计算时的空闲周期执行
  4. 模块复制:增加Pb个MMTE实例,实现任务级并行

最终执行时间公式为:

texec4 = O(nsteps·(nspin/Pb)·(nspin/(Pc·Pr) + 1/Pc)·Tck)

在KV260平台上的实测数据显示:

  • 单步计算时间:254ns(200MHz时钟)
  • 初始化开销:0.39ms(主要来自J矩阵加载)
  • 资源利用率:BRAM 93%,LUT 14%

3.2 参数选择权衡

表1对比了不同参数组合的优劣:

参数组合时钟周期数BRAM需求适用场景
Pr=Pc=Pb=16最小超过容量理论最优
Pr=Pc=16, Pb=4略多93%实际部署
Pr=Pc=8, Pb=8中等65%平衡型

选择Pr=Pc=16, Pb=4的原因:

  1. 保持MM模块的高并行度(256并行乘法)
  2. 控制BRAM使用在器件容量内(144个中的134个)
  3. 路由延迟可控,确保时序收敛到200MHz

4. 实际应用效果与优化技巧

4.1 Max-Cut问题测试结果

在256-spin的Max-Cut问题上(J∈[-128,0]),硬件实现表现出色:

  • 128步时:85%的解达到软件模拟退火(SA)结果的90%
  • 时间-目标值(TTT)指标:39.5μs(含初始化)
  • 结果分布(图13)显示随着步数增加,解质量快速提升

4.2 FPGA实现经验总结

  1. 内存分区策略:将J矩阵按行分组存储在不同BRAM中,避免访问冲突。例如当Pr=16时,将矩阵划分为16个带状区域。

  2. 时序收敛技巧

    • 对树形加法器插入流水线寄存器
    • 对长走线信号添加寄存器缓冲
    • 使用CARRY8原语优化进位链(占用15%)
  3. 初始化优化

    • 采用AXI DMA加速J矩阵加载
    • 对不变的问题参数实现单次加载多次复用
  4. 数值精度处理

    • 采用8-bit定点表示J系数
    • 累加器位宽扩展至24-bit防止溢出
    • 对TE模块使用12-bit相位精度

5. 扩展应用与未来改进方向

当前架构已成功应用于旅行商问题(TSP)和背包问题,但仍有提升空间:

  1. 近似计算优化

    • 对远离平衡点的spin采用粗粒度更新
    • 使用随机舍入降低TE计算复杂度
  2. 内存压缩技术

    • 利用J矩阵对称性节省存储
    • 对稀疏问题采用COO格式存储
  3. 动态参数调整

    • 根据收敛情况自适应调整加热参数
    • 实现步长参数的运行时配置
  4. 混合精度设计

    • 对关键路径采用低精度计算
    • 对最终结果进行高精度修正

这套开源VHDL代码已托管在GitHub,支持参数化配置所有并行度参数和数值精度。用户可根据目标FPGA资源调整Pr/Pc/Pb组合,例如在Artix-7系列上可采用Pr=Pc=8, Pb=2的配置。实践证明,这种灵活的设计方法比固定架构的IP核更具实用价值。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询