멀티프로세서 아키텍처: SMP·NUMA·클러스터와 캐시 일관성

멀티프로세서의 SMP, NUMA, 클러스터 구조와 인터커넥트, 캐시 일관성, 병렬 프로그래밍 방식을 정리한다.

2026-08-14 · 최초 발행 2026-01-03

여러 CPU를 한 시스템으로 묶는 방식

멀티프로세서는 2개 이상의 독립 프로세서(CPU)를 하나의 컴퓨터 시스템에 통합해 병렬 처리를 수행하는 구조다. 각 프로세서는 서로 다른 작업을 맡거나 하나의 작업을 나눠 처리하며, 통신과 동기화로 협력한다.

메모리는 프로세서가 함께 쓸 수도 있고 각 프로세서 또는 노드가 따로 가질 수도 있다. 프로세서를 추가해 성능을 확장할 수 있지만, 실제 성능은 메모리 접근 방식, 인터커넥트, 캐시 일관성, 병렬화 가능 범위에 따라 달라진다. 서버, 워크스테이션, 고성능 컴퓨팅 환경이 대표적인 활용 영역이다.

멀티프로세서와 멀티코어의 물리적 차이

멀티프로세서는 여러 개의 별도 CPU 칩을 사용하는 반면, 멀티코어는 하나의 칩 안에 여러 코어를 배치한다. 오늘날에는 멀티소켓 서버에 멀티코어 CPU를 장착하는 하이브리드 구성이 일반적이다.

여러 물리적단일멀티코어 프로세서단일Core 1Core 2Core 3Core 4On-Chip Cache멀티프로세서 시스템CPU 1(완전한 칩)System Bus / InterconnectCPU 2(완전한 칩)CPU 3(완전한 칩)CPU 4(완전한 칩)Shared Memory독립적 CPU통합 코어
특성 멀티프로세서 멀티코어
물리적 구성 여러 개의 별도 CPU 칩 단일 칩 내 여러 코어
통신 시스템 버스, 외부 인터커넥트 온칩 인터커넥트
레이턴시 상대적으로 높음 낮음
확장성 소켓 추가로 확장 칩 설계로 결정
전력 소비 높음 상대적으로 낮음
비용 여러 칩 구매 단일 칩

초기 슈퍼컴퓨터에서 멀티프로세서가 등장한 시점은 1960년대다. 1980-1990년대에는 SMP 서버가 보편화됐고, 2000년대 멀티코어가 등장하면서 병렬 처리 자원을 한 칩 안에도 집적하게 됐다.

공유 메모리의 SMP와 NUMA

SMP(Symmetric Multiprocessing)는 모든 프로세서가 동등한 역할과 권한을 가지며, 하나의 운영체제가 전체 프로세서를 관리하는 구조다. 단일 주소 공간의 공유 메모리를 사용하고, 모든 프로세서가 메모리에 같은 시간으로 접근하는 UMA(Uniform Memory Access)를 전제로 한다.

Symmetric Multiprocessing (SMP)균등한접근균등한접근균등한접근균등한접근Processor 1System BusProcessor 2Processor 3Processor 4Shared Main MemoryI/O Subsystem

SMP는 프로그래밍과 운영체제 관리가 비교적 단순하고 메모리 공유도 쉽다. 반면 시스템 버스가 병목이 되며, 캐시 일관성 유지 비용도 커진다. 이런 제약 때문에 보통 8-16 프로세서 수준에서 확장성 한계를 가진다.

NUMA(Non-Uniform Memory Access)는 프로세서 또는 프로세서 그룹이 각자의 로컬 메모리를 가진다. 논리적으로는 하나의 주소 공간을 유지하지만, 물리적으로 가까운 로컬 메모리와 다른 노드의 원격 메모리 사이에는 접근 시간 차이가 있다.

Non-Uniform Memory Access (NUMA)NUMA Node 3NUMA Node 2NUMA Node 1NUMA Node 0빠른 접근빠른 접근빠른 접근빠른 접근느린 원격 접근Processor 3Processor 0Local MemoryProcessor 1Local MemoryProcessor 2Local MemoryLocal MemoryInterconnect (QPI, InfinityFabric)

NUMA는 인터커넥트로 다수 노드를 연결할 수 있어 확장성과 메모리 대역폭 측면에서 유리하다. 대신 메모리 위치에 따라 성능이 달라지므로, NUMA-aware OS가 로컬 메모리 우선 할당을 수행하는 것이 중요하다. 프로그래밍 복잡도도 SMP보다 높아진다.

