다중 코어 프로세서를 사용해 저전력 미디어 리치 스마트 제품 구축
DigiKey 북미 편집자 제공
2019-03-26
기존의 실시간 내장형 설계 요구 사항에 더욱 까다로운 응용 제품 수준의 소프트웨어를 결합하는 스마트 제품이 점점 늘어나고 있습니다. 점점 더 증가하는 연산 부하는 물론 터치스크린, 고해상도 3D 그래픽, 이미지 센서 등의 고급 미디어 서비스에 있어 사용자 상호 작용도 제대로 지원할 수 있어야 합니다.
요구 사항이 확장됨에 따라 개발자가 직면하는 전력, 비용, 시스템 크기 축소에 대한 부담이 점점 커지고 있어 기존의 다중 서브 시스템 설계를 대신할 효과적인 대안 강구가 시급합니다.
이 기사에서는 설계 요구 사항의 진화에 대해 그리고 지금까지 프로세서가 이러한 요구 사항을 어떻게 충족해 왔는지에 대해 설명합니다. 그런 다음 NXP Semiconductors의 새 프로세서를 어떻게 사용할 수 있을지에 대해 소개 및 안내해 드릴 것입니다. 이 새 프로세서는 실시간 및 응용 분야 연산 요구 사항을 모두 처리할 수 있는 설계에 대한 수요가 급증하고 있는 상황에서, 이를 충족하기 위한 보다 간편한 솔루션을 개발자에게 제공합니다.
코드 투자를 보존하기 위한 프로세서 확장
일반적으로 개발자는 특정한 응용 분야 처리 요구 사항에 맞는 추가 코어를 포함하도록 구축한 마이크로 프로세서를 사용해 설계의 연산 성능을 확장합니다. 이 방법을 사용해 개발자는 기존 코드 기반과 해당 장치 제품군과의 호환성을 유지하면서 성능을 향상시킬 수 있습니다.
예를 들어 NXP i.MX 6 응용 프로세서 계열을 통해 개발자는 단일 Arm® Cortex®-A9 응용 프로세서 코어가 포함된 i.MX 6Solo 마이크로 프로세서, 2개의 코어가 포함된 i.MX 6Dual 또는 4개의 코어를 통합하는 i.MX 6Quad를 이용해 성능을 향상하면서 코드 호환성을 유지할 수 있습니다.
기존에 내장형 시스템으로 간주되던 설계에서도 확장 가능한 응용 처리에 대한 필요성이 빠르게 증가하고 있습니다. 제품 제조업체는 이러한 설계와 관련해 가전, 산업용 컨트롤러, 의료 기기 등에 인텔리전스를 추가할 방법을 모색 중입니다. 반도체 공급업체는 이러한 움직임에 대한 대처 방안으로 응용 프로세서 코어와 내장형 프로세서 코어 모두를 통합하는 이기종 다중 코어 처리(HMP) 장치를 선보여 왔습니다. 예를 들어 NXP i.MX 8M 제품군은 최대 4개의 Arm Cortex-A53 응용 프로세서 코어를 Arm Cortex-M4 내장형 프로세서 코어와 결합합니다.
이 단일 장치를 이용해 개발자는 스마트 오디오 제품을 구축할 수 있습니다. 이 장치는 응용 프로세서를 최대한 활용해 오디오 데이터를 향상, 필터링 또는 조작합니다. 그런 다음 내장형 프로세서 코어를 통해 재생에 필요한 실시간 기능을 수행합니다(그림 1). 실시간 작업이 내장형 프로세서에서 진행되는 동안 응용 프로세서는 저전력 모드로 설정해 전체적인 전력 소비를 줄일 수 있습니다. 실시간 작업이 완료되면 내장형 프로세서가 응용 프로세서에 절전 해제 신호를 보냅니다.

