콘텐츠로 바로 가기

Latency#

이 항목에서는 VisualApplets 디자인에서 생성된 FPGA 파이프라인의 Latency가 의미하는 바, Latency와 Bandwidth의 차이점, 그리고 일반적인 디자인에서의 Latency 크기에 대해 설명합니다. 이 항목을 읽고 나면 픽셀이 출력에 즉시 나타나지 않는 이유, 연산자 유형과 버퍼링이 지연에 미치는 영향, 그리고 개별 연산자의 Latency 값을 찾는 위치를 이해하게 됩니다.

핵심 용어

Latency 은 단일 픽셀이 카메라(또는 기타 소스) 입력에서 생성된 FPGA 파이프라인을 거쳐 다음과 같은 출력에 도달하는 데 걸리는 시간입니다. DmaToPC. 이 지연은 VisualApplets 편집기가 아니라 프레임 그래버에서 발생합니다. Bandwidth 는 링크를 통해 초당 흐를 수 있는 픽셀 수를 나타냅니다.

디자인은 높은 Bandwidth와 낮은 Latency를 동시에 가질 수 있습니다. 즉, 많은 픽셀이 FPGA 파이프라인을 통해 병렬로 이동하더라도 프레임의 첫 번째 픽셀이 DMA에 전달되기까지는 여전히 어느 정도 시간이 필요합니다.

Latency 대 Bandwidth#

Bandwidth와 Latency는 동일 파이프라인의 서로 다른 특성을 설명합니다.

Bandwidth Latency
질문 초당 데이터 전송량은 얼마인가요? 하나의 픽셀이 처리될 때까지 얼마나 오래 대기하나요?
종속 항목: Parallelism 및 기본 디자인 클록 연산자 유형 및 알고리즘
공식(링크) Bandwidth = parallelism × Base Design Clock 연산자별로 정의됨(아래 참조)

파이프라인은 이미지 데이터를 동시에 전송하고 처리할 수 있습니다. 예를 들어, 1000번째 픽셀이 이미 출력단에 도달해 있는 동안 5000번째 픽셀은 여전히 카메라 입력단에 머물러 있을 수 있습니다. 여러 픽셀이 디자인을 통해 병렬로 처리되므로 전체 데이터 레이트(대역폭)는 높게 유지됩니다. 지연 시간(Latency)은 개별 픽셀의 지연 시간만을 나타냅니다.

설계 지침

VisualApplets 디자인에서 생성된 FPGA 파이프라인에서 지연 시간은 이론적 최솟값에 가깝게 유지됩니다. 대부분의 연산자는 전체 이미지를 저장하지 않으며, 정보가 사용 가능해지는 즉시 결과를 전달합니다.

Latency 정의#

Latency 은(는) 디자인 내 픽셀의 지연 시간, 즉 픽셀이 처리 체인에 진입한 순간부터 빠져나올 때까지(예: 도달할 때까지)의 시간입니다. DmaToPC).

주요 사항:

  • 지연 시간은 각 연산자별로 개별적으로 정의되며 주로 알고리즘 구현 방식에 따라 달라집니다.
  • 연산자를 추가하더라도 처리량(throughput)이 감소하지는 않습니다. 생성된 FPGA 파이프라인의 모든 연산자는 병렬로 실행됩니다. 한 모듈이 특정 픽셀을 처리하는 동안 다른 모듈들은 다른 픽셀을 처리합니다. 파이프라인이 채워진 후에는 더 긴 체인이라도 매 클럭 사이클마다 새로운 픽셀(또는 픽셀 패킷)을 계속 수용할 수 있습니다.
  • 연산자를 추가하면 지연 시간(latency)이 증가할 수 있습니다. 각 연산자는 단일 픽셀의 경로에 지연을 추가할 수 있으며, 이러한 지연은 체인을 따라 누적됩니다. O-type 연산자의 몇 안 되는 클럭 사이클 지연은 일반적으로 버퍼의 라인 또는 프레임 지연에 비해 매우 작습니다.
  • 지연 시간은 차단(blocking)이나 버퍼 Fill 수준과 같지 않습니다. 하위 단계의 처리가 느려지면 버퍼가 채워지고 지연 시간이 더 늘어납니다. 이 단원은 연산자 자체에 내재된 최소 지연 시간을 다룹니다.

예제 디자인#

이 단원 전반에 걸쳐 다음 디자인이 사용됩니다. 이는 하나의 버퍼와 두 개의 처리 단계를 포함하는 간단한 취득(acquisition) 경로를 보여줍니다.

연산자별 지연 시간 주석이 포함된 예제 디자인

