야곱의 블로그에서 가져왔습니다.
요즘 멀티코어 MCU 제품이 많이 출시되고 있습니다. 기존 MPU처럼 symmetric multiprocessor 형태보다는 M7, M4와 같은 비교적 고성능 코어 한 개와 M4, M0+와 같이 한 단계 성능이 낮은 코어를 하나의 다이에 넣어서 제작합니다. wireless Connectivity의 경우 M0+코어에 통신 스택을 올려서 따로 동작시키기도 하지만 범용의 코어가 들어있는 경우 어떻게 사용할 지에 대한 좋은 인사이트라 공유드립니다.
멀티코어 마이크로컨트롤러의 3가지 사용 사례
멀티코어 마이크로컨트롤러는 임베디드 시스템 설계자들 사이에서 대중화되기 시작했습니다. 설계자는 애플리케이션을 별도의 애플리케이션(실행) 도메인으로 분할하여 여러 코어를 활용할 수 있습니다. 그러면 각 도메인에는 시스템에서 수행할 전용 기능이 있습니다. 여러 코어가 안전이 중요한 애플리케이션에서 얼마 동안 사용되었지만, 멀티코어 마이크로컨트롤러의 비용이 감소하고 가용성이 증가함에 따라 몇 가지 추가 사용 사례가 대중화되고 있습니다. 이 게시물에서는 가장 일반적인 세 가지 사용 사례를 살펴보겠습니다.
사용 사례 #1 – 실시간 제어
첫 번째이자 아마도 가장 널리 사용되는 사용 사례는 멀티코어 마이크로컨트롤러를 사용하여 애플리케이션을 두 개의 개별 실시간 애플리케이션 도메인으로 분할하는 것입니다. 이러한 응용 프로그램에서 개발자는 경쟁하는 두 가지 실시간 요구 사항 집합을 가질 수 있습니다. 예를 들어 IoT 장치는 여러 센서를 샘플링하는 동시에 센서 데이터를 클라우드로 전송해야 할 수 있습니다. 배터리로 작동되는 장치는 CPU 마력을 최소화하려고 하므로 연결 스택과 센서 수집 작업 간에 충돌이 발생할 수 있습니다. 한 가지 잠재적인 솔루션은 센서 및 기타 활동이 다른 코어에서 수행되는 동안 하나의 코어에 연결을 배치하는 것입니다. (이것이 ESP32 모듈이 하는 일입니다).
(이미지 출처: 풍부하고 복잡한 애플리케이션을 위한 STM32H7 MCU, 슬라이드 29 )
또 다른 예로는 위의 이미지와 같이 애플리케이션에 모터 제어, 센서 수집, 데이터 저장 및 그래픽 사용자 인터페이스가 필요한 경우가 있습니다. 임베디드 GUI 애플리케이션은 종종 많은 양의 메모리를 사용하고 CPU를 많이 사용합니다. 이러한 작업을 하나의 코어로 분리한 다음 다른 코어가 주요 애플리케이션 기능을 수행하도록 하는 것은 또 다른 예입니다.
=> 코어가 2개라면 동시에 처리할 수 있는 일이 2가지가 되지만, 코어 자체를 다루는 동기화 기술 난이도 또한 쉽지 않습니다. STM32에서 멀티코어를 다루기 위해 새롭게 추가된 하드웨어 블럭들이 있는데, 추후 다뤄 보도록 하겠습니다.
사용 사례 #2 – 보안을 위한 하드웨어 기반 격리
두 번째이자 제가 가장 좋아하는 것 중 하나인 멀티코어 마이크로컨트롤러의 사용 사례는 보안 애플리케이션입니다. 보안 응용 프로그램을 개발하기 위한 한 테넌트는 하드웨어 기반 격리를 사용하는 것입니다. 아이디어는 보안 처리 환경(SPE)과 비보안 처리 환경(NSPE)의 두 가지 실행 도메인을 갖는 것입니다.
일부 단일 코어 마이크로컨트롤러는 Arm TrustZone®을 사용하여 하드웨어 기반 격리를 생성합니다. 전환은 실행 도메인을 전환하기 위해 최대 3개의 클록 사이클을 활용합니다. 멀티코어 프로세서의 멋진 점은 하나의 코어를 SPE에 할당하고 다른 코어를 NSPE에 할당할 수 있다는 것입니다. 각 코어가 전용 실행 도메인이기 때문에 실행 도메인 사이를 왔다 갔다 할 필요가 없습니다! 또한 NSPE와 SPE가 병렬로 실행될 수 있습니다. 디스플레이가 사용자에 대해 업데이트되는 동안 암호화 작업을 실행할 수 있습니다. 아래에서 예를 볼 수 있습니다.
(이미지 출처: 풍부하고 복잡한 애플리케이션을 위한 STM32H7 MCU, 슬라이드 28 )
현재로서는 이것이 아마도 멀티코어 마이크로컨트롤러의 가장 강력한 사용 사례일 것입니다. 그러나 의심할 여지없이 인기가 높아지고 있는 다른 것들이 많이 있습니다.
사용 사례 #3 - 기계 학습 및 실시간 제어
오늘 우리가 멀티코어 마이크로컨트롤러에 대해 논의할 마지막 사용 사례는 실시간 제어 애플리케이션 도메인에서 기계 학습 추론을 분리하는 경우입니다. 실시간 사용 사례와 마찬가지로 우리는 실시간 요구 사항을 충족할 수 있도록 실시간 애플리케이션의 일부를 자체적으로 코어에 유지하려고 합니다. 그런 다음 다른 코어에서 머신 러닝 추론을 실행할 수 있습니다. 이는 종종 CPU를 많이 사용하는 작업입니다. 예는 아래 이미지에서 볼 수 있습니다.
(이미지 출처: 풍부하고 복잡한 애플리케이션을 위한 STM32H7 MCU, 슬라이드 16 )
머신 러닝이 더 많은 임베디드 애플리케이션에 적용됨에 따라 임베디드 애플리케이션을 여러 애플리케이션 도메인으로 분할하고 이러한 애플리케이션을 여러 코어에서 실행하는 것이 더욱 중요해질 것입니다.
멀티코어 마이크로컨트롤러 결론
멀티코어 마이크로컨트롤러를 활용하는 것은 임베디드 시스템 개발자가 직면한 많은 설계 문제에 대한 흥미로운 솔루션입니다. 이 솔루션을 통해 개발자는 애플리케이션을 독립적으로 작동하지만 여전히 데이터와 리소스를 공유하는 여러 애플리케이션 도메인으로 나눌 수 있습니다. 결과적으로 다중 코어를 사용하여 장치 에너지 소비를 개선하고 온칩 리소스를 최대화할 수 있습니다. 또한 수많은 애플리케이션 도메인을 통해 문제를 더 쉽게 구분하고 여러 팀이나 개발자가 애플리케이션에서 동시에 작업할 수 있습니다.
=> 두 개의 코어를 동시에 사용해서 에너지를 더 많이 소모한다고 생각하실 수도 있지만, 단위 시간당 처리효율을 높여서 짧은 시간에 일을 끝내기 때문에 오히려 에너지를 절약할 수 있습니다.
원문 출처 : https://www.beningo.com/3-use-cases-for-multicore-microcontrollers/
3 Use Cases for Multicore Microcontrollers | Beningo Embedded Group
Multicore microcontrollers are starting to become popular among embedded systems designers. Designers can leverage multiple cores by
www.beningo.com