Operator MemoryInterfaceAnalyzer

Operator Library: Debugging

MemoryInterfaceAnalyzer 연산자는 메모리 인터페이스의 데이터 흐름에 대한 정보를 제공합니다. 이 연산자는 이미지 데이터나 제어 신호를 변경, 추가 또는 제거하지 않습니다.

[중요] 런타임 테스트

이 연산자는 실행 중에 설계를 테스트하고 분석하기 위한 것입니다. 디버깅을 위해 이 연산자를 사용하려면 먼저 설계를 빌드(합성)하고, 대상 하드웨어에 로드한 다음, 실제 이미지 처리를 실행해야 합니다.

이 오퍼레이터는 VisualApplets 내에서의 디자인 시뮬레이션용이 아닙니다.

이 연산자를 사용하면 블로킹 상태를 감지하고, 여러 메모리 연산자가 사용 가능한 메모리 대역폭을 어떻게 공유하는지 관찰할 수 있습니다. 공유 메모리 개념에 대한 자세한 내용은 ‘애플리케이션 노트: 공유 메모리’ 및 ‘공유 메모리 개념’을 참조하십시오.

MemoryInterfaceAnalyzer 연산자는 RAM 유형의 리소스를 사용하는 기존 메모리 연산자에 연결된 경우에만 작동합니다. 이 연산자는 지정된 RAM 포트(RamResourceId)에 연결되어 데이터 흐름을 관찰합니다. 프레임 그래버 RAM(DRAM)을 사용하는 각 메모리 연산자는쓰기 인터페이스와 읽기 인터페이스를 모두 갖추고 있습니다. 를 사용하는 각 메모리 연산자는 쓰기 인터페이스와 읽기 인터페이스를 모두 갖습니다.

  • 인터페이스 작성:

    메모리 연산자는 쓰기 액세스를 요청하고, 메모리 컨트롤러는 가능한 경우 액세스를 허용합니다. 액세스가 허용되는지 여부는 연결된 모든 메모리 연산자와 해당 연산자의 현재 읽기 또는 쓰기 요청에 따라 달라집니다. 쓰기 인터페이스는 다음 상태 중 하나를 가질 수 있습니다:

    • 이체 내역 기록:

      쓰기 전송은 작업자가 쓰기 액세스를 요청하고 메모리 컨트롤러가 해당 요청을 승인할 때 발생합니다.

    • 쓰기 대기:

      운영자가 쓰기 액세스 권한을 요청했으나 메모리 컨트롤러가 현재 다른 메모리 인터페이스의 요청을 처리 중인 경우, 해당 요청은 승인되지 않습니다. 운영자는 쓰기 액세스 권한을 기다립니다.

    • 유휴 상태 기록:

      운영자는 쓰기 권한을 요청하지 않았으며, 쓰기 인터페이스는 현재 사용되지 않고 있습니다.

  • 인터페이스 읽기:

    메모리 연산자는 읽기 액세스를 요청하고, 메모리 컨트롤러는 가능한 경우 액세스를 허용합니다. 액세스가 허용되는지 여부는 연결된 모든 메모리 연산자와 해당 연산자의 현재 읽기 또는 쓰기 요청에 따라 결정됩니다. 읽기 인터페이스는 다음 상태 중 하나를 가질 수 있습니다:

    • 이적 소식:

      읽기 전송은 작업자가 읽기 액세스를 요청하고 메모리 컨트롤러가 해당 요청을 승인할 때 발생합니다.

    • 읽기 대기:

      운영자가 읽기 액세스 권한을 요청했으나 메모리 컨트롤러가 현재 다른 메모리 인터페이스의 요청을 처리 중인 경우, 해당 요청은 허용되지 않습니다. 운영자는 읽기 액세스 권한이 허용될 때까지 대기합니다.

    • Idle 읽기:

      운영자가 읽기 권한을 요청하지 않았으며, 읽기 인터페이스는 현재 사용되지 않고 있습니다.

아래 그림은 MemoryInterfaceAnalyzer가 지정된 메모리 인터페이스에 어떻게 연결되는지 보여줍니다. 각 인터페이스는 다음 요소들로 구성됩니다:

  • A 메모리 연산자로부터의 메모리 연산자로부터의 요청 신호, 그리고

  • 한 수신 확인 신호 메모리 컨트롤러에서 전송되며, 이를 통해 접근을 허용하거나 거부합니다.

각 메모리 연산자는 쓰기 및 읽기 인터페이스를 모두 가지고 있습니다. 아래 예시에서 MemoryPortId는 1입니다.

읽기 인터페이스는 읽기 주소의 메모리 전송에 대해서만 설명합니다. 이는 읽기 주소를 메모리 컨트롤러로 전송하면 항상 메모리 연산자에 대한 읽기 데이터 전송이 시작될 것이라고 가정할 수 있기 때문입니다.

