Operator MemoryInterfaceAnalyzer

Operator Library: Debugging

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

[重要] 运行时测试

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

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

您可以使用该算子检测阻塞状态,并观察多个 Memory 算子如何共享可用的 Memory 带宽。有关共享 Memory 概念的更多信息,请参阅:应用说明: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 控制器当前正在处理来自其他 Memory 接口的请求,则不会授予该请求。算子将等待读取访问权限。

    • 读取空闲:

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

下图展示了 MemoryInterfaceAnalyzer 如何附加到指定的 Memory 接口。每个接口都由以下部分组成:

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

  • 来自 Memory 控制器的确认信号(用于授予或拒绝访问权限)。

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

读取接口仅描述向 Memory 传输读取地址的过程,因为可以假设将读取地址传输到 Memory 控制器将始终会向 Memory 算子发起读取数据传输。

有关共享 Memory 概念的更多信息,请参阅:Application Note: Shared Memory 和 ' Shared Memory Concept '。

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

  • Write Transfer

  • Write Wait

  • Write Idle

  • Read Transfer

  • Read Wait

  • Read Idle

operator 通过其 read parameters 提供这些结果。由于它仅报告测量数据而不处理数据,因此 MemoryInterfaceAnalyzer 没有 input 或 output ports。

I/O Property

Property 值
Operator Type O

Supported Link Format

无

参数

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

该参数指定了正在监视其 Memory interface 的 Memory operator 的 RAM 资源 ID。

如果未将 Memory operator 分配给指定的 RAM 资源 ID,则设计无效。

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

该参数用于计算性能测量周期的毫秒数。

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

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

该参数用于计算在 MeasurementPeriod 内向 Memory 写入数据所占的时钟周期百分比。

当 operator 请求写入访问权限且 Memory controller 授予该请求时,就会发生写传输。

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

该参数用于计算在 MeasurementPeriod 内 Memory operator 请求写入访问权限但 Memory controller 拒绝该请求的时钟周期百分比。

只有当 operator 请求写入访问权限且 Memory controller 授予该请求时,才会发生写传输。

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

该参数用于计算在 MeasurementPeriod 内写接口未使用的时钟周期百分比。此时未发出写请求,因此也没有授予任何写请求。

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

该参数用于计算在 MeasurementPeriod 内从 Memory 读取数据所占的时钟周期百分比。

当算子请求读访问且内存控制器准许该请求时,就会发生读传输。

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

此参数计算 MeasurementPeriod 内内存算子请求读 access 但被内存控制器拒绝的周期百分比。

仅当算子请求读访问且内存控制器准许该请求时,才会发生读传输。

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

此参数计算 MeasurementPeriod 内读接口未被使用的周期百分比。未发出读请求,因此也不会准许任何读请求。

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

此参数指定成功的写传输与成功的读传输之比。它有助于指示观察到的内存算子是否可能会遇到缓冲区溢出。

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

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

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

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