배너
닫기

테크노트

배너

GUI 기반 MCU 디자인에서의 메모리 문제 해결 방안

  • 등록 2018.10.08 09:06:33
URL복사

[첨단 헬로티]


개인적으로 임베디드 그래픽 디자인에서 가장 까다로운 구성요소 중 하나는 프레임 버퍼 메모리라고 생각한다. 메모리는 대용량에 빠르고 저렴해야 한다. 하지만 임베디드 그래픽 디자인에 메모리를 통합하기 위해서는 종종 이들 조건에 대한 절충안이 필요하다. 


이러한 절충안은 기껏해야 비용 상승과 수익성 하락을 불러오는 값비싼 골칫거리가 되며, 심지어 성공적인 디자인 완성을 위해 디자인을 아웃소싱하거나 새로운 인재를 고용하고 교육시켜야 하는 경우도 있다. 이 글에서는 마이크로컨트롤러(MCU)를 사용해 임베디드 그래픽 애플리케이션에 필요한 고밀도, 고성능 메모리를 통합할 때 고려해야 할 점들을 살펴보고, 이러한 통합에 따른 영향을 최소화하거나 완전히 제거하는 방법을 알아본다.



임베디드 그래픽 디자인에 MCU를 사용하면 MPU (Microprocessing Unit) 아키텍처를 사용할 때에 비해 여러 장점이 있다. 특정 수준의 GUI에서는 MPU 아키텍처가 절대적으로 필요하지만, MPU로의 전환에 필요한 별도의 비용과 교육 없이도 여전히 많은 애플리케이션 상에서 시각적으로 매력적이고 효과적인 GUI를 실행할 수 있다. MCU 사용의 가장 큰 장점은 표준 MCU가 제공하는 통합 수준일 것이다. 여기에는 다양한 휘발성(SRAM) 및 비휘발성(플래시) 메모리 크기, 특정 코어, 클록 속도, 통신 인터페이스와 IO 포트 및 아날로그 주변장치가 포함된다. 또한, 대부분의 임베디드 요건에 부합할 수 있도록 거의 무한대에 가까운 다양한 디바이스가 시중에 나와 있다. 하지만 그래픽 사용자 인터페이스(GUI)가 임베디드 애플리케이션의 필수 요건일 경우, MCU 사용자에게 단순성, 공간 및 비용 절감 문제는 보다 복잡해진다. 이러한 경우 임베디드 개발자들은 MCU를 어떻게 자신의 니즈에 맞출 수 있는지, 아니면 비용이 많이 들고 복잡한 MPU로 넘어가야 하는지에 대해 의문이 들 것이다.


고려사항 1: 그래픽이 어떻게 구동되는가? 


그래픽 디자인의 첫 번째 고려사항은 그래픽을 어떻게 구동하는 가이다. 일반적으로 임베디드 그래픽 디자인에는 렌더링, 구동, 저장 등 세 가지 기능이 있다. 렌더링은 이미지를 만들고 조작하는 과정을 가리킨다. 엔트리 레벨 디자인은 마이크로컨트롤러의 CPU(Central Processing Unit)를 사용해 이러한 기능을 수행한다. 


하이엔드급 전용 그래픽 MCU는 자체적인 GPU (Graphics Processing Unit)를 탑재해 선과 사각형 그리기 및 채우기, 도형 이동, 블릿(Blit)이라고 하는 오버레이 조작 등의 일부 렌더링 기능을 담당한다. 구동 기능은 이미지를 스크린에 옮기는 과정을 가리킨다. 구동은 마이크로컨트롤러의 외부 병렬 포트를 통한 DMA (Direct Memory Access) 장치 또는 전용 그래픽 컨트롤러로 수행된다. 그래픽 컨트롤러는 오버레이 및 회전 등의 기능을 추가함으로써 최종 디자인을 향상시킨다. 마지막으로 저장은 디스플레이되는 내용에 대한 정보를 유지하는 장소로, 이 글에서도 주요하게 다룰 것이다.


고려사항 2: GUI 디자인을 어디에 저장할 것인가? 


