当前位置: 首页 > news >正文

【FPGA开发】Xilinx DSP48E2 slice 一个周期能做几次int8乘法或者加法?如何计算FPGA芯片的GOPS性能?

Xilinx DSP48E2 slice 在一个时钟周期内处理 INT8(8 位整数)运算的能力。

核心能力概述

一个 DSP48E2 slice 包含几个关键计算单元:

  1. 预加器 (Pre-Adder): 可以执行 A + D 或 A - D 操作,其中 A 是 30 位,D 是 27 位。
  2. 乘法器 (Multiplier): 执行 27 位 × 18 位的乘法。
  3. ALU (Arithmetic Logic Unit) / 后加器: 一个 48 位的单元,可以执行加法、减法、逻辑运算,并能累加乘法器的结果 § 或来自 C 输入端口的数据。

INT8 运算的并行度 (SIMD 能力)

DSP48E2 的设计允许它通过 SIMD(单指令多数据)方式,在其宽数据通路上并行处理多个较小位宽的操作,如 INT8。

  • INT8 乘法:

    • 乘法器是 27x18 位。我们可以将 8 位数据(通常带符号,需要 9 位表示,即 sint<9>) 映射到这些输入。
    • 27 位输入 (A) 可以容纳 三个 9 位操作数 (3 * 9 = 27)。
    • 18 位输入 (B) 可以容纳 两个 9 位操作数 (2 * 9 = 18)。
    • 通过特定的 OPMODE 配置,DSP48E2 可以同时执行 两组 独立的 9x9(或 8x8)乘法。例如,计算 A[8:0] * B[8:0]A[17:9] * B[17:9]
    • 结论: 一个 DSP48E2 在一个时钟周期内最多可以执行 2 次 INT8 乘法。
  • INT8 加法/减法:

    • 预加器 (A+D): A 输入 30 位,D 输入 27 位。理论上,30 位可以容纳 3 个 8/9/10 位操作数,27 位也可以容纳 3 个 8/9 位操作数。通过 SIMD 配置,预加器可能支持最多 3 次 并行的 INT8 加/减法。
    • ALU/后加器 (48 位): 这个单元功能更强大,有 48 位宽。
      • 它可以被配置为执行多个并行的较小位宽算术/逻辑运算。
      • 48 位可以容纳 六个 8 位操作数 (6 * 8 = 48)。
      • 通过合适的 ALUMODEOPMODE 设置,ALU 理论上可以支持最多 6 次 并行的 INT8 加法、减法或逻辑操作。
    • 结论:
      • 使用预加器,最多 3 次 INT8 加/减法。
      • 使用 ALU/后加器,最多 6 次 INT8 加/减法/逻辑运算。
      • 注意: 能否同时利用预加器和后加器进行 独立的 INT8 加法,取决于具体的流水线和操作模式配置。通常,它们是串联路径的一部分(例如,预加结果送入乘法器,乘法器结果送入后加器)。但在某些模式下,它们可能被用于不同的并行计算。

总结

在一个时钟周期内,一个 Xilinx DSP48E2 slice 的 INT8 运算能力上限是:

  • 乘法: 最多 2 次 INT8 乘法。
  • 加法/减法:
    • 理论上,ALU 最多可执行 6 次 INT8 加/减法/逻辑运算。
    • 预加器最多可执行 3 次 INT8 加/减法。

实际应用中的考虑:

  • Multiply-Accumulate (MAC): 最常见的 DSP 应用是 MAC。DSP48E2 可以执行 2 次 INT8 乘法,并将这两个 16 位(或更高位宽,考虑累加)的结果在同一个周期内送入 48 位 ALU 进行累加。这通常被计为 2 个 INT8 MAC 操作 / 周期。
  • 工具推断: HLS 或 RTL 综合工具能否自动推断出这些复杂的 SIMD 模式,取决于代码的写法和使用的 pragma/属性。要达到理论最大值,有时需要手动实例化 DSP 宏或者使用特定的编码风格。
  • 配置: 实现这些并行度的前提是正确配置 DSP slice 的 OPMODE, ALUMODE 等控制信号。

因此,当评估性能时,通常认为 DSP48E2 提供 2 个 INT8 乘法 的能力,并配合强大的 并行加法/累加 能力。

计算理论最大INT8性能

文献结果

我们用Ulitra96V2这款常见的入门板子计算,他是ZU3CG芯片
在这里插入图片描述
来源 FPGA-based Acceleration of Time Series Similarity Prediction: From Cloud to Edge

在这里插入图片描述
他有360个DSP单元可配置,
如果不考虑数据从哪来,理论最大是 (2次乘法+4次加法) X 360(器件数量) X 300 M(时钟频率) = 648 Gops
虽然我们也不知道文献里面的691GOPS怎么算的,但差的不多

http://www.xdnf.cn/news/291781.html

相关文章:

  • Python项目源码60:电影院选票系统1.0(tkinter)
  • C++ 运算符重载详解:赋予自定义类型原生操作的能力
  • PHP数组排序深度解析:sort()、rsort()、asort()、arsort()、ksort()、krsort() 的适用场景与性能对比
  • 责任链模式(Chain of Responsibility Pattern)
  • SpringCloud多环境配置的一些问题
  • 如何解析CAN报文物理值是负数的信号
  • 如何选择适合自己的LLM
  • 互联网大厂Java求职面试:高并发系统设计与架构实战
  • LeetCode热题100--189.轮转数组--中等
  • 人工智能应用:从技术突破到生态重构的演进之路
  • 【datawhaleAI春训营】楼道图像分类
  • 标题:试验台铁地板:革新之路
  • ARM子程序和栈
  • 第18章:赤色世界:文明的分支与新纪元
  • 雷电模拟器-超好用的Windows安卓模拟器
  • 以太网协议(IEEE 802.3)
  • 数据类型:String
  • 低功耗蓝牙BLE的通信可靠性分析
  • 内存碎片深度剖析
  • 多图详解VSCode搭建Python开发环境
  • BC8 十六进制转十进制
  • Vite 的工作流程
  • 大模型推理框架简介
  • 算法每日一题 | 入门-顺序结构-上学迟到
  • Linux 系统的指令详解介绍
  • 数据融合(Data Fusion)的概念与核心思想
  • DeepSeek-Prover-V2,DeepSeek推出的开源数学推理大模型
  • 实验4 mySQL查询和视图
  • MinIO实现https访问
  • Spring中的控制反转和依赖注入(IoC和DI)以及常见面试题