그림 1: 이기종 다중 코어 프로세서는 빠듯한 전력 예산을 저해하지 않고 고성능 연산과 실시간 기능을 모두 제공하는 스마트 제품 설계에 특히 효과적입니다. (이미지 출처: NXP Semiconductors)
이기종 코어와 함께 NXP i.MX 8M 제품군은 4K 동영상 처리 장치(VPU) 및 고성능 3D 그래픽 처리 장치(GPU) 등의 광범위한 멀티미디어 리소스 집합을 통합합니다. 그 결과, 이 제품군은 점점 더 다양해지는 동영상 및 3D 그래픽 스마트 제품을 위한 효과적인 솔루션을 제공할 수 있습니다.
그렇기는 하지만 고성능 시스템을 구축하는 개발자가 겪고 있는 배터리 및 라인 구동식 시스템 모두의 전력 소비량 감소에 대한 부담은 더욱 커지고 있습니다. 이를 해결하기 위해 NXP i.MX 8M Mini 프로세서 제품군은 고성능 혼합 부하 처리와 전력 소비 감소라는 상충되는 요구 사항을 해결하는 고급 반도체 프로세스 기술로 제작되었습니다.
고성능 저전력 연산
14Nm FinFET 프로세스 기술로 제작된 최초의 NXP HMP 제품군으로서, NXP i.MX 8M Mini 프로세서는 고성능, 강한 보안, 저전력 요구 사항 조합이 필요한 신흥 산업과 IoT(사물 인터넷) 시스템을 위해 설계되었습니다. NXP i.MX 8M 제품군과 마찬가지로 NXP i.MX 8M Mini는 포괄적인 보안 서브 시스템과 다양한 연결성 및 I/O 옵션과 함께 내장형 처리를 위한 Arm Cortex-M4와 응용 처리를 위한 최대 4개의 Arm Cortex-A53 코어를 통합합니다(그림 2).
그림 2: NXP i.MX 8M Mini 프로세서는 신흥 스마트 제품에 필요한 포괄적인 보안, 멀티미디어, 시스템 기능 및 I/O 인터페이스와 함께 최대 4개의 Arm Cortex-A53 응용 프로세서 코어와 Arm Cortex-M4 내장형 코어를 결합합니다. (이미지 출처: NXP Semiconductors)
내장형 설계에서의 역할을 충족할 수 있도록 i.MX 8M Mini는 이전의 NXP i.MX 8M에 비해 몇몇 I/O 채널과 멀티미디어 서브 시스템의 고해상도 기능의 수를 줄입니다. 예를 들어, 상업용(MIMX8MM6DVTLZAA) 및 산업용(MIMX8MM6CVTKZAAA) 버전을 포함하는 i.MX 8M Mini 장치는 NXP i.MX 8M의 4셰이더 GPU 및 4K VPU에 비해 1셰이더 GPU 및 1080p 60Hz VPU를 제공합니다. 상업용(MIMX8MM5DVTLZAA) 및 산업용(MIMX8MM5CVTKZAA) 장치를 포함하는 i.MX 8M Mini 제품군의 다른 구성원은 VPU를 완전히 배제합니다. 초기 NXP i.MX 8M에서와 마찬가지로, i.MX 8M Mini를 이용하면 개발자는 이중 데이터 전송률 3 저전력(DDR3L), DDR4, 저전력 DDR4(LPDDR4) 등의 다양한 메모리 유형에 대한 프로세서 지원을 활용하여 성능과 비용 간의 균형을 맞출 수 있습니다.
전력 소비 감소
성능을 더욱 향상하고 전력 소비를 줄이기 위해 개발자는 자동으로 또는 프로그램적으로 더 낮은 전력의 작동 모드로 전환할 수 있는 NXP i.MX 8M Mini의 기능을 활용할 수 있습니다. 특정 조건 하에서 응용 제품 코어는 자동으로 유휴 모드로 전환되어 대부분의 내부 논리를 클록 게이팅하되 L2 데이터 캐시에 대한 전력 공급을 유지하는 반면 GPU, VPU, 응용 제품 코어를 끌 수 있습니다. 이 모드에서 Arm Cortex-M4 코어는 센서 데이터 획득 등의 더 전통적인 내장형 처리 작업을 수행하기 위해 계속 실행할 수도 있습니다.
일시 중지 모드는 메모리 인터페이스를 관리하는 이중 데이터 전송률 컨트롤러(DDRC)도 비활성화해 유휴 모드에 적용된 전력 감소 범위를 확장하는, 가장 전력 효율성이 높은 모드입니다. 마지막으로 안전한 비휘발성 스토리지(SNVS) 모드는 SNVS 논리 및 실시간 시계에 대한 전력 공급만을 유지합니다.
i.MX 8M에 사용되는 14Nm FinFET 프로세스 기술의 전력 감소 특성은 일시 중지 및 SNVS 모드에서 특히 두드러지게 나타납니다. FinFET가 포함된 i.MX 8M Mini에서 일시 중지 모드는 약 7.81mW를 소비합니다. 초기 i.MX 8M에서는 기능적으로 유사한 모드(중간 절전 모드라 불림)가 197mW를 소비합니다. i.MX 8M Mini가 약 0.11mW를 소비하는 SNVS 모드에도 유사한 전력 감소가 적용되지만 초기 i.MX 8M은 약 17mW를 소비합니다.
i.MX 8M Mini와 같은 복잡한 장치에 모든 기능 블록과 섬세하게 조정된 작동 모드를 갖추면서 엔지니어는 수많은 엄격한 구현 요구 사항에 직면하고 있습니다. i.MX 8M Mini는 이 등급의 다른 장치에서와 같이 여러 전력 도메인에 의지해 전력 관리 및 효율성을 최적화합니다. 이러한 장치를 시작 및 중지하기 위해서는 지정된 전원 켜기 및 전원 차단 순서를 엄격히 준수해야 합니다.
i.MX 8M Mini의 전원을 켜는 것은 일반적으로 1.8V의 전력을 SNVS 뱅크 내의 GPIO 사전 구동기에 적용하는 데서 시작됩니다. 2ms(최대 2.4ms) 이내에 0.8V(일반)가 SNVS 코어 논리에 적용되어야 합니다. 이 프로세스는 특정 신호 또는 0.015ms ~ 20ms의 간격을 두고 발생하도록 설정된 12개의 추가 단계를 통해 순서대로 i.MX 8M Mini 핀에 적용되는 전력을 통해 진행됩니다.
장치에 대한 전력 공급을 차단하려면 역순을 따르되 순차적 단계 사이에 균등한 10ms의 지연 시간을 두어야 합니다. 어떤 경우에든 이러한 지침을 따르지 않을 경우 장치가 부팅되지 않거나 전원을 켜는 동안 과도한 전류가 흐르거나 최악의 경우 장치에 불가역적인 손상이 가해질 수 있습니다.
프로세서의 PC 기판의 물리적 설계는 엄격한 자체 요구 사항을 야기합니다. 프로세서의 486 볼 14mm x 14mm 패키지를 레이아웃하는 것에 대해 NXP는 전류 저항(IR) 강하 지침 범위를 유지할 수 있도록 충분한 전력 레일 전용 레이어가 포함된 최소 8개의 레이어 PC 기판 스택업을 이용할 것을 권합니다. 동시에 레이아웃 엔지니어는 1.5Ghz 및 3,000MT/s의 속도에서 작동하는 지원되는 메모리 장치에 대한 것을 포함해, 고속 라인에서 최소한의 누화를 보장해야 합니다.
빠른 개발
엔지니어가 응용 제품 개발을 신속하게 시작하거나 맞춤형 하드웨어 설계 개발을 가속화하도록 돕기 위해 NXP에서는 NXP i.MX 8M Mini EVK(평가 키트) 및 관련 참조 설계를 제공합니다(그림 3). 기본 기판 및 SOM(시스템 온 모듈) 기판으로 제공된 평가 키트는 외부 LPDDR4 메모리 및 플래시는 물론, USB 및 기타 인터페이스를 포함한 완전한 시스템을 제공합니다.
그림 3: NXP i.MX 8M Mini EVK 기판 세트는 i.MX 8M Mini 프로세서에 대한 즉각적인 평가와 이기종 다중 코어 프로세서 응용 제품의 신속한 개발을 위한 완전한 시스템 플랫폼을 제공합니다. (이미지 출처: NXP Semiconductors)
기가비트 이더넷과 함께 이 키트에는 연결 옵션으로 Wi-Fi 및 Bluetooth가 포함되어 있습니다. MINISASTOCSI 카메라 모듈 및 MX8-DSI-OLED1 유기 전기 발광 다이오드(OLED) 터치스크린을 포함한 사용 가능한 애드온 기판을 동영상 및 디스플레이 응용 제품 설계에 추가할 수 있습니다.
내장형 Linux® 및 내장형 Android® 운영 환경의 사전 구축 이미지가 제공되므로 개발자는 즉시 이 키트를 이용해 i.MX 8M Mini 프로세서를 평가하고 샘플 응용 제품을 실행해볼 수 있습니다. 자체 소프트웨어 응용 제품을 구축 중인 개발자를 위해 NXP는 무료 MCUXpresso 소프트웨어 개발 키트(SDK)를 제공합니다. 이는 일반적인 고성능 내장형 응용 제품을 구축하기 위한 종합적인 소프트웨어 구성 요소 세트를 제공합니다(그림 4).