오늘날 대중 시장을 겨냥한 하이엔드 MCU의 통합 SRAM은 최고 수준이 512KB 정도다. 이 용량은 단 한 프레임 버퍼만 필요로 하는 단순한 정적 GUI나, 픽셀당 8비트의 색 선택과 작은 화면만 사용하는 GUI를 구동하는 데 충분하다. 하지만 현재 시장 트렌드에 따르면 최종 사용자들은 임베디드 디바이스 인터페이스에서도 스마트폰에서 사용하는 앱과 유사한 경험을 원한다. 또한 업체들은 모든 GUI가 브랜드 정체성과 충성도를 높일 수 있도록 자사 브랜드를 정확하게 나타내기를 원한다. 매끄럽고 풍부한 그래픽 사용자 인터페이스에는 다중 프레임 버퍼, 다중 레이어 오버레이, 그리고 더 큰 색 심도가 포함돼야 한다. 색 심도의 경우 애플리케이션 그래픽이 사진과 같은 실사를 표현하거나 특정 브랜드 색상과 정확히 일치되어야 할 때 특히 중요하다.


[그림 1]은 이처럼 향상된 성능을 갖는 GUI 애플리케이션 예제를 보여준다. 첫 번째 예제는 실사에 가까운 이미지 왜곡 데모로 약 12MB 런타임 비휘발성 메모리 풋프린트를 갖는다. 다른 애플리케이션인 커피 메이커 GUI는 더 작은 그래픽 아이콘을 이용하면서도 다중 레이어 오버레이와 모션을 사용했다. 런타임 풋프린트는 약 3MB이다.


▲ 그림 1.


고려사항 3: GUI를 저장하기 위해 외부 메모리를 사용해야 하는가? 


앞서 말했듯 일반적인 하이엔드 MCU에 통합된 SRAM은 최고 수준이 약 512KB 정도이다. 이 두 애플리케이션은 분명 시중에 나와 있는 거의 모든 MCU의 통합 고속 메모리 성능을 초과한다. 따라서 MCU 외부에 추가 메모리가 필요하다. 이러한 메모리는 고밀도, 고성능, 고가용성을 갖춰야 한다. 


MCU 그래픽 애플리케이션의 외부 메모리를 위한 옵션 중 하나는 비동기 SRAM이다. 외부 SRAM은 메모리를 증대시켜 8MB의 밀도를 제공하며, 여러 마이크로컨트롤러의 외부 병렬 포트에 적합한 비다중화 주소 라인과 핀아웃 덕분에 비교적 디자인이 쉽다. 외부 SRAM을 사용할 경우 절충해야 할 요소는 밀도(8MB는 큰 용량이지만 그래픽 집중 애플리케이션의 경우 부족함), 비용(온라인 유통업체에서 단일 유닛 가격은 MCU 자체보다 큰 경우가 많음), 그리고 보드 공간이다.


오늘날 시중에 나와 있는 많은 MCU는 그래픽 저장을 위해 사용할 수 있는 SDRAM 인터페이스를 마이크로컨트롤러에 구현하고 있다. 이러한 종류의 외부 메모리에 지원되는 밀도는 8MB와 16MB가 일반적이다. SDRAM은 비교적 구하기 쉽고 외부 SRAM보다 훨씬 비용 효율적이다. 앞서 언급했듯 8MB는 하한선으로 간주되며, 사진 왜곡 데모와 같은 일부 GUI 애플리케이션은 이 제한을 초과한다. SDRAM을 사용할 경우 보드 설계도 고려해야 한다. 버스가 120MHz에 달하면 특별한 디자인 요건이 필요하다. 예를 들어 특정 애플리케이션에서는 완전한(end-to-end) SDRAM 디자인이 적용된 모든 PCB 보드에 6개의 레이어를 포함하도록 권장하고 있다. 이는 고성능 외부 메모리의 경우 임베디드 PCB 디자인에 최대 4개 레이어를 추가할 수 있다는 사실을 의미하므로, 전체 시스템 BOM에 몇 달러의 비용이 추가된다.


성능은 SDRAM에서 고려해야 하는 또 다른 문제다. 일반적인 100MHz 16비트 버스에서 이론상 최대 데이터 전송 속도는 200MB/s이다. 60MHz 리프레시율과 픽셀당 16비트 색 깊이를 갖는 800x480 WVGA 디스플레이는 46MB/s의 데이터 처리량이 필요하다. 하지만 CPU 또는 옵션인 GPU에서 이미지 조작이 발생하고, 여기에 임베디드 그래픽 MCU에서 표준으로 자리잡은 레이어드 오버레이를 지원할 경우 디자인은 SDRAM 기반 시스템의 실제 표기 성능에 달하거나 이를 초과한다. 달리 말하면 일부 하이엔드 그래픽 애플리케이션에서 SDRAM 성능이 한계에 이를 수 있다는 것이다. 앞서 말한 시장 트렌드처럼 최종 사용자는 전자기기와의 모든 상호작용이 스마트폰 및 앱에서의 경험과 유사하기를 원한다. 따라서 성능 압박은 계속 증가하고 있으며, 이에 따라 더 새롭고 더 높은 성능과 더 높은 밀도 기술이 요구된다.


