Operator Library: Memory
이 연산자는 다음을 기반으로 한 대형 조회 테이블(LUT)을 구현합니다. 프레임 그래버 RAM(일반적으로 DRAM)을 기반으로 대규모 조회 테이블( LUT)을 구현합니다. RAM 유형의 VisualApplets 리소스 1개가 필요합니다( '장치 리소스 할당' 참조). RAM 유형의 여러 리소스는 공유 메모리 개념을 통해 동일한 물리적 RAM을 사용합니다. 공유 메모리 사용 방법에 대한 문서는 다음 애플리케이션 노트: 공유 메모리에서 확인할 수 있습니다.
RamLUT 연산자는 출력에 대한 커널을 지원합니다.
이 연산자의 대표적인 적용 사례는 색 공간 분류 문제입니다.
이 연산자는 두 가지 방법으로 LUT 콘텐츠 프로그래밍을 지원합니다. 두 방법 모두에서, LUT는 합성 과정이 끝난 후, 즉 런타임 중에 애플릿이 사용될 때 프로그래밍되어야 합니다.
-
LUT를 프로그래밍하는 한 가지 방법은 주소 및 값 매개변수인 InitAddress와 InitData를 제공하는 레지스터 인터페이스를 이용하는 것입니다. 먼저, InitAddress 매개변수를 사용하여 주소를 설정합니다. 다음으로, InitData 매개변수에 데이터를 기록합니다. 데이터를 기록하면 연산자가 실제로 LUT에 데이터를 기록하고 이전 값을 대체합니다. 커널을 사용하는 경우, 마지막 커널 요소에 데이터를 기록하면 연산자가 실제로 LUT에 데이터를 기록하고 이전 값을 대체합니다.
-
LUT를 프로그래밍하는 두 번째 방법은 내용을 담은 파일을 사용하는 것입니다. 파일 액세스는 레지스터 액세스보다 빠르지만, 몇 가지 주의할 점이 있습니다. 파일은 다양한 형식으로 존재할 수 있습니다. 형식은 InitFileMode 매개변수를 통해 정의해야 합니다:
-
text_with_checks
이 모드에서는 초기화 파일이 텍스트 파일이어야 하며, 값 문자열은 공백, 탭, 줄바꿈(LF) 또는 캐리지 리턴-줄바꿈(CRLF) 중 하나로 구분되어야 합니다. 운영자는 이러한 파일의 오류를 확인하고, 파일을 사용할 수 없는 경우 오류를 보고합니다.
각 값은 커널 요소를 나타내며, 올바른 범위 내의 십진수여야 합니다.
다음 그림은 4x3 커널용 파일을 보여줍니다.

-
text_raw
이 모드는 text_with_checks 모드와 유사하지만 오류 검사가 더 적게 수행됩니다. 이 모드에서는 각 값을 별도의 줄에 입력해야 합니다. 이 모드로 파일을 불러오는 속도는 text_with_checks 모드에 비해 더 빠릅니다. text_raw 모드에서 위의 예제는 다음과 같이 표시됩니다:

-
binary
바이너리 모드는 LUT 요소의 각 커널 항목에 8바이트가 사용되는 바이너리 파일을 가정합니다. 커널 항목의 값을 64비트 미만으로 표현할 수 있는 경우, 사용되지 않는 비트는 무시됩니다. 이는 LUT에 값을 쓰는 데 가장 빠른 방법입니다. 위의 예제를 바이너리 모드로 표현하면 다음과 같습니다:

