Operator MemoryInterfaceAnalyzer

Operator Library: Debugging

MemoryInterfaceAnalyzer 算子提供有关 Memory 接口数据流的信息。它不会更改、添加或删除任何图像数据或控制信号。

[重要] 运行时测试

此算子用于在运行时测试和分析您的设计。在您使用该算子进行调试之前,必须构建(综合)设计、将其加载到目标硬件上,并运行实际的图像处理。

该算子不适用于 VisualApplets 中的设计仿真。

您可以使用该算子检测阻塞情况,并观察多个 Memory 算子如何共享可用的 Memory 带宽。有关共享 Memory 概念的更多信息,请参阅:Application Note: Shared Memory 和 ' Shared Memory Concept '。

MemoryInterfaceAnalyzer 算子仅在附加到使用 RAM 类型资源的现有 Memory 算子时才起作用。该算子会附加到指定的 RAM 端口(RamResourceId)并观测数据流。使用 Frame Grabber RAM (DRAM) 的每个 Memory 算子都同时具有写入接口和读取接口。

  • 写入接口:

    Memory 算子请求写入访问权限,Memory 控制器在可能的情况下授予访问权限。是否授予访问权限取决于所有连接的 Memory 算子及其当前的读取或写入请求。写入接口可以处于以下状态之一:

    • 写入传输:

      当算子请求写入访问权限且 Memory 控制器授予该请求时,就会发生写入传输。

    • 写入等待:

      如果算子请求写入访问权限,但 Memory 控制器当前正在处理来自其他 Memory 接口的请求,则不授予该请求。算子将等待写入访问权限。

    • 写入空闲:

      算子未请求写入访问权限,且写入接口当前未被使用。

  • 读取接口:

    Memory 算子请求读取访问权限,Memory 控制器在可能的情况下授予访问权限。是否授予访问权限取决于所有连接的 Memory 算子及其当前的读取或写入请求。读取接口可以处于以下状态之一:

    • 读取传输:

      当算子请求读取访问权限且 Memory 控制器授予该请求时,就会发生读取传输。

    • 读取等待:

      如果算子请求读访问,但内存控制器当前正在处理来自另一个 Memory 接口的请求,则该请求不被授予。算子将等待读访问。

    • 读空闲:

      算子未请求读访问,且读接口当前处于未使用状态。

下图显示了 MemoryInterfaceAnalyzer 如何连接到指定的 Memory 接口。每个接口包含:

  • 来自 Memory 算子的一个 请求信号,以及

  • 来自内存控制器的 确认信号,用于批准或拒绝访问。

每个 Memory 算子都同时具有写接口和读接口。在以下示例中,MemoryPortId 为 1。

读接口仅描述了读地址向内存的传输,因为可以认为,将读地址传输给内存控制器将始终向 Memory 算子发起读数据传输。

有关共享内存概念的更多信息,请阅读:应用笔记:共享内存 和 “共享内存概念”。

MemoryInterfaceAnalyzer 算子用于测量在指定的测量周期(MeasurementPeriod)内,Memory 算子处于以下各个状态的时间占比:

  • 写传输

  • 写等待

  • 写空闲

  • 读传输

  • 读等待

  • 读空闲

算子通过其读取参数提供这些结果。由于它仅报告测量结果而不处理数据,因此 MemoryInterfaceAnalyzer 没有输入或输出端口。

I/O Properties

财产 值
操作员类型 O

Supported Link Format

无

参数

RamResourceId
键入 静态写入参数
默认 0
范围 [0, 可用 RAM 接口数量 - 1]

此参数指定正在监视其 Memory 接口的 Memory 算子的 RAM 资源 ID。

如果没有为指定的 RAM 资源 ID 分配 Memory 算子,则设计无效。

MeasurementPeriod
键入 动态/静态写参数
默认 1000
范围 [1, 1000]

此参数以毫秒为单位计算性能测量周期的时间。

测量周期的定义对于分析时间比例和计算平均值非常重要。

WriteTransferFraction
键入 动态读取参数
默认 0
范围 [0, 100]

此参数计算在 MeasurementPeriod 期间向 memory 写入数据的周期百分比。

当 operator 请求写入访问且 memory 控制器授予该请求时,就会发生写入传输。

WriteWaitFraction
键入 动态读取参数
默认 0
范围 [0, 100]

此参数计算在 MeasurementPeriod 期间 memory operator 请求写入访问但被 memory 控制器拒绝的周期百分比。

只有当 operator 请求写入访问且 memory 控制器授予该请求时,才会发生写入传输。

WriteIdleFraction
键入 动态读取参数
默认 0
范围 [0, 100]

此参数计算在 MeasurementPeriod 期间写接口处于未在使用状态的周期百分比。不会发出写入请求,因此也不会授予任何请求。

ReadTransferFraction
键入 动态读取参数
默认 0
范围 [0, 100]

此参数计算在 MeasurementPeriod 期间从 memory 读取数据的周期百分比。

当 operator 请求读取访问且 memory 控制器授予该请求时,就会发生读取传输。

ReadWaitFraction
键入 动态读取参数
默认 0
范围 [0, 100]

此参数计算在 MeasurementPeriod 期间 memory operator 请求读取访问但被 memory 控制器拒绝的周期百分比。

只有当 operator 请求读取访问且 memory 控制器授予该请求时,才会发生读取传输。

ReadIdleFraction
键入 动态读取参数
默认 0
范围 [0, 100]

此参数计算在 MeasurementPeriod 期间读接口处于未在使用状态的周期百分比。不会发出读取请求,因此也不会授予任何请求。

WriteReadRatio
键入 动态读取参数
默认 0.0
范围 [0.0, 1000.0]

此参数指定成功的写入传输与成功的读取传输的比率。它有助于指示观察到的 memory operator 是否可能会遇到缓冲区溢出。

  • WriteReadRatio ≤ 1:读取的数据量等于或多于写入的数据量。

  • WriteReadRatio > 1:写入的数据量多于读取的数据量。这可能会导致缓冲区溢出。

  • WriteReadRatio = 0:未写入任何数据。

  • WriteReadRatio = 1000:未读取任何数据。