공유 메모리 개념에 대한 자세한 내용은 ‘애플리케이션 노트: 공유 메모리 및 ‘공유 메모리 개념’’을 참조하십시오.

MemoryInterfaceAnalyzer 연산자는 지정된 측정 기간(MeasurementPeriod) 내에서 메모리 연산자가 다음 각 상태에 머무는 시간을 측정합니다:

  • 이체 작성

  • 쓰기 대기

  • 유휴 상태 기록

  • 이체 내역 보기

  • 읽기 대기

  • Idle 읽기

이 연산자는 읽기 매개변수를 통해 이러한 결과를 제공합니다. 측정값만 보고하고 데이터를 처리하지 않기 때문에, MemoryInterfaceAnalyzer에는 입력 또는 출력 포트가 없습니다.

I/O Properties

Property Value
Operator Type O

지원되는 Link Format

None

Parameters

RamResourceId
Type 정적 쓰기 파라미터
Default 0
Range [0, 사용 가능한 RAM 인터페이스 수 - 1]

이 매개변수는 메모리 인터페이스가 모니터링되고 있는 메모리 연산자의 RAM 리소스 ID를 지정합니다.

지정된 RAM 리소스 ID에 메모리 연산자가 할당되지 않은 경우, 설계는 유효하지 않습니다.

측정 기간
Type 동적/정적 쓰기 매개변수
Default 1000
Range [1, 1000]

이 매개변수는 성능 측정 기간의 시간을 밀리초 단위로 계산합니다.

측정 기간을 정의하는 것은 시간 비율을 분석하고 평균값을 산출하는 데 중요합니다.

WriteTransferFraction
Type dynamic read parameter
Default 0
Range [0, 100]

이 매개변수는 측정 기간(MeasurementPeriod ) 동안 데이터가 메모리에 기록되는 사이클의 비율을 계산합니다.

쓰기 전송은 작업자가 쓰기 액세스를 요청하고 메모리 컨트롤러가 해당 요청을 승인할 때 발생합니다.

WriteWaitFraction
Type dynamic read parameter
Default 0
Range [0, 100]

이 매개변수는 측정 기간(MeasurementPeriod ) 동안 메모리 연산자가 쓰기 액세스를 요청했으나 메모리 컨트롤러가 이를 거부한 사이클의 비율을 계산합니다.

쓰기 전송은 작업자가 쓰기 액세스를 요청하고 메모리 컨트롤러가 해당 요청을 승인할 때에만 발생합니다.

WriteIdleFraction
Type dynamic read parameter
Default 0
Range [0, 100]

이 매개변수는 측정 기간(MeasurementPeriod ) 동안 쓰기 인터페이스가 사용되지 않은 사이클의 비율을 계산합니다. 쓰기 요청이 발행되지 않으므로, 승인된 요청도 없습니다.

ReadTransferFraction
Type dynamic read parameter
Default 0
Range [0, 100]

이 매개변수는 측정 기간(MeasurementPeriod ) 동안 메모리에서 데이터가 읽히는 사이클의 비율을 계산합니다.

읽기 전송은 작업자가 읽기 액세스를 요청하고 메모리 컨트롤러가 해당 요청을 승인할 때 발생합니다.

ReadWaitFraction
Type dynamic read parameter
Default 0
Range [0, 100]

이 매개변수는 측정 기간(MeasurementPeriod ) 동안 메모리 연산자가 읽기 액세스를 요청했으나 메모리 컨트롤러가 이를 거부한 사이클의 비율을 계산합니다.

읽기 전송은 작업자가 읽기 액세스를 요청하고 메모리 컨트롤러가 해당 요청을 승인할 때에만 발생합니다.

ReadIdleFraction
Type dynamic read parameter
Default 0
Range [0, 100]

이 매개변수는 측정 기간 동안 읽기 인터페이스가 사용되지 않은 사이클의 비율을 계산합니다. 읽기 요청이 발행되지 않으므로 승인된 요청도 없습니다.

쓰기/읽기 비율
Type dynamic read parameter
Default 0.0
Range [0.0, 1000.0]

이 매개변수는 성공한 쓰기 전송과 성공한 읽기 전송의 비율을 지정합니다. 이는 관찰된 메모리 연산자가 버퍼 오버플로우에 직면할 가능성이 있는지 여부를 파악하는 데 도움이 됩니다.

  • 쓰기/읽기 비율 ≤ 1: 쓰기된 데이터량만큼 또는 그 이상의 데이터가 읽혀집니다.

  • WriteReadRatio > 1: 읽기보다 쓰기 데이터가 더 많습니다. 이로 인해 버퍼 오버플로가 발생할 수 있습니다.

  • WriteReadRatio = 0: 데이터가 기록되지 않습니다.

  • WriteReadRatio = 1000: 데이터가 읽히지 않습니다.