콘텐츠로 바로 가기

응용 노트: 공유 메모리#

imaFlex 및 marathon 프레임 그래버에서 공유 메모리 사용#

imaFlex 및 microEnable 5 marathon 프레임 그래버는 DRAM 메모리를 공유합니다.

메모리를 사용하는 각 연산자는 프레임 그래버에서 단 하나의 물리적 메모리에만 할당됩니다. imaFlex 및 microEnable 5 marathon 프레임 그래버의 경우 이 개념이 다릅니다. 이러한 프레임 그래버에서는 훨씬 더 빠른 DDR4(imaFlex의 경우) 또는 DDR3( marathon 의 경우) 메모리를 사용할 수 있습니다. 그러나 이는 단 하나의 물리적 메모리일 뿐이므로, 메모리를 사용하는 모든 VisualApplets 연산자가 대역폭을 공유하게 됩니다.

프레임 그래버의 메모리 구성은 ‘VisualApplets ’ 장치 리소스 설명서를 통해 가장 정확하게 확인할 수 있습니다. 이 설명서에는 ‘ VisualApplets ’ 설계 내에서 DRAM 소자를 사용하는 데 필요한 정보, 즉 RAM 용량, RAM 데이터 폭 및 RAM당 대역폭( marathon 시리즈를 제외한 모든 플랫폼의 경우)과 ‘ marathon ’ 시리즈의 총(공유) RAM 대역폭이 수록되어 있습니다.

정보

VisualApplets 장치 리소스 설명서에 명시된 대역폭 값은 이론상의 최대값입니다. 실제 사용 시 효율이 저하될 수 있습니다.

이 문서는 RAM 용량 및 RAM 데이터 폭 정보를 활용하여 특정 플랫폼에서 메모리를 효율적으로 사용하는 방법을 안내합니다. 또한, ‘ marathon ’ 시리즈의 RAM당 대역폭을 계산하는 데 도움을 줍니다.

DRAM의 효율적인 활용#

VisualApplets 장치 리소스 설명서에서는 특정 플랫폼의 RAM 용량에 대한 정보를 확인할 수 있습니다.

  • imaFlex CXP-12 Quad의 경우: 512 MiB DDR4 3개
  • imaFlex CXP-12 Penta 용: 5 x 512 MiB DDR4
  • marathon 시리즈 및 Lightbridge의 경우: 4 x 512 MiB DDR3

이 값들은 총 RAM 용량(예: marathon 시리즈의 경우: 4 x 512 MiB = 2 GiB (2^31 바이트))과 한 명의 VisualApplets 운영자가 최대 얼마까지 사용할 수 있는 파티션 크기( marathon 시리즈의 경우: 512 MiB)에 대한 정보를 제공합니다.

이 최대 RAM 용량을 각 오퍼레이터별로 효율적으로 사용하려면 전체 RAM 데이터 폭에 대한 정보를 활용해야 합니다( VisualApplets 장치 리소스 문서 참조):

  • imaFlex CXP-12 Quad의 경우, RAM 데이터 폭은 384비트입니다.
  • imaFlex CXP-12 Penta 의 경우, RAM 데이터 폭은 640비트입니다.
  • marathon VCX-QP , VF2의 경우 RAM 데이터 폭은 512비트입니다.
  • marathon 의 VCL, VCLx 및 Lightbridge의 경우, RAM 데이터 폭은 256비트입니다.

RAM 데이터 폭은 VisualApplets 설계에서 DRAM 연산자와 연결된 링크의 병렬 처리 정도와 커널 요소 수에 비트 폭을 곱한 값입니다.

DRAM의 사용 예시#

이 예제에서는 다음 그림과 같이 marathon VCL 플랫폼을 위한 간단한 ‘ VisualApplets ’ 설계를 사용합니다.

그림 1: Parallelism 4 RAM 사용량

이 예제에서는 병렬도를 4로, 비트 폭을 8비트로 설정했습니다. 따라서 이 예제에서는 RAM 데이터 폭으로 4 × 8 = 32비트만 사용합니다. 하지만 효율을 극대화하려면 대역폭이 256비트여야 합니다. 따라서 다음 그림과 같이 병렬도를 32로 늘려야 합니다.

그림 2: Parallelism 32 RAM 사용량

이 설계 덕분에 DRAM을 효율적으로 사용할 수 있습니다. 일반적으로는 사용 가능한 RAM 데이터 폭을 최대한 활용하는 것이 가장 좋습니다. 하지만 더 많은 리소스가 필요하거나, 데이터 형식이 256으로 나누어지지 않거나, 연산자의 매개변수 때문에 더 이상 전체 범위를 사용할 수 없는 경우에는 이것이 불가능할 수도 있습니다. 따라서 더 낮은 병렬도를 사용할 수 있는지 여부를 파악해야 합니다. 이를 위해서는 다음 절에서 설명할 메모리 대역폭을 이해해야 합니다.