독립 노드를 네트워크로 연결하는 클러스터

클러스터는 각 노드가 CPU, 메모리, 디스크, NIC, 운영체제를 갖춘 독립 컴퓨터인 분산 메모리 구조다. 노드는 자신의 메모리에만 직접 접근하며, 다른 노드와의 데이터 교환은 네트워크 메시지 패싱으로 수행한다.

메시지 패싱(MPI, RPC)클러스터 시스템노드 3노드 2노드 1CPUNICNetwork (Ethernet,InfiniBand)NICNICMemoryDiskCPUMemoryDiskCPUMemoryDisk프로세서 통신

클러스터는 수천 노드까지 확장할 수 있고 구축 비용과 고가용성 측면에서 장점이 있다. 그러나 네트워크 레이턴시를 고려해야 하며, 데이터 이동과 통신을 프로그램에서 명시적으로 다뤄야 한다.

인터커넥트가 결정하는 확장 한계

공유 버스 방식은 모든 프로세서가 하나의 버스를 함께 쓴다. 구조가 단순하고 비용이 낮지만, 프로세서가 늘면 버스 경쟁과 병목이 발생한다. 소규모 SMP의 2-8 프로세서 구성에 적합하다.

경쟁 발생CPU 1Shared BusCPU 2CPU 3CPU 4MemoryI/O버스 병목

크로스바는 프로세서와 메모리의 각 쌍을 직접 연결한다. 높은 대역폭으로 다중 연결을 동시에 처리할 수 있지만, 복잡도가 O(N²)이고 비용도 커진다. 중규모 시스템의 8-32 프로세서 구성에 적용된다.

크로스바 스위치동시 접근동시 접근동시 접근P1교차 스위치(16개 연결점)P2P3P4M1M2M3M4

다단계 네트워크는 여러 단계의 스위치로 프로세서와 메모리를 연결한다. 복잡도는 O(N log N)으로 크로스바보다 낮지만, 경로 충돌과 복잡한 라우팅 문제가 남는다. 32+ 프로세서의 대규모 시스템에서 사용된다.

오메가 네트워크 (예시)P0S0P1P2S1P3S2S3M0M1M2M3

포인트투포인트 인터커넥트에는 CPU를 직접 연결하는 Intel QPI(QuickPath Interconnect), Zen 아키텍처의 CPU 및 컴포넌트를 연결하는 AMD Infinity Fabric이 있다. 고대역폭과 낮은 레이턴시, 확장성이 특징이며 Mesh, Ring, Torus 같은 토폴로지를 사용할 수 있다.

공유 캐시에서 데이터가 어긋나는 순간

여러 프로세서가 같은 데이터를 각자의 캐시에 복사하면, 한 프로세서의 쓰기가 다른 프로세서의 오래된 복사본과 충돌할 수 있다. 아래 흐름에서 프로세서 1이 X를 1로 쓴 뒤에도 프로세서 2의 캐시는 X=0을 유지한다.

프로세서 2프로세서 1메모리 (X=0)프로세서 2프로세서 1메모리 (X=0)초기 상태: X = 0Cache: X = 0Cache: X = 0Cache: X = 1문제: P2의 캐시는 여전히 X = 0메모리와 P2 캐시가 불일치!(1) Read XX = 0(2) Read XX = 0(3) Write X = 1

MESI는 캐시 라인의 상태를 Modified, Exclusive, Shared, Invalid로 관리하는 프로토콜이다. Modified 상태는 캐시에만 수정된 데이터가 있고 메모리의 내용이 오래된 상태다. Exclusive는 해당 캐시에만 데이터가 있으면서 메모리와 일치하는 상태이며, Shared는 여러 캐시가 읽기 전용으로 데이터를 공유하는 상태다. Invalid는 유효하지 않아 접근할 때 재로드가 필요하다.

Read (캐시 미스)Write다른 CPU ReadWrite다른 CPU Write다른 CPU Read (Write-back)다른 CPU WriteI (Invalid)무효 상태E (Exclusive)독점 (읽기 전용)M (Modified)수정됨 (쓰기 발생)S (Shared)공유 (여러 CPU)

일관성 유지 방식으로는 작은 시스템에서 모든 캐시가 버스를 감시하는 스누핑(Snooping), 대규모 시스템에서 중앙 디렉토리가 캐시 상태를 추적하는 디렉토리 기반(Directory-Based)이 있다. 쓰기 시 다른 캐시를 무효화하는 Write Invalidate와, 다른 캐시의 값을 갱신하는 Write Update도 선택지다.

