Latency#
주요 용어
Latency 이는 단일 픽셀이 카메라(또는 기타 소스) 입력에서 다음과 같은 출력까지 생성된 FPGA 파이프라인을 통과하는 데 걸리는 시간입니다. DmaToPC. 이러한 지연은 ‘ VisualApplets ’ 편집기가 아니라 프레임 그래버에서 발생합니다. 대역폭 이는 링크를 통해 초당 몇 픽셀이 흐를 수 있는지를 나타냅니다.
한 설계는 높은 대역폭과 낮은 지연 시간을 동시에 갖출 수 있습니다. 많은 픽셀이 FPGA 파이프라인을 통해 병렬로 이동하지만, 프레임의 첫 번째 픽셀이 DMA로 전달되기까지는 여전히 어느 정도의 시간이 소요됩니다.
지연 시간 대 대역폭#
대역폭과 지연 시간은 동일한 파이프라인의 서로 다른 특성을 나타냅니다:
| 대역폭 | Latency | |
|---|---|---|
| 질문 | 초당 얼마나 많은 데이터가 흐르나요? | 한 픽셀이 처리되기까지 얼마나 기다려야 하나요? |
| ~에 따라 다릅니다 | Parallelism 및 기본 설계 클럭 | 연산자 유형 및 알고리즘 |
| 공식 (링크) | 대역폭 = 병렬 처리 수 × 기본 설계 클럭 | 연산자별로 정의됨; 아래 참조 |
파이프라인은 이미지 데이터를 전송하고 처리하는 작업을 동시에 수행할 수 있습니다. 예를 들어, 픽셀 1000이 이미 출력 단계에 있는 동안에도 픽셀 5000은 여전히 카메라 입력 단계에 있을 수 있습니다. 여러 픽셀이 설계 과정을 병렬로 통과하기 때문에 전체 데이터 전송 속도(대역폭)는 높은 수준을 유지합니다. 지연 시간은 개별 픽셀의 지연만을 나타냅니다.
디자인 가이드라인
VisualApplets 설계에서 생성된 FPGA 파이프라인에서는 지연 시간이 이론적 최소치에 가깝게 유지됩니다. 대부분의 연산자는 전체 이미지를 저장하지 않으며, 정보가 확보되는 즉시 결과를 전달합니다.
지연 시간의 정의#
Latency 이는 디자인 내 픽셀의 지연 시간으로, 픽셀이 처리 체인에 진입한 시점부터 처리 체인을 빠져나가는 시점(예를 들어, [목적지]에 도달할 때까지)까지의 시간을 의미합니다. DmaToPC).
주요 사항:
- 지연 시간은 각 운영자가 개별적으로 정의하며, 주로 해당 알고리즘의 구현 방식에 따라 달라집니다.
- 연산기를 추가해도 처리량은 감소하지 않습니다. 생성된 FPGA 파이프라인의 모든 연산기는 병렬로 실행됩니다. 즉, 한 모듈이 픽셀을 처리하는 동안 다른 모듈들은 나머지 픽셀을 처리합니다. 파이프라인이 가득 찬 후에도 더 긴 체인은 여전히 매 클럭 사이클마다 새로운 픽셀(또는 픽셀 패킷)을 받아들일 수 있습니다.
- 연산자를 추가하면 지연 시간이 늘어날 수 있습니다. 각 연산자는 단일 픽셀의 경로에 지연을 발생시킬 수 있으며, 이러한 지연들은 연산자 체인을 따라 누적됩니다. O형 연산자로 인한 몇 클록 사이클의 지연은 일반적으로 버퍼의 라인 또는 프레임 지연에 비하면 미미한 수준입니다.
- 지연 시간은 블로킹이나 버퍼 채움 수준과는 다릅니다. 하류 처리 속도가 느리면 버퍼가 가득 차게 되어 지연 시간이 더욱 늘어날 수 있습니다. 이 항목에서는 연산자 자체에 내장된 최소 지연 시간에 대해 설명합니다.
디자인 예시#
이 주제 전반에 걸쳐 다음 설계가 사용됩니다. 이 설계는 하나의 버퍼와 두 단계의 처리 과정을 포함하는 간단한 수집 경로를 보여줍니다:

