《A Matrix-Multiply Unit for Posits in Reconfigurable Logic Leveraging (Open)CAPI》(一)
以下是对论文《A Matrix-Multiply Unit for Posits in Reconfigurable Logic Leveraging (Open)CAPI》的中文综述分析,包括研究背景、实现方法、结构优化、性能对比与总结反思,采用与上一篇论文一致的风格:
基于(Open)CAPI的POSIT矩阵乘法加速器研究综述
一、研究背景与动因
IEEE 754浮点标准虽然已被广泛使用,但其在数值表示对称性、舍入误差、异常值处理等方面存在固有限制。John Gustafson 提出的 POSIT 算术格式因其更对称、更紧凑且具备动态精度调节能力,被认为是 IEEE 浮点标准的潜在替代者。
然而,POSITS 的实际应用受限于缺乏成熟的硬件实现。为了推动 POSIT 的应用和验证,作者提出并实现了一种在 可重构逻辑(FPGA)中实现的 POSIT 矩阵乘法加速器设计,目标是实现高吞吐、低延迟且高精度的矩阵乘法运算,同时通过 (Open)CAPI 接口与主机 CPU 高效通信。
二、32位 Posit(32,2) 硬件表示与转换
论文采用 32-bit POSIT 算术格式(es=2),其基本结构为:
[
x = (-1)^{sign} \cdot useed^k \cdot 2^e \cdot f
]
- useed = ( 2{2{es}} = 16 ),
- regime(k值)通过 leading-one/zero 计数器(LZC)计算,
- exponent 和 fraction 位置不固定,通过左移归一化处理。
为了便于硬件计算,作者将上述格式转换为:
[
x = (-1)^{sign} \cdot 2^{exp_value - 128} \cdot f
]
其中 exp_value = k * 2^es + e + 128,该转换使得后续的乘加操作和指数统一表示更简洁。
三、核心设计:精确点积与矩阵乘法加速器
3.1 精确点积实现原则
- POSIT 点积操作需要避免中间舍入误差,因此采用 512位 Quire 寄存器 来容纳所有乘积累加结果。
- Quire 可表达范围为:( 2^{255} \sim 2^{-256} ),足以容纳大多数矩阵操作中积累的误差。
- 与 IEEE float 相比,点积精度更高,适合大规模向量累加。
3.2 Carry-Save 加法器优化结构
- 每次乘积的有效位最多56位,直接加到 512 位 quire 会造成资源浪费。
- 将512位划分为 8个64位区块(Block0~Block7),利用 carry-save adder + 局部RAM块(even/odd分离) 来实现区域性更新;
- 每个块追加 16-bit carry 区域,有效解决进位/借位问题,同时可支持正负数累加。
3.3 多缓冲结构提升吞吐
- 加入双缓冲结构:交替使用 RAM1 / RAM2 或双 carry 模块,可实现下一组点积操作的 无停顿启动;
- 当处理足够长的向量时,可保持全吞吐不间断运行。
四、矩阵乘法单元设计
- 构建 64个并行点积单元(对应矩阵 B 的64列);
- 将输入矩阵 A 按行输入,矩阵 B 按列并行装载;
- 支持大型矩阵按子块(block)划分计算,每个点积单元负责一列输出,无中间舍入;
- 支持高达十亿维度的向量点积,只需扩展 quire 数量或合并 partial result。
数据存储采用 BRAM,未来可拓展为 URAM 以支持更大规模矩阵;所有控制均由 FPGA 内部逻辑完成,主机仅需通过 OpenCAPI 接口传递指针并等待结果返回。
五、性能评估与对比分析
5.1 实验平台配置
| 配置 | FPGA型号 | 接口 | 带宽 | 支持资源(DSP/FF/LUT) |
|---|---|---|---|---|
| 配置1 | VX690 | CAPI 1.0 | 4 GB/s | 3600 / 866K / 433K |
| 配置2 | VU3P | OpenCAPI 3.0 | 16 GB/s | 2280 / 788K / 394K |
| 配置3 | VU37P | OpenCAPI 3.0 | 32 GB/s | 9024 / 2607K / 1304K |
5.2 资源与频率对比(单元级)
| 运算类型 | FF | LUT | DSP | 频率 |
|---|---|---|---|---|
| Posit 点积单元 | 1031 | 2618 | 4 | 200MHz |
| IEEE float 乘加器 | 1325 | 866 | 4 | 300MHz |
5.3 峰值与实测性能
- 单位时间最多支持 64 个并行 dot-product;
- 在配置1中,实测峰值为 10 Gpops;
- 预计配置2和配置3在理想条件下可达 16 Gpops ~ 64 Gpops;
- 软件实现(Julia)相比硬件慢约 1000倍。
六、结论与展望
本论文提出并实现了一个完整的 基于FPGA的 POSIT 点积与矩阵乘法加速器,其主要特点包括:
- 保留中间精度的 精确点积机制(Quire);
- 使用 Carry-Save 架构与块级内存布局优化资源与速度;
- 支持与 OpenCAPI 接口的无驱动直接通信,提升带宽效率;
- 面向大规模矩阵与向量计算,具备良好的可扩展性。
作者已将该设计 开放源码(GitHub 项目地址),为 POSIT 硬件社区提供了第一批可复用模板,未来将结合高带宽接口与更新工艺节点(如URAM)进行更大规模部署与改进。

浙公网安备 33010602011771号