멀티코어 프로세서 아키텍처와 병렬 처리 활용
멀티코어 프로세서의 SMP·AMP 구조, 모델별 특성, 병렬화와 코어 간 통신 기술을 정리한다.
2026-08-14 · 최초 발행 2025-12-28
클럭 향상 대신 병렬 처리로 옮겨간 설계
멀티코어 프로세서는 2개 이상의 독립적인 프로세서 코어를 하나의 집적회로(IC) 패키지에 넣고, 여러 작업을 동시에 처리하는 아키텍처다. 프로세서 성능은 오랫동안 클럭 속도를 높이는 방식으로 개선됐지만, 발열과 전력 소비, 누설 전류가 설계의 제약이 되면서 단일 코어를 더 빠르게 만드는 전략만으로는 한계가 뚜렷해졌다.
무어의 법칙으로 표현되던 18개월마다 트랜지스터 집적도가 2배 증가하는 추세도 물리적 한계에 도달했다. 작은 칩 면적에서 발생하는 열을 내보내기 어렵고, 트랜지스터 크기 감소는 누설 전류와 전력 밀도 문제를 키운다.
그래서 성능 설계의 중심은 수직적 확장에서 수평적 확장으로 옮겨갔다. 같은 전력으로 더 많은 작업을 처리하고, 개별 작업의 속도보다 전체 처리량을 높이며, 소프트웨어에서 추출한 병렬성을 코어에 배분하는 방식이다.
SMP와 AMP가 코어를 운영하는 방식
동등한 코어가 자원을 공유하는 SMP
SMP(Symmetric Multi Processing)는 모든 코어가 같은 기능과 성능을 갖는 구조다. 코어들은 동일한 메모리 공간에 접근하며, 운영체제와 응용 프로그램을 동등한 우선순위로 실행한다. 작업은 여러 코어에 균등하게 분배된다.
역할을 나누는 AMP
AMP(Asymmetric Multi Processing)는 코어마다 역할과 기능을 다르게 둔다. 한 코어가 마스터 역할로 다른 코어를 제어하고 작업을 할당하며, 각 코어는 특정 작업 유형에 맞게 최적화될 수 있다. 작업 특성에 맞는 코어를 선택해 전력 효율도 높일 수 있다.
처리 대상에 따라 달라지는 코어 구성
범용 모델은 2개 이상의 범용 프로세서 코어로 구성되며 데스크톱과 서버 시스템에 사용된다. 모든 코어가 동일한 명령어 세트 아키텍처(ISA)를 사용하고, 범용 응용 프로그램 실행과 OS 수준의 스레드·프로세스 관리에 적합하다. 확장성과 유연성도 높다.
DSP(Digital Signal Processor) 모델은 1개의 실행 코어와 다수의 가속기 코어를 조합한다. 신호 처리, 멀티미디어, 통신 시스템에서 특정 작업에 특화된 가속기 코어를 활용하며, 높은 처리량의 병렬 데이터 처리와 낮은 전력 소비를 통한 고성능, 실시간 처리 요구사항에 맞춘다.
Hybrid 모델은 고성능 코어와 고효율 코어를 함께 사용한다. 모바일 기기와 특정 프로그램 최적화에 쓰이며, ARM의 big.LITTLE 아키텍처가 대표적인 형태다. 작업 부하에 따라 코어를 고르고, 실행 중에도 코어 사이에서 작업을 이동해 성능과 전력 소비의 균형을 맞춘다. 모바일 환경에서는 배터리 수명 최적화에도 연결된다.
병렬 실행을 가능하게 하는 기술
컴파일러는 순차 코드에서 병렬성을 찾아내고, 벡터화·루프 병렬화·작업 분할을 통해 멀티코어 실행 코드로 바꾼다. 이 과정에서는 데이터 의존성 분석, 작업 스케줄링 최적화, 캐시 일관성, 코어 간 통신 최소화를 함께 고려해야 한다.
부하 분산 방식은 구조에 따라 달라진다. AMP에서는 컴파일 타임에 작업을 특정 코어에 정적으로 할당하거나, 프로그래머가 코어별 작업 배분을 명시적으로 제어한다. 코어의 특성에 맞춘 할당이 핵심이다.
SMP에서는 운영체제가 런타임에 작업을 동적으로 코어에 할당한다. 공유 작업 큐에서 유휴 코어가 작업을 가져갈 수 있고, 바쁜 코어의 작업을 유휴 코어가 가져와 처리하는 작업 도용도 활용된다.
BMP(Bound Multi Processing)는 특정 프로세스나 스레드를 특정 코어에 바인딩하는 방식이다. 같은 코어에서 계속 실행하면 캐시 재사용률을 높일 수 있으며, 실시간 시스템에서는 성능 예측 가능성을 높이는 데 도움이 된다.
코어 간 통신과 캐시 일관성
RAPI(Remote API)는 다른 코어의 함수를 원격으로 호출하는 방식이다. 코어 간 데이터 교환에는 명시적인 메시지 전달을 사용하고, 호출자는 피호출 함수가 어느 위치에 있는지 알 필요가 없다.
CAPI(Cache-Coherent API)는 공유 메모리의 일관성을 자동으로 유지한다. MESI, MOESI 등의 캐시 일관성 프로토콜을 하드웨어가 지원하며, 프로그래머는 명시적 동기화 없이 공유 메모리를 사용할 수 있다.
TIPC(Transparent Inter-Process Communication)는 로컬과 원격 프로세스 사이 통신을 투명하게 추상화한다. 서비스 이름 기반 통신으로 위치 독립성을 제공하고, 메시지 전달의 신뢰성과 순서를 보장한다. 다수 코어와 노드 사이의 효율적인 통신을 목표로 한다.
프로그래밍 모델의 선택
공유 메모리 모델에서는 OpenMP, Pthreads, C++11 스레드가 사용된다. 데이터 공유가 간단하고 프로그래밍하기 쉽지만, 동기화 오버헤드와 경쟁 조건을 관리해야 한다.
메시지 전달 모델에는 분산 메모리 시스템용 표준인 MPI(Message Passing Interface)와 독립적인 액터가 메시지를 주고받는 Actor 모델이 있다. 통신이 명시적이고 확장성이 좋지만, 프로그래밍 복잡도와 통신 오버헤드가 늘어난다.
데이터 병렬 모델은 CUDA와 OpenCL처럼 대량 데이터 병렬 처리에 효과적인 프레임워크를 포함한다. CUDA는 NVIDIA GPU 프로그래밍 플랫폼이며, OpenCL은 이기종 플랫폼용 병렬 프로그래밍 프레임워크다. 다만 적용 가능한 문제 유형에는 제약이 있다.
코어 수 증가가 남기는 제약
기존 순차 프로그램을 병렬화하는 일은 쉽지 않다. 암달의 법칙에서는 순차 부분이 전체 성능 향상을 제한하며, 이를 다루려면 효율적인 병렬 알고리즘이 필요하다.
전력과 열도 지속적인 제약이다. 다크 실리콘 때문에 모든 코어를 동시에 최대 성능으로 구동할 수 없고, 동적 전압/주파수 조절(DVFS)과 온칩 온도 모니터링으로 전력 소비와 과열을 관리해야 한다.
코어가 늘어날수록 캐시 일관성을 유지하는 비용이 커진다. 다수의 코어가 메모리를 공유하면 메모리 대역폭이 병목이 될 수 있으며, 코어 간 통신 네트워크의 복잡도도 함께 증가한다. 멀티코어의 성능은 코어 수만으로 결정되지 않는다. 병렬화 방식, 부하 분산, 통신과 동기화, 전력·열 관리가 맞물려야 실제 처리 성능으로 이어진다.