위 디자인의 지연 시간 주석은 이 특정 예제에 적용됩니다.

Operator 이 예제에서의 지연 시간
CxpCamera 이 예제에서는 추가적인 알고리즘 지연 시간이 없음
LineBuffer 1라인
ScaleByN 1클럭 사이클
ShiftRight 추가 지연 없음
DmaToPC 이 예제에서는 추가적인 알고리즘 지연 시간이 없음

이 경로에 있는 픽셀의 총 지연 시간은 다음 요소에 의해 주도됩니다. 원라인 지연 멤버는 LineBuffer 및 기타 연산자의 짧은 처리 지연. "추가적인 알고리즘 지연 없음(No additional algorithmic latency)"이라는 의미는 CxpCamera 및 DmaToPC 의 경우 이 예제에서 해당 연산자가 그러한 종류의 추가 지연을 발생시키지 않는다는 뜻입니다. 픽셀이 PC에 즉시 나타난다는 의미는 아닙니다. 카메라 인터페이스 타이밍, PCIe 전송, 호스트 버퍼링, 디스플레이는 이 표의 범위를 벗어납니다.

예제 디자인에서의 픽셀 흐름#

예제 디자인에서 픽셀은 카메라 인터페이스를 통해 카메라에서 LineBuffer. 해당 LineBuffer (으)로 전송되며, 데이터를 출력단으로 전달하기 전에 전체 라인 하나를 수집합니다.

전체 라인이 저장된 후 LineBuffer, 버퍼가 해당 라인의 픽셀을 출력합니다. 동시에 동시에, 카อล라는 이미 다음 라인을. 이것이 생성된 FPGA 하드웨어의 파이프라인 동작 방식입니다. 즉, 취득, 버퍼링, 처리, DMA가 중첩되어 실행될 수 있습니다. VisualApplets는 이러한 파이프라인을 기술하며, 카메라 스트림 자체를 처리하지는 않습니다.

Latency 계산#

지연 시간(Latency)은 operator에 따라 다릅니다. 전체 디자인에 대해 단일 값으로 정의되지 않으며, 한 픽셀의 경로를 따라 지연 시간을 합산(또는 시간순으로 추적)합니다.

라인 기반 Latency (버퍼 연산자)#

다음과 같은 버퍼 operator는 ImageBuffer 및 LineBuffer 최소 한 개의 전체 라인이 필요합니다 . 해당 라인의 첫 번째 픽셀을 출력하기 전에 필요합니다. 위 예시의 LineBuffer 경우:

지연 시간 = 1 라인

시간 단위로 측정할 경우, 1 라인의 지연 시간은 다음과 같습니다:

라인 지연 시간 = (라인당 픽셀 수) / (링크의 픽셀 레이트)

픽셀 레이트는 Parallelism 및 Base Design Clock에 따라 달라집니다. 라인이 넓거나 링크가 느릴수록 첫 번째 픽셀이 버퍼를 떠나는 데 걸리는 시간이 늘어납니다.

클록 주기 Latency (처리 연산자)#

많은 처리 연산기는 픽셀을 고정된 수의 클럭 사이클만큼 지연시킵니다. 파이프라인이 가득 찬 후에도, 이러한 연산기는 여전히 매 클럭 사이클마다 하나의 픽셀(또는 픽셀로 구성된 하나의 병렬 패킷)을 받아들이고 출력할 수 있습니다. 따라서 단일 픽셀의 지연 시간은 해당 내부 레지스터 스테이지의 시간만큼에 불과합니다.

많은 프로세싱 operator는 픽셀을 고정된 클럭 사이클 수만큼 지연시킵니다. 파이프라인이 채워진 후에도 매 클럭 사이클마다 하나의 픽셀(또는 픽셀의 병렬 패킷)을 계속해서 수신하고 출력할 수 있습니다. 이때 단일 픽셀의 지연은 내부 레지스터 스테이지로 인한 지연뿐입니다. ScaleByN 예시 디자인에서

의 추가 지연:

지연 시간 = 1 클럭 사이클

시간 단위로 측정할 경우, 1 클럭 사이클의 지연 시간은 다음과 같습니다:

예를 들어, Base Design Clock이 312.5 MHz일 때 1 클럭 사이클은 3.2 ns입니다.

이 예시의 ShiftRight 와 같은 operator는 의미 있는 지연 시간을 추가하지 않습니다 실제 동작할 때는 입력 값이 준비되는 즉시 결과를 전달합니다.

연산자 유형 및 Latency#

VisualApplets는 오퍼레이터를 유형별로 분류합니다. 이 유형을 통해 지연 시간을 추정할 수 있습니다.