세 가지 모드 모두에서 파일의 항목 수는 LUT 요소 수를 초과해서는 안 되며, 값의 개수는 KernelSize의 배수여야 합니다. 따라서 파일에는 최대 2^InputBitWidth * KernelSize개의 값이 포함되어야 합니다.
초기화 파일에 2^InputBitWidth * KernelSize 개의 값이 포함되어 있으면, LUT 메모리가 주소 0부터 시작하여 완전히 덮어쓰게 됩니다. 이 경우, InitAddress 매개변수는 변경되지 않습니다.
초기화 파일의 항목 수가 이보다 적을 경우, 부분 초기화가 수행됩니다. 이때, InitAddress 매개변수가 지정한 주소부터 초기화가 진행됩니다. InitAddress 매개변수는 마지막으로 기록된 LUT 항목 바로 다음 위치로 자동으로 증가합니다. 이를 통해 기록된 LUT 항목 수를 모니터링할 수 있습니다. 파일에 (2^InputBitWidth - InitAddress) * KernelSize 개 이상의 값이 포함되어 있는 경우, LUT의 마지막 항목을 기록한 후 초기화가 중단되고 InitAddress는 0으로 설정됩니다.
InitFilename 매개변수는 초기값이 포함된 파일을 지정합니다. 마지막으로, LoadInitFile 매개변수에 값 1을 쓰면 파일 읽기가 시작되고, 승인될 경우 해당 값들이 하드웨어에 기록됩니다. 매개변수 LoadInitFile에 0을 설정해도 값이 로드되지는 않습니다. 이는 애플릿 초기화 과정에서 초기 파일이 하드웨어에 로드되는 것을 원하지 않을 때 유용할 수 있습니다.
시뮬레이션 중 init 파일 불러오기는 런타임 중과 동일한 방식으로 이루어집니다. 부분적인 구성이나 오류가 발생한 경우, 시뮬레이션 로그의 출력 내용을 확인하는 것이 도움이 될 수 있습니다. (다음 설정을 활성화해야 할 수도 있습니다. (으)로 설정합니다. (대화상자). -
DRAM 기술은 랜덤 액세스 성능이 매우 저조하다는 점에 유의해야 합니다. 최악의 경우, DRAM에 대한 연속적인 액세스마다 페이지 미스가 발생하여 새로운 행을 활성화해야 할 때, DRAM 처리량은 최대 성능 대비 90%가 감소하여, 대역폭 사용률이 약 10%에 그치게 됩니다.
입력 링크는 동적인 선 너비는 물론, 빈 줄과 빈 프레임도 처리할 수 있습니다. 따라서 출력 링크도 동일한 이미지 크기를 처리할 수 있습니다.
최적의 성능을 얻으려면, 사용되는 데이터 비트 수가 모듈의 매개변수 RamDataWidth에 지정된 값과 가능한 한 일치해야 합니다. 비트 폭과 커널 크기의 곱이 내부 RAM 포트 폭인 RamDataWidth와 같을 때, 연산자를 통과하는 최대 대역폭에 도달합니다.
| 하드웨어 플랫폼 지원 여부 |
|---|
| imaFlex CXP-12 Penta |
| imaFlex CXP-12 Quad |
|
허용되는 입력 비트 폭은 프레임 그래버의 물리적 메모리 용량과 RAM을 공유하는 연산자의 수에 따라 달라집니다. RamAddressWidth 매개변수는 사용할 수 있는 최대 주소 비트 수를 지정합니다. 이 수치는 설계에 포함된 RAM 기반 연산자의 수에 따라 달라질 수 있다는 점에 유의하십시오. |
|
|
허용되는 출력 비트 폭은 프레임 그래버의 물리적 메모리에 따라 달라집니다. 비트 폭은 64비트로 제한되지만, 여러 커널 구성 요소가 저장될 수 있습니다. (비트 폭 × 커널 크기)의 곱은 RamDataWidth 매개변수에 표시된 네이티브 RAM 데이터 폭을 초과해서는 안 됩니다. |
| RamDataWidth | |
|---|---|
| Type | 정적 쓰기 파라미터 |
| Default | N/A |
| Range | 정수 |
|
이 매개변수는 RAM 인터페이스에서 사용할 수 있는 데이터 비트 수를 지정합니다. 이는 (커널이 올바르게 사용될 경우) 출력이 제공할 수 있는 최대 비트 수입니다. |
|
| RamAddressWidth | |
|---|---|
| Type | 정적 쓰기 파라미터 |
| Default | N/A |
| Range | 정수 |
|
이 매개변수는 사용할 수 있는 주소 비트의 수를 지정합니다. |
|
| InitAddress | |
|---|---|
| Type | dynamic write 파라미터 |
| Default | 0 |
| Range | [0, 2^InputBitWidth-1] |
|
이 매개변수는 InitData 매개변수로 정의된 데이터의 주소를 지정합니다. 위의 설명을 참조하십시오. |
|
| InitData | |
|---|---|
| Type | dynamic write 파라미터 |
| Default | 0 |
| Range | [0, 2^출력 비트 폭 - 1] |
|
이 매개변수는 InitAddress 매개변수로 정의된 주소로 쓰여지는 데이터를 지정합니다. 이 매개변수에 데이터를 쓰면 하드웨어에 대한 실제 쓰기 작업이 시작됩니다. 위의 설명을 참조하십시오. |
|
| InitFileLoadMode | |
|---|---|
| Type | dynamic write 파라미터 |
| Default | text_with_checks |
| Range | {text_with_checks, text_raw, binary} |
|
이 매개변수는 조회 테이블에 로드되는 파일의 파일 형식과 모드를 정의합니다. 위의 설명을 참조하십시오. |
|
| InitFileName | |
|---|---|
| Type | dynamic write 파라미터 |
| Default | InitRamLut.txt |
| Range | |
|
이 매개변수는 초기화 파일의 이름을 지정합니다. |
|
| LoadInitFile | |
|---|---|
| Type | dynamic write 파라미터 |
| Default | 0 |
| Range | [0, 1] |
|
InitFileName 매개변수로 지정된 파일을 LUT에 로드하려면, 이 매개변수에 1을 기록하십시오. 위의 설명을 참조하십시오. |
|



이전