그림 4: MCUXpresso 소프트웨어 개발 키트(SDK) 아키텍처는 드라이버, 기판 지지대 패키지, 대부분의 내장형 응용 제품을 개발하는 데 필요한 옵션 구성 요소를 포함하는 종합적인 소프트웨어 레이어 세트로 구성됩니다. (이미지 출처: NXP Semiconductors)
개발자는 NXP 온라인 MCUXpresso SDK 대시보드를 이용해, GCC Arm 내장형 툴체인 또는 Arm용 IAR 내장형 작업대를 위한 SDK 구성을 만들 수 있습니다. 개발자는 대시보드를 이용하여 Arm Cortex 마이크로 컨트롤러 소프트웨어 인터페이스 표준(CMSIS) DSP 라이브러리 및 Amazon FreeRTOS를 포함한 미들웨어 구성 요소(옵션)를 추가할 수 있습니다. 구성된 SDK 배포는 Arm 표준 라이브러리, 주변 장치 드라이브, FreeRTOS용 주변 장치 드라이버 래퍼, 폭넓은 소프트웨어 샘플 세트를 통해 공급됩니다. SDK 배포의 소프트웨어 샘플 중, 한 쌍의 응용 제품이 이기종 연산에 기본적인 핵심 메시지 교환 설계 패턴을 보여줍니다.
모든 다중 코어 연산 환경에서는 별도의 프로세서에 요청을 전달하고 데이터를 공유하기 위한 효율적인 메커니즘이 필요합니다. i.MX 8M Mini EVK 응용 제품에는 NXP가 경량 버전의 RPMsg(Remote Processor Messaging) 프로토콜인 RPMsg-Lite를 사용합니다. RPMsg 프로토콜은 이기종 다중 코어 시스템의 다중 코어 사이의 통신을 위해 표준 인터페이스를 제공하기 위한 OpenAMP(Open Asymmetric Multi Processing) 프레임워크 프로젝트의 일부로 고안되었습니다. NXP의 RPMsg-Lite는 더 작은 실장 면적을 제공하고 이러한 시스템과 일치하지 않는 기능을 제거해 소규모 내장형 시스템의 리소스 제한을 해결합니다.
SDK 배포 내의 샘플 응용인 rpmsg_lite_pingpong_rtos는 RPMsg-Lite를 사용해 서로 다른 프로세서 간의 단순한 교환 상호 작용을 구현하는 기본적인 교환 기능을 보여줍니다(목록 1). 다른 “원격” 프로세서에 대한 RPMsg 대기열(my_queue) 및 종단점(my_ept)을 생성한 후 “호스트” 응용 프로세서가 원격 코어에 신호를 보냅니다. 원격 코어로부터 핸드쉐이크 응답을 받은 후 호스트는 자체 “pong” 응답을 보내기 전에 원격의 “ping” 메시지에 대해 차단 대기를 사용하는 루프를 시작합니다.
복사 void app_task(void *param) { .
.
.
my_rpmsg = rpmsg_lite_remote_init((void *)RPMSG_LITE_SHMEM_BASE, RPMSG_LITE_LINK_ID, RL_NO_FLAGS); while (!rpmsg_lite_is_link_up(my_rpmsg)) ; PRINTF("Link is up!\r\n"); my_queue = rpmsg_queue_create(my_rpmsg); my_ept = rpmsg_lite_create_ept(my_rpmsg, LOCAL_EPT_ADDR, rpmsg_queue_rx_cb, my_queue); ns_handle = rpmsg_ns_bind(my_rpmsg, app_nameservice_isr_cb, NULL); rpmsg_ns_announce(my_rpmsg, my_ept, RPMSG_LITE_NS_ANNOUNCE_STRING, RL_NS_CREATE); PRINTF("Nameservice announce sent.\r\n"); /* Wait Hello handshake message from Remote Core. */ rpmsg_queue_recv(my_rpmsg, my_queue, (unsigned long *)&remote_addr, helloMsg, sizeof(helloMsg), NULL, RL_BLOCK); while (msg.DATA <= 100) { PRINTF("Waiting for ping...\r\n"); rpmsg_queue_recv(my_rpmsg, my_queue, (unsigned long *)&remote_addr, (char *)&msg, sizeof(THE_MESSAGE), NULL, RL_BLOCK); msg.DATA++; PRINTF("Sending pong...\r\n"); rpmsg_lite_send(my_rpmsg, my_ept, remote_addr, (char *)&msg, sizeof(THE_MESSAGE), RL_BLOCK); } PRINTF("Ping pong done, deinitializing...\r\n"); rpmsg_lite_destroy_ept(my_rpmsg, my_ept); my_ept = NULL; rpmsg_queue_destroy(my_rpmsg, my_queue); my_queue = NULL; rpmsg_ns_unbind(my_rpmsg, ns_handle); rpmsg_lite_deinit(my_rpmsg); msg.DATA = 0; .
.
.
}
목록 1: MCUXpresso 소프트웨어 개발 키트에 제공된 샘플 코드의 이 코드 조각은 이기종 다중 코어 프로세서의 서로 다른 프로세서 간에 상호 작용을 수행하기 위한 기본 설계 패턴을 보여줍니다. (코드 출처: NXP Semiconductors)
개발자는 이 단순한 교환(ping-pong)을 토대로 여러 프로세서 전반에 작업 실행을 할당하도록 설계된 완전한 작업을 손쉽게 만들 수 있습니다. 또 다른 샘플 응용 제품인 sai_low_power_audio는 RPMsg-Lite를 본질적으로 높은 수준의 SRTM(Simplified Real Time Messaging) 응용 프로토콜을 위한 저수준 데이터 링크 레이어로 사용합니다. 이 응용 제품에서 Arm Cortex-A53 프로세서는 이 SRTM 프로토콜을 이용해 Arm Cortex-M4 프로세서에 공유 메모리에 있는 오디오 파일을 재생하도록 요청합니다. 공유 버퍼에 대한 제어력을 갖게 된 후 M4는 데이터를 적합한 코드로 전송하고 결국 오디오 출력을 위한 직렬 오디오 인터페이스(SAI)로 보내기 위해 SDMA(스마트 직접 메모리 액세스) 트랜잭션을 실행하는 등 몇 가지 작업을 수행합니다. 작업 중에 A53 코어는 저전력 모드로 들어갈 수 있습니다. 교환 응용 제품보다 설계 측면에서 더 복잡하더라도 sai_low_power_audio 샘플 응용은 개발자가 이기종 다중 코어 프로세서를 사용해 스마트 제품의 전력 소비를 최소화하면서 어떻게 성능을 극대화할 수 있는지 보여줍니다.
결론
스마트 제품은 기존의 실시간 내장형 처리 시스템을 상당히 중요한 응용 처리 기능과 결합합니다. 그러나 개발자는 배터리 및 라인 구동식 시스템의 저전력 제품에 대한 지속적인 기대를 충족하면서 이러한 처리 요구 사항을 충족해야 합니다.
고급 반도체 프로세스로 제작된 NXP i.MX 8M Mini 응용 프로세서는 저전력 소비 및 고성능 이기종 다중 코어 처리 기능을 필요에 따라 통합하여 제공합니다. NXP i.MX 8M Mini 장치를 사용하면 개발자는 점점 더 정교해지는 스마트 제품에 필요한 내장형 시스템 설계의 고성능 연산에 대한 급증하는 요구에 더욱 효과적으로 대응할 수 있습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