메모리 구조에 맞춘 병렬 프로그래밍

공유 메모리에서는 Pthreads, OpenMP, C++11 std::thread, Java Thread를 사용할 수 있다. Mutex, Semaphore, Condition Variable 같은 동기화 수단으로 공유 상태를 조정한다.

분산 메모리 환경에서는 MPI(Message Passing Interface)를 사용한다. Send/Receive 방식으로 메시지를 명시적으로 주고받으며, Broadcast, Scatter, Gather, Reduce 같은 Collective Communication과 Blocking, Non-blocking 통신 모드를 사용한다.

클러스터 노드 안에는 SMP 또는 NUMA 구조가 있고, 노드 간에는 MPI를 쓰는 하이브리드 방식도 가능하다. 이 경우 노드 내부에서는 OpenMP로 공유 메모리를 활용하고, 노드 사이에서는 MPI로 확장성을 확보한다. 다만 두 병렬화 방식을 함께 관리해야 한다.

클러스터MPIMPI노드 2 (SMP/NUMA)OpenMP공유 메모리Thread 1Thread 2Thread 3Thread 4노드 1 (SMP/NUMA)OpenMP공유 메모리Thread 1Thread 2Thread 3Thread 4네트워크

서버부터 슈퍼컴퓨터까지의 구성

서버에서는 2개 CPU와 16-64 코어를 갖는 듀얼 소켓 구성이 주류다. 4개 CPU와 64-256 코어를 갖는 쿼드 소켓 서버는 고성능 서버에 사용되며, 8소켓 이상 구성은 미션 크리티컬 시스템과 메인프레임급 환경에 쓰인다. Dell PowerEdge, HP ProLiant, IBM Power Systems가 예시다.

워크스테이션에서는 CAD/CAM의 3D 모델링과 렌더링, 고해상도 비디오 편집, 시뮬레이션과 데이터 분석 같은 과학 계산에 멀티프로세서 자원을 활용한다. HP Z Series와 Dell Precision이 예시다.

슈퍼컴퓨터 사례로는 ARM A64FX 기반의 Fugaku(후가쿠) 158,976 노드, IBM POWER9와 NVIDIA GPU를 사용하는 Summit 4,608 노드, Sierra 4,320 노드, SW26010 매니코어 기반 Sunway TaihuLight 40,960 노드가 있다.

성능 확장과 운영 비용의 교환

멀티프로세서는 병렬 처리로 처리량을 높이고, 프로세서 추가를 통해 성능을 확장할 수 있다. 메모리와 I/O 같은 자원을 효율적으로 공유하며, 일부 프로세서에 장애가 발생해도 시스템이 동작할 수 있다. 여러 단일 프로세서를 따로 두는 대신 하나의 시스템으로 통합하는 비용 효율성도 장점이다.

반대로 병렬 프로그래밍 자체가 복잡하며, 스레드 동기화와 캐시 일관성 유지에는 오버헤드가 따른다. 암달의 법칙과 인터커넥트 병목은 확장성을 제한하고, 다수 프로세서가 동시에 동작하면 전력 소비도 증가한다.

Chiplet과 이종 프로세서가 넓히는 구성 범위

Chiplet 아키텍처는 작은 칩을 조합해 대형 프로세서를 구성하고, 3D 적층은 다이를 수직으로 쌓아 밀도를 높인다. 광 인터커넥트는 실리콘 포토닉스로 대역폭을 늘리는 방향이며, CXL(Compute Express Link)은 CPU·메모리·가속기 연결을 위한 고속 인터커넥트다. Gen-Z와 CCIX도 캐시 일관성을 지원하는 인터커넥트에 속한다.

이종 멀티프로세서는 CPU와 GPU, FPGA, TPU·NPU 같은 AI 가속기를 함께 구성한다. 범용 연산, 병렬 연산, 재구성 가능한 하드웨어 가속, AI 전용 연산을 조합하고, 이종 프로세서 사이의 통합 메모리 공유도 다룬다. 저전력 멀티프로세서 엣지 서버, 자율주행의 실시간 센서 처리와 의사결정, 5G/6G의 네트워크 기능 가상화(NFV), 디지털 트윈의 실시간 대규모 시뮬레이션, 양자 프로세서와 클래식 프로세서를 결합하는 하이브리드 구조가 새로운 응용 영역이다.

멀티프로세서SMPNUMA캐시 일관성병렬 처리