▲ 그림 2. PIC32MZ DA 블록 다이어그램


고려사항 4: GUI 애플리케이션용 내부 메모리와 같은 것이 있는가? 


우리가 고려할 마지막 기술은 DDR2 SDRAM이다. 이 메모리는 SDRAM으로 달성할 수 있는 수준보다 더 높은 밀도(최대 128MB)라는 이점을 개발자에게 제공한다. DDR2 SDRAM을 사용하는 또 다른 이점은 성능이다. DDR2 메모리 인터페이스의 클록 속도는 SDRAM보다 최소 2배 빠르다. DDR은 ‘Double Data Rate’의 약자로 매 사이클마다 메모리에서 두 번 데이터를 주고 받는다는 것을 의미한다. 그 결과 시중에 사용되는 SDRAM보다 최소 4배 빠른 메모리 기술을 구현한다.


DDR2 메모리 성능을 이용하는 것은 이 기술 사용에 따른 주요 단점 중 하나이기도 하다. 버스 인터페이스가 200MHz에서 시작하고 데이터 전송이 사이클 절반마다 발생하는 경우, 적절한 신호 무결성을 보장하면서 나머지 보드 전체에 걸쳐 절연을 제공하기 위해서는 SDRAM에 요구되는 것 이상의 특수한 고려사항이 필요하다. 또한 DDR 디자인은 레퍼런스, 소스 및 종단 전압에 대한 엄격한 허용오차, 적절한 디커플링, 그리고 트레이스 폭과 인터페어(Interpair) 간격, 인트라페어(Intrapair) 간격 및 트레이스 라우팅과 같은 레이아웃 고려사항과 같은 다른 규격에도 주의를 기울여야 한다.


임베디드 그래픽 애플리케이션이 점점 커지고, 심오해지고 복잡해짐에 따라, DDR2 메모리의 대용량 크기와 빠른 데이터 처리량에 대한 요구도 계속 증가할 것이다. 불과 몇 년 전만 해도 최대 150MHz로 MCU를 구현했던 임베디드 시스템 개발자들은 이제 두 배 빠른 MCU와 함께 MCU 내부 클록 속도와 일치하는 메모리 인터페이스를 사용해야만 한다. 대부분의 MCU 제조업체들은 다양한 형식으로 제품에 대한 설계 지원을 제공한다.


하지만 PCB에 값비싼 레이어를 추가할 필요 없이 고속 그래픽 지원 MCU에서 고밀도 고성능 메모리에 액세스할 수 있다면 더 좋지 않을까? 레이어 추가만으로도 전체 BOM 비용이 추가되고, 또 초기 작업에서 200MHz+ DDR2 버스 설계로 전환하는 데 별도의 노력이 필요하기 때문이다. 마이크로칩의 PIC32MZ DA는 DDR2 메모리에 인터페이싱할 수 있는 몇 안 되는 MCU 중 하나다. PIC32MZ DA 마이크로컨트롤러 제품군은 그래픽 메모리를 칩 내부에 통합함으로써 외부 메모리 설계의 압박을 줄여준다. 스택형(stacked) 메모리 설계 기법을 사용하는 PIC32MZ DA는 디바이스 내부에 32MB의 DDR2 DRAM이 내장되어 있어 외부 메모리가 필요하지 않다[그림 2]. 이 디바이스는 또한 하나의 3-레이어 그래픽 컨트롤러와 고성능 그래픽 처리장치가 통합되어 있어, 그래픽 구동 MCU에 전례 없는 수준의 통합 및 성능을 제공한다.


결론 


그래픽 사용자 인터페이스의 심미성과 복잡성에 발맞추어 임베디드 디자인 요건 또한 더욱 가속화되고 있다. MCU 아키텍처의 주요 한계인 메모리 저장 문제를 해결하고자 여러 메모리 기술이 개발되었지만, 이들은 각각 고유한 장점과 단점을 지니고 있다. 지금까지 이 글에서는 각 아키텍처의 장점과 단점을 살펴보았다. GUI 디자인은 앞으로도 사라지지 않을 것이다. 메모리 한계는 개발자에게 있어 고민거리가 될 수 있겠지만, 고객에게 유용하고 효과적인 훌륭한 애플리케이션을 설계하는 데 있어 이 문제가 걸림돌이 되어서는 안 된다. 


글: 커트 파커(Kurt Parker) 마이크로칩 MCU32 부문 제품 마케팅 매니저



















주요파트너/추천기업