Type 아이콘 모양 일반적인 지연 시간 동작
O-type 원형 매우 짧고 고정된 지연 시간 — 대개 클럭 주기 수로 일정합니다. 예: 약 3.2 ns의 지연 시간 (312.5 MHz Base Design Clock 기준 1주기).
M-type 사각형 가변 지연 시간입니다. 라인이나 프레임을 버퍼링하고, 이미지 크기를 변경하거나, 입력을 차단할 수 있습니다. 정확한 지연 시간은 오퍼레이터 설명서에서 확인하세요.
P-type 사각형 M-type과 유사하지만 입력을 강제로 차단하지 않습니다. 정확한 지연 시간은 오퍼레이터 설명서에서 확인하세요.

CxpCamera, LineBuffer및 DmaToPC 은(는) M-type 오퍼레이터입니다. ScaleByN 및 ShiftRight 은(는) O-type 오퍼레이터입니다. 비록 DmaToPC 이(가) M-type이더라도 이 예시에서는 큰 알고리즘적 지연을 추가하지 않으며, 데이터가 도착하는 즉시 DMA로 데이터를 전달합니다. 이미지가 호스트 소프트웨어에 표시될 때까지의 시간은 이와 별개로 나중에 발생하는 지연입니다.

핵심 용어

O-type 오퍼레이터는 길이가 고정된 짧은 파이프 구간으로 생각할 수 있습니다. M-type 오퍼레이터는 저장 탱크(버퍼)나 더 복잡한 장치가 포함되어 있을 수 있는 구간으로 생각할 수 있습니다. 첫 방울이 나오기 전에 탱크가 채워져야 하며, 이것이 바로 라인 기반 지연 시간입니다. 이러한 파이프와 탱크는 VisualApplets에서 배치한 모듈로부터 생성된 FPGA의 하드웨어 스테이지입니다.

Parallelism 및 Latency#

Parallelism은 지연 시간을 제거하지 않습니다. 대신 대역폭(bandwidth)를 증가시켜 링크를 통해 클럭 주기당 더 많은 픽셀이 이동하도록 합니다.

예: Parallelism 4를 사용하면 하나의 클럭 주기 동안 4개의 픽셀이 링크를 통과합니다. 프레임의 첫 번째 픽셀 은(는) 여전히 ImageBuffer의 한 라인과 같은 동일한 오퍼레이터 지연 시간이 필요합니다. 파이프라인이 가득 찬 후에는 매 클럭 주기마다 4개의 새로운 픽셀이 오퍼레이터를 빠져나갈 수 있습니다.

  • 높은 Parallelism → 높은 처리량(대역폭).
  • 버퍼 및 알고리즘 → 첫 번째 픽셀의 지연 시간.

두 속성은 서로 독립적입니다. VisualApplets 디자인은 생성된 FPGA 파이프라인에서 높은 대역폭 및 최소한의 지연 시간을 목표로 합니다.

연산자의 Latency 값 찾기#

디자인에 사용하려는 오퍼레이터의 지연 시간 값을 확인하려면 다음 소스를 활용하세요.

  1. Operator Reference — 각 오퍼레이터는 Operator Reference에 레이턴시(또는 처리 지연 시간)를 문서화해 두고 있습니다.
  2. 제품 내 도움말 — 디자인에서 오퍼레이터를 선택하고 도움말을 열어 파라미터 및 타이밍 세부 정보를 확인하십시오. 이는 Operator Reference의 내용과 동일하며 VisualApplets에서 툴 내 도움말로 제공됩니다.

특히 M-type 오퍼레이터의 경우 항상 문서를 확인하십시오. 레이턴시는 파라미터(예: 필터 오퍼레이터의 커널 크기 또는 메모리 오퍼레이터의 버퍼 깊이)에 따라 달라질 수 있습니다.

대부분의 오퍼레이터는 전체 이미지를 저장하지 않습니다. 정보가 사용 가능하고 출력이 차단되지 않는 즉시 출력 결과를 계산합니다. 따라서 생성된 FPGA 파이프라인의 레이턴시는 선택한 알고리즘의 이론적 최솟값에 가깝게 유지됩니다.

예를 들어 PC가 데이터를 충분히 빠르게 수용할 수 없어 출력이 차단된 경우, 버퍼 Fill 수준이 증가하고 픽셀이 호스트에 나타날 때까지의 시간이 늘어납니다. 이 추가 지연은 고정된 오퍼레이터 레이턴시가 아니라 흐름 제어(flow control) 및 부하 상태에서의 버퍼링으로 인해 발생합니다.