현재 양산 중인 고객들도 필요한 디바이스 수를 줄이고, 보다 작은 점유 공간을 유지하기 위해 DFX를 사용한다. 개발자는 DFX를 사용해 특정 시점에만 필요한 기능을 로딩함으로써 보다 효율적으로 실리콘을 사용하고, 전체 전력소모를 줄이고, 시스템 업그레이드 기능을 개선하는 것은 물론, BOM(Bill of Materials) 비용 또한 절감할 수 있다. 특히 DFX는 자동차 애플리케이션에 이상적이다. 예를 들어, ADAS 시스템의 경우 여러 운전 시나리오를 위해 사용되는 센서와 동일한 카메라의 이미지 프로세싱 및 관련 센서 데이터 처리를 단일 디바이스로 처리할 수 있다.
예를 들어, 차량이 주차된 경우 단일 징크 울트라스케일+(UltraScale+™) MPSoC는 차량 주변을 모니터링하고, 차량 조작이 허용된 운전자를 식별하는 데 사용할 수 있다. 운전자가 식별된 후 차량의 시동이 가능해진다. 차량의 시동이 이뤄지고 주차에서 후진으로 기어 변속이 감지되면 다른 필요한 기능이나 디바이스의 동작에 영향을 주지 않고 사전 주행 모드 모니터링 기능을 저속 주행 모드 기능으로 전환한다. 이러한 ‘모니터링’ 기능은 저속 주차 조작 중에 후방 카메라와 다른 센서 데이터를 처리하는데 필요한 주행 모드 기능과 동적으로 전환이 이뤄진다.
변속 기어가 후진에서 주행으로 바뀌면, 후방 카메라의 이미지 및 센서 데이터 프로세싱을 위한 기능은 전방 카메라 센서의 프로세싱을 위한 기능으로 새롭게 전환된다. 이러한 기능 변경은 시스템을 재설정하거나 전원을 끄지 않고도 모두 수행이 가능하며 10밀리초(ms) 이내에 완료된다.
DFX 부분 재구성 동작
FPGA 내의 구성 가능한 로직 블록 회로 및 DSP 구성요소, 블록 RAM을 비롯해 메인 로직 및 라우팅 리소스는 모두 부분적으로 재구성이 가능하다. DFX는 이러한 부분 재구성 기능을 사용해 FPGA, 징크 SoC 또는 Versal 플랫폼 상의 로직 및 상태 머신 또는 소프트 및 하드 프로세서나 외부 회로 또는 메인 시스템 컨트롤러의 신호를 통해 동작을 개시할 수 있다.
예를 들어, FPGA 상에서 이러한 동작 방식을 살펴보자. FPGA에서 제공되는 하드웨어 기반 부분 재구성 컨트롤러는 애플리케이션의 기능 요청을 수신하고 재구성 프로세스를 관리한다. 적절한 비트스트림을 찾아 내부 구성 액세스 포트로 전달하고, 재구성 프로세스가 나머지 고정된 FPGA 로직을 방해하지 않도록 재구성 로직 영역을 동적으로 디커플링한 다음, 현재의 기능을 지우고 대체할 사전 컴파일된 부분 비트스트림을 로딩하고 새로운 기능을 초기화한 다음, 로직을 다시 커플링시킨다.
그림 1은 운전자가 헤드업 디스플레이(HUD)에 표시될 속도계와 객체감지 오버레이를 선택할 수 있도록 자동차 사용자 인터페이스 애플리케이션을 DFX를 이용해 관리하는 방법을 보여준다. 이 시스템의 4개의 프로세싱 블록 중 ‘메인 컨트롤’은 카메라에서 이미지를 캡처해 운전자의 선택에 따라 ‘속도계 디스플레이’ 또는 ‘객체감지’ 오버레이 알고리즘으로 데이터를 전송한다. ‘이미지 디스플레이’ 블록은 화면상에 이 이미지를 표시한다.
그림 1 | 동적으로 재구성이 가능한 객체감지 및 속도계를 구현하는 메인 컨트롤 및 이미지 디스플레이
운전자가 속도계 기능을 선택했는데 현재 ‘속도계 디스플레이’가 로드되지 않는다면, 적절한 펌웨어를 DDR이나 플래시에서 가져온 다음, 하드웨어를 다시 프로그램한다. 구성 컨트롤러는 수십 분의 1초 안에 이러한 전환 작업을 완료할 수 있으며 데이터 프레임을 놓치지 않고 애플리케이션의 프로세싱 알고리즘을 스위칭할 수 있도록 해준다. 이러한 방식으로 부분 재구성은 설계자들이 보다 작고 저렴한 FPGA를 선택하고, 부품 수와 솔루션 크기를 줄이고, 시스템 전력 소모를 최소화할 수 있도록 해준다.
자동차 전자장치 설계는 차량 전반에 걸쳐 분산된 도메인 컨트롤러에 더 많은 기능을 통합하고 새로운 기능을 도입해야 하는 압박이 높아짐에 따라 이러한 부분 재구성 기능이 설계자들에게 보다 강력한 해결책이 되고 있다.
자동차 시스템 외에도 의료용 스캐너 및 전문 스튜디오 장비, 휴대형 테스트 기어와 같은 장비들도 이러한 동적 유연성 기능을 활용할 수 있다. 또한 방위산업과 관련된 애플리케이션도 수시로 기능을 재구성함으로써 다양한 이점을 얻을 수 있다. 뿐만 아니라 보안에 민감한 기기의 경우에는 이 기능을 사용해 특정 기능을 제거하거나 교체하여 기능을 업그레이드할 수 있다.
이외에도 새로운 고성능 신경망 아키텍처가 계속 등장하고 있는 상용 AI 구축 애플리케이션에서도 이 기능은 매우 유용하다. DFX는 AI 가속기 카드에 있는 오래된 아키텍처를 최신 신경망으로 신속하게 대체함으로써 유전자 서열분석과 같은 작업 시간을 크게 단축시킬 수 있다.
DFX를 이용한 설계
DFX를 활용하는 시스템을 만들기 위해, 설계자는 먼저 동적으로 재구성 가능한 로직에 구현할 수 있는 상호배타적 기능들을 식별해야 한다. 비바도(Vivado®)와 같은 툴은 사용자에게 필요한 단계를 가이드한다. 여기에는 재구성 가능한 영역 분할, 플로 플랜 작성 및 유효성 검증, 차단 영역 정의, 재구성 가능한 기능과 고정된 FPGA 로직 간의 인터페이스, 필요한 위치에 디커플러 삽입, 올바른 플로 플랜 제약조건 관리 등이 해당된다. 재구성 가능한 로직은 표준 P&R(Place-and-Route) 및 타이밍-클로저 기법을 이용해 설계된다.
자일링스 파트너인 시스템 뷰(System View)는 기존에 수동으로 수행했던 인터페이스 매칭, 디커플러 삽입, 플로 플래닝, 동적으로 재구성 가능한 로직 설계와 같은 작업들을 비바도와 함께 동작하여 자동화할 수 있는 VSI(Visual System Integrator) 툴을 개발했다. 이는 시스템 설계를 간소화할 뿐만 아니라, 기존에 DFX 시스템 설계에 소요되었던 시간을 크게 단축할 수 있다. 실제로 몇 주 또는 몇 달에 걸쳐 진행되던 설계 플로를 몇 시간으로 압축할 수 있다.
VSI 툴을 이용한 추상화 및 자동화
DFX 설계 프로세스는 상향식 합성 방식을 이용한 계층적 구조로 되어 있다. 재구성 가능한 모듈은 설계상에서 변경되지 않는 고정된 영역과 분리되어 합성된다. VSI 디자인 환경에서 특수 ‘pr set’ 블록은 DFX를 활성화한다. 설계자는 이러한 블록을 다른 프로세싱 블록과 동일한 계층에 배치함으로써 이 기능이 상호배타적이고, 동일한 하드웨어 영역에서 실행되도록 툴에 지정한다.
VSI 툴은 DFX를 이용한 복잡한 시스템 설계의 상당 부분을 추상화한다. 사용자가 상호배타적인 기능 블록의 코드를 결정하고, VSI에서 이를 지정하면, 자일링스의 비바도 툴에서 설계가 생성된다
(그림 2). 그림 1에 나와 있는 자동차 애플리케이션의 경우, 설계의 구성 가능한 영역에 속도계 또는 객체감지 알고리즘이 포함된다. 설계상의 고정된 영역은 어떤 알고리즘이 선택되든 상관없이 해당 기능을 계속 수행한다. 디커플러는 재프로그래밍 프로세스가 진행되는 동안 고정된 영역을 보호하기 위해 구성 가능한 영역을 절연시키는 데 사용된다.
구성 가능한 영역은 백엔드 P&R 툴이 각기 다른 알고리즘을 위한 부분 펌웨어를 생성할 수 있도록 프로그래머블 패브릭 내의 사정 정의된 물리적 영역으로 제한되어야 한다. 일반적으로 이러한 제한된 영역을 생성하기 위해서는 디바이스에 대한 전문 지식이 필요하다. 그러나 VSI 툴을 사용하면, 디바이스의 데이터베이스를 판독하고, 자동으로 설계를 위한 제한된 영역을 생성한다.
마지막으로 VSI 툴은 시스템이 동작하는 중에 부분 재구성 영역을 로드하거나 재로드하는데 필요한 모든 소프트웨어 및 디바이스 드라이버를 생성한다. 메인 컨트롤 블록이 재구성 가능한 영역을 전환하기 위해 읽기/쓰기 요청을 시작하면, VSI 런타임은 재구성 가능한 영역을 디커플링하고 적합한 펌웨어를 로드한 다음 이 영역을 FPGA의 나머지 부분과 다시 커플링시킨다. 이러한 모든 것들은 사용자 애플리케이션에 명확하게 반영된다.
또한 VSI는 DFX 통신을 제어하고 재프로그래밍 영역의 절연을 관리할 수 있도록 비바도 패브릭 상에서 런타임을 생성할 수 있다. 런타임은 전환 가능한 기능 설계와 FPGA 회로 지원을 병렬로 구현해 설계상의 올바른 런타임을 보장하고, FPGA 회로가 완료되는 즉시 사용될 수 있도록 한다.
그림 3은 동적으로 재구성 가능한 기능이 포함된 FPGA 설계를 크게 단축시킬 수 있는 VSI의 자동화 작업을 요약한 것이다.
그림 2 | VSI는 동적 전환을 위해 구성 가능한 기능과 회로를 자동으로 생성한다.
그림 3 | VSI는 복잡하고, 시간이 많이 소모되는 DFX 디자인 플로를 자동화한다.
결론
DFX는 엄격한 비용, 전력, 크기, 무게에 대한 제약조건 내에서 보다 정교한 기능을 제공해야 하는 자동차 전자시스템 설계자들이 직면한 까다로운 요구사항을 해결할 수 있는 강력한 솔루션이다. 또한 수많은 산업 및 상업, 보안, 방위 애플리케이션에서도 이러한 동적 재구성 기능을 활용하면, 사용자에게 부가적인 가치를 제공하고, 오용을 방지할 수 있다.
구현 프로세스의 핵심 부분을 자동화하고, 추상화하는 비바도 및 VSI와 같은 툴을 통해 부분 재구성을 보다 쉽고, 빠르게 이용할 수 있다.