오토모티브 비전-기반 애플리케이션 사례를 이용해 어떻게 VLIW DSP-CPU를 능가하는 프로세싱 성능을 중간 크기의 저가격 자일링스 FPGA의 프로그래머블 병렬 구조를 이용해 구현할 수 있는지를 살펴봤다.
스파르탄-3A DSP 디바이스를 이용한 오토모티브 애플리케이션을 위한 최적의 블록 매칭
글│다니엘 배그니(Daniele Bagni), DSP Specialist
폴 조라티(Paul Zoratti), 오토모티브 시니어 시스템 기획, 자일링스
자동차 엔지니어들은 운행 중인 차량에서 운전자의 안전을 지원할 수 있는 다양한 인텔리전트 기술을 도입하고 있다. 자동차 시스템에서 가장 많이 적용되는 기술로는 레이더, 초음파, 카메라/비전 기반 센싱 기술 등이 있으며, 이러한 기술은 DA(Driver Assistance) 시스템에 통합되어 도로 상의 잠재적인 위험상황이나 불리한 여건 하에서도 안전운전을 지원할 수 있도록 도와준다.
1세대 카메라 기반 DA 시스템이 현재 다양한 자동차 모델에 적용되어 양산되고 있다. 이러한 시스템의 주요 기능은 운전자에게 차량 주변 환경을 영상 이미지로 제공하는데 있으며, 가장 보편적인 시스템으로는 호스트 차량의 뒷면을 살펴볼 수 있도록 후방 카메라를 이용하여 라디오/내비게이션 시스템의 스크린이나 계측 클러스터의 소형 디스플레이 상에 이미지를 디스플레이함으로써 주차 및 후진 보조장치 역할을 하는 것이다.
2세대 카메라 기반 시스템은 현재 개발 및 테스트 중이며, 일부 차량에 한해 보급되고 있다. 이미지 프로세싱을 적용한 이러한 2세대 시스템은 운전자에게 단순히 이미지를 제공하는 수준을 넘어 비디오 스트림을 통해 정보를 추출하여 분석하고 특성화하여, 차량 환경을 평가할 수 있다. 이 시스템이 적용되면, 운전자는 상황에 따른 적절한 경고를 받게 된다.
엔지니어들이 실질적인 차량 환경 특성화 작업에 대한 경험을 확보하게 됨에 따라 미래의 DA 기법은 복잡도가 더욱 증가하고, 보다 우수한 컨수머 유틸리티 제공은 물론 자동차의 다른 서브 시스템 성능도 향상될 것으로 보인다. 그림 1은 현재와 미래의 다양한 DA 기능들을 정리한 것이다.
그림 1. 운전자 지원 기능
고성능 프로세싱에 대한 요구
DA 시스템에서 요구되는 프로세싱 성능은 현재 자동차 수준의 시리얼 DSP 프로세서 성능을 초과할 수 있다. 또한 컨수머 밸류를 높이기 위해 단일 수트의 비전 센서를 기반으로 여러 다양한 DA 기능을 함께 제공함에 따라 성능에 대한 요구는 더욱 증가하고 있다.
예를 들어, 진행방향의 비전 모듈은 차선이탈 경고나 지능형 헤드램프 제어, 신호등 인식 기능 등을 동시에 지원할 수 있어야 하는데, 이러한 모든 기능들은 서로 다른 프로세싱 알고리즘이 필요하다. 따라서 DA 시장은 자체 프로세싱 성능과 컨피규레이션 유연성, 그리고 디바이스 확장성을 통해 시스템의 밸류를 높일 수 있는 FPGA에게 있어 실제적인 기회가 될 것으로 보인다.
비전 기반 DA 시스템의 이미지 프로세싱 및 분석 기능은 공간적/시간적 필터링 및 렌즈-왜곡 보정, 이미지 선명화, 콘트라스트 향상, 에지 디텍션(Edge Dete-ction), 패턴 매칭, 사물 인지, 사물 추적 등을 비롯해 일부 경우에는 그래픽 오버레이 등이 포함될 수 있다. 특히 모션 예측이나 입체적 부동 연산을 지원하는 패턴 매칭 기능 형태는 가장 큰 관심사다.
FPGA 프로세싱 성능의 수준을 알아보기 위해 다음의 비전 기반 시스템을 살펴보도록 하자. 30Hz fps(frame rate) 속도로 비디오를 생성하고 한 프레임에서 다른 프레임으로 사물의 움직임이나 흐름을 예측할 수 있는 와이드-VGA 해상도의 이미징 디바이스(752 x 480 픽셀)를 보자. 입체적 범위의 부동 연산에 적합한 알고리즘 접근방법의 하나는 이미지를 블록으로 분할시켜(즉, 4 x 4 픽셀 크기) 특정 검색 영역(즉, 20 x 20 픽셀)에 걸쳐 첫 번째 프레임과 두 번째 프레임 위치에 대한 각 블록의 매칭 기준을 평가하는 것이다.
공통적인 매칭 기준은 첫 번째 이미지의 4 x 4 블록 사이에서 픽셀 명암의 MAE(Minimum Absolute Error)를 찾아내고, SAD(Sum of Absolute Diff-erences)로 불리는 연산자를 이용해 두 번째 이미지 상의 검색 영역 안에서 픽셀을 찾아내는 것이다.
4 x 4 블록 매칭 사례에서 보면 (752픽셀) x (480라인) x (20 x 20 픽셀 검색 영역) x (30fps) / (4 x 4 픽셀 블록 크기) = 270,720,000MAE/s이기 때문에 250 MMAE/s(Millions of MAE Calculations per Second) 이상이 필요하다. MAE는 4 x 4 픽셀 블록의 최종 매칭 오류를 나타내며, SAD는 각각의 4쌍에 대한 절대적 연산차의 합을 보여준다. 따라서 모든 MAE는 4개의 SAD 연산이 필요하다.
프로세싱 옵션
자동차 설계 엔지니어가 선택할 수 있는 프로세싱 옵션에는 VLIW(Very Long Instruction Word) DSP-CPU와 FPGA가 있다. FPGA는 기존의 VLIW DSP-CPU보다 현저히 높은 프로세싱 성능을 제공한다. 이것은 FPGA의 아키텍처에서 기인한다. 비록 FPGA의 클럭 주파수가 DSP-CPU의 클럭 주파수보다 훨씬 낮다고 하더라도, 병렬로 구성된 대규모의 기능 유닛(프로그래머블 MAC 포함)은 어떠한 DSP가 제공하는 성능 보다 10~30배 더 뛰어난 성능을 FPGA로 달성할 수 있다. 블록-매칭 동작 사례를 통해 자일링스 FPGA가 다른 VLIW DSP-CPU 프로세서 보다 더욱 우수한 성능을 제공한다는 사실을 설명하고자 한다.
VLIW DSP-CPU 프로세서에서 SAD 및 MAE 연산
8bit 픽셀 비디오 데이터의 4가지 요소에 대한 SAD 연산은 32bit 아키텍처 DSP CPU 내에 SIMD(Single Instru-ction on Multiple Data)로 구현될 수 있다. 따라서 그림 2와 같이 단지 하나의 싸이클로 11개의 기본적인 명령을 효율적으로 수행할 수 있다.
그림 2. SIMD 사례: 8bit 샘플 쿼드러처의 SAD 연산
예를 들어, TriMedia 32bit VLIW-CPU가 통합된 Nexperia PNX1500 미디어 프로세서는 2개의 싸이클 레이턴시로 8bit 픽셀을 단일 클럭 싸이클로 2개의 쿼드러플 SAD 명령을 구현할 수 있다. 모든 긴 명령어는 클럭 싸이클 당 5개의 기본적인 RISC/SIMD 명령어로 이루어지며, 이 중 오직 2개만이 SAD(Tri-Media 데이터북에서 "8meii"로 명명함)가 될 수 있다.
따라서 4 x 4 블록 크기의 MAE는 표 1에서 보여진 것처럼 5개의 클럭 싸이클을 요구할 것이다. 즉, 2개의 쿼드러플 SAD (sad1/sad2를 위한 싸이클 1, sad3/ sad4를 위한 싸이클 2)를 파이프라인하기 위한 2개의 싸이클과 부분적인 결과(싸이클 3, 4, 5)를 축적하기 위한 3개의 싸이클이 필요하다. 따라서 300MHz Nexperia PNX1500 프로세서는 단일 블록 프로세싱의 경우 60MMAE/s를 연산할 수 있다.
표 1. 쿼드러플 8bit 서브-워드 병렬 구조를 이용한 Nexperia/TriMedia VLIW DSP-CPU의 MAE 연산을 위한 슈도 어셈블리 코드
한 번에 하나 이상의 4 x 4 블록을 처리할 수 있다면 피크 성능은 좀 더 향상될 수 있을 것이다. 예를 들어, 병렬로 된 2개의 4 x 4 블록의 MAE는 7개의 싸이클로 연산되어 85.71MMAE/s를 구현할 수 있으며, 3개 블록은 9개의 싸이클, 즉 100MMAE/s로 프로세싱이 가능하다. 병렬로 처리될 수 있는 최대 블록의 규모는 먼저, 긴 명령어로 실행할 수 있는 SIMD SAD 연산 수에 따라 좌우되며, 다음으로는 VLIW-CPU의 범용 레지스터 수, 그리고 세 번째는 최적화를 위한 컴파일러의 예정된 알고리즘에 의해 제한된다. 전반적인 성능은 보다 많은 블록이 추가될 때 포화상태에 이르게 되며, 따라서 3개 이상의 MAE를 병렬로 프로세싱하지 않는 것이 좋다.
TI의 TMSD320DM6437 디지털 미디어 프로세서는 2개의 개별적인 데이터 경로를 통해 싸이클 당 8개의 기본적인 RISC 연산을 처리하는 긴 명령어를 가지고 있으며, 싸이클 당 각각 4개 슬롯 중 하나가 있다. VLIW-CPU는 싸이클 당 2개의 SAD 명령을 수행(TI DM6437 데이터북에 "subabs4"로 명명)할 수 있으며, 각각 싸이클 마다 하나의 레이턴시가 있다. 그러나 부분적인 결과를 축적하기 위해 3개의 싸이클 레이턴시 SIMD MAC 연산은 상수 0x01010101을 이용해 수행("dotpsu4")되어야 한다.
따라서 600MHz TI DM6437 DSP-CPU는 7개의 싸이클에서 MAE(표 2참조)를 연산할 수 있으며, 4 x 4 픽셀 블록의 피크 성능은 85.71MMAE/s에 이른다. 만약 2개의 블록을 병렬로 처리할 경우 9개의 싸이클과 133.33MMAE/s를 달성할 수 있으며, 반면 3개 블록일 경우 11개의 싸이클과 163.64MMAE/s를 얻을 수 있다. 하지만 이 또한 필요한 250MSAD/s 보다는 낮은 것이다.
표 2. 쿼드러플 8bit 서브-워드 병렬 구조를 이용한 TI VLIW DSP-CPU의 MAE 연산을 위한 슈도 어셈블리 코드
디레이팅 VLIW DSP-CPU 성능
지금까지 우리는 32bit 아키텍처의 DSP-CPU 프로세서에 매우 적합한 픽셀 당 8bit를 가정했다. 그러나 새로운 CMOS 이미지 센서는 픽셀 당 12~14bit에 이르는 더욱 높은 고해상도 범위를 가지고 있다. 이러한 데이터 유형의 경우, 고전적인 쿼드러플 8bit 서브워드 SIMD 32bit 아키텍처로는 높은 효율을 구현할 수 없으며, 듀얼 16bit 하프-워드 SIMD로 대체해야만 한다. 서브워드 병렬은 단지 2개이다. 따라서 피크 성능은 MAE를 연산을 위해 더 많은 클럭 싸이클이 필요하기 때문에 상당히 감소된다.
표 3은 정확한 레이턴시와 기능별 이슈 슬롯이 이러한 명령을 수행할 수 있는 기능별 이슈 블록을 고려하여 16bit 서브-워드 명령을 사용할 때 TI VLIW DSP-CPU에서 SAD 연산의 슈도(pseudo) 어셈블리 코드가 무엇인지 보여주고 있다. 결과적으로 8개의 싸이클이 하나의 4 x 4 블록을 위해 필요하며, 병렬로 처리되는 2개 및 3개 블록을 위해서는 각각 10, 12 싸이클이 요구된다. 피크 성능에 해당하는 것은 75MMAE/s, 120MMAE/s, 150MMAE/s이며, 이들 모두 8bit 서브-워드 명령으로 달성되는 것보다 더 작다.
표 3. 듀얼 16bit 서브-워드 병렬 구조를 이용한 TI VLIW DSP CPU의 MAE 연산을 위한 슈도 어셈블리 코드
스파르탄-3A DSP FPGA SAD 및 MAE 성능
자일링스는 스파르탄(SpartanTM)-3와 버텍스(VirtexTM)-4 디바이스 간의 프로세싱 성능 격차를 줄일 수 있는 스파르탄 3A DSP 1800A와 3400A FPGA를 선보였다. 이 디바이스들은 버텍스-4 디바이스에서 제공되는 DSP48 슬라이스의 수정된 버전이 통합되어 있으며, 3A-DSP는 보다 많은 온-칩 메모리(블록 RAM)를 제공한다. 이러한 두 가지 향상된 기능과 함께 대량생산 애플리케이션을 겨냥한 저렴한 가격으로 공급되는 3A-DSP 디바이스는 자동차 애플리케이션의 비전 기반 DA 시스템에 이상적이다.
그림 3은 스파르탄-3A DSP 1800 (XC3SD1800A-4FG676) 디바이스의 12bit 픽셀 쿼드러플 SAD 연산 구조를 보여주고 있다. 이러한 구현은 DSP 설계 플로우(Simulink 툴에서 자일링스가 제공하는 비트-트루, 싸이클-정확성, 합성가능한 라이브러리)에서 시스템 제너레이터(System Generator)를 통해 실현된다. 필요한 리소스 양은 121개의 슬라이스(236 LUT와 140개 플립-플롭)이다. 이러한 구조를 4번 복제하고 부분적 결과를 추가함으로써 전체 4x4 블록을 위한 회로도를 만들 수 있으며, 이는 하나의 쓰루풋(모든 싸이클에서 새로운 MAE의 연산을 시작할 수 있다는 것을 의미한다)과 7개 싸이클 레이턴시를 가진 508개의 슬라이스(990개의 플립-플롭 및 606개의 LUT)가 필요하다.
그림 3. 스파르탄-3A DSP 1800 디바이스에서 4개의 12bit 샘플 쿼드러플의 SAD 연산을 위한 DSP용 시스템 제너레이터
150MHz 클럭 주파수(디바이스가 달성할 수 있는 최대 250MHz 중)를 이용할 경우, 제시된 애플리케이션의 요건에 부합하는 250MMAE/s와 300MMAE/s를 달성하기 위해 디바이스 면적의 약 6% 만을 차지하는 오직 2개의 병렬 구조만 필요하다. 따라서 이용 가능한 충분한 리소스를 남겨 둘 수 있기 때문에 다른 이미지 프로세싱 기능이나 데이터 라우팅 파이프, 메모리 인터페이스 컨트롤러, 그리고 시리얼 프로세싱과 외부 커뮤니케이션을 위한 32bit MicroBlazeTM 임베디드 프로세서 구현이 가능하다.
참고로, 스파르탄 3A-DSP 1800A 디바이스는 150MHz에서 전체 FPGA 디바이스의 70%만을 활용해 병렬로 최대 23개 블록을 처리할 수 있다.(70% x 16,640 슬라이스/508 슬라이스/블록 = 23 블록) 이 경우 피크 성능은 3,529MMAE/s에 달하며, 이는 600MHz TI DSP-CPU의 피크 성능 보다 최소 25배 이상 높은 것이다.
결론
오토모티브 비전-기반 애플리케이션 사례를 이용해 어떻게 VLIW DSP-CPU를 능가하는 프로세싱 성능을 중간 크기의 저가격 자일링스 FPGA의 프로그래머블 병렬 구조를 이용해 구현할 수 있는지를 살펴봤다. 분석 결과는 표 4에 정리하였다.
표 4. 결과 정리
12bit 픽셀 데이터 4 x 4 블록의 MAE 연산의 경우, 스파르탄-3A DSP는 단지 4분의 1 클럭 속도에서 TI TMS320DM-6437 보다 2배 향상된 성능을 보여주었다. 게다가 FPGA 리소스 활용은 단지 6%에 불과했으며, 이를 통해 동일한 디바이스 내에 다른 이미지 프로세싱 기능을 구현하는 것이 가능했다.(필요하다면 병렬구조)
반면 VLIW DSP CPU는 SAD 연산을 수행하는 동안 전체적으로 동작이 이뤄져야 하는데다, 시리얼 프로세서의 긴 명령을 위한 가능한 슬롯을 모두 소모해야 하기 때문에 다른 기능을 동시에 수행할 수 있는 여지가 거의 없다.
우리는 FPGA의 예측 클럭 주파수(150 및 250MHz)뿐만 아니라 모션 예측 검색영역(검색 영역이 더 넓을수록 연산해야 하는 MAE 수는 더 많아진다)에 대해서도 매우 엄격한 조건으로 진행했다. 예를 들어, 609MMAE/s를 요구하는 30 x 30 검색 영역은 VLIW DSP-CPU 성능으로는 구현이 어렵지만 1800A 디바이스를 이용할 경우 단지 12%의 슬라이스만을 통해 구현할 수 있다.
마지막으로 MAE 구현의 경우, 우리는 DSP48 MAC 유닛을 모두 사용하지 않았다. 100-슬라이스 애더 트리를 4개의 DSP48 유닛으로 대체함으로써 12bit 입력 데이터 MAE 4 x 4 블록을 400개의 슬라이스(782개의 플립-팝 및 400개의 LUT)와 4개의 DSP48로 처리할 수 있었다.
따라서 스파르탄-3A DSP 1800A 디바이스는 차세대 오토모티브 운전자 지원 애플리케이션과 같이 상당한 처리 성능과 유연성, 확장성을 필요로 하는 비전-기반 애플리케이션에 매우 적합할 것으로 보인다.
다음 단계를 위한 몇 가지 팁(디지털 에디션: www.xcellpublications.com/subscribe/) |
|