跳转到内容

应用说明:共享内存#

在imaFlex上使用共享内存marathon 帧捕获器#

imaFlex 和 microEnable 5 marathon 图像采集卡共享 DRAM Memory。

所有使用 Memory 的算子在图像采集卡上仅分配给一个物理 Memory。在 imaFlex 和 microEnable 5 marathon 图像采集卡上,概念有所不同。在这些图像采集卡上,您可以使用速度快得多的 DDR4(在 imaFlex 上)或 DDR3(在 marathon 上)Memory。但是,这只是一个单一的物理 Memory,因此所有使用 Memory 的 VisualApplets 算子都将共享带宽。

帧捕获器的内存配置最好参考VisualApplets设备资源文档来确定。该文档中包含与在 DRAM 元素中使用相关的信息。 VisualApplets 设计:RAM 容量、RAM 数据宽度和每 RAM 带宽(除以下平台外,适用于所有平台): marathon 系列)和 RAM 带宽总计(共享) marathon 系列。

信息

VisualApplets设备资源文档中给出的带宽值是理论最大值。实际使用中,效率可能会降低。

本文档指导您通过使用 RAM 大小和 RAM 数据宽度信息,为特定平台高效使用 Memory。它还可帮助您计算 marathon 系列每个 RAM 的最终带宽。

高效利用DRAM#

在VisualApplets设备资源文档中,您可以找到有关特定平台 RAM 大小的信息:

  • 对于 imaFlex CXP-12 Quad:3 x 512 MiB DDR4
  • 对于 imaFlex CXP-12 Penta:5 x 512 MiB DDR4
  • 对于 marathon 系列和 LightBridge:4 x 512 MiB DDR3

这些值提供有关总 RAM 大小(例如,对于 marathon 系列:4 x 512 MiB = 2 GiB (2^31 字节))以及单个 VisualApplets 算子最多可使用哪个分区(对于 marathon 系列:512 MiB)的信息。

只有充分利用 RAM 数据宽度信息(另请参阅VisualApplets设备资源文档),才能有效地利用每个操作员的最大 RAM 大小:

  • 对于 imaFlex CXP-12 Quad,RAM 数据宽度为 384 bit
  • 对于 imaFlex CXP-12 Penta,RAM 数据宽度为 640 bit
  • 对于 marathon VCX-QP 和 VF2,RAM 数据宽度为 512 bit
  • 对于 marathon VCL、VCLx 和 LightBridge,RAM 数据宽度为 256 bit

RAM 数据宽度是指 VisualApplets 设计中连接到 DRAM 算子的链路的 Bit Width、Parallelism 以及内核元素的乘积。

DRAM 的应用示例#

该示例使用了针对 marathon VCL 平台的简单 VisualApplets 设计,如下图所示。

图 1:Parallelism 4 RAM 使用情况

该示例使用的 Parallelism 为 4,Bit Width 为 8 bit。因此,该示例仅使用了 4 x 8 = 32 bit 的 RAM 数据宽度。但是,为了完全高效,带宽需要达到 256 bit。因此,您必须将 Parallelism 增加到 32,如下一张图所示。

图 2:Parallelism 32 RAM 使用情况

现在,此设计确保了您可以高效地使用 DRAM。通常,充分利用可用的 RAM 数据宽度始终是最佳选择。但是,有时这并不可能,因为您需要更多资源、您的数据格式无法被 256 整除,或者算子的参数不再允许使用完整范围。因此,您还需要了解是否可以降低 Parallelism。为此,您需要了解内存带宽,这将在下一节中进行解释。

内存带宽#

您可以在VisualApplets设备资源文档中找到有关单个 DRAM 元素最大内存带宽的特定平台信息。由于您需要考虑从 RAM 读取和写入数据,因此在计算最终带宽时,最大带宽将除以 2:

公式计算所得最大带宽

只有使用全部 RAM 数据宽度才能达到此带宽值(参见“高效利用 DRAM”部分)。因此,计算最终带宽时,需要考虑已用 RAM 数据宽度与全部 RAM 数据宽度的比值:

公式计算所得最大带宽

根据此公式,您可以计算所需的 RAM 数据宽度:

bit width * parallelism * kernel elements of a link connected to a RAM element 在设计中使用该宽度以实现特定的最终带宽。这意味着,如果您已定义 Bit Width 和内核元素,还可以计算连接到 RAM 元素的链路所需的最小 Parallelism。

内存带宽计算示例#

您可以在“内存带宽”部分计算设计示例的带宽。对于图 1 所示的 RAM 数据宽度为 32 位的设计示例,其带宽为:

公式计算所得最大带宽

对于图 2 中所示的 RAM 数据宽度为 256 bit 的设计示例,最终带宽为:

公式计算所得最大带宽

共享 Memory#

“内存带宽”章节中的带宽计算公式适用于所有帧捕获器平台,前提是仅存在单个 DRAM 运算符。此外,该公式也适用于除以下情况外的所有平台小程序中每个 DRAM 元素的带宽计算: marathon 系列。如果使用多个运算符,则总内存带宽由多个运算符共享。 marathon 系列。单个 DRAM 单元的带宽按以下公式计算:

公式计算所得最大带宽

共享内存示例#

以下针对 marathon VCL 平台的示例展示了两个相机、两个 DRAM 元素(RAM 数据宽度为 32 bit)和两个 DMA,如下图所示:

图 3:两个相机在 Parallelism 为 4 时使用 RAM

最终带宽为:

公式计算所得最大带宽

与“内存带宽”一节中计算的、RAM 数据位宽为 32 位但设计中仅包含一个 DRAM 单元的带宽相比,使用两个 DRAM 单元时的带宽仅为之前的一半。要使两个 DRAM 单元的带宽与单个 DRAM 单元的带宽相同,需要将 RAM 数据位宽加倍(即 64 位)。

操作员配置#

运算符配置会自动适应给定帧采集卡硬件的可用 RAM 数据宽度。因此,大多数运算符允许使用VisualApplets设备资源文档中给出的 RAM 数据宽度。某些运算符仅允许并行度为 1。为了克服 64 位链路位宽的限制,部分运算符允许内核使用更高效的 RAM 数据宽度,具体说明请参见“DRAM 的高效使用”和“内存带宽”部分。DRAM 运算符存在例外情况,需要特殊配置才能高效使用。有关运算符最佳配置的详细信息,请参阅运算符系数缓冲区文档。