위 설계에 표시된 지연 시간 주석은 이 특정 예시에 적용됩니다:
| Operator | 이 예제의 지연 시간 |
|---|---|
CxpCamera | 이 예제에서는 알고리즘으로 인한 추가 지연이 발생하지 않습니다. |
LineBuffer | 1줄 |
ScaleByN | 1 클럭 사이클 |
ShiftRight | 추가 지연 시간 없음 |
DmaToPC | 이 예제에서는 알고리즘으로 인한 추가 지연이 발생하지 않습니다. |
이 경로에서 픽셀 하나당 총 지연 시간은 주로 다음 요소에 의해 결정됩니다. 1줄 지연 멤버는 LineBuffer, 여기에 다른 통신사들의 사소한 처리 지연까지 더해집니다. “추가적인 알고리즘 지연 없음”은 CxpCamera 및 DmaToPC 이는 이 예시에서 해당 연산자들이 그러한 종류의 추가 지연을 일으키지 않는다는 것을 의미합니다. 이는 픽셀이 PC에 즉시 표시된다는 뜻은 아닙니다. 카메라 인터페이스 타이밍, PCIe 전송, 호스트 버퍼링 및 디스플레이는 이 표의 범위에 포함되지 않습니다.
예제 디자인의 픽셀 흐름#
예시 설계에서 픽셀은 카메라 인터페이스를 통해 카메라에서 LineBuffer. 해당 LineBuffer 데이터를 출력으로 전달하기 전에 한 줄 전체를 모읍니다.
전체 행이 LineBuffer, 버퍼는 해당 라인의 픽셀을 출력합니다. 동시에, 카메라가 이미 다음 줄. 이는 생성된 FPGA 하드웨어의 파이프라인 처리 방식입니다. 즉, 데이터 수집, 버퍼링, 처리 및 DMA가 중첩되어 수행될 수 있습니다. VisualApplets 에서는 해당 파이프라인에 대해 설명하고 있으며, 카메라 스트림 자체를 처리하지는 않습니다.
지연 시간 계산#
지연 시간은 통신 사업자에 따라 달라집니다. 전체 설계에 대해 일률적으로 적용되는 값은 없습니다. 한 픽셀의 경로를 따라 발생하는 지연 시간을 모두 더하거나 시간 순서대로 따릅니다.
라인 기반 지연 시간 (버퍼 연산자)#
다음과 같은 버퍼 연산자 ImageBuffer 및 LineBuffer 최소 ~가 필요합니다 한 줄 전체 해당 행의 첫 번째 픽셀을 출력하기 전에. 왜냐하면 LineBuffer 위의 예시에서:
지연 시간 = 1 라인
시간 단위로 측정했을 때, 한 라인의 지연 시간은 다음과 같습니다:
라인 지연 시간 = (라인당 픽셀 수) / (링크의 픽셀 전송률)
픽셀 처리 속도는 병렬 처리 정도와 기본 설계 클럭에 따라 달라집니다. 라인 폭이 넓거나 링크 속도가 느릴수록 첫 번째 픽셀이 버퍼를 떠날 때까지 걸리는 시간이 늘어납니다.
클럭 사이클 지연 시간 (연산자 처리)#
많은 처리 연산기는 픽셀을 고정된 수의 클럭 사이클만큼 지연시킵니다. 파이프라인이 가득 찬 후에도, 이러한 연산기는 여전히 매 클럭 사이클마다 하나의 픽셀(또는 픽셀로 구성된 하나의 병렬 패킷)을 받아들이고 출력할 수 있습니다. 따라서 단일 픽셀의 지연 시간은 해당 내부 레지스터 스테이지의 시간만큼에 불과합니다.
예시 디자인에서는, ScaleByN 다음과 같이 덧붙입니다:
지연 시간 = 1 클럭 사이클
시간 단위로 측정했을 때, 한 클럭 사이클의 지연 시간은 다음과 같습니다:
사이클 지연 시간 = 1 / 기본 설계 클럭 주파수
예를 들어, 기본 설계 클럭이 312.5 MHz일 때, 한 클럭 주기는 3.2 ns입니다.
다음과 같은 연산자, 예를 들어 ShiftRight 이 예제에서는 다음을 추가하세요. 유의미한 지연 시간 없음 실제로는 입력값이 확보되는 즉시 결과를 전달합니다.
연산자 유형과 지연 시간#
VisualApplets 연산자를 유형별로 그룹화합니다. 유형을 통해 지연 시간을 추정할 수 있습니다:
| Type | 아이콘 모양 | 전형적인 지연 현상 |
|---|---|---|
| O형 | 라운드 | 매우 작은 고정 지연 시간 — 대개 일정한 수의 클럭 사이클입니다. 예: 약 3.2 ns의 지연 시간 (312.5 MHz 기본 설계 클럭 기준 1 사이클). |
| M형 | 사각형 | 가변 지연. 라인 또는 프레임을 버퍼링하거나, 이미지 크기를 변경하거나, 입력을 차단할 수 있습니다. 정확한 지연 시간은 운영자 설명서를 참조하십시오. |
| P형 | 사각형 | M-타입과 유사하지만, 입력을 능동적으로 차단하지는 않습니다. 정확한 지연 시간은 운영자 설명서를 참조하십시오. |
CxpCamera, LineBuffer및 DmaToPC M-형 연산자입니다. ScaleByN 및 ShiftRight 는 O-형 연산자입니다. 비록 DmaToPC M-타입이므로, 이 예시에서는 알고리즘상의 큰 지연이 발생하지 않습니다. 데이터가 도착하는 즉시 DMA로 데이터를 전달하기 때문입니다. 호스트 소프트웨어에서 이미지가 표시되기까지 걸리는 시간은 이와 별개의, 그 이후에 발생하는 지연입니다.
주요 용어
O형 연산자는 길이가 고정된 짧은 파이프 구간이라고 생각하면 됩니다. M형 연산자는 저장 탱크(버퍼)나 더 복잡한 기계 장치가 포함될 수 있는 구간이라고 생각하면 됩니다. 첫 번째 방울이 나오기 전에 탱크가 먼저 채워져야 합니다. 이것이 바로 라인 기반 지연 시간입니다. 이러한 파이프와 탱크는 FPGA상의 하드웨어 단계로, ‘ VisualApplets ’에 배치한 모듈을 기반으로 생성됩니다.
Parallelism 및 지연 시간#
Parallelism 지연 시간을 줄이지는 않습니다. 대신 대역폭을 증가시킵니다. 즉, 클럭 사이클당 링크를 통과하는 픽셀 수가 늘어납니다.
예: 병렬도가 4인 경우, 한 클럭 사이클 동안 4개의 픽셀이 링크를 통과합니다. 이 첫 번째 픽셀 프레임의 각 프레임은 여전히 동일한 연산자 지연 시간이 필요합니다. 예를 들어, ImageBuffer. 파이프라인이 가득 차면, 매 클럭 사이클마다 4개의 새로운 픽셀이 연산기를 빠져나갈 수 있습니다.
- 높은 병렬 처리 능력 → 높은 처리량(대역폭).
- 버퍼와 알고리즘 → 첫 번째 픽셀의 지연 시간.
이 두 특성은 서로 독립적입니다. ‘ VisualApplets ’ 설계는 생성된 FPGA 파이프라인에서 높은 대역폭과 최소 지연 시간을 달성하는 것을 목표로 합니다.
연산자의 지연 시간 값 구하기#
설계에서 사용하고자 하는 연산자의 지연 시간 값을 확인하려면 다음 출처를 참조하십시오:
- 오퍼레이터 참조 — 각 오퍼레이터의 지연 시간(또는 처리 지연)은 오퍼레이터 참조에 명시되어 있습니다.
- 제품 내 도움말 — 설계에서 연산자를 선택하면 매개변수 및 타이밍에 대한 세부 정보를 확인할 수 있는 도움말이 열립니다. 이 내용은 ‘연산자 참조(Operator Reference)’에 수록된 내용과 동일하며, VisualApplets 에서 도구 내 도움말 형태로 제공됩니다.
특히 M형 연산자의 경우, 항상 설명서를 확인해야 합니다. 지연 시간은 매개변수(예: 필터 연산자의 커널 크기나 메모리 연산자의 버퍼 깊이)에 따라 달라질 수 있습니다.
대부분의 연산기는 전체 이미지를 저장하지 않습니다. 정보가 확보되는 즉시, 출력이 차단되지 않는 한 출력 결과를 계산합니다. 그렇기 때문에 생성된 FPGA 파이프라인의 지연 시간은 선택된 알고리즘에 대한 이론적 최소값에 가깝게 유지됩니다.
예를 들어, PC가 데이터를 충분히 빠르게 수신하지 못해 출력이 차단되면 버퍼 채움 수준이 높아지고, 픽셀이 호스트에 표시되기까지 걸리는 시간이 늘어납니다. 이러한 추가 지연은 고정된 연산자 지연 시간이 아니라, 부하 상태에서 발생하는 흐름 제어 및 버퍼링으로 인해 발생하는 것입니다.
관련 항목#
- 파이프라인 개념 튜토리얼 주제 — 버퍼링되지 않은 흐름과 동시 처리
- Parallelism 튜토리얼 주제 — 병렬 처리와 지연 시간
- 연산자 유형 및 동기화 튜토리얼 주제 — 연산자 유형과 지연 시간
- 메모리 요소 튜토리얼 주제 — 버퍼 연산자의 라인 지연 시간
- 커널 작업 튜토리얼 주제 — 커널 관련 지연
- 사용자 설명서에 수록된 애플릿의 대역폭 — 대역폭 대 지연 시간
- 연산자 참조 — 개별 연산자의 지연 시간 값
- 장치 리소스 — 기본 설계 클럭 주파수