Xilinx、Zynq、AXI4 互连。配置寄存器片和数据 fifo 选项对性能有何影响?

Xilinx, Zynq, AXI4 interconnect. What are the performance implications of configuring register slice and data fifo options?

考虑 PL (FPGA) 端的 AXI4 互连。

当我双击查看可用选项时,在从接口中有一个选项卡。包含以下选项。

启用寄存器切片的目的是什么? outer指的是二级缓存吗? Auto 是什么意思?

启用Data FIFO 的目的是什么?对于突发交易? DMA 控制器没有自己的 FIFO 吗?

注册切片

启用注册切片 (AXI Interconnect v2.1 - pg. 93) 基本上会在您的 AXI 主从连接之间创建一条管道,以打破关键的时序路径。它似乎与 L2 缓存没有任何关系。可用选项为您提供以下内容(第 113 页):

  • 如果选择None (0),则不插入寄存器片。
  • 如果选择外部 (1),则在 SI 耦合器单元层次结构的 SI 侧插入一个寄存器片。
  • 如果选择自动 (2),则在检测到具有公共时序路径的 SI 耦合器单元时,寄存器片会自动插入到 SI 耦合器单元层次结构中。
  • 如果选择外部和自动 (3),则在 SI 耦合器单元层次结构的 SI 侧插入一个寄存器片,如果检测到具有公共时序路径的 SI 耦合器单元,则可以插入一个额外的寄存器片。

AXI Reference Guide 在第 91 页提供了 AXI 系统优化指南。例如,它指出:"Large and complex IP blocks such as processors, DDR3 memory controllers, and PCIe bridges are good candidates for having register slices enabled. The register slice breaks timing paths and allows more freedom for Place and Route (PAR) tools to move a large IP block away from the congestion of the interconnect core and other IP logic". Nonetheless , 我建议阅读整个部分,因为 过度使用寄存器片可能会适得其反。" 这实际上取决于您的系统设计。

数据先进先出

启用数据FIFO的目的是提供数据缓冲并实现更高的吞吐量。 32 深度模式 选项提供了一个基于 LUT-RAM 的 32 深度 FIFO(仅数据通道),而 512 深度(数据包模式) 提供了一个基于 512 深块 RAM 的数据包 FIFO。数据包 FIFO 模式在相应的地址通道上提供了一个额外的 32 深 FIFO,以避免 full/empty 在突发中间停顿。这 基本上 为 read/write 操作增加了延迟以避免停顿。阅读以下页面以获得更深入的信息。 (AXI Interconnect v2.1 - pg. 94)。选项提供以下内容:

  • 如果参数值为0,则不插入数据FIFO。
  • 如果参数值为1,则插入一个32深的数据FIFO。
  • 如果参数值为2,则插入一个512深的数据FIFO,并启用其数据包模式功能。

最后,我不知道 Xilinx 的 DMA 实施的确切情况,但我相信如果您的接收模块不如您的 DMA[=50= 快,那么包含一个缓冲区的目的是].也就是说,DMA 可以提供比您的模块可以读取的数据更多的数据,因此缓冲其输出可以 提高 通信速度(并释放您的 DMA 更快某些情况下)。