메모리 대역폭#

단일 DRAM 소자의 최대 메모리 대역폭에 대한 플랫폼별 정보는 ‘VisualApplets ’의 ‘Device Resources’ 문서에서 확인할 수 있습니다. RAM의 읽기 및 쓰기 작업을 고려해야 하므로, 결과 대역폭을 계산할 때는 최대 대역폭을 2로 나눕니다:

공식, 결과 대역폭, 최대값

이 결과 대역폭 값은 RAM 데이터 폭을 완전히 활용할 때만 달성할 수 있습니다( ‘DRAM의 효율적인 사용’ 절 참조). 따라서 결과 대역폭을 계산할 때는 사용된 RAM 데이터 폭과 전체 RAM 데이터 폭의 비율을 고려해야 합니다:

공식, 결과 대역폭, 최대값

이 공식을 사용하면 필요한 RAM 데이터 폭을 계산할 수 있습니다:

bit width * parallelism * kernel elements of a link connected to a RAM element 특정 결과 대역폭을 달성하기 위해 설계에 사용됩니다. 즉, 비트 폭과 커널 요소가 정의되어 있다면, RAM 요소에 연결된 링크에 필요한 최소 병렬도도 계산할 수 있습니다.

메모리 대역폭 계산 예시#

‘메모리 대역폭’ 섹션에 제시된 설계 예제에 대해 결과 대역폭을 계산할 수 있습니다. 그림 1에 표시된 RAM 데이터 폭이 32비트인 설계 예제의 경우, 결과 대역폭은 다음과 같습니다.

공식, 결과 대역폭, 최대값

그림 2에 표시된 RAM 데이터 폭이 256비트인 설계 예시의 경우, 결과적인 대역폭은 다음과 같습니다.

공식, 결과 대역폭, 최대값

공유 메모리#

‘메모리 대역폭’ 섹션에 제시된 대역폭 계산식은 DRAM 연산기가 단 하나만 존재하는 경우 모든 프레임 그래버 플랫폼에 적용됩니다. 또한 이 계산식은 ‘ marathon ’ 시리즈를 제외한 모든 플랫폼에서 애플릿 내 각 DRAM 요소의 대역폭을 계산할 때도 적용됩니다. 두 개 이상의 연산기를 사용하는 경우, ‘ marathon ’ 시리즈에서는 총 메모리 대역폭이 공유됩니다. 이때 각 DRAM 요소의 대역폭은 다음 공식에 따라 계산됩니다:

공식, 결과 대역폭, 최대값

공유 메모리 예시#

marathon VCL 플랫폼에 대한 다음 예제에서는 아래 이미지와 같이 두 대의 카메라, 두 개의 DRAM 요소(RAM 데이터 폭 32비트), 그리고 두 개의 DMA를 보여줍니다:

그림 3: Parallelism 4에서 RAM을 사용하는 두 대의 카메라

그 결과 대역폭은 다음과 같습니다:

공식, 결과 대역폭, 최대값

‘메모리 대역폭’ 절에서 계산한 바와 같이, RAM 데이터 폭이 32비트이지만 설계에 DRAM 소자가 하나만 포함된 경우의 결과 대역폭과 비교했을 때, DRAM 소자가 두 개인 경우의 결과 대역폭은 이전 값의 절반에 해당합니다. DRAM 소자가 두 개인 경우에도 DRAM 소자가 하나일 때와 동일한 대역폭을 얻으려면 RAM 데이터 폭을 두 배로 늘려야 합니다(= 64비트).

운영자 설정#

연산자 구성은 주어진 프레임 그래버 하드웨어에서 사용 가능한 RAM 데이터 폭에 자동으로 맞춰집니다. 따라서 대부분의 연산자는 ‘VisualApplets ’ 장치 리소스 설명서에 명시된 RAM 데이터 폭을 허용합니다. 일부 연산자는 병렬 처리 수준을 1로만 제한합니다. 64비트의 링크 비트 폭 제한을 극복하기 위해, 이러한 연산자 중 일부는 ‘DRAM 및 메모리 대역폭의 효율적인 사용’ 섹션에서 설명된 바와 같이 효율적인 RAM 데이터 폭을 사용할 수 있도록 커널을 지원합니다. DRAM 연산자 중에는 효율적인 사용을 위해 특별한 구성이 필요한 예외가 있습니다. 연산자의 최적 구성에 대한 자세한 내용은 해당 연산자의 CoefficientBuffer 문서에서 확인할 수 있습니다.