하나의 SoC (System-on-a-Chip)에 통합 된 여러 동종 또는 이기종 프로세싱 코어를 특징으로하는 이러한 유형의 SoC를 사용하여 개발 된 시스템을 일반적으로 AMP(Asymmetric Multiprocessing) 시스템이라고한다. 이런 시스템 설계의 핵심은 시스템에 존재하는 이기종 코어의 병렬 처리를 활용하는 것에 있다.
위의 다이어그램은 ARM Cortex-A7 과 ARM Cortex-M4F 코어를 사용하는 NXP사의 i.MX6SoloX / i.MX7d SoC 의 구조를 나타낸다.
이러한 코어는 일반적으로 최종 애플리케이션의 설계 목표를 달성하기 위해 함께 작동하는 Linux, RTOS 와 Bare Metal과 같은 동종 또는 이기종 소프트웨어 환경의 독립 인스턴스를 실행한다.
비대칭 멀티 프로세싱 소프트웨어 환경을 실행하는 이유는 다음과 같다.
1. 성능 최적화
처리 요구와 결정론에 따라 작업이 분리되어야 할 때.
Linux 또는 Android와 같은 OS에서 실행되는 응용 프로그램에는 MMU (Memory Management Unit)와 함께 강력한 Cortex-A 와 같은 코어가 필요한 반면 엄격한 실시간성 기능이 필요한 실시간 애플리케이션은 Cortex-M 클래스 코어에서 실행될 수 있다. 이러한 작업을 단일 코어에서 혼합하는 것은 비효율적이며 두 유형의 작업 모두에 불필요한 복잡성을 유발할 수 있다.
2. 전력 소비 감소
예를 들어 센서 모니터링을 제공하고 다양한 모터 또는 액추에이터를 제어하는 많은 프로세스는 실시간성을 필요로하며 더 작은 코어 위에서 RTOS를 사용하여 효율적으로 실행된다.
3. 시스템 안정성 및 보안 향상
두 코어 사이에 프로세스를 분배 할 때의 자연적인 이점은 두 비대칭 프로세싱 환경 사이를 격리시킬 수 있다는 것이다. 시스템은 두 프로세싱 환경 사이의 액세스를 제어하거나 금지 할 수 있으며 결과적으로 안정성과 보안을 향상시킨다.
비대칭 멀티 프로세싱이 이점만 있는 것은 아니다.
사용 가능한 여러 코어에 작업을 분배하려면 소프트웨어를 각각 작성해야하므로 AMP 시스템 아키텍처는 시스템 설계에 새로운 과제를 안겨준다. 또한 리소스 경합을 피하고 코어 간의 데이터 공간을 효율적으로 공유하려면 모든 주변 장치 리소스를 올바르게 할당하기위해 안정적인 통신 및 동기화를위한 메커니즘도 필요하다.